1
1
Fork 0
Java program to create a server pack from a given Forge or Fabric Minecraft modpack. https://www.griefed.de/#/serverpackcreator
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 
Griefed 4150c32667
Merge branch 'main' into develop
3 days ago
.github Update dependencies 2 weeks ago
.gitlab Merge branch 'beta' 5 months ago
.jpb Merge branch 'beta' 5 months ago
.runConfigurations refactor(Application Plugins): Indent listing of installed addons/plugins and add example plugins for testing 3 weeks ago
backend refactor(ConfigurationHandler): Refactor isZip to improve readibility. Move Json util methods to own utilities class. 3 days ago
frontend Merge branch 'renovate-eslint-8.x' into 'main' 3 days ago
gradle/wrapper chore(deps): update dependency gradle to v7.5 4 days ago
img Minor refactorings in the VersionMeta 1 month ago
root Merge branch 'beta' 5 months ago
.dockerignore other: Supply build file for DockerWSL so I can test the build locally as well 1 year ago
.editorconfig chore(Encoding): UTF-8 ALL ZE FILES!!!11!1 2 months ago
.gitignore Note to self - Don't try to use DI in unit tests, or singletons, OR ANYTHING ELSE THAT WOULD MAKE MY LIFE EASIER... 2 weeks ago
.gitlab-ci.yml Merge branch 'renovate-jetbrains-qodana-jvm-community-2022.x' into 'main' 3 days ago
.releaserc.yml Merge branch 'beta' 5 months ago
CHANGELOG.md RELEASE: 3.10.2 3 days ago
CODE_OF_CONDUCT.md Create CODE_OF_CONDUCT.md 1 year ago
CONTRIBUTING.md Merge branch 'beta' 5 months ago
Dockerfile chore(deps): update dependency ghcr.io/griefed/baseimage-ubuntu-jdk-8 to v2.0.12 4 days ago
LICENSE docs: Change license to GNU 2.1 1 year ago
Project.xml style(Google Java Format): Apply Google Java format to sources, reformat and optimize imports. Add editorconfig and project config 2 months ago
README.md feat(Quilt Modloader Support): Fully fledged Quilt support! Including start scripts, modloader server installation, automated clientside-only mod exclusions and webservice support! Please delete your `lang/lang_en_us.properties`-file to receive language updates. 2 months ago
build.gradle Merge branch 'renovate-junit5-monorepo' into 'main' 3 days ago
gradle.properties Merge branch 'beta' 5 months ago
gradlew chore(deps): update dependency gradle to v7.5 4 days ago
gradlew.bat chore(deps): update dependency gradle to v7.5 4 days ago
qodana.yaml no message 2 weeks ago
renovate.json Merge branch 'beta' 5 months ago
settings.gradle Merge branch 'beta' 5 months ago

README.md

banner

Homepage Blog Fleet GitHub DockerHub Discord


Sources, GitHub, GitLab and Mirroring and all that good stuff

Repositories on GitHub are now for issues only. I've set up my own installation of GitLab and moved all my repositories over to Git.Griefed.de. Make sure to check there first for the latest code before opening an issue on GitHub.

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

This repository is available at:

GitHub release (latest by date including pre-releases) GitHub GitHub all releases Docker Pulls GitHub Repo stars GitHub forks GitHub contributors

ServerPackCreator is a Java-program which creates a server pack from any given Forge, Fabric or Quilt modpack. Customize the configuration to your liking and off you go. 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.

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.

[[TOC]]

Screenshots

Commandline Interface (CLI)

Windows Linux Mac
CLI Win CLI Linux CLI Mac
CLI Win Menu CLI Linux Menu CLI Mac Menu

Graphical User Interface (GUI)

Windows Linux Mac
GUI Light GUI Light GUI Light
GUI Dark GUI Dark GUI Dark

Webservice

Light mode Dark mode
Light Configuration Dark Configuration
Light Downloads Dark Downloads

