Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 7 additions & 7 deletions addon.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -3,25 +3,25 @@
minecraft {
injectedTags.put 'GROOVY_VERSION', groovy_version

if (project.debug_use_examples_folder.toBoolean()) {
if (project.dev_use_examples_folder.toBoolean()) {
extraRunJvmArguments.add('-Dgroovyscript.use_examples_folder=true')
}
if (project.debug_run_ls.toBoolean()) {
if (project.dev_run_ls.toBoolean()) {
extraRunJvmArguments.add('-Dgroovyscript.run_ls=true')
}
if (project.debug_generate_examples.toBoolean()) {
if (project.dev_generate_examples.toBoolean()) {
extraRunJvmArguments.add('-Dgroovyscript.generate_examples=true')
}
if (project.debug_generate_wiki.toBoolean()) {
if (project.dev_generate_wiki.toBoolean()) {
extraRunJvmArguments.add('-Dgroovyscript.generate_wiki=true')
}
if (project.debug_generate_and_crash.toBoolean()) {
if (project.dev_generate_and_crash.toBoolean()) {
extraRunJvmArguments.add('-Dgroovyscript.generate_and_crash=true')
}
if (project.debug_log_missing_lang_keys.toBoolean()) {
if (project.dev_log_missing_lang_keys.toBoolean()) {
extraRunJvmArguments.add('-Dgroovyscript.log_missing_lang_keys=true')
}
if (project.debug_disable_cache.toBoolean()) {
if (project.dev_disable_cache.toBoolean()) {
extraRunJvmArguments.add('-Dgroovyscript.disable_cache=true')
}

Expand Down
30 changes: 23 additions & 7 deletions build.gradle
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
//version: 1723428048
//version: 1753288091
/*
* DO NOT CHANGE THIS FILE!
* Also, you may replace this file at any time if there is an update available.
Expand Down Expand Up @@ -50,6 +50,8 @@ def out = services.get(StyledTextOutputFactory).create('an-output')


// Project properties
loadProjectProperties()


// Required properties: we don't know how to handle these being missing gracefully
checkPropertyExists("modName")
Expand Down Expand Up @@ -80,6 +82,7 @@ propertyDefaultIfUnset("includeWellKnownRepositories", true)
propertyDefaultIfUnset("includeCommonDevEnvMods", true)
propertyDefaultIfUnset("stripForgeRequirements", false)
propertyDefaultIfUnset("noPublishedSources", false)
propertyDefaultIfUnset("mixinProviderSpec", "zone.rong:mixinbooter:10.6")
propertyDefaultIfUnset("forceEnableMixins", false)
propertyDefaultIfUnset("mixinConfigRefmap", "mixins.${project.modId}.refmap.json")
propertyDefaultIfUnsetWithEnvVar("enableCoreModDebug", false, "CORE_MOD_DEBUG")
Expand Down Expand Up @@ -518,7 +521,6 @@ configurations {
testRuntimeClasspath.extendsFrom(runtimeOnlyNonPublishable)
}

String mixinProviderSpec = 'zone.rong:mixinbooter:9.1'
dependencies {
if (usesMixins.toBoolean()) {
annotationProcessor 'org.ow2.asm:asm-debug-all:5.2'
Expand Down Expand Up @@ -870,10 +872,10 @@ if (enableJava17RunTasks.toBoolean()) {

dependencies {
if (modId != 'lwjgl3ify') {
java17Dependencies("io.github.twilightflower:lwjgl3ify:1.0.0")
}
java17PatchDependencies("io.github.twilightflower:lwjgl3ify:1.0.0:forgePatches") {
java17Dependencies("io.github.twilightflower:lwjgl3ify:1.0.1")
java17PatchDependencies("io.github.twilightflower:lwjgl3ify:1.0.1:forgePatches") {
transitive = false
}
}
}

Expand Down Expand Up @@ -1475,14 +1477,28 @@ tasks.register('faq') {
"To add new dependencies to your project, place them in 'dependencies.gradle', NOT in 'build.gradle' as they would be replaced when the script updates.\n" +
"To add new repositories to your project, place them in 'repositories.gradle'.\n" +
"If you need additional gradle code to run, you can place it in a file named 'addon.gradle' (or either of the above, up to you for organization).\n\n" +
"If your build fails to recognize the syntax of newer Java versions, enable Jabel in your 'gradle.properties' under the option name 'enableModernJavaSyntax'.\n" +
"If your build fails to recognize the syntax of newer Java versions, enable Jabel in your 'buildscript.properties' under the option name 'enableModernJavaSyntax'.\n" +
"To see information on how to configure your IDE properly for Java 17, see https://github.com/GregTechCEu/Buildscripts/blob/master/docs/jabel.md\n\n" +
"Report any issues or feature requests you have for this build script to https://github.com/GregTechCEu/Buildscripts/issues\n")
}
}


// Helpers
def loadProjectProperties() {
def configFile = file("buildscript.properties")
if (configFile.exists()) {
configFile.withReader {
def prop = new Properties()
prop.load(it)
new ConfigSlurper().parse(prop).forEach { String k, def v ->
project.ext.setProperty(k, v)
}
}
} else {
print("Failed to read from buildscript.properties, as it did not exist!")
}
}

def getDefaultArtifactGroup() {
def lastIndex = project.modGroup.lastIndexOf('.')
Expand All @@ -1495,7 +1511,7 @@ def getFile(String relativePath) {

def checkPropertyExists(String propertyName) {
if (!project.hasProperty(propertyName)) {
throw new GradleException("This project requires a property \"" + propertyName + "\"! Please add it your \"gradle.properties\". You can find all properties and their description here: https://github.com/GregTechCEu/Buildscripts/blob/main/gradle.properties")
throw new GradleException("This project requires a property \"" + propertyName + "\"! Please add it your \"buildscript.properties\" or \"gradle.properties\". You can find all properties and their description here: https://github.com/GregTechCEu/Buildscripts/blob/main/buildscript.properties and https://github.com/GregTechCEu/Buildscripts/blob/main/gradle.properties")
}
}

Expand Down
270 changes: 270 additions & 0 deletions buildscript.properties
Original file line number Diff line number Diff line change
@@ -0,0 +1,270 @@
#
# The "buildscript.properties" file contains settings loaded and used by the "build.gradle" file.
# For settings loaded in all gradle files or custom settings, use "gradle.properties" instead.
# New properties should not be created in this file, use "gradle.properties" instead.
#

# The name of your mod. Can be any sequence of characters.
modName = GroovyScript

# This is a case-sensitive string to identify your mod.
# Must be less than 64 characters and all lowercase. Convention is to only contain alphabetic characters.
modId = groovyscript

# Project package location.
modGroup = com.cleanroommc.groovyscript

# Version of your mod.
# This field can be left empty if you want your mod's version to be determined by the latest git tag instead.
modVersion = 1.2.5

# Whether to use the old jar naming structure (modid-mcversion-version) instead of the new version (modid-version)
includeMCVersionJar = false

# The name of your jar when you produce builds, not including any versioning info
modArchivesBaseName = groovyscript

# Will update your build.gradle automatically whenever an update is available
autoUpdateBuildScript = false

minecraftVersion = 1.12.2

# Select a username for testing your mod with breakpoints. You may leave this empty for a random username each time you
# restart Minecraft in development. Choose this dependent on your mod:
# Do you need consistent player progressing (for example Thaumcraft)? -> Select a name
# Do you need to test how your custom blocks interacts with a player that is not the owner? -> leave name empty
# Alternatively this can be set with the 'DEV_USERNAME' environment variable.
developmentEnvironmentUserName = Developer

# Additional arguments applied to the JVM when launching minecraft
# Syntax: -arg1=value1;-arg2=value2;...
# Example value: -Dmixin.debug.verify=true;-XX:+UnlockExperimentalVMOptions
additionalJavaArguments = -Dterminal.jline=true

# Enables using modern java syntax (up to version 17) via Jabel, while still targeting JVM 8.
# See https://github.com/bsideup/jabel for details on how this works.
# Using this requires that you use a Java 17 JDK for development.
enableModernJavaSyntax = true

# Enables runClient/runServer tasks for Java 17 and Java 21 using LWJGL3ify.
# This is primarily used to test if your mod is compatible with platforms running
# Minecraft 1.12.2 on modern versions of Java and LWJGL, and assist in fixing any problems with it.
# Using this requires that you use a Java 17/Java 21 JDK for development.
enableJava17RunTasks = false

# Generate a class with String fields for the mod id, name and version named with the fields below
generateGradleTokenClass = com.cleanroommc.groovyscript.Tags
gradleTokenModId = MODID
gradleTokenModName = MODNAME
gradleTokenVersion = VERSION

# In case your mod provides an API for other mods to implement you may declare its package here. Otherwise, you can
# leave this property empty.
# Example value: apiPackage = api + modGroup = com.myname.mymodid -> com.myname.mymodid.api
apiPackage =

# If you want to keep your API code in src/api instead of src/main
useSrcApiPath = false

# Specify the configuration file for Forge's access transformers here. It must be placed into /src/main/resources/
# There can be multiple files in a comma-separated list.
# Example value: mymodid_at.cfg,jei_at.cfg
accessTransformersFile =

# Provides setup for Mixins if enabled. If you don't know what mixins are: Keep it disabled!
usesMixins = true
# Mixin Provider to use. Primarily changed when needing to use a different version.
mixinProviderSpec = zone.rong:mixinbooter:10.7
# Specify the package that contains all of your Mixins. You may only place Mixins in this package or the build will fail!
mixinsPackage = core.mixin
# Location of the mixin config refmap. If left, blank, defaults to "mixins.${modId}.refmap.json". Target file must have the "json" extension.
mixinConfigRefmap =
# Automatically generates a mixin config json if enabled, with the name mixins.modid.json
generateMixinConfig = false
# Specify the core mod entry class if you use a core mod. This class must implement IFMLLoadingPlugin!
# Example value: coreModClass = asm.FMLPlugin + modGroup = com.myname.mymodid -> com.myname.mymodid.asm.FMLPlugin
coreModClass = core.GroovyScriptCore
# If your project is only a consolidation of mixins or a core mod and does NOT contain a 'normal' mod (meaning that
# there is no class annotated with @Mod) you want this to be true. When in doubt: leave it on false!
containsMixinsAndOrCoreModOnly = false

# Enables Mixins even if this mod doesn't use them, useful if one of the dependencies uses mixins.
forceEnableMixins = false

# Outputs pre-transformed and post-transformed loaded classes to run/CLASSLOADER_TEMP. Can be used in combination with
# diff to see exactly what your ASM or Mixins are changing in the target file.
# Optionally can be specified with the 'CORE_MOD_DEBUG' env var. Will output a lot of files!
enableCoreModDebug = false

# Adds CurseMaven, Modrinth Maven, BlameJared maven, and some more well-known 1.12.2 repositories
includeWellKnownRepositories = true

# Adds JEI and TheOneProbe to your development environment. Adds them as 'implementation', meaning they will
# be available at compiletime and runtime for your mod (in-game and in-code).
# Overrides the above setting to be always true, as these repositories are needed to fetch the mods
includeCommonDevEnvMods = true

# Some mods require a specific forge version to launch in. When you need to use one of those mods as a dependency,
# and cannot launch with the forge version required, enable this to strip the forge version requirements from that mod.
# This will add 'strip-latest-forge-requirements' as 'runtimeOnlyNonPublishable'.
# Requires useMixins or forceEnableMixins to be true, as the mod uses mixins to function.
stripForgeRequirements = true


# If enabled, you may use 'shadowCompile' for dependencies. They will be integrated in your jar. It is your
# responsibility check the licence and request permission for distribution, if required.
usesShadowedDependencies = false
# If disabled, won't remove unused classes from shaded dependencies. Some libraries use reflection to access
# their own classes, making the minimization unreliable.
minimizeShadowedDependencies = true
# If disabled, won't rename the shadowed classes.
relocateShadowedDependencies = true

# Separate run directories into "run/client" for runClient task, and "run/server" for runServer task.
# Useful for debugging a server and client simultaneously. If not enabled, it will be in the standard location "run/"
separateRunDirectories = false

# The display name format of versions published to Curse and Modrinth. $MOD_NAME and $VERSION are available variables.
# Default: $MOD_NAME \u2212 $VERSION. \u2212 is the minus character which looks much better than the hyphen minus on Curse.
versionDisplayFormat = $MOD_NAME \u2212 $VERSION

# Publishing to modrinth requires you to set the MODRINTH_API_KEY environment variable to your current modrinth API token.

# The project's ID on Modrinth. Can be either the slug or the ID.
# Leave this empty if you don't want to publish on Modrinth.
# Alternatively this can be set with the 'MODRINTH_PROJECT_ID' environment variable.
modrinthProjectId = GJaDRTrb

# The project's relations on Modrinth. You can use this to refer to other projects on Modrinth.
# Syntax: scope1-type1:name1;scope2-type2:name2;...
# Where scope can be one of [required, optional, incompatible, embedded],
# type can be one of [project, version],
# and the name is the Modrinth project or version slug/id of the other mod.
# Example: required-project:jei;optional-project:top;incompatible-project:gregtech
modrinthRelations = req:mixinbooter


# Publishing to CurseForge requires you to set the CURSEFORGE_API_KEY environment variable to one of your CurseForge API tokens.

# The project's numeric ID on CurseForge. You can find this in the About Project box.
# Leave this empty if you don't want to publish on CurseForge.
# Alternatively this can be set with the 'CURSEFORGE_PROJECT_ID' environment variable.
curseForgeProjectId = 687577

# The project's relations on CurseForge. You can use this to refer to other projects on CurseForge.
# Syntax: type1:name1;type2:name2;...
# Where type can be one of [requiredDependency, embeddedLibrary, optionalDependency, tool, incompatible],
# and the name is the CurseForge project slug of the other mod.
# Example: requiredDependency:railcraft;embeddedLibrary:cofhlib;incompatible:buildcraft
curseForgeRelations = req:mixin-booter;\
opt:actually-additions;\
opt:additional-enchanted-miner;\
opt:advanced-mortars;\
opt:advanced-rocketry;\
opt:advanced-rocketry-2;\
opt:aether;\
opt:alchemistry;\
opt:angry-pixel-the-betweenlands-mod;\
opt:applied-energistics-2;\
opt:arcane-archives;\
opt:arcane-world;\
opt:astral-sorcery;\
opt:atum;\
opt:avaritia-1-10;\
opt:better-with-addons;\
opt:bewitchment;\
opt:blood-arsenal;\
opt:blood-magic;\
opt:botania;\
opt:botania-tweaks;\
opt:botanic-additions;\
opt:bwm-suite;\
opt:bwm-core;\
opt:calculator;\
opt:chisel;\
opt:compact-machines;\
opt:constructs-armory;\
opt:cyclic;\
opt:draconic-evolution;\
opt:ender-io;\
opt:essentialcraft-4-unofficial;\
opt:evilcraft;\
opt:extended-crafting;\
opt:extrabotany;\
opt:extra-utilities;\
opt:forestry;\
opt:future-mc;\
opt:had-enough-items;\
opt:horse-power;\
opt:ic2-classic;\
opt:ice-and-fire-dragons;\
opt:immersive-engineering;\
opt:immersive-petroleum;\
opt:industrial-craft;\
opt:industrial-foregoing;\
opt:inspirations;\
opt:integrated-dynamics;\
opt:lazy-ae2;\
opt:magneticraft;\
opt:mct-immersive-technology;\
opt:mekanism;\
opt:mystical-agriculture;\
opt:natures-aura;\
opt:pneumaticcraft-repressurized;\
opt:primal-tech;\
opt:prodigy-tech;\
opt:projecte;\
opt:pyrotech;\
opt:random-things;\
opt:rustic;\
opt:roots;\
opt:silents-gems;\
opt:techreborn;\
opt:thaumcraft;\
opt:the-aurorian;\
opt:thermal-expansion;\
opt:tinkers-construct;\
opt:tinkers-complement;\
opt:woot;

# This project's release type on CurseForge and/or Modrinth
# Alternatively this can be set with the 'RELEASE_TYPE' environment variable.
# Allowed types: release, beta, alpha
releaseType =

# Generate a default changelog for releases. Requires git to be installed, as it uses it to generate a changelog of
# commits since the last tagged release.
generateDefaultChangelog = false

# Prevent the source code from being published
noPublishedSources = false


# Publish to a custom maven location. Follows a few rules:
# Group ID can be set with the 'ARTIFACT_GROUP_ID' environment variable, default to 'project.group'
# Artifact ID can be set with the 'ARTIFACT_ID' environment variable, default to 'project.name'
# Version can be set with the 'RELEASE_VERSION' environment variable, default to 'modVersion'
# For maven credentials:
# Username is set with the 'MAVEN_USER' environment variable, default to "NONE"
# Password is set with the 'MAVEN_PASSWORD' environment variable, default to "NONE"
customMavenPublishUrl = https://repo.cleanroommc.com/releases

# The group for maven artifacts. Defaults to the 'project.modGroup' until the last '.' (if any).
# So 'mymod' becomes 'mymod' and 'com.myname.mymodid' 'becomes com.myname'
mavenArtifactGroup = com.cleanroommc

# Enable spotless checks
# Enforces code formatting on your source code
# By default this will use the files found here: https://github.com/GregTechCEu/Buildscripts/tree/master/spotless
# to format your code. However, you can create your own version of these files and place them in your project's
# root directory to apply your own formatting options instead.
enableSpotless = true

# Enable JUnit testing platform used for testing your code.
# Uses JUnit 5. See guide and documentation here: https://junit.org/junit5/docs/current/user-guide/
enableJUnit = true

# Deployment debug setting
# Uncomment this to test deployments to CurseForge and Modrinth
# Alternatively, you can set the 'DEPLOYMENT_DEBUG' environment variable.
deploymentDebug = false
Loading