@@ -243,6 +243,41 @@ private function addCoreOptions()
243243 'startup ' => null ,
244244 'script_install ' => $ script ,
245245 ]);
246+
247+ $ script = <<<'EOF'
248+ #!/bin/ash
249+ # Forge Installation Script
250+ #
251+ # Server Files: /mnt/server
252+ apk update
253+ apk add curl openjdk8
254+
255+ FUCK_FORGE_NOT_HAVING_A_GOOD_WAY_TO_GET_VERSIONS=$(curl -sl http://files.minecraftforge.net/maven/net/minecraftforge/forge/ | grep -A1 Latest | grep -o -e '[1]\.[0-9][0-9] - [0-9][0-9]\.[0-9][0-9]\.[0-9]\.[0-9][0-9][0-9][0-9]')
256+ LATEST_VERSION=$(echo $FUCK_FORGE_NOT_HAVING_A_GOOD_WAY_TO_GET_VERSIONS | sed 's/ //g')
257+
258+ cd /mnt/server
259+
260+ curl -sS http://files.minecraftforge.net/maven/net/minecraftforge/forge/$LATEST_VERSION/forge-$LATEST_VERSION-installer.jar -o installer.jar
261+ curl -sS http://files.minecraftforge.net/maven/net/minecraftforge/forge/$LATEST_VERSION/forge-$LATEST_VERSION-universal.jar -o server.jar
262+
263+ java -jar installer.jar --installServer
264+ EOF;
265+
266+ $ this ->option ['forge ' ] = ServiceOption::updateOrCreate ([
267+ 'service_id ' => $ this ->service ->id ,
268+ 'tag ' => 'forge ' ,
269+ ], [
270+ 'name ' => 'Forge Minecraft ' ,
271+ 'description ' => 'Minecraft Forge Server. Minecraft Forge is a modding API (Application Programming Interface), which makes it easier to create mods, and also make sure mods are compatible with each other. ' ,
272+ 'docker_image ' => 'quay.io/pterodactyl/core:java ' ,
273+ 'config_startup ' => '{"done": ")! For help, type ", "userInteraction": [ "Go to eula.txt for more info."]} ' ,
274+ 'config_logs ' => '{"custom": false, "location": "logs/latest.log"} ' ,
275+ 'config_files ' => '{"server.properties":{"parser": "properties", "find":{"server-ip": "0.0.0.0", "enable-query": "true", "server-port": "{{server.build.default.port}}", "query.port": "{{server.build.default.port}}"}}} ' ,
276+ 'config_stop ' => 'stop ' ,
277+ 'config_from ' => null ,
278+ 'startup ' => 'java -Xms128M -Xmx{{SERVER_MEMORY}}M -jar {{SERVER_JARFILE}} ' ,
279+ 'script_install ' => $ script ,
280+ ]);
246281 }
247282
248283 private function addVariables ()
@@ -251,6 +286,7 @@ private function addVariables()
251286 $ this ->addSpigotVariables ();
252287 $ this ->addSpongeVariables ();
253288 $ this ->addBungeecordVariables ();
289+ $ this ->addForgeVariables ();
254290 }
255291
256292 private function addVanillaVariables ()
@@ -372,4 +408,20 @@ private function addBungeecordVariables()
372408 'rules ' => 'required|regex:/^([\w\d._-]+)(\.jar)$/ ' ,
373409 ]);
374410 }
411+
412+ private function addForgeVariables ()
413+ {
414+ ServiceVariable::updateOrCreate ([
415+ 'option_id ' => $ this ->option ['forge ' ]->id ,
416+ 'env_variable ' => 'SERVER_JARFILE ' ,
417+ ], [
418+ 'name ' => 'Server Jar File ' ,
419+ 'description ' => 'The name of the Jarfile to use when running Forge Mod. ' ,
420+ 'default_value ' => 'server.jar ' ,
421+ 'user_viewable ' => 1 ,
422+ 'user_editable ' => 1 ,
423+ 'rules ' => 'required|regex:/^([\w\d._-]+)(\.jar)$/ ' ,
424+ ]);
425+ }
426+
375427}
0 commit comments