Advantages/Disadvantages of CLI, GUI and Webservice:

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.
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.

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.

Webservice:

Advantages Disadvantages
No installation/setup required if a public instance is available somewhere. Requires someone to setup a publicly accessible instance.
Voting system to let users indicate whether a generated server pack works. Requires somewhat modern browser versions.
Open REST API. Interaction with the webservice does not require a browser. You can request a server pack generation and/or download from the CLI. Not all browers may be supported.

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 for ServerPackCreator, which allows me to resolve performance bottlenecks, pin down memory leaks and understand threading issues. Huge shoutout and thank you!

JetBrains IntelliJ IDEA WebStorm JProfiler
JetBrains IntelliJ IDEA WebStorm ej-Technologies
JProfiler

Thanks to all of my Supporters and Sponsors


1. Known issues and help

  • A list of known issues can be found in Known Issues.

  • If you want to report an issue, please make sure to follow the templates on GitHub and provide as much information as detailed as possible. The more information and details you provide for your issue at hand, the easier it is for me to investigate it!

  • A wiki article containing useful hints, tips & tricks about, for and with ServerPackCreator can be found on my Wiki's ServerPackCreator Help page

2. Features

  1. Generate a config step-by-step by running with argument-cgen
  2. Install a Forge, Fabric or Quilt modloader server in your server pack
  3. Configurable list of clientside-only mods to not include your server pack
    1. ServerPackCreator will automatically try and detect as many clientside-only mods as possible and exclude them.
  4. Configurable list of directories from your modpack to include in your server pack
    1. Copy saves. Specify saves/world and it will result in the world being copied to your_server_pack/world.
    2. Copy specific files. Specify source/path/to/some.file;some/folder/destination.file and source/path/to/some.file will be copied to some/folder/destination.file inside the server pack.
    3. Exclude files and directories. Prefixing an entry with ! or adding it to de.griefed.serverpackcreator.configuration.copydirs.exclude= in serverpackcreator.properties will result in that file or directory not being copied to the server pack.
    4. Lazy-Mode. Only specify lazy_mode and nothing else, and the whole modpack you specified will be copied to the server pack. Be warned though that configurations using this will receive no support from me. If the generated server pack errors, it is up to you to fix it.
  5. Generate Forge, Fabric or Quilt start-scripts in your server pack
    1. Specify JVM flags / Java Args for your start scripts!
  6. Include a server-icon.png-file in your server pack
    1. Replace the file in server-files with your own!
  7. Include a server.properties-file in your server pack
    1. Replace the file in server-files with your own!
  8. Create a ZIP-archive of your server pack
  9. GUI to fully configure and run ServerPackCreator
    1. Load existing config.
    2. Browse local filesystem to select modpack directory, clientside-only mods, directories to include in server pack, Java executable/binary.
    3. Logs from last run in separate tabs.
    4. Set a suffix for the server pack to be generated.
    5. And much more!
  10. Webservice
    1. Generate a server pack from zipped up modpacks.
    2. All generated server packs available for download to everyone.
  11. Addons!
    1. Users can provide addons which will be executed after the generation of a server pack. Add them to the addons-directory.
    2. Example addon at ServerPackCreatorExampleAddon

3. Versions

Consider major version incompatible to each other. Meaning, configs from 1.x.x are incompatible with version 2.x.x etc.

