Skip to content

asanetargoss/HardcoreAlchemy

Repository files navigation

Hardcore Alchemy Mod Suite

The Hardcore Alchemy Mod Suite is a collection of mods for Minecraft 1.10.2 with a focus on cross-mod compatibility in a hardcore/magic/survival setting.

Hardcore Alchemy: Magic With Consequences

For more information about the Hardcore Alchemy modpack, visit the wiki.

Using the mod suite

Licenses

The Hardcore Alchemy mod suite is released under different licenses depending on the mod:

  • core, tweaks, creatures, magic, survival - GNU LGPL v3 or later
  • capstone - GNU GPL v3

In short: You are allowed to use any of these listed mods in your own modpack.

Gameplay dependencies

The Hardcore Alchemy mod suite is tested to work with specific mods. Below are the recommended mods and config settings that work best.

Required/Recommended mods

  • Changeling - This powers Hardcore Alchemy's balanced morphing features. If you are using the creatures submod, you must have Changeling installed.
    • The following config options should be set in Changeling: acquire_immediately=false, disable_morph_disguise=true, and keep_morphs=false
  • Iberia HcA edition - The Hardcore Alchemy mod suite is designed around hardcore respawn, which this mod will implement for you.

Optional mods

  • Nutrition HcA Edition and/or Spice of Life - For nutrition.
    • The official version of the Nutrition mod will not work, and HcA assumes the default 5 nutrients
  • Pam's Harvestcraft - Right-click harvesting and food support
  • Tough as Nails - Thirst
    • Reduced starting health should be disabled, to prevent feature overlap with the heart upgrade mechanic in the tweaks submod
    • Temperature should be disabled, as it does not play well with the instinct system in the creatures submod
  • Minecraft Comes Alive and/or Village Box - Villager alternatives
  • Various magic mods according to one's personal tastes

Game design notes

There is a lot more in terms of mod selection, configuration, and tweaking, in order for a hardcore modpack to work well. Please exercise discretion when selecting punishing mechanics for your modpack and be mindful of the player's time.

Also, since these mods were built for the Hardcore Alchemy modpack, config options are not planned, except as needed for compatibility with vanilla hardcore mode and serious accessibility concerns.

Developing/building

Dependencies

This branch targets the 0.8.1+ version of the modpack. Download the file compilelibs-0.8.1.zip from the link below and be ready to add its contents to compilelibs/ in the Hardcore Alchemy repository folder:

http://www.mediafire.com/folder/grwn2vsjr2lce/Hardcore_Alchemy_Libs

The SHA-256 checksum of compilelibs-0.8.1.zip is: 8fd451e5ddd4df2e276c1fe3d7c23eed9f1b820ef51d81ac32db654d563b552a

Please note: The following mods included in the HcA_compilelibs zip file above are custom forks:

Overview of Projects

  • compilelibs/ - The place to put third-party mods that the various projects depend on. For example, files in compilelibs/core/ are depended on by the core project and any mods which depend on the core project.
  • translations/ - Unlike most mod projects, translation files are stored in this folder, separately from other resources. Most of the translations are in translations/core/, but this may change in the future.
  • core/ - A mod project which contains shared code required by the other projects.
  • tweaks/ - A mod project containing magic and survival tweaks, aiming for a minimal number of dependencies.
  • creatures/ - A mod project for balanced morphing mechanics and tweaks to mob mods. It requires Changeling.
  • magic/ - A mod project containing features which make magic mods work better in a hardcore respawn gameplay context. It also contains various tweaks and fixes for magic mods.
  • survival/ - A mod project containing various features related to nutrition, thirst, and crop growth. It interacts with various survival and crop mods.
  • capstone/ - A mod project which handles magic/survival cross-mod compatibility for GPLv3-licensed mods. It also adds guidebooks and integration tests for the Hardcore Alchemy modpack.

Notes on Windows and IntelliJ IDEA

The commands in the instructions below assume your command line is a unix-style shell (ex: bash, zsh) and that Eclipse is used as the IDE. If you're not in that situation, you may have to make adjustments.

  • Windows Users - When you type echo $SHELL in your command line of choice, do you see a path with forward slashes, like /bin/bash?
    • If you answered no, to this question, then wherever you see ./gradlew, you should instead type gradle.bat
    • If you answered yes, then proceed as normal
  • IntelliJ Users - Unfortunately, I haven't tested this gradle setup with IntelliJ, so I don't know if it works or not. If you figure out how to get it working, please report back! That being said, it most likely involves the command ./gradlew idea

