custom ნივთები Paper სერვერზე vanilla-ს ნივთებია, რომლებსაც კოსტიუმი აცვიათ. სერვერი მოთამაშეს ჩვეულებრივ ნივთს აძლევს - ქაღალდს, ჯოხს, ალმასის ხმალს - ტეგით, რომელიც კლიენტს ეუბნება, სხვა მოდელი დახატოს, მოდელსა და ტექსტურას კი სერვერის resource pack აწვდის. plugin-ები, როგორიცაა ItemsAdder, Oraxen და Nexo, ორივე ნახევარს ავტომატიზაციას უკეთებს: ნივთებს, ბლოკებსა და ავეჯს YAML-ში აღწერ, plugin resource pack-ს აწყობს და ქცევას მართავს, მოთამაშეები კი pack-ს შესვლისას ჩამოტვირთავენ. ეს კლიენტის მოდების გარეშე მუშაობს, მართლა კარგია და სამი ხარჯი აქვს, რომლებსაც ხალხი გვიან აღმოაჩენს: pack სადმე უნდა იყოს განთავსებული, საიდანაც მოთამაშეებს მისი ჩამოტვირთვა შეუძლიათ, Geyser-ით შემოსული Bedrock მოთამაშეები მას დამატებითი სამუშაოს გარეშე ვერ ხედავენ, ხოლო custom ბლოკები და ავეჯი ხრიკებს იყენებს, რომლებიც სერვერს ჩვეულებრივ ბლოკებზე მეტი უჯდება.
ეს გზამკვლევი განიხილავს, როგორ მუშაობს ხრიკი, სამ მთავარ plugin-ს, pack-ის ჰოსტინგს და პრობლემებს, რომლებსაც წააწყდები. სერვერის resource pack-ების საფუძვლები - server.properties-ის გასაღებები და SHA-1 ჰეში - არის MOTD-ში, ხატულასა და resource pack-ებში.
როგორ მუშაობს custom ნივთები მოდების გარეშე#
კლიენტი წყვეტს, როგორ გამოიყურება ნივთი, თავისი resource pack-ის მიხედვით. სერვერს მხოლოდ ნივთის მონაცემების გაგზავნა შეუძლია. custom ნივთების ყველა სისტემა ნივთის მონაცემებზე ისეთი ნიშნის მიმაგრების გზაა, რომელსაც resource pack ამოიცნობს.
წლების განმავლობაში ეს ნიშანი CustomModelData მთელი რიცხვი იყო. resource pack გადაფარავდა, ვთქვათ, paper-ის მოდელს და ამბობდა: "თუ CustomModelData 1001-ია, ამის ნაცვლად ეს მოდელი გამოიყენე". plugin-ები ამ რიცხვით ქაღალდს არიგებდნენ, მოთამაშეები კი ხედავდნენ ხმალს, მონეტას ან ქუდს.
Minecraft 1.20.5-მა ნივთების NBT მონაცემთა component-ებით ჩაანაცვლა, 1.21.2-დან 1.21.4-მდე კი ნივთების მოდელები კიდევ უფრო გადაკეთდა:
minecraft:item_modelcomponent (1.21.2) ნივთს საშუალებას აძლევს, ნებისმიერ მოდელზე პირდაპირ მიუთითოს, ასე რომ custom ნივთს აღარ სჭირდება სხვა ნივთის override-ების მიტაცება.- 1.21.4-ში ნივთების მოდელების განსაზღვრებები
assets/<namespace>/items/-ში გადავიდა,custom_model_dataკი გახდა component, რომელიც ერთი მთელი რიცხვის ნაცვლად float-ების, დროშების, სტრიქონებისა და ფერების სიებს ინახავს.
თუ plugin-ს იყენებ, ამის ხელით დაწერა არ გჭირდება, მაგრამ უნდა იცოდე, რომ ეს არსებობს, რადგან სწორედ ამიტომ ფუჭდება custom ნივთების plugin-ები Minecraft-ის განახლებებისას და სწორედ ამიტომ შეიძლება 1.21.1-ისთვის აწყობილი pack 1.21.4-ის კლიენტებისთვის ხელახლა დასაგენერირებელი იყოს. როცა სერვერს აახლებ, ჯერ plugin განაახლე და pack ხელახლა დააგენერირე.
ქცევა სერვერის საქმეა. custom ხმალი დამატებითი ზიანით, custom საკვები, რომელიც potion-ის ეფექტს იძლევა, custom ინსტრუმენტი, რომელიც 3x3 ზონას თხრის - ეს ყველაფერი plugin-ში სერვერის მხარის ლოგიკაა. resource pack მხოლოდ გარეგნობას ცვლის.
custom ბლოკები და ავეჯი: ძვირი ნაწილი#
ნივთები მარტივია, რადგან ყველა კლიენტი custom ნივთების მოდელებს უკვე უჭერს მხარს. ბლოკები - არა, რადგან Minecraft-ს ბლოკების მდგომარეობების ფიქსირებული სია აქვს და მათთვის component-ების სისტემა არ არსებობს. ამიტომ plugin-ები ხელახლა იყენებს ბლოკის მდგომარეობებს, რომლებსაც მოთამაშეები ჩვეულებრივ თამაშში ვერასოდეს ხედავენ:
| ტექნიკა | როგორ მუშაობს | ღირებულება და შენიშვნები |
|---|---|---|
| note block-ის მდგომარეობები | ინსტრუმენტისა და ნოტის ასობით კომბინაცია, თითოეული ტექსტურაზე მიბმული | ნამდვილი note block-ები ამ მდგომარეობებს კარგავს; სხვა მხრივ იაფია |
| სოკოს ღეროსა და ბლოკის მდგომარეობები | ექვსი წახნაგი, თითოეული true ან false, ათობით მდგომარეობას იძლევა | სოკოს ბლოკები უცნაურად გამოიყურება; იაფია |
| tripwire-ისა და chorus-ის მდგომარეობები | გამოიყენება გამჭვირვალე ან არასრული ბლოკებისთვის | ქცევის თავისებურებები tripwire-ის განახლებებისას |
| ავეჯი entity-ების სახით | item display ან ჯავშნის სადგამი barrier-ით შეჯახებისთვის | თითოეული ნაწილი entity-ია - ნახე ქვემოთ |
ბლოკის მდგომარეობის ხრიკები იაფია: note block-ის მდგომარეობისგან შექმნილი custom მადანი note block-ის ფასი ჯდება. ავეჯი სხვაა. სკამი, ლამპა ან მაგიდა ჩვეულებრივ entity-ია (თანამედროვე ვერსიებზე item display, ძველებზე ჯავშნის სადგამი) და დამატებით barrier ბლოკები ან interaction entity-ები hitbox-ისთვის. ტავერნა სამოცი ავეჯის ნაწილით ერთ chunk-ში სამოცზე მეტი entity-ია, და ასეთი შენობების ქალაქი გროვდება. მათ AI არ აქვთ, ამიტომ მობებზე გაცილებით იაფია, მაგრამ ითვლება, ყველა ახლომდებარე კლიენტს ეგზავნება და /paper entity list-ში ჩანს.
ავეჯით დატვირთული ნაგებობები ზომიერად შეინახე, სადაც თანაბრად კარგად გამოიყურება, ბლოკებზე დაფუძნებული დეკორაცია ამჯობინე, და დიდი ნაგებობის აშენების შემდეგ entity-ების რაოდენობა შეამოწმე. entity-ების გასუფთავებასა და ClearLag-ში ბრძანებებია - და შეხსენება, რომ ავეჯის entity-ების მქონე სერვერზე არასოდეს გაუშვა საყოველთაო /kill.
ItemsAdder, Oraxen და Nexo შედარებით#
სამი plugin დომინირებს. სამივე ფასიანია, სამივე resource pack-ს აგენერირებს და სამივეს პატარა გუნდები უვლის, ამიტომ ყიდვამდე შეამოწმე, უჭერს თუ არა მიმდინარე ვერსია მხარს შენს Minecraft-ის ვერსიას.
| plugin | ძლიერი მხარე | შენიშვნები |
|---|---|---|
| ItemsAdder | ფუნქციების ყველაზე დიდი ნაკრები, მზა content pack-ების დიდი ეკოსისტემა | ფასიანია; რთული კონფიგურაცია; საკუთარი pack-ის ჰოსტინგის ოფციები აქვს |
| Oraxen | დიდი ხნის არსებობა, უფრო მარტივი კონფიგურაცია, ღია განვითარების ისტორია | ფასიანი build-ები; მთავარი დეველოპერი Nexo-ზე გადავიდა |
| Nexo | Oraxen-ის მემკვიდრე მისივე მთავარი დეველოპერისგან, თანამედროვე კოდის ბაზა | ფასიანია; უფრო ახალი, პატარა ეკოსისტემა, Oraxen-ის კონფიგურაციების მიგრაცია შესაძლებელია |
პრაქტიკული რჩევები:
- თუ მზა შიგთავსის ყიდვა გინდა - ავეჯის ნაკრებები, იარაღის pack-ები, emoji pack-ები - ყველაზე მეტი ItemsAdder-ს აქვს, რომელსაც მესამე მხარის შემქმნელები ყიდიან.
- თუ საკუთარი ნივთების დაპროექტება გინდა და წაკითხვად YAML-ს ამჯობინებ, Oraxen-სა და Nexo-ზე მსჯელობა უფრო ადვილია. ახალი სერვერები, რომლებიც დღეს ამ ორს შორის ირჩევენ, ზოგადად Nexo-ს ირჩევენ, რადგან აქტიური განვითარება იქ წავიდა.
- ნუ გაუშვებ ორ მათგანს ერთდროულად. ორივე შეეცდება resource pack-ისა და ბლოკის მდგომარეობების დაპატრონებას.
სხვა plugin-ები მათთან ინტეგრირდება: MythicMobs custom მობებისთვის, რომლებიც custom მოდელებს იყენებს, MMOItems RPG ნივთების მახასიათებლებისთვის და crafting-ისა და GUI-ის სხვადასხვა plugin. სანამ მათ მთელ ნაკრებს იყიდი, თავსებადობა შეამოწმე.
ItemsAdder-ის დაყენება#
ItemsAdder ყველაზე გავრცელებულია, ამიტომ აი მისი ზოგადი სახე. გზები და ბრძანებები მთავარ ვერსიებს შორის იცვლება; წაიკითხე დოკუმენტაცია იმ ვერსიისთვის, რომელსაც აყენებ.
- დააყენე plugin-ის jar და მისი დამოკიდებულებები. შეამოწმე დამოკიდებულებების სია ჩამოტვირთვის გვერდზე - ისტორიულად მას ProtocolLib და საკუთარი ბიბლიოთეკის plugin (LoneLibs) სჭირდებოდა.
- ერთხელ გაუშვი სერვერი. ის ქმნის
plugins/ItemsAdder/-სconfig.yml-ით და შიგთავსის საქაღალდით (მიმდინარე ვერსიებშიplugins/ItemsAdder/contents/), სადაც ნივთების განსაზღვრებები ცხოვრობს, თითოეული ნაკრები საკუთარ namespace-ის საქაღალდეში. config.yml-ში აირჩიე, როგორ განთავსდება resource pack (შემდეგი განყოფილება).- დაამატე ან დაწერე შიგთავსი, შემდეგ კი ააწყვე pack:
/iazip/iareload/iaget <namespace:item>/iazip ყველა შიგთავსის საქაღალდეს ერთ resource pack zip-ად აწყობს და, ჰოსტინგის პარამეტრების მიხედვით, ტვირთავს ან ემსახურება მას. /iareload ნივთების განსაზღვრებებს ხელახლა ტვირთავს. /iaget სატესტოდ ნივთს შენ გაძლევს. /iazip-ის შემდეგ ხელახლა შემოდი, რომ ახალი pack ჩამოტვირთო.
მინიმალური ნივთის განსაზღვრება ItemsAdder-ის ფორმატში ასე გამოიყურება, თუმცა სქემა განვითარდა და მიმდინარე მაგალითებიდან უნდა დააკოპირო და არა აქედან:
info: namespace: myserveritems: ruby: display_name: "Ruby" resource: material: EMERALD generate: true textures: - item/ruby.pngტექსტურა namespace-ის textures/item/ საქაღალდეში მიდის. generate: true ItemsAdder-ს ეუბნება, მოდელი ტექსტურიდან ააწყოს. საბაზისო მასალა არის ის, რაზეც vanilla-ს ქცევა ბრუნდება - აქ ზურმუხტი, ასე რომ 64-მდე ეწყობა და შეიძლება სოფლელებსაც მოუნდეთ. საბაზისო მასალები შეგნებულად აირჩიე: პურზე დაფუძნებული custom საკვები პურივით იქცევა, თუ plugin ამას არ გადაფარავს.
resource pack-ის ჰოსტინგი#
ყოველმა კლიენტმა pack უნდა ჩამოტვირთოს, და Minecraft მას HTTP-ით ან HTTPS-ით ტვირთავს URL-დან, რომელსაც სერვერი აგზავნის. ეს ნიშნავს, რომ zip რომელიმე URL-ზე უნდა იყოს. სამი ვარიანტი გაქვს.
- plugin-ის მიერ მოწოდებული ჰოსტი. ItemsAdder საკუთარ ჰოსტინგის ოფციას გთავაზობს, რომელიც pack-ს შენ მაგივრად ტვირთავს. მოსახერხებელია; დამოკიდებული ხარ მესამე მხარის სერვისის მუშაობაზე.
- თვითჰოსტინგი Minecraft სერვერიდან. plugin Minecraft სერვერის შიგნით დამატებით პორტზე პატარა ვებსერვერს უშვებს და zip-ს თავად ემსახურება. ერთი დამატებითი გამოყოფილი და გახსნილი პორტი სჭირდება. ჩამოტვირთვები შენი სერვერის მისამართიდან მოდის, ამიტომ დიდი pack და ბევრი შესვლა შენს გამტარუნარიანობას ხარჯავს.
- გარე ჰოსტი. ატვირთე zip ვებჰოსტზე, object storage-ში ან სტატიკურ საიტზე და plugin-ს URL მიეცი. ყველაზე საიმედო ვარიანტი საჯარო სერვერისთვის.
რომელიც არ უნდა აირჩიო, pack მოთამაშეების ქსელებიდან ხელმისაწვდომი უნდა იყოს და URL-მა ფაილი პირდაპირ უნდა მიაწოდოს და არა HTML ჩამოტვირთვის გვერდი. ფაილების გაზიარების სერვისები, რომლებიც ფაილის წინ "დააჭირე ჩამოსატვირთად" გვერდს დებს, არ მუშაობს.
pack პატარა შეინახე. ყოველი შემოსული მოთამაშე მას ყოველ ცვლილებაზე ერთხელ ტვირთავს, და შეუკუმშავი ტექსტურების 100 MB-იანი pack შესვლას ცუდი კავშირის მქონე მოთამაშეებისთვის ანელებს. შეკუმშე PNG-ები, მოაშორე გამოუყენებელი content pack-ები და ნუ ჩადებ ხმებს, რომლებსაც არ იყენებ. pack-ის იძულებით მოთხოვნა (require-resource-pack=true server.properties-ში, ან plugin-ის ეკვივალენტური პარამეტრი) ნიშნავს, რომ მოთამაშეები, რომლებიც უარს იტყვიან, თამაშს ვერ შეძლებენ - ეს სწორია სერვერისთვის, რომლის ნივთებიც მის გარეშე უხილავია, მაგრამ დარწმუნდი, რომ მოთხოვნა ხსნის, რატომ.
Bedrock, proxy-ები და სხვა გართულებები#
Bedrock მოთამაშეები. თუ Geyser-ს უშვებ, რომ Bedrock მოთამაშეებმა შემოსვლა შეძლონ, ისინი Java-ს resource pack-ებს ვერ იღებენ. Geyser-ს custom ნივთებისა და ბლოკებისთვის საკუთარი მექანიზმი აქვს, რომელიც mapping-ებსა და გარდაქმნილ Bedrock pack-ს იყენებს, და ItemsAdder-ს, Oraxen-სა და Nexo-ს მის შესაქმნელად სხვადასხვა დონის მხარდაჭერა ან დამხმარე ინსტრუმენტები აქვს. ელოდე რეალურ სამუშაოს და არასრულყოფილ შედეგებს, განსაკუთრებით ავეჯისა და custom ბლოკებისთვის. Geyser Bedrock crossplay-ისთვის საფუძვლებს განიხილავს.
proxy-ის ქსელები. Velocity-ის ქსელში pack-ს backend სერვერი აგზავნის. თუ რამდენიმე backend ერთსა და იმავე ნივთებს იყენებს, მათ ერთი და იგივე pack უნდა დააგენერირონ ან გააზიარონ, თორემ მოთამაშეები ყოველ ჯერზე ხელახლა ჩამოტვირთავენ, როცა სერვერს იცვლიან. აირჩიე ერთი სერვერი ჭეშმარიტების წყაროდ და pack და კონფიგურაციები დანარჩენებზე დააკოპირე.
განახლებები. Minecraft-ის განახლებამ შეიძლება resource pack-ის ფორმატი და ნივთების component-ების სისტემა შეცვალოს. custom ნივთებიანი სერვერის განახლებამდე შეამოწმე, რომ შენი plugin-ის ვერსია ახალ გამოშვებას უჭერს მხარს, განაახლე ის სერვერის ასლზე, pack ხელახლა დააგენერირე და სუფთა კლიენტით გამოსცადე. Minecraft-ის ვერსიის განახლებები ზოგად პროცედურას განიხილავს.
plugin-ები, რომლებიც ნივთებს ამოწმებს. მაღაზიის, აუქციონისა და ეკონომიკის plugin-ები ნივთებს ტიპითა და მონაცემებით ადარებს. ზურმუხტზე დაფუძნებული custom ლალი შეიძლება ზურმუხტად გაიყიდოს ნიშნის მაღაზიაში, რომელიც მხოლოდ მასალას ამოწმებს. გამოსცადე ეკონომიკის ყველა plugin custom ნივთებით, სანამ მოთამაშეები exploit-ს იპოვიან.
plugin-ის გარეშე#
რამდენიმე კოსმეტიკური ნივთისთვის შეიძლება ფასიანი plugin საერთოდ არ დაგჭირდეს. datapack-ს ან რამდენიმე ბრძანებას შეუძლია ნივთების დარიგება მოდელის component-ით, resource pack-ს კი თავად წერ:
/give @p minecraft:paper[minecraft:item_model="myserver:ruby"]ამ ფორმას 1.21.2 ან უფრო ახალი სჭირდება (საჩვენებელი სახელისთვის დაამატე item_name component; მისი ტექსტის სინტაქსი 1.21.5-ში შეიცვალა, ამიტომ შენი ვერსიისთვის wiki შეამოწმე) და resource pack, რომელიც myserver:ruby მოდელს განსაზღვრავს. ეს სუფთა და მომავლისთვის მდგრადია მარტივი კოსმეტიკური ნივთებისა და თასებისთვის. ის არ გაძლევს custom ბლოკებს, ავეჯს, ქცევის მქონე custom crafting-ს ან GUI-ებს - და სწორედ აქ ამართლებს plugin თავის ფასს. datapack-ები სერვერებისთვის datapack-ის მხარეს განიხილავს.
RE:NODE-ზე content pack-ის ატვირთვა zip-ის ფაილ მენეჯერში გადატანაა, რომელიც არქივებს ადგილზევე ხსნის, კონსოლი კი /iazip-ისა და reload-ის გამონატანს ფილტრის გარეშე აჩვენებს, ასე რომ შეცდომები შენს YAML-ში ხდომისთანავე ჩანს. თუ pack-ს თავად ემსახურები, დაამატე პორტი Network ჩანართზე. დიდი შიგთავსის ცვლილებამდე ან Minecraft-ის განახლებამდე პანელიდან backup გააკეთე; აღდგენა ერთი ღილაკია.
FAQ#
სჭირდებათ თუ არა მოთამაშეებს მოდები custom ნივთების დასანახად?
არა. მათ სერვერის resource pack სჭირდებათ, რომელსაც კლიენტი შესვლისას ჩამოტვირთავს. Java-ს მოთამაშეები vanilla launcher-ზე custom ნივთებს, ბლოკებსა და ავეჯს ხედავენ, თუ pack-ს მიიღებენ.
ღირს თუ არა ItemsAdder-ში ფულის გადახდა?
თუ ბევრი custom შიგთავსი გინდა - ავეჯი, ბლოკები, GUI-ები, emoji-ები - და განსაკუთრებით თუ მზა pack-ების ყიდვა გინდა, კი. რამდენიმე კოსმეტიკური ნივთისთვის საკმარისია datapack და ხელით შექმნილი resource pack item_model component-ით.
რატომ ხედავენ მოთამაშეები იისფერ-შავ ან ჩვეულებრივ ნივთებს?
pack არ ჩაიტვირთა. ან უარი თქვეს, ან URL მიუწვდომელია ან ფაილს პირდაპირ არ აწვდის, ან pack სხვა Minecraft-ის ვერსიისთვის აიწყო. შეამოწმე URL ბრაუზერში და ნებისმიერი განახლების შემდეგ pack ხელახლა დააგენერირე.
იწვევს თუ არა custom ბლოკები ლაგს?
ბლოკის მდგომარეობაზე დაფუძნებული ბლოკები დაახლოებით იმდენივე ჯდება, რამდენიც vanilla-ს ბლოკი, რომელსაც იყენებს. ავეჯი ჩვეულებრივ entity-ებია, რომლებიც მეტი ჯდება და დატვირთულ ნაგებობებში გროვდება. თვალი ადევნე entity-ების რაოდენობას ქალაქებსა და ავეჯით დატვირთულ ზონებში.
შეუძლიათ თუ არა Bedrock მოთამაშეებს ItemsAdder-ის ნივთების გამოყენება?
მხოლოდ დამატებითი სამუშაოთი Geyser-ის custom ნივთების mapping-ებითა და გარდაქმნილი Bedrock pack-ით, და შედეგები ნივთის ტიპის მიხედვით განსხვავდება. გაითვალისწინე, რომ Bedrock მოთამაშეები ზოგიერთ ნივთს მის საბაზისო მასალად დაინახავენ, თუ კონვერტაციაში არ ჩადებ შრომას.




კომენტარები
სრულიად ანონიმურად: ანგარიშის, ელფოსტის და cookie-ის გარეშე. ინახება მხოლოდ სახელი, ტექსტი და დრო - სხვა არაფერი. ბმულების რაოდენობა ლიმიტირებულია.