Version mask Description
1.x.x CLI only
2.x.x CLI and GUI. To continue to use it in CLI-mode, start it with the -cli argument. Note that -cgen is exclusive to CLI and not supported by the GUI. The ´.exe` executable is GUI exclusive.
3.x.x CLI, GUI, Webservice. Same as with 2.x.x but with -web-argument added. Use -web to start ServerPackCreator as a webservice which will be available at http://localhost:8080

3.1 Java versions

ServerPackCreator is develop with Java 8, ServerPackCreator is guaranteed to work with that version.

Users have reported the following Java versions to also work with ServerPackCreator. A list of these can be found at the Wiki help section

ATTENTION: I can not and will not guarantee that ServerPackCreator will work flawlessly with any other Java version other than version 8. 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.

4. Addons

4.1 Why

There are things which people want to do with their server packs which could most certainly be automated. Some of those things so special, or maybe out of place, that they would not warrant a separate feature for ServerPackCreator itself.

It may also be that it is such a niche feature, that I either don't have the time to code it in, or simply don't want to. Maybe it doesn't fit into the overall design of ServerPackCreator, too. Who knows, it could be any of those reasons or another.

Hence, the addon functionality!

This allows people to write their own addons to expand the functionality of ServerPackCreator with their own features as they see fit or want.

For documentation about Pf4j, visit the Pf4j documentation

4.2 Adding your own

How to get your own addon into this list:

If you have written your own addon or plugin for ServerPackCreator and you would like to see it added here, please open an issue over at ServerPackCreatoron GitHub, using the Documentation template.

For an addon to be accepted, you must at least provide:

  • The name of the repository, and therefore the addon.
  • The owner of the repository, and therefore the addon.
  • The branch of the repository where the main code resides in.
  • A description of the plugin or addon.

A curated list of officially acknowledged addons/plugins can be found at addons.griefed.de (redirects to GitHub Pages)

4.3 Examples for potential addons

Some examples for potential addons can be found in this discussion thread.

Some excerpts:

  1. Changelog generator, by @TheButterbrotMan at [Feature request]: Changelog generator #198

    • A changelog generator that checks the differences to the previous version and generates a changelog.
  2. Bundle Adoptium Java with server packs, by @kreezxil at [Feature request]: Bundle Adoptium Java #199

    • Because modpacks need one of the either Java 8, 16, or 17, it would be nice to have the corresponding https://adoptium.net java prebundled with the server pack.
  3. Automatic setup of a server pack for BlueMap

    • Check all mods in the specified modpacks mods-directory for textures, and if any are found, add the mod to BlueMap's resourcepack folder config/bluemap/resourcepacks, install BlueMap for the specified Minecraft and Forge/Fabric version and voilà!

5. Configuration

After the first run, ServerPackCreator will generate a couple of template-files in a directory called server_files in the directory the ServerPackCreator resides in. Inside it are files you can customize, so they suit your modpack and server pack: 2. server-icon.png 3. server.properties

If you wish to re-generate the default-files, simply delete any one of the previously mentioned files, run ServerPackCreator again, and the new template-file(s) will be generated in server_files

Running ServerPackCreator.jar with the -cli-argument will guide you through the generation of a config-file, should none exist. Alternatively, run ServerPackCreator with the -cgen argument to create a new config file. Should you be using ServerPackCreator.exe, the default/template-files will be generated automatically, if they do not exist yet. An example for a fully configured serverpackcreator.conf can be viewed here. Detailed list of all template files:

File Description
serverpackcreator.conf Configuration file for customization. See serverpackcreator.conf.
server.properties Configuration file for the Minecraft server. See server.properties.
server-icon.png Icon which is displayed in the server browser in Minecraft. See server-icon.png.

The serverpackcreator.conf file allows you to customize a couple of different things:

Variable Description
modpackDir The path to the directory/ZIP-archive where your modpack resides in.
clientMods List of client-side only mods which are to be deleted from the serverpack. You only need to specify the beginning of the filename up, but excluding, the version number. ServerPackCreator checks whether any of the mods which are copied from the modpack to the serverpack start with any strings in this list and, if there's a match, deletes that file from the serverpack. Check out the example for an idea of how it's supposed to look.
copyDirs List for directories which are to be copied to the serverpack. If you specify a world from the saves-directory, ServerPackCreator will copy the the specified world to the base directory of the serverpack. In other words, /saves/MyAwesomeWorld becomes /MyAwesomeWorld.
includeServerInstallation Whether to install a Forge, Fabric or Quilt server for the serverpack. Must be true or false.
javaPath Path to the Java Installation. On Linux systems use which java to find the location of your Java install. On Windows use where java and exclude the .exe-part.
minecraftVersion The version of Minecraft for which to install the modloader server. The same version of Minecraft your modpack uses.
modLoader Which modloader to install. Must be either "Forge", "Fabric" or "Quilt". The same modloader your modpack uses.
modLoaderVersion Specific Modloader version to install the server in the serverpack. The same version your modpack uses.
includeServerIcon Whether to include server-icon.png in your serverpack. Must be true or false.
includeServerProperties Whether to include server.properties in your serverpack. Must be true or false.
includeZipCreation Whether to create a zip-file of your serverpack, saved in the directory you specified with modpackDir. Must be true or false.
javaArgs JVM flags / Java Args to add to the generated start-scripts. Set to "empty" to not use any in your start-scripts.
serverPackSuffix A suffix to append to the name of the server pack directory and server pack ZIP-archive. Illegal characters are / < > : " \ | ? * # % & { } $ ! ' @ + ´ ` = and must not end with a SPACE or a DOT .
serverIconPath Path to a custom server-icon.png-file to include in the server pack.
serverPropertiesPath Path to a custom server.properties-file to include in the server pack.

