1
1
Java program to create a server pack from a given Forge or Fabric Minecraft modpack. https://www.griefed.de/#/serverpackcreator
Go to file
2024-03-31 18:48:35 +02:00
.github ci: Add job to update sponsors and contributors 2024-02-17 15:03:29 +01:00
.runConfigurations improv: Fix, rework and improve webservice 2024-01-27 12:50:16 +01:00
buildSrc build: Stop using own maven repo. Not necessary, no benefit. 2024-02-06 20:38:47 +01:00
gradle/wrapper build: Move to Java 21 2023-12-01 19:28:20 +01:00
img chore: Add Writerside to README 2024-02-11 14:48:17 +01:00
licenses docs: Update license report and docs 2024-02-13 21:50:19 +01:00
manifests improv: Fix, rework and improve webservice 2024-01-27 12:50:16 +01:00
misc chore: Info about pre-release installers 2023-10-08 21:21:54 +02:00
root chore: Run file cleanup 30 min after database cleanup by default 2024-02-03 18:32:08 +01:00
serverpackcreator-api chore: Add macos-input-fixes- to ApiProperties 2024-03-31 18:48:35 +02:00
serverpackcreator-app build: Include correctly 2024-01-28 13:01:02 +01:00
serverpackcreator-cli build: Move i18n to singular source 2024-01-27 15:45:23 +01:00
serverpackcreator-gui fix: Allow repeated viewing of step-by-step guide 2024-03-21 19:52:37 +01:00
serverpackcreator-help/Writerside docs: Remove old sqlite references 2024-02-19 18:52:35 +01:00
serverpackcreator-plugin-example improv: Fix, rework and improve webservice 2024-01-27 12:50:16 +01:00
serverpackcreator-updater build: Move i18n to singular source 2024-01-27 15:45:23 +01:00
serverpackcreator-web fix: Correct ordering of NeoForge versions and usage in web-frontend 2024-02-24 22:13:19 +01:00
serverpackcreator-web-frontend fix: Correct ordering of NeoForge versions and usage in web-frontend 2024-02-24 22:13:19 +01:00
.dockerignore improv: Fix, rework and improve webservice 2024-01-27 12:50:16 +01:00
.editorconfig milestone: Migrate to Kotlin, Multimodule, SPC API Kotlin Multiplatform preparations, JDK 17 2023-02-28 21:12:25 +01:00
.gitignore chore: Ignores, doc updates, cleanups 2024-01-28 12:12:35 +01:00
.gitlab-ci.yml ci: Add README Update to Documentation stage 2024-02-17 15:10:22 +01:00
.releaserc.yml ci: Generate patch-release on improvement 2023-12-03 14:50:23 +01:00
build.gradle.kts build: Stop using own maven repo. Not necessary, no benefit. 2024-02-06 20:38:47 +01:00
CHANGELOG.md RELEASE: 5.1.19 2024-03-28 18:35:57 +00:00
CODE_OF_CONDUCT.md Create CODE_OF_CONDUCT.md 2021-05-08 21:16:35 +02:00
CONTRIBUTING.md docs: Disclaimers, rearrangements and proper placement 2024-02-12 18:58:17 +01:00
docker-compose-dev.yml fix: Hopefully fix container not booting up correctly 2024-01-27 23:24:05 +01:00
docker-compose.yml chore: Ignores, doc updates, cleanups 2024-01-28 12:12:35 +01:00
Dockerfile docs: Replace old wiki links with new dedicated help-site 2024-02-10 23:35:31 +01:00
Dockerfile.help docs: REST API docs via Writerside 2024-02-10 22:49:01 +01:00
gradle.properties build: Move to Java 21 2023-12-01 19:28:20 +01:00
gradlew build: Move to Java 21 2023-12-01 19:28:20 +01:00
gradlew.bat build: Update to gradle 8.3 2023-09-21 21:31:17 +02:00
HELP.md docs: Remove old sqlite references 2024-02-19 18:52:35 +01:00
LICENSE improv: Fix, rework and improve webservice 2024-01-27 12:50:16 +01:00
qodana.yaml chore: Replace Java 17 remnants with 21 2024-02-06 20:16:27 +01:00
README.md docs: Disclaimers, rearrangements and proper placement 2024-02-12 18:58:17 +01:00
renovate.json chore(RenovateBot): Set commit type to deps 2022-08-26 11:46:26 +02:00
SECURITY.md docs: REST API docs via Writerside 2024-02-10 22:49:01 +01:00
settings.gradle.kts chore: Fix Gradle deprecation warnings and upgrade to Gradle 8.0.2 2023-03-05 12:01:49 +01:00

