2U1C1D3
Anmeldungsdatum: 20. Februar 2011
Beiträge: 346
Wohnort: Amberg
|
Hallo zusammen! Eigentlich bin ich ja mittlerweile raus aus dem Ding mit dem Zocken - bei mir war Call of Duty 2 noch up-to-date 😬 Aber meinen Kids zu liebe habe ich mich jetzt auf das Abenteuer "Minecraft-Server" eingelassen. Zunächst hatte ich einfach nur den Server auf einem RaspberryPi installiert. Dann stiegen jedoch die Anforderungen. Da musste jetzt noch TeamSpeak dazu und zu guter Letzt auch noch Forge. Und genau da klemmts... Ich finde im www genügend Anleitungen wie auf einen bestehenden Minecraft-Server Forge draufgesetzt werden kann. Irgendwann kommt dann der Punkt bei dem es heißt, dass der Server mit
| java -Xms...M -Xmx...M -jar ~/forge/forge-1.Versionhaumichtot.jar nogui
|
gestartet werden soll. Dat gibt es aber bei 1.17.1 nimmer.... Es gibt stattdessen eine "run.sh" mit dem Inhalt
| #!/usr/bin/env sh
# Forge requires a configured set of both JVM and program arguments.
# Add custom JVM arguments to the user_jvm_args.txt
# Add custom program arguments {such as nogui} to this file in the next line before the "$@" or
# pass them to this script directly
java @user_jvm_args.txt @libraries/net/minecraftforge/forge/1.17.1-37.0.73/unix_args.txt "$@"
|
Diese verweist wie man sehen kann auf die "user_jvm_args.txt" in der die Attribute mit dem Speicher stehen:
| # Xmx and Xms set the maximum and minimum RAM usage, respectively.
# They can take any number, followed by an M or a G.
# M means Megabyte, G means Gigabyte.
# For example, to set the maximum to 3GB: -Xmx3G
# To set the minimum to 2.5GB: -Xms2500M
# A good default for a modded server is 4GB.
# Uncomment the next line to set it.
# -Xmx4G
|
Und auf die "unix_args.txt" aus der ich mal gar nicht schlau werde:
1
2
3
4
5
6
7
8
9
10
11
12
13 | -p libraries/cpw/mods/bootstraplauncher/0.1.17/bootstraplauncher-0.1.17.jar:libraries/cpw/mods/securejarhandler/0.9.46/securejarhandler-0.9.46.jar:libraries/org/ow2/asm/asm-commons/9.1/asm-commons-9.1.jar:libraries/org/ow2/asm/asm-util/9.1/asm-util-9.1.jar:libraries/org/ow2/asm/asm-analysis/9.1/asm-analysis-9.1.jar:libraries/org/ow2/asm/asm-tree/9.1/asm-tree-9.1.jar:libraries/org/ow2/asm/asm/9.1/asm-9.1.jar
--add-modules ALL-MODULE-PATH
--add-opens java.base/java.util.jar=cpw.mods.securejarhandler
--add-exports java.base/sun.security.util=cpw.mods.securejarhandler
-DignoreList=bootstraplauncher-0.1.17.jar,securejarhandler-0.9.46.jar,asm-commons-9.1.jar,asm-util-9.1.jar,asm-analysis-9.1.jar,asm-tree-9.1.jar,asm-9.1.jar
-DlibraryDirectory=libraries
-DlegacyClassPath=libraries/cpw/mods/securejarhandler/0.9.46/securejarhandler-0.9.46.jar:libraries/org/ow2/asm/asm/9.1/asm-9.1.jar:libraries/org/ow2/asm/asm-commons/9.1/asm-commons-9.1.jar:libraries/org/ow2/asm/asm-tree/9.1/asm-tree-9.1.jar:libraries/org/ow2/asm/asm-util/9.1/asm-util-9.1.jar:libraries/org/ow2/asm/asm-analysis/9.1/asm-analysis-9.1.jar:libraries/net/minecraftforge/accesstransformers/8.0.4/accesstransformers-8.0.4.jar:libraries/org/antlr/antlr4-runtime/4.9.1/antlr4-runtime-4.9.1.jar:libraries/net/minecraftforge/eventbus/5.0.3/eventbus-5.0.3.jar:libraries/net/minecraftforge/forgespi/4.0.9/forgespi-4.0.9.jar:libraries/net/minecraftforge/coremods/5.0.1/coremods-5.0.1.jar:libraries/cpw/mods/modlauncher/9.0.7/modlauncher-9.0.7.jar:libraries/net/minecraftforge/unsafe/0.2.0/unsafe-0.2.0.jar:libraries/com/electronwill/night-config/core/3.6.3/core-3.6.3.jar:libraries/com/electronwill/night-config/toml/3.6.3/toml-3.6.3.jar:libraries/org/apache/maven/maven-artifact/3.6.3/maven-artifact-3.6.3.jar:libraries/org/apache/commons/commons-lang3/3.8.1/commons-lang3-3.8.1.jar:libraries/net/jodah/typetools/0.8.3/typetools-0.8.3.jar:libraries/org/apache/logging/log4j/log4j-api/2.14.1/log4j-api-2.14.1.jar:libraries/org/apache/logging/log4j/log4j-core/2.14.1/log4j-core-2.14.1.jar:libraries/net/minecrell/terminalconsoleappender/1.2.0/terminalconsoleappender-1.2.0.jar:libraries/org/jline/jline-reader/3.12.1/jline-reader-3.12.1.jar:libraries/org/jline/jline-terminal/3.12.1/jline-terminal-3.12.1.jar:libraries/net/sf/jopt-simple/jopt-simple/5.0.4/jopt-simple-5.0.4.jar:libraries/org/spongepowered/mixin/0.8.4/mixin-0.8.4.jar:libraries/org/openjdk/nashorn/nashorn-core/15.3/nashorn-core-15.3.jar:libraries/com/google/guava/guava/21.0/guava-21.0.jar:libraries/com/google/code/gson/gson/2.8.0/gson-2.8.0.jar:libraries/net/minecraftforge/fmlloader/1.17.1-37.0.73/fmlloader-1.17.1-37.0.73.jar:libraries/net/minecraft/server/1.17.1-20210706.113038/server-1.17.1-20210706.113038-extra.jar
cpw.mods.bootstraplauncher.BootstrapLauncher
--launchTarget forgeserver
--fml.forgeVersion 37.0.73
--fml.mcVersion 1.17.1
--fml.forgeGroup net.minecraftforge
--fml.mcpVersion 20210706.113038
|
Während ich für die ursprüngliche Installation des originalen Minecraft-Servers ohne weiteres ein Script "minecraft.service" anlegen konnte und dies beim Systemstart / Reboot automatisch ausführen lassen konnte, haut das mit dem "run.sh" nicht hin. Es startet stets der originale Server, nicht aber forge.
Und wenn ich mir den Pfad aus der run.sh herausnehme und mit den konventionellen Attributen im Script arbeite, also hier in dem Fall mit
| java -Xms...M -Xmx...M -jar irgeneinpfad/forge-1.17.1-37.0.73.jar nogui
|
mach ich ne Bauchlandung, weil es diese Datei nirgendwo auf dem System gibt. Auch den Pfad "@libraries/net/minecraftforge/forge/1.17.1-37.0.73/unix_args.txt" finde ich nicht - die unix_args.txt liegt bei mir im Installationsordner in dem ich die run.sh ausführe... Wie bekomme ich nun nach erfolgter Installation den Start des Forge-Servers hin (im Zusammenhang mit der Installationsausführung startet er, danach aber nicht mehr), wie bekomme ich den Forge-Server in den Autostart und, so nebenbei, auch wenn hier OT, wie bekomme ich eine Änderung des gammods nach der Installation hin? Ihr würdet nicht nur mich, sondern auch meine Kids glücklich machen! 😎 Danke!
|
haveaproblem
Anmeldungsdatum: 2. Januar 2015
Beiträge: 1141
|
Also ich habe mal versucht dein Problem nachzustellen und mir ist aufgefallen, dass forge ja per default via gui startet. Die gibt es bei dir wahrscheinlich nicht, aber die nogui Option lässt sich trotzdem recht einfach verwenden. Einfach die run.sh bearbeiten und nogui vor das "$@" setzen. Also so:
java @user_jvm_args.txt @libraries/net/minecraftforge/forge/1.17.1-37.0.73/unix_args.txt nogui "$@"
Damit dann probieren ob das ausführen der run.sh den Server startet und dann weiter mit Experimentieren wie man das automatisch startet. Im Zweifel den Minecraft server vor dem ausführen der run.sh beenden, nicht das sich da was behindert. Für deinen OT Teil, in der Datei server.properties lässt sich der Gamemode anpassen. Vermutlich besser für deine Kids ist es aber, dass du in der Datei das op-permission-level auf 2 oder 1 hochsetzt. In der Datei ops.json kannst du dann die Minecraft Nutzernamen deiner Kinder eintragen und dann sind sie auf dem Server "Operator", mit fast allen Berechtigungen. Heißt sie dürfen auf dem Server die Minecraft Konsole mit sämtlichen Befehlen benutzen, darunter gibt es auch den Gamemode Befehl, der ein flüssiges wechseln zwischen den Spielmodie für einen Spieler erlaubt. OT:2U1C1D3 schrieb:
Aber meinen Kids zu liebe habe ich mich jetzt auf das Abenteuer "Minecraft-Server" eingelassen. Zunächst hatte ich einfach nur den Server auf einem RaspberryPi installiert. Dann stiegen jedoch die Anforderungen. Da musste jetzt noch TeamSpeak dazu und zu guter Letzt auch noch Forge. Und genau da klemmts...
TS3 gibt es noch? :O Also eigentlich ist Discord da "der neue geile Scheiß", wobei über deren Privatsphäre Einstellungen reden wir mal nicht und laut den AGB muss man wie auch bei WhatsApp mindestens 14 sein, für eine Anmeldung.
|
2U1C1D3
(Themenstarter)
Anmeldungsdatum: 20. Februar 2011
Beiträge: 346
Wohnort: Amberg
|
Hallo haveaproblem! Tut mir leid, die Option "nogui" habe ich vergessen im Codeblock. Ich hab da copy&paste aus ner txt-Datei gemacht in der ich mir ein bisschen was abgespeichert habe. Nogui ist natürlich drinnen! Sonst ginge gar nichts - nicht mal der erste Start und der funktioniert ja. Die Änderung des gammods in der server.properties wird bei mir nicht übernommen. Nur bei der Installation des Standardservers. Sobald forge installiert ist, kann ich da einsetzen was ich will. Und die Datei op.json interessiert den Serverstart auch recht wenig. Ich sag's mal umgekehrt, wenn ein Spieler von mir (aus der Konsole im Spiel heraus) in die Whitelist eingetragen wird, oder zum OP gemacht wird, dann müsste der Spieler ja auch in der Datei zu finden sein. Fehlanzeige - weder die Whitelist-Datei, noch die OP-Datei werden angegangen. Mir kommt das fast so vor, als würde die Forgeinstallation aus irgendeinem anderen Verzeichnis starten. Ich habe den Standardserver sowohl direkt (also aus dem Download von Minecraft heraus) installiert gehabt, als auch mit dem Script von James A. Chambers. Auch wenn ich keinen Autostart anlege, bzw. bei der Installation über's Script diesen wieder deaktiviere, kommt es mir so vor, als würde forge den Standardserver starten. Für was stehen denn eigentlich die "@" in
| @libraries/net/minecraftforge/forge/1.17.1-37.0.73/unix_args.txt nogui "$@"
|
Vielleicht hilft mir das dann ja weiter... Zum Thema TeamSpeak: Den kann ich wenigstens ganz von der Außenwelt abtrennen - das geht mit DIS nicht... Da brauch ich immer ein bisschen Lauscher nach draußen.
|
haveaproblem
Anmeldungsdatum: 2. Januar 2015
Beiträge: 1141
|
Hmmm, das ist alles sehr merkwürdig. Durch das "$@" werden alle vorigen Parameter an die shell gegeben und ausgeführt. Also in deinem Fall alles was in den beiden Textdateien drin steht und nogui. Poste mal den output von der run.sh wenn du sie manuell ausführst. Und nur um einen Anwenderfehler auszuschließen, deine Kids greifen auch über den Forge Client auf den Server zu? Über den normalen geht das AFAIK nicht. OT: Weil ich irgendwie bei der kleinen Diskussion über VOIP apps an mumble denken musste. Das gibt es auch als mod für forge, damit hat man dann den Client in MC integriert, der Server setup von Mumble (bzw. Mumur) ist auch denkbar einfach.
|
2U1C1D3
(Themenstarter)
Anmeldungsdatum: 20. Februar 2011
Beiträge: 346
Wohnort: Amberg
|
Ok, also etz habe ich den Server mal komplett neu aufgesetzt. Den Minecraft-Standardserver nur installiert und einmalig ausgeführt. Keinen Autostart angelegt. Danach den Forge-Server installiert. Beim Serverstart über die run.sh kommt (screen jetzt mal weg gelassen):
sh run.sh
[23:27:55] [main/INFO]: ModLauncher running: args [--launchTarget, forgeserver, --fml.forgeVersion, 37.0.75, --fml.mcVersion, 1.17.1, --fml.forgeGroup, net.minecraftforge, --fml.mcpVersion, 20210706.113038, nogui]
[23:27:55] [main/INFO]: ModLauncher 9.0.7+91+master.8569cdf starting: java version 17 by Private Build
[23:27:55] [main/INFO]: SpongePowered MIXIN Subsystem Version=0.8.4 Source=union:/home/stefan/libraries/org/spongepowered/mixin/0.8.4/mixin-0.8.4.jar%2318! Service=ModLauncher Env=SERVER
[23:27:55] [main/INFO]: Found mod file fmlcore-1.17.1-37.0.75.jar of type LIBRARY with locator net.minecraftforge.fml.loading.moddiscovery.MinecraftLocator@3a3e4aff
[23:27:55] [main/INFO]: Found mod file javafmllanguage-1.17.1-37.0.75.jar of type LANGPROVIDER with locator net.minecraftforge.fml.loading.moddiscovery.MinecraftLocator@3a3e4aff
[23:27:55] [main/INFO]: Found mod file mclanguage-1.17.1-37.0.75.jar of type LANGPROVIDER with locator net.minecraftforge.fml.loading.moddiscovery.MinecraftLocator@3a3e4aff
[23:27:55] [main/INFO]: Found mod file server-1.17.1-20210706.113038-srg.jar of type MOD with locator net.minecraftforge.fml.loading.moddiscovery.MinecraftLocator@3a3e4aff
[23:27:55] [main/INFO]: Found mod file forge-1.17.1-37.0.75-universal.jar of type MOD with locator net.minecraftforge.fml.loading.moddiscovery.MinecraftLocator@3a3e4aff
[23:27:57] [main/INFO]: Launching target 'forgeserver' with arguments [nogui]
SLF4J: No SLF4J providers were found.
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#noProviders for further details.
[23:28:04] [modloading-worker-0/INFO]: Forge mod loading, version 37.0.75, for MC 1.17.1 with MCP 20210706.113038
[23:28:04] [modloading-worker-0/INFO]: MinecraftForge v37.0.75 Initialized
[23:28:05] [Forge Version Check/INFO]: [forge] Starting version check at https://files.minecraftforge.net/net/minecraftforge/forge/promotions_slim.json
[23:28:06] [Forge Version Check/INFO]: [forge] Found status: BETA Current: 37.0.75 Target: 37.0.75
[23:28:09] [main/INFO]: Environment: authHost='https://authserver.mojang.com', accountsHost='https://api.mojang.com', sessionHost='https://sessionserver.mojang.com', servicesHost='https://api.minecraftservices.com', name='PROD'
[23:28:09] [main/WARN]: Assets URL 'union:/home/stefan/libraries/net/minecraft/server/1.17.1-20210706.113038/server-1.17.1-20210706.113038-srg.jar%2325!/assets/.mcassetsroot' uses unexpected schema
[23:28:09] [main/WARN]: Assets URL 'union:/home/stefan/libraries/net/minecraft/server/1.17.1-20210706.113038/server-1.17.1-20210706.113038-srg.jar%2325!/data/.mcassetsroot' uses unexpected schema
[23:28:10] [main/WARN]: Ambiguity between arguments [teleport, location] and [teleport, destination] with inputs: [0.1 -0.5 .9, 0 0 0]
[23:28:10] [main/WARN]: Ambiguity between arguments [teleport, location] and [teleport, targets] with inputs: [0.1 -0.5 .9, 0 0 0]
[23:28:10] [main/WARN]: Ambiguity between arguments [teleport, destination] and [teleport, targets] with inputs: [Player, 0123, @e, dd12be42-52a9-4a91-a8a1-11c01849e498]
[23:28:10] [main/WARN]: Ambiguity between arguments [teleport, targets] and [teleport, destination] with inputs: [Player, 0123, dd12be42-52a9-4a91-a8a1-11c01849e498]
[23:28:10] [main/WARN]: Ambiguity between arguments [teleport, targets, location] and [teleport, targets, destination] with inputs: [0.1 -0.5 .9, 0 0 0]
[23:28:10] [main/INFO]: Reloading ResourceManager: Default, forge-1.17.1-37.0.75-universal.jar
[23:28:11] [Worker-Main-5/INFO]: Loaded 7 recipes
[23:28:13] [Worker-Main-5/INFO]: Loaded 1137 advancements
[23:28:14] [main/INFO]: Injecting existing registry data into this CLIENT instance
[23:28:15] [Server thread/INFO]: Starting minecraft server version 1.17.1
[23:28:15] [Server thread/INFO]: Loading properties
[23:28:15] [Server thread/INFO]: Default game type: CREATIVE
[23:28:15] [Server thread/INFO]: Generating keypair
[23:28:16] [Server thread/INFO]: Starting Minecraft server on *:25565
[23:28:16] [Server thread/INFO]: Using epoll channel type
[23:28:16] [Server thread/INFO]: Preparing level "world"
[23:28:16] [Server thread/INFO]: Preparing start region for dimension minecraft:overworld
[23:28:17] [Worker-Main-6/INFO]: Preparing spawn area: 0%
...
[23:28:30] [Worker-Main-4/INFO]: Preparing spawn area: 95%
[23:28:30] [Server thread/INFO]: Time elapsed: 14315 ms
[23:28:30] [Server thread/INFO]: Done (14.575s)! For help, type "help"
Der Server wird jetzt einwandfrei vom Client als forge erkannt. Ich vermute fast, dass ich beim Autostart Mist gebaut habe. Mit meiner "forge.service" startet der den Server nämlich gar nicht.
Hast Du eine Ahnung wie ich die run.sh zusammen mit screen in nem Autostart-Dienst verwenden muss?
|
haveaproblem
Anmeldungsdatum: 2. Januar 2015
Beiträge: 1141
|
Schon mal bei systemd geschaut, was die Fehlermeldung ist, weswegen er den Service nicht startet? Ansonsten mal ohne Screen probieren und Service Type sollte natürlich "oneshot" sein und der Nutzer muss natürlich auch korrekt gesetzt werden.
|
2U1C1D3
(Themenstarter)
Anmeldungsdatum: 20. Februar 2011
Beiträge: 346
Wohnort: Amberg
|
So, das ist meine forge.service:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 | [Unit]
Description=Forge Server
After=network.target network-online.target
[Service]
User=stefan
Group=stefan
Type=forking
WorkingDirectory=/home/stefan
ExecStart=screen /home/stefan/run.sh
ExecReload=screen /home/stefan/run.sh
RestartSec=30
Restart=always
[Install]
WantedBy=multi-user.target
|
Ich finde im Internet keine vernünftige Doku wie so eine Datei aufgebaut sein muss. Ja, man findet unter Units einiges dazu und ich diversen Anleitungen. Aber was im Detail was macht, bzw. wie der Befehl genau auszusehen hat, ist immernoch nicht schlüssig. Ich habe jetzt das Ergebnis in der forge.service, welches mir keine Fehlermeldungen auswirft. Screen muss anscheinend mit drinnen sein, weil ohne screen der forge nicht startet. Der braucht anscheinend entweder ne SSH-Verbindung oder die virtuelle Konsole. EDIT: Eine Frage noch zu "oneshot" und "forking" (hab jetzt beides ausprobiert, funzt beides nicht): Ich wäre nie auf auf den Typ oneshot gekommen, weil der Service ja ein anderes Script aufruft und startet. Und dieses Script startet ja wiederum eine Java-Anwendung...
|
haveaproblem
Anmeldungsdatum: 2. Januar 2015
Beiträge: 1141
|
Also ich verweise hier einfach mal auf die Offizielle Doku. Zu deiner ExecStart Zeile, ich würde die so machen: ExectStart=sh -c ' screen -d -m java @user_jvm_args.txt @libraries/net/minecraftforge/forge/1.17.1-37.0.74/unix_args.txt nogui "$@" ' Wenn das nicht klappt obwohl ja die working directory korrekt gesetzt ist, dann ExectStart=sh -c ' cd /home/stefan; screen -d -m java @user_jvm_args.txt @libraries/net/minecraftforge/forge/1.17.1-37.0.74/unix_args.txt nogui "$@" ' Die ExecReload Zeile auch anpassen und am besten noch ein kill einbauchen, um die Anwendung vorher sicher zu Terminieren (Es reicht den screen Prozess zu beenden, java schließt sich dann kurz danach). Ist natürlich auch zu beachten, dass die Pfade stimmen, die Dateien "libraries/.../unix_args.text" und "user_jvm_args.txt", müssen auch im Homeverzeichnis liegen, bzw. im "Working Directory", also da wo das Kommando ausgeführt wird, Standard Pfad ist ja eigentlich $HOME/.minecraft. Bei "oneshot" vs "forking" hast du eigentlich recht, ich benutze Persönlich aber nur ersteres, dabei nicht vergessen RemainAfterExit=yes zu setzen und die Reload Parameter funktionieren damit nicht. Mit
systemctl status forge.service
findest du eventuell raus wo es hakt. Kannst auch einen manuellen start für eine Fehlermeldung probieren: systemctl start forge.service
|
2U1C1D3
(Themenstarter)
Anmeldungsdatum: 20. Februar 2011
Beiträge: 346
Wohnort: Amberg
|
Suuuuper, vielen Dank für Deine Hilfe!!!
ExecStart=sh -c ' screen -d -m java @user_jvm_args.txt @libraries/net/minecraftforge/forge/1.17.1-37.0.74/unix_args.txt nogui "$@" '
"ExecStart" ohne "t" und die Version xxx.75 statt xxx.74 haben es gebracht! Die von Dir verlinkte Hilfe hatte ich bereits mehrmals "in der Reiß'n". Allerdings wie soll ich auf die Idee kommen mit "-c" und dem Bestandteil aus der run.sh?
Ich hab da stets mit der run.sh selbst versucht - schließlich funktioniert der manuelle Start damit ja auch! Wie gesagt, vielen herzlichen Dank!
Bin glücklich und meine Kids auch ☺
|