After checking the configuration, run ServerPackCreator again, and it'll do it's magic.

5.1 Properties

5.1.1 Default serverpackcreator.properties

de.griefed.serverpackcreator.versioncheck.prerelease=false
de.griefed.serverpackcreator.language=en_us
# Do NOT edit de.griefed.serverpackcreator.configuration.fallbackmodslist MANUALLY. You can update this from the menu in the GUI. 
de.griefed.serverpackcreator.configuration.fallbackmodslist=3dSkinLayers-,AdvancementPlaques-,AmbientSounds_,armorchroma-,backtools-,BetterAdvancements-,BetterAnimationsCollection-,BetterDarkMode-,BetterF3-,BetterF3-,BetterFoliage-,BetterPingDisplay-,BetterPlacement-,Blur-,catalogue-,cherishedworlds-,classicbar-,clickadv-,ClientTweaks_,configured-,Controlling-,CraftPresence-,CTM-,customdiscordrpc-,CustomMainMenu-,DefaultOptions_,defaultoptions-,desiredservers-,Ding-,drippyloadingscreen_,drippyloadingscreen-,Durability101-,dynamic-music-,DynamicSurroundings-,DynamicSurroundingsHuds-,dynmus-,EiraMoticons_,eiramoticons-,EnchantmentDescriptions-,EquipmentCompare-,extremesoundmuffler-,extremeSoundMuffler-,Fallingleaves-,fallingleaves-,fancymenu_,findme-,flickerfix-,FpsReducer-,FullscreenWindowed-,InventoryEssentials_,InventorySpam-,InventoryTweaks-,invtweaks-,ItemBorders-,itemzoom,itlt-,jeed-,jehc-,jeiintegration_,JEITweaker-,just-enough-harvestcraft-,justenoughbeacons-,JustEnoughCalculation-,JustEnoughProfessions-,JustEnoughProfessions-,JustEnoughResources-,keywizard-,konkrete_,lazydfu-,LegendaryTooltips-,light-overlay-,LightOverlay-,LLOverlayReloaded-,loadmyresources_,lootbeams-,mcbindtype-,medievalmusic-,modnametooltip_,modnametooltip-,moreoverlays-,MouseTweaks-,multihotbar-,MyServerIsCompatible-,Neat ,NotifMod-,OldJavaWarning-,OptiFine,OptiForge,ornaments-,overloadedarmorbar-,PackMenu-,PickUpNotifier-,Ping-,preciseblockplacing-,presencefootsteps-,PresenceFootsteps-,ReAuth-,ResourceLoader-,shutupexperimentalsettings-,SimpleDiscordRichPresence-,smoothboot-,sounddeviceoptions-,SpawnerFix-,spoticraft-,tconplanner-,timestamps-,Tips-,TipTheScales-,Toast Control-,Toast-Control-,ToastControl-,torchoptimizer-,torohealth-,toughnessbar-,TravelersTitles-,WindowedFullscreen-,WorldNameRandomizer-,yisthereautojump-
de.griefed.serverpackcreator.configuration.hastebinserver=https://haste.zneix.eu/documents
de.griefed.serverpackcreator.serverpack.autodiscoverenabled=true
de.griefed.serverpackcreator.gui.darkmode=true
de.griefed.serverpackcreator.configuration.directories.serverpacks=server-packs
de.griefed.serverpackcreator.curseforge.cleanup.enabled=true
de.griefed.serverpackcreator.serverpack.cleanup.enabled=true
de.griefed.serverpackcreator.serverpack.overwrite.enabled=true
de.griefed.serverpackcreator.configuration.directories.shouldexclude=overrides,packmenu,resourcepacks,server_pack,fancymenu
de.griefed.serverpackcreator.spring.cursecontroller.regenerate.enabled=false
de.griefed.serverpackcreator.spring.schedules.database.cleanup=0 0 0 * * *
de.griefed.serverpackcreator.spring.schedules.files.cleanup=0 0 0 * * *
de.griefed.serverpackcreator.spring.schedules.versions.refresh=0 0 0 * * *
de.griefed.serverpackcreator.spring.artemis.queue.max_disk_usage=90
de.griefed.serverpackcreator.configuration.saveloadedconfig=false
de.griefed.serverpackcreator.configuration.directories.mustinclude=mods,config,defaultconfigs,scripts,saves,seeds,libraries
Property Description
de.griefed.serverpackcreator.versioncheck.prerelease true or false. Whether to check for available pre-releases, too, when checking for updates.
de.griefed.serverpackcreator.language The language in which ServerPackCreator should run.
de.griefed.serverpackcreator.configuration.fallbackmodslist Comma separated fallback-list of clientside-only mods. Do NOT edit de.griefed.serverpackcreator.configuration.fallbackmodslist MANUALLY. You can update this from the menu in the GUI.
de.griefed.serverpackcreator.configuration.hastebinserver Address of a HasteBin server to use for config and logs uploading.
de.griefed.serverpackcreator.serverpack.autodiscoverenabled true or false. Whether to try and determine sideness of mods in a modpack automatically.
de.griefed.serverpackcreator.gui.darkmode GUI-only. true or false. Whether to use dark-mode in the GUI.
de.griefed.serverpackcreator.configuration.directories.serverpacks The directory in which server packs will be generated and stored in.
de.griefed.serverpackcreator.curseforge.cleanup.enabled true or false. Whether to cleanup files after generating a server pack from a CurseForge project.
de.griefed.serverpackcreator.serverpack.cleanup.enabled true or false. Whether to cleanup files after generating a server pack.
de.griefed.serverpackcreator.serverpack.overwrite.enabled true or false. Whether an already existing server pack should be overwritten.
de.griefed.serverpackcreator.configuration.directories.shouldexclude List of directories which should not be in a server pack.
de.griefed.serverpackcreator.spring.cursecontroller.regenerate.enabled true or false. Web only. Whether regeneration of an already available CurseForge project server pack is allowed/enabled.
de.griefed.serverpackcreator.spring.schedules.database.cleanup Web-only. Cron-schedule at which checks are run and server packs cleaned up.
de.griefed.serverpackcreator.spring.schedules.files.cleanup Web-only. Cron-schedule at which checks are run and files from server pack generations are cleaned up.
de.griefed.serverpackcreator.spring.schedules.versions.refresh Web-only. Cron-schedule at which the available Minecraft, Forge and Fabric versions are refreshed.
de.griefed.serverpackcreator.spring.artemis.queue.max_disk_usage Web-only. Maximum disk usage in percent at which no new tasks are accepted, preventing the generation of new server packs.
de.griefed.serverpackcreator.configuration.saveloadedconfig GUI-only. true or false. Whether to overwrite the last manually loaded configuration file, too.
de.griefed.serverpackcreator.configuration.directories.mustinclude List of directories which must be included in a server pack.