banner

Homepage Blog Fleet GitHub DockerHub Discord


For questions, you can always join my Discord server and talk to me there.

This repository is a mirror of https://git.griefed.de/Griefed/ServerPackCreator, mainly used for issue reporting and release distribution.


Latest Release) GitHub

ServerPackCreator creates a server pack from any given Forge, Fabric, Quilt, LegacyFabric and NeoForge modpack.

Whenever you are working on an update to your modpack, you simply run ServerPackCreator and BAM! You've got yourself a server pack for your new modpack version.

ServerPackCreator is a passion project on which I am working in my spare time. It is also the main reason for why I got into programming in the first place. Patience with issues and support is appreciated!

I started getting into Java programming in February 2021, when I was working on an update for one of my Minecraft modpacks, Survive Create Prosper 4, and got tired and bored with manually creating a server pack everytime I wanted to update and test something, or just release a new server pack for the new modpack version.

The thought "There must be a way to automate this, or at least make it less tedious..." was the spark which sent me off into the world of programming. And here we are.

Disclaimer:

  • ServerPackCreator is not a guarantee for working server packs. It helps you create them, but you must still test them!
  • You are still expected to be knowledgeable about your modpack, server packs in general, server administration and managing your Java installations. ServerPackCreator is not intended to take all the work off your shoulders!
  • When using alpha, beta or in-dev version of ServerPackCreator, it is advised to make a backup of your ServerPackCreator-directory in your home-directory.
  • Things will break with alpha releases, stuff may break when using beta releases.
  • If you distribute server packs generated with a pre-release (alpha, beta) of ServerPackCreator, you do so at your own risk.
  • I will not be held responsible for errors in your server pack caused by you using a pre-release.
  • I will not be held responsible for errors in your server pack in general. Test your server packs before you ship them!
  • TL;DR: Don't use test to ship to prod! Test before shipping!

Pre-Releases:

There are two kinds of pre-releases: Alphas and Betas

  • Alphas: Missing features, incomplete features, almost guaranteed to have bugs / errors
  • Betas: Feature complete, probably contains bugs / errors

Screenshots

CLI GUI WEB
cli gui dark web

Advantages/Disadvantages of CLI, GUI and WEB:

Each way of using ServerPackCreator has its advantages and disadvantages. Depending on your environment, it may be better to use one way over the other. This section highlights some of the advantages and disadvantages of each version to help you decide which way you are going to use. Note: All three ways are supported by the .jar-file. Which one is started depends on the CLI arguments used and your environment.

CLI:

Advantages Disadvantages
No need for a graphical environment. Can be used on a server to generate a server pack for immediate use. Gathering of information for a configuration file is tedious.
Step-by-Step generation of a configuration-file with the use of the -cgen argument. Generated config will be used immediately afterwards. No convenience features file folder-browsing or jumping to the generated server pack after generation.
Load and edit an existing configuration. Editing is limited to base values of a given configuration. Not editable via CLI are script settings as well as any potentially installed plugin configuration. Debugging in case of a broken/erroring configuration file can be time consuming. Careful reading of logs is required.
Manual editing of the configuration-file in case you want to change it.
Unable to edit start script placeholders and variables

GUI:

Advantages Disadvantages
Browse the filesystem for folders and file required by the configuration. Requires a graphical environment.
Setting up a configuration by browsing the filesystem and selecting your Minecraft and modloader versions from a list.
Browsing the generated server pack after generation has finished.
Loading and saving different configurations for quick generation of multiple server packs in short succession.
Edit the configuration in the GUI. No manual file-editing required.
Edit start script placeholders and values

