NeoForge სერვერის ასაწყობად ჩამოტვირთე NeoForge-ის installer შენი Minecraft-ის ვერსიისთვის, გაუშვი --installServer-ით ცარიელ საქაღალდეში, მეხსიერების პარამეტრები ჩაწერე user_jvm_args.txt-ში, მიიღე EULA და გაუშვი run.sh-ით (Windows-ზე run.bat-ით) და არა java -jar-ით. mod-ები mods/-ში მიდის, მათი პარამეტრები კი პირველი ჩართვის შემდეგ config/-ში და სამყაროს serverconfig/-ში ჩნდება, და ყველა მოთამაშეს იგივე mod-ები სჭირდება იგივე ვერსიებით. ის, რაზეც ხალხი ბორძიკობს, ისაა, რომ თანამედროვე NeoForge სერვერს გასაშვები ერთი jar არ აქვს - გაშვების სკრიპტია launcher - რასაც დიდი მნიშვნელობა აქვს ჰოსტინგის პანელებზე, რომლებიც java -jar-ის ირგვლივაა აგებული.
NeoForge, Forge და რომელი ვერსია გჭირდება#
NeoForge Forge-ის fork-ია, რომელიც მას 2023 წელს გამოეყო. Minecraft 1.20.1-ისთვის ის Forge-ის თითქმის იდენტურ build-ებს უშვებდა, Forge-ის ძველი ვერსიის ნომრებით. 1.20.2-დან მოყოლებული ის ცალკე loader-ია საკუთარი ვერსიონირებით, და Forge-ის ხაზის ახალი modpack-ების უმეტესობა NeoForge-ს მიზნად ისახავს და არა Forge-ს.
ვერსიის ნომერი გეუბნება, Minecraft-ის რომელი ვერსიისთვისაა აწყობილი:
| Minecraft | NeoForge-ის ვერსია | Java |
|---|---|---|
| 1.20.1 | 47.1.x (Forge-ის სტილის ნომრები) | 17 |
| 1.20.2 | 20.2.x | 17 |
| 1.20.4 | 20.4.x | 17 |
| 1.21 | 21.0.x | 21 |
| 1.21.1 | 21.1.x | 21 |
| 1.21.4 | 21.4.x | 21 |
1.20.2-დან შაბლონი ასეთია: NeoForge-ის პირველი ორი რიცხვი Minecraft-ის მეორე და მესამე რიცხვია, ბოლო კი build-ის ნომერი. NeoForge-ის საიტი თითოეული ვერსიისთვის მიმდინარე build-ებს ჩამოთვლის; გამოიყენე ის, რომელსაც შენი modpack ასახელებს, ან იმ Minecraft-ის ვერსიის უახლესი სტაბილური build, თუ საკუთარს აწყობ.
თავსებადობის ორი ფაქტი ბევრ დაბნეულობას გაარიდებს:
- Forge-ის mod-ები NeoForge-ზე 1.20.2-დან არ იტვირთება, თუ ავტორმა თავიდან არ ააწყო. 1.20.1-ზე Forge-ის mod-ების უმეტესობა NeoForge-ზე მუშაობს, რის გამოც 1.20.1-ის ბევრი პაკეტი კვლავ Forge-ს უშვებს.
- 1.20.5-დან NeoForge-ის mod-ები საკუთარ თავს `META-INF/neoforge.mods.toml`-ში აღწერენ, Forge-ის
mods.toml-ის ნაცვლად. NeoForge 1.21-ის სერვერში ჩაგდებული Forge-ის mod-ი საერთოდ არ ცნობილდება mod-ად, რაც შეიძლება ისე გამოიყურებოდეს, თითქოს mod-ი უბრალოდ უგულებელყოფილია.
Java-ს სვეტზე მოლაპარაკება არ არსებობს. 1.21-ის NeoForge სერვერი Java 17-ზე მაშინვე ფუჭდება UnsupportedClassVersionError-ით; 1.20.1-ის პაკეტი გაცილებით ახალ Java-ზე უფრო უცნაური გზებით შეიძლება გაფუჭდეს. JVM-ის flag-ები და Java-ს ვერსიები სრულ ცხრილს და მასთან დაკავშირებულ heap-ის ზომას შეიცავს.
installer-ის გაშვება#
installer პატარა jar-ია, რომელიც vanilla-ს სერვერს, NeoForge-ის ბიბლიოთეკებს და mapping-ებს ჩამოტვირთავს და გაშვების ფაილებს წერს. მას Java და ინტერნეტ-კავშირი სჭირდება, და ცარიელ საქაღალდეში უნდა გაეშვას.
$ mkdir neoforge-server && cd neoforge-server$ curl -O https://maven.neoforged.net/releases/net/neoforged/neoforge/21.1.77/neoforge-21.1.77-installer.jar$ java -jar neoforge-21.1.77-installer.jar --installServerვერსია ამ ხაზებში მაგალითია. როცა დასრულდება, საქაღალდე შეიცავს:
| გზა | რა არის |
|---|---|
libraries/ | NeoForge, დაპატჩული თამაში და ყველა ბიბლიოთეკა, რაც მას სჭირდება |
run.sh, run.bat | გაშვების სკრიპტები Linux-ისა და Windows-ისთვის |
user_jvm_args.txt | სადაც შენი JVM-ის ოფციები მიდის - მეხსიერება და flag-ები |
neoforge-...-installer.jar.log | installer-ის log-ი, სასარგებლოა, თუ რამე ჩავარდა |
installer jar-ისა და მისი log-ის წაშლა შეგიძლია, როცა ინსტალაცია წარმატებით დასრულდება. libraries/ ნუ წაშლი და ნუ გადაალაგებ - გაშვების სკრიპტი მის შიგნით არსებულ ფაილს გზით მიმართავს.
run.sh და user_jvm_args.txt#
გახსენი run.sh და დაინახავ რაღაც ამის მსგავსს:
#!/usr/bin/env sh# Add custom JVM arguments to user_jvm_args.txt# Add custom program arguments (such as nogui) before "$@"java @user_jvm_args.txt @libraries/net/neoforged/neoforge/21.1.77/unix_args.txt "$@"@file სინტაქსი Java-ს ეუბნება, რომ არგუმენტები ფაილიდან წაიკითხოს. user_jvm_args.txt შენია; unix_args.txt (ან win_args.txt) libraries/-ის შიგნით NeoForge-ს ეკუთვნის და შეიცავს module path-ს, მთავარ კლასს და დანარჩენ ყველაფერს, რაც loader-ს სჭირდება. მეორე არასოდეს შეცვალო - ის NeoForge-ის განახლებისას თავიდან გენერირდება, მისი გაფუჭება კი დაკარგულ მოდულებზე შეცდომებს იძლევა, რომელთა წაკითხვაც ძალიან რთულია.
მეხსიერება და flag-ები user_jvm_args.txt-ში მიდის, თითო ან მეტი ხაზზე. installer მას კომენტარებით სავსეს წერს და მეხსიერების ხაზს დაკომენტარებულს ტოვებს:
# Xmx and Xms set the maximum and minimum RAM usage.-Xms6G-Xmx6G-XX:+UseG1GC-XX:+ParallelRefProcEnabled-XX:MaxGCPauseMillis=200-Xmx მანქანის ან კონტეინერის მეხსიერების ლიმიტზე ნაკლები დააყენე და არა მისი ტოლი. Java heap-ის გარეთაც იყენებს მეხსიერებას - metaspace, ნაკადების სტეკები, ნატიური ბუფერები - და mod-იანი სერვერები ამას vanilla-ზე მეტად იყენებენ კლასების უზარმაზარი რაოდენობის გამო. კონტეინერზე 8 GB ლიმიტით დაახლოებით 6.5 GB heap გონივრული ჭერია. თუ heap კონტეინერს ავსებს, პროცესი გარედან კვდება, ყოველგვარი crash report-ის გარეშე.
დაამატე nogui პროგრამის არგუმენტად, რომ სერვერმა სტატუსის ფანჯრის გახსნა არ სცადოს, ან სკრიპტისთვის გადაცემით (./run.sh nogui), ან თავად სკრიპტში "$@"-მდე ჩამატებით.
პირველი ჩართვა#
პირველი გაშვება ყველაზე ნელია, რაც კი NeoForge სერვერს ოდესმე ექნება, და ის სამ რამეს აკეთებს, რაც უნდა იცოდე.
- ის EULA-ზე ჩერდება. სერვერი
eula.txt-სeula=false-ით წერს და გამოდის. შეცვალეeula=true-ზე და ისევ გაუშვი. ეს ხაზი შენი თანხმობაა Mojang-ის EULA-ზე, რის გამოც ვერცერთი installer ვერ დააყენებს მას შენს მაგივრად კითხვის გარეშე. - ის config-ებს აგენერირებს. ყოველი mod თავის ნაგულისხმევ პარამეტრებს წერს. საერთო და გაშვების პარამეტრები
config/-ში მიდის; პარამეტრები, რომლებიც სერვერს კონკრეტული სამყაროსთვის ეკუთვნის, სამყაროს საკუთარ საქაღალდეში მიდის,world/serverconfig/-ში, და სამყაროსთან ერთად იქმნება. - ის სამყაროს აგენერირებს. mod-იანი სამყარო worldgen mod-ებით გაცილებით ნელა იქმნება, ვიდრე vanilla-სი. spawn-ის chunk-ების გენერაციას დიდ პაკეტზე წუთები შეიძლება დასჭირდეს.
[main/INFO] [net.neoforged.fml.loading.moddiscovery...]: Found 142 mods[Server thread/INFO] [minecraft/MinecraftServer]: Preparing level "world"[Server thread/INFO] [minecraft/MinecraftServer]: Done (94.512s)! For help, type "help"Done ის ხაზია, რომელსაც მნიშვნელობა აქვს. სანამ ის გამოჩნდება, სერვერი ჯერ კიდევ იტვირთება, რამდენ ხანსაც არ უნდა გაგრძელდეს.
ორი ფაილი წყვეტს, საიდან მოდის სამყაროს config-ები:
- `defaultconfigs/` სერვერის ძირში შაბლონებს ინახავს. როცა ახალი სამყარო იქმნება, აქ ნაპოვნი ნებისმიერი სერვერის config სამყაროს
serverconfig/-ში კოპირდება, mod-ის ჩაშენებული ნაგულისხმევის ნაცვლად. modpack-ები ამას თავიანთი მორგებული პარამეტრების მისაწოდებლად იყენებენ. - `world/serverconfig/` იმ სამყაროს ცოცხალ ასლებს ინახავს. არსებული სამყაროსთვის ესენი შეცვალე, სერვერის გაჩერებით.
defaultconfigs/-ის შეცვლა უკვე არსებულ სამყაროზე არაფერს აკეთებს.
ეს დაყოფა კლასიკური ჩივილის წყაროა "config შევცვალე და არაფერი მოხდა": შეცვლილი ფაილი შაბლონი იყო, სამყარო კი უკვე საკუთარ ასლს იყენებდა.
mod-ები და რა უნდა ემთხვეოდეს კლიენტზე#
mod-ები mods/-ში jar ფაილებად მიდის. NeoForge მათ ყველას გაშვებისას კითხულობს, ამოწმებს თითოეულის მიერ გამოცხადებულ დამოკიდებულებებს და უარს ამბობს გაშვებაზე, თუ რომელიმე აკლია ან დიაპაზონს გარეთაა, და ასახელებს mod-ს და ვერსიას, რომელიც სურდა. ეს შეტყობინება, როგორც წესი, ნათელია; წაიკითხე, სანამ მის ძებნას დაიწყებ.
მეორე წესი მოთამაშეებს ეხება. ნებისმიერი mod, რომელიც ბლოკებს, ნივთებს, entity-ებს, განზომილებებს ან რეცეპტებს ამატებს, კლიენტზეც უნდა იყოს დაყენებული, იგივე ვერსიით. მოთამაშეებმა პაკეტი ისეთი launcher-ით უნდა მიიღონ, რომელიც ზუსტად იმას აყენებს, რაც სერვერზეა - CurseForge, Modrinth, Prism Launcher ან სერვერის მიერ მოწოდებული პაკეტი. modpack სერვერები CurseForge-იდან და Modrinth-იდან გამოქვეყნებული პაკეტის სერვერად გადაქცევას განიხილავს.
mod-ები, რომლებიც სერვერზე არ უნდა იყოს, მხოლოდ კლიენტისაა: რენდერერები, shader-ების loader-ები, მინირუკები, რომლებიც მხოლოდ ხატავენ, HUD-ისა და მენიუს mod-ები. NeoForge-ზე სერვერზე მყოფი მხოლოდ კლიენტის mod-ი, როგორც წესი, გაშვებას აგდებს ამგვარი შეტყობინებით:
java.lang.RuntimeException: Attempted to load class net/minecraft/client/...for invalid dist DEDICATED_SERVERამ ხაზის ქვემოთ stack trace პასუხისმგებელ mod-ს ასახელებს. ამოიღე ის სერვერის mods/ საქაღალდიდან და არა მოთამაშეების პაკეტებიდან. mod-იანი სერვერის გაშვება crash-ების გარეშე ამ ანგარიშების კითხვის უფრო გრძელ სახელმძღვანელოს შეიცავს.
ჰოსტინგის პანელზე გაშვება#
საკუთარ Linux მანქანაზე ./run.sh nogui-ს screen-ში, tmux-ში ან systemd სერვისში უშვებ და მორჩა. ჰოსტინგის პანელები სხვანაირია. უმეტესობა სერვერს გაშვების ბრძანებით უშვებს, რომელიც ერთ jar-ს ელოდება - რაღაც ამის მსგავსს: java -Xmx... -jar server.jar - თანამედროვე NeoForge სერვერს კი ეს jar არ აქვს.
ორი სუფთა გამოსავალია:
- გაშვების ბრძანება, რომელიც არგუმენტების ფაილებს იძახებს. თუ გაშვების ბრძანება შეიძლება დაყენდეს
java @user_jvm_args.txt @libraries/net/neoforged/neoforge/<version>/unix_args.txt nogui-ზე, სერვერი ზუსტად ისე ეშვება, როგორცrun.shგაუშვებდა. არ დაგავიწყდეს ამ გზაში ვერსიის შეცვლა ყოველ ჯერზე, როცა NeoForge-ს განაახლებ. - სერვერის starter jar. NeoForge-ის ახალ installer-ებს შეუძლიათ პატარა starter jar-ის ჩადება ჰოსტებისთვის, რომლებსაც მხოლოდ
java -jar-ის გაშვება შეუძლიათ; ის იგივე არგუმენტების ფაილებს კითხულობს და სერვერს შენ მაგივრად უშვებს. გაუშვი installer--help-ით, რომ ნახო, გთავაზობს თუ არა ამას შენი ვერსია და რა ჰქვია ოფციას.
რომელსაც არ უნდა იყენებდე, მეხსიერება ზუსტად ერთ ადგილას დააყენე. თუ პანელი საკუთარ -Xmx-ს გადასცემს და user_jvm_args.txt სხვას შეიცავს, Java იღებს იმას, რომელიც ბრძანების ხაზზე ბოლოს მოდის, შენ კი მთელ საღამოს გაატარებ იმაზე ფიქრში, რატომ არის heap არასწორი ზომის.
RE:NODE-ზე Minecraft-ის ხაზი Paper-ით და შესაბამისი Java-ს ვერსიით დგება, ასე რომ, NeoForge-ს თავად აწყობ: ატვირთე დაყენებული საქაღალდე არქივად file manager-ით (ის არქივებს ადგილზე ხსნის) ან SFTP-ით, შეამოწმე Java-ს ვერსია და jar-ი Startup ჩანართზე და გაუშვი. დაშვებული mod-ების თეთრი სია არ არსებობს და არც ერთი დაწკაპუნებით modpack-ის installer. თავად გაკეთების უპირატესობა ისაა, რომ ზუსტად იცი, NeoForge-ის რომელი build და რომელი mod-ებია სერვერზე.
პარამეტრები, რომელთა შეცვლაც mod-იან სერვერზე ღირს#
vanilla-ს რამდენიმე პარამეტრი server.properties-ში NeoForge-ზე უფრო მნიშვნელოვანია, ვიდრე Paper-ზე:
view-distance=8simulation-distance=6max-tick-time=60000allow-flight=trueთითოეულის მიზეზი:
- `view-distance` და `simulation-distance` ჩატვირთული chunk-ების რაოდენობას ამრავლებს, mod-იანი chunk-ები კი უფრო მძიმეა. დაიწყე vanilla-ზე დაბლა და გაზარდე მხოლოდ მაშინ, თუ MSPT-ს ადგილი აქვს.
- `max-tick-time` watchdog-ია: თუ ერთ tick-ს ამდენ მილიწამზე მეტი დასჭირდა, სერვერი განზრახ აგდებს საკუთარ თავს. ნაგულისხმევი
60000-ია. დიდი პაკეტები ზოგჯერ მას სამყაროს გენერაციისას ან დიდი შენახვისას ააქტიურებენ.-1watchdog-ს მთლიანად თიშავს, რაც ნამდვილ გაჭედვებს მალავს; მისი გაზრდა გამორთვაზე უკეთესია. - `allow-flight=true` ხშირია mod-იან სერვერებზე, რადგან jetpack-ები, ფრენის ბეჭდები და creative-ფრენის ნივთები vanilla-ს ფრენის საწინააღმდეგო შემოწმებისთვის ზუსტად ფრენასავით გამოიყურება, რის გამოც ის მოთამაშეს აგდებს.
წინასწარ დააგენერირე სამყარო, სანამ ხალხი მასზე ითამაშებს. worldgen mod-ები chunk-ების გენერაციას რამდენჯერმე აძვირებს, და თამაშის დროს რელიეფის გენერაციიდან მოდის mod-იან სერვერზე "შემთხვევითი" ლაგის ნახტომების უმეტესობა. Chunky NeoForge-ზე მუშაობს; სამყაროს საზღვრები და pre-generation პროცედურას შეიცავს.
NeoForge-ის განახლება და მუშაობის შენარჩუნება#
NeoForge-ის განახლება Minecraft-ის იმავე ვერსიაში ნიშნავს ახალი installer-ის გაშვებას იმავე საქაღალდეში. ის ახალ ბიბლიოთეკებს წერს და სკრიპტებს აახლებს; შენი mods/, config/, სამყარო და user_jvm_args.txt ხელუხლებელი რჩება. თუ შენი პანელის გაშვების ბრძანება libraries/-ის შიგნით ვერსიის გზაზე მიუთითებს, ის გზაც განაახლე.
უსაფრთხო თანმიმდევრობა:
- გააჩერე სერვერი და გააკეთე სამყაროს,
mods/-ის,config/-ისა დაdefaultconfigs/-ის backup ერთად. სამყარო, რომელიც mod-ების არასწორ ვერსიებთან ერთად აღდგა, აღდგენა არ არის. - ჩაიწერე ვერსიები, რომლებზეც ხარ: Minecraft, NeoForge, პაკეტი და Java.
- დააყენე NeoForge-ის ახალი build, გაუშვი ისე, რომ ონლაინ არავინ იყოს, და log-ი თავიდან წაიკითხე.
- შედი და შეამოწმე ადგილები, სადაც ხალხი აშენებდა, სანამ გამოაცხადებ.
Minecraft-ის ვერსიის შეცვლა სხვა სამუშაოა: ყოველი mod უნდა შეიცვალოს ახალი ვერსიის build-ით, და ბევრი მათგანი ჯერ არ იარსებებს. მოეპყარი მას, როგორც ახალ სერვერს, რომელსაც სამყარო მემკვიდრეობით ერგო, და ჯერ წაიკითხე Minecraft-ის ვერსიის განახლებები.
backup-ის სლოტები RE:NODE-ის ყველა Minecraft-ის გეგმაშია, ინახება იმ მანქანის გარეთ, რომელსაც იცავს, და ერთი შეიძლება როტაციისგან დაიბლოკოს, სანამ განახლებას ტესტავ. აღდგენა ერთი ღილაკია, რაც სწორედ საჭირო ძალისხმევაა იმ mod-იანი განახლების გასაუქმებლად, რომელიც ცუდად წავიდა.
FAQ#
რატომ არ არის სერვერის jar-ი NeoForge-ის დაყენების შემდეგ?
მას შემდეგ, რაც Forge-ის ხაზის loader-ები მოდულურ სისტემაზე გადავიდნენ, installer ერთი გასაშვები jar-ის ნაცვლად libraries/ ხეს და გაშვების სკრიპტებს წერს. სკრიპტები Java-ს ორ არგუმენტების ფაილს გადასცემენ, და სწორედ ეს უშვებს სერვერს. გამოიყენე სკრიპტები, ეკვივალენტური გაშვების ბრძანება ან სერვერის starter jar.
შემიძლია Forge-ის mod-ები NeoForge სერვერზე ჩავდო?
1.20.1-ზე უმეტესად კი, რადგან ამ ვერსიისთვის NeoForge Forge-თან ძალიან ახლოსაა. 1.20.2-დან - არა: ორი loader დაშორდა ერთმანეთს და mod-ს NeoForge-ის build სჭირდება. 1.20.5-დან Forge-ის mod-ს NeoForge mod-ადაც კი ვერ ცნობს.
რამდენი მეხსიერება სჭირდება NeoForge სერვერს?
მსუბუქ პაკეტს 50-დან 100 mod-მდე, მცირე ჯგუფისთვის, როგორც წესი, 4-დან 6 GB-მდე heap ჰყოფნის. დიდ "ყველაფრიან" პაკეტებს რამდენიმე ასეული mod-ით ხშირად 8 GB ან მეტი სჭირდებათ. რამდენი RAM სჭირდება Minecraft სერვერს დეტალებს შეიცავს; heap-სა და კონტეინერის ლიმიტს შორის მარაგი ყოველთვის დატოვე.
შეუძლიათ vanilla-ს მოთამაშეებს NeoForge სერვერზე შესვლა?
მხოლოდ იმ შემთხვევაში, თუ სერვერზე ყოველი mod სერვერულია და კლიენტზე არაფერს მოითხოვს. როგორც კი mod-ი კონტენტს დაამატებს, vanilla-ს კლიენტებს უარი ეთქმებათ. პრაქტიკაში NeoForge სერვერზე შესაბამისი modpack-ით თამაშობენ.
სად შევცვალო mod-ის პარამეტრები ჩემი სამყაროსთვის?
world/serverconfig/-ში იმ პარამეტრებისთვის, რომლებიც სერვერს ეკუთვნის, და config/-ში საერთოებისთვის, სერვერის გაჩერებით. defaultconfigs/-ის ფაილები მხოლოდ ახალი სამყაროს შექმნისას მოქმედებს.




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