5.1.2 Default application.properties

application.properties

server.port=8080
server.error.whitelabel.enabled=false
server.tomcat.basedir=.
server.tomcat.accesslog.enabled=true
server.tomcat.accesslog.directory=logs
server.tomcat.accesslog.file-date-format=_yyyy-MM-dd
server.tomcat.accesslog.prefix=tomcat_access
server.tomcat.accesslog.suffix=.log
server.tomcat.accesslog.pattern=common
spring.output.ansi.enabled=ALWAYS
server.error.include-message=ALWAYS
server.error.include-stacktrace=ALWAYS
spring.application.name=ServerPackCreator
spring.datasource.url=jdbc:sqlite:serverpackcreator.db
spring.datasource.driver-class-name=org.sqlite.JDBC
spring.jpa.hibernate.ddl-auto=update
spring.jpa.database-platform=org.sqlite.hibernate.dialect.SQLiteDialect
spring.jpa.open-in-view=false
spring.jdbc.template.query-timeout=3600
spring.transaction.default-timeout=3600
spring.artemis.mode=embedded
spring.artemis.embedded.persistent=true
spring.artemis.embedded.data-directory=work/artemis
spring.datasource.tomcat.max-active=50
spring.datasource.tomcat.max-idle=15
spring.datasource.tomcat.min-idle=8
spring.servlet.multipart.max-file-size=500MB
spring.servlet.multipart.max-request-size=500MB
spring.config.import=optional:file:./serverpackcreator.properties