WEB:

Advantages Disadvantages
No software installation on clients required Requires a server with sufficient space
Easy access via web-browser Requires server-administration knowledge for setup and control
Quickly share mod- and server packs with friends / colleagues No custom script templates
Multiple server packs for the same modpack No custom server icons
Re-use configurations No custom server-properties
No custom server pack suffix
No custom script variables or values
No custom inclusions or exclusions

1. Small feature overview

  1. Exclude clientside-only mods
    • Automatically by letting ServerPackCreator scan the mods of your modpack for their sideness
    • Manually by configuring a list mods which ServerPackCreator will filter out according to your input and the chosen filter.
  2. Add files and directories in your server pack.
    • Files and directories in your modpack
    • Files and directories from your computer
  3. Add a server icon
    • Server icons are automatically scaled down, or up, to 64x64!
    • Specify a custom one, or use a default provided by ServerPackCreator.
      • Change the default to your liking if you intend on using the same icon across multiple server packs!
  4. Add a server.properties
    • Ship your server pack with default settings!
    • Specify a custom one, or use a default provided by ServerPackCreator.
      • Change the default to your liking if you intend on using the same icon across multiple server packs!
  5. Many modloaders supported
    • Forge
    • Fabric
    • LegacyFabric
    • Quilt
    • NeoForge
  6. Use Minecraft snapshots and pre-releases
    • Per default, only regular releases enabled
  7. Let ServerPackCreator install the modloader-server for your server pack, for immediate testing and debugging after generation!
  8. Let ServerPackCreator generate a ZIP-archive, for immediate upload to places like CurseForge (after you've tested your server pack, of course 😉)
  9. Configure commandline arguments with which to start the Minecraft server
    • Does your modpack require a lot of RAM? Well, tell ServerPackCreator to create the start scripts with -Xms8G -Xmx8G or similar values!
    • Aikars flags are available, too. If you like 'em, use 'em.
  10. Create your own start-script templates
    • Add additional functionality to your servers start scripts
    • Use placeholders in your templates, to be replaced with custom values
      • Example: placeholder SPC_FLYNN_LIVES_SPC in the templates can be replaced with a value configured on a per-server pack basis, i.e Now that's a big door
  11. Plugins!
    • ServerPackCreator allows you to use plugins to add new features in various places.
    • An example plugins is available with every release, and the source code for it can be found in this repository, at Example Plugin

2. Issues and help

3. How To

The first time you start ServerPackCreator, you will be asked whether you want to see a small step-by-step guide. Said guide will show you the most important parts in configuring your server pack.

Should you at any point want to revisit said guide, simply hit About -> Step-By-Step Guide in the menu at the top.

4. Java

Required:

  • Using the JAR-file release requires Java 21.
  • Working internet connection recommended.

The installers ship their own Java installations.

ATTENTION: I can not and will not guarantee that ServerPackCreator will work flawlessly with any other Java version other than version 21. Things may break at random, at any place, if a different Java version is used. You are welcome to try and use any other version, but do not report issues back to me if you do encounter problems when running ServerPackCreator with a more recent Java version.

5 Running

  1. If you've used the installer to acquire ServerPackCreator, use the shortcut created by the installer to run ServerPackCreator. The installers provide their own Java runtime, so you do not need to install Java separately.
  2. If you've downloaded the JAR-file, and depending on how your Java installation is set up, you may be able to simply run the JAR via double-click or other methods, or you may need to run it from the commandline.

There are a couple of arguments which may or may not be helpful for you, depending on how you plan on using ServerPackCreator:

Argument Description
-help Print ServerPackCreators help to commandline.
-update Check whether a newer version of ServerPackCreator is available.
-cgen Run ServerPackCreators configuration generation.
-cli Run ServerPackCreator in commandline-mode. If no graphical environment is supported, this is the default ServerPackCreator will enter, even when starting ServerPackCreator with no extra arguments at all.
-web Run ServerPackCreator as a webservice. The webservice will be reworked in version 6.
-gui Run ServerPackCreator with our GUI. If a graphical environment is supported, this is the default ServerPackCreator will enter, even when starting ServerPackCreator with no extra arguments at all.
--setup Set up and prepare the environment for subsequent runs of ServerPackCreator. This will create/copy all files needed for ServerPackCreator to function properly from inside its JAR-file and setup everything else, too.

5.1 Running ServerPackCreator as a webservice

DISCLAIMER

There is no publicly available instance of ServerPackCreators webservice due to security concerns with the ability to upload zip-archives. If you want to make use of the webservice, you will have to host your own instance. As such, you are advised to not make your instance of the webservice of ServerPackCreator publicly accessible.

ZIP-archives uploaded by anonymous people may contain illegal or otherwise dangerous data, which could corrupt your system or get you into legal trouble.

If you want to open your webservice-instance to the public, make sure to properly protect it by putting it behind required authorization.

5.1.1 JAR

  1. Download the JAR-file from the latest release
  2. Run it once, using the -web argument. ServerPackCreator will crash, complaining about JDBC-related things. This is expected, don't worry.
  3. Browser to the now generated ServerPackCreator home-directory
    1. Unsure where said home-directory is? Check the logs for Home directory set to:!
  4. Install / setup / provide a PostgreSQL-database for ServerPackCreator. See PostgreSQL Installation Tutorial
  5. Set the database-properties in the serverpackcreator.properties according to your database
    1. spring.datasource.password=
    2. spring.datasource.url=
      1. Example:jdbc\:postgresql\://localhost\:5432/serverpackcreator
    3. spring.datasource.username=
  6. Run ServerPackCreator, using the -web-argument, again
  7. Browse to http://localhost:8080
5.1.1.1 Tweaking the webservice

You may edit the following properties inside the serverpackcreator.properties if you wish to change some parts of the webservice-behaviour:

Property Description
de.griefed.serverpackcreator.spring.schedules.database.cleanup Time when the database-cleanup operations run.
de.griefed.serverpackcreator.spring.schedules.files.cleanup Time when the filesystem-cleanup operations run.
de.griefed.serverpackcreator.spring.schedules.versions.refresh Time when the version-refresh operation runs.
spring.servlet.multipart.max-file-size In combination with the property below, this sets the maximum upload size of modpacks.
spring.servlet.multipart.max-request-size See above.
de.griefed.serverpackcreator.configuration.directories.mustinclude Directories which must be included in a server pack, if they are present in a modpack.
de.griefed.serverpackcreator.configuration.directories.shouldexclude Directories which should be excluded from a server pack.
de.griefed.serverpackcreator.configuration.fallback.updateurl URL to a .properties-file which contains definitions for clientside-only mods.
de.griefed.serverpackcreator.serverpack.autodiscovery.enabled Whether ServerPackCreator should try to automatically excluded clientside-mods, in addition to the list of excluded clientside-mods.
de.griefed.serverpackcreator.serverpack.autodiscovery.filter Filter method used to exclude mods from the clientside-only list. Possible values are START, END, CONTAIN, REGEX, EITHER
de.griefed.serverpackcreator.serverpack.zip.exclude Files or directories which should be excluded from a server pack archive.
de.griefed.serverpackcreator.serverpack.zip.exclude.enabled Whether files should be excluded from a server pack archive.
server.port The port at which the webservice will be available at. Default is 8080.

The recommended, and easiest, way to deploy ServerPackCreator as a webservice is via docker and docker-compose.

Available images can be viewed at https://hub.docker.com/r/griefed/serverpackcreator/tags

About Tags: The example below makes use of the latest-tag. However, using said tag is not recommended, as there may be breaking changes between versions. When setting up ServerPackCreator as a webservice for production, make sure to not use latest and instead use the tag corresponding to the, at this point, latest available release version available.

You must replace <YOUR_DB_USERNAME> and <YOUR_DB_PASSWORD> accordingly.

version: '3'
services:
  serverpackcreatordb:
    container_name: serverpackcreatordb
    image: postgres:16.1
    restart: unless-stopped
    environment:
      POSTGRES_DB: serverpackcreator
      POSTGRES_USER: <YOUR_DB_USERNAME>
      POSTGRES_PASSWORD: <YOUR_DB_PASSWORD>
    volumes:
      - ./database:/var/lib/postgresql/data
  serverpackcreator:
    container_name: serverpackcreator
    image: griefed/serverpackcreator:latest # For a list of available tags, see https://hub.docker.com/r/griefed/serverpackcreator/tags
    restart: unless-stopped
    depends_on:
      - serverpackcreatordb
    environment:
      - TZ=Europe/Berlin # Your timezone
      - PUID=1000 # Your user ID
      - PGID=1000 # Your group ID
      - SPC_DATABASE_PASSWORD=<YOUR_DB_PASSWORD>
      - SPC_DATABASE_USERNAME=<YOUR_DB_USERNAME>
      - SPC_DATABASE_HOST=serverpackcreatordb  # Do not change this unless you absolutely know what you are doing.
      - SPC_DATABASE_PORT=5432  # Do not change this unless you absolutely know what you are doing.
      - SPC_DATABASE_DB=serverpackcreator # Do not change this unless you absolutely know what you are doing.
    ports:
      - "8080:8080" # Port at which SPC will be available at on your host : Port of the webservice inside the container. Only change the left value, it at all.
    volumes:
      - ./modpacks:/app/serverpackcreator/modpacks # Path at which modpacks from the container will be stored at on your host : Path to the modpacks in the container. Only change the left value, if at all.
      - ./server-packs:/app/serverpackcreator/server-packs # Path at which server packs from the container will be stored at on your host : Path to the server packs in the container. Only change the left value, if at all.
      - ./logs:/app/serverpackcreator/logs # Path at which logs from the container will be stored at on your host : Path to the logs in the container. Only change the left value, if at all.
5.1.2.1 Tweaking the docker deployment

You may edit the following container-properties if you wish to change some parts of the webservice-behaviour:

Property Description
SPC_SCHEDULE_DATABASE_CLEANUP Time when the database-cleanup operations run.
SPC_SCHEDULE_FILES_CLEANUP Time when the filesystem-cleanup operations run.
SPC_SCHEDULE_VERSIONS_REFRESH Time when the version-refresh operation runs.
SPC_MAX_UPLOAD_SIZE This sets the maximum upload size of modpacks.
SPC_CONFIGURATION_DIRECTORIES_MUSTINCLUDE Directories which must be included in a server pack, if they are present in a modpack.
SPC_CONFIGURATION_DIRECTORIES_SHOULDEXCLUDE Directories which should be excluded from a server pack.
SPC_CONFIGURATION_FALLBACK_UPDATEURL URL to a .properties-file which contains definitions for clientside-only mods.
SPC_SERVERPACK_AUTODISCOVERY_ENABLED Whether ServerPackCreator should try to automatically excluded clientside-mods, in addition to the list of excluded clientside-mods.
SPC_SERVERPACK_AUTODISCOVERY_FILTER Filter method used to exclude mods from the clientside-only list. Possible values are START, END, CONTAIN, REGEX, EITHER
SPC_SERVERPACK_ZIP_EXCLUDE Files or directories which should be excluded from a server pack archive.
SPC_SERVERPACK_ZIP_EXCLUDE_ENABLED Whether files should be excluded from a server pack archive.

6. Awesomesauce!

None of this would have been possible without the excellent IDEs by JetBrains. They have kindly provided this open source project with an All Products Pack license. Additionally, ej-Technologies has provided an open-source license for JProfiler and install4j for ServerPackCreator, which allows me to resolve performance bottlenecks, pin down memory leaks and understand threading issues, as well as generated fancy high-end installers. Huge shoutout and thank you!

JetBrains IntelliJ IDEA WebStorm Writerside YouTrack JProfiler install4j
JetBrains IntelliJ IDEA WebStorm Writerside YouTrack JProfiler
JProfiler
install4j
install4j

Starting from version 6.x, ServerPackCreator will sport fancy new installers made possible by ej-technologies' install4j.


Thanks to all of my Supporters and Sponsors


7. Libraries and Licenses

This project would not be possible without these awesome groups, creators and developers and their wonderful libraries they have kindly provided to people such as me.