RE:NODE

Minecraft11 წუთის საკითხავი

NeoForge სერვერის აწყობა: დაყენებიდან ჩართვამდე

დააყენე NeoForge Minecraft სერვერი ნაბიჯ-ნაბიჯ: installer, run.sh და user_jvm_args.txt, Java-ს ვერსიები, პირველი ჩართვა, config-ები და შეცდომები, რომლებსაც წააწყდები.

0 მკითხველი

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-ის რომელი ვერსიისთვისაა აწყობილი:

MinecraftNeoForge-ის ვერსიაJava
1.20.147.1.x (Forge-ის სტილის ნომრები)17
1.20.220.2.x17
1.20.420.4.x17
1.2121.0.x21
1.21.121.1.x21
1.21.421.4.x21

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 და ინტერნეტ-კავშირი სჭირდება, და ცარიელ საქაღალდეში უნდა გაეშვას.

bash
$ 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.loginstaller-ის log-ი, სასარგებლოა, თუ რამე ჩავარდა

installer jar-ისა და მისი log-ის წაშლა შეგიძლია, როცა ინსტალაცია წარმატებით დასრულდება. libraries/ ნუ წაშლი და ნუ გადაალაგებ - გაშვების სკრიპტი მის შიგნით არსებულ ფაილს გზით მიმართავს.

run.sh და user_jvm_args.txt#

გახსენი run.sh და დაინახავ რაღაც ამის მსგავსს:

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 მას კომენტარებით სავსეს წერს და მეხსიერების ხაზს დაკომენტარებულს ტოვებს:

user_jvm_args.txt
# 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 სერვერს ოდესმე ექნება, და ის სამ რამეს აკეთებს, რაც უნდა იცოდე.

  1. ის EULA-ზე ჩერდება. სერვერი eula.txt-ს eula=false-ით წერს და გამოდის. შეცვალე eula=true-ზე და ისევ გაუშვი. ეს ხაზი შენი თანხმობაა Mojang-ის EULA-ზე, რის გამოც ვერცერთი installer ვერ დააყენებს მას შენს მაგივრად კითხვის გარეშე.
  2. ის config-ებს აგენერირებს. ყოველი mod თავის ნაგულისხმევ პარამეტრებს წერს. საერთო და გაშვების პარამეტრები config/-ში მიდის; პარამეტრები, რომლებიც სერვერს კონკრეტული სამყაროსთვის ეკუთვნის, სამყაროს საკუთარ საქაღალდეში მიდის, world/serverconfig/-ში, და სამყაროსთან ერთად იქმნება.
  3. ის სამყაროს აგენერირებს. mod-იანი სამყარო worldgen mod-ებით გაცილებით ნელა იქმნება, ვიდრე vanilla-სი. spawn-ის chunk-ების გენერაციას დიდ პაკეტზე წუთები შეიძლება დასჭირდეს.
code
[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-ი, როგორც წესი, გაშვებას აგდებს ამგვარი შეტყობინებით:

code
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-ზე:

server.properties
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-ია. დიდი პაკეტები ზოგჯერ მას სამყაროს გენერაციისას ან დიდი შენახვისას ააქტიურებენ. -1 watchdog-ს მთლიანად თიშავს, რაც ნამდვილ გაჭედვებს მალავს; მისი გაზრდა გამორთვაზე უკეთესია.
  • `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/-ის შიგნით ვერსიის გზაზე მიუთითებს, ის გზაც განაახლე.

უსაფრთხო თანმიმდევრობა:

  1. გააჩერე სერვერი და გააკეთე სამყაროს, mods/-ის, config/-ისა და defaultconfigs/-ის backup ერთად. სამყარო, რომელიც mod-ების არასწორ ვერსიებთან ერთად აღდგა, აღდგენა არ არის.
  2. ჩაიწერე ვერსიები, რომლებზეც ხარ: Minecraft, NeoForge, პაკეტი და Java.
  3. დააყენე NeoForge-ის ახალი build, გაუშვი ისე, რომ ონლაინ არავინ იყოს, და log-ი თავიდან წაიკითხე.
  4. შედი და შეამოწმე ადგილები, სადაც ხალხი აშენებდა, სანამ გამოაცხადებ.

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-ის გარეშე. ინახება მხოლოდ სახელი, ტექსტი და დრო - სხვა არაფერი. ბმულების რაოდენობა ლიმიტირებულია.

0/2000