If a property above has no description in the table below, it is not to be touched. Changing any of these can break ServerPackCreator or cause otherwise unwanted behaviour. Changes to properties not described below are not supported. If you changed a property you were not meant to fiddle around with, do not report an issue. Such issues will be closed without further comment.

Property Description
server.port The port at which ServerPackCreator as a webservice will be available at.
spring.datasource.url Path to and name of the SQLite database which the webservice will use.
spring.artemis.embedded.data-directory The path to and name of the directory in which Artemis will store queues and task related information.
spring.servlet.multipart.max-file-size Maximum filesize for uploads.
spring.servlet.multipart.max-request-size Maximum request size for file uploads.
spring.config.import Additional properties-file to import properties from.

6. Running

In every situation, the .jar-file needs to be run from the commandline. Executing it via "Open with..." and selecting Java will not work. To use the GUI, for example, simply run java -jar ServerPackCreator-2.x.x.jar. The .exe can be executed as usual by simply double-clicking it and is GUI exclusive. It only works in Windows, though. Please keep that in mind.

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.
-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.

6.1 Localization

If you wish to run ServerPackCreator with your locale (if it is already supported), you can either:

  1. Run java -jar ServerPackCreator-X.X.X.jar -lang your_locale for example java -jar ServerPackCreator-X.X.X.jar -lang en_us. This will create the lang.properties-file with your specified locale.
  2. Running java -jar ServerPackCreator-x.x.x.jar without -lang en_us or any other language will set the locale to en_us by default and create the lang.properties-file.
  3. Modify the serverpackcreator.properties-file in the same directory as ServerPackCreator-X-X-X.jar and set your locale like this lang=your_locale for example lang=en_us

6.2 Using ServerPackCreator

Detailed How-To guides are available at my wiki!

Make sure to give them a read if you are just getting started with ServerPackCreator, or you need some help.

6.3 Docker

Tags Description
latest Using the latest tag will pull the latest image for linux/amd64,linux/arm/v7,linux/arm64.
develop The latest image of, if existent, the in-dev version of this container. Use at your own risk!

When running as a docker container, there are a couple more settings you need to be aware of:

