modpack-ის სერვერად გასაშვებად დაიწყე პაკეტის server pack-იდან, თუ აქვს - CurseForge-ის დიდი პაკეტების უმეტესობა მას დამატებით ჩამოსატვირთად აქვეყნებს - და ატვირთე შესაბამისი loader-ითა და Java-ს ვერსიით. თუ server pack არ არის, სერვერის საქაღალდეს პაკეტის manifest-იდან აწყობ: CurseForge-ის ექსპორტები mod-ებს პროექტისა და ფაილის ID-ით manifest.json-ში ჩამოთვლის, Modrinth-ის .mrpack კი ჩამოტვირთვის URL-ებს modrinth.index.json-ში, და თითოეული აღნიშნავს, რომელ მხარეს ეკუთვნის mod-ი. ორივე შემთხვევაში დარჩენილი სამუშაო ერთი და იგივეა: დააყენე სწორი loader, მოაშორე კლიენტის mod-ები, დააკოპირე პაკეტის config-ის override-ები, მიეცი საკმარისი მეხსიერება და დარწმუნდი, რომ მოთამაშეებს პაკეტის ზუსტად იგივე ვერსია აქვთ. ეს პოსტი ორივე ფორმატს და ყველა ადგილს გაივლის, სადაც პროცესი ფუჭდება.
რა არის სინამდვილეში modpack#
modpack სამი რამეა ერთად შეკრული: loader კონკრეტულ ვერსიაზე (Forge, NeoForge, Fabric ან Quilt), mod-ების სია კონკრეტულ ვერსიებზე და override-ების ნაკრები - config-ები, სკრიპტები, ნაგულისხმევი პარამეტრები, ზოგჯერ resource pack-ები - რომლებიც mod-ების გროვას დაპროექტებულ გამოცდილებად აქცევს.
კლიენტის პაკეტი, რომელსაც launcher-ში აყენებ, სამივეს შეიცავს, პლუს ყველაფერს, რასაც მოთამაშე ხედავს: shader-ებს, მინირუკებს, მენიუებს, ხმებს. სერვერს სჭირდება loader, mod-ები, რომლებიც თამაშის ლოგიკას უშვებს, და override-ები, რომლებიც სერვერზე მოქმედებს. მას არ უნდა ჰქონდეს მხოლოდ კლიენტის ნაწილები, და ყველაფერი დანარჩენის ზუსტად იგივე ვერსიები უნდა ჰქონდეს.
ეს სერვერამდე სამ გზას იძლევა, ძალისხმევის მიხედვით:
- ჩამოტვირთე ავტორის მიერ გაკეთებული server pack. ყველაზე სწრაფი და საიმედოა, რადგან ავტორს მხოლოდ კლიენტის mod-ები უკვე მოშორებული აქვს.
- ააწყე ის პაკეტის ფაილიდან - CurseForge-ის ექსპორტიდან ან Modrinth-ის
.mrpack-იდან - ინსტრუმენტით ან ხელით. - ააწყე საკუთარი პაკეტი ცალკეული mod-ებიდან. ეს mod-იანი სერვერის გაშვებაშია crash-ების გარეშე განხილული; ეს პოსტი გამოქვეყნებულ პაკეტებზეა.
ყველაფერზე ადრე იპოვე პაკეტის გვერდზე სამი ფაქტი და ჩაიწერე: Minecraft-ის ვერსია, loader და მისი ზუსტი ვერსია, და პაკეტის ვერსია. ქვემოთ ყოველი ნაბიჯი მათზეა დამოკიდებული.
CurseForge: server pack-ები და manifest.json#
CurseForge-ზე პაკეტის Files ჩანართი ყოველ რელიზს ჩამოთვლის. დიდი პაკეტები, როგორც წესი, ყოველ რელიზს server pack-ს ურთავენ დამატებით ფაილად. ეს zip-ია, კლიენტის ჩამოტვირთვისგან ცალკე, და, როგორც წესი, შეიცავს:
mods/-ს მხოლოდ კლიენტის mod-ების უკვე მოშორებითconfig/-ს და ხშირადdefaultconfigs/-ს,kubejs/-ს ანscripts/-ს- გაშვების სკრიპტს და ზოგჯერ README-ს რეკომენდებული მეხსიერებითა და Java-ს ვერსიით
server pack-ები ერთი მნიშვნელოვანი თვისებით განსხვავდება: ზოგი loader-ს უკვე დაყენებულს შეიცავს, libraries/-ით და გაშვების სკრიპტებით ადგილზე; სხვები შეიცავს სკრიპტს, რომელიც პირველ გაშვებაზე loader-ის installer-ს უშვებს და ფაილებს ინტერნეტიდან ჩამოტვირთავს. გაშვების სკრიპტი გაშვებამდე გახსენი, რომ იცოდე, რომელი ტიპი გაქვს. NeoForge სერვერის აწყობა ხსნის გაშვების სკრიპტებს და user_jvm_args.txt-ს, რომლებსაც Forge-ის ხაზის პაკეტები იყენებს.
თუ რელიზს server pack არ აქვს, კლიენტის ექსპორტი გაქვს. მისი მთავარი ფაილია manifest.json:
{ "minecraft": { "version": "1.20.1", "modLoaders": [{ "id": "forge-47.3.0", "primary": true }] }, "manifestType": "minecraftModpack", "manifestVersion": 1, "name": "Example Pack", "version": "2.4.1", "files": [ { "projectID": 123456, "fileID": 4567890, "required": true } ], "overrides": "overrides"}manifest mod-ებს არ შეიცავს. ის CurseForge-ის პროექტისა და ფაილის ID-ებს შეიცავს, მის გვერდით მდებარე overrides საქაღალდე კი config-ებსა და სკრიპტებს ინახავს, რომლებიც ზემოდან უნდა დაკოპირდეს. ID-ების jar-ებად გადაქცევა ნიშნავს CurseForge-ის API-სთვის თითოეული ფაილის მოთხოვნას, რასაც CurseForge-ის აპი აკეთებს, როცა პაკეტს აყენებ.
CurseForge-ს სპეციფიკური ხაფანგი აქვს: mod-ების ავტორებს შეუძლიათ მესამე მხარის მიერ გავრცელებაზე უარის თქმა. ინსტრუმენტები, რომლებიც სერვერის საქაღალდეებს API-ით აწყობენ, ამ mod-ებს ავტომატურად ვერ ჩამოტვირთავენ და მათ ჩამოგითვლიან, რომ თითოეული mod-ის გვერდიდან ხელით ჩამოიტანო. ნებისმიერ დიდ პაკეტზე რამდენიმეს ელოდე.
Modrinth: .mrpack ფორმატი#
Modrinth-ის პაკეტი .mrpack ფაილია, რაც სხვა გაფართოების მქონე zip-ია. შიგნით არის modrinth.index.json და override-ების სამამდე საქაღალდე.
{ "formatVersion": 1, "game": "minecraft", "versionId": "2.4.1", "name": "Example Pack", "files": [ { "path": "mods/example-mod-1.3.0.jar", "hashes": { "sha1": "...", "sha512": "..." }, "env": { "client": "required", "server": "unsupported" }, "downloads": ["https://cdn.modrinth.com/data/..."], "fileSize": 215040 } ], "dependencies": { "minecraft": "1.21.1", "fabric-loader": "0.16.5" }}ამ ფაილის სამი ნაწილი მნიშვნელოვანია სერვერისთვის:
- `dependencies` ასახელებს Minecraft-ის ვერსიას და loader-ს:
fabric-loader,quilt-loader,forgeანneoforge, თითოეულს თავისი ვერსიით. ზუსტად ის დააყენე. - `env` ამბობს, არის თუ არა თითოეული ფაილი
required,optionalანunsupportedკლიენტზე და სერვერზე. ფაილი"server": "unsupported"-ით მხოლოდ კლიენტისაა და სერვერს არ ეკუთვნის. ეს პაკეტის ავტორის განცხადებაა, ამიტომ ზუსტად იმდენად ზუსტია, რამდენადაც მან გააკეთა, მაგრამ გამოცნობაზე გაცილებით უკეთესია. - `downloads` პირდაპირი URL-ებია,
hashesკი შედეგის გადამოწმების საშუალებას გაძლევს.
override-ების საქაღალდეები ფაილების ჩამოტვირთვის შემდეგ გამოიყენება: overrides/ ორივე მხარისთვის, server-overrides/ მხოლოდ სერვერისთვის და client-overrides/ მხოლოდ კლიენტისთვის. დააკოპირე overrides/ და მერე server-overrides/ შენი სერვერის საქაღალდეში, ამ თანმიმდევრობით, client-overrides/ კი უგულებელყავი.
| საქაღალდე .mrpack-ში | დავაკოპირო სერვერზე? |
|---|---|
overrides/ | კი, პირველად |
server-overrides/ | კი, overrides/-ის შემდეგ |
client-overrides/ | არა |
ინსტრუმენტები, რომლებიც სერვერის საქაღალდეს აწყობენ#
manifest-ის ხელით გახსნაც შეგიძლია - გახსნა ყოველი URL, ჩამოტვირთო ყოველი jar - და ოცი mod-ის პაკეტისთვის ეს ნორმალურია. ორასი mod-ისთვის გამოიყენე ინსტრუმენტი, რომელიც ინდექსს კითხულობს და საქაღალდეს აწყობს:
- ServerPackCreator server pack-ს CurseForge-ის ან Modrinth-ის პაკეტიდან აწყობს, ცნობილი მხოლოდ კლიენტის mod-ების სიის მოშორების ჩათვლით. მას GUI და ბრძანების ხაზის რეჟიმი აქვს.
- mrpack-install
.mrpack-ს კითხულობს, სერვერის მხარის ფაილებს ჩამოტვირთავს და loader-ს აყენებს. ეს ერთი binary-ა, რომელიც ზუსტად ამ სამუშაოსთვისაა შექმნილი. - packwiz საკუთარი პაკეტის ფორმატია, რომელსაც ზოგიერთი ავტორი იყენებს; მისი bootstrap installer-ი ყოველ გაშვებაზე სერვერს გამოქვეყნებული პაკეტიდან აახლებს:
java -jar packwiz-installer-bootstrap.jar -g -s server https://example.com/pack.toml. - Prism Launcher CurseForge-ისა და Modrinth-ის პაკეტებს დესკტოპზე აიმპორტებს, რაც მოსახერხებელი გზაა ყოველი jar-ის საკუთარ მანქანაზე მოსატანად, სანამ დაალაგებ.
გაუშვი ისინი საკუთარ კომპიუტერზე, შეამოწმე შედეგი და ატვირთე. ინსტრუმენტი, რომელმაც ჩუმად გამოტოვა mod-ი, რომლის ჩამოტვირთვაც ვერ შეძლო, ან დატოვა ის, რომელიც უნდა მოეშორებინა, ლოკალურად უფრო ადვილად შესამჩნევია, ვიდრე სერვერის log-ში.
RE:NODE-ზე modpack-ის installer არ არის და არც რომელიმე mod-ების საიტთან ინტეგრაცია - Minecraft-ის ხაზი Paper-ს უშვებს შესაბამისი Java-ს ვერსიით, modpack კი ის რამაა, რასაც მასზე თავად დებ. დაარქივე დასრულებული სერვერის საქაღალდე zip-ად, ატვირთე file manager-ით და ადგილზე გახსენი, ან დააკოპირე SFTP-ით. SFTP და file manager კავშირის დეტალებს შეიცავს. დაშვებული mod-ების თეთრი სია არ არსებობს, ასე რომ, პაკეტში არაფერი იბლოკება.
მხოლოდ კლიენტის mod-ების მოცილება#
ეს ის ნაბიჯია, რომელიც პირველი ჩართვის crash-ების უმეტესობას იწვევს. მხოლოდ კლიენტის mod-ები ცნობად ჯგუფებად იყოფა:
| კატეგორია | მაგალითები | რატომ აფუჭებს სერვერს |
|---|---|---|
| რენდერერები და წარმადობა | Sodium, Embeddium, OptiFine, Entity Culling | ეხება რენდერინგის კლასებს, რომლებიც არ არსებობს |
| shader-ები | Iris, Oculus | იგივე |
| ინტერფეისი და HUD | მინირუკები, რომლებიც მხოლოდ ხატავენ, tooltip-ისა და მენიუს mod-ები | კლიენტის ეკრანებს ტვირთავს |
| აუდიო | ხმისა და მუსიკის mod-ები | ხმის ძრავს ტვირთავს |
loader-ები მათ სხვადასხვანაირად ამუშავებენ. Fabric კითხულობს თითოეული mod-ის გამოცხადებულ გარემოს და გამოყოფილ სერვერზე ჩუმად ტოვებს მხოლოდ კლიენტისად აღნიშნულ mod-ებს, ასე რომ, კარგად გაკეთებული კლიენტის mod-ი ზიანს არ აყენებს. Fabric-ზე crash-ები იმ mod-ებიდან მოდის, რომლებიც საკუთარ თავს ორივე მხარისთვის აცხადებენ, მაგრამ ასე არ არის, და შეცდომა ასე იკითხება: Cannot load class ... in environment type SERVER. Forge და NeoForge ნაკლებად შემწყნარებლები არიან: მხოლოდ კლიენტის mod-ი ხშირად გაშვებას აგდებს Attempted to load class net/minecraft/client/... for invalid dist DEDICATED_SERVER-ით.
ორივე შემთხვევაში stack trace mod-ს ასახელებს. ამოიღე ის სერვერის mods/ საქაღალდიდან, ისევ გაუშვი და გაიმეორე, სანამ სერვერი Done-მდე არ მიაღწევს. შეინახე ამოღებულის სია; პაკეტის შემდეგ განახლებაზე ისევ დაგჭირდება.
loader, Java და გაშვების ბრძანება#
როცა mod-ები დალაგებულია, სერვერს სწორი loader და სწორი Java სჭირდება:
- loader-ის ვერსია პაკეტიდან, ზუსტად. არა უახლესი. NeoForge
21.1.77-ზე აგებული პაკეტი იმ build-ზე გატესტილი იყო; უფრო ახალი, როგორც წესი, ნორმალურია და ზოგჯერ - არა. - Java Minecraft-ის შესაბამისი. 1.20.4-ს და უფრო ძველებს Java 17 სჭირდება (1.16.5-ს და უფრო ძველებს Java 8), 1.20.5-ს და უფრო ახლებს - Java 21. JVM-ის flag-ები და Java-ს ვერსიები ცხრილს შეიცავს.
- ერთი ადგილი მეხსიერებისთვის. server pack-ებს მოყვება გაშვების სკრიპტები, რომლებიც მეხსიერებას აყენებს; პანელებიც ხშირად აყენებენ. გამოიყენე ერთი. თუ ორივე
-Xmx-ს გადასცემს, ბრძანების ხაზზე ბოლო იმარჯვებს.
პანელზე შეამოწმე, რას უშვებს გაშვების ბრძანება. Fabric-ის პაკეტები ერთი launcher jar-იდან ეშვება. Forge-ისა და NeoForge-ის პაკეტები 1.17-დან არგუმენტების ფაილებიდან ეშვება და არა ერთი jar-იდან, და პაკეტის საკუთარი სკრიპტი ეტალონია იმისთვის, როგორი უნდა იყოს ბრძანება.
მეხსიერება, პირველი ჩართვა და pre-generation#
modpack-ები უზარმაზრად განსხვავდება, ამიტომ საწყის წერტილად პაკეტის ავტორის რეკომენდაცია აიღე, ესენი კი საღი აზრის შემოწმებად:
| პაკეტის ზომა | ტიპური heap | შენიშვნები |
|---|---|---|
| მსუბუქი, 50-100 mod | 4-6 GB | სათავგადასავლო და კომფორტის პაკეტები |
| საშუალო, 100-200 mod | 6-8 GB | ტექნიკური და მაგიური პაკეტების უმეტესობა |
| მძიმე, 250+ mod | 8-12 GB | "ყველაფრიანი" პაკეტები, დიდი worldgen |
დატოვე ადგილი heap-სა და გეგმის მეხსიერების ლიმიტს შორის metaspace-ისა და ნატიური მეხსიერებისთვის; mod-იანი სერვერები კლასების ძალიან დიდ რაოდენობას ტვირთავენ. RE:NODE-ზე Minecraft-ის გეგმები 2-დან 14 GB-მდეა, და კონტეინერი, რომელიც ლიმიტს აღწევს, ჩერდება და სუფთად გადაიტვირთება, swap-ის ნაცვლად - log-ი უბრალოდ წყდება, crash report-ის გარეშე. თუ ეს თამაშის დროს ხდება, heap ლიმიტთან ძალიან ახლოსაა ან გეგმა ძალიან პატარაა. რამდენი RAM სჭირდება Minecraft სერვერს ზომის შერჩევას დეტალურად განიხილავს.
დიდი პაკეტის პირველ ჩართვას რამდენიმე წუთი შეიძლება დასჭირდეს, სანამ ყოველი mod ინიციალიზდება და სამყარო დაგენერირდება. კონსოლში Done-ს დაელოდე და არა პანელს, რომ სერვერი ონლაინად გამოაცხადოს. მერე წინასწარ დააგენერირე, სანამ ხალხი მოვა: worldgen mod-ები chunk-ების გენერაციას გაცილებით აძვირებს, და mod-იანი ლაგი, როგორც წესი, მკვლევარი მოთამაშეებიდან მოდის. Chunky ყველა loader-ზე მუშაობს, და სამყაროს საზღვრები და pre-generation პროცედურას შეიცავს.
მოთამაშეებისა და სერვერის ერთ რიტმში შენარჩუნება#
mod-იანი სერვერი მხოლოდ მაშინ მუშაობს, თუ ყველა მოთამაშეს პაკეტის იგივე ვერსია აქვს, რაც სერვერს. პრაქტიკული შეთანხმებები:
- გამოაქვეყნე ზუსტი პაკეტი და ვერსია შენს Discord-ში ან საიტზე: "Example Pack 2.4.1 CurseForge-ზე" ან Modrinth-ის ვერსიის ბმული.
- ნუ დაამატებ mod-ებს, რომლებიც პაკეტს არ აქვს, თუ ისინი მხოლოდ სერვერული არ არის (წარმადობა, backup-ები, ნებართვები, ჩატის ხიდები). ყველაფერი, რაც კონტენტს ამატებს, ყველა მოთამაშეს აიძულებს, ხელით დააყენოს, და ვიღაც ყოველთვის არასწორად აკეთებს.
- თუ აუცილებლად უნდა მოარგო, გამოაქვეყნე პაკეტის საკუთარი fork, რომ მოთამაშეებმა ერთი რამ დააყენონ. Modrinth-იც და CurseForge-იც პაკეტის ატვირთვის საშუალებას გაძლევს; packwiz ზუსტად ამისთვისაა შექმნილი.
როცა პაკეტი ახლდება:
- წაიკითხე changelog-ი ამოღებულ mod-ებზე. კონტენტის mod-ის ამოღება მის ბლოკებსა და ნივთებს სამყაროდან შლის.
- გააკეთე სამყაროს,
mods/-ის,config/-ისა დაdefaultconfigs/-ის backup ერთად. სამყაროს აღდგენა არასწორი mod-ების გვერდით აღდგენა არ არის. RE:NODE-ზე ამ backup-ის დაბლოკვა შეგიძლია, რომ როტაციამ არ წაშალოს, სანამ ტესტავ. - შეცვალე
mods/მთლიანად, შერწყმის ნაცვლად, რომ ძველი ვერსიები ახლების გვერდით არ დარჩეს. - გამოიყენე ახალი override-ები, მაგრამ საკუთარი ცვლილებები შეინარჩუნე - შეადარე
config/diff-ით, ნაცვლად იმისა, რომ ბრმად გადააწერო. - გაუშვი ისე, რომ ონლაინ არავინ იყოს, log-ი თავიდან წაიკითხე და მოთამაშეებს უთხარი, განაახლონ, სანამ შემოვლენ.
რა ვქნათ, როცა mod-ის განახლება აფუჭებს გეგმაა იმ შემთხვევისთვის, როცა მე-5 ნაბიჯი ცუდად წავა.
ჩვეულებრივი ჩავარდნების გამოსწორება#
"Mismatched mod channel list" ან "missing mods" შესვლისას. კლიენტისა და სერვერის პაკეტები განსხვავდება. ეკრანი ჩამოთვლის, რომელი mod-ებია ერთ მხარეს და არა მეორეზე. როგორც წესი, მოთამაშე პაკეტის ძველ ვერსიაზეა, ან შენ ამოიღე mod-ი, რომელიც მხოლოდ კლიენტის არ იყო.
სერვერი ეშვება, მაგრამ სამყაროს პაკეტის ფუნქციები არ აქვს. override-ები არ დაკოპირდა ან არასწორ ადგილას დაკოპირდა. შეამოწმე, რომ config/, defaultconfigs/ და ნებისმიერი kubejs/ საქაღალდე mods/-ის გვერდით დგას და არა სხვა საქაღალდის შიგნით.
შეცვლილ config-ებს ეფექტი არ აქვს. პარამეტრი სამყაროს სერვერის config-ია, შენ კი შაბლონი შეცვალე defaultconfigs/-ში. ცოცხალი ასლი world/serverconfig/-შია.
manifest-იდან აწყობის შემდეგ mod-ი აკლია. CurseForge-ზე ავტორმა მესამე მხარის მიერ გავრცელებაზე უარი თქვა. ჩამოტვირთე ის ხელით მისი გვერდიდან, manifest.json-ში მითითებული ფაილის ID-ის შესაბამისად.
სერვერი შეცდომის გარეშე ჩერდება. მეხსიერება. შეამცირე heap, რომ ლიმიტის ქვემოთ ადგილი დატოვოს, ან უფრო მაღალ გეგმაზე გადადი.
FAQ#
შემიძლია უბრალოდ კლიენტის modpack სერვერზე ავტვირთო?
შეგიძლია, და Fabric-ზე ის ხშირად გაეშვება, რადგან Fabric მხოლოდ კლიენტისად აღნიშნულ mod-ებს ტოვებს. Forge-სა და NeoForge-ზე ის, როგორც წესი, რენდერერის ან shader-ის mod-ზე crash-დება. ორივე შემთხვევაში პაკეტის server pack-იდან ან მისი manifest-იდან აწყობილი სერვერის საქაღალდე უფრო სუფთაა და ნაკლებ მეხსიერებას იყენებს.
სად ვიპოვო CurseForge-ის server pack?
პაკეტის Files ჩანართზე გახსენი სასურველი რელიზი და მის დამატებით ფაილებში server pack მოძებნე. ყველა პაკეტი მას არ გთავაზობს, და server pack-ის ვერსია უნდა ემთხვეოდეს კლიენტის ვერსიას, რომელსაც მოთამაშეები აყენებენ.
რა ვუყო .mrpack ფაილს?
გადაარქვი .zip-ად, რომ შიგნით ჩაიხედო, ან გამოიყენე ინსტრუმენტი, როგორიცაა mrpack-install, რომელიც modrinth.index.json-ს კითხულობს, სერვერის მხარის ფაილებს ჩამოტვირთავს, loader-ს აყენებს და overrides/-სა და server-overrides/-ს იყენებს.
შეუძლიათ მოთამაშეებს პაკეტის სხვა ვერსიით შემოსვლა?
როგორც წესი, არა. კონტენტის mod-ებში ნებისმიერი განსხვავება გაგდებას ან desync-ს იწვევს. მცირე patch-რელიზები ზოგჯერ მხოლოდ config-ებს ცვლის და კავშირი მაინც მყარდება, მაგრამ უსაფრთხო წესია, რომ სერვერი და ყველა მოთამაშე პაკეტის ერთსა და იმავე ვერსიას უშვებდეს.
მჭირდება მონაცემთა ბაზა modpack სერვერისთვის?
თავად პაკეტისთვის არა; mod-ები თავიანთ მონაცემებს სამყაროს საქაღალდეში ინახავენ. ნებართვების, ლოგირების ან ვებ-რუკების რამდენიმე სერვერულ mod-ს შეუძლია გარე მონაცემთა ბაზის გამოყენება, და RE:NODE-ზე Minecraft-ის გეგმები ერთ მონაცემთა ბაზის სლოტს შეიცავს, თუ მისი გამოყენება გინდა.




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