Java 8 setup

To develop for the hca mod suite, you will need Java 8 (OpenJDK). You can install a FOSS version of Java 8 from Adoptium, or alternatively your package manager may have a package available.

There are tools to allow using a different Java version per path. If you are using a unix-y command line, jenv is a good choice.

Regardless of the method used, the goal is to have Java 8 on your $PATH (or equivalent), so that when you use the Gradle wrapper, and that wrapper calls java, it uses the Java 8 version.

You can verify you are using the correct version of Java by typing java -version. The version given should start with "1.8". See the example below. Note that later versions of Java use different version conventions.

> java -version
openjdk version "1.8.0_362"
OpenJDK Runtime Environment (build 1.8.0_362-8u362-ga-0ubuntu1~22.04-b09)
OpenJDK 64-Bit Server VM (build 25.362-b09, mixed mode)

Later on, when you are using the Gradle wrapper (./gradlew), you can also verify directly that it's calling the right Java version, by typing ./gradlew --version. Note the JVM line in the output below:

> ./gradlew --version

------------------------------------------------------------
Gradle 2.14
------------------------------------------------------------

Build time:   2016-06-14 07:16:37 UTC
Revision:     cba5fea19f1e0c6a00cc904828a6ec4e11739abc

Groovy:       2.4.4
Ant:          Apache Ant(TM) version 1.9.6 compiled on June 29 2015
JVM:          1.8.0_362 (Private Build 25.362-b09)
OS:           Linux 5.15.0-71-generic amd64

Your IDE may already provide a different version of Java 8 internally. If it does, there is no reason to change the Java version that your IDE uses, as that version is likely optimized for debugging with that particular IDE.

Workspace setup

  • Clone this repository into a folder. If you are using Eclipse, it is recommended that you create this folder inside of another folder, so the higher-up folder can be used as your multi-project workspace.
  • Navigate into the folder of your new personal copy of this repository. Create the folder compilelibs/. In that folder, you should copy the mod dependencies you have downloaded from the Dependencies step
  • Run ./gradlew setupDecompWorkspace eclipse
    • setupDecompWorkspace sets up dependencies for Minecraft, Forge, etc; and updates access transformers for all projects
    • eclipse sets up files for all projects that can be imported into the Eclipse IDE
    • During the very first setup, you may encounter an error where the forge jar is missing from your Eclipse classpath. To fix this, re-run ./gradlew eclipse (this is a known bug with the gradle scripts)

Testing

  • Create an Eclipse workspace in a folder of your choice (a higher-up folder containing this one is recommended)
  • Import the core project, and any other projects you want to work with
  • When testing any open project, the core project should stay open to provide the necessary dependencies

Compiling

  • To compile all mods, run ./gradlew build. Outputs will be in [PROJECT_NAME]/build/libs
    • [PROJECT_NAME] is the name of each project that was built
    • The outputted release jar name will be hardcorealchemy-[PROJECT_NAME]-[PROJECT_VERSION].jar where [PROJECT_VERSION] is defined in [PROJECT_NAME]/build.gradle.
  • To bundle all the mods into one convenient .zip file (excluding the modpack mod), run ./gradlew buildModSuite. The output will be in modpack/build/distributions
  • If you add new files to a project, you will likely need to add licenses to the files, or you will get errors. To fix this, run ./gradlew [PROJECT_NAME]:updateLicenses for each project you have added files to.

Development tips

  • Internet down? Already ran gradle commands before? No problem! Just add the -offline flag to your gradle command and it should work normally again.
  • ./gradlew setupDecompWorkspace eclipse may need to be re-run under the following circumstances:
    • Adding/changing mods in compilelibs/
    • Updating dependencies in other places like a build.gradle file
    • Updating the access transformers (found at "core/src/main/resources/META-INF/hardcorealchemy_at.cfg")
    • On rare occasions, when encountering unexplained crashes involving missing classes or methods. This is a bug with CodeChickenCore when used in a development environment.
  • If you want to work with a specific project only, there are several ways to do this
    • If you only want to set up a certain [PROJECT_NAME], you can run ./gradlew [PROJECT_NAME]:setupDecompWorkspace [PROJECT_NAME]:eclipse
    • If you only want to build a certain [PROJECT_NAME], you can run ./gradlew [PROJECT_NAME]:build
    • You can comment out a project in the top-level settings.gradle and build.gradle to completely ignore it
  • Assertions are enabled in all targoss.hardcorealchemy... packages. To debug assertions, add AssertionError as an exception breakpoint

Other resources