Variable Description
TZ The timezone your system operates in. Default "Europe/Berlin"
PUID The userID under which this container is run as. Important for file access and permissions. Run cat /etc/passwd | grep -i $(whoami) to find your userID.
PGID The groupID under which this container is run as. Important for file access and permissions. Run cat /etc/passwd | grep -i $(whoami) to find your groupID.
STARTUP_PARAMETER Decides which mode ServerPackCreator will start in. cli for commandline interface, which will generate a server pack from the given config. web for starting ServerPackCreator as a webservice.

6.3.1 Using docker-compose:

version: "2"
services:
  serverpackcreator:
    image: griefed/serverpackcreator:latest
    container_name: serverpackcreator
    restart: unless-stopped
    environment:
      - STARTUP_PARAMETER=web
      - TZ=Europe/Berlin
      - PUID=1000
      - PGID=1000
    volumes:
      - /host/path/todata:/data # ServerPackCreator files like configuration files are here
    ports:
      - 8080:8080 # Port at which ServerPackCreator will be accessible at. Only needed when setting STARTUP_PARAMETER to web. 

7. Contributing

Java documentation available at:

Read contributions before considering contributing to ServerPackCreator.

A short excerpt:

If you want to contribute to ServerPackCreator, then the following procedure must be adhered to:

  1. Fork ServerPackCreator
  2. Create a new branch in your fork, following one of the following naming schemes:
    1. The end of each branch name bust be suffixed with a one-word description fitting the changes made. Examples:
      • griefed_chore_readme
      • griefed_perf_curseforgemodpack
      • griefed_feat_ziparchive
    2. For more details on what the naming scheme entails, see .releaserc.yml in the base directory of the repository or scroll down to the Commits-section.
    3. Schemes:
      1. your_username_breaking_
      2. your_username_build_
      3. your_username_chore_
      4. your_username_ci_
      5. your_username_docs_
      6. your_username_feat_
      7. your_username_fix_
      8. your_username_perf_
      9. your_username_refactor_
      10. your_username_revert_
      11. your_username_style_
      12. your_username_test_
      13. your_username_other_
  3. Make your changes to your new branch:
    1. Try to keep the changes atomic, so they best fit the name of the branch.
    2. Follow conventional commit messages. See Commits-section for more details. Example:
      • feat: Allow upload of modpack-export zip-archive to web-frontend
      • refactor: Use apache commons-io for copying, instead of Files
  4. Open an issue on the main repository, using the Pull Request template:
    1. Issue title: Your Username - Branch type (e.g. feat) - Short description of your changes. Example:
      • Griefed - feat - Allow upload of modpack-export zip-archive to web-frontend
    2. Issue description: Fill in the sections the template provide.
    3. Submit the new issue
  5. I will then create a new branch in the main repository, with the same name as your branch, to which you will then create a pull request to.
  6. If checks and tests pass, or any changes necessary have been made, the pull request is ready to be merged etc., I will merge it to your main repository branch.
  7. I can then merge your main repository branch into main/master/whatever locally, push these changes to my GitLab instance, which will in turn push these changes to GitHub.
  8. Done!

This is the only way to ensure that any changes made to ServerPackCreator always arrive on my GitLab instance first, then on GitHub. Since I want to stay independent of GitHub and their architecture, I have to make use of my own GitLab installation. Hence this procedure. So, if one day, GitHub vanishes, we still can provide people with ServerPackCreator from my GitLab instance.

8. Building ServerPackCreator locally

Clone the webservice branch of the repository:

git clone -b $BRANCH https://git.griefed.de/Griefed/ServerPackCreator.git

Where $BRANCH represents the branch you want to clone.

If you are on linux, run chmod +x gradlew first.

Build with:

about installQuasar cleanFrontend assembleFrontend copyDist build createExe --info --stacktrace

Build without tests:

about installQuasar cleanFrontend assembleFrontend copyDist build createExe --info --stacktrace -x test

Build with custom version:

about installQuasar cleanFrontend assembleFrontend copyDist build createExe -Pversion=6.6.6-alpha.666 --info --stacktrace