diff --git a/build.gradle b/build.gradle index d79870de1..8d1b101a0 100644 --- a/build.gradle +++ b/build.gradle @@ -3,42 +3,40 @@ buildscript { maven { url = 'https://maven.minecraftforge.net' } mavenCentral() maven { url = 'https://repo.spongepowered.org/repository/maven-public' } - maven { url = 'https://maven.parchmentmc.org' } } dependencies { - classpath group: 'net.minecraftforge.gradle', name: 'ForgeGradle', version: '5.1.+', changing: true classpath "org.spongepowered:mixingradle:${mixingradle_version}" classpath 'org.parchmentmc:librarian:1.+' } } -apply plugin: 'net.minecraftforge.gradle' -apply plugin: 'eclipse' +plugins { + id 'net.minecraftforge.gradle' version '[6.0,6.2)' +} + apply plugin: 'maven-publish' apply plugin: 'org.spongepowered.mixin' apply plugin: 'org.parchmentmc.librarian.forgegradle' version = "${ll_version}" -group = 'dev.xkmc.modulargolems' // http://maven.apache.org/guides/mini/guide-naming-conventions.html -archivesBaseName = 'modulargolems' +group = "dev.kxmc.${modid}" +archivesBaseName = "${modid}" + +if (lljij.toBoolean()) jarJar.enable() java.toolchain.languageVersion = JavaLanguageVersion.of(17) -println('Java: ' + System.getProperty('java.version') + ' JVM: ' + System.getProperty('java.vm.version') + '(' + System.getProperty('java.vendor') + ') Arch: ' + System.getProperty('os.arch')) minecraft { - //mappings channel: 'official', version: "${minecraft_version}" - mappings channel: 'parchment', version: '2022.08.14-1.19.2' + //mappings channel: 'parchment', version: '1.19.3-2023.03.12-1.19.4' + mappings channel: 'official', version: "${minecraft_version}" accessTransformer = file('src/main/resources/META-INF/accesstransformer.cfg') runs { client { workingDirectory project.file('run') - arg '-mixin.config=modulargolems.mixins.json' property 'forge.logging.markers', 'REGISTRIES' property 'forge.logging.console.level', 'info' - property 'mixin.env.remapRefMap', 'true' - property 'mixin.env.refMapRemappingFile', "${projectDir}/build/createSrgToMcp/output.srg" mods { - modulargolems { + "${modid}" { source sourceSets.main } } @@ -46,13 +44,10 @@ minecraft { server { workingDirectory project.file('run') - arg '-mixin.config=modulargolems.mixins.json' property 'forge.logging.markers', 'REGISTRIES' property 'forge.logging.console.level', 'info' - property 'mixin.env.remapRefMap', 'true' - property 'mixin.env.refMapRemappingFile', "${projectDir}/build/createSrgToMcp/output.srg" mods { - modulargolems { + "${modid}" { source sourceSets.main } } @@ -60,17 +55,14 @@ minecraft { data { workingDirectory project.file('run') - arg '-mixin.config=modulargolems.mixins.json' property 'forge.logging.markers', 'REGISTRIES' property 'forge.logging.console.level', 'info' - property 'mixin.env.remapRefMap', 'true' - property 'mixin.env.refMapRemappingFile', "${projectDir}/build/createSrgToMcp/output.srg" // Specify the modid for data generation, where to output the resulting resource, and where to look for existing resources. - args '--mod', 'modulargolems', '--all', '--output', file('src/generated/resources/'), '--existing', file('src/main/resources/') + args '--mod', "${modid}", '--all', '--output', file('src/generated/resources/'), '--existing', file('src/main/resources/') mods { - modulargolems { + "${modid}" { source sourceSets.main } } @@ -78,15 +70,89 @@ minecraft { } } -// Include resources generated by data generators. sourceSets.main.resources { srcDir 'src/generated/resources' } mixin { - add sourceSets.main, 'modulargolems.refmap.json' - config 'modulargolems.mixins.json' + add sourceSets.main, "${modid}.refmap.json" + config "${modid}.mixins.json" +} + +jar { + manifest { + attributes([ + "Specification-Title" : "${modid}", + "Specification-Vendor" : "xkmc", + "Specification-Version" : "1", // We are version 1 of ourselves + "Implementation-Title" : project.name, + "Implementation-Version" : project.jar.archiveVersion, + "Implementation-Vendor" : "xkmc", + "Implementation-Timestamp": new Date().format("yyyy-MM-dd'T'HH:mm:ssZ"), + 'MixinConfigs' : "${modid}.mixins.json" + ]) + } +} + +java { + withSourcesJar() +} + +jar.finalizedBy('reobfJar') + +publishing { + publications { + mavenJava(MavenPublication) { + artifact jar + } + } + repositories { + maven { + url "file://${project.projectDir}/mcmodsrepo" + } + } +} + +tasks.withType(JavaCompile).configureEach { + options.encoding = 'UTF-8' +} + +if (lljij.toBoolean()) { + + reobf { + jarJar {} + } + + tasks.jarJar.finalizedBy('reobfJarJar') + + tasks.jarJar.configure { + archiveClassifier.set('') + } + + jar { + archiveClassifier.set('slim') + } +} + +dependencies { + minecraft "net.minecraftforge:forge:${minecraft_version}-${forge_version}" + compileOnly(annotationProcessor("com.github.llamalad7.mixinextras:mixinextras-common:${mixin_extras_version}")) + if (rootMod.toBoolean()) { + implementation(jarJar("com.github.llamalad7.mixinextras:mixinextras-forge:${mixin_extras_version}")) { + transitive = false + jarJar.ranged(it, "[${mixin_extras_version},)") + } + } else { + implementation("com.github.llamalad7.mixinextras:mixinextras-forge:${mixin_extras_version}") + } + annotationProcessor "org.spongepowered:mixin:${mixin_version}:processor" + compileOnly fg.deobf("com.tterrag.registrate:Registrate:${registrate_version}") + if (rootMod.toBoolean()) { + jarJar(group: 'com.tterrag.registrate', name: 'Registrate', version: "[MC1.20,MC1.21)") + } } + repositories { + maven { url 'https://jitpack.io' } maven { // Location of the maven that hosts JEI files (and TiC) name 'Progwml6 maven' @@ -108,86 +174,58 @@ repositories { includeGroup "curse.maven" } } - maven { - url "https://maven.architectury.dev/" - } - maven { url "https://maven.bai.lol" } - maven { - url "https://maven.saps.dev/minecraft" - content { - includeGroup "dev.latvian.mods" - includeGroup "dev.ftb.mods" - } - } - maven { url 'https://dl.cloudsmith.io/public/geckolib3/geckolib/maven/' } flatDir { dirs 'libs' } maven { url = "https://maven.theillusivec4.top/" } + mavenLocal() } dependencies { - minecraft "net.minecraftforge:forge:${minecraft_version}-${forge_version}" - annotationProcessor "org.spongepowered:mixin:${mixin_version}:processor" - implementation fg.deobf("dev.xkmc.l2library:l2library:${l2library_version}") - implementation fg.deobf('dev.xkmc.l2complements:l2complements:1.3.0') + implementation fg.deobf("dev.xkmc.l2library:l2library:${l2library_version}-slim") + implementation fg.deobf("dev.xkmc.l2serial:l2serial:1.2.0") + runtimeOnly fg.deobf("dev.xkmc.l2modularblock:l2modularblock:1.1.0") + implementation fg.deobf("dev.xkmc.l2tabs:l2tabs:0.1.5") + implementation fg.deobf("dev.xkmc.l2screentracker:l2screentracker:0.1.2") + implementation fg.deobf("dev.xkmc.l2itemselector:l2itemselector:0.1.1") + + implementation fg.deobf(jarJar("dev.xkmc.l2damagetracker:l2damagetracker:0.1.4")) { + transitive = false + jarJar.ranged(it, "[0.1.4,)") + } + + runtimeOnly fg.deobf("dev.xkmc.l2backpack:l2backpack:2.4.5-slim") + implementation fg.deobf('dev.xkmc.l2complements:l2complements:2.4.11-slim') + implementation fg.deobf("top.theillusivec4.curios:curios-forge:${curios_version}") implementation fg.deobf("mezz.jei:jei-${jei_minecraft_version}:${jei_version}") - implementation fg.deobf('dev.xkmc.l2backpack:l2backpack:1.8.3') - runtimeOnly fg.deobf('dev.xkmc.l2archery:l2archery:1.2.0') - runtimeOnly fg.deobf('dev.xkmc.l2weaponry:l2weaponry:1.1.3') + //runtimeOnly fg.deobf("dev.xkmc.l2artifacts:l2artifacts:2.2.0.pre4") + runtimeOnly fg.deobf("dev.xkmc.l2archery:l2archery:2.4.7") + runtimeOnly fg.deobf("dev.xkmc.l2weaponry:l2weaponry:2.4.8") - runtimeOnly fg.deobf('curse.maven:wthit-forge-455982:3947982') - runtimeOnly fg.deobf('curse.maven:badpackets-615134:3903799') - implementation fg.deobf('curse.maven:the-twilight-forest-227639:4075841') - implementation fg.deobf('curse.maven:create-328085:4371809') - implementation fg.deobf('curse.maven:create-enchantment-industry-688768:4504113') - implementation fg.deobf('zip.local.blazegear:blazegear:1.3.3') + //implementation fg.deobf('curse.maven:the-twilight-forest-227639:4539671') + //implementation fg.deobf('zip.local.blazegear:blazegear:1.3.5') - compileOnly fg.deobf("com.tterrag.registrate:Registrate:MC1.19-1.1.5") + runtimeOnly fg.deobf("curse.maven:badpackets-615134:4438956") + runtimeOnly fg.deobf("curse.maven:wthit-forge-455982:4596739") + runtimeOnly fg.deobf("curse.maven:attributefix-280510:4588114") + runtimeOnly fg.deobf("curse.maven:bookshelf-228525:4581675") + runtimeOnly fg.deobf("curse.maven:enchantment-descriptions-250419:4587429") - compileOnly fg.deobf("vazkii.patchouli:Patchouli:${patchouli_version}:api") - runtimeOnly fg.deobf("vazkii.patchouli:Patchouli:${patchouli_version}") + //runtimeOnly fg.deobf('curse.maven:bookshelf-228525:4454755') + //runtimeOnly fg.deobf('curse.maven:enchantment-descriptions-250419:4445054') + //runtimeOnly fg.deobf('curse.maven:appleskin-248787:4440123') - //implementation fg.deobf('curse.maven:ic2-classic-242942:4441313') + implementation fg.deobf("curse.maven:create-328085:4626108") + implementation fg.deobf("curse.maven:the-twilight-forest-227639:4635921") -} + runtimeOnly fg.deobf("curse.maven:patchouli-306770:4633797") -// Example for how to get properties into the manifest for reading at runtime. -jar { - manifest { - attributes([ - "Specification-Title" : "modulargolems", - "Specification-Vendor" : "xkmc", - "Specification-Version" : "1", // We are version 1 of ourselves - "Implementation-Title" : project.name, - "Implementation-Version" : project.jar.archiveVersion, - "Implementation-Vendor" : "xkmc", - "Implementation-Timestamp": new Date().format("yyyy-MM-dd'T'HH:mm:ssZ"), - 'MixinConfigs' : 'modulargolems.mixins.json' - ]) - } -} - -// Example configuration to allow publishing using the maven-publish plugin -// This is the preferred method to reobfuscate your jar file -jar.finalizedBy('reobfJar') -// However if you are in a multi-project build, dev time needs unobfed jar files, so you can delay the obfuscation until publishing by doing -// publish.dependsOn('reobfJar') + //implementation fg.deobf('curse.maven:ic2-classic-242942:4441313') -publishing { - publications { - mavenJava(MavenPublication) { - artifact jar - } - } - repositories { - maven { - url "file://${project.projectDir}/mcmodsrepo" - } - } } + diff --git a/gradle.properties b/gradle.properties index 612c98016..56a715701 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,23 +1,21 @@ -# Sets default memory used for gradle commands. Can be overridden by user or command line properties. -# This is required to provide enough memory for the Minecraft decompilation process. org.gradle.jvmargs=-Xmx3G org.gradle.daemon=false - -# mod version info -ll_version = 1.9.5 -minecraft_version = 1.19.2 -forge_version = 43.2.0 - -# build dependency versions -forgegradle_version = 5.1.+ mixingradle_version = 0.7-SNAPSHOT mixin_version = 0.8.5 -shadow_version = 7.1.0 -# dependency versions -jei_minecraft_version = 1.19.2-forge -jei_version = 11.4.0.285 -curios_version = 1.19.2-5.1.1.0 -l2library_version = 1.9.4 -patchouli_version = 1.19.2-76 \ No newline at end of file +minecraft_version = 1.20.1 +forge_version = 47.0.49 +mixin_extras_version = 0.2.0-beta.8 +registrate_version = MC1.20-1.3.3 +jei_minecraft_version = 1.20.1-forge +jei_version = 15.2.0.22 +curios_version = 5.2.0-beta.3+1.20.1 + +modid = modulargolems +ll_version = 2.4.7 +lljij = true +rootMod = false + +l2library_version = 2.4.14 +patchouli_version = 1.20.1-80-FORGE-SNAPSHOT \ No newline at end of file diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index 249e5832f..c1962a79e 100644 Binary files a/gradle/wrapper/gradle-wrapper.jar and b/gradle/wrapper/gradle-wrapper.jar differ diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index e750102e0..37aef8d3f 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,6 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-7.3-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.1.1-bin.zip +networkTimeout=10000 zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/gradlew b/gradlew index a69d9cb6c..aeb74cbb4 100755 --- a/gradlew +++ b/gradlew @@ -55,7 +55,7 @@ # Darwin, MinGW, and NonStop. # # (3) This script is generated from the Groovy template -# https://github.com/gradle/gradle/blob/master/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt +# https://github.com/gradle/gradle/blob/HEAD/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt # within the Gradle project. # # You can find Gradle at https://github.com/gradle/gradle/. @@ -80,13 +80,10 @@ do esac done -APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit - -APP_NAME="Gradle" +# This is normally unused +# shellcheck disable=SC2034 APP_BASE_NAME=${0##*/} - -# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' +APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit # Use the maximum available, or set MAX_FD != -1 to use that value. MAX_FD=maximum @@ -143,12 +140,16 @@ fi if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then case $MAX_FD in #( max*) + # In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked. + # shellcheck disable=SC3045 MAX_FD=$( ulimit -H -n ) || warn "Could not query maximum file descriptor limit" esac case $MAX_FD in #( '' | soft) :;; #( *) + # In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked. + # shellcheck disable=SC3045 ulimit -n "$MAX_FD" || warn "Could not set maximum file descriptor limit to $MAX_FD" esac @@ -193,6 +194,10 @@ if "$cygwin" || "$msys" ; then done fi + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' + # Collect all arguments for the java command; # * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of # shell script including quotes and variable substitutions, so put them in diff --git a/gradlew.bat b/gradlew.bat index 53a6b238d..6689b85be 100644 --- a/gradlew.bat +++ b/gradlew.bat @@ -26,6 +26,7 @@ if "%OS%"=="Windows_NT" setlocal set DIRNAME=%~dp0 if "%DIRNAME%"=="" set DIRNAME=. +@rem This is normally unused set APP_BASE_NAME=%~n0 set APP_HOME=%DIRNAME% diff --git a/libs/blazegear-1.3.3.jar b/libs/blazegear-1.3.3.jar deleted file mode 100644 index 894a6174f..000000000 Binary files a/libs/blazegear-1.3.3.jar and /dev/null differ diff --git a/libs/l2archery-1.2.0.jar b/libs/l2archery-1.2.0.jar deleted file mode 100644 index eae51e9c8..000000000 Binary files a/libs/l2archery-1.2.0.jar and /dev/null differ diff --git a/libs/l2archery-2.4.7.jar b/libs/l2archery-2.4.7.jar new file mode 100644 index 000000000..1797f054e Binary files /dev/null and b/libs/l2archery-2.4.7.jar differ diff --git a/libs/l2backpack-1.8.3.jar b/libs/l2backpack-1.8.3.jar deleted file mode 100644 index 8355fe3be..000000000 Binary files a/libs/l2backpack-1.8.3.jar and /dev/null differ diff --git a/libs/l2backpack-2.4.5-slim.jar b/libs/l2backpack-2.4.5-slim.jar new file mode 100644 index 000000000..727b6fe01 Binary files /dev/null and b/libs/l2backpack-2.4.5-slim.jar differ diff --git a/libs/l2complements-1.3.0.jar b/libs/l2complements-1.3.0.jar deleted file mode 100644 index eaf91e6ec..000000000 Binary files a/libs/l2complements-1.3.0.jar and /dev/null differ diff --git a/libs/l2complements-2.4.11-slim.jar b/libs/l2complements-2.4.11-slim.jar new file mode 100644 index 000000000..02f3bf470 Binary files /dev/null and b/libs/l2complements-2.4.11-slim.jar differ diff --git a/libs/l2damagetracker-0.1.4.jar b/libs/l2damagetracker-0.1.4.jar new file mode 100644 index 000000000..7d4bde99f Binary files /dev/null and b/libs/l2damagetracker-0.1.4.jar differ diff --git a/libs/l2itemselector-0.1.1.jar b/libs/l2itemselector-0.1.1.jar new file mode 100644 index 000000000..3dd3aaa10 Binary files /dev/null and b/libs/l2itemselector-0.1.1.jar differ diff --git a/libs/l2library-1.9.4.jar b/libs/l2library-1.9.4.jar deleted file mode 100644 index d85654762..000000000 Binary files a/libs/l2library-1.9.4.jar and /dev/null differ diff --git a/libs/l2library-2.4.14-slim.jar b/libs/l2library-2.4.14-slim.jar new file mode 100644 index 000000000..a632aa927 Binary files /dev/null and b/libs/l2library-2.4.14-slim.jar differ diff --git a/libs/l2modularblock-1.1.0.jar b/libs/l2modularblock-1.1.0.jar new file mode 100644 index 000000000..3bf3192c0 Binary files /dev/null and b/libs/l2modularblock-1.1.0.jar differ diff --git a/libs/l2screentracker-0.1.2.jar b/libs/l2screentracker-0.1.2.jar new file mode 100644 index 000000000..e6899f85b Binary files /dev/null and b/libs/l2screentracker-0.1.2.jar differ diff --git a/libs/l2serial-1.2.0.jar b/libs/l2serial-1.2.0.jar new file mode 100644 index 000000000..6621361b6 Binary files /dev/null and b/libs/l2serial-1.2.0.jar differ diff --git a/libs/l2tabs-0.1.5.jar b/libs/l2tabs-0.1.5.jar new file mode 100644 index 000000000..edc10154f Binary files /dev/null and b/libs/l2tabs-0.1.5.jar differ diff --git a/libs/l2weaponry-1.1.3.jar b/libs/l2weaponry-1.1.3.jar deleted file mode 100644 index 0a65c783f..000000000 Binary files a/libs/l2weaponry-1.1.3.jar and /dev/null differ diff --git a/libs/l2weaponry-2.4.8.jar b/libs/l2weaponry-2.4.8.jar new file mode 100644 index 000000000..85aeec16c Binary files /dev/null and b/libs/l2weaponry-2.4.8.jar differ diff --git a/settings.gradle b/settings.gradle new file mode 100644 index 000000000..5a867a6f1 --- /dev/null +++ b/settings.gradle @@ -0,0 +1,9 @@ +pluginManagement { + repositories { + gradlePluginPortal() + maven { url = 'https://maven.minecraftforge.net/' } + } +} +plugins { + id 'org.gradle.toolchains.foojay-resolver-convention' version '0.5.0' +} \ No newline at end of file diff --git a/src/generated/resources/.cache/b5ddc67a7d390091a142edce00a2f6d41b906e02 b/src/generated/resources/.cache/04be5e97bf4d7144441a568533bcef2d5d88cc7d similarity index 70% rename from src/generated/resources/.cache/b5ddc67a7d390091a142edce00a2f6d41b906e02 rename to src/generated/resources/.cache/04be5e97bf4d7144441a568533bcef2d5d88cc7d index 4900bdadf..950da5a3d 100644 --- a/src/generated/resources/.cache/b5ddc67a7d390091a142edce00a2f6d41b906e02 +++ b/src/generated/resources/.cache/04be5e97bf4d7144441a568533bcef2d5d88cc7d @@ -1,6 +1,6 @@ -// 1.19.2 2023-06-07T22:12:43.835497 Registrate Provider for modulargolems [Recipes, Advancements, Loot tables, Tags (blocks), Tags (items), Tags (fluids), Tags (entity_types), Blockstates, Item models, Lang (en_us/en_ud)] -6700cd0a7cf3a62d86f19a42865dac2c8eb0177e assets/modulargolems/lang/en_ud.json -48ba471f1a209c0db4e3cc5e0bc3150e5cd99abf assets/modulargolems/lang/en_us.json +// 1.20.1 2023-08-11T23:03:15.0736102 Registrate Provider for modulargolems [Recipes, Advancements, Loot Tables, Tags (blocks), Tags (items), Tags (fluids), Tags (entity_types), Blockstates, Item models, Lang (en_us/en_ud)] +6f7844d1cdebd002543d7830fb7da6153220322e assets/modulargolems/lang/en_ud.json +b66c6573c5a0be72411cff3ae645c430028e753a assets/modulargolems/lang/en_us.json 7b851e985a8d2869b89311f804ba46a58c8e34dc assets/modulargolems/models/item/attack_high.json d85abebd3b51deaa8937c6da80cbbf428430c517 assets/modulargolems/models/item/attack_high_blue.json 92a0cc59e60b552d9ea9a11552515396113f90b9 assets/modulargolems/models/item/attack_high_purple.json @@ -19,7 +19,7 @@ cfc6c23594670bcd63478e5c8e5b0db5d8d27b4f assets/modulargolems/models/item/cleans 1a85bc8d050f4da6cf051ba25ef64886ce2476a9 assets/modulargolems/models/item/coating.json adeb15e75838cbb6874b2749b79cc2c370d78e60 assets/modulargolems/models/item/coating_blue.json c08dc1608f6d23f4595e4893f769146d04dd627d assets/modulargolems/models/item/coating_purple.json -4769ec561a30aaf33eec61a67175bbc7e7ec2380 assets/modulargolems/models/item/command_wand.json +5d4c85ceb9c657a5d3b1b921f9410c58a0f8b308 assets/modulargolems/models/item/command_wand.json 9ea9d5a7620e2c04cfcdf25f733f56c2662f0020 assets/modulargolems/models/item/curse.json 16ae2216ee23ac7936bdb83338dd2b9b839eff27 assets/modulargolems/models/item/curse_blue.json 39de550c4b5027e3c50b77aad37fe31c5fd53f36 assets/modulargolems/models/item/curse_purple.json @@ -57,6 +57,8 @@ b546d70c5a2977304d71f744ed2c706306a2929b assets/modulargolems/models/item/force_ 199713d96f1118682220b51776da8c7a0da54089 assets/modulargolems/models/item/gold.json 5e063cf974342a6bf4c37657a288a11742b8723b assets/modulargolems/models/item/gold_blue.json a89405db5be093449c625f382071ac75432107aa assets/modulargolems/models/item/gold_purple.json +e5be1ae70ff902bcac987f23b7417832ba659f99 assets/modulargolems/models/item/golemguard_chestplate.json +b714a5181c27adf26b69786cb05f6e1e3e6d637b assets/modulargolems/models/item/golemguard_helmet.json f8cec8e901392bca215ad2afb6f84e86ac385741 assets/modulargolems/models/item/humanoid_golem_arms.json f8cec8e901392bca215ad2afb6f84e86ac385741 assets/modulargolems/models/item/humanoid_golem_body.json f8cec8e901392bca215ad2afb6f84e86ac385741 assets/modulargolems/models/item/humanoid_golem_holder.json @@ -75,6 +77,9 @@ f8cec8e901392bca215ad2afb6f84e86ac385741 assets/modulargolems/models/item/metal_ f8cec8e901392bca215ad2afb6f84e86ac385741 assets/modulargolems/models/item/metal_golem_holder.json f8cec8e901392bca215ad2afb6f84e86ac385741 assets/modulargolems/models/item/metal_golem_legs.json 6c6f737e1088fb1327e1fb25d8673a1f236c707f assets/modulargolems/models/item/metal_golem_template.json +e6a3bfba8e420145a023b8468ae2e43bc666291b assets/modulargolems/models/item/mount_upgrade.json +7faedb9cc5426266fb386eab3170d2c846577c14 assets/modulargolems/models/item/mount_upgrade_blue.json +3fbc39e0b4549ce1601fa6f9299706820c44dc02 assets/modulargolems/models/item/mount_upgrade_purple.json ab43f7516507dff0ce011f9f50dd74b2a3101ba5 assets/modulargolems/models/item/naga.json 8bf4914ffa1a3946e1e2c91daf4010e5909e24f2 assets/modulargolems/models/item/naga_blue.json 1aa6244dfc545828d71205348139ba96df6ef67c assets/modulargolems/models/item/naga_purple.json @@ -102,7 +107,11 @@ c551f7f40b62278b6423b57b00126deec9035225 assets/modulargolems/models/item/quartz 7ded08c4b1b03ba74a4a8453b1e13ad240775a4e assets/modulargolems/models/item/recycle.json 43717a5eb1b01a2e9640f297929c1b5d838cbd26 assets/modulargolems/models/item/recycle_blue.json e21189fc27b4253bd81cbafcc4bfeee9bd19683c assets/modulargolems/models/item/recycle_purple.json -295b30187a6f2f55f4089bec3ff128db02269865 assets/modulargolems/models/item/retrieval_wand.json +ef4be3e6b28a06b84238dc98823ae28c11c1d7e2 assets/modulargolems/models/item/retrieval_wand.json +92d118d2d3ea2a9fc8aca2c871b8a0f26c24fd4d assets/modulargolems/models/item/rider_wand.json +3a12394deed7452c0c0983e6d9e2beacdb37fd1c assets/modulargolems/models/item/size_upgrade.json +24b69d1ca590ff171045022afb0b29f45550531d assets/modulargolems/models/item/size_upgrade_blue.json +6a272678a0ae358dae2f60ab9358987f3f3d1bc7 assets/modulargolems/models/item/size_upgrade_purple.json 9806afe1161ebd9726ce1a694c0c8cbd8f081122 assets/modulargolems/models/item/slow.json 9c32e472d6fddd1120cd945cfcd0f36e5adaa630 assets/modulargolems/models/item/slow_blue.json 95f8a06aead32162ab7be1fdd8aece601f509835 assets/modulargolems/models/item/slow_purple.json @@ -121,7 +130,7 @@ b3e0d5535236229a636685a3c2021664294147f2 assets/modulargolems/models/item/speed_ e439740c14e801ee3f421baaa98602501c993db4 assets/modulargolems/models/item/steeleaf.json eb4be1dcd47a20d373776a04f18ed0edf3a9ce15 assets/modulargolems/models/item/steeleaf_blue.json 451060f2e67d36095504677cc8a2013ce1b1c286 assets/modulargolems/models/item/steeleaf_purple.json -98edbb3998d3bc847d50e98870a641284c58e883 assets/modulargolems/models/item/summon_wand.json +aaba77ea0968a565d1bf544fef42d62998ecc670 assets/modulargolems/models/item/summon_wand.json acfdb0443c66aa8b9d8a5854105658dd17900f6a assets/modulargolems/models/item/swim.json 1c1a345f1e61967a961b2d0192030920464ad138 assets/modulargolems/models/item/swim_blue.json d9d84d6b49d887b1714d728cb89787c4282b0935 assets/modulargolems/models/item/swim_purple.json @@ -140,122 +149,128 @@ d8ea6f960300cc995a9f1c5015124f3104efa6a4 assets/modulargolems/models/item/weak_p a8048b87ce5cc44602d1a769cf38aa58ce115e37 assets/modulargolems/models/item/wither.json 0dc8ca7ae46ef5605100c5dd2424445af86751d6 assets/modulargolems/models/item/wither_blue.json 909e18174e149e383ce25c70a54c9e1fb28f2ae4 assets/modulargolems/models/item/wither_purple.json -f89bb8abd7364635e90923e51514b09ec6b29d2e data/modulargolems/advancements/golems/anvil_fix.json -f7317487ed9951d461023cc6a27a875a5f8faa6c data/modulargolems/advancements/golems/apply.json -f985d4a5ce589a9aa17eb391e10c00136c329f52 data/modulargolems/advancements/golems/apply_sculk.json -696f487304da52668c9cf17a37287c785aa48347 data/modulargolems/advancements/golems/command.json -3f5fa56c3c60eecd9e2e94e421780d112ebe397c data/modulargolems/advancements/golems/craft.json -cb3aa0eedab136d8a8a4b6c740b388904405558a data/modulargolems/advancements/golems/dog.json -c0340846972219667fa3d055d795018605189f08 data/modulargolems/advancements/golems/full.json -9e245b31e5061d5dd4eea4976818cd0cb08f69cc data/modulargolems/advancements/golems/fully_equipped.json -d4f01c47d351b5489dff3041ad3f12a12e1bdf4e data/modulargolems/advancements/golems/hot_fix.json -93793e2ce43b35129380aa72f4001a5179417cac data/modulargolems/advancements/golems/humanoid.json -e661b18910dd15080ef69d67f0ec4bf396a23387 data/modulargolems/advancements/golems/kill_creeper.json -2370cc820c35011bca66406ee31c25870821d86a data/modulargolems/advancements/golems/kill_guardian.json -78228115cf8251acf3a0b455cd347e17d3aae0fd data/modulargolems/advancements/golems/kill_warden.json -18a57ee49d0945eedc52334e374224159c4a76e0 data/modulargolems/advancements/golems/oops.json -266315e2f4223e86e4257c013e441dd79fff8430 data/modulargolems/advancements/golems/recycle.json -c02e6d1eeedc8b6002814854f479d45fc2b44325 data/modulargolems/advancements/golems/retrieve.json -a604c0b1a63341e77199dc2ea9094b8cd44bcc52 data/modulargolems/advancements/golems/root.json -38ceb3f12c43ec830edb64a9f4eaa20b45a707a3 data/modulargolems/advancements/golems/sponge.json -d563e2c5b2f8ea20ebcb0fae68ce70694c66c6b8 data/modulargolems/advancements/golems/start.json -83c4d8cb9057a01e8279640f9319048f889ccc21 data/modulargolems/advancements/golems/swim.json -2ccccc522e7977f5973f9bfe05783ffac295d53f data/modulargolems/advancements/golems/thunder.json -a3bac15e73f608a634a62fbb7c0c307a3a23a59d data/modulargolems/advancements/golems/upgrade.json -34ae78cfae697dffc012b5a41c2ac1a99634db52 data/modulargolems/advancements/recipes/modulargolems.golems/attack_high.json -54a6687779370033bdae83ca985d6a1ce4a11454 data/modulargolems/advancements/recipes/modulargolems.golems/bell.json -2830f39d025b466dd3eddbb715d4679ccd2e14e8 data/modulargolems/advancements/recipes/modulargolems.golems/carminite.json -254ecaf0b7ecaa412b5f7e40bc75cdb612a9579d data/modulargolems/advancements/recipes/modulargolems.golems/cauldron.json -17ddd600e42198dd99aca74542fe0704ec26af3a data/modulargolems/advancements/recipes/modulargolems.golems/cleanse.json -ac8b4e6888556d268cb4ac7b5feb8c46ed552809 data/modulargolems/advancements/recipes/modulargolems.golems/coating.json -4d3fe9dc4e3126d2ef41aa5e72e0ae08d154c038 data/modulargolems/advancements/recipes/modulargolems.golems/command_wand.json -68ec7c48bf7eb3846942e61afb4a0584e1225d20 data/modulargolems/advancements/recipes/modulargolems.golems/curse.json -51810bd0a77016a12eb2ec13a2699c586cf70126 data/modulargolems/advancements/recipes/modulargolems.golems/diamond.json -7ba7a18a215d899690ecc0d97ed90017e7156b6d data/modulargolems/advancements/recipes/modulargolems.golems/dog_golem_body_from_metal_golem_template_stonecutting.json -4c4e689df776050233091e9e92e504c7ad172a98 data/modulargolems/advancements/recipes/modulargolems.golems/dog_golem_holder.json -f7b092e08764c3f721d7dbcc4af7318e20a07877 data/modulargolems/advancements/recipes/modulargolems.golems/dog_golem_legs_from_metal_golem_template_stonecutting.json -32ac075a5af3db2548ec1b026db5df87c62579ad data/modulargolems/advancements/recipes/modulargolems.golems/emerald.json -23be9b246cea87fcc6b8e9f0991ac9a3d4423cb6 data/modulargolems/advancements/recipes/modulargolems.golems/empty_upgrade.json -f8b8cb5bda575ab8b6da5168226e6e7942d2ed0f data/modulargolems/advancements/recipes/modulargolems.golems/enchanted_gold.json -3513860c4b384510401c292aeefe96ff100a9001 data/modulargolems/advancements/recipes/modulargolems.golems/ender_sight.json -924498047b010ba7687b7d35564e63e34ea84057 data/modulargolems/advancements/recipes/modulargolems.golems/fiery.json -4c230b0facdf735d718409416ea135dd12406e26 data/modulargolems/advancements/recipes/modulargolems.golems/fire_immune.json -0599f5155b481c5a89cae30249c01a5f3fb160fe data/modulargolems/advancements/recipes/modulargolems.golems/float.json -cb708ff27fc5d82ba2f1616cc86159ccfa90449d data/modulargolems/advancements/recipes/modulargolems.golems/force_field.json -cba4e7272df54a416f666f338c26087eef86ca29 data/modulargolems/advancements/recipes/modulargolems.golems/freezing.json -72b4637530730f8355807b65a01de357ee6f38ff data/modulargolems/advancements/recipes/modulargolems.golems/gold.json -79d1cd2907bf349c66727d6a7c10037f9280b6aa data/modulargolems/advancements/recipes/modulargolems.golems/humanoid_golem_arms_from_metal_golem_template_stonecutting.json -3915a58aafc59399f2ffdaa7f09a946726836cf6 data/modulargolems/advancements/recipes/modulargolems.golems/humanoid_golem_body_from_metal_golem_template_stonecutting.json -ae0017c3967c0bb3cdb09f93c63c0d6eb5845cfb data/modulargolems/advancements/recipes/modulargolems.golems/humanoid_golem_holder.json -e60f2cda4877885d566c005a2e82360cfdfbd6b8 data/modulargolems/advancements/recipes/modulargolems.golems/humanoid_golem_legs_from_metal_golem_template_stonecutting.json -69f7ab42d515194e7a05a822f3f718736a3b7dc6 data/modulargolems/advancements/recipes/modulargolems.golems/incarcerate.json -71ec42adf07fdfe85e08c12fb5130924aed0faef data/modulargolems/advancements/recipes/modulargolems.golems/ironwood.json -9be86d11040d99e21d81b9910cd6d289d9c9f9b4 data/modulargolems/advancements/recipes/modulargolems.golems/knightmetal.json -30d19b866a832a8496bf71022520fbae315c71a8 data/modulargolems/advancements/recipes/modulargolems.golems/metal_golem_arm_from_metal_golem_template_stonecutting.json -30ee9d924135b06147bcbb01ad703a54daf4d941 data/modulargolems/advancements/recipes/modulargolems.golems/metal_golem_body_from_metal_golem_template_stonecutting.json -a012acb7f8f7cc8b2c2f1f29d64b2714943bdbf5 data/modulargolems/advancements/recipes/modulargolems.golems/metal_golem_holder.json -310a437f278ac90e82c7c86b8e5e2dd9cbd7e747 data/modulargolems/advancements/recipes/modulargolems.golems/metal_golem_legs_from_metal_golem_template_stonecutting.json -15229999b1591f0efc05e8c061579519a02d8fdc data/modulargolems/advancements/recipes/modulargolems.golems/metal_golem_template.json -731fa6c0d3974ec3d5eae9b5506011422b406aae data/modulargolems/advancements/recipes/modulargolems.golems/naga.json -5b7a8fb293026e629c979a5ca98c60eac1e17def data/modulargolems/advancements/recipes/modulargolems.golems/netherite.json -172e6db361821a56c2405338cce021836871cced data/modulargolems/advancements/recipes/modulargolems.golems/pickup.json -32b311509bcb806ce2642fcdd5b49aa6e08fc95c data/modulargolems/advancements/recipes/modulargolems.golems/pickup_mending.json -76b22c8c5dd9d74cb8c84dd1b6aa064039aef035 data/modulargolems/advancements/recipes/modulargolems.golems/pickup_no_destroy.json -752ac37112773de5cd7096b9bca102b90490f1f7 data/modulargolems/advancements/recipes/modulargolems.golems/player.json -c1258b5a005712976cb062df85d02547c0978c57 data/modulargolems/advancements/recipes/modulargolems.golems/push.json -c4bba2eab798b9e9b8b43f53f39bdb9bf0b06917 data/modulargolems/advancements/recipes/modulargolems.golems/quartz.json -6a8dc7e4e05ada3760a7f463d253c7dcc3184a34 data/modulargolems/advancements/recipes/modulargolems.golems/recycle.json -2e2a43768bba1deaea6b7f5a08d07cdc8833dc20 data/modulargolems/advancements/recipes/modulargolems.golems/retrieval_wand.json -49cec4f5bec39b6fa8c7c85ff4604b881afc8abb data/modulargolems/advancements/recipes/modulargolems.golems/slow.json -d8519b749a689966ec059d151e53cdcd8eed2449 data/modulargolems/advancements/recipes/modulargolems.golems/soul_flame.json -c427565759e26b290384cf02a125824e9768e95d data/modulargolems/advancements/recipes/modulargolems.golems/speed.json -f76aae1f9fcc266120bf649bc77d94d73ffc9b33 data/modulargolems/advancements/recipes/modulargolems.golems/speed_high.json -c8b1ed809385c3038f970c11d4e85e3b7066f973 data/modulargolems/advancements/recipes/modulargolems.golems/sponge.json -4edf7e5cecacb36611911fc1932fc215932c9db2 data/modulargolems/advancements/recipes/modulargolems.golems/steeleaf.json -22783fe81c05722a447bf5d42cd4552c99520853 data/modulargolems/advancements/recipes/modulargolems.golems/summon_wand.json -0b50787fe3a4d36976919455ceebb866a5ef6244 data/modulargolems/advancements/recipes/modulargolems.golems/swim.json -0fa557f41f03e0dab00d9b92fc3633f06de3f9da data/modulargolems/advancements/recipes/modulargolems.golems/talented.json -f88dfa07af9fb5e08f39cc015385654ec5bc6c39 data/modulargolems/advancements/recipes/modulargolems.golems/teleport.json -e4c94128fe6684b04d6bd8851f17be7a48df8b15 data/modulargolems/advancements/recipes/modulargolems.golems/thunder_immune.json -1cfaace658e94a660ebad688d459d04f1c7000df data/modulargolems/advancements/recipes/modulargolems.golems/weak.json -65d44b805103bd6d0ebc16bfddc4acb94b092b5a data/modulargolems/advancements/recipes/modulargolems.golems/wither.json -820ecfbc2bb79f24a8b8f480a25fb968e3946898 data/modulargolems/recipes/attack_high.json -276454b8be7b5028d68728239dcbccf00c7df126 data/modulargolems/recipes/bell.json -5c501264402361dd8adfe6c5752856234d3221f1 data/modulargolems/recipes/carminite.json -073ce51e3150b4470e71b503606223d8f118a2d2 data/modulargolems/recipes/cauldron.json -528096cba884c14f0cda924eb1d4d91627a66afc data/modulargolems/recipes/cleanse.json -b925c12ec50e6449c0ef8948756f9adb92b2fb1a data/modulargolems/recipes/coating.json -969737428af35e17931e83a6bc5c2bc96b6384ab data/modulargolems/recipes/command_wand.json -90b1baf5ca7a2798d6b97bf6a16541819c479da9 data/modulargolems/recipes/curse.json -e4a23f397535b40b50f9448eb185ae54e0727c25 data/modulargolems/recipes/diamond.json +dbc88df4cfcff5888207cc5474fd10d66fab5e5c data/minecraft/tags/entity_types/fall_damage_immune.json +00d8c85f271338f864988387d5a5890dee8691aa data/modulargolems/advancements/golems/anvil_fix.json +0a358f517ad4a93b86bb584a16e2ec935a9a5f4c data/modulargolems/advancements/golems/apply.json +e6f98fd447ec8c46bf7ed55bd40fe772a81cf31f data/modulargolems/advancements/golems/apply_sculk.json +774daf32cc6267f181b949bc3efb786c54d5c6ec data/modulargolems/advancements/golems/command.json +febc0e2a27b1ff3c4e8f14cd7e237a0d0682c377 data/modulargolems/advancements/golems/craft.json +503b0ca2a41e95dcaf1656605164d0ae0d17bb73 data/modulargolems/advancements/golems/dog.json +0fb010c03c67882976f3ba6bb7fed88e61551be3 data/modulargolems/advancements/golems/full.json +8a4f6379dd27d2653d5e63ae763d8be1159f808b data/modulargolems/advancements/golems/fully_equipped.json +6b57e4ab47eb436d08bc164bfd814f32a3f7c03e data/modulargolems/advancements/golems/hot_fix.json +d6afb1ca884f597c7dfa484418b650a934ea98d0 data/modulargolems/advancements/golems/humanoid.json +eb3f785b98c1af6f2859d044ef676a5ce044f8f1 data/modulargolems/advancements/golems/kill_creeper.json +f6bdc2bf4fa115e91dd4b29d712e0e5109071d18 data/modulargolems/advancements/golems/kill_guardian.json +bef87c982b33c5e7c5bdfed73bf83693b92043ce data/modulargolems/advancements/golems/kill_warden.json +30f2922be0bbdfd6edc33cd9eb1f64b102bac82f data/modulargolems/advancements/golems/max.json +06d033879b4f0f66378f24e50fc91a60edd3bd12 data/modulargolems/advancements/golems/oops.json +cbc5d5e1ed31487716326811d3404dea6960749d data/modulargolems/advancements/golems/recycle.json +46ea5362752a9e3230452094debdd7a30dabeb32 data/modulargolems/advancements/golems/retrieve.json +b9aba1da22efbb880a2ca1ed9b6abe3461ef885b data/modulargolems/advancements/golems/root.json +686ce3263229eb15ab99571504b8bdaf3f6966fa data/modulargolems/advancements/golems/sponge.json +a4f1403e986a9ec9d851d3ece928bc7d6873f135 data/modulargolems/advancements/golems/start.json +19728c7c51637de83636c009eb402ed8fa87fd94 data/modulargolems/advancements/golems/summon.json +b3b0ad07337ab0888239a5f7c433b73e6d78d95f data/modulargolems/advancements/golems/summon_mass.json +559985e6e0046ad9f2b44ab419a2f8325071405e data/modulargolems/advancements/golems/swim.json +dfbf4b51d291ee09b4147015497695c6941efff9 data/modulargolems/advancements/golems/thunder.json +da47e70d8f7aa7bd826a56743038fd4426055b16 data/modulargolems/advancements/golems/upgrade.json +9348b34d10f02f1c22814e4f8e5e015fd93d095a data/modulargolems/advancements/recipes/dog_golem_holder.json +69baadfa3d025bbe1bcb46accf3265bc08c41cdd data/modulargolems/advancements/recipes/humanoid_golem_holder.json +f0bd4b8677ae41c429c57aa478aad881968c1e5d data/modulargolems/advancements/recipes/metal_golem_holder.json +13d6c326177828eb6a5e3375189ee37305866e8b data/modulargolems/advancements/recipes/misc/attack_high.json +d5f81fdf9acbc57848c6bdc49172ddd91a172c3d data/modulargolems/advancements/recipes/misc/bell.json +ab872970d5dd26c0d362a6f43e612699cb056796 data/modulargolems/advancements/recipes/misc/carminite.json +1c8e74e51219ddc77ff2757e195d6a8eb8589e4c data/modulargolems/advancements/recipes/misc/cauldron.json +bd725583c25e81f220e22f0232864cb8c87f802f data/modulargolems/advancements/recipes/misc/cleanse.json +cbeb15c5a7a3e734d41ceaa97a9e2efadfb77381 data/modulargolems/advancements/recipes/misc/coating.json +6850db593d766f76dbb2b8e4921a8825d69cb74e data/modulargolems/advancements/recipes/misc/command_wand.json +1e63adada15650ab15cdbdf932965a2972613f4e data/modulargolems/advancements/recipes/misc/curse.json +40870aa4291c40a008511c31b1e4624ec05cecd5 data/modulargolems/advancements/recipes/misc/diamond.json +d5bf605e421273260d8b40a128dec2aa51ee01fc data/modulargolems/advancements/recipes/misc/dog_golem_body_from_metal_golem_template_stonecutting.json +d4d8ba0a2a43072dc65702a4dc106317e11d0300 data/modulargolems/advancements/recipes/misc/dog_golem_legs_from_metal_golem_template_stonecutting.json +3dda18c999b8103ceb02db6e9dd5c7848b145e20 data/modulargolems/advancements/recipes/misc/emerald.json +b56a367a19015fa55003ad4b950fda895ad16958 data/modulargolems/advancements/recipes/misc/empty_upgrade.json +e78e9556b999e63cbe31525e42ed88abfeda064a data/modulargolems/advancements/recipes/misc/enchanted_gold.json +911ce7294fe9570a324fd370376cd3db17fe47eb data/modulargolems/advancements/recipes/misc/ender_sight.json +70b7d92d1c007d356758b5ef6ffa73e6fac98abb data/modulargolems/advancements/recipes/misc/fiery.json +50604800c88c51c9af7cc9242868290acc42b046 data/modulargolems/advancements/recipes/misc/fire_immune.json +3197c6db3c5a7f2fb65aee849c177a0158019d66 data/modulargolems/advancements/recipes/misc/float.json +a240f3654af1de3aabb1d9a1613e2c7f397ce51a data/modulargolems/advancements/recipes/misc/force_field.json +466458bfffc562406c8f227694d706524a72d621 data/modulargolems/advancements/recipes/misc/freezing.json +3908bc3930ee76685d630aa30221b7cbc56b3e1c data/modulargolems/advancements/recipes/misc/gold.json +378789b8f352e09df30a547241c0be84b52ed4f6 data/modulargolems/advancements/recipes/misc/humanoid_golem_arms_from_metal_golem_template_stonecutting.json +dbcb20f92ebdc75e6e2cc4fe0bca33bd8e9df644 data/modulargolems/advancements/recipes/misc/humanoid_golem_body_from_metal_golem_template_stonecutting.json +d0c3625369b5a4dfa50a821453ad3fae9aa36f66 data/modulargolems/advancements/recipes/misc/humanoid_golem_legs_from_metal_golem_template_stonecutting.json +b6ed5b95aa16e1effaf6072b4c1ae3cb04a928ce data/modulargolems/advancements/recipes/misc/incarcerate.json +98dbc7e6bd7108f27f45fd9a65cc3d3c52b19d4a data/modulargolems/advancements/recipes/misc/ironwood.json +a6d3fd3388005ba1e561596ff098314630f5b01b data/modulargolems/advancements/recipes/misc/knightmetal.json +e16296d336461338eea97d3d8d218cc109327586 data/modulargolems/advancements/recipes/misc/metal_golem_arm_from_metal_golem_template_stonecutting.json +c642d5f8d69aff33b07a4b1faa56b0185cc939e7 data/modulargolems/advancements/recipes/misc/metal_golem_body_from_metal_golem_template_stonecutting.json +c1b4bdbcdc96dd8a014fc1ae69b398b08b27782d data/modulargolems/advancements/recipes/misc/metal_golem_legs_from_metal_golem_template_stonecutting.json +e3251f18da5aca47fc79bab127663d28f715ef0c data/modulargolems/advancements/recipes/misc/metal_golem_template.json +205dca104fcfaeac323d0b9467dbe97c50c61e52 data/modulargolems/advancements/recipes/misc/mount_upgrade.json +6dbca10c0bbc39d351617404d6a9e511f98bf820 data/modulargolems/advancements/recipes/misc/naga.json +9e98b4a9bbb25a92a72332b7ad1ea01232be134d data/modulargolems/advancements/recipes/misc/netherite.json +2777cc61d18dda8ecac7aad840855a2b1f8701d1 data/modulargolems/advancements/recipes/misc/pickup.json +8e09ac5756655c990c0786a4364476f13c83dcce data/modulargolems/advancements/recipes/misc/pickup_mending.json +bc7aa8ddb85918323552e6c03b13006a54f52374 data/modulargolems/advancements/recipes/misc/pickup_no_destroy.json +ed27a87f4eda64520ce010f7e7c62c6ce6813cf7 data/modulargolems/advancements/recipes/misc/player.json +c6dd4528809e59a22d4e289acb7d77d906f5b69c data/modulargolems/advancements/recipes/misc/push.json +c218033bbe3423be86035065081396f8a71f8328 data/modulargolems/advancements/recipes/misc/quartz.json +1c92909085390ec174c4b6eaf7db94bdf765aa00 data/modulargolems/advancements/recipes/misc/recycle.json +c227590eb5ca9d4a9d65097ab13a0f46c2533e45 data/modulargolems/advancements/recipes/misc/retrieval_wand.json +ed39880bc34f752825104e8bb4c6c99b076d7937 data/modulargolems/advancements/recipes/misc/rider_wand.json +cd3d461da9e3596b3dcc9b4b0e9188bf30e62bd7 data/modulargolems/advancements/recipes/misc/size_upgrade.json +56a540d864d597cef24d86bf4c5f9d8eeec20293 data/modulargolems/advancements/recipes/misc/slow.json +9f39b5a3767272c06dc77d7fe150d0c454ceb795 data/modulargolems/advancements/recipes/misc/soul_flame.json +627d92d7e87e933577d8cece7d75f6cc2032232e data/modulargolems/advancements/recipes/misc/speed.json +cfde8d73afaef759712bdee3a2c1b978fe4e935c data/modulargolems/advancements/recipes/misc/speed_high.json +a3866c71e7326f6154c663ebd8be4c827f1ae123 data/modulargolems/advancements/recipes/misc/sponge.json +b2bdc1aded0934f24125df9c801cce0337dff570 data/modulargolems/advancements/recipes/misc/steeleaf.json +b2d88416356010da872d0b3e8ed1da5b8b134107 data/modulargolems/advancements/recipes/misc/summon_wand.json +aa392005338f2bae947d909740fb58d6b5294365 data/modulargolems/advancements/recipes/misc/swim.json +fa6ee22f621d33f3053e6bc2510562d4ef04d1f3 data/modulargolems/advancements/recipes/misc/talented.json +6c0737c7f12bb62a478417d3e7ab278472f4bc33 data/modulargolems/advancements/recipes/misc/teleport.json +fff30739cdc8c24a517b6b30c8f8585de6692ae8 data/modulargolems/advancements/recipes/misc/thunder_immune.json +dd17408e0fdf30285dd1534eca432a6f9bdd57f6 data/modulargolems/advancements/recipes/misc/weak.json +88cb74955a17890a8b6145b1fe8a08ede31ddf82 data/modulargolems/advancements/recipes/misc/wither.json +099c42fa75a3de39faf9a5a2035e9fd8a10ea35d data/modulargolems/recipes/attack_high.json +37829b88e4ef8393bce5a75d0836f39e9e7ab811 data/modulargolems/recipes/bell.json +dc596e8c44d0890a56ae27706218e3de079d8117 data/modulargolems/recipes/carminite.json +14116fafa811f1fee2e277815f5ca26773f18142 data/modulargolems/recipes/cauldron.json +b837bbb8a0c237ebd1efa48ea3679f43355889f4 data/modulargolems/recipes/cleanse.json +f77c34eccde4a298f24edbbd712c374f7c38e5f5 data/modulargolems/recipes/coating.json +56f97d9a7c9740dab60608888045879b7278ebd5 data/modulargolems/recipes/command_wand.json +0816a6534ed85903cbad82f712e987366858cfcc data/modulargolems/recipes/curse.json +c43c0fa86027cbff515983bb84e036820d1f879b data/modulargolems/recipes/diamond.json 7c77fca8fb6291ec838b12969ed6b8071052c3e2 data/modulargolems/recipes/dog_golem_body_from_metal_golem_template_stonecutting.json -7d221b382d4a1ad88dcab6cbad2730782c65a94d data/modulargolems/recipes/dog_golem_holder.json +ddc0f24d831849206f4207291ab74e00766895f3 data/modulargolems/recipes/dog_golem_holder.json c6deded7a4f51cd808017d2bf9275ee389b6f7d9 data/modulargolems/recipes/dog_golem_legs_from_metal_golem_template_stonecutting.json -7947906692cacff8dd114aa0620824258a63a29b data/modulargolems/recipes/emerald.json -63908e772258a1e5c1b19caa0db3100c821bb671 data/modulargolems/recipes/empty_upgrade.json -8181ff1d0fd0ed4dffa4a1ad918fb98d07c4c0c1 data/modulargolems/recipes/enchanted_gold.json -e75629270334cf4a3fa143918664556212a442ff data/modulargolems/recipes/ender_sight.json -963dabead1e659043db43ebedd8449f726557aea data/modulargolems/recipes/fiery.json -9640a090e6b2049dce14306b40183b1d416f9d83 data/modulargolems/recipes/fire_immune.json -18de16ae82161aedc58a5c10f3867200dbacb958 data/modulargolems/recipes/float.json -45b2c59a0c8addac1a8318d23a96d4ceed003ab1 data/modulargolems/recipes/force_field.json -1d428a07ec9bee80c615e889a1fe9b4ed2dd4d86 data/modulargolems/recipes/freezing.json -d048b857e047104f4c6c5ff2f1c30839a321a133 data/modulargolems/recipes/gold.json +e93d5c4a0a20f11cc244d5e71cb0c94b6d404657 data/modulargolems/recipes/emerald.json +e8a36d544b3950c8927325b92219dfb834d865f4 data/modulargolems/recipes/empty_upgrade.json +e3b4a93720ca1fcd176c390e9f199bca8ea20c89 data/modulargolems/recipes/enchanted_gold.json +ae7db28eb51c0d8fb3a3c254710d6cc05965c133 data/modulargolems/recipes/ender_sight.json +1fb65af0faf7ed3b1465aa32baace4b973049725 data/modulargolems/recipes/fiery.json +e8d35564be3b5f3ac87ca87d1cc70ee38d04a833 data/modulargolems/recipes/fire_immune.json +79a8c10a3241829b5dcb1f9b143c449b68f821cd data/modulargolems/recipes/float.json +2ee6e339353537d118258683171c183fc8a26296 data/modulargolems/recipes/force_field.json +2360daf4216b29300b7cf9a300215aa7a9e65c19 data/modulargolems/recipes/freezing.json +990bf49c01d89b0a0a662ffaddbf658e424218c6 data/modulargolems/recipes/gold.json 1ba51d77ecfb0c508600960e226fc3f3a0338600 data/modulargolems/recipes/humanoid_golem_arms_from_metal_golem_template_stonecutting.json f9374f863ebf991639c9a9f98362d8347adcff09 data/modulargolems/recipes/humanoid_golem_body_from_metal_golem_template_stonecutting.json -0e2fa136bb918279318d5e6357af38e05d793aeb data/modulargolems/recipes/humanoid_golem_holder.json +05a2e682e872a84f02400f8ec20c87d247f0b465 data/modulargolems/recipes/humanoid_golem_holder.json f27446fa7ace6efc162fd9c0f59f10ff91b136b3 data/modulargolems/recipes/humanoid_golem_legs_from_metal_golem_template_stonecutting.json -c4ef13fbda50b15eee8b1bc33920e872eabd6596 data/modulargolems/recipes/incarcerate.json -0ca28f77a56351855dfc61639a26997db2812931 data/modulargolems/recipes/ironwood.json -c681e2a52665b679d69088f7887d8a598491d857 data/modulargolems/recipes/knightmetal.json +7be370db42bf24fdf79d5b1e153abcc882828298 data/modulargolems/recipes/incarcerate.json +542ba364939078611c83add645e35a4188466221 data/modulargolems/recipes/ironwood.json +8b666537f2fcc4b87b9d672c5c9ef9ac85915deb data/modulargolems/recipes/knightmetal.json 1939d0383543026b38bc08beb5a80a485db8f739 data/modulargolems/recipes/metal_golem_arm_from_metal_golem_template_stonecutting.json ed9146bed7ed4f73898a52b747410f53b7efa544 data/modulargolems/recipes/metal_golem_body_from_metal_golem_template_stonecutting.json -7b08937c0372b538fdd5877c67167fef96c98a62 data/modulargolems/recipes/metal_golem_holder.json +5d2af1d8e3877408fda635c70fcfd3ff340526c4 data/modulargolems/recipes/metal_golem_holder.json b4f958b915e3d624f0a149fe06471a8d0445ff51 data/modulargolems/recipes/metal_golem_legs_from_metal_golem_template_stonecutting.json -52eeadda436bd3484ab98f0c533efaaf912f9e99 data/modulargolems/recipes/metal_golem_template.json +71fabab803d96f283ae692baa9ae07234be3ca3d data/modulargolems/recipes/metal_golem_template.json 2d433ae5b140983ecf2912be7d71798a994537ff data/modulargolems/recipes/mixing/dog_golem_body_apply_andesite_alloy.json 8f412704d25e39172a7c065c9196e0b074be80f8 data/modulargolems/recipes/mixing/dog_golem_body_apply_brass.json -766c1566c107ee00f50b6bd2213bcb114b6dbc59 data/modulargolems/recipes/mixing/dog_golem_body_apply_brimsteel.json ea1eef33559e3672221359e6d7951ee31d5c57ee data/modulargolems/recipes/mixing/dog_golem_body_apply_copper.json bf82031c617240e1534b08df4e93501a14451e11 data/modulargolems/recipes/mixing/dog_golem_body_apply_eternium.json 385195f3e9edba9512c8462905d8a801020493ff data/modulargolems/recipes/mixing/dog_golem_body_apply_fiery.json @@ -273,7 +288,6 @@ ce8869d4275c2b5c10f8bd99a49660ce2fbe6ece data/modulargolems/recipes/mixing/dog_g 891696e01a272b41813744c7c538fd99d94249f3 data/modulargolems/recipes/mixing/dog_golem_body_apply_zinc.json 7617bf194ec218b6f98627c8652513ecbe8d0bb8 data/modulargolems/recipes/mixing/dog_golem_legs_apply_andesite_alloy.json ce87fa5d78eadd9e2481a206d66bd88efddc7182 data/modulargolems/recipes/mixing/dog_golem_legs_apply_brass.json -e3748d3e51f66ea49c11d7ce4a8eb4395d66edca data/modulargolems/recipes/mixing/dog_golem_legs_apply_brimsteel.json 534e649465f6d80e0698cf03d145455501af010f data/modulargolems/recipes/mixing/dog_golem_legs_apply_copper.json d2ee96d593ee3e6b63ca3283b8cec5b67ab60533 data/modulargolems/recipes/mixing/dog_golem_legs_apply_eternium.json 26a224cd60424f5bbbb0d43aae95d45c7eb0ecd9 data/modulargolems/recipes/mixing/dog_golem_legs_apply_fiery.json @@ -291,7 +305,6 @@ b929d5a60cb216412145bdb0d75005f9488c7e89 data/modulargolems/recipes/mixing/dog_g e370f6ff4ef016c1a0d9588793e175a30f144edd data/modulargolems/recipes/mixing/dog_golem_legs_apply_zinc.json 665cfad00fb9332e4ce5eba55ec55636d87bd332 data/modulargolems/recipes/mixing/humanoid_golem_arms_apply_andesite_alloy.json 76845ebf8d32925b4c2d214be95e74f6e0567da6 data/modulargolems/recipes/mixing/humanoid_golem_arms_apply_brass.json -a24c3294294ba1b6de8bbfffd9f3d46a4c876e48 data/modulargolems/recipes/mixing/humanoid_golem_arms_apply_brimsteel.json 1fdd49923376e91282bc4ca2ac65d13e22ba447e data/modulargolems/recipes/mixing/humanoid_golem_arms_apply_copper.json 8f06daa117e1423efbf7ad0ce9443746a2e36725 data/modulargolems/recipes/mixing/humanoid_golem_arms_apply_eternium.json 4e8a200b4f9ceaa5cfab617675178c20b17e833d data/modulargolems/recipes/mixing/humanoid_golem_arms_apply_fiery.json @@ -309,7 +322,6 @@ f06f6eefb081154e4928f3dc6d93c50c77791149 data/modulargolems/recipes/mixing/human 083b4040f26a437b088570d0880b4b6e88bc8115 data/modulargolems/recipes/mixing/humanoid_golem_arms_apply_zinc.json 7c0815028d253ee1e8a774c6ccfad94750145d5f data/modulargolems/recipes/mixing/humanoid_golem_body_apply_andesite_alloy.json bc5dfd38b730cd7189f89aea0b9323c9d3e440ca data/modulargolems/recipes/mixing/humanoid_golem_body_apply_brass.json -09a66cc559a4c002804a23396195ca596e0ae9d7 data/modulargolems/recipes/mixing/humanoid_golem_body_apply_brimsteel.json 5428402ef5929637d416c7db80f1c655d0e3c6ce data/modulargolems/recipes/mixing/humanoid_golem_body_apply_copper.json 80da5c0c702533b5bbfbfe01111bc275a78142cf data/modulargolems/recipes/mixing/humanoid_golem_body_apply_eternium.json 80f31fccbc54c12972d0b7375811572cb05812b5 data/modulargolems/recipes/mixing/humanoid_golem_body_apply_fiery.json @@ -327,7 +339,6 @@ de3c59d4ddc316bc84f75de540fae40884a528e0 data/modulargolems/recipes/mixing/human cb46b3527bf01eaa9338ef6b11233e5ce3f73782 data/modulargolems/recipes/mixing/humanoid_golem_body_apply_zinc.json 985c8b0f33047a334a17554cc4aa748b76ee67d1 data/modulargolems/recipes/mixing/humanoid_golem_legs_apply_andesite_alloy.json f339f1d0c4776b2a0beb4bdfe7f6749e67aaef86 data/modulargolems/recipes/mixing/humanoid_golem_legs_apply_brass.json -00a3900f222c46e098d656f0586320dcf8b35c72 data/modulargolems/recipes/mixing/humanoid_golem_legs_apply_brimsteel.json bcd66e5cec7224f19025b32d4ab24e6a39c66bed data/modulargolems/recipes/mixing/humanoid_golem_legs_apply_copper.json b87c9cf7e4df660097e6f8eb52142444e9832c43 data/modulargolems/recipes/mixing/humanoid_golem_legs_apply_eternium.json 74446955787cbaa601a915c6171816fb229e1885 data/modulargolems/recipes/mixing/humanoid_golem_legs_apply_fiery.json @@ -345,7 +356,6 @@ de4fbbcff04bbd019b38c51c4a488b9518deb95d data/modulargolems/recipes/mixing/human cca4ea47b4edcf762c371127c9c5f0f6dbe4670e data/modulargolems/recipes/mixing/humanoid_golem_legs_apply_zinc.json 97495129e6f57756270d4474043a2f3c925de2c2 data/modulargolems/recipes/mixing/metal_golem_arm_apply_andesite_alloy.json 1e6b7dbce26a3d185c54c649d416b5b311165066 data/modulargolems/recipes/mixing/metal_golem_arm_apply_brass.json -b992a83d49b4ea7e45b1749ffc78d2c301056c83 data/modulargolems/recipes/mixing/metal_golem_arm_apply_brimsteel.json ac6d92369a85482fce74dc5c9ad5eacaac99bc96 data/modulargolems/recipes/mixing/metal_golem_arm_apply_copper.json 19920869f376d06f1aeba0262bdf39b4271c4a35 data/modulargolems/recipes/mixing/metal_golem_arm_apply_eternium.json e805f6391f6edb370cb3edcd556e63c485de3fc2 data/modulargolems/recipes/mixing/metal_golem_arm_apply_fiery.json @@ -363,7 +373,6 @@ daa61c64734d6c7b361900ec24bef0f0bb96f7cd data/modulargolems/recipes/mixing/metal 6ea910b84ff9f2dd44d0e9c4ade90e1c6dbeec5b data/modulargolems/recipes/mixing/metal_golem_arm_apply_zinc.json 3341ed6da14bdd6f5a4e80193e24c5f4a11b7674 data/modulargolems/recipes/mixing/metal_golem_body_apply_andesite_alloy.json 1d3942795c72493a5a52ac306e108cc9bf9491c4 data/modulargolems/recipes/mixing/metal_golem_body_apply_brass.json -76eb2ca6ddf15c4e4e1d676a20a025058f2adbe1 data/modulargolems/recipes/mixing/metal_golem_body_apply_brimsteel.json ee20b9b110e8ebe8dd5249ae4b67f2516209cf6a data/modulargolems/recipes/mixing/metal_golem_body_apply_copper.json f1fe74bfe44413c2624a93189626c282bcdfd6f2 data/modulargolems/recipes/mixing/metal_golem_body_apply_eternium.json 6aeb59aa7b9df1ecdc524d654b21ec16130ce057 data/modulargolems/recipes/mixing/metal_golem_body_apply_fiery.json @@ -381,7 +390,6 @@ dc80264d955a334740f820c0035176eff4f33e93 data/modulargolems/recipes/mixing/metal ac2cbd59209e5f135185dc659fea3ef4279496b3 data/modulargolems/recipes/mixing/metal_golem_body_apply_zinc.json 77bd0d44fcad20fb11bc45cbe4a8d1685fe5f1cb data/modulargolems/recipes/mixing/metal_golem_legs_apply_andesite_alloy.json 77d9996c536b5c002873febbda3f80c9362e7a5e data/modulargolems/recipes/mixing/metal_golem_legs_apply_brass.json -984935cd59842d8195a760fcd29eae18a0bc1ce7 data/modulargolems/recipes/mixing/metal_golem_legs_apply_brimsteel.json 89d846732608feec3788f266987bfa5790b207c5 data/modulargolems/recipes/mixing/metal_golem_legs_apply_copper.json 0a14b7a49cdb6f867062d2e08d1178af3f53de12 data/modulargolems/recipes/mixing/metal_golem_legs_apply_eternium.json 3b593d3ed23b746f45df194830ac39e1c1ff331a data/modulargolems/recipes/mixing/metal_golem_legs_apply_fiery.json @@ -397,34 +405,37 @@ bbf00f56bec2b74f5ba1c15a5499c3ecf86f18a2 data/modulargolems/recipes/mixing/metal f595b6656c8b543bbc7cb9da17acbdacbfd5546d data/modulargolems/recipes/mixing/metal_golem_legs_apply_steeleaf.json 17e8510a43a899d1baf0348523b8aff889ce6148 data/modulargolems/recipes/mixing/metal_golem_legs_apply_totemic_gold.json bb9b7e009797c02152dbac1e7246d143f14173ae data/modulargolems/recipes/mixing/metal_golem_legs_apply_zinc.json -f6a574afdac23a5033caee32f5ef29b14df64356 data/modulargolems/recipes/naga.json -93264f2b71c216864cc9c37eb456ec7d38e0f2c5 data/modulargolems/recipes/netherite.json -fb216ae83306e9b58250aa9d6de0d071cc100490 data/modulargolems/recipes/pickup.json -a87ab6cf969c3c5a12f313c11948faac28bdc512 data/modulargolems/recipes/pickup_mending.json -7354052a6d7386f194290935a508f6f96780b028 data/modulargolems/recipes/pickup_no_destroy.json -5096b633dca73336af81c2430d3e7951f660c897 data/modulargolems/recipes/player.json -1d33b6f261f1b142a87df8cd4b8adb30e2b5259d data/modulargolems/recipes/push.json -58dbc59506ca6a6d59e08c3574471985f9f73bd6 data/modulargolems/recipes/quartz.json -0845a186a0e58fee2207793853e91169514ce167 data/modulargolems/recipes/recycle.json -247cc4f54474d15bafd77d3d72a248ba99847c2a data/modulargolems/recipes/retrieval_wand.json -a4a2b7653e76b25efafb5e6b74b6d6bcc492a68b data/modulargolems/recipes/slow.json -2455c4126bf0de17267db1b53964b410a01f40ff data/modulargolems/recipes/soul_flame.json -61334fd75aad49409eaa8806de481c9863a8265c data/modulargolems/recipes/speed.json -eb1cb258a07ad6d0554672462f2b110c761b9396 data/modulargolems/recipes/speed_high.json -a70d4751e03d611b838cd3866f73758f0d71426d data/modulargolems/recipes/sponge.json -b283b14d4b2dd3fc3b73671b6f395f140e5a470a data/modulargolems/recipes/steeleaf.json -dc9828376ce7222eaf70e84e17da50c12da9b9a3 data/modulargolems/recipes/summon_wand.json -474005977ece2d82be8a4a375e3219c828d78384 data/modulargolems/recipes/swim.json -0682d58db9554ae7e9cfa3c3bff161c29e294fc5 data/modulargolems/recipes/talented.json -56ad9f8fdccbc67374e13efa7ea5748ccafa95e9 data/modulargolems/recipes/teleport.json -8d37017d64ca070a9fb157acf63de2533e1e8332 data/modulargolems/recipes/thunder_immune.json -0ad7acd8a6840da76ff7e097727b164a575f34b4 data/modulargolems/recipes/weak.json -9b42881e16fbd2fbe9aa80145fae6ff1f746f529 data/modulargolems/recipes/wither.json +57501440208be885119e58566b41cd24c7fc51cb data/modulargolems/recipes/mount_upgrade.json +f35e41872f3fd31391ef03fe15512a13d4ba462d data/modulargolems/recipes/naga.json +ead1daedeac3a0c63e7a57efb07a08b366453ce7 data/modulargolems/recipes/netherite.json +391f45ef0d44da0ede912428113260b725ff316f data/modulargolems/recipes/pickup.json +a69a822fa8ec61ccc4b2fd575af1cca68a66cb96 data/modulargolems/recipes/pickup_mending.json +f3718131eae9ba7ca0bdebf28a10b85feb6a2c6f data/modulargolems/recipes/pickup_no_destroy.json +ec15c8227c15a4205c92df00cc30cd6fab1abe0b data/modulargolems/recipes/player.json +3dfc7682c3e68f8b50cb40e2d111ae32d73467cf data/modulargolems/recipes/push.json +eb32a59cf3080c68e079b253b3076aed0157ca21 data/modulargolems/recipes/quartz.json +56978dda4f0c7b1c846bab8332497110ff089179 data/modulargolems/recipes/recycle.json +00390e623b970f5214794c01704368f45184fbb9 data/modulargolems/recipes/retrieval_wand.json +cdd31f40a88dec691b6f7cd074308dea093d05e1 data/modulargolems/recipes/rider_wand.json +6607b5c5a4f574ae954a93b6ab6abbbb4b6668e8 data/modulargolems/recipes/size_upgrade.json +fc94a2325d9a53e88d19f9caa0d0217544a31624 data/modulargolems/recipes/slow.json +04c757e7cc9487979a129225070ab43c71155fe5 data/modulargolems/recipes/soul_flame.json +b19c0d80bbf67416d11880c1d224e220fe0c5fff data/modulargolems/recipes/speed.json +71d7469410a5a0939e646e3f182e92a3536460b8 data/modulargolems/recipes/speed_high.json +5082160f7260f8beeae05d04de0bfbf182fad776 data/modulargolems/recipes/sponge.json +d00ae044d2adac435b2de1a582f35bdd4cc03542 data/modulargolems/recipes/steeleaf.json +c1db24f55c0282a9d4f5049ba5d109436203d90f data/modulargolems/recipes/summon_wand.json +e7b67a2fa84e944fbc131b6b64ccba4ba53c9a66 data/modulargolems/recipes/swim.json +eaa13151e5f28871118d08f10d2ed8c21730c132 data/modulargolems/recipes/talented.json +2c809280140b9b78dadff1af4e011f78e6a90ece data/modulargolems/recipes/teleport.json +c6d9643c5427fbbefa510044c33857e9f45f1d74 data/modulargolems/recipes/thunder_immune.json +c5a37fc9f116e739cdc4a66083e7cf2b3c2fa3ba data/modulargolems/recipes/weak.json +dfc824ea1db84c607a957dccfaf6b48710476ce7 data/modulargolems/recipes/wither.json 8c7f8c2a4ce49e14ec689a131ffac7866307c9ac data/modulargolems/tags/blocks/potential_destination.json 945fa724fc2c471d03c5f1e3da78d41a600d5703 data/modulargolems/tags/entity_types/friendly.json -52cb9fddebf86a2e526b567f788fbc05fa58c21a data/modulargolems/tags/items/blue_upgrades.json +9a17369f8d7f5dc37a148d5751d3ffc11bbe87e6 data/modulargolems/tags/items/blue_upgrades.json 0ff0909d28c29ae47fd17620ccf9d12ead26d8ca data/modulargolems/tags/items/holders.json 1ba3bd036f6d3eb09eda0bc155fc888fd108f440 data/modulargolems/tags/items/parts.json b6a68b2e48cecf36bcdf9a71fd230aa942ef5ab6 data/modulargolems/tags/items/potion_upgrades.json 3c136ad71b9cc1a962b06ab779e09369ea8e25a9 data/modulargolems/tags/items/sculk_materials.json -acbb51b2923527215fcb1e121d150178660525af data/modulargolems/tags/items/upgrades.json +a5616e54e26f54e3674142b91648ae033ec6f1d4 data/modulargolems/tags/items/upgrades.json diff --git a/src/generated/resources/.cache/2d3ea5b875c66ae812114f08baa5ff55f4a2744c b/src/generated/resources/.cache/2d3ea5b875c66ae812114f08baa5ff55f4a2744c index 06b5081ce..b7c503931 100644 --- a/src/generated/resources/.cache/2d3ea5b875c66ae812114f08baa5ff55f4a2744c +++ b/src/generated/resources/.cache/2d3ea5b875c66ae812114f08baa5ff55f4a2744c @@ -1,2 +1,2 @@ -// 1.19.2 2022-10-25T13:21:20.166076 Golem Config for Create -13c71c33ca77175878beaa9b62b3fca74a442255 data/create/golem_config/materials/create.json +// 1.20.1 2023-07-06T09:26:13.619368 Golem Config for Create +0a4dbd10a8384731f13d7f68dfa852ff147cc20f data/create/modulargolems_config/materials/create.json diff --git a/src/generated/resources/.cache/642a4d87803b7a1d2345e691607b2ac85233b06e b/src/generated/resources/.cache/642a4d87803b7a1d2345e691607b2ac85233b06e index 3343ceda5..8d020af5b 100644 --- a/src/generated/resources/.cache/642a4d87803b7a1d2345e691607b2ac85233b06e +++ b/src/generated/resources/.cache/642a4d87803b7a1d2345e691607b2ac85233b06e @@ -1,2 +1,2 @@ -// 1.19.2 2023-05-23T22:32:42.55486 Golem Config for L2Complements -78de036b76a1d54ed1837d005ff62c3a58db363c data/l2complements/golem_config/materials/l2complements.json +// 1.20.1 2023-07-06T09:24:53.45614 Golem Config for L2Complements +8edca3aa5e7e76d78c83388a3f899bde079c4885 data/l2complements/modulargolems_config/materials/l2complements.json diff --git a/src/generated/resources/.cache/6534a99362dd31fd37538b56d43033100f208687 b/src/generated/resources/.cache/6534a99362dd31fd37538b56d43033100f208687 deleted file mode 100644 index 17ddf8946..000000000 --- a/src/generated/resources/.cache/6534a99362dd31fd37538b56d43033100f208687 +++ /dev/null @@ -1,2 +0,0 @@ -// 1.19.2 2023-01-12T13:24:07.671501 Golem Config for BlazeGear -8e408b577a471fe01c70044659c75c091bfa0082 data/blazegear/golem_config/materials/blazegear.json diff --git a/src/generated/resources/.cache/7680bc12dd1f97f7626d19ff0abb81845e7fa9a8 b/src/generated/resources/.cache/7680bc12dd1f97f7626d19ff0abb81845e7fa9a8 index 8374859cd..7b7035505 100644 --- a/src/generated/resources/.cache/7680bc12dd1f97f7626d19ff0abb81845e7fa9a8 +++ b/src/generated/resources/.cache/7680bc12dd1f97f7626d19ff0abb81845e7fa9a8 @@ -1,3 +1,3 @@ -// 1.19.2 2023-02-02T15:56:30.015012 Golem Config -aed71e51e4c2e4f4623ed434e4f6171bb8ea04bb data/modulargolems/golem_config/materials/vanilla.json -194d5033ac631f15380a6fcb21898705e2599481 data/modulargolems/golem_config/parts/default.json +// 1.20.1 2023-07-15T16:59:45.311219 Golem Config +c2109e3144fe2e624e8895b77ea4815b55d19cd3 data/modulargolems/modulargolems_config/materials/vanilla.json +45c774627b2c77dbae4c65f4654dd7033fda2f83 data/modulargolems/modulargolems_config/parts/default.json diff --git a/src/generated/resources/.cache/dfd1a522ff3928bdce1dc0bdfd2f8caa94d4ae6d b/src/generated/resources/.cache/dfd1a522ff3928bdce1dc0bdfd2f8caa94d4ae6d index a9409caef..a8426f01c 100644 --- a/src/generated/resources/.cache/dfd1a522ff3928bdce1dc0bdfd2f8caa94d4ae6d +++ b/src/generated/resources/.cache/dfd1a522ff3928bdce1dc0bdfd2f8caa94d4ae6d @@ -1,2 +1,2 @@ -// 1.19.2 2022-09-17T09:03:04.171008 Golem Config for Twilight Forest -953130a614a3899b0044e6cdd7056c41a33b8fac data/twilightforest/golem_config/materials/twilightforest.json +// 1.20.1 2023-07-13T23:33:05.124286 Golem Config for Twilight Forest +297469adac9e599cd4602609f2913f40c79c5aec data/twilightforest/modulargolems_config/materials/twilightforest.json diff --git a/src/generated/resources/assets/modulargolems/lang/en_ud.json b/src/generated/resources/assets/modulargolems/lang/en_ud.json index 904aac76e..d1d18704d 100644 --- a/src/generated/resources/assets/modulargolems/lang/en_ud.json +++ b/src/generated/resources/assets/modulargolems/lang/en_ud.json @@ -11,7 +11,7 @@ "advancements.modulargolems.advancements.golems.craft.title": "ɯǝןo⅁ ʍǝN puɐɹᗺ Ɐ", "advancements.modulargolems.advancements.golems.dog.description": "˙ɯǝןo⅁ boᗡ ɐ ʇɟɐɹƆ", "advancements.modulargolems.advancements.golems.dog.title": "ʎbboᗡ pןoƆ ןɐʎoᴚ", - "advancements.modulargolems.advancements.golems.full.description": "ɯǝןob ɐ uo sǝpɐɹbdn ɟo ɹǝqɯnu ɯnɯıxɐɯ ǝɥʇ ʎןddⱯ", + "advancements.modulargolems.advancements.golems.full.description": "sʇoןs ǝpɐɹbdn ןןɐ dn ǝs∩", "advancements.modulargolems.advancements.golems.full.title": "ɯooᴚ ǝɹoW oN", "advancements.modulargolems.advancements.golems.fully_equipped.description": "˙pןǝıɥs ɐ puɐ 'pɹoʍs ɐ 'ʇǝs ɹoɯɹɐ ןןnɟ ɯǝןo⅁ poıuɐɯnH ǝʌı⅁", "advancements.modulargolems.advancements.golems.fully_equipped.title": "pǝddınbƎ ʎןןnℲ", @@ -25,6 +25,8 @@ "advancements.modulargolems.advancements.golems.kill_guardian.title": "sıʇuɐןʇⱯ ǝɥʇ ɟo puǝbǝꞀ", "advancements.modulargolems.advancements.golems.kill_warden.description": "uǝpɹɐM ɐ ןןıʞ ɯǝןob ɐ ʇǝꞀ", "advancements.modulargolems.advancements.golems.kill_warden.title": "snǝsǝɥ⟘ ɟo dıɥS", + "advancements.modulargolems.advancements.golems.max.description": "ɯǝןob ɐ uo sǝpɐɹbdn ᄅƖ ʎןddⱯ", + "advancements.modulargolems.advancements.golems.max.title": "puoʎǝᗺ puɐ ǝʌoqⱯ", "advancements.modulargolems.advancements.golems.oops.description": "ʇuǝɯdınbǝ ɟo ǝɔǝıd ɐ ʞɐǝɹq ɯǝןo⅁ pıouɐɯnH ʇǝꞀ", "advancements.modulargolems.advancements.golems.oops.title": "˙˙˙sdoO", "advancements.modulargolems.advancements.golems.recycle.description": "ɯǝןob ɐ uo ǝpɐɹbdn ǝןɔʎɔǝɹ ɐ ʎןddⱯ", @@ -37,18 +39,23 @@ "advancements.modulargolems.advancements.golems.sponge.title": "ɯǝןo⅁ pǝbboןɹǝʇɐM", "advancements.modulargolems.advancements.golems.start.description": "ʇɹɐd ɯǝןob ɐ oʇuı ʇı ʇnɔ oʇ ɹǝʇʇnƆ ǝuoʇS ǝsn puɐ ǝʇɐןdɯǝ⟘ ɯǝןo⅁ ɐ ʇɟɐɹƆ", "advancements.modulargolems.advancements.golems.start.title": "buıɥʇʎɹǝʌƎ ɟo buıuuıbǝᗺ ǝɥ⟘", + "advancements.modulargolems.advancements.golems.summon.description": "puɐʍ uoɯɯns ɐ ʇɟɐɹƆ", + "advancements.modulargolems.advancements.golems.summon.title": "uoıןɐʇʇɐᗺ ǝuɹoqɹıⱯ", + "advancements.modulargolems.advancements.golems.summon_mass.description": "ǝɔuo ʇɐ sɯǝןob ㄣᄅ ʇsɐǝן ʇɐ uoɯɯnS", + "advancements.modulargolems.advancements.golems.summon_mass.title": "ʎɹɐʇıןıW ǝןqɐʇɹoԀ", "advancements.modulargolems.advancements.golems.swim.description": "ɯǝןob ɐ uo ǝpɐɹbdn ɯıʍs ɐ ʎןddⱯ", "advancements.modulargolems.advancements.golems.swim.title": "ɹoıɹɹɐM ɐǝsɹǝpu∩", "advancements.modulargolems.advancements.golems.thunder.description": "ʇןoq buıuʇɥbıן ɐ ɥʇıʍ ʞɔnɹʇs ǝq ǝunɯɯı ɹǝpunɥʇ ɥʇıʍ ɯǝןob ɐ ʇǝꞀ", "advancements.modulargolems.advancements.golems.thunder.title": "poᴚ buıuʇɥbıꞀ buıʞןɐM", "advancements.modulargolems.advancements.golems.upgrade.description": "ǝpɐɹbdn uɐ uıɐʇqO", "advancements.modulargolems.advancements.golems.upgrade.title": "ɯǝןo⅁ ɹnoʎ ǝpɐɹbd∩", + "attribute.name.golem_jump": "ɥʇbuǝɹʇS dɯnſ ɯǝןo⅁", "attribute.name.golem_regen": "uǝbǝᴚ ɯǝןo⅁", + "attribute.name.golem_size": "ǝzıS ɯǝןo⅁", "attribute.name.golem_sweep": "ǝbuɐᴚ dǝǝʍS", "entity.modulargolems.dog_golem": "ɯǝןo⅁ boᗡ", "entity.modulargolems.humanoid_golem": "ɯǝןo⅁ pıouɐɯnH", "entity.modulargolems.metal_golem": "ɯǝןo⅁ ןɐʇǝW", - "golem_material.blazegear.brimsteel": "ןǝǝʇsɯıɹᗺ", "golem_material.create.andesite_alloy": "ʎoןןⱯ ǝʇısǝpuⱯ", "golem_material.create.brass": "ssɐɹᗺ", "golem_material.create.railway": "ʎɐʍןıɐᴚ", @@ -100,6 +107,8 @@ "item.modulargolems.force_field": "ǝpɐɹbd∩ ɹoɯɹⱯ ɹǝɥʇıM", "item.modulargolems.freezing": "buızǝǝɹℲ :ǝpɐɹbd∩ uoıʇoԀ", "item.modulargolems.gold": "ǝpɐɹbd∩ ǝןddⱯ uǝpןo⅁", + "item.modulargolems.golemguard_chestplate": "ǝʇɐןdʇsǝɥƆ pɹɐnbɯǝןo⅁", + "item.modulargolems.golemguard_helmet": "ʇǝɯןǝH pɹɐnbɯǝןo⅁", "item.modulargolems.humanoid_golem_arms": "sɯɹⱯ ɯǝןo⅁ pıouɐɯnH", "item.modulargolems.humanoid_golem_body": "ʎpoᗺ ɯǝןo⅁ pıouɐɯnH", "item.modulargolems.humanoid_golem_holder": "ɹǝpןoH ɯǝןo⅁ pıouɐɯnH", @@ -112,6 +121,7 @@ "item.modulargolems.metal_golem_holder": "ɹǝpןoH ɯǝןo⅁ ןɐʇǝW", "item.modulargolems.metal_golem_legs": "sbǝꞀ ɯǝןo⅁ ןɐʇǝW", "item.modulargolems.metal_golem_template": "ǝʇɐןdɯǝ⟘ ɯǝןo⅁ ןɐʇǝW", + "item.modulargolems.mount_upgrade": "ǝpɐɹbd∩ ʇunoW", "item.modulargolems.naga": "ǝpɐɹbd∩ ɐbɐN", "item.modulargolems.netherite": "ǝpɐɹbd∩ ǝʇıɹǝɥʇǝN", "item.modulargolems.pickup": "ǝpɐɹbd∩ dnʞɔıԀ", @@ -122,6 +132,8 @@ "item.modulargolems.quartz": "ǝpɐɹbd∩ zʇɹɐnὉ", "item.modulargolems.recycle": "ǝpɐɹbdb∩ ǝןɔʎɔǝᴚ", "item.modulargolems.retrieval_wand": "puɐM ןɐʌǝıɹʇǝᴚ", + "item.modulargolems.rider_wand": "puɐM ɹǝpıᴚ", + "item.modulargolems.size_upgrade": "ǝpɐɹbd∩ ǝzıS", "item.modulargolems.slow": "ssǝuʍoןS :ǝpɐɹbd∩ uoıʇoԀ", "item.modulargolems.soul_flame": "ǝɯɐןℲ ןnoS :ǝpɐɹbd∩ uoıʇoԀ", "item.modulargolems.speed": "ǝpɐɹbd∩ pǝǝdS", @@ -135,12 +147,10 @@ "item.modulargolems.thunder_immune": "ǝpɐɹbd∩ ǝunɯɯI ɹǝpunɥ⟘", "item.modulargolems.weak": "ssǝuʞɐǝM :ǝpɐɹbd∩ uoıʇoԀ", "item.modulargolems.wither": "ɹǝɥʇıM :ǝpɐɹbd∩ uoıʇoԀ", - "itemGroup.modulargolems.golems": "sɯǝןo⅁ ɹɐןnpoW", + "itemGroup.l2library.golems": "sɯǝןo⅁ ɹɐןnpoW", "modifier.modulargolems.armor_up": "d∩ ɹoɯɹⱯ", "modifier.modulargolems.bell": "ןןǝᗺ", "modifier.modulargolems.bell.desc": "˙dn ɯǝɥʇ ʇɥbıן puɐ sǝıɯǝuǝ ןןɐ buıʇɔɐɹʇʇɐ 'ןןǝq sʇı buıɹ ןןıʍ ʇı 'ʞɔɐʇʇɐ oʇ sʇuɐʍ ɯǝןob ǝɥʇ uǝɥM", - "modifier.modulargolems.blazing": "buızɐןᗺ", - "modifier.modulargolems.blazing.desc": "˙ʇǝbɹɐʇ buıɥɔɐoɹddɐ uǝɥʍ sןןɐqǝɹıɟ ʇooɥS", "modifier.modulargolems.carminite": "ǝʇıuıɯɹɐƆ", "modifier.modulargolems.carminite.desc": "spuoɔǝs %s ɹoɟ ǝןqısuıʌuı puɐ ǝןqısıʌuı uɹnʇ 'ʇɹnɥ buıǝq ɹǝʇɟⱯ", "modifier.modulargolems.cauldron": "uoɹpןnɐƆ", @@ -192,6 +202,9 @@ "modifier.modulargolems.recycle": "ǝןɔʎɔǝᴚ", "modifier.modulargolems.recycle.desc": "˙ʇuǝsǝɹd sı ɹǝʎɐןd sı ʎɹoʇuǝʌuı oʇ uɹnʇǝɹ ןןıʍ ɹǝpןoH ˙pǝןןıʞ uǝɥʍ ɥʇןɐǝɥ 0 ɟo ɹǝpןoɥ ɯǝןob doɹᗡ", "modifier.modulargolems.regeneration_up": "d∩ uoıʇɐɹǝuǝbǝᴚ", + "modifier.modulargolems.ridding_speed_up": "ǝpɐɹbd∩ ʇunoW", + "modifier.modulargolems.ridding_speed_up.desc": "˙ʞɔɐʇʇɐ ɹoɟ pǝʇǝbɹɐʇ ǝq ʇou ןןıʍ puɐ 'ʞɔɐʇʇɐ ʇou ןןıʍ ɯǝןo⅁", + "modifier.modulargolems.size_up": "d∩ ǝzıS", "modifier.modulargolems.slow": "ssǝuʍoןS :ǝpɐɹbd∩ uoıʇoԀ", "modifier.modulargolems.sonic_boom": "ɯooᗺ ɔıuoS", "modifier.modulargolems.sonic_boom.desc": "˙sʇǝbɹɐʇ ǝןdıʇןnɯ ʇıɥ uɐɔ ɯooᗺ ɔıuoS uǝɥʇ 'ʞɔɐʇʇɐ ɐǝɹɐ ɯɹoɟɹǝd uɐɔ ɯǝןob ǝɥʇ ɟI ˙ʞɔɐʇʇⱯ ɯooᗺ ɔıuoS ǝsn uɐɔ ɯǝןo⅁", @@ -229,7 +242,8 @@ "modulargolems.tooltip.standing": ")%s '%s '%s( ʇɐ ʎɐʇs ןןıʍ ɯǝןo⅁", "modulargolems.wand.command": "˙ʇı oʇ ʇǝbɹɐʇ ɥɔʇıʍs oʇ sɯǝןob buıpunoɹɹns ɹnoʎ ןןɐ ןןɐɔ ןןıʍ puɐʍ sıɥʇ ɥʇıʍ ʎʇıʇuǝ buıʞɔɐʇʇⱯ ˙ʎɹoʇuǝʌuı ǝɹnbıɟuoɔ oʇ ɯǝןob pıouɐɯnH ʞɔıןɔ ʇɥbıɹ ʇɟıɥS ˙sɯǝןob ɹoɟ sǝpoɯ ɥɔʇıʍs oʇ ʞɔıןɔ ʇɥbıᴚ", "modulargolems.wand.retrieve": "˙ʎɹoʇuǝʌuı oʇuı ʞɔɐq ɯǝןob ǝʌǝıɹʇǝɹ oʇ sɯǝןob ʎɐʍɐɹɐɟ ʞɔıןɔ ʇɥbıɹ ʇɟıɥS ˙sɯǝןob buıpunoɹɹns ɹnoʎ ןןɐ ǝʌǝıɹʇǝɹ oʇ ʞɔıןɔ ʇɥbıᴚ", - "modulargolems.wand.summon": "˙puɐʍ ǝɥʇ ʎq pǝʇuıod uoıʇısod ʎɐʍɐɹɐɟ ɐ oʇ ɯǝןob ǝuo uoɯɯns oʇ ʞɔıןɔ ʇɥbıɹ ʇɟıɥS ˙ʎɹoʇuǝʌuı ɹnoʎ ɯoɹɟ sɯǝןob ןןɐ uoɯɯns oʇ ʞɔıןɔ ʇɥbıᴚ", + "modulargolems.wand.rider": "˙ʇı uo ǝpıɹ oʇ ɯǝןobbop ɹnoʎ oʇ ʞɔıןɔ ʇɥbıᴚ", + "modulargolems.wand.summon": "˙ʎɹoʇuǝʌuı ɹnoʎ ɯoɹɟ sɯǝןob ןןɐ uoɯɯns oʇ ʞɔıןɔ ʇɥbıɹ ʇɟıɥS ˙puɐʍ ǝɥʇ ʎq pǝʇuıod uoıʇısod ʎɐʍɐɹɐɟ ɐ oʇ ɯǝןob ǝuo uoɯɯns oʇ ʞɔıןɔ ʇɥbıᴚ", "patchouli.modulargolems.landing": "poɯ ǝpɐɹbdn puɐ ʎןqɯǝssɐ ɯǝןob ǝʞıן-ɹǝʞuı⟘ oʇ ǝɯoɔןǝM", "patchouli.modulargolems.title": "ǝpın⅁ ɯǝןo⅁ ɹɐןnpoW" } \ No newline at end of file diff --git a/src/generated/resources/assets/modulargolems/lang/en_us.json b/src/generated/resources/assets/modulargolems/lang/en_us.json index 57fe4baf7..cd693d10c 100644 --- a/src/generated/resources/assets/modulargolems/lang/en_us.json +++ b/src/generated/resources/assets/modulargolems/lang/en_us.json @@ -11,7 +11,7 @@ "advancements.modulargolems.advancements.golems.craft.title": "A Brand New Golem", "advancements.modulargolems.advancements.golems.dog.description": "Craft a Dog Golem.", "advancements.modulargolems.advancements.golems.dog.title": "Royal Cold Doggy", - "advancements.modulargolems.advancements.golems.full.description": "Apply the maximum number of upgrades on a golem", + "advancements.modulargolems.advancements.golems.full.description": "Use up all upgrade slots", "advancements.modulargolems.advancements.golems.full.title": "No More Room", "advancements.modulargolems.advancements.golems.fully_equipped.description": "Give Humaniod Golem full armor set, a sword, and a shield.", "advancements.modulargolems.advancements.golems.fully_equipped.title": "Fully Equipped", @@ -25,6 +25,8 @@ "advancements.modulargolems.advancements.golems.kill_guardian.title": "Legend of the Atlantis", "advancements.modulargolems.advancements.golems.kill_warden.description": "Let a golem kill a Warden", "advancements.modulargolems.advancements.golems.kill_warden.title": "Ship of Theseus", + "advancements.modulargolems.advancements.golems.max.description": "Apply 12 upgrades on a golem", + "advancements.modulargolems.advancements.golems.max.title": "Above and Beyond", "advancements.modulargolems.advancements.golems.oops.description": "Let Humanoid Golem break a piece of equipment", "advancements.modulargolems.advancements.golems.oops.title": "Oops...", "advancements.modulargolems.advancements.golems.recycle.description": "Apply a recycle upgrade on a golem", @@ -37,18 +39,23 @@ "advancements.modulargolems.advancements.golems.sponge.title": "Waterlogged Golem", "advancements.modulargolems.advancements.golems.start.description": "Craft a Golem Template and use Stone Cutter to cut it into a golem part", "advancements.modulargolems.advancements.golems.start.title": "The Beginning of Everything", + "advancements.modulargolems.advancements.golems.summon.description": "Craft a summon wand", + "advancements.modulargolems.advancements.golems.summon.title": "Airborne Battalion", + "advancements.modulargolems.advancements.golems.summon_mass.description": "Summon at least 24 golems at once", + "advancements.modulargolems.advancements.golems.summon_mass.title": "Portable Military", "advancements.modulargolems.advancements.golems.swim.description": "Apply a swim upgrade on a golem", "advancements.modulargolems.advancements.golems.swim.title": "Undersea Warrior", "advancements.modulargolems.advancements.golems.thunder.description": "Let a golem with thunder immune be struck with a lightning bolt", "advancements.modulargolems.advancements.golems.thunder.title": "Walking Lightning Rod", "advancements.modulargolems.advancements.golems.upgrade.description": "Obtain an upgrade", "advancements.modulargolems.advancements.golems.upgrade.title": "Upgrade Your Golem", + "attribute.name.golem_jump": "Golem Jump Strength", "attribute.name.golem_regen": "Golem Regen", + "attribute.name.golem_size": "Golem Size", "attribute.name.golem_sweep": "Sweep Range", "entity.modulargolems.dog_golem": "Dog Golem", "entity.modulargolems.humanoid_golem": "Humanoid Golem", "entity.modulargolems.metal_golem": "Metal Golem", - "golem_material.blazegear.brimsteel": "Brimsteel", "golem_material.create.andesite_alloy": "Andesite Alloy", "golem_material.create.brass": "Brass", "golem_material.create.railway": "Railway", @@ -100,6 +107,8 @@ "item.modulargolems.force_field": "Wither Armor Upgrade", "item.modulargolems.freezing": "Potion Upgrade: Freezing", "item.modulargolems.gold": "Golden Apple Upgrade", + "item.modulargolems.golemguard_chestplate": "Golemguard Chestplate", + "item.modulargolems.golemguard_helmet": "Golemguard Helmet", "item.modulargolems.humanoid_golem_arms": "Humanoid Golem Arms", "item.modulargolems.humanoid_golem_body": "Humanoid Golem Body", "item.modulargolems.humanoid_golem_holder": "Humanoid Golem Holder", @@ -112,6 +121,7 @@ "item.modulargolems.metal_golem_holder": "Metal Golem Holder", "item.modulargolems.metal_golem_legs": "Metal Golem Legs", "item.modulargolems.metal_golem_template": "Metal Golem Template", + "item.modulargolems.mount_upgrade": "Mount Upgrade", "item.modulargolems.naga": "Naga Upgrade", "item.modulargolems.netherite": "Netherite Upgrade", "item.modulargolems.pickup": "Pickup Upgrade", @@ -122,6 +132,8 @@ "item.modulargolems.quartz": "Quartz Upgrade", "item.modulargolems.recycle": "Recycle Ugpgrade", "item.modulargolems.retrieval_wand": "Retrieval Wand", + "item.modulargolems.rider_wand": "Rider Wand", + "item.modulargolems.size_upgrade": "Size Upgrade", "item.modulargolems.slow": "Potion Upgrade: Slowness", "item.modulargolems.soul_flame": "Potion Upgrade: Soul Flame", "item.modulargolems.speed": "Speed Upgrade", @@ -135,12 +147,10 @@ "item.modulargolems.thunder_immune": "Thunder Immune Upgrade", "item.modulargolems.weak": "Potion Upgrade: Weakness", "item.modulargolems.wither": "Potion Upgrade: Wither", - "itemGroup.modulargolems.golems": "Modular Golems", + "itemGroup.l2library.golems": "Modular Golems", "modifier.modulargolems.armor_up": "Armor Up", "modifier.modulargolems.bell": "Bell", "modifier.modulargolems.bell.desc": "When the golem wants to attack, it will ring its bell, attracting all enemies and light them up.", - "modifier.modulargolems.blazing": "Blazing", - "modifier.modulargolems.blazing.desc": "Shoot fireballs when approaching target.", "modifier.modulargolems.carminite": "Carminite", "modifier.modulargolems.carminite.desc": "After being hurt, turn invisible and invinsible for %s seconds", "modifier.modulargolems.cauldron": "Cauldron", @@ -192,6 +202,9 @@ "modifier.modulargolems.recycle": "Recycle", "modifier.modulargolems.recycle.desc": "Drop golem holder of 0 health when killed. Holder will return to inventory is player is present.", "modifier.modulargolems.regeneration_up": "Regeneration Up", + "modifier.modulargolems.ridding_speed_up": "Mount Upgrade", + "modifier.modulargolems.ridding_speed_up.desc": "Golem will not attack, and will not be targeted for attack.", + "modifier.modulargolems.size_up": "Size Up", "modifier.modulargolems.slow": "Potion Upgrade: Slowness", "modifier.modulargolems.sonic_boom": "Sonic Boom", "modifier.modulargolems.sonic_boom.desc": "Golem can use Sonic Boom Attack. If the golem can perform area attack, then Sonic Boom can hit multiple targets.", @@ -229,7 +242,8 @@ "modulargolems.tooltip.standing": "Golem will stay at (%s, %s, %s)", "modulargolems.wand.command": "Right click to switch modes for golems. Shift right click Humanoid golem to configure inventory. Attacking entity with this wand will call all your surrounding golems to switch target to it.", "modulargolems.wand.retrieve": "Right click to retrieve all your surrounding golems. Shift right click faraway golems to retrieve golem back into inventory.", - "modulargolems.wand.summon": "Right click to summon all golems from your inventory. Shift right click to summon one golem to a faraway position pointed by the wand.", + "modulargolems.wand.rider": "Right click to your doggolem to ride on it.", + "modulargolems.wand.summon": "Right click to summon one golem to a faraway position pointed by the wand. Shift right click to summon all golems from your inventory.", "patchouli.modulargolems.landing": "Welcome to Tinker-like golem assembly and upgrade mod", "patchouli.modulargolems.title": "Modular Golem Guide" } \ No newline at end of file diff --git a/src/generated/resources/assets/modulargolems/models/item/command_wand.json b/src/generated/resources/assets/modulargolems/models/item/command_wand.json index e9b823bdf..685a3a82c 100644 --- a/src/generated/resources/assets/modulargolems/models/item/command_wand.json +++ b/src/generated/resources/assets/modulargolems/models/item/command_wand.json @@ -1,5 +1,5 @@ { - "parent": "minecraft:item/generated", + "parent": "minecraft:item/handheld", "textures": { "layer0": "modulargolems:item/command_wand" } diff --git a/src/generated/resources/assets/modulargolems/models/item/mount_upgrade.json b/src/generated/resources/assets/modulargolems/models/item/mount_upgrade.json new file mode 100644 index 000000000..b0d7813db --- /dev/null +++ b/src/generated/resources/assets/modulargolems/models/item/mount_upgrade.json @@ -0,0 +1,20 @@ +{ + "parent": "minecraft:item/generated", + "overrides": [ + { + "model": "modulargolems:item/mount_upgrade_purple", + "predicate": { + "modulargolems:blue_arrow": 0.5 + } + }, + { + "model": "modulargolems:item/mount_upgrade_blue", + "predicate": { + "modulargolems:blue_arrow": 1.0 + } + } + ], + "textures": { + "layer0": "modulargolems:item/upgrades/mount_upgrade" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/modulargolems/models/item/mount_upgrade_blue.json b/src/generated/resources/assets/modulargolems/models/item/mount_upgrade_blue.json new file mode 100644 index 000000000..a28b151c7 --- /dev/null +++ b/src/generated/resources/assets/modulargolems/models/item/mount_upgrade_blue.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "modulargolems:item/upgrades/mount_upgrade", + "layer1": "modulargolems:item/blue_arrow" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/modulargolems/models/item/mount_upgrade_purple.json b/src/generated/resources/assets/modulargolems/models/item/mount_upgrade_purple.json new file mode 100644 index 000000000..2871e238a --- /dev/null +++ b/src/generated/resources/assets/modulargolems/models/item/mount_upgrade_purple.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "modulargolems:item/upgrades/mount_upgrade", + "layer1": "modulargolems:item/purple_arrow" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/modulargolems/models/item/retrieval_wand.json b/src/generated/resources/assets/modulargolems/models/item/retrieval_wand.json index 54075ff64..4cab1606b 100644 --- a/src/generated/resources/assets/modulargolems/models/item/retrieval_wand.json +++ b/src/generated/resources/assets/modulargolems/models/item/retrieval_wand.json @@ -1,5 +1,5 @@ { - "parent": "minecraft:item/generated", + "parent": "minecraft:item/handheld", "textures": { "layer0": "modulargolems:item/retrieval_wand" } diff --git a/src/generated/resources/assets/modulargolems/models/item/rider_wand.json b/src/generated/resources/assets/modulargolems/models/item/rider_wand.json new file mode 100644 index 000000000..9eb006a86 --- /dev/null +++ b/src/generated/resources/assets/modulargolems/models/item/rider_wand.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/handheld", + "textures": { + "layer0": "modulargolems:item/rider_wand" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/modulargolems/models/item/size_upgrade.json b/src/generated/resources/assets/modulargolems/models/item/size_upgrade.json new file mode 100644 index 000000000..3397c1bcc --- /dev/null +++ b/src/generated/resources/assets/modulargolems/models/item/size_upgrade.json @@ -0,0 +1,20 @@ +{ + "parent": "minecraft:item/generated", + "overrides": [ + { + "model": "modulargolems:item/size_upgrade_purple", + "predicate": { + "modulargolems:blue_arrow": 0.5 + } + }, + { + "model": "modulargolems:item/size_upgrade_blue", + "predicate": { + "modulargolems:blue_arrow": 1.0 + } + } + ], + "textures": { + "layer0": "modulargolems:item/upgrades/size_upgrade" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/modulargolems/models/item/size_upgrade_blue.json b/src/generated/resources/assets/modulargolems/models/item/size_upgrade_blue.json new file mode 100644 index 000000000..6b6a31800 --- /dev/null +++ b/src/generated/resources/assets/modulargolems/models/item/size_upgrade_blue.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "modulargolems:item/upgrades/size_upgrade", + "layer1": "modulargolems:item/blue_arrow" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/modulargolems/models/item/size_upgrade_purple.json b/src/generated/resources/assets/modulargolems/models/item/size_upgrade_purple.json new file mode 100644 index 000000000..2d63ad038 --- /dev/null +++ b/src/generated/resources/assets/modulargolems/models/item/size_upgrade_purple.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "modulargolems:item/upgrades/size_upgrade", + "layer1": "modulargolems:item/purple_arrow" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/modulargolems/models/item/summon_wand.json b/src/generated/resources/assets/modulargolems/models/item/summon_wand.json index 1759bfcfd..7d6a4c298 100644 --- a/src/generated/resources/assets/modulargolems/models/item/summon_wand.json +++ b/src/generated/resources/assets/modulargolems/models/item/summon_wand.json @@ -1,5 +1,5 @@ { - "parent": "minecraft:item/generated", + "parent": "minecraft:item/handheld", "textures": { "layer0": "modulargolems:item/summon_wand" } diff --git a/src/generated/resources/data/blazegear/golem_config/materials/blazegear.json b/src/generated/resources/data/blazegear/golem_config/materials/blazegear.json deleted file mode 100644 index 7222d72ba..000000000 --- a/src/generated/resources/data/blazegear/golem_config/materials/blazegear.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "_class": "dev.xkmc.modulargolems.content.config.GolemMaterialConfig", - "ingredients": { - "blazegear:brimsteel": { - "item": "blazegear:brimsteel_ingot" - } - }, - "modifiers": { - "blazegear:brimsteel": { - "modulargolems:blazing": 1, - "modulargolems:fire_immune": 1 - } - }, - "stats": { - "blazegear:brimsteel": { - "modulargolems:attack": 15.0, - "modulargolems:max_health": 100.0 - } - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/golem_config/materials/create.json b/src/generated/resources/data/create/modulargolems_config/materials/create.json similarity index 94% rename from src/generated/resources/data/create/golem_config/materials/create.json rename to src/generated/resources/data/create/modulargolems_config/materials/create.json index 21aa3be0e..0acef4d37 100644 --- a/src/generated/resources/data/create/golem_config/materials/create.json +++ b/src/generated/resources/data/create/modulargolems_config/materials/create.json @@ -1,5 +1,4 @@ { - "_class": "dev.xkmc.modulargolems.content.config.GolemMaterialConfig", "ingredients": { "create:andesite_alloy": { "item": "create:andesite_alloy" diff --git a/src/generated/resources/data/l2complements/golem_config/materials/l2complements.json b/src/generated/resources/data/l2complements/modulargolems_config/materials/l2complements.json similarity index 95% rename from src/generated/resources/data/l2complements/golem_config/materials/l2complements.json rename to src/generated/resources/data/l2complements/modulargolems_config/materials/l2complements.json index 514fe368b..88c3e6e16 100644 --- a/src/generated/resources/data/l2complements/golem_config/materials/l2complements.json +++ b/src/generated/resources/data/l2complements/modulargolems_config/materials/l2complements.json @@ -1,5 +1,4 @@ { - "_class": "dev.xkmc.modulargolems.content.config.GolemMaterialConfig", "ingredients": { "l2complements:eternium": { "item": "l2complements:eternium_ingot" diff --git a/src/generated/resources/data/minecraft/tags/entity_types/fall_damage_immune.json b/src/generated/resources/data/minecraft/tags/entity_types/fall_damage_immune.json new file mode 100644 index 000000000..7334e5b5a --- /dev/null +++ b/src/generated/resources/data/minecraft/tags/entity_types/fall_damage_immune.json @@ -0,0 +1,7 @@ +{ + "values": [ + "modulargolems:metal_golem", + "modulargolems:humanoid_golem", + "modulargolems:dog_golem" + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/modulargolems/advancements/golems/anvil_fix.json b/src/generated/resources/data/modulargolems/advancements/golems/anvil_fix.json index 73aeceadf..822333646 100644 --- a/src/generated/resources/data/modulargolems/advancements/golems/anvil_fix.json +++ b/src/generated/resources/data/modulargolems/advancements/golems/anvil_fix.json @@ -25,5 +25,6 @@ [ "0" ] - ] + ], + "sends_telemetry_event": true } \ No newline at end of file diff --git a/src/generated/resources/data/modulargolems/advancements/golems/apply.json b/src/generated/resources/data/modulargolems/advancements/golems/apply.json index 4afd62490..45e8a887d 100644 --- a/src/generated/resources/data/modulargolems/advancements/golems/apply.json +++ b/src/generated/resources/data/modulargolems/advancements/golems/apply.json @@ -26,5 +26,6 @@ [ "0" ] - ] + ], + "sends_telemetry_event": true } \ No newline at end of file diff --git a/src/generated/resources/data/modulargolems/advancements/golems/apply_sculk.json b/src/generated/resources/data/modulargolems/advancements/golems/apply_sculk.json index 2f5ffd3a3..532ab7780 100644 --- a/src/generated/resources/data/modulargolems/advancements/golems/apply_sculk.json +++ b/src/generated/resources/data/modulargolems/advancements/golems/apply_sculk.json @@ -28,5 +28,6 @@ [ "0" ] - ] + ], + "sends_telemetry_event": true } \ No newline at end of file diff --git a/src/generated/resources/data/modulargolems/advancements/golems/command.json b/src/generated/resources/data/modulargolems/advancements/golems/command.json index f425f4e55..5eb7311f0 100644 --- a/src/generated/resources/data/modulargolems/advancements/golems/command.json +++ b/src/generated/resources/data/modulargolems/advancements/golems/command.json @@ -33,5 +33,6 @@ [ "0" ] - ] + ], + "sends_telemetry_event": true } \ No newline at end of file diff --git a/src/generated/resources/data/modulargolems/advancements/golems/craft.json b/src/generated/resources/data/modulargolems/advancements/golems/craft.json index c6441f99b..5153eba55 100644 --- a/src/generated/resources/data/modulargolems/advancements/golems/craft.json +++ b/src/generated/resources/data/modulargolems/advancements/golems/craft.json @@ -32,5 +32,6 @@ [ "0" ] - ] + ], + "sends_telemetry_event": true } \ No newline at end of file diff --git a/src/generated/resources/data/modulargolems/advancements/golems/dog.json b/src/generated/resources/data/modulargolems/advancements/golems/dog.json index 6efec505a..df36e5266 100644 --- a/src/generated/resources/data/modulargolems/advancements/golems/dog.json +++ b/src/generated/resources/data/modulargolems/advancements/golems/dog.json @@ -34,5 +34,6 @@ [ "0" ] - ] + ], + "sends_telemetry_event": true } \ No newline at end of file diff --git a/src/generated/resources/data/modulargolems/advancements/golems/full.json b/src/generated/resources/data/modulargolems/advancements/golems/full.json index f8a2e3b5e..24ef517f9 100644 --- a/src/generated/resources/data/modulargolems/advancements/golems/full.json +++ b/src/generated/resources/data/modulargolems/advancements/golems/full.json @@ -3,7 +3,8 @@ "criteria": { "0": { "conditions": { - "remain": 0 + "remain": 0, + "total": -1 }, "trigger": "modulargolems:upgrade_apply" } @@ -27,5 +28,6 @@ [ "0" ] - ] + ], + "sends_telemetry_event": true } \ No newline at end of file diff --git a/src/generated/resources/data/modulargolems/advancements/golems/fully_equipped.json b/src/generated/resources/data/modulargolems/advancements/golems/fully_equipped.json index fcc70b3ff..ed9561bb4 100644 --- a/src/generated/resources/data/modulargolems/advancements/golems/fully_equipped.json +++ b/src/generated/resources/data/modulargolems/advancements/golems/fully_equipped.json @@ -28,5 +28,6 @@ [ "0" ] - ] + ], + "sends_telemetry_event": true } \ No newline at end of file diff --git a/src/generated/resources/data/modulargolems/advancements/golems/hot_fix.json b/src/generated/resources/data/modulargolems/advancements/golems/hot_fix.json index 25a012e10..26dfcabfd 100644 --- a/src/generated/resources/data/modulargolems/advancements/golems/hot_fix.json +++ b/src/generated/resources/data/modulargolems/advancements/golems/hot_fix.json @@ -25,5 +25,6 @@ [ "0" ] - ] + ], + "sends_telemetry_event": true } \ No newline at end of file diff --git a/src/generated/resources/data/modulargolems/advancements/golems/humanoid.json b/src/generated/resources/data/modulargolems/advancements/golems/humanoid.json index 77c03c1f9..63f276c96 100644 --- a/src/generated/resources/data/modulargolems/advancements/golems/humanoid.json +++ b/src/generated/resources/data/modulargolems/advancements/golems/humanoid.json @@ -34,5 +34,6 @@ [ "0" ] - ] + ], + "sends_telemetry_event": true } \ No newline at end of file diff --git a/src/generated/resources/data/modulargolems/advancements/golems/kill_creeper.json b/src/generated/resources/data/modulargolems/advancements/golems/kill_creeper.json index ff0b9af33..34c638bc8 100644 --- a/src/generated/resources/data/modulargolems/advancements/golems/kill_creeper.json +++ b/src/generated/resources/data/modulargolems/advancements/golems/kill_creeper.json @@ -27,5 +27,6 @@ [ "0" ] - ] + ], + "sends_telemetry_event": true } \ No newline at end of file diff --git a/src/generated/resources/data/modulargolems/advancements/golems/kill_guardian.json b/src/generated/resources/data/modulargolems/advancements/golems/kill_guardian.json index f5828cdd2..34cd00261 100644 --- a/src/generated/resources/data/modulargolems/advancements/golems/kill_guardian.json +++ b/src/generated/resources/data/modulargolems/advancements/golems/kill_guardian.json @@ -27,5 +27,6 @@ [ "0" ] - ] + ], + "sends_telemetry_event": true } \ No newline at end of file diff --git a/src/generated/resources/data/modulargolems/advancements/golems/kill_warden.json b/src/generated/resources/data/modulargolems/advancements/golems/kill_warden.json index b90de0d98..2bd6ab396 100644 --- a/src/generated/resources/data/modulargolems/advancements/golems/kill_warden.json +++ b/src/generated/resources/data/modulargolems/advancements/golems/kill_warden.json @@ -27,5 +27,6 @@ [ "0" ] - ] + ], + "sends_telemetry_event": true } \ No newline at end of file diff --git a/src/generated/resources/data/modulargolems/advancements/golems/max.json b/src/generated/resources/data/modulargolems/advancements/golems/max.json new file mode 100644 index 000000000..de1949ed9 --- /dev/null +++ b/src/generated/resources/data/modulargolems/advancements/golems/max.json @@ -0,0 +1,33 @@ +{ + "parent": "modulargolems:golems/full", + "criteria": { + "0": { + "conditions": { + "remain": -1, + "total": 12 + }, + "trigger": "modulargolems:upgrade_apply" + } + }, + "display": { + "announce_to_chat": true, + "description": { + "translate": "advancements.modulargolems.advancements.golems.max.description" + }, + "frame": "challenge", + "hidden": false, + "icon": { + "item": "modulargolems:talented" + }, + "show_toast": true, + "title": { + "translate": "advancements.modulargolems.advancements.golems.max.title" + } + }, + "requirements": [ + [ + "0" + ] + ], + "sends_telemetry_event": true +} \ No newline at end of file diff --git a/src/generated/resources/data/modulargolems/advancements/golems/oops.json b/src/generated/resources/data/modulargolems/advancements/golems/oops.json index 5fc46b386..ce93d18c3 100644 --- a/src/generated/resources/data/modulargolems/advancements/golems/oops.json +++ b/src/generated/resources/data/modulargolems/advancements/golems/oops.json @@ -26,5 +26,6 @@ [ "0" ] - ] + ], + "sends_telemetry_event": true } \ No newline at end of file diff --git a/src/generated/resources/data/modulargolems/advancements/golems/recycle.json b/src/generated/resources/data/modulargolems/advancements/golems/recycle.json index 4663e215a..bd4912ff4 100644 --- a/src/generated/resources/data/modulargolems/advancements/golems/recycle.json +++ b/src/generated/resources/data/modulargolems/advancements/golems/recycle.json @@ -6,7 +6,8 @@ "ingredient": { "item": "modulargolems:recycle" }, - "remain": -1 + "remain": -1, + "total": -1 }, "trigger": "modulargolems:upgrade_apply" } @@ -30,5 +31,6 @@ [ "0" ] - ] + ], + "sends_telemetry_event": true } \ No newline at end of file diff --git a/src/generated/resources/data/modulargolems/advancements/golems/retrieve.json b/src/generated/resources/data/modulargolems/advancements/golems/retrieve.json index 8c8fd2bb1..30cb5e956 100644 --- a/src/generated/resources/data/modulargolems/advancements/golems/retrieve.json +++ b/src/generated/resources/data/modulargolems/advancements/golems/retrieve.json @@ -33,5 +33,6 @@ [ "0" ] - ] + ], + "sends_telemetry_event": true } \ No newline at end of file diff --git a/src/generated/resources/data/modulargolems/advancements/golems/root.json b/src/generated/resources/data/modulargolems/advancements/golems/root.json index 66feb0a13..e5aec47b1 100644 --- a/src/generated/resources/data/modulargolems/advancements/golems/root.json +++ b/src/generated/resources/data/modulargolems/advancements/golems/root.json @@ -34,5 +34,6 @@ [ "0" ] - ] + ], + "sends_telemetry_event": true } \ No newline at end of file diff --git a/src/generated/resources/data/modulargolems/advancements/golems/sponge.json b/src/generated/resources/data/modulargolems/advancements/golems/sponge.json index 57c7e1e90..cdcd53c68 100644 --- a/src/generated/resources/data/modulargolems/advancements/golems/sponge.json +++ b/src/generated/resources/data/modulargolems/advancements/golems/sponge.json @@ -6,7 +6,8 @@ "ingredient": { "item": "modulargolems:sponge" }, - "remain": -1 + "remain": -1, + "total": -1 }, "trigger": "modulargolems:upgrade_apply" } @@ -30,5 +31,6 @@ [ "0" ] - ] + ], + "sends_telemetry_event": true } \ No newline at end of file diff --git a/src/generated/resources/data/modulargolems/advancements/golems/start.json b/src/generated/resources/data/modulargolems/advancements/golems/start.json index 7eee9e6eb..6d9d73100 100644 --- a/src/generated/resources/data/modulargolems/advancements/golems/start.json +++ b/src/generated/resources/data/modulargolems/advancements/golems/start.json @@ -31,5 +31,6 @@ [ "0" ] - ] + ], + "sends_telemetry_event": true } \ No newline at end of file diff --git a/src/generated/resources/data/modulargolems/advancements/golems/summon.json b/src/generated/resources/data/modulargolems/advancements/golems/summon.json new file mode 100644 index 000000000..0b438d98d --- /dev/null +++ b/src/generated/resources/data/modulargolems/advancements/golems/summon.json @@ -0,0 +1,38 @@ +{ + "parent": "modulargolems:golems/craft", + "criteria": { + "0": { + "conditions": { + "items": [ + { + "items": [ + "modulargolems:summon_wand" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + } + }, + "display": { + "announce_to_chat": true, + "description": { + "translate": "advancements.modulargolems.advancements.golems.summon.description" + }, + "frame": "task", + "hidden": false, + "icon": { + "item": "modulargolems:summon_wand" + }, + "show_toast": true, + "title": { + "translate": "advancements.modulargolems.advancements.golems.summon.title" + } + }, + "requirements": [ + [ + "0" + ] + ], + "sends_telemetry_event": true +} \ No newline at end of file diff --git a/src/generated/resources/data/modulargolems/advancements/golems/summon_mass.json b/src/generated/resources/data/modulargolems/advancements/golems/summon_mass.json new file mode 100644 index 000000000..9d258b198 --- /dev/null +++ b/src/generated/resources/data/modulargolems/advancements/golems/summon_mass.json @@ -0,0 +1,32 @@ +{ + "parent": "modulargolems:golems/summon", + "criteria": { + "0": { + "conditions": { + "count": 24 + }, + "trigger": "modulargolems:mass_summon" + } + }, + "display": { + "announce_to_chat": true, + "description": { + "translate": "advancements.modulargolems.advancements.golems.summon_mass.description" + }, + "frame": "challenge", + "hidden": false, + "icon": { + "item": "modulargolems:summon_wand" + }, + "show_toast": true, + "title": { + "translate": "advancements.modulargolems.advancements.golems.summon_mass.title" + } + }, + "requirements": [ + [ + "0" + ] + ], + "sends_telemetry_event": true +} \ No newline at end of file diff --git a/src/generated/resources/data/modulargolems/advancements/golems/swim.json b/src/generated/resources/data/modulargolems/advancements/golems/swim.json index 80da2ceaf..85118049e 100644 --- a/src/generated/resources/data/modulargolems/advancements/golems/swim.json +++ b/src/generated/resources/data/modulargolems/advancements/golems/swim.json @@ -6,7 +6,8 @@ "ingredient": { "item": "modulargolems:swim" }, - "remain": -1 + "remain": -1, + "total": -1 }, "trigger": "modulargolems:upgrade_apply" } @@ -30,5 +31,6 @@ [ "0" ] - ] + ], + "sends_telemetry_event": true } \ No newline at end of file diff --git a/src/generated/resources/data/modulargolems/advancements/golems/thunder.json b/src/generated/resources/data/modulargolems/advancements/golems/thunder.json index 9d695ec50..42519b921 100644 --- a/src/generated/resources/data/modulargolems/advancements/golems/thunder.json +++ b/src/generated/resources/data/modulargolems/advancements/golems/thunder.json @@ -25,5 +25,6 @@ [ "0" ] - ] + ], + "sends_telemetry_event": true } \ No newline at end of file diff --git a/src/generated/resources/data/modulargolems/advancements/golems/upgrade.json b/src/generated/resources/data/modulargolems/advancements/golems/upgrade.json index f049dea1f..be1891601 100644 --- a/src/generated/resources/data/modulargolems/advancements/golems/upgrade.json +++ b/src/generated/resources/data/modulargolems/advancements/golems/upgrade.json @@ -31,5 +31,6 @@ [ "0" ] - ] + ], + "sends_telemetry_event": true } \ No newline at end of file diff --git a/src/generated/resources/data/modulargolems/advancements/recipes/modulargolems.golems/dog_golem_holder.json b/src/generated/resources/data/modulargolems/advancements/recipes/dog_golem_holder.json similarity index 94% rename from src/generated/resources/data/modulargolems/advancements/recipes/modulargolems.golems/dog_golem_holder.json rename to src/generated/resources/data/modulargolems/advancements/recipes/dog_golem_holder.json index d91869a4b..2bfe17d63 100644 --- a/src/generated/resources/data/modulargolems/advancements/recipes/modulargolems.golems/dog_golem_holder.json +++ b/src/generated/resources/data/modulargolems/advancements/recipes/dog_golem_holder.json @@ -30,5 +30,6 @@ "recipes": [ "modulargolems:dog_golem_holder" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/generated/resources/data/modulargolems/advancements/recipes/modulargolems.golems/humanoid_golem_holder.json b/src/generated/resources/data/modulargolems/advancements/recipes/humanoid_golem_holder.json similarity index 94% rename from src/generated/resources/data/modulargolems/advancements/recipes/modulargolems.golems/humanoid_golem_holder.json rename to src/generated/resources/data/modulargolems/advancements/recipes/humanoid_golem_holder.json index f4b415d70..afdff7758 100644 --- a/src/generated/resources/data/modulargolems/advancements/recipes/modulargolems.golems/humanoid_golem_holder.json +++ b/src/generated/resources/data/modulargolems/advancements/recipes/humanoid_golem_holder.json @@ -30,5 +30,6 @@ "recipes": [ "modulargolems:humanoid_golem_holder" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/generated/resources/data/modulargolems/advancements/recipes/modulargolems.golems/metal_golem_holder.json b/src/generated/resources/data/modulargolems/advancements/recipes/metal_golem_holder.json similarity index 94% rename from src/generated/resources/data/modulargolems/advancements/recipes/modulargolems.golems/metal_golem_holder.json rename to src/generated/resources/data/modulargolems/advancements/recipes/metal_golem_holder.json index 3490bd986..335ba0525 100644 --- a/src/generated/resources/data/modulargolems/advancements/recipes/modulargolems.golems/metal_golem_holder.json +++ b/src/generated/resources/data/modulargolems/advancements/recipes/metal_golem_holder.json @@ -30,5 +30,6 @@ "recipes": [ "modulargolems:metal_golem_holder" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/generated/resources/data/modulargolems/advancements/recipes/modulargolems.golems/attack_high.json b/src/generated/resources/data/modulargolems/advancements/recipes/misc/attack_high.json similarity index 94% rename from src/generated/resources/data/modulargolems/advancements/recipes/modulargolems.golems/attack_high.json rename to src/generated/resources/data/modulargolems/advancements/recipes/misc/attack_high.json index d9e9343f4..cf2e26716 100644 --- a/src/generated/resources/data/modulargolems/advancements/recipes/modulargolems.golems/attack_high.json +++ b/src/generated/resources/data/modulargolems/advancements/recipes/misc/attack_high.json @@ -30,5 +30,6 @@ "recipes": [ "modulargolems:attack_high" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/generated/resources/data/modulargolems/advancements/recipes/modulargolems.golems/bell.json b/src/generated/resources/data/modulargolems/advancements/recipes/misc/bell.json similarity index 94% rename from src/generated/resources/data/modulargolems/advancements/recipes/modulargolems.golems/bell.json rename to src/generated/resources/data/modulargolems/advancements/recipes/misc/bell.json index d81b25a41..271ece59e 100644 --- a/src/generated/resources/data/modulargolems/advancements/recipes/modulargolems.golems/bell.json +++ b/src/generated/resources/data/modulargolems/advancements/recipes/misc/bell.json @@ -30,5 +30,6 @@ "recipes": [ "modulargolems:bell" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/generated/resources/data/modulargolems/advancements/recipes/modulargolems.golems/carminite.json b/src/generated/resources/data/modulargolems/advancements/recipes/misc/carminite.json similarity index 94% rename from src/generated/resources/data/modulargolems/advancements/recipes/modulargolems.golems/carminite.json rename to src/generated/resources/data/modulargolems/advancements/recipes/misc/carminite.json index 203c2fde6..ac1b508e6 100644 --- a/src/generated/resources/data/modulargolems/advancements/recipes/modulargolems.golems/carminite.json +++ b/src/generated/resources/data/modulargolems/advancements/recipes/misc/carminite.json @@ -30,5 +30,6 @@ "recipes": [ "modulargolems:carminite" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/generated/resources/data/modulargolems/advancements/recipes/modulargolems.golems/cauldron.json b/src/generated/resources/data/modulargolems/advancements/recipes/misc/cauldron.json similarity index 94% rename from src/generated/resources/data/modulargolems/advancements/recipes/modulargolems.golems/cauldron.json rename to src/generated/resources/data/modulargolems/advancements/recipes/misc/cauldron.json index af757c65d..0f4dc3186 100644 --- a/src/generated/resources/data/modulargolems/advancements/recipes/modulargolems.golems/cauldron.json +++ b/src/generated/resources/data/modulargolems/advancements/recipes/misc/cauldron.json @@ -30,5 +30,6 @@ "recipes": [ "modulargolems:cauldron" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/generated/resources/data/modulargolems/advancements/recipes/modulargolems.golems/cleanse.json b/src/generated/resources/data/modulargolems/advancements/recipes/misc/cleanse.json similarity index 94% rename from src/generated/resources/data/modulargolems/advancements/recipes/modulargolems.golems/cleanse.json rename to src/generated/resources/data/modulargolems/advancements/recipes/misc/cleanse.json index b4ca86bc8..c573856c2 100644 --- a/src/generated/resources/data/modulargolems/advancements/recipes/modulargolems.golems/cleanse.json +++ b/src/generated/resources/data/modulargolems/advancements/recipes/misc/cleanse.json @@ -30,5 +30,6 @@ "recipes": [ "modulargolems:cleanse" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/generated/resources/data/modulargolems/advancements/recipes/modulargolems.golems/coating.json b/src/generated/resources/data/modulargolems/advancements/recipes/misc/coating.json similarity index 94% rename from src/generated/resources/data/modulargolems/advancements/recipes/modulargolems.golems/coating.json rename to src/generated/resources/data/modulargolems/advancements/recipes/misc/coating.json index 5c9c41c43..7e09dd7a2 100644 --- a/src/generated/resources/data/modulargolems/advancements/recipes/modulargolems.golems/coating.json +++ b/src/generated/resources/data/modulargolems/advancements/recipes/misc/coating.json @@ -30,5 +30,6 @@ "recipes": [ "modulargolems:coating" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/generated/resources/data/modulargolems/advancements/recipes/modulargolems.golems/command_wand.json b/src/generated/resources/data/modulargolems/advancements/recipes/misc/command_wand.json similarity index 76% rename from src/generated/resources/data/modulargolems/advancements/recipes/modulargolems.golems/command_wand.json rename to src/generated/resources/data/modulargolems/advancements/recipes/misc/command_wand.json index a2f2c678f..207ed7bed 100644 --- a/src/generated/resources/data/modulargolems/advancements/recipes/modulargolems.golems/command_wand.json +++ b/src/generated/resources/data/modulargolems/advancements/recipes/misc/command_wand.json @@ -1,12 +1,12 @@ { "parent": "minecraft:recipes/root", "criteria": { - "has_gold_ingot": { + "has_metal_golem_template": { "conditions": { "items": [ { "items": [ - "minecraft:gold_ingot" + "modulargolems:metal_golem_template" ] } ] @@ -22,7 +22,7 @@ }, "requirements": [ [ - "has_gold_ingot", + "has_metal_golem_template", "has_the_recipe" ] ], @@ -30,5 +30,6 @@ "recipes": [ "modulargolems:command_wand" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/generated/resources/data/modulargolems/advancements/recipes/modulargolems.golems/curse.json b/src/generated/resources/data/modulargolems/advancements/recipes/misc/curse.json similarity index 94% rename from src/generated/resources/data/modulargolems/advancements/recipes/modulargolems.golems/curse.json rename to src/generated/resources/data/modulargolems/advancements/recipes/misc/curse.json index 7cb8e5cd0..ead4e3c1a 100644 --- a/src/generated/resources/data/modulargolems/advancements/recipes/modulargolems.golems/curse.json +++ b/src/generated/resources/data/modulargolems/advancements/recipes/misc/curse.json @@ -30,5 +30,6 @@ "recipes": [ "modulargolems:curse" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/generated/resources/data/modulargolems/advancements/recipes/modulargolems.golems/diamond.json b/src/generated/resources/data/modulargolems/advancements/recipes/misc/diamond.json similarity index 94% rename from src/generated/resources/data/modulargolems/advancements/recipes/modulargolems.golems/diamond.json rename to src/generated/resources/data/modulargolems/advancements/recipes/misc/diamond.json index 37b913411..4f22e6cb7 100644 --- a/src/generated/resources/data/modulargolems/advancements/recipes/modulargolems.golems/diamond.json +++ b/src/generated/resources/data/modulargolems/advancements/recipes/misc/diamond.json @@ -30,5 +30,6 @@ "recipes": [ "modulargolems:diamond" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/generated/resources/data/modulargolems/advancements/recipes/modulargolems.golems/dog_golem_body_from_metal_golem_template_stonecutting.json b/src/generated/resources/data/modulargolems/advancements/recipes/misc/dog_golem_body_from_metal_golem_template_stonecutting.json similarity index 95% rename from src/generated/resources/data/modulargolems/advancements/recipes/modulargolems.golems/dog_golem_body_from_metal_golem_template_stonecutting.json rename to src/generated/resources/data/modulargolems/advancements/recipes/misc/dog_golem_body_from_metal_golem_template_stonecutting.json index 86ac3caf9..2645322f9 100644 --- a/src/generated/resources/data/modulargolems/advancements/recipes/modulargolems.golems/dog_golem_body_from_metal_golem_template_stonecutting.json +++ b/src/generated/resources/data/modulargolems/advancements/recipes/misc/dog_golem_body_from_metal_golem_template_stonecutting.json @@ -30,5 +30,6 @@ "recipes": [ "modulargolems:dog_golem_body_from_metal_golem_template_stonecutting" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/generated/resources/data/modulargolems/advancements/recipes/modulargolems.golems/dog_golem_legs_from_metal_golem_template_stonecutting.json b/src/generated/resources/data/modulargolems/advancements/recipes/misc/dog_golem_legs_from_metal_golem_template_stonecutting.json similarity index 95% rename from src/generated/resources/data/modulargolems/advancements/recipes/modulargolems.golems/dog_golem_legs_from_metal_golem_template_stonecutting.json rename to src/generated/resources/data/modulargolems/advancements/recipes/misc/dog_golem_legs_from_metal_golem_template_stonecutting.json index f171b3823..edb81e4b0 100644 --- a/src/generated/resources/data/modulargolems/advancements/recipes/modulargolems.golems/dog_golem_legs_from_metal_golem_template_stonecutting.json +++ b/src/generated/resources/data/modulargolems/advancements/recipes/misc/dog_golem_legs_from_metal_golem_template_stonecutting.json @@ -30,5 +30,6 @@ "recipes": [ "modulargolems:dog_golem_legs_from_metal_golem_template_stonecutting" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/generated/resources/data/modulargolems/advancements/recipes/modulargolems.golems/emerald.json b/src/generated/resources/data/modulargolems/advancements/recipes/misc/emerald.json similarity index 94% rename from src/generated/resources/data/modulargolems/advancements/recipes/modulargolems.golems/emerald.json rename to src/generated/resources/data/modulargolems/advancements/recipes/misc/emerald.json index 704629c93..00cd957d6 100644 --- a/src/generated/resources/data/modulargolems/advancements/recipes/modulargolems.golems/emerald.json +++ b/src/generated/resources/data/modulargolems/advancements/recipes/misc/emerald.json @@ -30,5 +30,6 @@ "recipes": [ "modulargolems:emerald" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/generated/resources/data/modulargolems/advancements/recipes/modulargolems.golems/empty_upgrade.json b/src/generated/resources/data/modulargolems/advancements/recipes/misc/empty_upgrade.json similarity index 94% rename from src/generated/resources/data/modulargolems/advancements/recipes/modulargolems.golems/empty_upgrade.json rename to src/generated/resources/data/modulargolems/advancements/recipes/misc/empty_upgrade.json index 6748a7430..735880eca 100644 --- a/src/generated/resources/data/modulargolems/advancements/recipes/modulargolems.golems/empty_upgrade.json +++ b/src/generated/resources/data/modulargolems/advancements/recipes/misc/empty_upgrade.json @@ -30,5 +30,6 @@ "recipes": [ "modulargolems:empty_upgrade" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/generated/resources/data/modulargolems/advancements/recipes/modulargolems.golems/enchanted_gold.json b/src/generated/resources/data/modulargolems/advancements/recipes/misc/enchanted_gold.json similarity index 94% rename from src/generated/resources/data/modulargolems/advancements/recipes/modulargolems.golems/enchanted_gold.json rename to src/generated/resources/data/modulargolems/advancements/recipes/misc/enchanted_gold.json index df6c188fa..a3e351953 100644 --- a/src/generated/resources/data/modulargolems/advancements/recipes/modulargolems.golems/enchanted_gold.json +++ b/src/generated/resources/data/modulargolems/advancements/recipes/misc/enchanted_gold.json @@ -30,5 +30,6 @@ "recipes": [ "modulargolems:enchanted_gold" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/generated/resources/data/modulargolems/advancements/recipes/modulargolems.golems/ender_sight.json b/src/generated/resources/data/modulargolems/advancements/recipes/misc/ender_sight.json similarity index 94% rename from src/generated/resources/data/modulargolems/advancements/recipes/modulargolems.golems/ender_sight.json rename to src/generated/resources/data/modulargolems/advancements/recipes/misc/ender_sight.json index 6eff9a5e7..7815ce390 100644 --- a/src/generated/resources/data/modulargolems/advancements/recipes/modulargolems.golems/ender_sight.json +++ b/src/generated/resources/data/modulargolems/advancements/recipes/misc/ender_sight.json @@ -30,5 +30,6 @@ "recipes": [ "modulargolems:ender_sight" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/generated/resources/data/modulargolems/advancements/recipes/modulargolems.golems/fiery.json b/src/generated/resources/data/modulargolems/advancements/recipes/misc/fiery.json similarity index 94% rename from src/generated/resources/data/modulargolems/advancements/recipes/modulargolems.golems/fiery.json rename to src/generated/resources/data/modulargolems/advancements/recipes/misc/fiery.json index eaab18460..a118bdb6c 100644 --- a/src/generated/resources/data/modulargolems/advancements/recipes/modulargolems.golems/fiery.json +++ b/src/generated/resources/data/modulargolems/advancements/recipes/misc/fiery.json @@ -30,5 +30,6 @@ "recipes": [ "modulargolems:fiery" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/generated/resources/data/modulargolems/advancements/recipes/modulargolems.golems/fire_immune.json b/src/generated/resources/data/modulargolems/advancements/recipes/misc/fire_immune.json similarity index 94% rename from src/generated/resources/data/modulargolems/advancements/recipes/modulargolems.golems/fire_immune.json rename to src/generated/resources/data/modulargolems/advancements/recipes/misc/fire_immune.json index 7a9aee5ad..269903586 100644 --- a/src/generated/resources/data/modulargolems/advancements/recipes/modulargolems.golems/fire_immune.json +++ b/src/generated/resources/data/modulargolems/advancements/recipes/misc/fire_immune.json @@ -30,5 +30,6 @@ "recipes": [ "modulargolems:fire_immune" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/generated/resources/data/modulargolems/advancements/recipes/modulargolems.golems/float.json b/src/generated/resources/data/modulargolems/advancements/recipes/misc/float.json similarity index 94% rename from src/generated/resources/data/modulargolems/advancements/recipes/modulargolems.golems/float.json rename to src/generated/resources/data/modulargolems/advancements/recipes/misc/float.json index 58371dfbb..399cb8b9a 100644 --- a/src/generated/resources/data/modulargolems/advancements/recipes/modulargolems.golems/float.json +++ b/src/generated/resources/data/modulargolems/advancements/recipes/misc/float.json @@ -30,5 +30,6 @@ "recipes": [ "modulargolems:float" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/generated/resources/data/modulargolems/advancements/recipes/modulargolems.golems/force_field.json b/src/generated/resources/data/modulargolems/advancements/recipes/misc/force_field.json similarity index 94% rename from src/generated/resources/data/modulargolems/advancements/recipes/modulargolems.golems/force_field.json rename to src/generated/resources/data/modulargolems/advancements/recipes/misc/force_field.json index 8d57aa6f7..ad58d8248 100644 --- a/src/generated/resources/data/modulargolems/advancements/recipes/modulargolems.golems/force_field.json +++ b/src/generated/resources/data/modulargolems/advancements/recipes/misc/force_field.json @@ -30,5 +30,6 @@ "recipes": [ "modulargolems:force_field" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/generated/resources/data/modulargolems/advancements/recipes/modulargolems.golems/freezing.json b/src/generated/resources/data/modulargolems/advancements/recipes/misc/freezing.json similarity index 94% rename from src/generated/resources/data/modulargolems/advancements/recipes/modulargolems.golems/freezing.json rename to src/generated/resources/data/modulargolems/advancements/recipes/misc/freezing.json index 996f516dd..590845438 100644 --- a/src/generated/resources/data/modulargolems/advancements/recipes/modulargolems.golems/freezing.json +++ b/src/generated/resources/data/modulargolems/advancements/recipes/misc/freezing.json @@ -30,5 +30,6 @@ "recipes": [ "modulargolems:freezing" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/generated/resources/data/modulargolems/advancements/recipes/modulargolems.golems/gold.json b/src/generated/resources/data/modulargolems/advancements/recipes/misc/gold.json similarity index 94% rename from src/generated/resources/data/modulargolems/advancements/recipes/modulargolems.golems/gold.json rename to src/generated/resources/data/modulargolems/advancements/recipes/misc/gold.json index e91e38e1c..1aeea74a2 100644 --- a/src/generated/resources/data/modulargolems/advancements/recipes/modulargolems.golems/gold.json +++ b/src/generated/resources/data/modulargolems/advancements/recipes/misc/gold.json @@ -30,5 +30,6 @@ "recipes": [ "modulargolems:gold" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/generated/resources/data/modulargolems/advancements/recipes/modulargolems.golems/humanoid_golem_arms_from_metal_golem_template_stonecutting.json b/src/generated/resources/data/modulargolems/advancements/recipes/misc/humanoid_golem_arms_from_metal_golem_template_stonecutting.json similarity index 95% rename from src/generated/resources/data/modulargolems/advancements/recipes/modulargolems.golems/humanoid_golem_arms_from_metal_golem_template_stonecutting.json rename to src/generated/resources/data/modulargolems/advancements/recipes/misc/humanoid_golem_arms_from_metal_golem_template_stonecutting.json index 4875af83c..46837e2be 100644 --- a/src/generated/resources/data/modulargolems/advancements/recipes/modulargolems.golems/humanoid_golem_arms_from_metal_golem_template_stonecutting.json +++ b/src/generated/resources/data/modulargolems/advancements/recipes/misc/humanoid_golem_arms_from_metal_golem_template_stonecutting.json @@ -30,5 +30,6 @@ "recipes": [ "modulargolems:humanoid_golem_arms_from_metal_golem_template_stonecutting" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/generated/resources/data/modulargolems/advancements/recipes/modulargolems.golems/humanoid_golem_body_from_metal_golem_template_stonecutting.json b/src/generated/resources/data/modulargolems/advancements/recipes/misc/humanoid_golem_body_from_metal_golem_template_stonecutting.json similarity index 95% rename from src/generated/resources/data/modulargolems/advancements/recipes/modulargolems.golems/humanoid_golem_body_from_metal_golem_template_stonecutting.json rename to src/generated/resources/data/modulargolems/advancements/recipes/misc/humanoid_golem_body_from_metal_golem_template_stonecutting.json index f0bb33b5b..e1cf79548 100644 --- a/src/generated/resources/data/modulargolems/advancements/recipes/modulargolems.golems/humanoid_golem_body_from_metal_golem_template_stonecutting.json +++ b/src/generated/resources/data/modulargolems/advancements/recipes/misc/humanoid_golem_body_from_metal_golem_template_stonecutting.json @@ -30,5 +30,6 @@ "recipes": [ "modulargolems:humanoid_golem_body_from_metal_golem_template_stonecutting" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/generated/resources/data/modulargolems/advancements/recipes/modulargolems.golems/humanoid_golem_legs_from_metal_golem_template_stonecutting.json b/src/generated/resources/data/modulargolems/advancements/recipes/misc/humanoid_golem_legs_from_metal_golem_template_stonecutting.json similarity index 95% rename from src/generated/resources/data/modulargolems/advancements/recipes/modulargolems.golems/humanoid_golem_legs_from_metal_golem_template_stonecutting.json rename to src/generated/resources/data/modulargolems/advancements/recipes/misc/humanoid_golem_legs_from_metal_golem_template_stonecutting.json index b85e6a7cb..f632d9368 100644 --- a/src/generated/resources/data/modulargolems/advancements/recipes/modulargolems.golems/humanoid_golem_legs_from_metal_golem_template_stonecutting.json +++ b/src/generated/resources/data/modulargolems/advancements/recipes/misc/humanoid_golem_legs_from_metal_golem_template_stonecutting.json @@ -30,5 +30,6 @@ "recipes": [ "modulargolems:humanoid_golem_legs_from_metal_golem_template_stonecutting" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/generated/resources/data/modulargolems/advancements/recipes/modulargolems.golems/incarcerate.json b/src/generated/resources/data/modulargolems/advancements/recipes/misc/incarcerate.json similarity index 94% rename from src/generated/resources/data/modulargolems/advancements/recipes/modulargolems.golems/incarcerate.json rename to src/generated/resources/data/modulargolems/advancements/recipes/misc/incarcerate.json index 2d2d2e6db..e1abe124f 100644 --- a/src/generated/resources/data/modulargolems/advancements/recipes/modulargolems.golems/incarcerate.json +++ b/src/generated/resources/data/modulargolems/advancements/recipes/misc/incarcerate.json @@ -30,5 +30,6 @@ "recipes": [ "modulargolems:incarcerate" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/generated/resources/data/modulargolems/advancements/recipes/modulargolems.golems/ironwood.json b/src/generated/resources/data/modulargolems/advancements/recipes/misc/ironwood.json similarity index 94% rename from src/generated/resources/data/modulargolems/advancements/recipes/modulargolems.golems/ironwood.json rename to src/generated/resources/data/modulargolems/advancements/recipes/misc/ironwood.json index 1e43b366e..9065c9db3 100644 --- a/src/generated/resources/data/modulargolems/advancements/recipes/modulargolems.golems/ironwood.json +++ b/src/generated/resources/data/modulargolems/advancements/recipes/misc/ironwood.json @@ -30,5 +30,6 @@ "recipes": [ "modulargolems:ironwood" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/generated/resources/data/modulargolems/advancements/recipes/modulargolems.golems/knightmetal.json b/src/generated/resources/data/modulargolems/advancements/recipes/misc/knightmetal.json similarity index 94% rename from src/generated/resources/data/modulargolems/advancements/recipes/modulargolems.golems/knightmetal.json rename to src/generated/resources/data/modulargolems/advancements/recipes/misc/knightmetal.json index 1ca3366c5..e6ef5524c 100644 --- a/src/generated/resources/data/modulargolems/advancements/recipes/modulargolems.golems/knightmetal.json +++ b/src/generated/resources/data/modulargolems/advancements/recipes/misc/knightmetal.json @@ -30,5 +30,6 @@ "recipes": [ "modulargolems:knightmetal" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/generated/resources/data/modulargolems/advancements/recipes/modulargolems.golems/metal_golem_arm_from_metal_golem_template_stonecutting.json b/src/generated/resources/data/modulargolems/advancements/recipes/misc/metal_golem_arm_from_metal_golem_template_stonecutting.json similarity index 95% rename from src/generated/resources/data/modulargolems/advancements/recipes/modulargolems.golems/metal_golem_arm_from_metal_golem_template_stonecutting.json rename to src/generated/resources/data/modulargolems/advancements/recipes/misc/metal_golem_arm_from_metal_golem_template_stonecutting.json index a38942dc1..f4a744ba4 100644 --- a/src/generated/resources/data/modulargolems/advancements/recipes/modulargolems.golems/metal_golem_arm_from_metal_golem_template_stonecutting.json +++ b/src/generated/resources/data/modulargolems/advancements/recipes/misc/metal_golem_arm_from_metal_golem_template_stonecutting.json @@ -30,5 +30,6 @@ "recipes": [ "modulargolems:metal_golem_arm_from_metal_golem_template_stonecutting" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/generated/resources/data/modulargolems/advancements/recipes/modulargolems.golems/metal_golem_body_from_metal_golem_template_stonecutting.json b/src/generated/resources/data/modulargolems/advancements/recipes/misc/metal_golem_body_from_metal_golem_template_stonecutting.json similarity index 95% rename from src/generated/resources/data/modulargolems/advancements/recipes/modulargolems.golems/metal_golem_body_from_metal_golem_template_stonecutting.json rename to src/generated/resources/data/modulargolems/advancements/recipes/misc/metal_golem_body_from_metal_golem_template_stonecutting.json index ff5b8ce0c..4c354a550 100644 --- a/src/generated/resources/data/modulargolems/advancements/recipes/modulargolems.golems/metal_golem_body_from_metal_golem_template_stonecutting.json +++ b/src/generated/resources/data/modulargolems/advancements/recipes/misc/metal_golem_body_from_metal_golem_template_stonecutting.json @@ -30,5 +30,6 @@ "recipes": [ "modulargolems:metal_golem_body_from_metal_golem_template_stonecutting" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/generated/resources/data/modulargolems/advancements/recipes/modulargolems.golems/metal_golem_legs_from_metal_golem_template_stonecutting.json b/src/generated/resources/data/modulargolems/advancements/recipes/misc/metal_golem_legs_from_metal_golem_template_stonecutting.json similarity index 95% rename from src/generated/resources/data/modulargolems/advancements/recipes/modulargolems.golems/metal_golem_legs_from_metal_golem_template_stonecutting.json rename to src/generated/resources/data/modulargolems/advancements/recipes/misc/metal_golem_legs_from_metal_golem_template_stonecutting.json index 8f49adbca..319a0a8ae 100644 --- a/src/generated/resources/data/modulargolems/advancements/recipes/modulargolems.golems/metal_golem_legs_from_metal_golem_template_stonecutting.json +++ b/src/generated/resources/data/modulargolems/advancements/recipes/misc/metal_golem_legs_from_metal_golem_template_stonecutting.json @@ -30,5 +30,6 @@ "recipes": [ "modulargolems:metal_golem_legs_from_metal_golem_template_stonecutting" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/generated/resources/data/modulargolems/advancements/recipes/modulargolems.golems/metal_golem_template.json b/src/generated/resources/data/modulargolems/advancements/recipes/misc/metal_golem_template.json similarity index 94% rename from src/generated/resources/data/modulargolems/advancements/recipes/modulargolems.golems/metal_golem_template.json rename to src/generated/resources/data/modulargolems/advancements/recipes/misc/metal_golem_template.json index 75d0cea71..9bd06d52d 100644 --- a/src/generated/resources/data/modulargolems/advancements/recipes/modulargolems.golems/metal_golem_template.json +++ b/src/generated/resources/data/modulargolems/advancements/recipes/misc/metal_golem_template.json @@ -30,5 +30,6 @@ "recipes": [ "modulargolems:metal_golem_template" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/generated/resources/data/modulargolems/advancements/recipes/misc/mount_upgrade.json b/src/generated/resources/data/modulargolems/advancements/recipes/misc/mount_upgrade.json new file mode 100644 index 000000000..957b158cd --- /dev/null +++ b/src/generated/resources/data/modulargolems/advancements/recipes/misc/mount_upgrade.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_empty_upgrade": { + "conditions": { + "items": [ + { + "items": [ + "modulargolems:empty_upgrade" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "modulargolems:mount_upgrade" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_empty_upgrade", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "modulargolems:mount_upgrade" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/generated/resources/data/modulargolems/advancements/recipes/modulargolems.golems/naga.json b/src/generated/resources/data/modulargolems/advancements/recipes/misc/naga.json similarity index 94% rename from src/generated/resources/data/modulargolems/advancements/recipes/modulargolems.golems/naga.json rename to src/generated/resources/data/modulargolems/advancements/recipes/misc/naga.json index c3e3d7915..44810c1a2 100644 --- a/src/generated/resources/data/modulargolems/advancements/recipes/modulargolems.golems/naga.json +++ b/src/generated/resources/data/modulargolems/advancements/recipes/misc/naga.json @@ -30,5 +30,6 @@ "recipes": [ "modulargolems:naga" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/generated/resources/data/modulargolems/advancements/recipes/modulargolems.golems/netherite.json b/src/generated/resources/data/modulargolems/advancements/recipes/misc/netherite.json similarity index 94% rename from src/generated/resources/data/modulargolems/advancements/recipes/modulargolems.golems/netherite.json rename to src/generated/resources/data/modulargolems/advancements/recipes/misc/netherite.json index 9439e8057..19cff2c86 100644 --- a/src/generated/resources/data/modulargolems/advancements/recipes/modulargolems.golems/netherite.json +++ b/src/generated/resources/data/modulargolems/advancements/recipes/misc/netherite.json @@ -30,5 +30,6 @@ "recipes": [ "modulargolems:netherite" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/generated/resources/data/modulargolems/advancements/recipes/modulargolems.golems/pickup.json b/src/generated/resources/data/modulargolems/advancements/recipes/misc/pickup.json similarity index 94% rename from src/generated/resources/data/modulargolems/advancements/recipes/modulargolems.golems/pickup.json rename to src/generated/resources/data/modulargolems/advancements/recipes/misc/pickup.json index 480535a7a..a3d44ed51 100644 --- a/src/generated/resources/data/modulargolems/advancements/recipes/modulargolems.golems/pickup.json +++ b/src/generated/resources/data/modulargolems/advancements/recipes/misc/pickup.json @@ -30,5 +30,6 @@ "recipes": [ "modulargolems:pickup" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/generated/resources/data/modulargolems/advancements/recipes/modulargolems.golems/pickup_mending.json b/src/generated/resources/data/modulargolems/advancements/recipes/misc/pickup_mending.json similarity index 94% rename from src/generated/resources/data/modulargolems/advancements/recipes/modulargolems.golems/pickup_mending.json rename to src/generated/resources/data/modulargolems/advancements/recipes/misc/pickup_mending.json index c502e90f0..d0265c292 100644 --- a/src/generated/resources/data/modulargolems/advancements/recipes/modulargolems.golems/pickup_mending.json +++ b/src/generated/resources/data/modulargolems/advancements/recipes/misc/pickup_mending.json @@ -30,5 +30,6 @@ "recipes": [ "modulargolems:pickup_mending" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/generated/resources/data/modulargolems/advancements/recipes/modulargolems.golems/pickup_no_destroy.json b/src/generated/resources/data/modulargolems/advancements/recipes/misc/pickup_no_destroy.json similarity index 94% rename from src/generated/resources/data/modulargolems/advancements/recipes/modulargolems.golems/pickup_no_destroy.json rename to src/generated/resources/data/modulargolems/advancements/recipes/misc/pickup_no_destroy.json index 225f2d90a..c71f7aa8f 100644 --- a/src/generated/resources/data/modulargolems/advancements/recipes/modulargolems.golems/pickup_no_destroy.json +++ b/src/generated/resources/data/modulargolems/advancements/recipes/misc/pickup_no_destroy.json @@ -30,5 +30,6 @@ "recipes": [ "modulargolems:pickup_no_destroy" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/generated/resources/data/modulargolems/advancements/recipes/modulargolems.golems/player.json b/src/generated/resources/data/modulargolems/advancements/recipes/misc/player.json similarity index 94% rename from src/generated/resources/data/modulargolems/advancements/recipes/modulargolems.golems/player.json rename to src/generated/resources/data/modulargolems/advancements/recipes/misc/player.json index 51900194e..b05c51ef8 100644 --- a/src/generated/resources/data/modulargolems/advancements/recipes/modulargolems.golems/player.json +++ b/src/generated/resources/data/modulargolems/advancements/recipes/misc/player.json @@ -30,5 +30,6 @@ "recipes": [ "modulargolems:player" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/generated/resources/data/modulargolems/advancements/recipes/modulargolems.golems/push.json b/src/generated/resources/data/modulargolems/advancements/recipes/misc/push.json similarity index 94% rename from src/generated/resources/data/modulargolems/advancements/recipes/modulargolems.golems/push.json rename to src/generated/resources/data/modulargolems/advancements/recipes/misc/push.json index f339ca2e7..480f215cf 100644 --- a/src/generated/resources/data/modulargolems/advancements/recipes/modulargolems.golems/push.json +++ b/src/generated/resources/data/modulargolems/advancements/recipes/misc/push.json @@ -30,5 +30,6 @@ "recipes": [ "modulargolems:push" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/generated/resources/data/modulargolems/advancements/recipes/modulargolems.golems/quartz.json b/src/generated/resources/data/modulargolems/advancements/recipes/misc/quartz.json similarity index 94% rename from src/generated/resources/data/modulargolems/advancements/recipes/modulargolems.golems/quartz.json rename to src/generated/resources/data/modulargolems/advancements/recipes/misc/quartz.json index 4214d3f25..f2d5aa05d 100644 --- a/src/generated/resources/data/modulargolems/advancements/recipes/modulargolems.golems/quartz.json +++ b/src/generated/resources/data/modulargolems/advancements/recipes/misc/quartz.json @@ -30,5 +30,6 @@ "recipes": [ "modulargolems:quartz" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/generated/resources/data/modulargolems/advancements/recipes/modulargolems.golems/recycle.json b/src/generated/resources/data/modulargolems/advancements/recipes/misc/recycle.json similarity index 94% rename from src/generated/resources/data/modulargolems/advancements/recipes/modulargolems.golems/recycle.json rename to src/generated/resources/data/modulargolems/advancements/recipes/misc/recycle.json index 3ea16c05e..e20d01ce5 100644 --- a/src/generated/resources/data/modulargolems/advancements/recipes/modulargolems.golems/recycle.json +++ b/src/generated/resources/data/modulargolems/advancements/recipes/misc/recycle.json @@ -30,5 +30,6 @@ "recipes": [ "modulargolems:recycle" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/generated/resources/data/modulargolems/advancements/recipes/modulargolems.golems/retrieval_wand.json b/src/generated/resources/data/modulargolems/advancements/recipes/misc/retrieval_wand.json similarity index 77% rename from src/generated/resources/data/modulargolems/advancements/recipes/modulargolems.golems/retrieval_wand.json rename to src/generated/resources/data/modulargolems/advancements/recipes/misc/retrieval_wand.json index fcdeb1ce5..509d645bb 100644 --- a/src/generated/resources/data/modulargolems/advancements/recipes/modulargolems.golems/retrieval_wand.json +++ b/src/generated/resources/data/modulargolems/advancements/recipes/misc/retrieval_wand.json @@ -1,12 +1,12 @@ { "parent": "minecraft:recipes/root", "criteria": { - "has_ender_pearl": { + "has_metal_golem_template": { "conditions": { "items": [ { "items": [ - "minecraft:ender_pearl" + "modulargolems:metal_golem_template" ] } ] @@ -22,7 +22,7 @@ }, "requirements": [ [ - "has_ender_pearl", + "has_metal_golem_template", "has_the_recipe" ] ], @@ -30,5 +30,6 @@ "recipes": [ "modulargolems:retrieval_wand" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/generated/resources/data/modulargolems/advancements/recipes/misc/rider_wand.json b/src/generated/resources/data/modulargolems/advancements/recipes/misc/rider_wand.json new file mode 100644 index 000000000..5be4319eb --- /dev/null +++ b/src/generated/resources/data/modulargolems/advancements/recipes/misc/rider_wand.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_metal_golem_template": { + "conditions": { + "items": [ + { + "items": [ + "modulargolems:metal_golem_template" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "modulargolems:rider_wand" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_metal_golem_template", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "modulargolems:rider_wand" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/generated/resources/data/modulargolems/advancements/recipes/misc/size_upgrade.json b/src/generated/resources/data/modulargolems/advancements/recipes/misc/size_upgrade.json new file mode 100644 index 000000000..7fb454d8b --- /dev/null +++ b/src/generated/resources/data/modulargolems/advancements/recipes/misc/size_upgrade.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_empty_upgrade": { + "conditions": { + "items": [ + { + "items": [ + "modulargolems:empty_upgrade" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "modulargolems:size_upgrade" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_empty_upgrade", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "modulargolems:size_upgrade" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/generated/resources/data/modulargolems/advancements/recipes/modulargolems.golems/slow.json b/src/generated/resources/data/modulargolems/advancements/recipes/misc/slow.json similarity index 94% rename from src/generated/resources/data/modulargolems/advancements/recipes/modulargolems.golems/slow.json rename to src/generated/resources/data/modulargolems/advancements/recipes/misc/slow.json index 6eaa303f6..df47c792f 100644 --- a/src/generated/resources/data/modulargolems/advancements/recipes/modulargolems.golems/slow.json +++ b/src/generated/resources/data/modulargolems/advancements/recipes/misc/slow.json @@ -30,5 +30,6 @@ "recipes": [ "modulargolems:slow" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/generated/resources/data/modulargolems/advancements/recipes/modulargolems.golems/soul_flame.json b/src/generated/resources/data/modulargolems/advancements/recipes/misc/soul_flame.json similarity index 94% rename from src/generated/resources/data/modulargolems/advancements/recipes/modulargolems.golems/soul_flame.json rename to src/generated/resources/data/modulargolems/advancements/recipes/misc/soul_flame.json index 4d0efecc2..b1566e053 100644 --- a/src/generated/resources/data/modulargolems/advancements/recipes/modulargolems.golems/soul_flame.json +++ b/src/generated/resources/data/modulargolems/advancements/recipes/misc/soul_flame.json @@ -30,5 +30,6 @@ "recipes": [ "modulargolems:soul_flame" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/generated/resources/data/modulargolems/advancements/recipes/modulargolems.golems/speed.json b/src/generated/resources/data/modulargolems/advancements/recipes/misc/speed.json similarity index 94% rename from src/generated/resources/data/modulargolems/advancements/recipes/modulargolems.golems/speed.json rename to src/generated/resources/data/modulargolems/advancements/recipes/misc/speed.json index 8518a547e..db22c034a 100644 --- a/src/generated/resources/data/modulargolems/advancements/recipes/modulargolems.golems/speed.json +++ b/src/generated/resources/data/modulargolems/advancements/recipes/misc/speed.json @@ -30,5 +30,6 @@ "recipes": [ "modulargolems:speed" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/generated/resources/data/modulargolems/advancements/recipes/modulargolems.golems/speed_high.json b/src/generated/resources/data/modulargolems/advancements/recipes/misc/speed_high.json similarity index 94% rename from src/generated/resources/data/modulargolems/advancements/recipes/modulargolems.golems/speed_high.json rename to src/generated/resources/data/modulargolems/advancements/recipes/misc/speed_high.json index 4ae5c7326..be4330193 100644 --- a/src/generated/resources/data/modulargolems/advancements/recipes/modulargolems.golems/speed_high.json +++ b/src/generated/resources/data/modulargolems/advancements/recipes/misc/speed_high.json @@ -30,5 +30,6 @@ "recipes": [ "modulargolems:speed_high" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/generated/resources/data/modulargolems/advancements/recipes/modulargolems.golems/sponge.json b/src/generated/resources/data/modulargolems/advancements/recipes/misc/sponge.json similarity index 94% rename from src/generated/resources/data/modulargolems/advancements/recipes/modulargolems.golems/sponge.json rename to src/generated/resources/data/modulargolems/advancements/recipes/misc/sponge.json index 49c3cb923..cbdd9d922 100644 --- a/src/generated/resources/data/modulargolems/advancements/recipes/modulargolems.golems/sponge.json +++ b/src/generated/resources/data/modulargolems/advancements/recipes/misc/sponge.json @@ -30,5 +30,6 @@ "recipes": [ "modulargolems:sponge" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/generated/resources/data/modulargolems/advancements/recipes/modulargolems.golems/steeleaf.json b/src/generated/resources/data/modulargolems/advancements/recipes/misc/steeleaf.json similarity index 94% rename from src/generated/resources/data/modulargolems/advancements/recipes/modulargolems.golems/steeleaf.json rename to src/generated/resources/data/modulargolems/advancements/recipes/misc/steeleaf.json index 2c8a0f5fe..04ad496d4 100644 --- a/src/generated/resources/data/modulargolems/advancements/recipes/modulargolems.golems/steeleaf.json +++ b/src/generated/resources/data/modulargolems/advancements/recipes/misc/steeleaf.json @@ -30,5 +30,6 @@ "recipes": [ "modulargolems:steeleaf" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/generated/resources/data/modulargolems/advancements/recipes/modulargolems.golems/summon_wand.json b/src/generated/resources/data/modulargolems/advancements/recipes/misc/summon_wand.json similarity index 76% rename from src/generated/resources/data/modulargolems/advancements/recipes/modulargolems.golems/summon_wand.json rename to src/generated/resources/data/modulargolems/advancements/recipes/misc/summon_wand.json index ae0bbaefa..4805cc6bb 100644 --- a/src/generated/resources/data/modulargolems/advancements/recipes/modulargolems.golems/summon_wand.json +++ b/src/generated/resources/data/modulargolems/advancements/recipes/misc/summon_wand.json @@ -1,12 +1,12 @@ { "parent": "minecraft:recipes/root", "criteria": { - "has_dispenser": { + "has_metal_golem_template": { "conditions": { "items": [ { "items": [ - "minecraft:dispenser" + "modulargolems:metal_golem_template" ] } ] @@ -22,7 +22,7 @@ }, "requirements": [ [ - "has_dispenser", + "has_metal_golem_template", "has_the_recipe" ] ], @@ -30,5 +30,6 @@ "recipes": [ "modulargolems:summon_wand" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/generated/resources/data/modulargolems/advancements/recipes/modulargolems.golems/swim.json b/src/generated/resources/data/modulargolems/advancements/recipes/misc/swim.json similarity index 94% rename from src/generated/resources/data/modulargolems/advancements/recipes/modulargolems.golems/swim.json rename to src/generated/resources/data/modulargolems/advancements/recipes/misc/swim.json index 7e0c98c03..356940c18 100644 --- a/src/generated/resources/data/modulargolems/advancements/recipes/modulargolems.golems/swim.json +++ b/src/generated/resources/data/modulargolems/advancements/recipes/misc/swim.json @@ -30,5 +30,6 @@ "recipes": [ "modulargolems:swim" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/generated/resources/data/modulargolems/advancements/recipes/modulargolems.golems/talented.json b/src/generated/resources/data/modulargolems/advancements/recipes/misc/talented.json similarity index 94% rename from src/generated/resources/data/modulargolems/advancements/recipes/modulargolems.golems/talented.json rename to src/generated/resources/data/modulargolems/advancements/recipes/misc/talented.json index f7221e0c3..acd407bdc 100644 --- a/src/generated/resources/data/modulargolems/advancements/recipes/modulargolems.golems/talented.json +++ b/src/generated/resources/data/modulargolems/advancements/recipes/misc/talented.json @@ -30,5 +30,6 @@ "recipes": [ "modulargolems:talented" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/generated/resources/data/modulargolems/advancements/recipes/modulargolems.golems/teleport.json b/src/generated/resources/data/modulargolems/advancements/recipes/misc/teleport.json similarity index 94% rename from src/generated/resources/data/modulargolems/advancements/recipes/modulargolems.golems/teleport.json rename to src/generated/resources/data/modulargolems/advancements/recipes/misc/teleport.json index bc154423d..46dc9f588 100644 --- a/src/generated/resources/data/modulargolems/advancements/recipes/modulargolems.golems/teleport.json +++ b/src/generated/resources/data/modulargolems/advancements/recipes/misc/teleport.json @@ -30,5 +30,6 @@ "recipes": [ "modulargolems:teleport" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/generated/resources/data/modulargolems/advancements/recipes/modulargolems.golems/thunder_immune.json b/src/generated/resources/data/modulargolems/advancements/recipes/misc/thunder_immune.json similarity index 94% rename from src/generated/resources/data/modulargolems/advancements/recipes/modulargolems.golems/thunder_immune.json rename to src/generated/resources/data/modulargolems/advancements/recipes/misc/thunder_immune.json index 8da3b2c83..8c75fd8ae 100644 --- a/src/generated/resources/data/modulargolems/advancements/recipes/modulargolems.golems/thunder_immune.json +++ b/src/generated/resources/data/modulargolems/advancements/recipes/misc/thunder_immune.json @@ -30,5 +30,6 @@ "recipes": [ "modulargolems:thunder_immune" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/generated/resources/data/modulargolems/advancements/recipes/modulargolems.golems/weak.json b/src/generated/resources/data/modulargolems/advancements/recipes/misc/weak.json similarity index 94% rename from src/generated/resources/data/modulargolems/advancements/recipes/modulargolems.golems/weak.json rename to src/generated/resources/data/modulargolems/advancements/recipes/misc/weak.json index e69fa70e9..18ddee167 100644 --- a/src/generated/resources/data/modulargolems/advancements/recipes/modulargolems.golems/weak.json +++ b/src/generated/resources/data/modulargolems/advancements/recipes/misc/weak.json @@ -30,5 +30,6 @@ "recipes": [ "modulargolems:weak" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/generated/resources/data/modulargolems/advancements/recipes/modulargolems.golems/wither.json b/src/generated/resources/data/modulargolems/advancements/recipes/misc/wither.json similarity index 94% rename from src/generated/resources/data/modulargolems/advancements/recipes/modulargolems.golems/wither.json rename to src/generated/resources/data/modulargolems/advancements/recipes/misc/wither.json index 0e51f3f9a..b7cd79a78 100644 --- a/src/generated/resources/data/modulargolems/advancements/recipes/modulargolems.golems/wither.json +++ b/src/generated/resources/data/modulargolems/advancements/recipes/misc/wither.json @@ -30,5 +30,6 @@ "recipes": [ "modulargolems:wither" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/generated/resources/data/modulargolems/golem_config/materials/vanilla.json b/src/generated/resources/data/modulargolems/modulargolems_config/materials/vanilla.json similarity index 95% rename from src/generated/resources/data/modulargolems/golem_config/materials/vanilla.json rename to src/generated/resources/data/modulargolems/modulargolems_config/materials/vanilla.json index da4a957e3..2ef5635db 100644 --- a/src/generated/resources/data/modulargolems/golem_config/materials/vanilla.json +++ b/src/generated/resources/data/modulargolems/modulargolems_config/materials/vanilla.json @@ -1,5 +1,4 @@ { - "_class": "dev.xkmc.modulargolems.content.config.GolemMaterialConfig", "ingredients": { "modulargolems:copper": { "item": "minecraft:copper_ingot" diff --git a/src/generated/resources/data/modulargolems/golem_config/parts/default.json b/src/generated/resources/data/modulargolems/modulargolems_config/parts/default.json similarity index 95% rename from src/generated/resources/data/modulargolems/golem_config/parts/default.json rename to src/generated/resources/data/modulargolems/modulargolems_config/parts/default.json index e806c2efb..35f7b1d26 100644 --- a/src/generated/resources/data/modulargolems/golem_config/parts/default.json +++ b/src/generated/resources/data/modulargolems/modulargolems_config/parts/default.json @@ -1,5 +1,4 @@ { - "_class": "dev.xkmc.modulargolems.content.config.GolemPartConfig", "filters": { "modulargolems:dog_golem_body": { "ATTACK": 1.0, diff --git a/src/generated/resources/data/modulargolems/recipes/attack_high.json b/src/generated/resources/data/modulargolems/recipes/attack_high.json index 200d8a11a..25bbe8790 100644 --- a/src/generated/resources/data/modulargolems/recipes/attack_high.json +++ b/src/generated/resources/data/modulargolems/recipes/attack_high.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shapeless", + "category": "misc", "conditions": [ { "type": "forge:mod_loaded", diff --git a/src/generated/resources/data/modulargolems/recipes/bell.json b/src/generated/resources/data/modulargolems/recipes/bell.json index bc6eafc8f..ebc6ea616 100644 --- a/src/generated/resources/data/modulargolems/recipes/bell.json +++ b/src/generated/resources/data/modulargolems/recipes/bell.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shapeless", + "category": "misc", "ingredients": [ { "item": "modulargolems:empty_upgrade" diff --git a/src/generated/resources/data/modulargolems/recipes/carminite.json b/src/generated/resources/data/modulargolems/recipes/carminite.json index 74c1a2229..c599e858b 100644 --- a/src/generated/resources/data/modulargolems/recipes/carminite.json +++ b/src/generated/resources/data/modulargolems/recipes/carminite.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shaped", + "category": "misc", "conditions": [ { "type": "forge:mod_loaded", @@ -24,5 +25,6 @@ ], "result": { "item": "modulargolems:carminite" - } + }, + "show_notification": true } \ No newline at end of file diff --git a/src/generated/resources/data/modulargolems/recipes/cauldron.json b/src/generated/resources/data/modulargolems/recipes/cauldron.json index 2846aa2e1..0328a51e7 100644 --- a/src/generated/resources/data/modulargolems/recipes/cauldron.json +++ b/src/generated/resources/data/modulargolems/recipes/cauldron.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shaped", + "category": "misc", "key": { "A": { "item": "minecraft:nether_star" @@ -24,5 +25,6 @@ ], "result": { "item": "modulargolems:cauldron" - } + }, + "show_notification": true } \ No newline at end of file diff --git a/src/generated/resources/data/modulargolems/recipes/cleanse.json b/src/generated/resources/data/modulargolems/recipes/cleanse.json index 7eca27a32..cc2d79eaf 100644 --- a/src/generated/resources/data/modulargolems/recipes/cleanse.json +++ b/src/generated/resources/data/modulargolems/recipes/cleanse.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shaped", + "category": "misc", "conditions": [ { "type": "forge:mod_loaded", @@ -32,5 +33,6 @@ ], "result": { "item": "modulargolems:cleanse" - } + }, + "show_notification": true } \ No newline at end of file diff --git a/src/generated/resources/data/modulargolems/recipes/coating.json b/src/generated/resources/data/modulargolems/recipes/coating.json index 06ea7954e..8da09109c 100644 --- a/src/generated/resources/data/modulargolems/recipes/coating.json +++ b/src/generated/resources/data/modulargolems/recipes/coating.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shaped", + "category": "misc", "conditions": [ { "type": "forge:mod_loaded", @@ -21,5 +22,6 @@ ], "result": { "item": "modulargolems:coating" - } + }, + "show_notification": true } \ No newline at end of file diff --git a/src/generated/resources/data/modulargolems/recipes/command_wand.json b/src/generated/resources/data/modulargolems/recipes/command_wand.json index 218656527..f6cf1e78f 100644 --- a/src/generated/resources/data/modulargolems/recipes/command_wand.json +++ b/src/generated/resources/data/modulargolems/recipes/command_wand.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shaped", + "category": "misc", "key": { "E": { "item": "minecraft:gold_ingot" @@ -18,5 +19,6 @@ ], "result": { "item": "modulargolems:command_wand" - } + }, + "show_notification": true } \ No newline at end of file diff --git a/src/generated/resources/data/modulargolems/recipes/curse.json b/src/generated/resources/data/modulargolems/recipes/curse.json index 1e7ca0f88..fee6136ad 100644 --- a/src/generated/resources/data/modulargolems/recipes/curse.json +++ b/src/generated/resources/data/modulargolems/recipes/curse.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shaped", + "category": "misc", "conditions": [ { "type": "forge:mod_loaded", @@ -32,5 +33,6 @@ ], "result": { "item": "modulargolems:curse" - } + }, + "show_notification": true } \ No newline at end of file diff --git a/src/generated/resources/data/modulargolems/recipes/diamond.json b/src/generated/resources/data/modulargolems/recipes/diamond.json index 2018bc978..b0a6b9e19 100644 --- a/src/generated/resources/data/modulargolems/recipes/diamond.json +++ b/src/generated/resources/data/modulargolems/recipes/diamond.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shaped", + "category": "misc", "key": { "A": { "item": "minecraft:diamond_block" @@ -18,5 +19,6 @@ ], "result": { "item": "modulargolems:diamond" - } + }, + "show_notification": true } \ No newline at end of file diff --git a/src/generated/resources/data/modulargolems/recipes/dog_golem_holder.json b/src/generated/resources/data/modulargolems/recipes/dog_golem_holder.json index 551d86260..d053ef93b 100644 --- a/src/generated/resources/data/modulargolems/recipes/dog_golem_holder.json +++ b/src/generated/resources/data/modulargolems/recipes/dog_golem_holder.json @@ -1,5 +1,6 @@ { "type": "modulargolems:golem_assemble", + "category": "misc", "key": { "A": { "item": "modulargolems:dog_golem_body" @@ -14,5 +15,6 @@ ], "result": { "item": "modulargolems:dog_golem_holder" - } + }, + "show_notification": false } \ No newline at end of file diff --git a/src/generated/resources/data/modulargolems/recipes/emerald.json b/src/generated/resources/data/modulargolems/recipes/emerald.json index 20cf0fc98..908bcdb92 100644 --- a/src/generated/resources/data/modulargolems/recipes/emerald.json +++ b/src/generated/resources/data/modulargolems/recipes/emerald.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shaped", + "category": "misc", "key": { "A": { "item": "minecraft:emerald_block" @@ -18,5 +19,6 @@ ], "result": { "item": "modulargolems:emerald" - } + }, + "show_notification": true } \ No newline at end of file diff --git a/src/generated/resources/data/modulargolems/recipes/empty_upgrade.json b/src/generated/resources/data/modulargolems/recipes/empty_upgrade.json index 723c21bf2..67ec0716a 100644 --- a/src/generated/resources/data/modulargolems/recipes/empty_upgrade.json +++ b/src/generated/resources/data/modulargolems/recipes/empty_upgrade.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shaped", + "category": "misc", "key": { "A": { "item": "minecraft:amethyst_shard" @@ -19,5 +20,6 @@ "result": { "count": 4, "item": "modulargolems:empty_upgrade" - } + }, + "show_notification": true } \ No newline at end of file diff --git a/src/generated/resources/data/modulargolems/recipes/enchanted_gold.json b/src/generated/resources/data/modulargolems/recipes/enchanted_gold.json index efd7c2867..babb476cf 100644 --- a/src/generated/resources/data/modulargolems/recipes/enchanted_gold.json +++ b/src/generated/resources/data/modulargolems/recipes/enchanted_gold.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shapeless", + "category": "misc", "ingredients": [ { "item": "modulargolems:empty_upgrade" diff --git a/src/generated/resources/data/modulargolems/recipes/ender_sight.json b/src/generated/resources/data/modulargolems/recipes/ender_sight.json index 31313dd3c..36c4dc160 100644 --- a/src/generated/resources/data/modulargolems/recipes/ender_sight.json +++ b/src/generated/resources/data/modulargolems/recipes/ender_sight.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shapeless", + "category": "misc", "ingredients": [ { "item": "modulargolems:empty_upgrade" diff --git a/src/generated/resources/data/modulargolems/recipes/fiery.json b/src/generated/resources/data/modulargolems/recipes/fiery.json index 8d04ca658..c8fe880fd 100644 --- a/src/generated/resources/data/modulargolems/recipes/fiery.json +++ b/src/generated/resources/data/modulargolems/recipes/fiery.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shaped", + "category": "misc", "conditions": [ { "type": "forge:mod_loaded", @@ -24,5 +25,6 @@ ], "result": { "item": "modulargolems:fiery" - } + }, + "show_notification": true } \ No newline at end of file diff --git a/src/generated/resources/data/modulargolems/recipes/fire_immune.json b/src/generated/resources/data/modulargolems/recipes/fire_immune.json index 2e7bd4ee7..2b7d734c2 100644 --- a/src/generated/resources/data/modulargolems/recipes/fire_immune.json +++ b/src/generated/resources/data/modulargolems/recipes/fire_immune.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shaped", + "category": "misc", "key": { "A": { "item": "minecraft:magma_cream" @@ -15,5 +16,6 @@ ], "result": { "item": "modulargolems:fire_immune" - } + }, + "show_notification": true } \ No newline at end of file diff --git a/src/generated/resources/data/modulargolems/recipes/float.json b/src/generated/resources/data/modulargolems/recipes/float.json index 2f49fd98e..03fbf6c4c 100644 --- a/src/generated/resources/data/modulargolems/recipes/float.json +++ b/src/generated/resources/data/modulargolems/recipes/float.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shapeless", + "category": "misc", "ingredients": [ { "item": "modulargolems:empty_upgrade" diff --git a/src/generated/resources/data/modulargolems/recipes/force_field.json b/src/generated/resources/data/modulargolems/recipes/force_field.json index f64f79013..01994c393 100644 --- a/src/generated/resources/data/modulargolems/recipes/force_field.json +++ b/src/generated/resources/data/modulargolems/recipes/force_field.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shapeless", + "category": "misc", "conditions": [ { "type": "forge:mod_loaded", diff --git a/src/generated/resources/data/modulargolems/recipes/freezing.json b/src/generated/resources/data/modulargolems/recipes/freezing.json index f29d4a06c..6c90d3016 100644 --- a/src/generated/resources/data/modulargolems/recipes/freezing.json +++ b/src/generated/resources/data/modulargolems/recipes/freezing.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shaped", + "category": "misc", "conditions": [ { "type": "forge:mod_loaded", @@ -34,5 +35,6 @@ ], "result": { "item": "modulargolems:freezing" - } + }, + "show_notification": true } \ No newline at end of file diff --git a/src/generated/resources/data/modulargolems/recipes/gold.json b/src/generated/resources/data/modulargolems/recipes/gold.json index 1955999df..43637ba5c 100644 --- a/src/generated/resources/data/modulargolems/recipes/gold.json +++ b/src/generated/resources/data/modulargolems/recipes/gold.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shaped", + "category": "misc", "key": { "A": { "item": "minecraft:golden_apple" @@ -18,5 +19,6 @@ ], "result": { "item": "modulargolems:gold" - } + }, + "show_notification": true } \ No newline at end of file diff --git a/src/generated/resources/data/modulargolems/recipes/humanoid_golem_holder.json b/src/generated/resources/data/modulargolems/recipes/humanoid_golem_holder.json index 857baaaca..2282c704b 100644 --- a/src/generated/resources/data/modulargolems/recipes/humanoid_golem_holder.json +++ b/src/generated/resources/data/modulargolems/recipes/humanoid_golem_holder.json @@ -1,5 +1,6 @@ { "type": "modulargolems:golem_assemble", + "category": "misc", "key": { "A": { "item": "modulargolems:humanoid_golem_body" @@ -18,5 +19,6 @@ ], "result": { "item": "modulargolems:humanoid_golem_holder" - } + }, + "show_notification": false } \ No newline at end of file diff --git a/src/generated/resources/data/modulargolems/recipes/incarcerate.json b/src/generated/resources/data/modulargolems/recipes/incarcerate.json index 5a3e47084..00ca93dcd 100644 --- a/src/generated/resources/data/modulargolems/recipes/incarcerate.json +++ b/src/generated/resources/data/modulargolems/recipes/incarcerate.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shaped", + "category": "misc", "conditions": [ { "type": "forge:mod_loaded", @@ -32,5 +33,6 @@ ], "result": { "item": "modulargolems:incarcerate" - } + }, + "show_notification": true } \ No newline at end of file diff --git a/src/generated/resources/data/modulargolems/recipes/ironwood.json b/src/generated/resources/data/modulargolems/recipes/ironwood.json index 122e3f86c..06c3d1be0 100644 --- a/src/generated/resources/data/modulargolems/recipes/ironwood.json +++ b/src/generated/resources/data/modulargolems/recipes/ironwood.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shaped", + "category": "misc", "conditions": [ { "type": "forge:mod_loaded", @@ -21,5 +22,6 @@ ], "result": { "item": "modulargolems:ironwood" - } + }, + "show_notification": true } \ No newline at end of file diff --git a/src/generated/resources/data/modulargolems/recipes/knightmetal.json b/src/generated/resources/data/modulargolems/recipes/knightmetal.json index cfd244984..db19f3d7a 100644 --- a/src/generated/resources/data/modulargolems/recipes/knightmetal.json +++ b/src/generated/resources/data/modulargolems/recipes/knightmetal.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shaped", + "category": "misc", "conditions": [ { "type": "forge:mod_loaded", @@ -24,5 +25,6 @@ ], "result": { "item": "modulargolems:knightmetal" - } + }, + "show_notification": true } \ No newline at end of file diff --git a/src/generated/resources/data/modulargolems/recipes/metal_golem_holder.json b/src/generated/resources/data/modulargolems/recipes/metal_golem_holder.json index ad0096053..043ae0722 100644 --- a/src/generated/resources/data/modulargolems/recipes/metal_golem_holder.json +++ b/src/generated/resources/data/modulargolems/recipes/metal_golem_holder.json @@ -1,5 +1,6 @@ { "type": "modulargolems:golem_assemble", + "category": "misc", "key": { "A": { "item": "modulargolems:metal_golem_arm" @@ -17,5 +18,6 @@ ], "result": { "item": "modulargolems:metal_golem_holder" - } + }, + "show_notification": false } \ No newline at end of file diff --git a/src/generated/resources/data/modulargolems/recipes/metal_golem_template.json b/src/generated/resources/data/modulargolems/recipes/metal_golem_template.json index 4ca1ca909..26b00adda 100644 --- a/src/generated/resources/data/modulargolems/recipes/metal_golem_template.json +++ b/src/generated/resources/data/modulargolems/recipes/metal_golem_template.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shaped", + "category": "misc", "key": { "A": { "item": "minecraft:copper_ingot" @@ -18,5 +19,6 @@ ], "result": { "item": "modulargolems:metal_golem_template" - } + }, + "show_notification": true } \ No newline at end of file diff --git a/src/generated/resources/data/modulargolems/recipes/mixing/dog_golem_body_apply_brimsteel.json b/src/generated/resources/data/modulargolems/recipes/mixing/dog_golem_body_apply_brimsteel.json deleted file mode 100644 index fff7609af..000000000 --- a/src/generated/resources/data/modulargolems/recipes/mixing/dog_golem_body_apply_brimsteel.json +++ /dev/null @@ -1,45 +0,0 @@ -{ - "type": "create:mixing", - "conditions": [ - { - "type": "forge:mod_loaded", - "modid": "create" - }, - { - "type": "forge:mod_loaded", - "modid": "blazegear" - } - ], - "heatRequirement": "heated", - "ingredients": [ - { - "item": "modulargolems:dog_golem_body" - }, - { - "item": "blazegear:brimsteel_ingot" - }, - { - "item": "blazegear:brimsteel_ingot" - }, - { - "item": "blazegear:brimsteel_ingot" - }, - { - "item": "blazegear:brimsteel_ingot" - }, - { - "item": "blazegear:brimsteel_ingot" - }, - { - "item": "blazegear:brimsteel_ingot" - } - ], - "results": [ - { - "item": "modulargolems:dog_golem_body", - "nbt": { - "golem_material": "blazegear:brimsteel" - } - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/modulargolems/recipes/mixing/dog_golem_legs_apply_brimsteel.json b/src/generated/resources/data/modulargolems/recipes/mixing/dog_golem_legs_apply_brimsteel.json deleted file mode 100644 index 186985e67..000000000 --- a/src/generated/resources/data/modulargolems/recipes/mixing/dog_golem_legs_apply_brimsteel.json +++ /dev/null @@ -1,36 +0,0 @@ -{ - "type": "create:mixing", - "conditions": [ - { - "type": "forge:mod_loaded", - "modid": "create" - }, - { - "type": "forge:mod_loaded", - "modid": "blazegear" - } - ], - "heatRequirement": "heated", - "ingredients": [ - { - "item": "modulargolems:dog_golem_legs" - }, - { - "item": "blazegear:brimsteel_ingot" - }, - { - "item": "blazegear:brimsteel_ingot" - }, - { - "item": "blazegear:brimsteel_ingot" - } - ], - "results": [ - { - "item": "modulargolems:dog_golem_legs", - "nbt": { - "golem_material": "blazegear:brimsteel" - } - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/modulargolems/recipes/mixing/humanoid_golem_arms_apply_brimsteel.json b/src/generated/resources/data/modulargolems/recipes/mixing/humanoid_golem_arms_apply_brimsteel.json deleted file mode 100644 index cd97c2d0d..000000000 --- a/src/generated/resources/data/modulargolems/recipes/mixing/humanoid_golem_arms_apply_brimsteel.json +++ /dev/null @@ -1,45 +0,0 @@ -{ - "type": "create:mixing", - "conditions": [ - { - "type": "forge:mod_loaded", - "modid": "create" - }, - { - "type": "forge:mod_loaded", - "modid": "blazegear" - } - ], - "heatRequirement": "heated", - "ingredients": [ - { - "item": "modulargolems:humanoid_golem_arms" - }, - { - "item": "blazegear:brimsteel_ingot" - }, - { - "item": "blazegear:brimsteel_ingot" - }, - { - "item": "blazegear:brimsteel_ingot" - }, - { - "item": "blazegear:brimsteel_ingot" - }, - { - "item": "blazegear:brimsteel_ingot" - }, - { - "item": "blazegear:brimsteel_ingot" - } - ], - "results": [ - { - "item": "modulargolems:humanoid_golem_arms", - "nbt": { - "golem_material": "blazegear:brimsteel" - } - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/modulargolems/recipes/mixing/humanoid_golem_body_apply_brimsteel.json b/src/generated/resources/data/modulargolems/recipes/mixing/humanoid_golem_body_apply_brimsteel.json deleted file mode 100644 index f27530ff8..000000000 --- a/src/generated/resources/data/modulargolems/recipes/mixing/humanoid_golem_body_apply_brimsteel.json +++ /dev/null @@ -1,45 +0,0 @@ -{ - "type": "create:mixing", - "conditions": [ - { - "type": "forge:mod_loaded", - "modid": "create" - }, - { - "type": "forge:mod_loaded", - "modid": "blazegear" - } - ], - "heatRequirement": "heated", - "ingredients": [ - { - "item": "modulargolems:humanoid_golem_body" - }, - { - "item": "blazegear:brimsteel_ingot" - }, - { - "item": "blazegear:brimsteel_ingot" - }, - { - "item": "blazegear:brimsteel_ingot" - }, - { - "item": "blazegear:brimsteel_ingot" - }, - { - "item": "blazegear:brimsteel_ingot" - }, - { - "item": "blazegear:brimsteel_ingot" - } - ], - "results": [ - { - "item": "modulargolems:humanoid_golem_body", - "nbt": { - "golem_material": "blazegear:brimsteel" - } - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/modulargolems/recipes/mixing/humanoid_golem_legs_apply_brimsteel.json b/src/generated/resources/data/modulargolems/recipes/mixing/humanoid_golem_legs_apply_brimsteel.json deleted file mode 100644 index 76b700405..000000000 --- a/src/generated/resources/data/modulargolems/recipes/mixing/humanoid_golem_legs_apply_brimsteel.json +++ /dev/null @@ -1,45 +0,0 @@ -{ - "type": "create:mixing", - "conditions": [ - { - "type": "forge:mod_loaded", - "modid": "create" - }, - { - "type": "forge:mod_loaded", - "modid": "blazegear" - } - ], - "heatRequirement": "heated", - "ingredients": [ - { - "item": "modulargolems:humanoid_golem_legs" - }, - { - "item": "blazegear:brimsteel_ingot" - }, - { - "item": "blazegear:brimsteel_ingot" - }, - { - "item": "blazegear:brimsteel_ingot" - }, - { - "item": "blazegear:brimsteel_ingot" - }, - { - "item": "blazegear:brimsteel_ingot" - }, - { - "item": "blazegear:brimsteel_ingot" - } - ], - "results": [ - { - "item": "modulargolems:humanoid_golem_legs", - "nbt": { - "golem_material": "blazegear:brimsteel" - } - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/modulargolems/recipes/mixing/metal_golem_arm_apply_brimsteel.json b/src/generated/resources/data/modulargolems/recipes/mixing/metal_golem_arm_apply_brimsteel.json deleted file mode 100644 index d9c1b2b4a..000000000 --- a/src/generated/resources/data/modulargolems/recipes/mixing/metal_golem_arm_apply_brimsteel.json +++ /dev/null @@ -1,54 +0,0 @@ -{ - "type": "create:mixing", - "conditions": [ - { - "type": "forge:mod_loaded", - "modid": "create" - }, - { - "type": "forge:mod_loaded", - "modid": "blazegear" - } - ], - "heatRequirement": "heated", - "ingredients": [ - { - "item": "modulargolems:metal_golem_arm" - }, - { - "item": "blazegear:brimsteel_ingot" - }, - { - "item": "blazegear:brimsteel_ingot" - }, - { - "item": "blazegear:brimsteel_ingot" - }, - { - "item": "blazegear:brimsteel_ingot" - }, - { - "item": "blazegear:brimsteel_ingot" - }, - { - "item": "blazegear:brimsteel_ingot" - }, - { - "item": "blazegear:brimsteel_ingot" - }, - { - "item": "blazegear:brimsteel_ingot" - }, - { - "item": "blazegear:brimsteel_ingot" - } - ], - "results": [ - { - "item": "modulargolems:metal_golem_arm", - "nbt": { - "golem_material": "blazegear:brimsteel" - } - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/modulargolems/recipes/mixing/metal_golem_body_apply_brimsteel.json b/src/generated/resources/data/modulargolems/recipes/mixing/metal_golem_body_apply_brimsteel.json deleted file mode 100644 index cd264ce62..000000000 --- a/src/generated/resources/data/modulargolems/recipes/mixing/metal_golem_body_apply_brimsteel.json +++ /dev/null @@ -1,54 +0,0 @@ -{ - "type": "create:mixing", - "conditions": [ - { - "type": "forge:mod_loaded", - "modid": "create" - }, - { - "type": "forge:mod_loaded", - "modid": "blazegear" - } - ], - "heatRequirement": "heated", - "ingredients": [ - { - "item": "modulargolems:metal_golem_body" - }, - { - "item": "blazegear:brimsteel_ingot" - }, - { - "item": "blazegear:brimsteel_ingot" - }, - { - "item": "blazegear:brimsteel_ingot" - }, - { - "item": "blazegear:brimsteel_ingot" - }, - { - "item": "blazegear:brimsteel_ingot" - }, - { - "item": "blazegear:brimsteel_ingot" - }, - { - "item": "blazegear:brimsteel_ingot" - }, - { - "item": "blazegear:brimsteel_ingot" - }, - { - "item": "blazegear:brimsteel_ingot" - } - ], - "results": [ - { - "item": "modulargolems:metal_golem_body", - "nbt": { - "golem_material": "blazegear:brimsteel" - } - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/modulargolems/recipes/mixing/metal_golem_legs_apply_brimsteel.json b/src/generated/resources/data/modulargolems/recipes/mixing/metal_golem_legs_apply_brimsteel.json deleted file mode 100644 index b911135b0..000000000 --- a/src/generated/resources/data/modulargolems/recipes/mixing/metal_golem_legs_apply_brimsteel.json +++ /dev/null @@ -1,54 +0,0 @@ -{ - "type": "create:mixing", - "conditions": [ - { - "type": "forge:mod_loaded", - "modid": "create" - }, - { - "type": "forge:mod_loaded", - "modid": "blazegear" - } - ], - "heatRequirement": "heated", - "ingredients": [ - { - "item": "modulargolems:metal_golem_legs" - }, - { - "item": "blazegear:brimsteel_ingot" - }, - { - "item": "blazegear:brimsteel_ingot" - }, - { - "item": "blazegear:brimsteel_ingot" - }, - { - "item": "blazegear:brimsteel_ingot" - }, - { - "item": "blazegear:brimsteel_ingot" - }, - { - "item": "blazegear:brimsteel_ingot" - }, - { - "item": "blazegear:brimsteel_ingot" - }, - { - "item": "blazegear:brimsteel_ingot" - }, - { - "item": "blazegear:brimsteel_ingot" - } - ], - "results": [ - { - "item": "modulargolems:metal_golem_legs", - "nbt": { - "golem_material": "blazegear:brimsteel" - } - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/modulargolems/recipes/mount_upgrade.json b/src/generated/resources/data/modulargolems/recipes/mount_upgrade.json new file mode 100644 index 000000000..6a069c30f --- /dev/null +++ b/src/generated/resources/data/modulargolems/recipes/mount_upgrade.json @@ -0,0 +1,15 @@ +{ + "type": "minecraft:crafting_shapeless", + "category": "misc", + "ingredients": [ + { + "item": "modulargolems:empty_upgrade" + }, + { + "item": "minecraft:saddle" + } + ], + "result": { + "item": "modulargolems:mount_upgrade" + } +} \ No newline at end of file diff --git a/src/generated/resources/data/modulargolems/recipes/naga.json b/src/generated/resources/data/modulargolems/recipes/naga.json index 74306ade9..0b780a40e 100644 --- a/src/generated/resources/data/modulargolems/recipes/naga.json +++ b/src/generated/resources/data/modulargolems/recipes/naga.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shaped", + "category": "misc", "conditions": [ { "type": "forge:mod_loaded", @@ -21,5 +22,6 @@ ], "result": { "item": "modulargolems:naga" - } + }, + "show_notification": true } \ No newline at end of file diff --git a/src/generated/resources/data/modulargolems/recipes/netherite.json b/src/generated/resources/data/modulargolems/recipes/netherite.json index d9db80f78..b4163a702 100644 --- a/src/generated/resources/data/modulargolems/recipes/netherite.json +++ b/src/generated/resources/data/modulargolems/recipes/netherite.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shaped", + "category": "misc", "key": { "A": { "item": "minecraft:netherite_ingot" @@ -18,5 +19,6 @@ ], "result": { "item": "modulargolems:netherite" - } + }, + "show_notification": true } \ No newline at end of file diff --git a/src/generated/resources/data/modulargolems/recipes/pickup.json b/src/generated/resources/data/modulargolems/recipes/pickup.json index f3460ef92..34a01aa85 100644 --- a/src/generated/resources/data/modulargolems/recipes/pickup.json +++ b/src/generated/resources/data/modulargolems/recipes/pickup.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shaped", + "category": "misc", "key": { "A": { "item": "minecraft:hopper" @@ -21,5 +22,6 @@ ], "result": { "item": "modulargolems:pickup" - } + }, + "show_notification": true } \ No newline at end of file diff --git a/src/generated/resources/data/modulargolems/recipes/pickup_mending.json b/src/generated/resources/data/modulargolems/recipes/pickup_mending.json index 262c1b986..9187365a1 100644 --- a/src/generated/resources/data/modulargolems/recipes/pickup_mending.json +++ b/src/generated/resources/data/modulargolems/recipes/pickup_mending.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shapeless", + "category": "misc", "ingredients": [ { "item": "modulargolems:empty_upgrade" diff --git a/src/generated/resources/data/modulargolems/recipes/pickup_no_destroy.json b/src/generated/resources/data/modulargolems/recipes/pickup_no_destroy.json index ba79635d7..821e73116 100644 --- a/src/generated/resources/data/modulargolems/recipes/pickup_no_destroy.json +++ b/src/generated/resources/data/modulargolems/recipes/pickup_no_destroy.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shapeless", + "category": "misc", "ingredients": [ { "item": "modulargolems:empty_upgrade" diff --git a/src/generated/resources/data/modulargolems/recipes/player.json b/src/generated/resources/data/modulargolems/recipes/player.json index aa767f055..e6c8ad918 100644 --- a/src/generated/resources/data/modulargolems/recipes/player.json +++ b/src/generated/resources/data/modulargolems/recipes/player.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shapeless", + "category": "misc", "ingredients": [ { "item": "modulargolems:empty_upgrade" diff --git a/src/generated/resources/data/modulargolems/recipes/push.json b/src/generated/resources/data/modulargolems/recipes/push.json index 91d882704..11b21dd61 100644 --- a/src/generated/resources/data/modulargolems/recipes/push.json +++ b/src/generated/resources/data/modulargolems/recipes/push.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shaped", + "category": "misc", "conditions": [ { "type": "forge:mod_loaded", @@ -24,5 +25,6 @@ ], "result": { "item": "modulargolems:push" - } + }, + "show_notification": true } \ No newline at end of file diff --git a/src/generated/resources/data/modulargolems/recipes/quartz.json b/src/generated/resources/data/modulargolems/recipes/quartz.json index 73b5110f3..a61a3feb5 100644 --- a/src/generated/resources/data/modulargolems/recipes/quartz.json +++ b/src/generated/resources/data/modulargolems/recipes/quartz.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shaped", + "category": "misc", "key": { "A": { "item": "minecraft:quartz_block" @@ -18,5 +19,6 @@ ], "result": { "item": "modulargolems:quartz" - } + }, + "show_notification": true } \ No newline at end of file diff --git a/src/generated/resources/data/modulargolems/recipes/recycle.json b/src/generated/resources/data/modulargolems/recipes/recycle.json index 163be6a75..98d52f268 100644 --- a/src/generated/resources/data/modulargolems/recipes/recycle.json +++ b/src/generated/resources/data/modulargolems/recipes/recycle.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shaped", + "category": "misc", "key": { "A": { "item": "minecraft:ender_pearl" @@ -21,5 +22,6 @@ ], "result": { "item": "modulargolems:recycle" - } + }, + "show_notification": true } \ No newline at end of file diff --git a/src/generated/resources/data/modulargolems/recipes/retrieval_wand.json b/src/generated/resources/data/modulargolems/recipes/retrieval_wand.json index cfe2b6a57..144f5f8f4 100644 --- a/src/generated/resources/data/modulargolems/recipes/retrieval_wand.json +++ b/src/generated/resources/data/modulargolems/recipes/retrieval_wand.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shaped", + "category": "misc", "key": { "E": { "item": "minecraft:ender_pearl" @@ -18,5 +19,6 @@ ], "result": { "item": "modulargolems:retrieval_wand" - } + }, + "show_notification": true } \ No newline at end of file diff --git a/src/generated/resources/data/modulargolems/recipes/rider_wand.json b/src/generated/resources/data/modulargolems/recipes/rider_wand.json new file mode 100644 index 000000000..5a0a1de72 --- /dev/null +++ b/src/generated/resources/data/modulargolems/recipes/rider_wand.json @@ -0,0 +1,24 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "key": { + "E": { + "item": "minecraft:white_banner" + }, + "S": { + "item": "minecraft:stick" + }, + "T": { + "item": "modulargolems:metal_golem_template" + } + }, + "pattern": [ + " ET", + " SE", + "S " + ], + "result": { + "item": "modulargolems:rider_wand" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/generated/resources/data/modulargolems/recipes/size_upgrade.json b/src/generated/resources/data/modulargolems/recipes/size_upgrade.json new file mode 100644 index 000000000..38f774e5d --- /dev/null +++ b/src/generated/resources/data/modulargolems/recipes/size_upgrade.json @@ -0,0 +1,24 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "key": { + "A": { + "item": "minecraft:iron_block" + }, + "B": { + "item": "modulargolems:empty_upgrade" + }, + "C": { + "item": "minecraft:copper_block" + } + }, + "pattern": [ + "CAC", + "ABA", + "CAC" + ], + "result": { + "item": "modulargolems:size_upgrade" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/generated/resources/data/modulargolems/recipes/slow.json b/src/generated/resources/data/modulargolems/recipes/slow.json index 3fe8241a6..ef1d31a20 100644 --- a/src/generated/resources/data/modulargolems/recipes/slow.json +++ b/src/generated/resources/data/modulargolems/recipes/slow.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shaped", + "category": "misc", "key": { "A": { "item": "minecraft:dragon_breath" @@ -24,5 +25,6 @@ ], "result": { "item": "modulargolems:slow" - } + }, + "show_notification": true } \ No newline at end of file diff --git a/src/generated/resources/data/modulargolems/recipes/soul_flame.json b/src/generated/resources/data/modulargolems/recipes/soul_flame.json index aea6e621a..c59fb13ec 100644 --- a/src/generated/resources/data/modulargolems/recipes/soul_flame.json +++ b/src/generated/resources/data/modulargolems/recipes/soul_flame.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shaped", + "category": "misc", "conditions": [ { "type": "forge:mod_loaded", @@ -34,5 +35,6 @@ ], "result": { "item": "modulargolems:soul_flame" - } + }, + "show_notification": true } \ No newline at end of file diff --git a/src/generated/resources/data/modulargolems/recipes/speed.json b/src/generated/resources/data/modulargolems/recipes/speed.json index eb22cb90e..f4b65b879 100644 --- a/src/generated/resources/data/modulargolems/recipes/speed.json +++ b/src/generated/resources/data/modulargolems/recipes/speed.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shapeless", + "category": "misc", "ingredients": [ { "item": "modulargolems:empty_upgrade" diff --git a/src/generated/resources/data/modulargolems/recipes/speed_high.json b/src/generated/resources/data/modulargolems/recipes/speed_high.json index 08a8c5321..353fa8286 100644 --- a/src/generated/resources/data/modulargolems/recipes/speed_high.json +++ b/src/generated/resources/data/modulargolems/recipes/speed_high.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shapeless", + "category": "misc", "conditions": [ { "type": "forge:mod_loaded", diff --git a/src/generated/resources/data/modulargolems/recipes/sponge.json b/src/generated/resources/data/modulargolems/recipes/sponge.json index 764845b07..546ed0a6f 100644 --- a/src/generated/resources/data/modulargolems/recipes/sponge.json +++ b/src/generated/resources/data/modulargolems/recipes/sponge.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shaped", + "category": "misc", "key": { "A": { "item": "minecraft:wet_sponge" @@ -15,5 +16,6 @@ ], "result": { "item": "modulargolems:sponge" - } + }, + "show_notification": true } \ No newline at end of file diff --git a/src/generated/resources/data/modulargolems/recipes/steeleaf.json b/src/generated/resources/data/modulargolems/recipes/steeleaf.json index 3dd55a031..8456bf981 100644 --- a/src/generated/resources/data/modulargolems/recipes/steeleaf.json +++ b/src/generated/resources/data/modulargolems/recipes/steeleaf.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shaped", + "category": "misc", "conditions": [ { "type": "forge:mod_loaded", @@ -21,5 +22,6 @@ ], "result": { "item": "modulargolems:steeleaf" - } + }, + "show_notification": true } \ No newline at end of file diff --git a/src/generated/resources/data/modulargolems/recipes/summon_wand.json b/src/generated/resources/data/modulargolems/recipes/summon_wand.json index dfb0ecd7d..7f85fe3c9 100644 --- a/src/generated/resources/data/modulargolems/recipes/summon_wand.json +++ b/src/generated/resources/data/modulargolems/recipes/summon_wand.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shaped", + "category": "misc", "key": { "E": { "item": "minecraft:dispenser" @@ -18,5 +19,6 @@ ], "result": { "item": "modulargolems:summon_wand" - } + }, + "show_notification": true } \ No newline at end of file diff --git a/src/generated/resources/data/modulargolems/recipes/swim.json b/src/generated/resources/data/modulargolems/recipes/swim.json index 33e020f87..8f94f3470 100644 --- a/src/generated/resources/data/modulargolems/recipes/swim.json +++ b/src/generated/resources/data/modulargolems/recipes/swim.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shapeless", + "category": "misc", "ingredients": [ { "item": "modulargolems:empty_upgrade" diff --git a/src/generated/resources/data/modulargolems/recipes/talented.json b/src/generated/resources/data/modulargolems/recipes/talented.json index 0358b3616..72c30e7e5 100644 --- a/src/generated/resources/data/modulargolems/recipes/talented.json +++ b/src/generated/resources/data/modulargolems/recipes/talented.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shaped", + "category": "misc", "key": { "A": { "item": "minecraft:nether_star" @@ -21,5 +22,6 @@ ], "result": { "item": "modulargolems:talented" - } + }, + "show_notification": true } \ No newline at end of file diff --git a/src/generated/resources/data/modulargolems/recipes/teleport.json b/src/generated/resources/data/modulargolems/recipes/teleport.json index e4024d18a..ffb69f809 100644 --- a/src/generated/resources/data/modulargolems/recipes/teleport.json +++ b/src/generated/resources/data/modulargolems/recipes/teleport.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shapeless", + "category": "misc", "conditions": [ { "type": "forge:mod_loaded", diff --git a/src/generated/resources/data/modulargolems/recipes/thunder_immune.json b/src/generated/resources/data/modulargolems/recipes/thunder_immune.json index 5cb5e82f6..f9221c6ba 100644 --- a/src/generated/resources/data/modulargolems/recipes/thunder_immune.json +++ b/src/generated/resources/data/modulargolems/recipes/thunder_immune.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shaped", + "category": "misc", "key": { "A": { "item": "minecraft:lightning_rod" @@ -15,5 +16,6 @@ ], "result": { "item": "modulargolems:thunder_immune" - } + }, + "show_notification": true } \ No newline at end of file diff --git a/src/generated/resources/data/modulargolems/recipes/weak.json b/src/generated/resources/data/modulargolems/recipes/weak.json index 5657a2635..22de47ac5 100644 --- a/src/generated/resources/data/modulargolems/recipes/weak.json +++ b/src/generated/resources/data/modulargolems/recipes/weak.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shaped", + "category": "misc", "key": { "A": { "item": "minecraft:dragon_breath" @@ -21,5 +22,6 @@ ], "result": { "item": "modulargolems:weak" - } + }, + "show_notification": true } \ No newline at end of file diff --git a/src/generated/resources/data/modulargolems/recipes/wither.json b/src/generated/resources/data/modulargolems/recipes/wither.json index 0ce3eb059..ba42cd839 100644 --- a/src/generated/resources/data/modulargolems/recipes/wither.json +++ b/src/generated/resources/data/modulargolems/recipes/wither.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shaped", + "category": "misc", "key": { "A": { "item": "minecraft:dragon_breath" @@ -21,5 +22,6 @@ ], "result": { "item": "modulargolems:wither" - } + }, + "show_notification": true } \ No newline at end of file diff --git a/src/generated/resources/data/modulargolems/tags/items/blue_upgrades.json b/src/generated/resources/data/modulargolems/tags/items/blue_upgrades.json index 164535911..833505584 100644 --- a/src/generated/resources/data/modulargolems/tags/items/blue_upgrades.json +++ b/src/generated/resources/data/modulargolems/tags/items/blue_upgrades.json @@ -14,6 +14,8 @@ "modulargolems:swim", "modulargolems:fire_immune", "modulargolems:thunder_immune", - "modulargolems:player" + "modulargolems:player", + "modulargolems:mount_upgrade", + "modulargolems:size_upgrade" ] } \ No newline at end of file diff --git a/src/generated/resources/data/modulargolems/tags/items/upgrades.json b/src/generated/resources/data/modulargolems/tags/items/upgrades.json index 069dce551..5885b84c1 100644 --- a/src/generated/resources/data/modulargolems/tags/items/upgrades.json +++ b/src/generated/resources/data/modulargolems/tags/items/upgrades.json @@ -24,6 +24,8 @@ "modulargolems:pickup_no_destroy", "modulargolems:talented", "modulargolems:cauldron", + "modulargolems:mount_upgrade", + "modulargolems:size_upgrade", { "id": "modulargolems:carminite", "required": false diff --git a/src/generated/resources/data/twilightforest/golem_config/materials/twilightforest.json b/src/generated/resources/data/twilightforest/modulargolems_config/materials/twilightforest.json similarity index 95% rename from src/generated/resources/data/twilightforest/golem_config/materials/twilightforest.json rename to src/generated/resources/data/twilightforest/modulargolems_config/materials/twilightforest.json index 2f8ef56f5..44a68ac67 100644 --- a/src/generated/resources/data/twilightforest/golem_config/materials/twilightforest.json +++ b/src/generated/resources/data/twilightforest/modulargolems_config/materials/twilightforest.json @@ -1,5 +1,4 @@ { - "_class": "dev.xkmc.modulargolems.content.config.GolemMaterialConfig", "ingredients": { "twilightforest:fiery": { "tag": "forge:ingots/fiery" diff --git a/src/main/java/dev/xkmc/modulargolems/compat/jei/GolemAssemblyExtension.java b/src/main/java/dev/xkmc/modulargolems/compat/jei/GolemAssemblyExtension.java index c267cf55f..12331435e 100644 --- a/src/main/java/dev/xkmc/modulargolems/compat/jei/GolemAssemblyExtension.java +++ b/src/main/java/dev/xkmc/modulargolems/compat/jei/GolemAssemblyExtension.java @@ -1,6 +1,7 @@ package dev.xkmc.modulargolems.compat.jei; import com.mojang.datafixers.util.Pair; +import dev.xkmc.l2library.util.Proxy; import dev.xkmc.modulargolems.content.config.GolemMaterial; import dev.xkmc.modulargolems.content.config.GolemMaterialConfig; import dev.xkmc.modulargolems.content.item.golem.GolemHolder; @@ -44,7 +45,7 @@ private void setRecipeAll(IRecipeLayoutBuilder builder, ICraftingGridHelper craf inputs.add(List.of(stacks)); } } - ItemStack resultItem = recipe.getResultItem(); + ItemStack resultItem = recipe.getResultItem(Proxy.getClientWorld().registryAccess()); List list = new ArrayList<>(); if (resultItem.getItem() instanceof GolemHolder holder) { Pair, ResourceLocation> fix = null; diff --git a/src/main/java/dev/xkmc/modulargolems/compat/jei/GolemJEIPlugin.java b/src/main/java/dev/xkmc/modulargolems/compat/jei/GolemJEIPlugin.java index 5fdc09702..082a86692 100644 --- a/src/main/java/dev/xkmc/modulargolems/compat/jei/GolemJEIPlugin.java +++ b/src/main/java/dev/xkmc/modulargolems/compat/jei/GolemJEIPlugin.java @@ -4,7 +4,7 @@ import dev.xkmc.modulargolems.content.config.GolemMaterialConfig; import dev.xkmc.modulargolems.content.core.GolemType; import dev.xkmc.modulargolems.content.core.IGolemPart; -import dev.xkmc.modulargolems.content.item.UpgradeItem; +import dev.xkmc.modulargolems.content.item.upgrade.UpgradeItem; import dev.xkmc.modulargolems.content.item.golem.GolemHolder; import dev.xkmc.modulargolems.content.item.golem.GolemPart; import dev.xkmc.modulargolems.content.recipe.GolemAssembleRecipe; diff --git a/src/main/java/dev/xkmc/modulargolems/compat/materials/blazegear/BGClientEvents.java b/src/main/java/dev/xkmc/modulargolems/compat/materials/blazegear/BGClientEvents.java deleted file mode 100644 index 64b044ec3..000000000 --- a/src/main/java/dev/xkmc/modulargolems/compat/materials/blazegear/BGClientEvents.java +++ /dev/null @@ -1,18 +0,0 @@ -package dev.xkmc.modulargolems.compat.materials.blazegear; - -import net.minecraft.client.model.geom.ModelLayerLocation; -import net.minecraft.resources.ResourceLocation; -import net.minecraftforge.client.event.EntityRenderersEvent; - -public class BGClientEvents { - - public static ModelLayerLocation BLAZE_ARMS_LAYER = new ModelLayerLocation(new ResourceLocation("mineraft:player"), "blazegear_blaze_arms"); - - public BGClientEvents() { - } - - public static void registerLayer(EntityRenderersEvent.RegisterLayerDefinitions event) { - event.registerLayerDefinition(BLAZE_ARMS_LAYER, DuplicatedBlazeArmsModel::createBodyLayer); - } - -} \ No newline at end of file diff --git a/src/main/java/dev/xkmc/modulargolems/compat/materials/blazegear/BGCompatRegistry.java b/src/main/java/dev/xkmc/modulargolems/compat/materials/blazegear/BGCompatRegistry.java deleted file mode 100644 index 3e35a27ba..000000000 --- a/src/main/java/dev/xkmc/modulargolems/compat/materials/blazegear/BGCompatRegistry.java +++ /dev/null @@ -1,19 +0,0 @@ -package dev.xkmc.modulargolems.compat.materials.blazegear; - -import dev.xkmc.l2library.repack.registrate.util.entry.RegistryEntry; - -import static dev.xkmc.modulargolems.init.registrate.GolemModifiers.reg; - -public class BGCompatRegistry { - - public static final RegistryEntry BLAZING; - - static { - BLAZING = reg("blazing", BlazingModifier::new, "Shoot fireballs when approaching target."); - } - - public static void register() { - - } - -} diff --git a/src/main/java/dev/xkmc/modulargolems/compat/materials/blazegear/BGConfigGen.java b/src/main/java/dev/xkmc/modulargolems/compat/materials/blazegear/BGConfigGen.java deleted file mode 100644 index ce6cd749e..000000000 --- a/src/main/java/dev/xkmc/modulargolems/compat/materials/blazegear/BGConfigGen.java +++ /dev/null @@ -1,33 +0,0 @@ -package dev.xkmc.modulargolems.compat.materials.blazegear; - -import com.flashfyre.blazegear.registry.BGItems; -import dev.xkmc.l2library.serial.network.BaseConfig; -import dev.xkmc.l2library.serial.network.ConfigDataProvider; -import dev.xkmc.modulargolems.content.config.GolemMaterialConfig; -import dev.xkmc.modulargolems.init.registrate.GolemModifiers; -import dev.xkmc.modulargolems.init.registrate.GolemTypes; -import net.minecraft.data.DataGenerator; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.world.item.crafting.Ingredient; - -import java.util.Map; - -public class BGConfigGen extends ConfigDataProvider { - - public BGConfigGen(DataGenerator generator) { - super(generator, "data/" + BGDispatch.MODID + "/golem_config/", "Golem Config for BlazeGear"); - } - - public void add(Map map) { - map.put("materials/" + BGDispatch.MODID, new GolemMaterialConfig() - .addMaterial(new ResourceLocation(BGDispatch.MODID, "brimsteel"), Ingredient.of(BGItems.BRIMSTEEL_INGOT.get())) - .addStat(GolemTypes.STAT_HEALTH.get(), 100) - .addStat(GolemTypes.STAT_ATTACK.get(), 15) - .addModifier(GolemModifiers.FIRE_IMMUNE.get(), 1) - .addModifier(BGCompatRegistry.BLAZING.get(), 1).end() - - - ); - } - -} diff --git a/src/main/java/dev/xkmc/modulargolems/compat/materials/blazegear/BGDispatch.java b/src/main/java/dev/xkmc/modulargolems/compat/materials/blazegear/BGDispatch.java deleted file mode 100644 index 440039dc0..000000000 --- a/src/main/java/dev/xkmc/modulargolems/compat/materials/blazegear/BGDispatch.java +++ /dev/null @@ -1,39 +0,0 @@ -package dev.xkmc.modulargolems.compat.materials.blazegear; - -import dev.xkmc.l2library.repack.registrate.providers.RegistrateLangProvider; -import dev.xkmc.l2library.repack.registrate.providers.RegistrateRecipeProvider; -import dev.xkmc.l2library.serial.network.ConfigDataProvider; -import dev.xkmc.modulargolems.compat.materials.common.ModDispatch; -import net.minecraft.data.DataGenerator; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.api.distmarker.OnlyIn; -import net.minecraftforge.eventbus.api.IEventBus; - -public class BGDispatch extends ModDispatch { - - public static final String MODID = "blazegear"; - - public BGDispatch() { - BGCompatRegistry.register(); - } - - public void genLang(RegistrateLangProvider pvd) { - pvd.add("golem_material." + MODID + ".brimsteel", "Brimsteel"); - } - - @Override - public void genRecipe(RegistrateRecipeProvider pvd) { - } - - @Override - public ConfigDataProvider getDataGen(DataGenerator gen) { - return new BGConfigGen(gen); - } - - @OnlyIn(Dist.CLIENT) - @Override - public void dispatchClientSetup(IEventBus bus) { - DuplicateBlazeArmsLayer.registerLayer(); - bus.addListener(BGClientEvents::registerLayer); - } -} diff --git a/src/main/java/dev/xkmc/modulargolems/compat/materials/blazegear/BlazeAttackGoal.java b/src/main/java/dev/xkmc/modulargolems/compat/materials/blazegear/BlazeAttackGoal.java deleted file mode 100644 index 69ff492e4..000000000 --- a/src/main/java/dev/xkmc/modulargolems/compat/materials/blazegear/BlazeAttackGoal.java +++ /dev/null @@ -1,92 +0,0 @@ -package dev.xkmc.modulargolems.compat.materials.blazegear; - -import dev.xkmc.modulargolems.content.entity.common.AbstractGolemEntity; -import net.minecraft.world.entity.LivingEntity; -import net.minecraft.world.entity.ai.goal.Goal; -import net.minecraft.world.entity.projectile.SmallFireball; - -public class BlazeAttackGoal extends Goal { - - private final AbstractGolemEntity blaze; - private final int lv; - private int attackStep; - private int attackTime; - private boolean charged; - - public BlazeAttackGoal(AbstractGolemEntity pBlaze, int lv) { - this.blaze = pBlaze; - this.lv = lv; - } - - /** - * Returns whether execution should begin. You can also read and cache any state necessary for execution in this - * method as well. - */ - public boolean canUse() { - LivingEntity livingentity = this.blaze.getTarget(); - return livingentity != null && livingentity.isAlive() && this.blaze.canAttack(livingentity); - } - - /** - * Execute a one shot task or start executing a continuous task - */ - public void start() { - this.attackStep = 0; - } - - /** - * Reset the task's internal state. Called when this task is interrupted by another one - */ - public void stop() { - this.charged = false; - } - - public boolean requiresUpdateEveryTick() { - return true; - } - - /** - * Keep ticking a continuous task that has already been started - */ - public void tick() { - --this.attackTime; - LivingEntity livingentity = this.blaze.getTarget(); - if (livingentity != null) { - boolean flag = this.blaze.getSensing().hasLineOfSight(livingentity); - double distSqr = this.blaze.distanceToSqr(livingentity); - if (distSqr < 0) { - return; - } else if (flag) { - double d1 = livingentity.getX() - this.blaze.getX(); - double d2 = livingentity.getY(0.5D) - this.blaze.getY(0.5D); - double d3 = livingentity.getZ() - this.blaze.getZ(); - if (this.attackTime <= 0) { - ++this.attackStep; - if (this.attackStep == 1) { - this.attackTime = 60; - this.charged = true; - } else if (this.attackStep < lv + 2) { - this.attackTime = 6; - } else { - this.attackTime = 100; - this.attackStep = 0; - this.charged = false; - } - if (this.attackStep > 1) { - double d4 = Math.sqrt(Math.sqrt(distSqr)) * 0.5D; - if (!this.blaze.isSilent()) { - this.blaze.level.levelEvent(null, 1018, this.blaze.blockPosition(), 0); - } - for (int i = 0; i < 1; ++i) { - SmallFireball smallfireball = new SmallFireball(this.blaze.level, this.blaze, this.blaze.getRandom().triangle(d1, 2.297D * d4), d2, this.blaze.getRandom().triangle(d3, 2.297D * d4)); - smallfireball.setPos(smallfireball.getX(), this.blaze.getY(0.5D) + 0.5D, smallfireball.getZ()); - this.blaze.level.addFreshEntity(smallfireball); - } - } - } - } - super.tick(); - } - } - -} diff --git a/src/main/java/dev/xkmc/modulargolems/compat/materials/blazegear/BlazingModifier.java b/src/main/java/dev/xkmc/modulargolems/compat/materials/blazegear/BlazingModifier.java deleted file mode 100644 index 89c267369..000000000 --- a/src/main/java/dev/xkmc/modulargolems/compat/materials/blazegear/BlazingModifier.java +++ /dev/null @@ -1,30 +0,0 @@ -package dev.xkmc.modulargolems.compat.materials.blazegear; - -import dev.xkmc.modulargolems.content.core.StatFilterType; -import dev.xkmc.modulargolems.content.entity.common.AbstractGolemEntity; -import dev.xkmc.modulargolems.content.modifier.base.GolemModifier; -import net.minecraft.core.particles.ParticleTypes; -import net.minecraft.world.entity.ai.goal.Goal; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.api.distmarker.OnlyIn; - -import java.util.function.BiConsumer; - -public class BlazingModifier extends GolemModifier { - - public BlazingModifier() { - super(StatFilterType.MASS, 3); - } - - @Override - public void onRegisterGoals(AbstractGolemEntity entity, int lv, BiConsumer addGoal) { - addGoal.accept(5, new BlazeAttackGoal(entity, lv)); - } - - @OnlyIn(Dist.CLIENT) - @Override - public void onClientTick(AbstractGolemEntity entity, int value) { - entity.level.addParticle(ParticleTypes.LARGE_SMOKE, entity.getRandomX(0.5D), entity.getRandomY(), entity.getRandomZ(0.5D), 0.0D, 0.0D, 0.0D); - } - -} diff --git a/src/main/java/dev/xkmc/modulargolems/compat/materials/blazegear/DuplicateBlazeArmsLayer.java b/src/main/java/dev/xkmc/modulargolems/compat/materials/blazegear/DuplicateBlazeArmsLayer.java deleted file mode 100644 index bdf82903d..000000000 --- a/src/main/java/dev/xkmc/modulargolems/compat/materials/blazegear/DuplicateBlazeArmsLayer.java +++ /dev/null @@ -1,35 +0,0 @@ -package dev.xkmc.modulargolems.compat.materials.blazegear; - -import com.mojang.blaze3d.vertex.PoseStack; -import dev.xkmc.modulargolems.content.entity.common.AbstractGolemEntity; -import dev.xkmc.modulargolems.content.entity.common.AbstractGolemRenderer; -import net.minecraft.client.Minecraft; -import net.minecraft.client.model.EntityModel; -import net.minecraft.client.renderer.MultiBufferSource; -import net.minecraft.client.renderer.entity.LivingEntityRenderer; -import net.minecraft.client.renderer.entity.layers.RenderLayer; -import net.minecraft.resources.ResourceLocation; - -public class DuplicateBlazeArmsLayer, M extends EntityModel> extends RenderLayer { - - public static void registerLayer() { - AbstractGolemRenderer.LIST.add(DuplicateBlazeArmsLayer::new); - } - - public static final ResourceLocation TEXTURE_BLAZE_ARMS = new ResourceLocation("textures/entity/blaze.png"); - private final DuplicatedBlazeArmsModel model; - - public DuplicateBlazeArmsLayer(LivingEntityRenderer owner) { - super(owner); - this.model = new DuplicatedBlazeArmsModel<>(Minecraft.getInstance().getEntityModels().bakeLayer(BGClientEvents.BLAZE_ARMS_LAYER)); - } - - public void render(PoseStack matrixStack, MultiBufferSource buffer, int lightness, T entity, float limbSwing, float limbSwingAmount, float partialTicks, float ageInTicks, float netHeadYaw, float headPitch) { - if (entity.getModifiers().getOrDefault(BGCompatRegistry.BLAZING.get(), 0) == 0) return; - matrixStack.pushPose(); - renderColoredCutoutModel(this.model, TEXTURE_BLAZE_ARMS, matrixStack, buffer, 15728880, entity, 1.0F, 1.0F, 1.0F); - this.model.setupAnim(entity, limbSwing, limbSwingAmount, Minecraft.getInstance().getPartialTick() + entity.tickCount, netHeadYaw, headPitch); - matrixStack.popPose(); - } - -} diff --git a/src/main/java/dev/xkmc/modulargolems/compat/materials/blazegear/DuplicatedBlazeArmsModel.java b/src/main/java/dev/xkmc/modulargolems/compat/materials/blazegear/DuplicatedBlazeArmsModel.java deleted file mode 100644 index 7b5a3158f..000000000 --- a/src/main/java/dev/xkmc/modulargolems/compat/materials/blazegear/DuplicatedBlazeArmsModel.java +++ /dev/null @@ -1,147 +0,0 @@ -package dev.xkmc.modulargolems.compat.materials.blazegear; - -import com.google.common.collect.ImmutableList; -import dev.xkmc.modulargolems.content.entity.common.AbstractGolemEntity; -import net.minecraft.client.model.ListModel; -import net.minecraft.client.model.geom.ModelPart; -import net.minecraft.client.model.geom.PartPose; -import net.minecraft.client.model.geom.builders.CubeListBuilder; -import net.minecraft.client.model.geom.builders.LayerDefinition; -import net.minecraft.client.model.geom.builders.MeshDefinition; -import net.minecraft.client.model.geom.builders.PartDefinition; -import net.minecraft.util.Mth; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.api.distmarker.OnlyIn; - -import java.util.Arrays; - -@OnlyIn(Dist.CLIENT) -public class DuplicatedBlazeArmsModel> extends ListModel { - private final ModelPart[] blazeSticks = new ModelPart[12]; - private final ImmutableList parts; - private float r3 = 7.0F; - - public DuplicatedBlazeArmsModel(ModelPart modelPart) { - Arrays.setAll(this.blazeSticks, (num) -> { - return modelPart.getChild(getPartName(num)); - }); - ImmutableList.Builder builder = ImmutableList.builder(); - builder.addAll(Arrays.asList(this.blazeSticks)); - this.parts = builder.build(); - } - - private static String getPartName(int num) { - return "part" + num; - } - - public static LayerDefinition createBodyLayer() { - MeshDefinition meshdefinition = new MeshDefinition(); - PartDefinition partdefinition = meshdefinition.getRoot(); - float f = 0.0F; - CubeListBuilder cubelistbuilder = CubeListBuilder.create().texOffs(0, 16).addBox(0.0F, 0.0F, 0.0F, 2.0F, 8.0F, 2.0F); - - int k; - float f5; - float f7; - float f9; - for (k = 0; k < 4; ++k) { - f5 = Mth.cos(f) * 9.0F; - f7 = -2.0F + Mth.cos((float) (k * 2) * 0.25F); - f9 = Mth.sin(f) * 9.0F; - partdefinition.addOrReplaceChild(getPartName(k), cubelistbuilder, PartPose.offset(f5, f7, f9)); - ++f; - } - - f = 0.7853982F; - - for (k = 4; k < 8; ++k) { - f5 = Mth.cos(f) * 7.0F; - f7 = 2.0F + Mth.cos((float) (k * 2) * 0.25F); - f9 = Mth.sin(f) * 7.0F; - partdefinition.addOrReplaceChild(getPartName(k), cubelistbuilder, PartPose.offset(f5, f7, f9)); - ++f; - } - - f = 0.47123894F; - - for (k = 8; k < 12; ++k) { - f5 = Mth.cos(f) * 5.0F; - f7 = 11.0F + Mth.cos((float) k * 1.5F * 0.5F); - f9 = Mth.sin(f) * 5.0F; - partdefinition.addOrReplaceChild(getPartName(k), cubelistbuilder, PartPose.offset(f5, f7, f9)); - ++f; - } - - return LayerDefinition.create(meshdefinition, 64, 32); - } - - public Iterable parts() { - return this.parts; - } - - public void setupAnim(T livingEntity, float limbSwing, float limbSwingAmount, float ageInTicks, float netHeadYaw, float headPitch) { - int rod = livingEntity.getModifiers().getOrDefault(BGCompatRegistry.BLAZING.get(), 0); - float ySpeed = 1.0F; - if (livingEntity.level.isRainingAt(livingEntity.blockPosition())) { - ySpeed += 1.5F * livingEntity.level.getRainLevel(1.0F); - } - - float y0 = livingEntity.getBbHeight() / 1.8f; - float dy = -(1.8f - livingEntity.getBbHeight()) * 8; - - float f; - float y1 = -5.0F; - float y2 = 0.0F; - float y3 = 13.1F; - float r1 = 14.0F; - float r2 = 12.0F; - if (livingEntity.isCrouching()) { - y1 += 3.0F; - y2 += 4.0F; - y3 += 0.1F; - if (this.r3 <= 9.0F) { - this.r3 += 0.1F; - } - } else if (this.r3 >= 7.0F) { - this.r3 -= 0.1F; - } - - int k; - - - f = 0.47123894F + ageInTicks * Mth.PI * -0.05F; - for (k = 8; k < 12; ++k) { - this.blazeSticks[k].visible = rod > 0; - this.blazeSticks[k].y = y3 + Mth.cos(((float) k * 1.5F + ageInTicks) * 0.5F) * ySpeed; - this.blazeSticks[k].x = Mth.cos(f) * this.r3 - 1.0F; - this.blazeSticks[k].z = Mth.sin(f) * this.r3; - this.blazeSticks[k].y *= y0; - this.blazeSticks[k].y -= dy; - ++f; - } - rod--; - f = ageInTicks * Mth.PI * -0.1F; - for (k = 0; k < 4; ++k) { - this.blazeSticks[k].visible = rod > 0; - this.blazeSticks[k].y = y1 + Mth.cos(((float) (k * 2) + ageInTicks) * 0.25F) * ySpeed; - this.blazeSticks[k].x = Mth.cos(f) * r1 - 1.0F; - this.blazeSticks[k].z = Mth.sin(f) * r1; - this.blazeSticks[k].y *= y0; - this.blazeSticks[k].y -= dy; - ++f; - } - rod--; - f = 0.7853982F + ageInTicks * Mth.PI * 0.03F; - for (k = 4; k < 8; ++k) { - this.blazeSticks[k].visible = rod > 0; - this.blazeSticks[k].y = y2 + Mth.cos(((float) (k * 2) + ageInTicks) * 0.25F) * ySpeed; - this.blazeSticks[k].x = Mth.cos(f) * r2 - 1.0F; - this.blazeSticks[k].z = Mth.sin(f) * r2; - this.blazeSticks[k].y *= y0; - this.blazeSticks[k].y -= dy; - ++f; - } - - - } -} \ No newline at end of file diff --git a/src/main/java/dev/xkmc/modulargolems/compat/materials/blazegear/package-info.java b/src/main/java/dev/xkmc/modulargolems/compat/materials/blazegear/package-info.java deleted file mode 100644 index 146ddcd9c..000000000 --- a/src/main/java/dev/xkmc/modulargolems/compat/materials/blazegear/package-info.java +++ /dev/null @@ -1,8 +0,0 @@ -@ParametersAreNonnullByDefault -@MethodsReturnNonnullByDefault - -package dev.xkmc.modulargolems.compat.materials.blazegear; - -import net.minecraft.MethodsReturnNonnullByDefault; - -import javax.annotation.ParametersAreNonnullByDefault; \ No newline at end of file diff --git a/src/main/java/dev/xkmc/modulargolems/compat/materials/common/CompatManager.java b/src/main/java/dev/xkmc/modulargolems/compat/materials/common/CompatManager.java index 0590e24e5..0c33433ef 100644 --- a/src/main/java/dev/xkmc/modulargolems/compat/materials/common/CompatManager.java +++ b/src/main/java/dev/xkmc/modulargolems/compat/materials/common/CompatManager.java @@ -1,12 +1,10 @@ package dev.xkmc.modulargolems.compat.materials.common; -import dev.xkmc.l2library.repack.registrate.providers.RegistrateLangProvider; -import dev.xkmc.l2library.repack.registrate.providers.RegistrateRecipeProvider; -import dev.xkmc.modulargolems.compat.materials.blazegear.BGDispatch; +import com.tterrag.registrate.providers.RegistrateLangProvider; +import com.tterrag.registrate.providers.RegistrateRecipeProvider; import dev.xkmc.modulargolems.compat.materials.create.CreateDispatch; import dev.xkmc.modulargolems.compat.materials.l2complements.LCDispatch; import dev.xkmc.modulargolems.compat.materials.twilightforest.TFDispatch; -import dev.xkmc.modulargolems.compat.misc.CEICompat; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; import net.minecraftforge.data.event.GatherDataEvent; @@ -24,8 +22,8 @@ public static void register() { if (ModList.get().isLoaded(TFDispatch.MODID)) LIST.add(new TFDispatch()); if (ModList.get().isLoaded(CreateDispatch.MODID)) LIST.add(new CreateDispatch()); if (ModList.get().isLoaded(LCDispatch.MODID)) LIST.add(new LCDispatch()); - if (ModList.get().isLoaded(BGDispatch.MODID)) LIST.add(new BGDispatch()); - if (ModList.get().isLoaded("create_enchantment_industry")) CEICompat.register(); + //if (ModList.get().isLoaded(BGDispatch.MODID)) LIST.add(new BGDispatch()); + //if (ModList.get().isLoaded("create_enchantment_industry")) CEICompat.register();TODO } public static void dispatchGenLang(RegistrateLangProvider pvd) { diff --git a/src/main/java/dev/xkmc/modulargolems/compat/materials/common/ModDispatch.java b/src/main/java/dev/xkmc/modulargolems/compat/materials/common/ModDispatch.java index bbc80be9b..e4292941b 100644 --- a/src/main/java/dev/xkmc/modulargolems/compat/materials/common/ModDispatch.java +++ b/src/main/java/dev/xkmc/modulargolems/compat/materials/common/ModDispatch.java @@ -1,9 +1,9 @@ package dev.xkmc.modulargolems.compat.materials.common; -import dev.xkmc.l2library.repack.registrate.providers.RegistrateLangProvider; -import dev.xkmc.l2library.repack.registrate.providers.RegistrateRecipeProvider; -import dev.xkmc.l2library.repack.registrate.util.DataIngredient; -import dev.xkmc.l2library.serial.network.ConfigDataProvider; +import com.tterrag.registrate.providers.RegistrateLangProvider; +import com.tterrag.registrate.providers.RegistrateRecipeProvider; +import com.tterrag.registrate.util.DataIngredient; +import dev.xkmc.l2library.serial.config.ConfigDataProvider; import dev.xkmc.modulargolems.init.registrate.GolemItems; import net.minecraft.advancements.critereon.InventoryChangeTrigger; import net.minecraft.data.DataGenerator; @@ -25,7 +25,7 @@ public abstract class ModDispatch { public abstract ConfigDataProvider getDataGen(DataGenerator gen); public static T safeUpgrade(RegistrateRecipeProvider pvd, BiFunction func, Item item) { - return func.apply("has_" + pvd.safeName(item), DataIngredient.items(GolemItems.EMPTY_UPGRADE).getCritereon(pvd)); + return func.apply("has_" + pvd.safeName(item), DataIngredient.items(GolemItems.EMPTY_UPGRADE.get()).getCritereon(pvd)); } @OnlyIn(Dist.CLIENT) diff --git a/src/main/java/dev/xkmc/modulargolems/compat/materials/common/modifier/AddSlotModifier.java b/src/main/java/dev/xkmc/modulargolems/compat/materials/common/modifier/AddSlotModifier.java index c97aad742..e5cdedf1e 100644 --- a/src/main/java/dev/xkmc/modulargolems/compat/materials/common/modifier/AddSlotModifier.java +++ b/src/main/java/dev/xkmc/modulargolems/compat/materials/common/modifier/AddSlotModifier.java @@ -1,7 +1,7 @@ package dev.xkmc.modulargolems.compat.materials.common.modifier; import dev.xkmc.modulargolems.content.core.StatFilterType; -import dev.xkmc.modulargolems.content.item.UpgradeItem; +import dev.xkmc.modulargolems.content.item.upgrade.UpgradeItem; import dev.xkmc.modulargolems.content.modifier.base.GolemModifier; import net.minecraft.ChatFormatting; import net.minecraft.network.chat.Component; diff --git a/src/main/java/dev/xkmc/modulargolems/compat/materials/create/CreateCompatRegistry.java b/src/main/java/dev/xkmc/modulargolems/compat/materials/create/CreateCompatRegistry.java index 8a462b339..e49aedd3a 100644 --- a/src/main/java/dev/xkmc/modulargolems/compat/materials/create/CreateCompatRegistry.java +++ b/src/main/java/dev/xkmc/modulargolems/compat/materials/create/CreateCompatRegistry.java @@ -1,8 +1,8 @@ package dev.xkmc.modulargolems.compat.materials.create; -import dev.xkmc.l2library.repack.registrate.util.entry.RegistryEntry; +import com.tterrag.registrate.util.entry.RegistryEntry; import dev.xkmc.modulargolems.compat.materials.create.modifier.CoatingModifier; -import dev.xkmc.modulargolems.content.item.SimpleUpgradeItem; +import dev.xkmc.modulargolems.content.item.upgrade.SimpleUpgradeItem; import dev.xkmc.modulargolems.content.modifier.base.AttributeGolemModifier; import dev.xkmc.modulargolems.init.registrate.GolemTypes; diff --git a/src/main/java/dev/xkmc/modulargolems/compat/materials/create/CreateConfigGen.java b/src/main/java/dev/xkmc/modulargolems/compat/materials/create/CreateConfigGen.java index 6b8f97993..4ce2537ca 100644 --- a/src/main/java/dev/xkmc/modulargolems/compat/materials/create/CreateConfigGen.java +++ b/src/main/java/dev/xkmc/modulargolems/compat/materials/create/CreateConfigGen.java @@ -3,9 +3,9 @@ import com.simibubi.create.AllBlocks; import com.simibubi.create.AllItems; import com.simibubi.create.AllTags; -import dev.xkmc.l2library.serial.network.BaseConfig; -import dev.xkmc.l2library.serial.network.ConfigDataProvider; +import dev.xkmc.l2library.serial.config.ConfigDataProvider; import dev.xkmc.modulargolems.content.config.GolemMaterialConfig; +import dev.xkmc.modulargolems.init.ModularGolems; import dev.xkmc.modulargolems.init.registrate.GolemModifiers; import dev.xkmc.modulargolems.init.registrate.GolemTypes; import net.minecraft.data.DataGenerator; @@ -15,19 +15,18 @@ import net.minecraftforge.registries.ForgeRegistries; import net.minecraftforge.registries.tags.ITagManager; -import java.util.Map; import java.util.Objects; public class CreateConfigGen extends ConfigDataProvider { public CreateConfigGen(DataGenerator generator) { - super(generator, "data/" + CreateDispatch.MODID + "/golem_config/", "Golem Config for Create"); + super(generator, "Golem Config for Create"); } - public void add(Map map) { + public void add(Collector map) { ITagManager manager = Objects.requireNonNull(ForgeRegistries.ITEMS.tags()); - map.put("materials/" + CreateDispatch.MODID, new GolemMaterialConfig() + map.add(ModularGolems.MATERIALS, new ResourceLocation(CreateDispatch.MODID, CreateDispatch.MODID), new GolemMaterialConfig() .addMaterial(new ResourceLocation(CreateDispatch.MODID, "zinc"), Ingredient.of(AllTags.forgeItemTag("ingots/zinc"))) .addStat(GolemTypes.STAT_HEALTH.get(), 20) diff --git a/src/main/java/dev/xkmc/modulargolems/compat/materials/create/CreateDispatch.java b/src/main/java/dev/xkmc/modulargolems/compat/materials/create/CreateDispatch.java index 5e3614011..2a345a976 100644 --- a/src/main/java/dev/xkmc/modulargolems/compat/materials/create/CreateDispatch.java +++ b/src/main/java/dev/xkmc/modulargolems/compat/materials/create/CreateDispatch.java @@ -2,13 +2,14 @@ import com.simibubi.create.AllItems; import com.simibubi.create.AllTags; -import dev.xkmc.l2library.base.recipe.ConditionalRecipeWrapper; -import dev.xkmc.l2library.repack.registrate.providers.RegistrateLangProvider; -import dev.xkmc.l2library.repack.registrate.providers.RegistrateRecipeProvider; -import dev.xkmc.l2library.serial.network.ConfigDataProvider; +import com.tterrag.registrate.providers.RegistrateLangProvider; +import com.tterrag.registrate.providers.RegistrateRecipeProvider; +import dev.xkmc.l2library.serial.config.ConfigDataProvider; +import dev.xkmc.l2library.serial.recipe.ConditionalRecipeWrapper; import dev.xkmc.modulargolems.compat.materials.common.ModDispatch; import dev.xkmc.modulargolems.init.registrate.GolemItems; import net.minecraft.data.DataGenerator; +import net.minecraft.data.recipes.RecipeCategory; import net.minecraft.data.recipes.ShapedRecipeBuilder; public class CreateDispatch extends ModDispatch { @@ -28,14 +29,14 @@ public void genLang(RegistrateLangProvider pvd) { @Override public void genRecipe(RegistrateRecipeProvider pvd) { - safeUpgrade(pvd, ShapedRecipeBuilder.shaped(CreateCompatRegistry.UP_COATING.get())::unlockedBy, AllItems.ZINC_INGOT.get()) + safeUpgrade(pvd, ShapedRecipeBuilder.shaped(RecipeCategory.MISC, CreateCompatRegistry.UP_COATING.get())::unlockedBy, AllItems.ZINC_INGOT.get()) .pattern(" A ").pattern("ABA").pattern(" A ") .define('A', AllTags.forgeItemTag("ingots/zinc")) .define('B', GolemItems.EMPTY_UPGRADE.get()) .save(ConditionalRecipeWrapper.mod(pvd, MODID)); - safeUpgrade(pvd, ShapedRecipeBuilder.shaped(CreateCompatRegistry.UP_PUSH.get())::unlockedBy, AllItems.EXTENDO_GRIP.get()) + safeUpgrade(pvd, ShapedRecipeBuilder.shaped(RecipeCategory.MISC, CreateCompatRegistry.UP_PUSH.get())::unlockedBy, AllItems.EXTENDO_GRIP.get()) .pattern(" C ").pattern("ABA").pattern(" C ") .define('A', AllItems.EXTENDO_GRIP.get()) .define('B', GolemItems.EMPTY_UPGRADE.get()) diff --git a/src/main/java/dev/xkmc/modulargolems/compat/materials/create/CreateMixingRecipeGen.java b/src/main/java/dev/xkmc/modulargolems/compat/materials/create/CreateMixingRecipeGen.java index 332dc94a7..195ba43d7 100644 --- a/src/main/java/dev/xkmc/modulargolems/compat/materials/create/CreateMixingRecipeGen.java +++ b/src/main/java/dev/xkmc/modulargolems/compat/materials/create/CreateMixingRecipeGen.java @@ -1,18 +1,18 @@ package dev.xkmc.modulargolems.compat.materials.create; import com.simibubi.create.AllRecipeTypes; -import com.simibubi.create.content.contraptions.components.mixer.MixingRecipe; -import com.simibubi.create.content.contraptions.processing.HeatCondition; -import com.simibubi.create.content.contraptions.processing.ProcessingRecipeBuilder; -import com.simibubi.create.content.contraptions.processing.ProcessingRecipeSerializer; -import dev.xkmc.l2library.repack.registrate.providers.RegistrateRecipeProvider; -import dev.xkmc.l2library.serial.network.BaseConfig; +import com.simibubi.create.content.kinetics.mixer.MixingRecipe; +import com.simibubi.create.content.processing.recipe.HeatCondition; +import com.simibubi.create.content.processing.recipe.ProcessingRecipeBuilder; +import com.simibubi.create.content.processing.recipe.ProcessingRecipeSerializer; +import com.tterrag.registrate.providers.RegistrateRecipeProvider; +import dev.xkmc.l2library.serial.config.ConfigDataProvider; import dev.xkmc.modulargolems.compat.materials.common.CompatManager; import dev.xkmc.modulargolems.compat.materials.common.ModDispatch; import dev.xkmc.modulargolems.content.config.GolemMaterialConfig; import dev.xkmc.modulargolems.content.item.golem.GolemPart; import dev.xkmc.modulargolems.init.ModularGolems; -import dev.xkmc.modulargolems.init.data.ConfigGen; +import dev.xkmc.modulargolems.init.data.MGConfigGen; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.item.crafting.Ingredient; import net.minecraftforge.common.crafting.conditions.ModLoadedCondition; @@ -49,15 +49,15 @@ public static void genAllUpgradeRecipes(RegistrateRecipeProvider pvd) { @SuppressWarnings("ConstantConditions") private static Map gatherConfig() { - Map map = new HashMap<>(); + ConfigDataProvider.Collector map = new ConfigDataProvider.Collector(new HashMap<>()); for (ModDispatch dispatch : CompatManager.LIST) { var gen = dispatch.getDataGen(null); gen.add(map); } - new ConfigGen(null).add(map); + new MGConfigGen(null).add(map); Map ing = new HashMap<>(); - for (BaseConfig config : map.values()) { - if (config instanceof GolemMaterialConfig mat) { + for (ConfigDataProvider.ConfigEntry config : map.map().values()) { + if (config.config() instanceof GolemMaterialConfig mat) { ing.putAll(mat.ingredients); } } diff --git a/src/main/java/dev/xkmc/modulargolems/compat/materials/create/modifier/CoatingModifier.java b/src/main/java/dev/xkmc/modulargolems/compat/materials/create/modifier/CoatingModifier.java index 6a6d8637c..817a45fcc 100644 --- a/src/main/java/dev/xkmc/modulargolems/compat/materials/create/modifier/CoatingModifier.java +++ b/src/main/java/dev/xkmc/modulargolems/compat/materials/create/modifier/CoatingModifier.java @@ -3,7 +3,7 @@ import dev.xkmc.modulargolems.content.core.StatFilterType; import dev.xkmc.modulargolems.content.entity.common.AbstractGolemEntity; import dev.xkmc.modulargolems.content.modifier.base.GolemModifier; -import dev.xkmc.modulargolems.init.data.ModConfig; +import dev.xkmc.modulargolems.init.data.MGConfig; import net.minecraft.ChatFormatting; import net.minecraft.network.chat.Component; import net.minecraft.network.chat.MutableComponent; @@ -18,13 +18,13 @@ public CoatingModifier() { } public List getDetail(int v) { - double reduce = v * ModConfig.COMMON.coating.get(); + double reduce = v * MGConfig.COMMON.coating.get(); return List.of(Component.translatable(getDescriptionId() + ".desc", reduce).withStyle(ChatFormatting.GREEN)); } @Override public void onDamaged(AbstractGolemEntity entity, LivingDamageEvent event, int level) { - event.setAmount((float) Math.max(0, event.getAmount() - level * ModConfig.COMMON.coating.get())); + event.setAmount((float) Math.max(0, event.getAmount() - level * MGConfig.COMMON.coating.get())); } } diff --git a/src/main/java/dev/xkmc/modulargolems/compat/materials/l2complements/LCCompatRegistry.java b/src/main/java/dev/xkmc/modulargolems/compat/materials/l2complements/LCCompatRegistry.java index b8e44bb83..1c93740e1 100644 --- a/src/main/java/dev/xkmc/modulargolems/compat/materials/l2complements/LCCompatRegistry.java +++ b/src/main/java/dev/xkmc/modulargolems/compat/materials/l2complements/LCCompatRegistry.java @@ -1,18 +1,18 @@ package dev.xkmc.modulargolems.compat.materials.l2complements; +import com.tterrag.registrate.util.entry.ItemEntry; +import com.tterrag.registrate.util.entry.RegistryEntry; import dev.xkmc.l2complements.init.registrate.LCEffects; -import dev.xkmc.l2library.repack.registrate.util.entry.ItemEntry; -import dev.xkmc.l2library.repack.registrate.util.entry.RegistryEntry; import dev.xkmc.modulargolems.compat.materials.l2complements.modifiers.ConduitModifier; import dev.xkmc.modulargolems.compat.materials.l2complements.modifiers.EnderTeleportModifier; import dev.xkmc.modulargolems.compat.materials.l2complements.modifiers.FreezingModifier; import dev.xkmc.modulargolems.compat.materials.l2complements.modifiers.SoulFlameModifier; import dev.xkmc.modulargolems.content.core.StatFilterType; -import dev.xkmc.modulargolems.content.item.SimpleUpgradeItem; +import dev.xkmc.modulargolems.content.item.upgrade.SimpleUpgradeItem; import dev.xkmc.modulargolems.content.modifier.base.PotionAttackModifier; import dev.xkmc.modulargolems.content.modifier.base.PotionDefenseModifier; import dev.xkmc.modulargolems.content.modifier.base.TargetBonusModifier; -import dev.xkmc.modulargolems.init.data.TagGen; +import dev.xkmc.modulargolems.init.data.MGTagGen; import dev.xkmc.modulargolems.init.registrate.GolemModifiers; import net.minecraft.world.effect.MobEffectInstance; import net.minecraft.world.entity.MobType; @@ -62,12 +62,12 @@ public class LCCompatRegistry { } public static void register() { - TagGen.OPTIONAL_ITEM.add(e -> e.tag(TagGen.POTION_UPGRADES) + MGTagGen.OPTIONAL_ITEM.add(e -> e.addTag(MGTagGen.POTION_UPGRADES) .addOptional(FLAME_UP.getId()) .addOptional(FREEZE_UP.getId()) .addOptional(UPGRADE_CURSE.getId()) .addOptional(UPGRADE_INCARCERATE.getId())); - TagGen.OPTIONAL_ITEM.add(e -> e.tag(TagGen.BLUE_UPGRADES) + MGTagGen.OPTIONAL_ITEM.add(e -> e.addTag(MGTagGen.BLUE_UPGRADES) .addOptional(UPGRADE_CLEANSE.getId())); } diff --git a/src/main/java/dev/xkmc/modulargolems/compat/materials/l2complements/LCConfigGen.java b/src/main/java/dev/xkmc/modulargolems/compat/materials/l2complements/LCConfigGen.java index 79d322a5c..ee85ea4b5 100644 --- a/src/main/java/dev/xkmc/modulargolems/compat/materials/l2complements/LCConfigGen.java +++ b/src/main/java/dev/xkmc/modulargolems/compat/materials/l2complements/LCConfigGen.java @@ -1,25 +1,25 @@ package dev.xkmc.modulargolems.compat.materials.l2complements; import dev.xkmc.l2complements.init.materials.LCMats; -import dev.xkmc.l2library.serial.network.BaseConfig; -import dev.xkmc.l2library.serial.network.ConfigDataProvider; +import dev.xkmc.l2library.serial.config.ConfigDataProvider; import dev.xkmc.modulargolems.content.config.GolemMaterialConfig; +import dev.xkmc.modulargolems.init.ModularGolems; import dev.xkmc.modulargolems.init.registrate.GolemModifiers; import dev.xkmc.modulargolems.init.registrate.GolemTypes; import net.minecraft.data.DataGenerator; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.item.crafting.Ingredient; -import java.util.Map; - public class LCConfigGen extends ConfigDataProvider { public LCConfigGen(DataGenerator generator) { - super(generator, "data/" + LCDispatch.MODID + "/golem_config/", "Golem Config for L2Complements"); + super(generator, "Golem Config for L2Complements"); } - public void add(Map map) { - map.put("materials/" + LCDispatch.MODID, new GolemMaterialConfig() + + @Override + public void add(Collector collector) { + collector.add(ModularGolems.MATERIALS, new ResourceLocation(LCDispatch.MODID, LCDispatch.MODID), new GolemMaterialConfig() .addMaterial(new ResourceLocation(LCDispatch.MODID, "totemic_gold"), Ingredient.of(LCMats.TOTEMIC_GOLD.getIngot())) .addStat(GolemTypes.STAT_HEALTH.get(), 100) .addStat(GolemTypes.STAT_ATTACK.get(), 10) @@ -50,5 +50,4 @@ public void add(Map map) { ); } - } diff --git a/src/main/java/dev/xkmc/modulargolems/compat/materials/l2complements/LCDispatch.java b/src/main/java/dev/xkmc/modulargolems/compat/materials/l2complements/LCDispatch.java index 5b6e792e7..70dca32d7 100644 --- a/src/main/java/dev/xkmc/modulargolems/compat/materials/l2complements/LCDispatch.java +++ b/src/main/java/dev/xkmc/modulargolems/compat/materials/l2complements/LCDispatch.java @@ -1,17 +1,18 @@ package dev.xkmc.modulargolems.compat.materials.l2complements; +import com.tterrag.registrate.providers.RegistrateLangProvider; +import com.tterrag.registrate.providers.RegistrateRecipeProvider; import dev.xkmc.l2complements.init.data.LCConfig; import dev.xkmc.l2complements.init.registrate.LCEnchantments; import dev.xkmc.l2complements.init.registrate.LCItems; -import dev.xkmc.l2library.base.ingredients.EnchantmentIngredient; -import dev.xkmc.l2library.base.recipe.ConditionalRecipeWrapper; -import dev.xkmc.l2library.repack.registrate.providers.RegistrateLangProvider; -import dev.xkmc.l2library.repack.registrate.providers.RegistrateRecipeProvider; -import dev.xkmc.l2library.serial.network.ConfigDataProvider; +import dev.xkmc.l2library.serial.config.ConfigDataProvider; +import dev.xkmc.l2library.serial.ingredients.EnchantmentIngredient; +import dev.xkmc.l2library.serial.recipe.ConditionalRecipeWrapper; import dev.xkmc.modulargolems.compat.materials.common.ModDispatch; import dev.xkmc.modulargolems.events.event.GolemSweepEvent; import dev.xkmc.modulargolems.init.registrate.GolemItems; import net.minecraft.data.DataGenerator; +import net.minecraft.data.recipes.RecipeCategory; import net.minecraft.data.recipes.ShapedRecipeBuilder; import net.minecraft.data.recipes.ShapelessRecipeBuilder; import net.minecraft.world.item.Items; @@ -40,12 +41,12 @@ public void genLang(RegistrateLangProvider pvd) { @Override public void genRecipe(RegistrateRecipeProvider pvd) { - safeUpgrade(pvd, new ShapelessRecipeBuilder(LCCompatRegistry.FORCE_FIELD.get(), 1)::unlockedBy, LCItems.FORCE_FIELD.get()) + safeUpgrade(pvd, new ShapelessRecipeBuilder(RecipeCategory.MISC, LCCompatRegistry.FORCE_FIELD.get(), 1)::unlockedBy, LCItems.FORCE_FIELD.get()) .requires(GolemItems.EMPTY_UPGRADE.get()) .requires(LCItems.FORCE_FIELD.get()) .save(ConditionalRecipeWrapper.mod(pvd, MODID)); - safeUpgrade(pvd, ShapedRecipeBuilder.shaped(LCCompatRegistry.FREEZE_UP.get())::unlockedBy, LCItems.HARD_ICE.get()) + safeUpgrade(pvd, ShapedRecipeBuilder.shaped(RecipeCategory.MISC, LCCompatRegistry.FREEZE_UP.get())::unlockedBy, LCItems.HARD_ICE.get()) .pattern("CAC").pattern("1B2").pattern("CAC") .define('C', Items.GOLD_INGOT) .define('A', LCItems.HARD_ICE.get()) @@ -54,7 +55,7 @@ public void genRecipe(RegistrateRecipeProvider pvd) { .define('2', new EnchantmentIngredient(LCEnchantments.ICE_BLADE.get(), 1)) .save(ConditionalRecipeWrapper.mod(pvd, MODID)); - safeUpgrade(pvd, ShapedRecipeBuilder.shaped(LCCompatRegistry.FLAME_UP.get())::unlockedBy, LCItems.SOUL_FLAME.get()) + safeUpgrade(pvd, ShapedRecipeBuilder.shaped(RecipeCategory.MISC, LCCompatRegistry.FLAME_UP.get())::unlockedBy, LCItems.SOUL_FLAME.get()) .pattern("CAC").pattern("1B2").pattern("CAC") .define('C', Items.GOLD_INGOT) .define('A', LCItems.SOUL_FLAME.get()) @@ -63,22 +64,22 @@ public void genRecipe(RegistrateRecipeProvider pvd) { .define('2', new EnchantmentIngredient(LCEnchantments.FLAME_BLADE.get(), 1)) .save(ConditionalRecipeWrapper.mod(pvd, MODID)); - safeUpgrade(pvd, new ShapelessRecipeBuilder(LCCompatRegistry.TELEPORT_UP.get(), 1)::unlockedBy, LCItems.VOID_EYE.get()) + safeUpgrade(pvd, new ShapelessRecipeBuilder(RecipeCategory.MISC, LCCompatRegistry.TELEPORT_UP.get(), 1)::unlockedBy, LCItems.VOID_EYE.get()) .requires(GolemItems.EMPTY_UPGRADE.get()) .requires(LCItems.VOID_EYE.get()) .save(ConditionalRecipeWrapper.mod(pvd, MODID)); - safeUpgrade(pvd, new ShapelessRecipeBuilder(LCCompatRegistry.ATK_UP.get(), 1)::unlockedBy, LCItems.EXPLOSION_SHARD.get()) + safeUpgrade(pvd, new ShapelessRecipeBuilder(RecipeCategory.MISC, LCCompatRegistry.ATK_UP.get(), 1)::unlockedBy, LCItems.EXPLOSION_SHARD.get()) .requires(GolemItems.QUARTZ.get()) .requires(LCItems.EXPLOSION_SHARD.get()) .save(ConditionalRecipeWrapper.mod(pvd, MODID)); - safeUpgrade(pvd, new ShapelessRecipeBuilder(LCCompatRegistry.SPEED_UP.get(), 1)::unlockedBy, LCItems.CAPTURED_WIND.get()) + safeUpgrade(pvd, new ShapelessRecipeBuilder(RecipeCategory.MISC, LCCompatRegistry.SPEED_UP.get(), 1)::unlockedBy, LCItems.CAPTURED_WIND.get()) .requires(GolemItems.SPEED.get()) .requires(LCItems.CAPTURED_WIND.get()) .save(ConditionalRecipeWrapper.mod(pvd, MODID)); - safeUpgrade(pvd, ShapedRecipeBuilder.shaped(LCCompatRegistry.UPGRADE_CURSE.get())::unlockedBy, LCItems.CURSED_DROPLET.get()) + safeUpgrade(pvd, ShapedRecipeBuilder.shaped(RecipeCategory.MISC, LCCompatRegistry.UPGRADE_CURSE.get())::unlockedBy, LCItems.CURSED_DROPLET.get()) .pattern("A1A").pattern("CBC").pattern("A2A") .define('C', Items.DRAGON_BREATH) .define('A', LCItems.CURSED_DROPLET.get()) @@ -87,7 +88,7 @@ public void genRecipe(RegistrateRecipeProvider pvd) { .define('2', Items.NETHER_STAR) .save(ConditionalRecipeWrapper.mod(pvd, MODID)); - safeUpgrade(pvd, ShapedRecipeBuilder.shaped(LCCompatRegistry.UPGRADE_INCARCERATE.get())::unlockedBy, LCItems.BLACKSTONE_CORE.get()) + safeUpgrade(pvd, ShapedRecipeBuilder.shaped(RecipeCategory.MISC, LCCompatRegistry.UPGRADE_INCARCERATE.get())::unlockedBy, LCItems.BLACKSTONE_CORE.get()) .pattern("A1A").pattern("CBC").pattern("A2A") .define('C', Items.DRAGON_BREATH) .define('A', LCItems.BLACKSTONE_CORE.get()) @@ -96,7 +97,7 @@ public void genRecipe(RegistrateRecipeProvider pvd) { .define('2', Items.NETHER_STAR) .save(ConditionalRecipeWrapper.mod(pvd, MODID)); - safeUpgrade(pvd, ShapedRecipeBuilder.shaped(LCCompatRegistry.UPGRADE_CLEANSE.get())::unlockedBy, LCItems.LIFE_ESSENCE.get()) + safeUpgrade(pvd, ShapedRecipeBuilder.shaped(RecipeCategory.MISC, LCCompatRegistry.UPGRADE_CLEANSE.get())::unlockedBy, LCItems.LIFE_ESSENCE.get()) .pattern("A1A").pattern("CBC").pattern("A2A") .define('C', Items.DRAGON_BREATH) .define('A', LCItems.LIFE_ESSENCE.get()) diff --git a/src/main/java/dev/xkmc/modulargolems/compat/materials/l2complements/modifiers/ConduitModifier.java b/src/main/java/dev/xkmc/modulargolems/compat/materials/l2complements/modifiers/ConduitModifier.java index 33553b4b4..adff51776 100644 --- a/src/main/java/dev/xkmc/modulargolems/compat/materials/l2complements/modifiers/ConduitModifier.java +++ b/src/main/java/dev/xkmc/modulargolems/compat/materials/l2complements/modifiers/ConduitModifier.java @@ -4,13 +4,13 @@ import dev.xkmc.modulargolems.content.core.StatFilterType; import dev.xkmc.modulargolems.content.entity.common.AbstractGolemEntity; import dev.xkmc.modulargolems.content.modifier.base.GolemModifier; -import dev.xkmc.modulargolems.init.data.ModConfig; +import dev.xkmc.modulargolems.init.data.MGConfig; import net.minecraft.ChatFormatting; import net.minecraft.network.chat.Component; import net.minecraft.network.chat.MutableComponent; import net.minecraft.sounds.SoundEvents; import net.minecraft.sounds.SoundSource; -import net.minecraft.world.damagesource.DamageSource; +import net.minecraft.tags.DamageTypeTags; import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.entity.ai.attributes.AttributeModifier; import net.minecraft.world.entity.ai.attributes.Attributes; @@ -38,20 +38,22 @@ public ConduitModifier() { @Override public void onHurt(AbstractGolemEntity entity, LivingHurtEvent event, int level) { - if (event.getSource().isBypassInvul() || event.getSource().isBypassMagic() || !entity.isInWaterRainOrBubble()) + if (event.getSource().is(DamageTypeTags.BYPASSES_INVULNERABILITY) || + event.getSource().is(DamageTypeTags.BYPASSES_EFFECTS) || + !entity.isInWaterRainOrBubble()) return; - event.setAmount((float) (event.getAmount() * Math.pow(1 - ModConfig.COMMON.conduitBoostReduction.get(), level))); + event.setAmount((float) (event.getAmount() * Math.pow(1 - MGConfig.COMMON.conduitBoostReduction.get(), level))); } @Override public List getDetail(int level) { - int red = (int) Math.round(100 * Math.pow(1 - ModConfig.COMMON.conduitBoostReduction.get(), level)); - int atk = (int) Math.round(ModConfig.COMMON.conduitBoostAttack.get() * level * 100); - int spe = (int) Math.round(ModConfig.COMMON.conduitBoostSpeed.get() * level * 100); - int armor = ModConfig.COMMON.conduitBoostArmor.get() * level; - int tough = ModConfig.COMMON.conduitBoostToughness.get() * level; - int damage = ModConfig.COMMON.conduitDamage.get() * level; - int freq = ModConfig.COMMON.conduitCooldown.get() / 20; + int red = (int) Math.round(100 * Math.pow(1 - MGConfig.COMMON.conduitBoostReduction.get(), level)); + int atk = (int) Math.round(MGConfig.COMMON.conduitBoostAttack.get() * level * 100); + int spe = (int) Math.round(MGConfig.COMMON.conduitBoostSpeed.get() * level * 100); + int armor = MGConfig.COMMON.conduitBoostArmor.get() * level; + int tough = MGConfig.COMMON.conduitBoostToughness.get() * level; + int damage = MGConfig.COMMON.conduitDamage.get() * level; + int freq = MGConfig.COMMON.conduitCooldown.get() / 20; return List.of(Component.translatable(getDescriptionId() + ".desc", red, freq, damage).withStyle(ChatFormatting.GREEN), Component.translatable(Attributes.ATTACK_DAMAGE.getDescriptionId()).append(": +" + atk + "%").withStyle(ChatFormatting.BLUE), Component.translatable(Attributes.MOVEMENT_SPEED.getDescriptionId()).append(": +" + spe + "%").withStyle(ChatFormatting.BLUE), @@ -84,10 +86,10 @@ public void onAiStep(AbstractGolemEntity golem, int level) { return; } - double atk = ModConfig.COMMON.conduitBoostAttack.get() * level; - double spe = ModConfig.COMMON.conduitBoostSpeed.get() * level; - int armor = ModConfig.COMMON.conduitBoostArmor.get() * level; - double tough = ModConfig.COMMON.conduitBoostToughness.get() * level; + double atk = MGConfig.COMMON.conduitBoostAttack.get() * level; + double spe = MGConfig.COMMON.conduitBoostSpeed.get() * level; + int armor = MGConfig.COMMON.conduitBoostArmor.get() * level; + double tough = MGConfig.COMMON.conduitBoostToughness.get() * level; if (gatk != null && gatk.getModifier(ID_ATK) == null) { gatk.addTransientModifier(new AttributeModifier(ID_ATK, STR_ATK, atk, AttributeModifier.Operation.MULTIPLY_BASE)); @@ -105,13 +107,13 @@ public void onAiStep(AbstractGolemEntity golem, int level) { LivingEntity target = golem.getTarget(); if (level > 0 && target != null && target.hurtTime == 0 && target.isInWaterRainOrBubble() && - golem.tickCount % ModConfig.COMMON.conduitCooldown.get() == 0) { - int damage = ModConfig.COMMON.conduitDamage.get() * level; - Level pLevel = golem.level; + golem.tickCount % MGConfig.COMMON.conduitCooldown.get() == 0) { + int damage = MGConfig.COMMON.conduitDamage.get() * level; + Level pLevel = golem.level(); pLevel.playSound(null, target.getX(), target.getY(), target.getZ(), SoundEvents.CONDUIT_ATTACK_TARGET, SoundSource.NEUTRAL, 1.0F, 1.0F); - golem.getTarget().hurt(DamageSource.mobAttack(golem).setMagic().bypassArmor(), damage); + golem.getTarget().hurt(pLevel.damageSources().indirectMagic(golem, golem), damage); } } diff --git a/src/main/java/dev/xkmc/modulargolems/compat/materials/l2complements/modifiers/EnderTeleportModifier.java b/src/main/java/dev/xkmc/modulargolems/compat/materials/l2complements/modifiers/EnderTeleportModifier.java index 304fc7c56..d60b8f7f7 100644 --- a/src/main/java/dev/xkmc/modulargolems/compat/materials/l2complements/modifiers/EnderTeleportModifier.java +++ b/src/main/java/dev/xkmc/modulargolems/compat/materials/l2complements/modifiers/EnderTeleportModifier.java @@ -1,9 +1,10 @@ package dev.xkmc.modulargolems.compat.materials.l2complements.modifiers; +import dev.xkmc.l2damagetracker.init.data.L2DamageTypes; import dev.xkmc.modulargolems.content.core.StatFilterType; import dev.xkmc.modulargolems.content.entity.common.AbstractGolemEntity; import dev.xkmc.modulargolems.content.modifier.base.GolemModifier; -import dev.xkmc.modulargolems.init.data.ModConfig; +import dev.xkmc.modulargolems.init.data.MGConfig; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.sounds.SoundEvents; @@ -32,7 +33,7 @@ public void onRegisterGoals(AbstractGolemEntity entity, int lv, BiConsumer @Override public void onAttacked(AbstractGolemEntity entity, LivingAttackEvent event, int level) { - if (event.getSource().isMagic()) + if (event.getSource().is(L2DamageTypes.MAGIC)) return; for (int i = 0; i < 16; i++) { if (teleport(entity)) { @@ -45,7 +46,7 @@ public void onAttacked(AbstractGolemEntity entity, LivingAttackEvent event public static boolean teleportTowards(AbstractGolemEntity entity, Entity pTarget) { Vec3 vec3 = new Vec3(entity.getX() - pTarget.getX(), entity.getY(0.5D) - pTarget.getEyeY(), entity.getZ() - pTarget.getZ()); vec3 = vec3.normalize(); - int r = ModConfig.COMMON.teleportRadius.get(); + int r = MGConfig.COMMON.teleportRadius.get(); double d1 = entity.getX() + (entity.getRandom().nextDouble() - 0.5D) * r - vec3.x * r * 2; double d2 = entity.getY() + (double) (entity.getRandom().nextInt(r * 2) - r) - vec3.y * r * 2; double d3 = entity.getZ() + (entity.getRandom().nextDouble() - 0.5D) * r - vec3.z * r * 2; @@ -53,8 +54,8 @@ public static boolean teleportTowards(AbstractGolemEntity entity, Entity p } private static boolean teleport(AbstractGolemEntity entity) { - int r = ModConfig.COMMON.teleportRadius.get(); - if (!entity.level.isClientSide() && entity.isAlive()) { + int r = MGConfig.COMMON.teleportRadius.get(); + if (!entity.level().isClientSide() && entity.isAlive()) { double d0 = entity.getX() + (entity.getRandom().nextDouble() - 0.5D) * r * 2; double d1 = entity.getY() + (double) (entity.getRandom().nextInt(r * 2) - r); double d2 = entity.getZ() + (entity.getRandom().nextDouble() - 0.5D) * r * 2; @@ -67,12 +68,12 @@ private static boolean teleport(AbstractGolemEntity entity) { private static boolean teleport(AbstractGolemEntity entity, double pX, double pY, double pZ) { BlockPos.MutableBlockPos ipos = new BlockPos.MutableBlockPos(pX, pY, pZ); - while (ipos.getY() > entity.level.getMinBuildHeight() && !entity.level.getBlockState(ipos).getMaterial().blocksMotion()) { + while (ipos.getY() > entity.level().getMinBuildHeight() && !entity.level().getBlockState(ipos).blocksMotion()) { ipos.move(Direction.DOWN); } - BlockState blockstate = entity.level.getBlockState(ipos); - boolean flag = blockstate.getMaterial().blocksMotion(); + BlockState blockstate = entity.level().getBlockState(ipos); + boolean flag = blockstate.blocksMotion(); boolean flag1 = blockstate.getFluidState().is(FluidTags.WATER); if (flag && !flag1) { EntityTeleportEvent.EnderEntity event = ForgeEventFactory.onEnderTeleport(entity, pX, pY, pZ); @@ -80,9 +81,9 @@ private static boolean teleport(AbstractGolemEntity entity, double pX, dou Vec3 vec3 = entity.position(); boolean flag2 = entity.randomTeleport(event.getTargetX(), event.getTargetY(), event.getTargetZ(), true); if (flag2) { - entity.level.gameEvent(GameEvent.TELEPORT, vec3, GameEvent.Context.of(entity)); + entity.level().gameEvent(GameEvent.TELEPORT, vec3, GameEvent.Context.of(entity)); if (!entity.isSilent()) { - entity.level.playSound(null, entity.xo, entity.yo, entity.zo, SoundEvents.ENDERMAN_TELEPORT, entity.getSoundSource(), 1.0F, 1.0F); + entity.level().playSound(null, entity.xo, entity.yo, entity.zo, SoundEvents.ENDERMAN_TELEPORT, entity.getSoundSource(), 1.0F, 1.0F); entity.playSound(SoundEvents.ENDERMAN_TELEPORT, 1.0F, 1.0F); } } diff --git a/src/main/java/dev/xkmc/modulargolems/compat/materials/l2complements/modifiers/FreezingModifier.java b/src/main/java/dev/xkmc/modulargolems/compat/materials/l2complements/modifiers/FreezingModifier.java index 728c2dbd9..6ecfc24cc 100644 --- a/src/main/java/dev/xkmc/modulargolems/compat/materials/l2complements/modifiers/FreezingModifier.java +++ b/src/main/java/dev/xkmc/modulargolems/compat/materials/l2complements/modifiers/FreezingModifier.java @@ -5,7 +5,7 @@ import dev.xkmc.modulargolems.content.entity.common.AbstractGolemEntity; import dev.xkmc.modulargolems.content.entity.common.GolemFlags; import dev.xkmc.modulargolems.content.modifier.base.GolemModifier; -import net.minecraft.world.damagesource.DamageSource; +import net.minecraft.tags.DamageTypeTags; import net.minecraft.world.entity.LivingEntity; import net.minecraftforge.event.entity.living.LivingAttackEvent; import net.minecraftforge.event.entity.living.LivingHurtEvent; @@ -31,7 +31,7 @@ public void onHurt(AbstractGolemEntity entity, LivingHurtEvent event, int @Override public void onAttacked(AbstractGolemEntity entity, LivingAttackEvent event, int level) { - if (event.getSource() == DamageSource.FREEZE) { + if (event.getSource().is(DamageTypeTags.IS_FREEZING)) { event.setCanceled(true); } } diff --git a/src/main/java/dev/xkmc/modulargolems/compat/materials/twilightforest/TFCompatRegistry.java b/src/main/java/dev/xkmc/modulargolems/compat/materials/twilightforest/TFCompatRegistry.java index 5b1c7ee59..8f9e7ca48 100644 --- a/src/main/java/dev/xkmc/modulargolems/compat/materials/twilightforest/TFCompatRegistry.java +++ b/src/main/java/dev/xkmc/modulargolems/compat/materials/twilightforest/TFCompatRegistry.java @@ -1,11 +1,11 @@ package dev.xkmc.modulargolems.compat.materials.twilightforest; -import dev.xkmc.l2library.repack.registrate.util.entry.RegistryEntry; +import com.tterrag.registrate.util.entry.RegistryEntry; import dev.xkmc.modulargolems.compat.materials.twilightforest.modifier.CarminiteModifier; import dev.xkmc.modulargolems.compat.materials.twilightforest.modifier.FieryModifier; import dev.xkmc.modulargolems.compat.materials.twilightforest.modifier.TFDamageModifier; import dev.xkmc.modulargolems.compat.materials.twilightforest.modifier.TFHealingModifier; -import dev.xkmc.modulargolems.content.item.SimpleUpgradeItem; +import dev.xkmc.modulargolems.content.item.upgrade.SimpleUpgradeItem; import dev.xkmc.modulargolems.content.modifier.base.AttributeGolemModifier; import dev.xkmc.modulargolems.init.registrate.GolemTypes; diff --git a/src/main/java/dev/xkmc/modulargolems/compat/materials/twilightforest/TFConfigGen.java b/src/main/java/dev/xkmc/modulargolems/compat/materials/twilightforest/TFConfigGen.java index 59ef37af9..47766fb49 100644 --- a/src/main/java/dev/xkmc/modulargolems/compat/materials/twilightforest/TFConfigGen.java +++ b/src/main/java/dev/xkmc/modulargolems/compat/materials/twilightforest/TFConfigGen.java @@ -1,8 +1,8 @@ package dev.xkmc.modulargolems.compat.materials.twilightforest; -import dev.xkmc.l2library.serial.network.BaseConfig; -import dev.xkmc.l2library.serial.network.ConfigDataProvider; +import dev.xkmc.l2library.serial.config.ConfigDataProvider; import dev.xkmc.modulargolems.content.config.GolemMaterialConfig; +import dev.xkmc.modulargolems.init.ModularGolems; import dev.xkmc.modulargolems.init.registrate.GolemModifiers; import dev.xkmc.modulargolems.init.registrate.GolemTypes; import net.minecraft.data.DataGenerator; @@ -10,16 +10,14 @@ import net.minecraft.world.item.crafting.Ingredient; import twilightforest.data.tags.ItemTagGenerator; -import java.util.Map; - public class TFConfigGen extends ConfigDataProvider { public TFConfigGen(DataGenerator generator) { - super(generator, "data/" + TFDispatch.MODID + "/golem_config/", "Golem Config for Twilight Forest"); + super(generator, "Golem Config for Twilight Forest"); } - public void add(Map map) { - map.put("materials/" + TFDispatch.MODID, new GolemMaterialConfig() + public void add(Collector map) { + map.add(ModularGolems.MATERIALS, new ResourceLocation(TFDispatch.MODID, TFDispatch.MODID), new GolemMaterialConfig() .addMaterial(new ResourceLocation(TFDispatch.MODID, "ironwood"), Ingredient.of(ItemTagGenerator.IRONWOOD_INGOTS)) .addStat(GolemTypes.STAT_HEALTH.get(), 200) .addStat(GolemTypes.STAT_ATTACK.get(), 10) diff --git a/src/main/java/dev/xkmc/modulargolems/compat/materials/twilightforest/TFDispatch.java b/src/main/java/dev/xkmc/modulargolems/compat/materials/twilightforest/TFDispatch.java index 7feb8310f..001d8460c 100644 --- a/src/main/java/dev/xkmc/modulargolems/compat/materials/twilightforest/TFDispatch.java +++ b/src/main/java/dev/xkmc/modulargolems/compat/materials/twilightforest/TFDispatch.java @@ -1,12 +1,13 @@ package dev.xkmc.modulargolems.compat.materials.twilightforest; -import dev.xkmc.l2library.base.recipe.ConditionalRecipeWrapper; -import dev.xkmc.l2library.repack.registrate.providers.RegistrateLangProvider; -import dev.xkmc.l2library.repack.registrate.providers.RegistrateRecipeProvider; -import dev.xkmc.l2library.serial.network.ConfigDataProvider; +import com.tterrag.registrate.providers.RegistrateLangProvider; +import com.tterrag.registrate.providers.RegistrateRecipeProvider; +import dev.xkmc.l2library.serial.config.ConfigDataProvider; +import dev.xkmc.l2library.serial.recipe.ConditionalRecipeWrapper; import dev.xkmc.modulargolems.compat.materials.common.ModDispatch; import dev.xkmc.modulargolems.init.registrate.GolemItems; import net.minecraft.data.DataGenerator; +import net.minecraft.data.recipes.RecipeCategory; import net.minecraft.data.recipes.ShapedRecipeBuilder; import net.minecraft.world.item.Items; import twilightforest.init.TFBlocks; @@ -29,40 +30,40 @@ public void genLang(RegistrateLangProvider pvd) { @Override public void genRecipe(RegistrateRecipeProvider pvd) { - safeUpgrade(pvd, ShapedRecipeBuilder.shaped(TFCompatRegistry.UP_CARMINITE.get())::unlockedBy, TFItems.CARMINITE.get()) + safeUpgrade(pvd, ShapedRecipeBuilder.shaped(RecipeCategory.MISC, TFCompatRegistry.UP_CARMINITE.get())::unlockedBy, TFItems.CARMINITE.get()) .pattern("CAC").pattern("ABA").pattern("CAC") .define('A', TFItems.CARMINITE.get()) .define('B', GolemItems.EMPTY_UPGRADE.get()) .define('C', TFBlocks.ENCASED_TOWERWOOD.get()) .save(ConditionalRecipeWrapper.mod(pvd, MODID)); - safeUpgrade(pvd, ShapedRecipeBuilder.shaped(TFCompatRegistry.UP_FIERY.get())::unlockedBy, TFItems.FIERY_INGOT.get()) + safeUpgrade(pvd, ShapedRecipeBuilder.shaped(RecipeCategory.MISC, TFCompatRegistry.UP_FIERY.get())::unlockedBy, TFItems.FIERY_INGOT.get()) .pattern("CAC").pattern("ABA").pattern("CAC") .define('A', TFItems.FIERY_INGOT.get()) .define('B', GolemItems.EMPTY_UPGRADE.get()) .define('C', Items.BLAZE_POWDER) .save(ConditionalRecipeWrapper.mod(pvd, MODID)); - safeUpgrade(pvd, ShapedRecipeBuilder.shaped(TFCompatRegistry.UP_KNIGHTMETAL.get())::unlockedBy, TFItems.KNIGHTMETAL_INGOT.get()) + safeUpgrade(pvd, ShapedRecipeBuilder.shaped(RecipeCategory.MISC, TFCompatRegistry.UP_KNIGHTMETAL.get())::unlockedBy, TFItems.KNIGHTMETAL_INGOT.get()) .pattern("CAC").pattern("ABA").pattern("CAC") .define('A', TFItems.KNIGHTMETAL_INGOT.get()) .define('B', GolemItems.EMPTY_UPGRADE.get()) .define('C', TFBlocks.HEDGE.get()) .save(ConditionalRecipeWrapper.mod(pvd, MODID)); - safeUpgrade(pvd, ShapedRecipeBuilder.shaped(TFCompatRegistry.UP_STEELEAF.get())::unlockedBy, TFItems.STEELEAF_INGOT.get()) + safeUpgrade(pvd, ShapedRecipeBuilder.shaped(RecipeCategory.MISC, TFCompatRegistry.UP_STEELEAF.get())::unlockedBy, TFItems.STEELEAF_INGOT.get()) .pattern(" A ").pattern("ABA").pattern(" A ") .define('A', TFItems.STEELEAF_INGOT.get()) .define('B', GolemItems.EMPTY_UPGRADE.get()) .save(ConditionalRecipeWrapper.mod(pvd, MODID)); - safeUpgrade(pvd, ShapedRecipeBuilder.shaped(TFCompatRegistry.UP_IRONWOOD.get())::unlockedBy, TFItems.IRONWOOD_INGOT.get()) + safeUpgrade(pvd, ShapedRecipeBuilder.shaped(RecipeCategory.MISC, TFCompatRegistry.UP_IRONWOOD.get())::unlockedBy, TFItems.IRONWOOD_INGOT.get()) .pattern(" A ").pattern("ABA").pattern(" A ") .define('A', TFItems.IRONWOOD_INGOT.get()) .define('B', GolemItems.EMPTY_UPGRADE.get()) .save(ConditionalRecipeWrapper.mod(pvd, MODID)); - safeUpgrade(pvd, ShapedRecipeBuilder.shaped(TFCompatRegistry.UP_NAGA.get())::unlockedBy, TFItems.NAGA_SCALE.get()) + safeUpgrade(pvd, ShapedRecipeBuilder.shaped(RecipeCategory.MISC, TFCompatRegistry.UP_NAGA.get())::unlockedBy, TFItems.NAGA_SCALE.get()) .pattern(" A ").pattern("ABA").pattern(" A ") .define('A', TFItems.NAGA_SCALE.get()) .define('B', GolemItems.EMPTY_UPGRADE.get()) diff --git a/src/main/java/dev/xkmc/modulargolems/compat/materials/twilightforest/modifier/CarminiteModifier.java b/src/main/java/dev/xkmc/modulargolems/compat/materials/twilightforest/modifier/CarminiteModifier.java index 3f4cf05a3..51f416fd5 100644 --- a/src/main/java/dev/xkmc/modulargolems/compat/materials/twilightforest/modifier/CarminiteModifier.java +++ b/src/main/java/dev/xkmc/modulargolems/compat/materials/twilightforest/modifier/CarminiteModifier.java @@ -3,10 +3,11 @@ import dev.xkmc.modulargolems.content.core.StatFilterType; import dev.xkmc.modulargolems.content.entity.common.AbstractGolemEntity; import dev.xkmc.modulargolems.content.modifier.base.GolemModifier; -import dev.xkmc.modulargolems.init.data.ModConfig; +import dev.xkmc.modulargolems.init.data.MGConfig; import net.minecraft.ChatFormatting; import net.minecraft.network.chat.Component; import net.minecraft.network.chat.MutableComponent; +import net.minecraft.tags.DamageTypeTags; import net.minecraft.world.effect.MobEffectInstance; import net.minecraft.world.effect.MobEffects; import net.minecraftforge.event.entity.living.LivingAttackEvent; @@ -22,19 +23,21 @@ public CarminiteModifier() { @Override public void onDamaged(AbstractGolemEntity entity, LivingDamageEvent event, int level) { - int time = ModConfig.COMMON.carminiteTime.get() * level; + int time = MGConfig.COMMON.carminiteTime.get() * level; entity.addEffect(new MobEffectInstance(MobEffects.DAMAGE_RESISTANCE, time, 4), entity); entity.addEffect(new MobEffectInstance(MobEffects.INVISIBILITY, time), entity); } public List getDetail(int level) { - double time = ModConfig.COMMON.carminiteTime.get() * level / 20d; + double time = MGConfig.COMMON.carminiteTime.get() * level / 20d; return List.of(Component.translatable(getDescriptionId() + ".desc", time).withStyle(ChatFormatting.GREEN)); } @Override public void onAttacked(AbstractGolemEntity entity, LivingAttackEvent event, int level) { - if (event.getSource().isBypassInvul() || event.getSource().isBypassMagic()) return; + if (event.getSource().is(DamageTypeTags.BYPASSES_INVULNERABILITY) || + event.getSource().is(DamageTypeTags.BYPASSES_EFFECTS)) + return; var eff = entity.getEffect(MobEffects.DAMAGE_RESISTANCE); if (eff == null || eff.getAmplifier() < 4) return; event.setCanceled(true); diff --git a/src/main/java/dev/xkmc/modulargolems/compat/materials/twilightforest/modifier/FieryModifier.java b/src/main/java/dev/xkmc/modulargolems/compat/materials/twilightforest/modifier/FieryModifier.java index caacb4c46..9d1ce5abf 100644 --- a/src/main/java/dev/xkmc/modulargolems/compat/materials/twilightforest/modifier/FieryModifier.java +++ b/src/main/java/dev/xkmc/modulargolems/compat/materials/twilightforest/modifier/FieryModifier.java @@ -3,7 +3,7 @@ import dev.xkmc.modulargolems.content.core.StatFilterType; import dev.xkmc.modulargolems.content.entity.common.AbstractGolemEntity; import dev.xkmc.modulargolems.content.modifier.base.GolemModifier; -import dev.xkmc.modulargolems.init.data.ModConfig; +import dev.xkmc.modulargolems.init.data.MGConfig; import net.minecraft.ChatFormatting; import net.minecraft.network.chat.Component; import net.minecraft.network.chat.MutableComponent; @@ -14,7 +14,7 @@ public class FieryModifier extends GolemModifier { private static float getPercent() { - return (float) (double) ModConfig.COMMON.fiery.get(); + return (float) (double) MGConfig.COMMON.fiery.get(); } public FieryModifier() { @@ -29,7 +29,6 @@ public List getDetail(int v) { @Override public void onHurtTarget(AbstractGolemEntity entity, LivingHurtEvent event, int level) { if (!event.getEntity().fireImmune()) { - event.getSource().setIsFire(); event.getEntity().setSecondsOnFire(10); event.setAmount(event.getAmount() * (1 + getPercent() * level)); } diff --git a/src/main/java/dev/xkmc/modulargolems/compat/materials/twilightforest/modifier/TFDamageModifier.java b/src/main/java/dev/xkmc/modulargolems/compat/materials/twilightforest/modifier/TFDamageModifier.java index ef3026002..d15e7d5bb 100644 --- a/src/main/java/dev/xkmc/modulargolems/compat/materials/twilightforest/modifier/TFDamageModifier.java +++ b/src/main/java/dev/xkmc/modulargolems/compat/materials/twilightforest/modifier/TFDamageModifier.java @@ -3,7 +3,7 @@ import dev.xkmc.modulargolems.content.core.StatFilterType; import dev.xkmc.modulargolems.content.entity.common.AbstractGolemEntity; import dev.xkmc.modulargolems.content.modifier.base.GolemModifier; -import dev.xkmc.modulargolems.init.data.ModConfig; +import dev.xkmc.modulargolems.init.data.MGConfig; import net.minecraft.ChatFormatting; import net.minecraft.network.chat.Component; import net.minecraft.network.chat.MutableComponent; @@ -19,14 +19,14 @@ public TFDamageModifier() { @Override public float modifyDamage(float damage, AbstractGolemEntity entity, int level) { - if (entity.getLevel().dimensionTypeId().equals(TFDimensionSettings.TWILIGHT_DIM_TYPE.getKey())) { - return (float) (damage * (1 + ModConfig.COMMON.compatTFDamage.get() * level)); + if (entity.level().dimensionTypeId().equals(TFDimensionSettings.TWILIGHT_DIM_TYPE)) { + return (float) (damage * (1 + MGConfig.COMMON.compatTFDamage.get() * level)); } return damage; } public List getDetail(int v) { - int bonus = (int) Math.round((1 + ModConfig.COMMON.compatTFDamage.get() * v) * 100); + int bonus = (int) Math.round((1 + MGConfig.COMMON.compatTFDamage.get() * v) * 100); return List.of(Component.translatable(getDescriptionId() + ".desc", bonus).withStyle(ChatFormatting.GREEN)); } diff --git a/src/main/java/dev/xkmc/modulargolems/compat/materials/twilightforest/modifier/TFHealingModifier.java b/src/main/java/dev/xkmc/modulargolems/compat/materials/twilightforest/modifier/TFHealingModifier.java index 4e076fa24..82fc6415a 100644 --- a/src/main/java/dev/xkmc/modulargolems/compat/materials/twilightforest/modifier/TFHealingModifier.java +++ b/src/main/java/dev/xkmc/modulargolems/compat/materials/twilightforest/modifier/TFHealingModifier.java @@ -2,7 +2,7 @@ import dev.xkmc.modulargolems.content.core.StatFilterType; import dev.xkmc.modulargolems.content.modifier.base.GolemModifier; -import dev.xkmc.modulargolems.init.data.ModConfig; +import dev.xkmc.modulargolems.init.data.MGConfig; import net.minecraft.ChatFormatting; import net.minecraft.network.chat.Component; import net.minecraft.network.chat.MutableComponent; @@ -19,14 +19,14 @@ public TFHealingModifier() { @Override public double onInventoryHealTick(double heal, Entity entity, int level) { - if (entity.getLevel().dimensionTypeId().equals(TFDimensionSettings.TWILIGHT_DIM_TYPE.getKey())) { - return heal * (1 + ModConfig.COMMON.compatTFHealing.get() * level); + if (entity.level().dimensionTypeId().equals(TFDimensionSettings.TWILIGHT_DIM_TYPE)) { + return heal * (1 + MGConfig.COMMON.compatTFHealing.get() * level); } return heal; } public List getDetail(int v) { - int bonus = (int) Math.round((1 + ModConfig.COMMON.compatTFHealing.get() * v) * 100); + int bonus = (int) Math.round((1 + MGConfig.COMMON.compatTFHealing.get() * v) * 100); return List.of(Component.translatable(getDescriptionId() + ".desc", bonus).withStyle(ChatFormatting.GREEN)); } diff --git a/src/main/java/dev/xkmc/modulargolems/compat/misc/CEICompat.java b/src/main/java/dev/xkmc/modulargolems/compat/misc/CEICompat.java index 95db6cd84..d236f0c4d 100644 --- a/src/main/java/dev/xkmc/modulargolems/compat/misc/CEICompat.java +++ b/src/main/java/dev/xkmc/modulargolems/compat/misc/CEICompat.java @@ -1,17 +1,6 @@ package dev.xkmc.modulargolems.compat.misc; -import com.simibubi.create.foundation.tileEntity.behaviour.fluid.SmartFluidTankBehaviour; -import dev.xkmc.modulargolems.events.event.GolemHandleExpEvent; -import net.minecraft.core.BlockPos; import net.minecraftforge.common.MinecraftForge; -import net.minecraftforge.common.capabilities.ForgeCapabilities; -import net.minecraftforge.eventbus.api.SubscribeEvent; -import net.minecraftforge.fluids.FluidStack; -import net.minecraftforge.fluids.capability.IFluidHandler; -import plus.dragons.createenchantmentindustry.content.contraptions.enchanting.disenchanter.DisenchanterBlockEntity; -import plus.dragons.createenchantmentindustry.entry.CeiFluids; - -import java.util.List; public class CEICompat { @@ -19,6 +8,7 @@ public static void register() { MinecraftForge.EVENT_BUS.register(CEICompat.class); } + /* @SubscribeEvent public static void onHandleExp(GolemHandleExpEvent event) { if (event.getOrb().isRemoved()) return; @@ -27,7 +17,7 @@ public static void onHandleExp(GolemHandleExpEvent event) { BlockPos pos = event.getEntity().blockPosition(); List list = List.of(pos, pos.above()); for (BlockPos i : list) { - if (event.getEntity().level.getBlockEntity(i) instanceof DisenchanterBlockEntity be) { + if (event.getEntity().level().getBlockEntity(i) instanceof DisenchanterBlockEntity be) { FluidStack fluidStack = new FluidStack(CeiFluids.EXPERIENCE.get().getSource(), val); var lazyOpt = be.getCapability(ForgeCapabilities.FLUID_HANDLER); if (lazyOpt.resolve().isPresent()) { @@ -41,6 +31,6 @@ public static void onHandleExp(GolemHandleExpEvent event) { } } event.getOrb().value = val; - } + }TODO*/ } diff --git a/src/main/java/dev/xkmc/modulargolems/compat/misc/PatchouliLang.java b/src/main/java/dev/xkmc/modulargolems/compat/misc/PatchouliLang.java index 10a19934e..beea48102 100644 --- a/src/main/java/dev/xkmc/modulargolems/compat/misc/PatchouliLang.java +++ b/src/main/java/dev/xkmc/modulargolems/compat/misc/PatchouliLang.java @@ -1,6 +1,6 @@ package dev.xkmc.modulargolems.compat.misc; -import dev.xkmc.l2library.repack.registrate.providers.RegistrateLangProvider; +import com.tterrag.registrate.providers.RegistrateLangProvider; import dev.xkmc.modulargolems.init.ModularGolems; public enum PatchouliLang { diff --git a/src/main/java/dev/xkmc/modulargolems/content/client/GolemStatusOverlay.java b/src/main/java/dev/xkmc/modulargolems/content/client/GolemStatusOverlay.java index 47bc66239..81bad3123 100644 --- a/src/main/java/dev/xkmc/modulargolems/content/client/GolemStatusOverlay.java +++ b/src/main/java/dev/xkmc/modulargolems/content/client/GolemStatusOverlay.java @@ -1,21 +1,15 @@ package dev.xkmc.modulargolems.content.client; -import com.mojang.blaze3d.systems.RenderSystem; -import com.mojang.blaze3d.vertex.*; -import com.mojang.math.Matrix4f; -import dev.xkmc.l2library.base.overlay.OverlayUtils; +import dev.xkmc.l2library.base.overlay.OverlayUtil; import dev.xkmc.l2library.util.Proxy; import dev.xkmc.modulargolems.content.entity.common.AbstractGolemEntity; import dev.xkmc.modulargolems.content.entity.humanoid.HumanoidGolemEntity; -import dev.xkmc.modulargolems.content.item.WandItem; +import dev.xkmc.modulargolems.content.item.wand.WandItem; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.Font; -import net.minecraft.client.gui.GuiComponent; +import net.minecraft.client.gui.GuiGraphics; import net.minecraft.client.gui.screens.inventory.tooltip.ClientTooltipComponent; import net.minecraft.client.player.LocalPlayer; -import net.minecraft.client.renderer.GameRenderer; -import net.minecraft.client.renderer.MultiBufferSource; -import net.minecraft.client.renderer.entity.ItemRenderer; import net.minecraft.client.renderer.texture.TextureAtlasSprite; import net.minecraft.network.chat.Component; import net.minecraft.resources.ResourceLocation; @@ -30,10 +24,10 @@ import java.util.ArrayList; import java.util.List; -public class GolemStatusOverlay extends GuiComponent implements IGuiOverlay { +public class GolemStatusOverlay implements IGuiOverlay { @Override - public void render(ForgeGui gui, PoseStack poseStack, float partialTick, int screenWidth, int screenHeight) { + public void render(ForgeGui gui, GuiGraphics g, float partialTick, int screenWidth, int screenHeight) { LocalPlayer player = Proxy.getClientPlayer(); if (player == null) return; if (!(player.getMainHandItem().getItem() instanceof WandItem)) return; @@ -45,80 +39,13 @@ public void render(ForgeGui gui, PoseStack poseStack, float partialTick, int scr text.add(golem.getName()); text.add(golem.getMode().getDesc(golem)); golem.getModifiers().forEach((k, v) -> text.add(k.getTooltip(v))); - OverlayUtils util = new OverlayUtils(screenWidth, screenHeight); - util.renderLongText(gui, poseStack, text); + new OverlayUtil(g, Math.round(screenWidth / 8f), -1, -1) + .renderLongText(gui.getFont(), text); if (!(golem instanceof HumanoidGolemEntity humanoid)) return; + OverlayUtil util = new OverlayUtil(g, (int) (screenWidth * 0.6), -1, -1); util.bg = 0xffc6c6c6; List list = List.of(new GolemEquipmentTooltip(humanoid)); - renderTooltipInternal(util, poseStack, screenWidth, screenHeight, list); - } - - private static void renderTooltipInternal(OverlayUtils utils, PoseStack poseStack, int sw, int sh, List list) { - if (list.isEmpty()) return; - Font font = Minecraft.getInstance().font; - ItemRenderer ir = Minecraft.getInstance().getItemRenderer(); - int w = 0; - int h = list.size() == 1 ? -2 : 0; - for (ClientTooltipComponent ctc : list) { - int k = ctc.getWidth(font); - if (k > w) { - w = k; - } - h += ctc.getHeight(); - } - - int x = (int) (sw * 0.7); - int y = Math.round((float) (sh - h) / 2.0F); - if (x + w > sw) { - x -= 28 + w; - } - - if (y + h + 6 > sh) { - y = sh - h - 6; - } - - poseStack.pushPose(); - float f = ir.blitOffset; - int z = 400; - ir.blitOffset = z; - Tesselator tesselator = Tesselator.getInstance(); - BufferBuilder bufferbuilder = tesselator.getBuilder(); - RenderSystem.setShader(GameRenderer::getPositionColorShader); - bufferbuilder.begin(VertexFormat.Mode.QUADS, DefaultVertexFormat.POSITION_COLOR); - Matrix4f matrix4f = poseStack.last().pose(); - fillGradient(matrix4f, bufferbuilder, x - 3, y - 4, x + w + 3, y - 3, z, utils.bg, utils.bg); - fillGradient(matrix4f, bufferbuilder, x - 3, y + h + 3, x + w + 3, y + h + 4, z, utils.bg, utils.bg); - fillGradient(matrix4f, bufferbuilder, x - 3, y - 3, x + w + 3, y + h + 3, z, utils.bg, utils.bg); - fillGradient(matrix4f, bufferbuilder, x - 4, y - 3, x - 3, y + h + 3, z, utils.bg, utils.bg); - fillGradient(matrix4f, bufferbuilder, x + w + 3, y - 3, x + w + 4, y + h + 3, z, utils.bg, utils.bg); - fillGradient(matrix4f, bufferbuilder, x - 3, y - 3 + 1, x - 3 + 1, y + h + 3 - 1, z, utils.bs, utils.be); - fillGradient(matrix4f, bufferbuilder, x + w + 2, y - 3 + 1, x + w + 3, y + h + 3 - 1, z, utils.bs, utils.be); - fillGradient(matrix4f, bufferbuilder, x - 3, y - 3, x + w + 3, y - 3 + 1, z, utils.bs, utils.bs); - fillGradient(matrix4f, bufferbuilder, x - 3, y + h + 2, x + w + 3, y + h + 3, z, utils.be, utils.be); - RenderSystem.enableDepthTest(); - RenderSystem.disableTexture(); - RenderSystem.enableBlend(); - RenderSystem.defaultBlendFunc(); - BufferUploader.drawWithShader(bufferbuilder.end()); - RenderSystem.disableBlend(); - RenderSystem.enableTexture(); - MultiBufferSource.BufferSource buffer = MultiBufferSource.immediate(Tesselator.getInstance().getBuilder()); - poseStack.translate(0.0D, 0.0D, z); - int iy = y; - for (int i = 0; i < list.size(); ++i) { - ClientTooltipComponent ctc = list.get(i); - ctc.renderText(font, x, iy, matrix4f, buffer); - iy += ctc.getHeight() + (i == 0 ? 2 : 0); - } - buffer.endBatch(); - poseStack.popPose(); - iy = y; - for (int i = 0; i < list.size(); ++i) { - ClientTooltipComponent ctc = list.get(i); - ctc.renderImage(font, x, iy, poseStack, ir, 400); - iy += ctc.getHeight() + (i == 0 ? 2 : 0); - } - ir.blitOffset = f; + util.renderTooltipInternal(gui.getFont(), list); } private record GolemEquipmentTooltip(HumanoidGolemEntity golem) implements ClientTooltipComponent { @@ -136,36 +63,31 @@ public int getWidth(Font pFont) { } @Override - public void renderImage(Font font, int mx, int my, PoseStack pose, ItemRenderer ir, int offset) { - renderSlot(font, mx, my + 18, pose, golem.getItemBySlot(EquipmentSlot.MAINHAND), ir, offset, null); - renderSlot(font, mx, my + 36, pose, golem.getItemBySlot(EquipmentSlot.OFFHAND), ir, offset, InventoryMenu.EMPTY_ARMOR_SLOT_SHIELD); - renderSlot(font, mx + 18, my, pose, golem.getItemBySlot(EquipmentSlot.HEAD), ir, offset, InventoryMenu.EMPTY_ARMOR_SLOT_HELMET); - renderSlot(font, mx + 18, my + 18, pose, golem.getItemBySlot(EquipmentSlot.CHEST), ir, offset, InventoryMenu.EMPTY_ARMOR_SLOT_CHESTPLATE); - renderSlot(font, mx + 18, my + 36, pose, golem.getItemBySlot(EquipmentSlot.LEGS), ir, offset, InventoryMenu.EMPTY_ARMOR_SLOT_LEGGINGS); - renderSlot(font, mx + 18, my + 54, pose, golem.getItemBySlot(EquipmentSlot.FEET), ir, offset, InventoryMenu.EMPTY_ARMOR_SLOT_BOOTS); + public void renderImage(Font font, int mx, int my, GuiGraphics g) { + renderSlot(font, mx, my + 18, g, golem.getItemBySlot(EquipmentSlot.MAINHAND), null); + renderSlot(font, mx, my + 36, g, golem.getItemBySlot(EquipmentSlot.OFFHAND), InventoryMenu.EMPTY_ARMOR_SLOT_SHIELD); + renderSlot(font, mx + 18, my, g, golem.getItemBySlot(EquipmentSlot.HEAD), InventoryMenu.EMPTY_ARMOR_SLOT_HELMET); + renderSlot(font, mx + 18, my + 18, g, golem.getItemBySlot(EquipmentSlot.CHEST), InventoryMenu.EMPTY_ARMOR_SLOT_CHESTPLATE); + renderSlot(font, mx + 18, my + 36, g, golem.getItemBySlot(EquipmentSlot.LEGS), InventoryMenu.EMPTY_ARMOR_SLOT_LEGGINGS); + renderSlot(font, mx + 18, my + 54, g, golem.getItemBySlot(EquipmentSlot.FEET), InventoryMenu.EMPTY_ARMOR_SLOT_BOOTS); } - private void renderSlot(Font font, int x, int y, PoseStack pose, ItemStack stack, ItemRenderer ir, int offset, @Nullable ResourceLocation atlasID) { - this.blit(pose, x, y, offset); + private void renderSlot(Font font, int x, int y, GuiGraphics g, ItemStack stack, @Nullable ResourceLocation atlasID) { + this.blit(g, x, y); if (stack.isEmpty()) { if (atlasID != null) { TextureAtlasSprite atlas = Minecraft.getInstance().getTextureAtlas(InventoryMenu.BLOCK_ATLAS) .apply(atlasID); - RenderSystem.disableDepthTest(); - RenderSystem.setShaderTexture(0, atlas.atlas().location()); - GuiComponent.blit(pose, x + 1, y + 1, 100, 16, 16, atlas); - RenderSystem.enableDepthTest(); + g.blit(x + 1, y + 1, 100, 16, 16, atlas); } return; } - ir.renderAndDecorateItem(stack, x + 1, y + 1, 0); - ir.renderGuiItemDecorations(font, stack, x + 1, y + 1); + g.renderItem(stack, x + 1, y + 1, 0); + g.renderItemDecorations(font, stack, x + 1, y + 1); } - private void blit(PoseStack poseStack, int x, int y, int z) { - RenderSystem.setShaderColor(1.0F, 1.0F, 1.0F, 1.0F); - RenderSystem.setShaderTexture(0, TEXTURE_LOCATION); - GuiComponent.blit(poseStack, x, y, z, 0, 0, 18, 18, 128, 128); + private void blit(GuiGraphics g, int x, int y) { + g.blit(TEXTURE_LOCATION, x, y, 0, 0, 0, 18, 18, 128, 128); } } diff --git a/src/main/java/dev/xkmc/modulargolems/content/config/GolemMaterial.java b/src/main/java/dev/xkmc/modulargolems/content/config/GolemMaterial.java index 68b55925f..e5d7ecaa8 100644 --- a/src/main/java/dev/xkmc/modulargolems/content/config/GolemMaterial.java +++ b/src/main/java/dev/xkmc/modulargolems/content/config/GolemMaterial.java @@ -1,16 +1,15 @@ package dev.xkmc.modulargolems.content.config; import com.mojang.datafixers.util.Pair; -import dev.xkmc.l2library.util.code.Wrappers; +import dev.xkmc.l2serial.util.Wrappers; import dev.xkmc.modulargolems.content.core.GolemStatType; import dev.xkmc.modulargolems.content.core.IGolemPart; import dev.xkmc.modulargolems.content.entity.common.AbstractGolemEntity; -import dev.xkmc.modulargolems.content.item.UpgradeItem; +import dev.xkmc.modulargolems.content.item.upgrade.UpgradeItem; import dev.xkmc.modulargolems.content.item.golem.GolemPart; import dev.xkmc.modulargolems.content.modifier.base.AttributeGolemModifier; import dev.xkmc.modulargolems.content.modifier.base.GolemModifier; import dev.xkmc.modulargolems.init.ModularGolems; -import dev.xkmc.modulargolems.init.data.ModConfig; import dev.xkmc.modulargolems.init.registrate.GolemTypes; import net.minecraft.ChatFormatting; import net.minecraft.network.chat.Component; @@ -30,26 +29,53 @@ public record GolemMaterial(HashMap stats, HashMap> collectAttributes(List list, List upgrades) { - HashMap> values = new HashMap<>(); + HashMap> values = new LinkedHashMap<>(); for (GolemStatType type : GolemTypes.STAT_TYPES.get().getValues()) { - updateStat(values, type, 0); + appendStat(values, type, 0); } for (GolemMaterial stats : list) { - stats.stats.forEach((k, v) -> updateStat(values, k, v)); + stats.stats.forEach((k, v) -> appendStat(values, k, v)); } for (var entry : collectModifiers(list, upgrades).entrySet()) { if (entry.getKey() instanceof AttributeGolemModifier attr) { for (var ent : attr.entries) { - updateStat(values, ent.type().get(), ent.getValue(entry.getValue())); + appendStat(values, ent.type().get(), ent.getValue(entry.getValue())); } } } - return values; + HashMap> ans = new LinkedHashMap<>(); + for (var ent : values.entrySet()) { + HashMap> sorted = new LinkedHashMap<>(); + for (var entry : ent.getValue().entrySet()) { + sorted.compute(entry.getKey().kind, (k, old) -> Pair.of(entry.getKey(), (old == null ? 0 : old.getSecond()) + entry.getValue())); + } + if (sorted.size() == 0) { + continue; + } + if (sorted.size() == 1) { + ans.put(ent.getKey(), sorted.values().stream().findFirst().get()); + continue; + } + if (!sorted.containsKey(GolemStatType.Kind.BASE)) { + throw new IllegalStateException("Only attributes with BASE modification allows multi-operation. Attribute: " + ent.getKey().getDescriptionId()); + } + Pair candidate = sorted.get(GolemStatType.Kind.BASE); + GolemStatType type = candidate.getFirst(); + double val = candidate.getSecond(); + if (sorted.containsKey(GolemStatType.Kind.ADD)) { + val += sorted.get(GolemStatType.Kind.ADD).getSecond(); + } + if (sorted.containsKey(GolemStatType.Kind.PERCENT)) { + val *= 1 + sorted.get(GolemStatType.Kind.PERCENT).getSecond(); + } + ans.put(ent.getKey(), Pair.of(type, val)); + } + return ans; } - private static void updateStat(Map> values, GolemStatType k, double v) { - values.compute(k.getAttribute(), (a, old) -> Pair.of(k, ModConfig.COMMON.exponentialStat.get() && k.kind == GolemStatType.Kind.PERCENT ? - (old == null ? 1 : old.getSecond()) * (1 + v) : (old == null ? 0 : old.getSecond()) + v)); + private static void appendStat(Map> values, GolemStatType k, double v) { + values.computeIfAbsent(k.getAttribute(), e -> new LinkedHashMap<>()) + .compute(k, (e, old) -> (old == null ? 0 : old) + v); } public static HashMap collectModifiers(Collection list, Collection upgrades) { diff --git a/src/main/java/dev/xkmc/modulargolems/content/config/GolemMaterialConfig.java b/src/main/java/dev/xkmc/modulargolems/content/config/GolemMaterialConfig.java index d2a2a7ec9..752454f33 100644 --- a/src/main/java/dev/xkmc/modulargolems/content/config/GolemMaterialConfig.java +++ b/src/main/java/dev/xkmc/modulargolems/content/config/GolemMaterialConfig.java @@ -1,14 +1,14 @@ package dev.xkmc.modulargolems.content.config; -import dev.xkmc.l2library.serial.SerialClass; +import dev.xkmc.l2library.serial.config.BaseConfig; import dev.xkmc.l2library.serial.config.CollectType; import dev.xkmc.l2library.serial.config.ConfigCollect; -import dev.xkmc.l2library.serial.network.BaseConfig; import dev.xkmc.l2library.util.annotation.DataGenOnly; +import dev.xkmc.l2serial.serialization.SerialClass; import dev.xkmc.modulargolems.content.core.GolemStatType; import dev.xkmc.modulargolems.content.modifier.base.AttributeGolemModifier; import dev.xkmc.modulargolems.content.modifier.base.GolemModifier; -import dev.xkmc.modulargolems.init.NetworkManager; +import dev.xkmc.modulargolems.init.ModularGolems; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.item.crafting.Ingredient; import org.apache.http.util.Asserts; @@ -21,7 +21,7 @@ public class GolemMaterialConfig extends BaseConfig { public static GolemMaterialConfig get() { - return NetworkManager.MATERIALS.getMerged(); + return ModularGolems.MATERIALS.getMerged(); } @ConfigCollect(CollectType.MAP_COLLECT) diff --git a/src/main/java/dev/xkmc/modulargolems/content/config/GolemPartConfig.java b/src/main/java/dev/xkmc/modulargolems/content/config/GolemPartConfig.java index 0c4cbbe53..4ad675780 100644 --- a/src/main/java/dev/xkmc/modulargolems/content/config/GolemPartConfig.java +++ b/src/main/java/dev/xkmc/modulargolems/content/config/GolemPartConfig.java @@ -1,15 +1,15 @@ package dev.xkmc.modulargolems.content.config; -import dev.xkmc.l2library.serial.SerialClass; +import dev.xkmc.l2library.serial.config.BaseConfig; import dev.xkmc.l2library.serial.config.CollectType; import dev.xkmc.l2library.serial.config.ConfigCollect; -import dev.xkmc.l2library.serial.network.BaseConfig; import dev.xkmc.l2library.util.annotation.DataGenOnly; +import dev.xkmc.l2serial.serialization.SerialClass; import dev.xkmc.modulargolems.content.core.GolemStatType; import dev.xkmc.modulargolems.content.core.GolemType; import dev.xkmc.modulargolems.content.core.StatFilterType; import dev.xkmc.modulargolems.content.item.golem.GolemPart; -import dev.xkmc.modulargolems.init.NetworkManager; +import dev.xkmc.modulargolems.init.ModularGolems; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.item.Item; @@ -19,7 +19,7 @@ public class GolemPartConfig extends BaseConfig { public static GolemPartConfig get() { - return NetworkManager.PARTS.getMerged(); + return ModularGolems.PARTS.getMerged(); } @ConfigCollect(CollectType.MAP_COLLECT) diff --git a/src/main/java/dev/xkmc/modulargolems/content/core/GolemStatType.java b/src/main/java/dev/xkmc/modulargolems/content/core/GolemStatType.java index b6db497f2..a1a9f4815 100644 --- a/src/main/java/dev/xkmc/modulargolems/content/core/GolemStatType.java +++ b/src/main/java/dev/xkmc/modulargolems/content/core/GolemStatType.java @@ -1,7 +1,6 @@ package dev.xkmc.modulargolems.content.core; import dev.xkmc.l2library.base.NamedEntry; -import dev.xkmc.modulargolems.init.data.ModConfig; import dev.xkmc.modulargolems.init.registrate.GolemTypes; import net.minecraft.ChatFormatting; import net.minecraft.network.chat.Component; @@ -48,9 +47,7 @@ public MutableComponent getAdderTooltip(double val) { public MutableComponent getTotalTooltip(double val) { if (kind == Kind.PERCENT) { - if (ModConfig.COMMON.exponentialStat.get()) - val = (val - 1) * 100; - else val = val * 100; + val = val * 100; } String key = "attribute.modifier." + (val < 0 ? "take." : kind == Kind.BASE ? "equals." : "plus.") + (kind == Kind.PERCENT ? 1 : 0); return Component.translatable(key, @@ -67,7 +64,7 @@ public void applyToEntity(LivingEntity e, double v) { switch (kind) { case BASE -> ins.setBaseValue(v); case ADD -> ins.setBaseValue(ins.getValue() + v); - case PERCENT -> ins.setBaseValue(ins.getValue() * (ModConfig.COMMON.exponentialStat.get() ? v : 1 + v)); + case PERCENT -> ins.setBaseValue(ins.getValue() * (1 + v)); } } diff --git a/src/main/java/dev/xkmc/modulargolems/content/core/GolemType.java b/src/main/java/dev/xkmc/modulargolems/content/core/GolemType.java index 3392fdaf5..ba4e0a70c 100644 --- a/src/main/java/dev/xkmc/modulargolems/content/core/GolemType.java +++ b/src/main/java/dev/xkmc/modulargolems/content/core/GolemType.java @@ -1,9 +1,9 @@ package dev.xkmc.modulargolems.content.core; +import com.tterrag.registrate.util.entry.EntityEntry; import dev.xkmc.l2library.base.NamedEntry; -import dev.xkmc.l2library.repack.registrate.util.entry.EntityEntry; import dev.xkmc.l2library.util.Proxy; -import dev.xkmc.l2library.util.code.Wrappers; +import dev.xkmc.l2serial.util.Wrappers; import dev.xkmc.modulargolems.content.entity.common.AbstractGolemEntity; import dev.xkmc.modulargolems.content.item.golem.GolemHolder; import dev.xkmc.modulargolems.init.registrate.GolemTypes; diff --git a/src/main/java/dev/xkmc/modulargolems/content/core/IGolemPart.java b/src/main/java/dev/xkmc/modulargolems/content/core/IGolemPart.java index ec457ff2b..f4a424af7 100644 --- a/src/main/java/dev/xkmc/modulargolems/content/core/IGolemPart.java +++ b/src/main/java/dev/xkmc/modulargolems/content/core/IGolemPart.java @@ -2,8 +2,8 @@ import com.mojang.blaze3d.vertex.PoseStack; import dev.xkmc.modulargolems.content.item.golem.GolemPart; -import net.minecraft.client.renderer.block.model.ItemTransforms; import net.minecraft.network.chat.MutableComponent; +import net.minecraft.world.item.ItemDisplayContext; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; import org.jetbrains.annotations.Nullable; @@ -13,7 +13,7 @@ public interface IGolemPart

> { int ordinal(); @OnlyIn(Dist.CLIENT) - void setupItemRender(PoseStack stack, ItemTransforms.TransformType type, @Nullable P part); + void setupItemRender(PoseStack stack, ItemDisplayContext type, @Nullable P part); MutableComponent getDesc(MutableComponent desc); diff --git a/src/main/java/dev/xkmc/modulargolems/content/entity/common/AbstractGolemEntity.java b/src/main/java/dev/xkmc/modulargolems/content/entity/common/AbstractGolemEntity.java index 2a7dab8b4..653fe914e 100644 --- a/src/main/java/dev/xkmc/modulargolems/content/entity/common/AbstractGolemEntity.java +++ b/src/main/java/dev/xkmc/modulargolems/content/entity/common/AbstractGolemEntity.java @@ -1,35 +1,38 @@ package dev.xkmc.modulargolems.content.entity.common; -import dev.xkmc.l2library.serial.SerialClass; -import dev.xkmc.l2library.serial.codec.PacketCodec; -import dev.xkmc.l2library.serial.codec.TagCodec; import dev.xkmc.l2library.util.annotation.ServerOnly; -import dev.xkmc.l2library.util.code.Wrappers; import dev.xkmc.l2library.util.nbt.NBTObj; +import dev.xkmc.l2serial.serialization.SerialClass; +import dev.xkmc.l2serial.serialization.codec.PacketCodec; +import dev.xkmc.l2serial.serialization.codec.TagCodec; +import dev.xkmc.l2serial.util.Wrappers; import dev.xkmc.modulargolems.content.config.GolemMaterial; import dev.xkmc.modulargolems.content.config.GolemMaterialConfig; import dev.xkmc.modulargolems.content.core.IGolemPart; +import dev.xkmc.modulargolems.content.entity.common.goals.GolemMeleeGoal; import dev.xkmc.modulargolems.content.entity.common.goals.GolemSwimMoveControl; import dev.xkmc.modulargolems.content.entity.common.mode.GolemMode; import dev.xkmc.modulargolems.content.entity.common.mode.GolemModes; -import dev.xkmc.modulargolems.content.item.UpgradeItem; -import dev.xkmc.modulargolems.content.item.WandItem; +import dev.xkmc.modulargolems.content.item.upgrade.UpgradeItem; +import dev.xkmc.modulargolems.content.item.wand.WandItem; import dev.xkmc.modulargolems.content.item.golem.GolemHolder; import dev.xkmc.modulargolems.content.modifier.base.GolemModifier; import dev.xkmc.modulargolems.init.ModularGolems; import dev.xkmc.modulargolems.init.advancement.GolemTriggers; -import dev.xkmc.modulargolems.init.data.ModConfig; -import dev.xkmc.modulargolems.init.data.TagGen; +import dev.xkmc.modulargolems.init.data.MGConfig; +import dev.xkmc.modulargolems.init.data.MGTagGen; import dev.xkmc.modulargolems.init.registrate.GolemTypes; import net.minecraft.core.BlockPos; import net.minecraft.nbt.CompoundTag; import net.minecraft.network.FriendlyByteBuf; import net.minecraft.network.protocol.Packet; +import net.minecraft.network.protocol.game.ClientGamePacketListener; import net.minecraft.network.syncher.EntityDataAccessor; import net.minecraft.network.syncher.EntityDataSerializers; import net.minecraft.network.syncher.SynchedEntityData; import net.minecraft.server.level.ServerLevel; import net.minecraft.server.level.ServerPlayer; +import net.minecraft.tags.DamageTypeTags; import net.minecraft.util.TimeUtil; import net.minecraft.util.valueproviders.UniformInt; import net.minecraft.world.InteractionHand; @@ -37,6 +40,7 @@ import net.minecraft.world.damagesource.DamageSource; import net.minecraft.world.entity.*; import net.minecraft.world.entity.ai.attributes.Attributes; +import net.minecraft.world.entity.ai.attributes.DefaultAttributes; import net.minecraft.world.entity.ai.goal.target.HurtByTargetGoal; import net.minecraft.world.entity.ai.goal.target.NearestAttackableTargetGoal; import net.minecraft.world.entity.ai.goal.target.ResetUniversalAngerTargetGoal; @@ -97,8 +101,8 @@ public void updateAttributes(ArrayList materials, ArrayList m.onRegisterFlag(golemFlags::add)); } if (canSwim()) { @@ -106,10 +110,11 @@ public void updateAttributes(ArrayList materials, ArrayList m.onRegisterGoals(this, i, this.goalSelector::addGoal)); } GolemMaterial.addAttributes(materials, upgrades, getThis()); + refreshDimensions(); } public EntityType getType() { @@ -136,9 +141,9 @@ public boolean hasFlag(GolemFlags flag) { protected InteractionResult mobInteract(Player player, InteractionHand hand) { this.unRide(); if (player.getItemInHand(hand).getItem() instanceof WandItem) return InteractionResult.PASS; - if (!ModConfig.COMMON.barehandRetrieve.get() || !this.isAlliedTo(player)) return InteractionResult.FAIL; + if (!MGConfig.COMMON.barehandRetrieve.get() || !this.isAlliedTo(player)) return InteractionResult.FAIL; if (player.getMainHandItem().isEmpty()) { - if (!level.isClientSide()) { + if (!level().isClientSide()) { player.setItemSlot(EquipmentSlot.MAINHAND, toItem()); } return InteractionResult.SUCCESS; @@ -149,7 +154,7 @@ protected InteractionResult mobInteract(Player player, InteractionHand hand) { @ServerOnly public ItemStack toItem() { var ans = GolemHolder.setEntity(getThis()); - level.broadcastEntityEvent(this, EntityEvent.POOF); + level().broadcastEntityEvent(this, EntityEvent.POOF); this.discard(); return ans; } @@ -161,7 +166,7 @@ public boolean fireImmune() { @Override protected void actuallyHurt(DamageSource source, float damage) { - if (source.isBypassInvul()) damage *= 1000; + if (source.is(DamageTypeTags.BYPASSES_INVULNERABILITY)) damage *= 1000; super.actuallyHurt(source, damage); if (getHealth() <= 0 && hasFlag(GolemFlags.RECYCLE)) { Player player = getOwner(); @@ -171,7 +176,7 @@ protected void actuallyHurt(DamageSource source, float damage) { } else { spawnAtLocation(stack); } - level.broadcastEntityEvent(this, EntityEvent.POOF); + level().broadcastEntityEvent(this, EntityEvent.POOF); this.discard(); } } @@ -186,6 +191,13 @@ protected void dropCustomDeathLoot(DamageSource source, int i, boolean b) { drop.forEach((k, v) -> spawnAtLocation(new ItemStack(k, v))); } + public float getScale() { + if (materials == null || materials.isEmpty() || getTags().contains("ClientOnly")) { + return 1; + } + return (float) (getAttributeValue(GolemTypes.GOLEM_SIZE.get()) / DefaultAttributes.getSupplier(getType()).getValue(GolemTypes.GOLEM_SIZE.get())); + } + // ------ swim public boolean canSwim() { @@ -206,7 +218,7 @@ public void travel(Vec3 pTravelVector) { } public void updateSwimming() { - if (!this.level.isClientSide) { + if (!this.level().isClientSide) { this.setSwimming(this.isEffectiveAi() && this.isInWater() && this.canSwim()); } @@ -232,7 +244,7 @@ public UUID getOwnerUUID() { public Player getOwner() { try { UUID uuid = this.getOwnerUUID(); - return uuid == null ? null : this.level.getPlayerByUUID(uuid); + return uuid == null ? null : this.level().getPlayerByUUID(uuid); } catch (IllegalArgumentException illegalargumentexception) { return null; } @@ -250,7 +262,7 @@ public void addAdditionalSaveData(CompoundTag tag) { public void readAdditionalSaveData(CompoundTag tag) { super.readAdditionalSaveData(tag); - this.readPersistentAngerSaveData(this.level, tag); + this.readPersistentAngerSaveData(this.level(), tag); if (tag.contains("auto-serial")) { Wrappers.run(() -> { TagCodec.fromTag(tag.getCompound("auto-serial"), this.getClass(), this, (f) -> true); @@ -259,7 +271,7 @@ public void readAdditionalSaveData(CompoundTag tag) { setMode(tag.getInt("follow_mode"), new NBTObj(tag).getSub("guard_pos").toBlockPos()); } - public Packet getAddEntityPacket() { + public Packet getAddEntityPacket() { return NetworkHooks.getEntitySpawningPacket(this); } @@ -269,6 +281,7 @@ public void writeSpawnData(FriendlyByteBuf buffer) { public void readSpawnData(FriendlyByteBuf data) { PacketCodec.from(data, Wrappers.cast(this.getClass()), getThis()); + updateAttributes(materials, Wrappers.cast(upgrades), owner); } public T getThis() { @@ -279,12 +292,12 @@ public T getThis() { @Override public boolean hasLineOfSight(Entity target) { - if (target.level == this.level && hasFlag(GolemFlags.SEE_THROUGH)) { + if (target.level() == this.level() && hasFlag(GolemFlags.SEE_THROUGH)) { Vec3 self = new Vec3(this.getX(), this.getEyeY(), this.getZ()); Vec3 tarp = new Vec3(target.getX(), target.getEyeY(), target.getZ()); double dist = tarp.distanceTo(self); if (dist <= 128.0D) { - if (target.level.canSeeSky(target.blockPosition())) + if (target.level().canSeeSky(target.blockPosition())) return true; if (dist < 5) return true; @@ -300,6 +313,11 @@ public boolean canFreeze() { return !hasFlag(GolemFlags.FREEZE_IMMUNE); } + @Override + public boolean canBeSeenAsEnemy() { + return hasFlag(GolemFlags.PASSIVE) || super.canBeSeenAsEnemy(); + } + @Override public void setTarget(@Nullable LivingEntity pTarget) { if (pTarget != null && !canAttack(pTarget)) { @@ -319,7 +337,10 @@ public void setTarget(@Nullable LivingEntity pTarget) { @Override public boolean canAttackType(EntityType pType) { - return !pType.is(TagGen.GOLEM_FRIENDLY); + if (hasFlag(GolemFlags.PASSIVE)) { + return false; + } + return !pType.is(MGTagGen.GOLEM_FRIENDLY); } @Override @@ -338,7 +359,7 @@ protected float getAttackDamage() { @Override public void tick() { super.tick(); - if (this.level.isClientSide) { + if (this.level().isClientSide) { for (var entry : getModifiers().entrySet()) { entry.getKey().onClientTick(this, entry.getValue()); } @@ -358,11 +379,11 @@ public void aiStep() { this.heal((float) heal); } } - if (!this.level.isClientSide) { + if (!this.level().isClientSide) { for (var entry : getModifiers().entrySet()) { entry.getKey().onAiStep(this, entry.getValue()); } - this.updatePersistentAnger((ServerLevel) this.level, true); + this.updatePersistentAnger((ServerLevel) this.level(), true); } } @@ -371,10 +392,10 @@ protected int decreaseAirSupply(int air) { } @Override - public boolean wasKilled(ServerLevel level, LivingEntity target) { + public boolean killedEntity(ServerLevel level, LivingEntity target) { Player player = getOwner(); if (player != null) GolemTriggers.KILL.trigger((ServerPlayer) player, target); - return super.wasKilled(level, target); + return super.killedEntity(level, target); } // mode @@ -521,12 +542,16 @@ public boolean isInvulnerable() { public void die(DamageSource source) { ModularGolems.LOGGER.info("Golem {} died, message: '{}'", this, source.getLocalizedDeathMessage(this).getString()); Player owner = getOwner(); - if (owner != null && !level.isClientSide) { + if (owner != null && !level().isClientSide) { owner.sendSystemMessage(source.getLocalizedDeathMessage(this)); } super.die(source); } + public double getPerceivedTargetDistanceSquareForMeleeAttack(LivingEntity target) { + return GolemMeleeGoal.calculateDistSqr(this, target); + } + } diff --git a/src/main/java/dev/xkmc/modulargolems/content/entity/common/AbstractGolemRenderer.java b/src/main/java/dev/xkmc/modulargolems/content/entity/common/AbstractGolemRenderer.java index 82ca00a71..20ed42b9b 100644 --- a/src/main/java/dev/xkmc/modulargolems/content/entity/common/AbstractGolemRenderer.java +++ b/src/main/java/dev/xkmc/modulargolems/content/entity/common/AbstractGolemRenderer.java @@ -3,7 +3,7 @@ import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.blaze3d.vertex.VertexConsumer; import dev.xkmc.l2library.util.Proxy; -import dev.xkmc.l2library.util.code.Wrappers; +import dev.xkmc.l2serial.util.Wrappers; import dev.xkmc.modulargolems.content.config.GolemMaterial; import dev.xkmc.modulargolems.content.core.IGolemPart; import net.minecraft.client.model.EntityModel; @@ -57,9 +57,15 @@ protected RenderType getRenderType(T entity, boolean b1, boolean b2, boolean b3) if (this.handle.get() == null) return null; boolean flag = this.isBodyVisible(entity); boolean flag1 = !flag && !entity.isInvisibleTo(Proxy.getClientPlayer()); + PoseStack pose = handle.get().stack(); + pose.pushPose(); + float r = entity.getScale(); + pose.translate(0, (1 - r) * 1.501, 0); + pose.scale(r, r, r); for (P p : list.get()) { renderPart(p, entity, b1, b2, b3, flag1); } + pose.popPose(); return null; } diff --git a/src/main/java/dev/xkmc/modulargolems/content/entity/common/GolemFlags.java b/src/main/java/dev/xkmc/modulargolems/content/entity/common/GolemFlags.java index 82eefae34..59d18ba51 100644 --- a/src/main/java/dev/xkmc/modulargolems/content/entity/common/GolemFlags.java +++ b/src/main/java/dev/xkmc/modulargolems/content/entity/common/GolemFlags.java @@ -1,5 +1,6 @@ package dev.xkmc.modulargolems.content.entity.common; public enum GolemFlags { - IMMUNITY, FIRE_IMMUNE, FREEZE_IMMUNE, THUNDER_IMMUNE, SEE_THROUGH, RECYCLE, FLOAT, SWIM, MENDING, NO_DESTROY + IMMUNITY, FIRE_IMMUNE, FREEZE_IMMUNE, THUNDER_IMMUNE, SEE_THROUGH, RECYCLE, + FLOAT, SWIM, MENDING, NO_DESTROY, PASSIVE } diff --git a/src/main/java/dev/xkmc/modulargolems/content/entity/common/IGolemModel.java b/src/main/java/dev/xkmc/modulargolems/content/entity/common/IGolemModel.java index 2c2146156..d0ef7d04a 100644 --- a/src/main/java/dev/xkmc/modulargolems/content/entity/common/IGolemModel.java +++ b/src/main/java/dev/xkmc/modulargolems/content/entity/common/IGolemModel.java @@ -2,7 +2,7 @@ import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.blaze3d.vertex.VertexConsumer; -import dev.xkmc.l2library.util.code.Wrappers; +import dev.xkmc.l2serial.util.Wrappers; import dev.xkmc.modulargolems.content.core.IGolemPart; import net.minecraft.client.model.EntityModel; import net.minecraft.resources.ResourceLocation; diff --git a/src/main/java/dev/xkmc/modulargolems/content/entity/common/SweepGolemEntity.java b/src/main/java/dev/xkmc/modulargolems/content/entity/common/SweepGolemEntity.java index 31923875c..2903eb805 100644 --- a/src/main/java/dev/xkmc/modulargolems/content/entity/common/SweepGolemEntity.java +++ b/src/main/java/dev/xkmc/modulargolems/content/entity/common/SweepGolemEntity.java @@ -1,6 +1,6 @@ package dev.xkmc.modulargolems.content.entity.common; -import dev.xkmc.l2library.serial.SerialClass; +import dev.xkmc.l2serial.serialization.SerialClass; import dev.xkmc.modulargolems.content.core.IGolemPart; import dev.xkmc.modulargolems.init.registrate.GolemTypes; import net.minecraft.world.entity.Entity; @@ -22,7 +22,7 @@ protected boolean performRangedDamage(Entity target, float damage, double kb) { boolean flag = performDamageTarget(target, damage, kb); double range = getAttributeValue(GolemTypes.GOLEM_SWEEP.get()); if (range > 0) { - var list = getLevel().getEntities(target, getAttackBoundingBox(target, range), + var list = level().getEntities(target, getAttackBoundingBox(target, range), e -> e instanceof LivingEntity le && e instanceof Enemy && (!(e instanceof Creeper)) && this.canAttack(le)); for (Entity t : list) { flag |= performDamageTarget(t, damage, kb); diff --git a/src/main/java/dev/xkmc/modulargolems/content/entity/common/goals/FollowOwnerGoal.java b/src/main/java/dev/xkmc/modulargolems/content/entity/common/goals/FollowOwnerGoal.java index f0dd018b3..eee342a66 100644 --- a/src/main/java/dev/xkmc/modulargolems/content/entity/common/goals/FollowOwnerGoal.java +++ b/src/main/java/dev/xkmc/modulargolems/content/entity/common/goals/FollowOwnerGoal.java @@ -34,7 +34,7 @@ public FollowOwnerGoal(AbstractGolemEntity golem) { private FollowOwnerGoal(AbstractGolemEntity golem, double speed, float start, float max, float stop, boolean fly) { this.golem = golem; - this.level = golem.level; + this.level = golem.level(); this.speedModifier = speed; this.navigation = golem.getNavigation(); this.startDistance = start; @@ -109,7 +109,7 @@ public void tick() { } private void teleportToOwner() { - BlockPos blockpos = new BlockPos(this.golem.getTargetPos()); + BlockPos blockpos = BlockPos.containing(this.golem.getTargetPos()); for (int i = 0; i < 10; ++i) { int j = this.randomIntInclusive(-3, 3); diff --git a/src/main/java/dev/xkmc/modulargolems/content/entity/common/goals/GolemMeleeGoal.java b/src/main/java/dev/xkmc/modulargolems/content/entity/common/goals/GolemMeleeGoal.java index 333745b53..ce8e0e6cd 100644 --- a/src/main/java/dev/xkmc/modulargolems/content/entity/common/goals/GolemMeleeGoal.java +++ b/src/main/java/dev/xkmc/modulargolems/content/entity/common/goals/GolemMeleeGoal.java @@ -4,10 +4,29 @@ import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.entity.ai.attributes.Attributes; import net.minecraft.world.entity.ai.goal.MeleeAttackGoal; +import net.minecraft.world.phys.AABB; import net.minecraftforge.common.ForgeMod; public class GolemMeleeGoal extends MeleeAttackGoal { + private static double getDistance(double a0, double a1, double b0, double b1) { + if (a1 < b0) { + return b0 - a1; + } else if (b1 < a0) { + return a0 - b1; + } + return 0; + } + + public static double calculateDistSqr(AbstractGolemEntity golem, LivingEntity target) { + AABB aabb0 = golem.getBoundingBox(); + AABB aabb1 = target.getBoundingBox(); + double x = getDistance(aabb0.minX, aabb0.maxX, aabb1.minX, aabb1.maxX); + double y = getDistance(aabb0.minY, aabb0.maxY, aabb1.minY, aabb1.maxY); + double z = getDistance(aabb0.minZ, aabb0.maxZ, aabb1.minZ, aabb1.maxZ); + return x * x + y * y + z * z; + } + public GolemMeleeGoal(AbstractGolemEntity entity, double speedModifier, boolean bypassSightCheck) { super(entity, speedModifier, bypassSightCheck); } @@ -19,7 +38,8 @@ protected int adjustedTickDelay(int tick) { } public double getAttackReachSqr(LivingEntity pAttackTarget) { - return super.getAttackReachSqr(pAttackTarget) + mob.getAttributeValue(ForgeMod.ATTACK_RANGE.get()); + double val = mob.getAttributeValue(ForgeMod.ENTITY_REACH.get()); + return val * val; } } diff --git a/src/main/java/dev/xkmc/modulargolems/content/entity/common/goals/GolemSwimMoveControl.java b/src/main/java/dev/xkmc/modulargolems/content/entity/common/goals/GolemSwimMoveControl.java index 8c498843c..0d7d26a77 100644 --- a/src/main/java/dev/xkmc/modulargolems/content/entity/common/goals/GolemSwimMoveControl.java +++ b/src/main/java/dev/xkmc/modulargolems/content/entity/common/goals/GolemSwimMoveControl.java @@ -38,7 +38,7 @@ public void tick() { this.golem.setSpeed(f2); this.golem.setDeltaMovement(this.golem.getDeltaMovement().add((double) f2 * d0 * 0.005D, (double) f2 * d1 * 0.1D, (double) f2 * d2 * 0.005D)); } else { - if (!this.golem.isOnGround()) { + if (!this.golem.onGround()) { this.golem.setDeltaMovement(this.golem.getDeltaMovement().add(0.0D, -0.008D, 0.0D)); } super.tick(); diff --git a/src/main/java/dev/xkmc/modulargolems/content/entity/common/mode/GolemMode.java b/src/main/java/dev/xkmc/modulargolems/content/entity/common/mode/GolemMode.java index d81ae45f1..bdb5f0ea3 100644 --- a/src/main/java/dev/xkmc/modulargolems/content/entity/common/mode/GolemMode.java +++ b/src/main/java/dev/xkmc/modulargolems/content/entity/common/mode/GolemMode.java @@ -1,16 +1,16 @@ package dev.xkmc.modulargolems.content.entity.common.mode; import dev.xkmc.modulargolems.content.entity.common.AbstractGolemEntity; -import dev.xkmc.modulargolems.init.data.LangData; +import dev.xkmc.modulargolems.init.data.MGLangData; import net.minecraft.network.chat.Component; public class GolemMode { private final int id; private final boolean positioned, movable; - private final LangData lang; + private final MGLangData lang; - protected GolemMode(boolean positioned, boolean movable, LangData lang) { + protected GolemMode(boolean positioned, boolean movable, MGLangData lang) { this.positioned = positioned; this.movable = movable; this.lang = lang; diff --git a/src/main/java/dev/xkmc/modulargolems/content/entity/common/mode/GolemModes.java b/src/main/java/dev/xkmc/modulargolems/content/entity/common/mode/GolemModes.java index d990ac00e..186a74ba8 100644 --- a/src/main/java/dev/xkmc/modulargolems/content/entity/common/mode/GolemModes.java +++ b/src/main/java/dev/xkmc/modulargolems/content/entity/common/mode/GolemModes.java @@ -1,6 +1,6 @@ package dev.xkmc.modulargolems.content.entity.common.mode; -import dev.xkmc.modulargolems.init.data.LangData; +import dev.xkmc.modulargolems.init.data.MGLangData; import java.util.ArrayList; import java.util.List; @@ -9,9 +9,9 @@ public class GolemModes { static final List LIST = new ArrayList<>(); - public static final GolemMode FOLLOW = new GolemMode(false, true, LangData.MODE_FOLLOWING); - public static final GolemMode GUARD = new GolemMode(true, true, LangData.MODE_GUARDING); - public static final GolemMode STAND = new GolemMode(true, false, LangData.MODE_STANDING); + public static final GolemMode FOLLOW = new GolemMode(false, true, MGLangData.MODE_FOLLOWING); + public static final GolemMode GUARD = new GolemMode(true, true, MGLangData.MODE_GUARDING); + public static final GolemMode STAND = new GolemMode(true, false, MGLangData.MODE_STANDING); public static GolemMode get(int i) { return LIST.get(i); diff --git a/src/main/java/dev/xkmc/modulargolems/content/entity/dog/DogGolemEntity.java b/src/main/java/dev/xkmc/modulargolems/content/entity/dog/DogGolemEntity.java index cd3ba18d7..13cb1252f 100644 --- a/src/main/java/dev/xkmc/modulargolems/content/entity/dog/DogGolemEntity.java +++ b/src/main/java/dev/xkmc/modulargolems/content/entity/dog/DogGolemEntity.java @@ -1,11 +1,14 @@ package dev.xkmc.modulargolems.content.entity.dog; -import dev.xkmc.l2library.serial.SerialClass; +import dev.xkmc.l2serial.serialization.SerialClass; import dev.xkmc.modulargolems.content.entity.common.AbstractGolemEntity; import dev.xkmc.modulargolems.content.entity.common.goals.FollowOwnerGoal; import dev.xkmc.modulargolems.content.entity.common.goals.GolemFloatGoal; import dev.xkmc.modulargolems.content.entity.common.goals.GolemMeleeGoal; -import dev.xkmc.modulargolems.content.item.WandItem; +import dev.xkmc.modulargolems.content.item.golem.GolemHolder; +import dev.xkmc.modulargolems.content.item.wand.WandItem; +import dev.xkmc.modulargolems.init.registrate.GolemModifiers; +import dev.xkmc.modulargolems.init.registrate.GolemTypes; import net.minecraft.core.BlockPos; import net.minecraft.nbt.CompoundTag; import net.minecraft.network.syncher.EntityDataAccessor; @@ -13,24 +16,34 @@ import net.minecraft.network.syncher.SynchedEntityData; import net.minecraft.sounds.SoundEvent; import net.minecraft.sounds.SoundEvents; +import net.minecraft.util.Mth; import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResult; import net.minecraft.world.damagesource.DamageSource; +import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.EntityType; import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.entity.ai.attributes.Attributes; import net.minecraft.world.entity.ai.goal.LookAtPlayerGoal; import net.minecraft.world.entity.ai.goal.RandomLookAroundGoal; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.phys.Vec2; import net.minecraft.world.phys.Vec3; +import net.minecraftforge.common.ForgeHooks; @SerialClass public class DogGolemEntity extends AbstractGolemEntity { + public float getJumpStrength() { + return (float) getAttributeValue(GolemTypes.GOLEM_JUMP.get()); + } + public DogGolemEntity(EntityType type, Level level) { super(type, level); + setMaxUpStep(1); } public float getTailAngle() { @@ -42,6 +55,107 @@ public float getTailAngle() { } } + // ride + + protected void tickRidden(Player player, Vec3 vec3) { + super.tickRidden(player, vec3); + Vec2 vec2 = this.getRiddenRotation(player); + this.setRot(vec2.y, vec2.x); + this.yRotO = this.yBodyRot = this.yHeadRot = this.getYRot(); + if (this.isControlledByLocalInstance()) { + if (this.onGround()) { + if (player.jumping) { + this.executeRidersJump(vec3); + } + } + } + + } + + protected Vec2 getRiddenRotation(LivingEntity rider) { + return new Vec2(rider.getXRot() * 0.5F, rider.getYRot()); + } + + protected Vec3 getRiddenInput(Player player, Vec3 input) { + float f = player.xxa * 0.5F; + float f1 = player.zza; + if (f1 <= 0.0F) { + f1 *= 0.25F; + } + return new Vec3(f, 0.0D, f1); + } + + public LivingEntity getControllingPassenger() { + Entity entity = this.getFirstPassenger(); + if (entity instanceof LivingEntity) { + return (LivingEntity) entity; + } + return null; + } + + protected float getRiddenSpeed(Player rider) { + return (float) (this.getAttributeValue(Attributes.MOVEMENT_SPEED) * 0.8);//TODO to config + } + + protected void executeRidersJump(Vec3 action) { + Vec3 vec3 = this.getDeltaMovement(); + float jump = getJumpStrength(); + this.setDeltaMovement(vec3.x, jump, vec3.z); + this.hasImpulse = true; + ForgeHooks.onLivingJump(this); + if (action.z > 0.0D) { + float x0 = Mth.sin(this.getYRot() * ((float) Math.PI / 180F)); + float z0 = Mth.cos(this.getYRot() * ((float) Math.PI / 180F)); + this.setDeltaMovement(this.getDeltaMovement().add(-0.4F * x0 * jump, 0.0D, 0.4F * z0 * jump)); + } + } + + public double getPassengersRidingOffset() { + return this.getBbHeight() * 1.4 - 0.35; + } + + protected void positionRider(Entity rider, Entity.MoveFunction setPos) { + int index = this.getPassengers().indexOf(rider); + int total = this.getPassengers().size(); + if (index < 0) return; + float width = getBbWidth(); + float offset = index == 0 ? index + 0.7f : index + 1.2f; + float pos = width / 2 - width / total * offset; + double dy = rider.getMyRidingOffset() + getPassengersRidingOffset(); + Vec3 vec3 = new Vec3(0, 0, pos).yRot(-this.yBodyRot * ((float) Math.PI / 180F)); + setPos.accept(rider, this.getX() + vec3.x, this.getY() + dy, this.getZ() + vec3.z); + if (index > 0) { + this.clampRotation(rider); + } + } + + public void onPassengerTurned(Entity rider) { + if (this.getControllingPassenger() != rider) { + this.clampRotation(rider); + } + } + + private void clampRotation(Entity rider) { + rider.setYBodyRot(this.getYRot()); + float yr0 = rider.getYRot(); + float dyr = Mth.wrapDegrees(yr0 - this.getYRot()); + float yr1 = Mth.clamp(dyr, -160.0F, 160.0F); + rider.yRotO += yr1 - dyr; + float yr2 = yr0 + yr1 - dyr; + rider.setYRot(yr2); + rider.setYHeadRot(yr2); + } + + protected boolean canAddPassenger(Entity entity) { + return this.getPassengers().size() <= getModifiers().getOrDefault(GolemModifiers.SIZE_UPGRADE.get(), 0); + } + + @Override + protected void addPassenger(Entity rider) { + setInSittingPose(false); + super.addPassenger(rider); + } + // sit protected static final EntityDataAccessor DATA_FLAGS_ID = SynchedEntityData.defineId(DogGolemEntity.class, EntityDataSerializers.BYTE); @@ -99,7 +213,7 @@ protected boolean predicateSecondaryTarget(LivingEntity e) { } public boolean hurt(DamageSource source, float amount) { - if (!this.level.isClientSide) { + if (!this.level().isClientSide) { this.setInSittingPose(false); } return super.hurt(source, amount); @@ -123,11 +237,12 @@ public Vec3 getLeashOffset() { protected InteractionResult mobInteract(Player player, InteractionHand hand) { if (player.getItemInHand(hand).getItem() instanceof WandItem) return InteractionResult.PASS; + if (player.getItemInHand(hand).getItem() instanceof GolemHolder) return InteractionResult.PASS; ItemStack itemstack = player.getItemInHand(hand); if (!player.isShiftKeyDown() && itemstack.isEmpty()) return super.mobInteract(player, hand); else { - if (!this.level.isClientSide()) + if (!this.level().isClientSide()) this.setInSittingPose(!this.isInSittingPose()); return InteractionResult.SUCCESS; } diff --git a/src/main/java/dev/xkmc/modulargolems/content/entity/dog/DogGolemPartType.java b/src/main/java/dev/xkmc/modulargolems/content/entity/dog/DogGolemPartType.java index 2b6199720..2a1382eee 100644 --- a/src/main/java/dev/xkmc/modulargolems/content/entity/dog/DogGolemPartType.java +++ b/src/main/java/dev/xkmc/modulargolems/content/entity/dog/DogGolemPartType.java @@ -5,9 +5,9 @@ import dev.xkmc.modulargolems.content.item.golem.GolemPart; import dev.xkmc.modulargolems.init.registrate.GolemItems; import net.minecraft.ChatFormatting; -import net.minecraft.client.renderer.block.model.ItemTransforms; import net.minecraft.network.chat.Component; import net.minecraft.network.chat.MutableComponent; +import net.minecraft.world.item.ItemDisplayContext; import org.jetbrains.annotations.Nullable; import java.util.Locale; @@ -29,7 +29,7 @@ public GolemPart toItem() { } @Override - public void setupItemRender(PoseStack stack, ItemTransforms.TransformType transform, @Nullable DogGolemPartType part) { + public void setupItemRender(PoseStack stack, ItemDisplayContext transform, @Nullable DogGolemPartType part) { DogGolemRenderer.transform(stack, transform, part); } diff --git a/src/main/java/dev/xkmc/modulargolems/content/entity/dog/DogGolemRenderer.java b/src/main/java/dev/xkmc/modulargolems/content/entity/dog/DogGolemRenderer.java index f35a1118f..22173883b 100644 --- a/src/main/java/dev/xkmc/modulargolems/content/entity/dog/DogGolemRenderer.java +++ b/src/main/java/dev/xkmc/modulargolems/content/entity/dog/DogGolemRenderer.java @@ -1,11 +1,11 @@ package dev.xkmc.modulargolems.content.entity.dog; import com.mojang.blaze3d.vertex.PoseStack; -import com.mojang.math.Vector3f; +import com.mojang.math.Axis; import dev.xkmc.modulargolems.content.entity.common.AbstractGolemRenderer; import net.minecraft.client.model.geom.ModelLayers; -import net.minecraft.client.renderer.block.model.ItemTransforms; import net.minecraft.client.renderer.entity.EntityRendererProvider; +import net.minecraft.world.item.ItemDisplayContext; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; import org.jetbrains.annotations.Nullable; @@ -13,7 +13,7 @@ @OnlyIn(Dist.CLIENT) public class DogGolemRenderer extends AbstractGolemRenderer { - protected static void transform(PoseStack stack, ItemTransforms.TransformType transform, @Nullable DogGolemPartType part) { + protected static void transform(PoseStack stack, ItemDisplayContext transform, @Nullable DogGolemPartType part) { switch (transform) { case GUI: case FIRST_PERSON_LEFT_HAND: @@ -22,7 +22,7 @@ protected static void transform(PoseStack stack, ItemTransforms.TransformType tr case THIRD_PERSON_LEFT_HAND: case THIRD_PERSON_RIGHT_HAND: { stack.translate(0.25, 0.4, 0.5); - float size = 1F; + float size = 0.5F; stack.scale(size, size, size); break; } @@ -42,8 +42,8 @@ protected static void transform(PoseStack stack, ItemTransforms.TransformType tr return; } } - stack.mulPose(Vector3f.ZP.rotationDegrees(135)); - stack.mulPose(Vector3f.YP.rotationDegrees(-155)); + stack.mulPose(Axis.ZP.rotationDegrees(135)); + stack.mulPose(Axis.YP.rotationDegrees(-155)); if (part == null) { float size = 0.8f; stack.scale(size, size, size); @@ -60,7 +60,7 @@ protected static void transform(PoseStack stack, ItemTransforms.TransformType tr } public DogGolemRenderer(EntityRendererProvider.Context ctx) { - super(ctx, new DogGolemModel(ctx.bakeLayer(ModelLayers.WOLF)), 0.5F, DogGolemPartType::values); + super(ctx, new DogGolemModel(ctx.bakeLayer(ModelLayers.WOLF)), 1F, DogGolemPartType::values); } protected float getBob(DogGolemEntity dog, float pPartialTicks) { diff --git a/src/main/java/dev/xkmc/modulargolems/content/entity/humanoid/HumaniodGolemPartType.java b/src/main/java/dev/xkmc/modulargolems/content/entity/humanoid/HumaniodGolemPartType.java index cabfccf87..9a294568f 100644 --- a/src/main/java/dev/xkmc/modulargolems/content/entity/humanoid/HumaniodGolemPartType.java +++ b/src/main/java/dev/xkmc/modulargolems/content/entity/humanoid/HumaniodGolemPartType.java @@ -5,9 +5,9 @@ import dev.xkmc.modulargolems.content.item.golem.GolemPart; import dev.xkmc.modulargolems.init.registrate.GolemItems; import net.minecraft.ChatFormatting; -import net.minecraft.client.renderer.block.model.ItemTransforms; import net.minecraft.network.chat.Component; import net.minecraft.network.chat.MutableComponent; +import net.minecraft.world.item.ItemDisplayContext; import org.jetbrains.annotations.Nullable; import java.util.Locale; @@ -30,7 +30,7 @@ public GolemPart toItem() { } @Override - public void setupItemRender(PoseStack stack, ItemTransforms.TransformType transform, @Nullable HumaniodGolemPartType part) { + public void setupItemRender(PoseStack stack, ItemDisplayContext transform, @Nullable HumaniodGolemPartType part) { HumanoidGolemRenderer.transform(stack, transform, part); } diff --git a/src/main/java/dev/xkmc/modulargolems/content/entity/humanoid/HumanoidGolemEntity.java b/src/main/java/dev/xkmc/modulargolems/content/entity/humanoid/HumanoidGolemEntity.java index bf194b661..eabee8309 100644 --- a/src/main/java/dev/xkmc/modulargolems/content/entity/humanoid/HumanoidGolemEntity.java +++ b/src/main/java/dev/xkmc/modulargolems/content/entity/humanoid/HumanoidGolemEntity.java @@ -1,6 +1,6 @@ package dev.xkmc.modulargolems.content.entity.humanoid; -import dev.xkmc.l2library.serial.SerialClass; +import dev.xkmc.l2serial.serialization.SerialClass; import dev.xkmc.modulargolems.content.entity.common.SweepGolemEntity; import dev.xkmc.modulargolems.content.entity.common.goals.FollowOwnerGoal; import dev.xkmc.modulargolems.content.entity.common.goals.GolemFloatGoal; @@ -9,7 +9,7 @@ import dev.xkmc.modulargolems.content.entity.humanoid.ranged.GolemCrossbowAttackGoal; import dev.xkmc.modulargolems.content.entity.humanoid.ranged.GolemShooterHelper; import dev.xkmc.modulargolems.content.entity.humanoid.ranged.GolemTridentAttackGoal; -import dev.xkmc.modulargolems.content.item.WandItem; +import dev.xkmc.modulargolems.content.item.wand.WandItem; import dev.xkmc.modulargolems.content.item.golem.GolemHolder; import dev.xkmc.modulargolems.events.event.*; import dev.xkmc.modulargolems.init.advancement.GolemTriggers; @@ -19,6 +19,7 @@ import net.minecraft.network.syncher.SynchedEntityData; import net.minecraft.server.level.ServerPlayer; import net.minecraft.sounds.SoundEvents; +import net.minecraft.tags.DamageTypeTags; import net.minecraft.util.Mth; import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResult; @@ -51,19 +52,18 @@ public class HumanoidGolemEntity extends SweepGolemEntity type, Level level) { super(type, level); - if (!this.level.isClientSide) { + if (!this.level().isClientSide) { reassessWeaponGoal(); } } public void reassessWeaponGoal() { - if (!this.level.isClientSide) { + if (!this.level().isClientSide) { this.goalSelector.removeGoal(this.meleeGoal); this.goalSelector.removeGoal(this.bowGoal); this.goalSelector.removeGoal(this.crossbowGoal); @@ -105,7 +105,7 @@ public void readAdditionalSaveData(CompoundTag pCompound) { public void setItemSlot(EquipmentSlot pSlot, ItemStack pStack) { super.setItemSlot(pSlot, pStack); - if (!this.level.isClientSide) { + if (!this.level().isClientSide) { this.reassessWeaponGoal(); } } @@ -150,7 +150,7 @@ public void performCrossbowAttack(LivingEntity pUser, float pVelocity) { InteractionHand interactionhand = ProjectileUtil.getWeaponHoldingHand(pUser, item -> item instanceof CrossbowItem); ItemStack itemstack = pUser.getItemInHand(interactionhand); if (pUser.isHolding(is -> is.getItem() instanceof CrossbowItem)) { - CrossbowItem.performShooting(pUser.level, pUser, interactionhand, itemstack, pVelocity, 0); + CrossbowItem.performShooting(pUser.level(), pUser, interactionhand, itemstack, pVelocity, 0); } this.onCrossbowAttackPerformed(); } @@ -170,10 +170,11 @@ public void performRangedAttack(LivingEntity pTarget, float dist) { ItemStack stack = getItemInHand(hand); var throwable = GolemShooterHelper.isValidThrowableWeapon(this, stack, hand); if (throwable.isThrowable()) { - Projectile projectile = throwable.createProjectile(level); + Projectile projectile = throwable.createProjectile(level()); GolemShooterHelper.shootAimHelper(pTarget, projectile); this.playSound(SoundEvents.TRIDENT_THROW, 1.0F, 1.0F / (this.getRandom().nextFloat() * 0.4F + 0.8F)); - this.level.addFreshEntity(projectile); + projectile.getPersistentData().putInt("DespawnFactor", 20); + this.level().addFreshEntity(projectile); stack.hurtAndBreak(1, this, e -> e.broadcastBreakEvent(InteractionHand.MAIN_HAND)); } else if (stack.getItem() instanceof CrossbowItem) { performCrossbowAttack(this, 3); @@ -195,7 +196,8 @@ public void performRangedAttack(LivingEntity pTarget, float dist) { } GolemShooterHelper.shootAimHelper(pTarget, arrowEntity, event.speed(), event.gravity()); this.playSound(SoundEvents.ARROW_SHOOT, 1.0F, 1.0F / (this.getRandom().nextFloat() * 0.4F + 0.8F)); - this.level.addFreshEntity(arrowEntity); + arrowEntity.getPersistentData().putInt("DespawnFactor", 20); + this.level().addFreshEntity(arrowEntity); stack.hurtAndBreak(1, this, e -> e.broadcastBreakEvent(InteractionHand.MAIN_HAND)); } } @@ -292,7 +294,7 @@ protected InteractionResult mobInteract(Player player, InteractionHand hand) { GolemEquipEvent event = new GolemEquipEvent(this, itemstack); MinecraftForge.EVENT_BUS.post(event); if (event.canEquip()) { - if (level.isClientSide()) { + if (level().isClientSide()) { return InteractionResult.SUCCESS; } if (hasItemInSlot(event.getSlot())) { @@ -325,6 +327,11 @@ private void dropSlot(EquipmentSlot slot, boolean isDeath) { this.setItemSlot(slot, ItemStack.EMPTY); } + @Override + public double getMyRidingOffset() { + return -0.35; + } + // ------ player equipment hurt @Override @@ -337,7 +344,7 @@ protected void hurtArmor(DamageSource source, float damage) { for (EquipmentSlot slot : EquipmentSlot.values()) { if (slot.getType() != EquipmentSlot.Type.ARMOR) continue; ItemStack itemstack = this.getItemBySlot(slot); - if ((!source.isFire() || !itemstack.getItem().isFireResistant()) && itemstack.getItem() instanceof ArmorItem) { + if ((!source.is(DamageTypeTags.IS_FIRE) || !itemstack.getItem().isFireResistant()) && itemstack.getItem() instanceof ArmorItem) { itemstack.hurtAndBreak((int) damage, this, (entity) -> entity.broadcastBreakEvent(slot)); } } @@ -363,7 +370,7 @@ protected void hurtCurrentlyUsedShield(float damage) { if (stack.isEmpty()) { this.setItemInHand(hand, ItemStack.EMPTY); } - this.playSound(SoundEvents.SHIELD_BREAK, 0.8F, 0.8F + this.level.random.nextFloat() * 0.4F); + this.playSound(SoundEvents.SHIELD_BREAK, 0.8F, 0.8F + level().random.nextFloat() * 0.4F); } protected void blockUsingShield(LivingEntity source) { @@ -376,7 +383,7 @@ protected void blockUsingShield(LivingEntity source) { MinecraftForge.EVENT_BUS.post(event); if (event.shouldDisable()) { this.shieldCooldown = 100; - this.level.broadcastEntityEvent(this, EntityEvent.SHIELD_DISABLED); + this.level().broadcastEntityEvent(this, EntityEvent.SHIELD_DISABLED); } } @@ -400,9 +407,48 @@ public void aiStep() { for (EquipmentSlot slot : EquipmentSlot.values()) { ItemStack stack = getItemBySlot(slot); if (!stack.isEmpty()) { - stack.inventoryTick(level, this, slot.ordinal(), slot == EquipmentSlot.MAINHAND); + stack.inventoryTick(level(), this, slot.ordinal(), slot == EquipmentSlot.MAINHAND); + } + } + attackStep(); + } + + public void attackStep() { + if (level().isClientSide()) return; + if (tickCount % 2 != 0) return; + LivingEntity target = getTarget(); + ItemStack main = getItemBySlot(EquipmentSlot.MAINHAND); + ItemStack off = getItemBySlot(EquipmentSlot.OFFHAND); + if (main.getItem() instanceof ProjectileWeaponItem) { + if (getProjectile(main).isEmpty()) { + if (off.getItem() instanceof ProjectileWeaponItem) { + return; + } + } else { + if (target == null) { + return; + } + double d0 = distanceToSqr(target.getX(), target.getY(), target.getZ()); + if (meleeGoal.getAttackReachSqr(target) < d0) { + return; + } + } + } else if (off.getItem() instanceof ProjectileWeaponItem) { + boolean noArrow = getProjectile(off).isEmpty(); + if (noArrow) { + return; } + if (target != null) { + double d0 = distanceToSqr(target.getX(), target.getY(), target.getZ()); + if (meleeGoal.getAttackReachSqr(target) > d0) { + return; + } + } + } else { + return; } + super.setItemSlot(EquipmentSlot.MAINHAND, off); + super.setItemSlot(EquipmentSlot.OFFHAND, main); + reassessWeaponGoal(); } - } diff --git a/src/main/java/dev/xkmc/modulargolems/content/entity/humanoid/HumanoidGolemModel.java b/src/main/java/dev/xkmc/modulargolems/content/entity/humanoid/HumanoidGolemModel.java index 2cad9d9f9..9d90b9504 100644 --- a/src/main/java/dev/xkmc/modulargolems/content/entity/humanoid/HumanoidGolemModel.java +++ b/src/main/java/dev/xkmc/modulargolems/content/entity/humanoid/HumanoidGolemModel.java @@ -18,7 +18,6 @@ import net.minecraftforge.common.ToolActions; public class HumanoidGolemModel extends HumanoidModel implements IGolemModel { - public HumanoidGolemModel(EntityModelSet set) { this(set.bakeLayer(ModelLayers.PLAYER)); } diff --git a/src/main/java/dev/xkmc/modulargolems/content/entity/humanoid/HumanoidGolemRenderer.java b/src/main/java/dev/xkmc/modulargolems/content/entity/humanoid/HumanoidGolemRenderer.java index b7d8ab4d6..9c8b47148 100644 --- a/src/main/java/dev/xkmc/modulargolems/content/entity/humanoid/HumanoidGolemRenderer.java +++ b/src/main/java/dev/xkmc/modulargolems/content/entity/humanoid/HumanoidGolemRenderer.java @@ -1,22 +1,24 @@ package dev.xkmc.modulargolems.content.entity.humanoid; import com.mojang.blaze3d.vertex.PoseStack; -import com.mojang.math.Vector3f; +import com.mojang.math.Axis; import dev.xkmc.modulargolems.content.entity.common.AbstractGolemRenderer; +import net.minecraft.client.CameraType; +import net.minecraft.client.Minecraft; import net.minecraft.client.model.HumanoidModel; import net.minecraft.client.model.geom.ModelLayers; import net.minecraft.client.renderer.MultiBufferSource; -import net.minecraft.client.renderer.block.model.ItemTransforms; import net.minecraft.client.renderer.entity.EntityRendererProvider; import net.minecraft.client.renderer.entity.layers.CustomHeadLayer; import net.minecraft.client.renderer.entity.layers.ElytraLayer; import net.minecraft.client.renderer.entity.layers.HumanoidArmorLayer; import net.minecraft.client.renderer.entity.layers.ItemInHandLayer; +import net.minecraft.world.item.ItemDisplayContext; import org.jetbrains.annotations.Nullable; public class HumanoidGolemRenderer extends AbstractGolemRenderer { - protected static void transform(PoseStack stack, ItemTransforms.TransformType transform, @Nullable HumaniodGolemPartType part) { + protected static void transform(PoseStack stack, ItemDisplayContext transform, @Nullable HumaniodGolemPartType part) { switch (transform) { case GUI: case FIRST_PERSON_LEFT_HAND: @@ -45,8 +47,8 @@ protected static void transform(PoseStack stack, ItemTransforms.TransformType tr return; } } - stack.mulPose(Vector3f.ZP.rotationDegrees(135)); - stack.mulPose(Vector3f.YP.rotationDegrees(-155)); + stack.mulPose(Axis.ZP.rotationDegrees(135)); + stack.mulPose(Axis.YP.rotationDegrees(-155)); if (part == null) { float size = 0.45f; stack.scale(size, size, size); @@ -70,7 +72,8 @@ public HumanoidGolemRenderer(EntityRendererProvider.Context ctx) { super(ctx, new HumanoidGolemModel(ctx.bakeLayer(ModelLayers.PLAYER)), 0.5f, HumaniodGolemPartType::values); this.addLayer(new HumanoidArmorLayer<>(this, new HumanoidModel<>(ctx.bakeLayer(ModelLayers.PLAYER_INNER_ARMOR)), - new HumanoidModel<>(ctx.bakeLayer(ModelLayers.PLAYER_OUTER_ARMOR)))); + new HumanoidModel<>(ctx.bakeLayer(ModelLayers.PLAYER_OUTER_ARMOR)), + ctx.getModelManager())); this.addLayer(new CustomHeadLayer<>(this, ctx.getModelSet(), 1, 1, 1, ctx.getItemInHandRenderer())); this.addLayer(new ElytraLayer<>(this, ctx.getModelSet())); this.addLayer(new LayerWrapper<>(this, new ItemInHandLayer<>(this, ctx.getItemInHandRenderer()))); @@ -78,6 +81,11 @@ public HumanoidGolemRenderer(EntityRendererProvider.Context ctx) { @Override public void render(HumanoidGolemEntity entity, float f1, float f2, PoseStack stack, MultiBufferSource source, int i) { + var camera = Minecraft.getInstance().getCameraEntity(); + if (Minecraft.getInstance().options.getCameraType() == CameraType.FIRST_PERSON && + camera != null && camera.getVehicle() != null && + entity.getVehicle() == camera.getVehicle()) + return; super.render(entity, f1, f2, stack, source, i); } } diff --git a/src/main/java/dev/xkmc/modulargolems/content/entity/humanoid/ranged/GolemShooterHelper.java b/src/main/java/dev/xkmc/modulargolems/content/entity/humanoid/ranged/GolemShooterHelper.java index c80858c39..aaa7b8df3 100644 --- a/src/main/java/dev/xkmc/modulargolems/content/entity/humanoid/ranged/GolemShooterHelper.java +++ b/src/main/java/dev/xkmc/modulargolems/content/entity/humanoid/ranged/GolemShooterHelper.java @@ -60,7 +60,7 @@ public static void shootAimHelper(LivingEntity target, Projectile arrow, double double c = dx * dx + dz * dz + dy * dy; boolean completed = false; if (target instanceof Slime) { - var clip = target.level.clip(new ClipContext(target.position(), target.position().add(0, -3, 0), + var clip = target.level().clip(new ClipContext(target.position(), target.position().add(0, -3, 0), ClipContext.Block.COLLIDER, ClipContext.Fluid.ANY, target)); if (clip.getType() == HitResult.Type.BLOCK) { dy += clip.getLocation().y() - target.getY(); diff --git a/src/main/java/dev/xkmc/modulargolems/content/entity/metalgolem/MetalGolemCrackinessLayer.java b/src/main/java/dev/xkmc/modulargolems/content/entity/metalgolem/MetalGolemCrackinessLayer.java index 3369df162..8d8d097b9 100644 --- a/src/main/java/dev/xkmc/modulargolems/content/entity/metalgolem/MetalGolemCrackinessLayer.java +++ b/src/main/java/dev/xkmc/modulargolems/content/entity/metalgolem/MetalGolemCrackinessLayer.java @@ -6,6 +6,7 @@ import net.minecraft.client.renderer.entity.RenderLayerParent; import net.minecraft.client.renderer.entity.layers.RenderLayer; import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.entity.animal.IronGolem; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; @@ -13,13 +14,13 @@ import java.util.Map; @OnlyIn(Dist.CLIENT) -public class MetalGolemCrackinessLayer extends RenderLayer { +public class MetalGolemCrackinessLayer extends RenderLayer> { private static final Map TEXTURES = ImmutableMap.of( IronGolem.Crackiness.LOW, new ResourceLocation("textures/entity/iron_golem/iron_golem_crackiness_low.png"), IronGolem.Crackiness.MEDIUM, new ResourceLocation("textures/entity/iron_golem/iron_golem_crackiness_medium.png"), IronGolem.Crackiness.HIGH, new ResourceLocation("textures/entity/iron_golem/iron_golem_crackiness_high.png")); - public MetalGolemCrackinessLayer(RenderLayerParent p_117135_) { + public MetalGolemCrackinessLayer(RenderLayerParent> p_117135_) { super(p_117135_); } diff --git a/src/main/java/dev/xkmc/modulargolems/content/entity/metalgolem/MetalGolemEntity.java b/src/main/java/dev/xkmc/modulargolems/content/entity/metalgolem/MetalGolemEntity.java index b48173bb4..a794c040b 100644 --- a/src/main/java/dev/xkmc/modulargolems/content/entity/metalgolem/MetalGolemEntity.java +++ b/src/main/java/dev/xkmc/modulargolems/content/entity/metalgolem/MetalGolemEntity.java @@ -1,12 +1,12 @@ package dev.xkmc.modulargolems.content.entity.metalgolem; -import dev.xkmc.l2library.serial.SerialClass; +import dev.xkmc.l2serial.serialization.SerialClass; import dev.xkmc.modulargolems.content.config.GolemMaterialConfig; import dev.xkmc.modulargolems.content.entity.common.SweepGolemEntity; import dev.xkmc.modulargolems.content.entity.common.goals.FollowOwnerGoal; import dev.xkmc.modulargolems.content.entity.common.goals.GolemFloatGoal; import dev.xkmc.modulargolems.content.entity.common.goals.GolemMeleeGoal; -import dev.xkmc.modulargolems.content.item.WandItem; +import dev.xkmc.modulargolems.content.item.wand.WandItem; import dev.xkmc.modulargolems.init.advancement.GolemTriggers; import net.minecraft.core.BlockPos; import net.minecraft.core.particles.BlockParticleOption; @@ -39,17 +39,16 @@ @SerialClass public class MetalGolemEntity extends SweepGolemEntity { - public MetalGolemEntity(EntityType type, Level level) { super(type, level); - this.maxUpStep = 1.0F; + this.setMaxUpStep(1); } protected boolean performDamageTarget(Entity target, float damage, double kb) { if (target instanceof LivingEntity le) { le.setLastHurtByPlayer(getOwner()); } - boolean succeed = target.hurt(DamageSource.mobAttack(this), damage); + boolean succeed = target.hurt(level().damageSources().mobAttack(this), damage); if (succeed) { double d1 = Math.max(0.0D, 1.0D - kb); double dokb = getAttributeValue(Attributes.ATTACK_KNOCKBACK) * 0.4; @@ -90,16 +89,16 @@ public void aiStep() { int j = Mth.floor(this.getY() - (double) 0.2F); int k = Mth.floor(this.getZ()); BlockPos pos = new BlockPos(i, j, k); - BlockState blockstate = this.level.getBlockState(pos); + BlockState blockstate = this.level().getBlockState(pos); if (!blockstate.isAir()) { - this.level.addParticle(new BlockParticleOption(ParticleTypes.BLOCK, blockstate).setPos(pos), this.getX() + ((double) this.random.nextFloat() - 0.5D) * (double) this.getBbWidth(), this.getY() + 0.1D, this.getZ() + ((double) this.random.nextFloat() - 0.5D) * (double) this.getBbWidth(), 4.0D * ((double) this.random.nextFloat() - 0.5D), 0.5D, ((double) this.random.nextFloat() - 0.5D) * 4.0D); + this.level().addParticle(new BlockParticleOption(ParticleTypes.BLOCK, blockstate).setPos(pos), this.getX() + ((double) this.random.nextFloat() - 0.5D) * (double) this.getBbWidth(), this.getY() + 0.1D, this.getZ() + ((double) this.random.nextFloat() - 0.5D) * (double) this.getBbWidth(), 4.0D * ((double) this.random.nextFloat() - 0.5D), 0.5D, ((double) this.random.nextFloat() - 0.5D) * 4.0D); } } } public boolean doHurtTarget(Entity target) { this.attackAnimationTick = 10; - this.level.broadcastEntityEvent(this, (byte) 4); + this.level().broadcastEntityEvent(this, (byte) 4); float damage = this.getAttackDamage(); double kb; if (target instanceof LivingEntity livingentity) { @@ -194,10 +193,10 @@ protected InteractionResult mobInteract(Player player, InteractionHand hand) { if (!player.getAbilities().instabuild) { itemstack.shrink(1); } - if (!this.level.isClientSide()) { + if (!this.level().isClientSide()) { GolemTriggers.HOT_FIX.trigger((ServerPlayer) player); } - return InteractionResult.sidedSuccess(this.level.isClientSide); + return InteractionResult.sidedSuccess(this.level().isClientSide); } } } diff --git a/src/main/java/dev/xkmc/modulargolems/content/entity/metalgolem/MetalGolemModel.java b/src/main/java/dev/xkmc/modulargolems/content/entity/metalgolem/MetalGolemModel.java index fc21ba24f..7c21dc19d 100644 --- a/src/main/java/dev/xkmc/modulargolems/content/entity/metalgolem/MetalGolemModel.java +++ b/src/main/java/dev/xkmc/modulargolems/content/entity/metalgolem/MetalGolemModel.java @@ -9,11 +9,12 @@ import net.minecraft.client.model.geom.ModelPart; import net.minecraft.resources.ResourceLocation; import net.minecraft.util.Mth; +import net.minecraft.world.entity.LivingEntity; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; @OnlyIn(Dist.CLIENT) -public class MetalGolemModel extends HierarchicalModel implements IGolemModel { +public class MetalGolemModel extends HierarchicalModel implements IGolemModel> { private final ModelPart root; private final ModelPart head; diff --git a/src/main/java/dev/xkmc/modulargolems/content/entity/metalgolem/MetalGolemPartType.java b/src/main/java/dev/xkmc/modulargolems/content/entity/metalgolem/MetalGolemPartType.java index a5dd38900..cd599cca4 100644 --- a/src/main/java/dev/xkmc/modulargolems/content/entity/metalgolem/MetalGolemPartType.java +++ b/src/main/java/dev/xkmc/modulargolems/content/entity/metalgolem/MetalGolemPartType.java @@ -5,9 +5,9 @@ import dev.xkmc.modulargolems.content.item.golem.GolemPart; import dev.xkmc.modulargolems.init.registrate.GolemItems; import net.minecraft.ChatFormatting; -import net.minecraft.client.renderer.block.model.ItemTransforms; import net.minecraft.network.chat.Component; import net.minecraft.network.chat.MutableComponent; +import net.minecraft.world.item.ItemDisplayContext; import org.jetbrains.annotations.Nullable; import java.util.Locale; @@ -16,7 +16,7 @@ public enum MetalGolemPartType implements IGolemPart { RIGHT, BODY, LEFT, LEG; @Override - public void setupItemRender(PoseStack stack, ItemTransforms.TransformType transform, @Nullable MetalGolemPartType part) { + public void setupItemRender(PoseStack stack, ItemDisplayContext transform, @Nullable MetalGolemPartType part) { MetalGolemRenderer.transform(stack, transform, part); } diff --git a/src/main/java/dev/xkmc/modulargolems/content/entity/metalgolem/MetalGolemRenderer.java b/src/main/java/dev/xkmc/modulargolems/content/entity/metalgolem/MetalGolemRenderer.java index 9cea1da4f..844d717c0 100644 --- a/src/main/java/dev/xkmc/modulargolems/content/entity/metalgolem/MetalGolemRenderer.java +++ b/src/main/java/dev/xkmc/modulargolems/content/entity/metalgolem/MetalGolemRenderer.java @@ -1,19 +1,21 @@ package dev.xkmc.modulargolems.content.entity.metalgolem; import com.mojang.blaze3d.vertex.PoseStack; -import com.mojang.math.Vector3f; +import com.mojang.math.Axis; import dev.xkmc.modulargolems.content.entity.common.AbstractGolemRenderer; +import dev.xkmc.modulargolems.content.item.equipments.GolemEquipmentRenderer; import net.minecraft.client.model.geom.ModelLayers; -import net.minecraft.client.renderer.block.model.ItemTransforms; import net.minecraft.client.renderer.entity.EntityRendererProvider; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.item.ItemDisplayContext; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; import org.jetbrains.annotations.Nullable; @OnlyIn(Dist.CLIENT) -public class MetalGolemRenderer extends AbstractGolemRenderer { +public class MetalGolemRenderer extends AbstractGolemRenderer> { - protected static void transform(PoseStack stack, ItemTransforms.TransformType transform, @Nullable MetalGolemPartType part) { + protected static void transform(PoseStack stack, ItemDisplayContext transform, @Nullable MetalGolemPartType part) { switch (transform) { case GUI: case FIRST_PERSON_LEFT_HAND: @@ -42,8 +44,8 @@ protected static void transform(PoseStack stack, ItemTransforms.TransformType tr return; } } - stack.mulPose(Vector3f.ZP.rotationDegrees(135)); - stack.mulPose(Vector3f.YP.rotationDegrees(-155)); + stack.mulPose(Axis.ZP.rotationDegrees(135)); + stack.mulPose(Axis.YP.rotationDegrees(-155)); if (part == null) { float size = 0.375f; stack.scale(size, size, size); @@ -64,17 +66,18 @@ protected static void transform(PoseStack stack, ItemTransforms.TransformType tr } public MetalGolemRenderer(EntityRendererProvider.Context ctx) { - super(ctx, new MetalGolemModel(ctx.bakeLayer(ModelLayers.IRON_GOLEM)), 0.7F, MetalGolemPartType::values); + super(ctx, new MetalGolemModel(ctx.bakeLayer(ModelLayers.IRON_GOLEM)), 0.7F, MetalGolemPartType::values); this.addLayer(new MetalGolemCrackinessLayer(this)); + this.addLayer(new GolemEquipmentRenderer(this,ctx)); } protected void setupRotations(MetalGolemEntity entity, PoseStack stack, float v1, float v2, float v3) { super.setupRotations(entity, stack, v1, v2, v3); - if (!((double) entity.animationSpeed < 0.01D)) { + if (!((double) entity.walkAnimation.speed() < 0.01D)) { float f = 13.0F; - float f1 = entity.animationPosition - entity.animationSpeed * (1.0F - v3) + 6.0F; + float f1 = entity.walkAnimation.position() - entity.walkAnimation.speed() * (1.0F - v3) + 6.0F; float f2 = (Math.abs(f1 % f - 6.5F) - 3.25F) / 3.25F; - stack.mulPose(Vector3f.ZP.rotationDegrees(6.5F * f2)); + stack.mulPose(Axis.ZP.rotationDegrees(6.5F * f2)); } } diff --git a/src/main/java/dev/xkmc/modulargolems/content/item/WandItem.java b/src/main/java/dev/xkmc/modulargolems/content/item/WandItem.java deleted file mode 100644 index 19c92ce4e..000000000 --- a/src/main/java/dev/xkmc/modulargolems/content/item/WandItem.java +++ /dev/null @@ -1,4 +0,0 @@ -package dev.xkmc.modulargolems.content.item; - -public interface WandItem { -} diff --git a/src/main/java/dev/xkmc/modulargolems/content/item/equipments/GolemEquipmentModels.java b/src/main/java/dev/xkmc/modulargolems/content/item/equipments/GolemEquipmentModels.java new file mode 100644 index 000000000..c1598452c --- /dev/null +++ b/src/main/java/dev/xkmc/modulargolems/content/item/equipments/GolemEquipmentModels.java @@ -0,0 +1,42 @@ +package dev.xkmc.modulargolems.content.item.equipments; +import dev.xkmc.modulargolems.init.ModularGolems; +import net.minecraft.client.model.geom.ModelLayerLocation; +import net.minecraft.client.model.geom.PartPose; +import net.minecraft.client.model.geom.builders.*; +import net.minecraft.resources.ResourceLocation; + +import java.util.List; + +public class GolemEquipmentModels { + record GolemModelPath(ModelLayerLocation mll,List> l){ + } + public static final ModelLayerLocation HELMET_LAYER = new ModelLayerLocation(new ResourceLocation(ModularGolems.MODID,"golemguard_helmet"), "main"); + public static final ModelLayerLocation CHESTPLATE_LAYER = new ModelLayerLocation(new ResourceLocation(ModularGolems.MODID,"golemguard_chestplate"), "main"); + public static final GolemModelPath HELMETS =new GolemModelPath(HELMET_LAYER,List.of(List.of("head","main_head"))); + public static final GolemModelPath CHESTPLATES =new GolemModelPath(CHESTPLATE_LAYER,List.of(List.of("body","main_body"))); + public static MeshDefinition BuildGolemBaseLayers(){ + MeshDefinition mesh = new MeshDefinition(); + PartDefinition partdefinition = mesh.getRoot(); + partdefinition.addOrReplaceChild("head", CubeListBuilder.create().texOffs(0, 0).addBox(-4.0F, -12.0F, -5.5F, 8.0F, 10.0F, 8.0F).texOffs(24, 0).addBox(-1.0F, -5.0F, -7.5F, 2.0F, 4.0F, 2.0F), PartPose.offset(0.0F, -7.0F, -2.0F)); + partdefinition.addOrReplaceChild("body", CubeListBuilder.create().texOffs(0, 40).addBox(-9.0F, -2.0F, -6.0F, 18.0F, 12.0F, 11.0F).texOffs(0, 70).addBox(-4.5F, 10.0F, -3.0F, 9.0F, 5.0F, 6.0F, new CubeDeformation(0.5F)), PartPose.offset(0.0F, -7.0F, 0.0F)); + partdefinition.addOrReplaceChild("right_arm", CubeListBuilder.create().texOffs(60, 21).addBox(-13.0F, -2.5F, -3.0F, 4.0F, 30.0F, 6.0F), PartPose.offset(0.0F, -7.0F, 0.0F)); + partdefinition.addOrReplaceChild("left_arm", CubeListBuilder.create().texOffs(60, 58).addBox(9.0F, -2.5F, -3.0F, 4.0F, 30.0F, 6.0F), PartPose.offset(0.0F, -7.0F, 0.0F)); + partdefinition.addOrReplaceChild("right_leg", CubeListBuilder.create().texOffs(37, 0).addBox(-3.5F, -3.0F, -3.0F, 6.0F, 16.0F, 5.0F), PartPose.offset(-4.0F, 11.0F, 0.0F)); + partdefinition.addOrReplaceChild("left_leg", CubeListBuilder.create().texOffs(60, 0).mirror().addBox(-3.5F, -3.0F, -3.0F, 6.0F, 16.0F, 5.0F), PartPose.offset(5.0F, 11.0F, 0.0F)); + return mesh; + } + public static LayerDefinition createHelmetLayer(){ + MeshDefinition mesh=BuildGolemBaseLayers(); + PartDefinition root1 = mesh.getRoot().getChild("head"); + PartDefinition Mainbody1 = root1.addOrReplaceChild("main_head", CubeListBuilder.create().texOffs(0, 0).addBox(-5.0F, -12.1F, -6.5F, 10.0F, 10.0F, 10.0F), PartPose.offset(0.0F, -7.0F, -2.0F)); + return LayerDefinition.create(mesh, 64, 64); + } + public static LayerDefinition createChesplateLayer(){ + MeshDefinition mesh=BuildGolemBaseLayers(); + PartDefinition root2=mesh.getRoot().getChild("body"); + PartDefinition Mainbody2 = root2.addOrReplaceChild("main_body", CubeListBuilder.create().texOffs(0, 0).addBox(-9.1F, -2.1F, -6.1F, 18.2F, 12.1F, 11.2F), PartPose.offset(0.0F, -7.0F, 0.0F)); + return LayerDefinition.create(mesh, 64, 64); + } + +} + diff --git a/src/main/java/dev/xkmc/modulargolems/content/item/equipments/GolemEquipmentRenderer.java b/src/main/java/dev/xkmc/modulargolems/content/item/equipments/GolemEquipmentRenderer.java new file mode 100644 index 000000000..e388666e5 --- /dev/null +++ b/src/main/java/dev/xkmc/modulargolems/content/item/equipments/GolemEquipmentRenderer.java @@ -0,0 +1,43 @@ +package dev.xkmc.modulargolems.content.item.equipments; +import com.mojang.blaze3d.vertex.PoseStack; +import dev.xkmc.modulargolems.content.entity.metalgolem.MetalGolemEntity; +import dev.xkmc.modulargolems.content.entity.metalgolem.MetalGolemModel; +import net.minecraft.client.model.geom.ModelLayerLocation; +import net.minecraft.client.model.geom.ModelPart; +import net.minecraft.client.renderer.MultiBufferSource; +import net.minecraft.client.renderer.RenderType; +import net.minecraft.client.renderer.entity.EntityRendererProvider; +import net.minecraft.client.renderer.entity.RenderLayerParent; +import net.minecraft.client.renderer.entity.layers.RenderLayer; +import net.minecraft.client.renderer.texture.OverlayTexture; +import net.minecraft.world.entity.EquipmentSlot; +import net.minecraft.world.entity.LivingEntity; +import org.jetbrains.annotations.NotNull; +import java.util.HashMap; +import java.util.List; +import static dev.xkmc.modulargolems.content.item.equipments.GolemEquipmentModels.*; +public class GolemEquipmentRenderer extends RenderLayer> { + public HashMap map=new HashMap<>(); + public GolemEquipmentRenderer (RenderLayerParent> r,EntityRendererProvider.Context e) { + super(r); + map.put(HELMET_LAYER,new MetalGolemModel(e.bakeLayer(HELMET_LAYER))); + map.put(CHESTPLATE_LAYER,new MetalGolemModel(e.bakeLayer(CHESTPLATE_LAYER))); + } + @Override + public void render(@NotNull PoseStack stack, MultiBufferSource source, int i, @NotNull MetalGolemEntity entity, float f1, float f2, float f3, float f4, float f5, float f6) { + for(var e : EquipmentSlot.values()) { + if (entity.getItemBySlot(e).getItem() instanceof MetalGolemArmorItem mgaitem) { + GolemModelPath gmpath = mgaitem.getModelPath(); + for (List ls : gmpath.l()) { + MetalGolemModel model=map.get(gmpath.mll()); + model.setupAnim(entity,f1,f2,f4,f5,f6); + ModelPart gemr=model.root(); + for (String s : ls) { + gemr=gemr.getChild(s); + } + gemr.render(stack,source.getBuffer(RenderType.armorCutoutNoCull(mgaitem.customResLocation())),i, OverlayTexture.NO_OVERLAY,1,1,1,1); + } + } + } + } +} diff --git a/src/main/java/dev/xkmc/modulargolems/content/item/equipments/MetalGolemArmorItem.java b/src/main/java/dev/xkmc/modulargolems/content/item/equipments/MetalGolemArmorItem.java new file mode 100644 index 000000000..b85c0bba7 --- /dev/null +++ b/src/main/java/dev/xkmc/modulargolems/content/item/equipments/MetalGolemArmorItem.java @@ -0,0 +1,75 @@ +package dev.xkmc.modulargolems.content.item.equipments; +import com.google.common.collect.ImmutableMultimap; +import com.google.common.collect.Multimap; +import net.minecraft.Util; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.entity.EquipmentSlot; +import net.minecraft.world.entity.ai.attributes.Attribute; +import net.minecraft.world.entity.ai.attributes.AttributeModifier; +import net.minecraft.world.entity.ai.attributes.Attributes; +import net.minecraft.world.item.ArmorItem; +import net.minecraft.world.item.Item; +import net.minecraftforge.registries.ForgeRegistries; +import java.util.EnumMap; +import java.util.UUID; +public class MetalGolemArmorItem extends Item { + public ResourceLocation a= new ResourceLocation("",""); + private final GolemEquipmentModels.GolemModelPath gmp; + protected final ArmorItem.Type type; + private final Multimap defaultModifiers; + private static final EnumMap ARMOR_MODIFIER_UUID_PER_TYPE = Util.make(new EnumMap<>(ArmorItem.Type.class), (p_266744_) -> { + p_266744_.put(ArmorItem.Type.BOOTS, UUID.fromString("845DB27C-C624-495F-8C9F-6020A9A58B6B")); + p_266744_.put(ArmorItem.Type.LEGGINGS, UUID.fromString("D8499B04-0E66-4726-AB29-64469D734E0D")); + p_266744_.put(ArmorItem.Type.CHESTPLATE, UUID.fromString("9F3D476D-C118-4544-8365-64846904B48E")); + p_266744_.put(ArmorItem.Type.HELMET, UUID.fromString("2AD3F246-FEE1-4E67-B886-69FD380BB150")); + }); + public MetalGolemArmorItem(Properties p_41383_, ArmorItem.Type type, int defense, float toughness,GolemEquipmentModels.GolemModelPath gmp) { + super(p_41383_); + this.gmp=gmp; + this.type = type; + UUID uuid = ARMOR_MODIFIER_UUID_PER_TYPE.get(type); + ImmutableMultimap.Builder builder = ImmutableMultimap.builder(); + builder.put(Attributes.ARMOR, new AttributeModifier(uuid, "Armor modifier", defense, AttributeModifier.Operation.ADDITION)); + builder.put(Attributes.ARMOR_TOUGHNESS, new AttributeModifier(uuid, "Armor toughness", toughness, AttributeModifier.Operation.ADDITION)); + this.defaultModifiers = builder.build(); + } + @Deprecated + public Multimap getDefaultAttributeModifiers(EquipmentSlot p_40390_) { + return p_40390_ == this.type.getSlot() ? this.defaultModifiers : super.getDefaultAttributeModifiers(p_40390_); + } + public ResourceLocation customResLocation(){ + ResourceLocation rl=ForgeRegistries.ITEMS.getKey(this); + assert rl != null; + return new ResourceLocation(rl.getNamespace(),"textures/equipments/"+ rl.getPath()+".png"); + } + public GolemEquipmentModels.GolemModelPath getModelPath() { + return gmp; + } + + public EquipmentSlot getSlot(){ + return type.getSlot(); + } + + public ArmorItem.Type getType() { + return type; + } + + public enum Type { + HELMET(EquipmentSlot.HEAD, "helmet"), + CHESTPLATE(EquipmentSlot.CHEST, "chestplate"), + LEGGINGS(EquipmentSlot.LEGS, "leggings"), + BOOTS(EquipmentSlot.FEET, "boots"); + private final EquipmentSlot slot; + private final String name; + Type(EquipmentSlot p_266754_, String p_266886_) { + this.slot = p_266754_; + this.name = p_266886_; + } + public EquipmentSlot getSlot() { + return this.slot; + } + public String getName() { + return this.name; + } + } +} \ No newline at end of file diff --git a/src/main/java/dev/xkmc/modulargolems/compat/materials/tinker/package-info.java b/src/main/java/dev/xkmc/modulargolems/content/item/equipments/package-info.java similarity index 75% rename from src/main/java/dev/xkmc/modulargolems/compat/materials/tinker/package-info.java rename to src/main/java/dev/xkmc/modulargolems/content/item/equipments/package-info.java index c628ed3cc..0f697ec70 100644 --- a/src/main/java/dev/xkmc/modulargolems/compat/materials/tinker/package-info.java +++ b/src/main/java/dev/xkmc/modulargolems/content/item/equipments/package-info.java @@ -1,7 +1,7 @@ @ParametersAreNonnullByDefault @MethodsReturnNonnullByDefault -package dev.xkmc.modulargolems.compat.materials.tinker; +package dev.xkmc.modulargolems.content.item.equipments; import net.minecraft.MethodsReturnNonnullByDefault; diff --git a/src/main/java/dev/xkmc/modulargolems/content/item/golem/BEWLRHandle.java b/src/main/java/dev/xkmc/modulargolems/content/item/golem/BEWLRHandle.java index b92147540..b79a00273 100644 --- a/src/main/java/dev/xkmc/modulargolems/content/item/golem/BEWLRHandle.java +++ b/src/main/java/dev/xkmc/modulargolems/content/item/golem/BEWLRHandle.java @@ -2,9 +2,9 @@ import com.mojang.blaze3d.vertex.PoseStack; import net.minecraft.client.renderer.MultiBufferSource; -import net.minecraft.client.renderer.block.model.ItemTransforms; +import net.minecraft.world.item.ItemDisplayContext; import net.minecraft.world.item.ItemStack; -public record BEWLRHandle(ItemStack stack, ItemTransforms.TransformType type, PoseStack poseStack, +public record BEWLRHandle(ItemStack stack, ItemDisplayContext type, PoseStack poseStack, MultiBufferSource bufferSource, int light, int overlay) { } diff --git a/src/main/java/dev/xkmc/modulargolems/content/item/golem/ClientHolderManager.java b/src/main/java/dev/xkmc/modulargolems/content/item/golem/ClientHolderManager.java index 5396a9982..74ec822aa 100644 --- a/src/main/java/dev/xkmc/modulargolems/content/item/golem/ClientHolderManager.java +++ b/src/main/java/dev/xkmc/modulargolems/content/item/golem/ClientHolderManager.java @@ -1,8 +1,8 @@ package dev.xkmc.modulargolems.content.item.golem; import dev.xkmc.l2library.util.Proxy; -import dev.xkmc.l2library.util.code.Wrappers; import dev.xkmc.l2library.util.nbt.ItemCompoundTag; +import dev.xkmc.l2serial.util.Wrappers; import dev.xkmc.modulargolems.content.core.IGolemPart; import dev.xkmc.modulargolems.content.entity.common.AbstractGolemEntity; import dev.xkmc.modulargolems.init.ModularGolems; @@ -10,10 +10,13 @@ import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.Tag; import net.minecraft.world.item.ItemStack; +import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.event.TickEvent; import net.minecraftforge.eventbus.api.SubscribeEvent; +import net.minecraftforge.fml.common.Mod; import org.jetbrains.annotations.Nullable; +@Mod.EventBusSubscriber(value = Dist.CLIENT, modid = ModularGolems.MODID, bus = Mod.EventBusSubscriber.Bus.FORGE) public class ClientHolderManager { static final class TimedCache { @@ -26,6 +29,7 @@ static final class TimedCache { TimedCache(int life, @Nullable AbstractGolemEntity entity) { this.life = life; this.entity = entity; + if (entity != null) entity.addTag("ClientOnly"); } } diff --git a/src/main/java/dev/xkmc/modulargolems/content/item/golem/GolemBEWLR.java b/src/main/java/dev/xkmc/modulargolems/content/item/golem/GolemBEWLR.java index 0542f6941..c1f478203 100644 --- a/src/main/java/dev/xkmc/modulargolems/content/item/golem/GolemBEWLR.java +++ b/src/main/java/dev/xkmc/modulargolems/content/item/golem/GolemBEWLR.java @@ -4,7 +4,7 @@ import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.blaze3d.vertex.VertexConsumer; import dev.xkmc.l2library.util.Proxy; -import dev.xkmc.l2library.util.code.Wrappers; +import dev.xkmc.l2serial.util.Wrappers; import dev.xkmc.modulargolems.content.config.GolemMaterial; import dev.xkmc.modulargolems.content.core.GolemType; import dev.xkmc.modulargolems.content.core.IGolemPart; @@ -16,11 +16,11 @@ import net.minecraft.client.renderer.BlockEntityWithoutLevelRenderer; import net.minecraft.client.renderer.MultiBufferSource; import net.minecraft.client.renderer.RenderType; -import net.minecraft.client.renderer.block.model.ItemTransforms; import net.minecraft.client.renderer.blockentity.BlockEntityRenderDispatcher; import net.minecraft.client.renderer.entity.ItemRenderer; import net.minecraft.resources.ResourceLocation; import net.minecraft.server.packs.resources.ResourceManager; +import net.minecraft.world.item.ItemDisplayContext; import net.minecraft.world.item.ItemStack; import net.minecraftforge.client.extensions.common.IClientItemExtensions; @@ -57,7 +57,7 @@ public void onResourceManagerReload(ResourceManager p_172555_) { } @Override - public void renderByItem(ItemStack stack, ItemTransforms.TransformType type, PoseStack poseStack, + public void renderByItem(ItemStack stack, ItemDisplayContext type, PoseStack poseStack, MultiBufferSource bufferSource, int light, int overlay) { BEWLRHandle handle = new BEWLRHandle(stack, type, poseStack, bufferSource, light, overlay); poseStack.pushPose(); diff --git a/src/main/java/dev/xkmc/modulargolems/content/item/golem/GolemHolder.java b/src/main/java/dev/xkmc/modulargolems/content/item/golem/GolemHolder.java index 48db7318f..c51ba7346 100644 --- a/src/main/java/dev/xkmc/modulargolems/content/item/golem/GolemHolder.java +++ b/src/main/java/dev/xkmc/modulargolems/content/item/golem/GolemHolder.java @@ -1,21 +1,22 @@ package dev.xkmc.modulargolems.content.item.golem; import com.mojang.datafixers.util.Pair; -import dev.xkmc.l2library.repack.registrate.util.entry.RegistryEntry; +import com.tterrag.registrate.util.CreativeModeTabModifier; +import com.tterrag.registrate.util.entry.RegistryEntry; import dev.xkmc.l2library.util.nbt.ItemCompoundTag; import dev.xkmc.modulargolems.content.config.GolemMaterial; import dev.xkmc.modulargolems.content.config.GolemMaterialConfig; import dev.xkmc.modulargolems.content.core.GolemType; import dev.xkmc.modulargolems.content.core.IGolemPart; import dev.xkmc.modulargolems.content.entity.common.AbstractGolemEntity; -import dev.xkmc.modulargolems.content.item.UpgradeItem; -import dev.xkmc.modulargolems.init.data.LangData; +import dev.xkmc.modulargolems.content.entity.dog.DogGolemEntity; +import dev.xkmc.modulargolems.content.item.upgrade.UpgradeItem; +import dev.xkmc.modulargolems.init.data.MGLangData; import dev.xkmc.modulargolems.init.registrate.GolemTypes; import net.minecraft.ChatFormatting; import net.minecraft.client.gui.screens.Screen; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; -import net.minecraft.core.NonNullList; import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.ListTag; import net.minecraft.nbt.StringTag; @@ -26,10 +27,11 @@ import net.minecraft.resources.ResourceLocation; import net.minecraft.server.level.ServerLevel; import net.minecraft.util.Mth; +import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResult; import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.entity.player.Player; -import net.minecraft.world.item.CreativeModeTab; import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.TooltipFlag; @@ -200,7 +202,7 @@ public void appendHoverText(ItemStack stack, @Nullable Level level, List list.add(k.getTooltip(v))); GolemMaterial.collectAttributes(mats, upgrades).forEach((k, v) -> { if (Math.abs(v.getSecond()) > 1e-3) { list.add(v.getFirst().getTotalTooltip(v.getSecond())); } }); - list.add(LangData.SHIFT.get()); + list.add(MGLangData.SHIFT.get()); } else { var mats = getMaterial(stack); var upgrades = getUpgrades(stack); @@ -239,6 +241,25 @@ public void appendHoverText(ItemStack stack, @Nullable Level level, List> cb = null; + if (target instanceof DogGolemEntity dog) { + cb = e -> e.startRiding(dog); + } + if (summon(stack, level, pos, player, cb)) { + return InteractionResult.CONSUME; + } else { + return InteractionResult.FAIL; + } + } + @Override public InteractionResult onItemUseFirst(ItemStack stack, UseOnContext context) { CompoundTag root = stack.getTag(); @@ -256,10 +277,14 @@ public InteractionResult onItemUseFirst(ItemStack stack, UseOnContext context) { spawnPos = blockpos.relative(direction); } Vec3 pos = new Vec3(spawnPos.getX() + 0.5, spawnPos.getY() + 0.05, spawnPos.getZ() + 0.5); - return summon(stack, level, pos, context.getPlayer()) ? InteractionResult.CONSUME : InteractionResult.FAIL; + if (summon(stack, level, pos, context.getPlayer(), null)) { + return InteractionResult.CONSUME; + } else { + return InteractionResult.FAIL; + } } - public boolean summon(ItemStack stack, Level level, Vec3 pos, @Nullable Player player) { + public boolean summon(ItemStack stack, Level level, Vec3 pos, @Nullable Player player, @Nullable Consumer> callback) { CompoundTag root = stack.getTag(); if (root == null) return false; if (root.contains(KEY_ENTITY)) { @@ -277,6 +302,9 @@ public boolean summon(ItemStack stack, Level level, Vec3 pos, @Nullable Player p level.addFreshEntity(golem); stack.removeTagKey(KEY_ENTITY); stack.shrink(1); + if (callback != null) { + callback.accept(golem); + } } return true; } @@ -294,6 +322,9 @@ public boolean summon(ItemStack stack, Level level, Vec3 pos, @Nullable Player p if (player == null || !player.getAbilities().instabuild) { stack.shrink(1); } + if (callback != null) { + callback.accept(golem); + } } return true; } @@ -338,16 +369,14 @@ public GolemType getEntityType() { return type.get(); } - @Override - public void fillItemCategory(CreativeModeTab tab, NonNullList list) { - if (this.allowedIn(tab)) { - for (ResourceLocation rl : GolemMaterialConfig.get().getAllMaterials()) { - ItemStack stack = new ItemStack(this); - for (P part : getEntityType().values()) { - addMaterial(stack, part.toItem(), rl); - } - list.add(stack); + public void fillItemCategory(CreativeModeTabModifier tab) { + for (ResourceLocation rl : GolemMaterialConfig.get().getAllMaterials()) { + ItemStack stack = new ItemStack(this); + for (P part : getEntityType().values()) { + addMaterial(stack, part.toItem(), rl); } + tab.accept(stack); + } } diff --git a/src/main/java/dev/xkmc/modulargolems/content/item/golem/GolemPart.java b/src/main/java/dev/xkmc/modulargolems/content/item/golem/GolemPart.java index 7fd306256..700314cae 100644 --- a/src/main/java/dev/xkmc/modulargolems/content/item/golem/GolemPart.java +++ b/src/main/java/dev/xkmc/modulargolems/content/item/golem/GolemPart.java @@ -1,5 +1,6 @@ package dev.xkmc.modulargolems.content.item.golem; +import com.tterrag.registrate.util.CreativeModeTabModifier; import dev.xkmc.modulargolems.content.config.GolemMaterial; import dev.xkmc.modulargolems.content.config.GolemMaterialConfig; import dev.xkmc.modulargolems.content.config.GolemPartConfig; @@ -8,10 +9,8 @@ import dev.xkmc.modulargolems.content.core.IGolemPart; import dev.xkmc.modulargolems.content.entity.common.AbstractGolemEntity; import dev.xkmc.modulargolems.content.modifier.base.GolemModifier; -import net.minecraft.core.NonNullList; import net.minecraft.network.chat.Component; import net.minecraft.resources.ResourceLocation; -import net.minecraft.world.item.CreativeModeTab; import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.TooltipFlag; @@ -99,15 +98,13 @@ public P getPart() { return part; } - @Override - public void fillItemCategory(CreativeModeTab tab, NonNullList list) { - if (this.allowedIn(tab)) { - list.add(new ItemStack(this)); - for (ResourceLocation rl : GolemMaterialConfig.get().getAllMaterials()) { - ItemStack stack = new ItemStack(this); - list.add(setMaterial(stack, rl)); - } + public void fillItemCategory(CreativeModeTabModifier tab) { + tab.accept(new ItemStack(this)); + for (ResourceLocation rl : GolemMaterialConfig.get().getAllMaterials()) { + ItemStack stack = new ItemStack(this); + tab.accept(setMaterial(stack, rl)); } + } } diff --git a/src/main/java/dev/xkmc/modulargolems/content/item/SimpleUpgradeItem.java b/src/main/java/dev/xkmc/modulargolems/content/item/upgrade/SimpleUpgradeItem.java similarity index 92% rename from src/main/java/dev/xkmc/modulargolems/content/item/SimpleUpgradeItem.java rename to src/main/java/dev/xkmc/modulargolems/content/item/upgrade/SimpleUpgradeItem.java index 77fee0ecb..5eada591d 100644 --- a/src/main/java/dev/xkmc/modulargolems/content/item/SimpleUpgradeItem.java +++ b/src/main/java/dev/xkmc/modulargolems/content/item/upgrade/SimpleUpgradeItem.java @@ -1,4 +1,4 @@ -package dev.xkmc.modulargolems.content.item; +package dev.xkmc.modulargolems.content.item.upgrade; import dev.xkmc.modulargolems.content.modifier.base.GolemModifier; import dev.xkmc.modulargolems.content.modifier.base.ModifierInstance; diff --git a/src/main/java/dev/xkmc/modulargolems/content/item/UpgradeItem.java b/src/main/java/dev/xkmc/modulargolems/content/item/upgrade/UpgradeItem.java similarity index 79% rename from src/main/java/dev/xkmc/modulargolems/content/item/UpgradeItem.java rename to src/main/java/dev/xkmc/modulargolems/content/item/upgrade/UpgradeItem.java index a8a9261ca..7dc31551e 100644 --- a/src/main/java/dev/xkmc/modulargolems/content/item/UpgradeItem.java +++ b/src/main/java/dev/xkmc/modulargolems/content/item/upgrade/UpgradeItem.java @@ -1,5 +1,6 @@ -package dev.xkmc.modulargolems.content.item; +package dev.xkmc.modulargolems.content.item.upgrade; +import dev.xkmc.modulargolems.content.core.GolemType; import dev.xkmc.modulargolems.content.modifier.base.ModifierInstance; import net.minecraft.network.chat.Component; import net.minecraft.world.item.Item; @@ -37,4 +38,13 @@ public void appendHoverText(ItemStack stack, @Nullable Level level, List type) { + boolean fits = false; + for (var e : get()) { + fits |= e.mod().fitsOn(type); + } + return fits; + } + } diff --git a/src/main/java/dev/xkmc/modulargolems/compat/materials/botania/package-info.java b/src/main/java/dev/xkmc/modulargolems/content/item/upgrade/package-info.java similarity index 75% rename from src/main/java/dev/xkmc/modulargolems/compat/materials/botania/package-info.java rename to src/main/java/dev/xkmc/modulargolems/content/item/upgrade/package-info.java index 529f5f344..9cb496afb 100644 --- a/src/main/java/dev/xkmc/modulargolems/compat/materials/botania/package-info.java +++ b/src/main/java/dev/xkmc/modulargolems/content/item/upgrade/package-info.java @@ -1,7 +1,7 @@ @ParametersAreNonnullByDefault @MethodsReturnNonnullByDefault -package dev.xkmc.modulargolems.compat.materials.botania; +package dev.xkmc.modulargolems.content.item.upgrade; import net.minecraft.MethodsReturnNonnullByDefault; diff --git a/src/main/java/dev/xkmc/modulargolems/content/item/CommandWandItem.java b/src/main/java/dev/xkmc/modulargolems/content/item/wand/CommandWandItem.java similarity index 74% rename from src/main/java/dev/xkmc/modulargolems/content/item/CommandWandItem.java rename to src/main/java/dev/xkmc/modulargolems/content/item/wand/CommandWandItem.java index d0f265e00..84edaae18 100644 --- a/src/main/java/dev/xkmc/modulargolems/content/item/CommandWandItem.java +++ b/src/main/java/dev/xkmc/modulargolems/content/item/wand/CommandWandItem.java @@ -1,12 +1,14 @@ -package dev.xkmc.modulargolems.content.item; +package dev.xkmc.modulargolems.content.item.wand; -import dev.xkmc.l2library.util.code.Wrappers; +import dev.xkmc.l2serial.util.Wrappers; import dev.xkmc.modulargolems.content.entity.common.AbstractGolemEntity; import dev.xkmc.modulargolems.content.entity.common.mode.GolemMode; import dev.xkmc.modulargolems.content.entity.common.mode.GolemModes; +import dev.xkmc.modulargolems.content.entity.dog.DogGolemEntity; import dev.xkmc.modulargolems.content.entity.humanoid.HumanoidGolemEntity; +import dev.xkmc.modulargolems.content.entity.metalgolem.MetalGolemEntity; import dev.xkmc.modulargolems.content.menu.EquipmentsMenuPvd; -import dev.xkmc.modulargolems.init.data.LangData; +import dev.xkmc.modulargolems.init.data.MGLangData; import net.minecraft.core.BlockPos; import net.minecraft.network.chat.Component; import net.minecraft.server.level.ServerPlayer; @@ -24,23 +26,20 @@ import java.util.List; public class CommandWandItem extends Item implements WandItem { - public CommandWandItem(Properties props) { super(props); } - @Override public InteractionResult interactLivingEntity(ItemStack stack, Player user, LivingEntity target, InteractionHand hand) { if (!(target instanceof AbstractGolemEntity golem)) return InteractionResult.PASS; - return command(target.getLevel(), user, Wrappers.cast(golem)) ? InteractionResult.SUCCESS : InteractionResult.FAIL; + return command(target.level(), user, Wrappers.cast(golem)) ? InteractionResult.SUCCESS : InteractionResult.FAIL; } - private static boolean command(Level level, Player user, AbstractGolemEntity golem) { if (!golem.isAlliedTo(user)) return false; if (level.isClientSide()) return true; if (user.isShiftKeyDown()) { - if (golem instanceof HumanoidGolemEntity e) { - new EquipmentsMenuPvd(e).open((ServerPlayer) user); + if (golem instanceof HumanoidGolemEntity || golem instanceof MetalGolemEntity) { + new EquipmentsMenuPvd(golem).open((ServerPlayer) user); return true; } return false; @@ -52,7 +51,7 @@ private static boolean command(Level level, Player user, AbstractGolemEntity true); + var list = target.level().getEntities(EntityTypeTest.forClass(AbstractGolemEntity.class), attacker.getBoundingBox().inflate(20), e -> true); for (var e : list) { if (e.getOwner() == attacker) { e.setTarget(target); @@ -63,7 +62,7 @@ public boolean hurtEnemy(ItemStack stack, LivingEntity target, LivingEntity atta @Override public void appendHoverText(ItemStack pStack, @Nullable Level pLevel, List list, TooltipFlag pIsAdvanced) { - list.add(LangData.WAND_COMMAND.get()); + list.add(MGLangData.WAND_COMMAND.get()); } diff --git a/src/main/java/dev/xkmc/modulargolems/content/item/DispenseWand.java b/src/main/java/dev/xkmc/modulargolems/content/item/wand/DispenseWand.java similarity index 77% rename from src/main/java/dev/xkmc/modulargolems/content/item/DispenseWand.java rename to src/main/java/dev/xkmc/modulargolems/content/item/wand/DispenseWand.java index 7679eff1a..15247c3c0 100644 --- a/src/main/java/dev/xkmc/modulargolems/content/item/DispenseWand.java +++ b/src/main/java/dev/xkmc/modulargolems/content/item/wand/DispenseWand.java @@ -1,9 +1,11 @@ -package dev.xkmc.modulargolems.content.item; +package dev.xkmc.modulargolems.content.item.wand; import dev.xkmc.l2library.util.raytrace.RayTraceUtil; import dev.xkmc.modulargolems.content.item.golem.GolemHolder; -import dev.xkmc.modulargolems.init.data.LangData; +import dev.xkmc.modulargolems.init.advancement.GolemTriggers; +import dev.xkmc.modulargolems.init.data.MGLangData; import net.minecraft.network.chat.Component; +import net.minecraft.server.level.ServerPlayer; import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResultHolder; import net.minecraft.world.entity.player.Player; @@ -45,19 +47,26 @@ public InteractionResultHolder use(Level level, Player user, Interact } } Vec3 finalPos = pos; + int[] counter = new int[]{0}; iter(user, golem -> { if (golem.getItem() instanceof GolemHolder holder) { - return holder.summon(golem, level, finalPos, user) && !all; + if (holder.summon(golem, level, finalPos, user,null)) { + counter[0]++; + return !all; + } } return false; }); + if (counter[0] > 1 && user instanceof ServerPlayer sp) { + GolemTriggers.MAS_SUMMON.trigger(sp, counter[0]); + } } return InteractionResultHolder.success(stack); } @Override public void appendHoverText(ItemStack pStack, @Nullable Level pLevel, List list, TooltipFlag pIsAdvanced) { - list.add(LangData.WAND_SUMMON.get()); + list.add(MGLangData.WAND_SUMMON.get()); } } diff --git a/src/main/java/dev/xkmc/modulargolems/content/item/RetrievalWandItem.java b/src/main/java/dev/xkmc/modulargolems/content/item/wand/RetrievalWandItem.java similarity index 88% rename from src/main/java/dev/xkmc/modulargolems/content/item/RetrievalWandItem.java rename to src/main/java/dev/xkmc/modulargolems/content/item/wand/RetrievalWandItem.java index bef1620e0..f99fe7815 100644 --- a/src/main/java/dev/xkmc/modulargolems/content/item/RetrievalWandItem.java +++ b/src/main/java/dev/xkmc/modulargolems/content/item/wand/RetrievalWandItem.java @@ -1,9 +1,9 @@ -package dev.xkmc.modulargolems.content.item; +package dev.xkmc.modulargolems.content.item.wand; -import dev.xkmc.l2library.util.code.Wrappers; import dev.xkmc.l2library.util.raytrace.RayTraceUtil; +import dev.xkmc.l2serial.util.Wrappers; import dev.xkmc.modulargolems.content.entity.common.AbstractGolemEntity; -import dev.xkmc.modulargolems.init.data.LangData; +import dev.xkmc.modulargolems.init.data.MGLangData; import net.minecraft.network.chat.Component; import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResult; @@ -49,7 +49,7 @@ public InteractionResultHolder use(Level level, Player user, Interact @Override public InteractionResult interactLivingEntity(ItemStack stack, Player user, LivingEntity target, InteractionHand hand) { if (!(target instanceof AbstractGolemEntity golem)) return InteractionResult.PASS; - return attemptRetrieve(target.getLevel(), user, Wrappers.cast(golem)) ? InteractionResult.SUCCESS : InteractionResult.FAIL; + return attemptRetrieve(target.level(), user, Wrappers.cast(golem)) ? InteractionResult.SUCCESS : InteractionResult.FAIL; } private static boolean attemptRetrieve(Level level, Player user, AbstractGolemEntity golem) { @@ -61,7 +61,7 @@ private static boolean attemptRetrieve(Level level, Player user, AbstractGolemEn @Override public void appendHoverText(ItemStack pStack, @Nullable Level pLevel, List list, TooltipFlag pIsAdvanced) { - list.add(LangData.WAND_RETRIEVE.get()); + list.add(MGLangData.WAND_RETRIEVE.get()); } diff --git a/src/main/java/dev/xkmc/modulargolems/content/item/wand/RiderWandItem.java b/src/main/java/dev/xkmc/modulargolems/content/item/wand/RiderWandItem.java new file mode 100644 index 000000000..e32e33678 --- /dev/null +++ b/src/main/java/dev/xkmc/modulargolems/content/item/wand/RiderWandItem.java @@ -0,0 +1,44 @@ +package dev.xkmc.modulargolems.content.item.wand; + +import dev.xkmc.l2serial.util.Wrappers; +import dev.xkmc.modulargolems.content.entity.common.AbstractGolemEntity; +import dev.xkmc.modulargolems.content.entity.dog.DogGolemEntity; +import dev.xkmc.modulargolems.init.data.MGLangData; +import net.minecraft.network.chat.Component; +import net.minecraft.world.InteractionHand; +import net.minecraft.world.InteractionResult; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.TooltipFlag; +import net.minecraft.world.level.Level; +import org.jetbrains.annotations.Nullable; + +import java.util.List; + +public class RiderWandItem extends Item implements WandItem { + public RiderWandItem(Properties props) { + super(props); + } + + public InteractionResult interactLivingEntity(ItemStack stack, Player user, LivingEntity target, InteractionHand hand) { + if (!(target instanceof AbstractGolemEntity golem)) return InteractionResult.PASS; + return ride(target.level(), user, Wrappers.cast(golem)) ? InteractionResult.SUCCESS : InteractionResult.FAIL; + } + + private static boolean ride(Level level, Player user, AbstractGolemEntity golem) { + if (!golem.isAlliedTo(user) && !(golem.getControllingPassenger() instanceof Player)) return false; + if (level.isClientSide()) return true; + if (golem instanceof DogGolemEntity e) { + user.startRiding(e, false); + return true; + } + return true; + } + + public void appendHoverText(ItemStack pStack, @Nullable Level pLevel, List list, TooltipFlag pIsAdvanced) { + list.add(MGLangData.WAND_RIDER.get()); + } + +} \ No newline at end of file diff --git a/src/main/java/dev/xkmc/modulargolems/content/item/wand/WandItem.java b/src/main/java/dev/xkmc/modulargolems/content/item/wand/WandItem.java new file mode 100644 index 000000000..a9528c921 --- /dev/null +++ b/src/main/java/dev/xkmc/modulargolems/content/item/wand/WandItem.java @@ -0,0 +1,4 @@ +package dev.xkmc.modulargolems.content.item.wand; + +public interface WandItem { +} diff --git a/src/main/java/dev/xkmc/modulargolems/content/item/package-info.java b/src/main/java/dev/xkmc/modulargolems/content/item/wand/package-info.java similarity index 77% rename from src/main/java/dev/xkmc/modulargolems/content/item/package-info.java rename to src/main/java/dev/xkmc/modulargolems/content/item/wand/package-info.java index 861c976a5..07febfafe 100644 --- a/src/main/java/dev/xkmc/modulargolems/content/item/package-info.java +++ b/src/main/java/dev/xkmc/modulargolems/content/item/wand/package-info.java @@ -1,7 +1,7 @@ @ParametersAreNonnullByDefault @MethodsReturnNonnullByDefault -package dev.xkmc.modulargolems.content.item; +package dev.xkmc.modulargolems.content.item.wand; import net.minecraft.MethodsReturnNonnullByDefault; diff --git a/src/main/java/dev/xkmc/modulargolems/content/menu/EquipmentsContainer.java b/src/main/java/dev/xkmc/modulargolems/content/menu/EquipmentsContainer.java index e09c1d764..912adb39a 100644 --- a/src/main/java/dev/xkmc/modulargolems/content/menu/EquipmentsContainer.java +++ b/src/main/java/dev/xkmc/modulargolems/content/menu/EquipmentsContainer.java @@ -1,6 +1,6 @@ package dev.xkmc.modulargolems.content.menu; -import dev.xkmc.l2library.base.menu.BaseContainerMenu; +import dev.xkmc.l2library.base.menu.base.BaseContainerMenu; import net.minecraft.world.item.ItemStack; public class EquipmentsContainer extends BaseContainerMenu.BaseContainer { diff --git a/src/main/java/dev/xkmc/modulargolems/content/menu/EquipmentsMenu.java b/src/main/java/dev/xkmc/modulargolems/content/menu/EquipmentsMenu.java index f3a51ebba..0a64edaea 100644 --- a/src/main/java/dev/xkmc/modulargolems/content/menu/EquipmentsMenu.java +++ b/src/main/java/dev/xkmc/modulargolems/content/menu/EquipmentsMenu.java @@ -1,10 +1,12 @@ package dev.xkmc.modulargolems.content.menu; - -import dev.xkmc.l2library.base.menu.BaseContainerMenu; -import dev.xkmc.l2library.base.menu.PredSlot; -import dev.xkmc.l2library.base.menu.SpriteManager; +import dev.xkmc.l2library.base.menu.base.BaseContainerMenu; +import dev.xkmc.l2library.base.menu.base.PredSlot; +import dev.xkmc.l2library.base.menu.base.SpriteManager; import dev.xkmc.l2library.util.Proxy; +import dev.xkmc.modulargolems.content.entity.common.AbstractGolemEntity; import dev.xkmc.modulargolems.content.entity.humanoid.HumanoidGolemEntity; +import dev.xkmc.modulargolems.content.entity.metalgolem.MetalGolemEntity; +import dev.xkmc.modulargolems.content.item.equipments.MetalGolemArmorItem; import dev.xkmc.modulargolems.content.item.golem.GolemHolder; import dev.xkmc.modulargolems.events.event.GolemEquipEvent; import dev.xkmc.modulargolems.init.ModularGolems; @@ -16,12 +18,11 @@ import net.minecraft.world.inventory.MenuType; import net.minecraft.world.item.ItemStack; import net.minecraftforge.common.MinecraftForge; - import javax.annotation.Nullable; - public class EquipmentsMenu extends BaseContainerMenu { - + public AbstractGolemEntity golem; public static EquipmentsMenu fromNetwork(MenuType type, int wid, Inventory plInv, FriendlyByteBuf buf) { + assert Proxy.getClientWorld() != null; Entity entity = Proxy.getClientWorld().getEntity(buf.readInt()); return new EquipmentsMenu(type, wid, plInv, entity instanceof HumanoidGolemEntity golem ? golem : null); } @@ -29,54 +30,39 @@ public static EquipmentsMenu fromNetwork(MenuType type, int wid, public static EquipmentSlot[] SLOTS = {EquipmentSlot.MAINHAND, EquipmentSlot.OFFHAND, EquipmentSlot.HEAD, EquipmentSlot.CHEST, EquipmentSlot.LEGS, EquipmentSlot.FEET}; public static final SpriteManager MANAGER = new SpriteManager(ModularGolems.MODID, "equipments"); - - @Nullable - protected final HumanoidGolemEntity golem; - - protected EquipmentsMenu(MenuType type, int wid, Inventory plInv, @Nullable HumanoidGolemEntity golem) { + protected EquipmentsMenu(MenuType type, int wid, Inventory plInv, @Nullable AbstractGolemEntity golem) { super(type, wid, plInv, MANAGER, EquipmentsContainer::new, false); this.golem = golem; - addSlot("hand", (i, e) -> isValid(SLOTS[i], e), (i, e) -> { - }); + addSlot("hand", (i, e) -> isValid(SLOTS[i], e)); addSlot("armor", (i, e) -> isValid(SLOTS[i + 2], e), (i, e) -> { });//TODO remove in 1.19.4 } private boolean isValid(EquipmentSlot slot, ItemStack stack) { - if (golem == null || !stillValid(inventory.player)) { - return false; - } - if (!stack.getItem().canFitInsideContainerItems()) return false; - if (stack.getItem() instanceof GolemHolder) return false; - GolemEquipEvent event = new GolemEquipEvent(golem, stack); - MinecraftForge.EVENT_BUS.post(event); - return event.canEquip() && event.getSlot() == slot; + return getSlotForItem(stack) == slot; } @Override public boolean stillValid(Player player) { - return golem != null && !golem.isRemoved(); + return golem != null && !golem.isRemoved(); } @Override - protected PredSlot getAsPredSlot(String name, int i, int j) { + public PredSlot getAsPredSlot(String name, int i, int j) { return super.getAsPredSlot(name, i, j); } @Override public ItemStack quickMoveStack(Player pl, int id) { - if (golem != null) { + if (golem !=null) { ItemStack stack = this.slots.get(id).getItem(); if (id >= 36) { this.moveItemStackTo(stack, 0, 36, true); } else { - GolemEquipEvent event = new GolemEquipEvent(golem, stack); - MinecraftForge.EVENT_BUS.post(event); - if (event.canEquip()) { - for (int i = 0; i < 6; i++) { - if (SLOTS[i] == event.getSlot()) { - this.moveItemStackTo(stack, 36 + i, 37 + i, false); - } + EquipmentSlot es = getSlotForItem(stack); + for (int i = 0; i < 6; i++) { + if (SLOTS[i] == es) { + this.moveItemStackTo(stack, 36 + i, 37 + i, false); } } } @@ -84,4 +70,29 @@ public ItemStack quickMoveStack(Player pl, int id) { } return ItemStack.EMPTY; } + @Nullable + public EquipmentSlot getSlotForItem(ItemStack stack) { + if (!stillValid(inventory.player) || golem == null) { + return null; + } + if (!stack.getItem().canFitInsideContainerItems()) return null; + if (stack.getItem() instanceof GolemHolder) return null; + if (golem instanceof HumanoidGolemEntity humanoidGolem) { + GolemEquipEvent event = new GolemEquipEvent(humanoidGolem, stack); + MinecraftForge.EVENT_BUS.post(event); + if(event.canEquip()) { + return event.getSlot(); + }else { + return null; + } + } + if(golem instanceof MetalGolemEntity){ + if(stack.getItem() instanceof MetalGolemArmorItem mgai) { + return mgai.getSlot(); + }else { + return null; + } + } + return null; + } } diff --git a/src/main/java/dev/xkmc/modulargolems/content/menu/EquipmentsMenuPvd.java b/src/main/java/dev/xkmc/modulargolems/content/menu/EquipmentsMenuPvd.java index 3b524c3f5..b64566bec 100644 --- a/src/main/java/dev/xkmc/modulargolems/content/menu/EquipmentsMenuPvd.java +++ b/src/main/java/dev/xkmc/modulargolems/content/menu/EquipmentsMenuPvd.java @@ -1,18 +1,20 @@ package dev.xkmc.modulargolems.content.menu; +import dev.xkmc.modulargolems.content.entity.common.AbstractGolemEntity; import dev.xkmc.modulargolems.content.entity.humanoid.HumanoidGolemEntity; import dev.xkmc.modulargolems.init.registrate.GolemMiscs; import net.minecraft.network.FriendlyByteBuf; import net.minecraft.network.chat.Component; import net.minecraft.server.level.ServerPlayer; import net.minecraft.world.MenuProvider; +import net.minecraft.world.entity.animal.AbstractGolem; import net.minecraft.world.entity.player.Inventory; import net.minecraft.world.entity.player.Player; import net.minecraft.world.inventory.AbstractContainerMenu; import net.minecraftforge.network.NetworkHooks; import org.jetbrains.annotations.Nullable; -public record EquipmentsMenuPvd(HumanoidGolemEntity e) implements MenuProvider { +public record EquipmentsMenuPvd(AbstractGolemEntity e) implements MenuProvider { @Override public Component getDisplayName() { diff --git a/src/main/java/dev/xkmc/modulargolems/content/menu/EquipmentsScreen.java b/src/main/java/dev/xkmc/modulargolems/content/menu/EquipmentsScreen.java index 86c1af0e6..4bf94f245 100644 --- a/src/main/java/dev/xkmc/modulargolems/content/menu/EquipmentsScreen.java +++ b/src/main/java/dev/xkmc/modulargolems/content/menu/EquipmentsScreen.java @@ -1,7 +1,7 @@ package dev.xkmc.modulargolems.content.menu; -import com.mojang.blaze3d.vertex.PoseStack; -import dev.xkmc.l2library.base.menu.BaseContainerScreen; +import dev.xkmc.l2library.base.menu.base.BaseContainerScreen; +import net.minecraft.client.gui.GuiGraphics; import net.minecraft.network.chat.Component; import net.minecraft.world.entity.player.Inventory; @@ -12,19 +12,19 @@ public EquipmentsScreen(EquipmentsMenu cont, Inventory plInv, Component title) { } @Override - protected void renderBg(PoseStack pose, float pTick, int mx, int my) { - var sr = menu.sprite.getRenderer(this); - sr.start(pose); + protected void renderBg(GuiGraphics g, float pTick, int mx, int my) { + var sr = menu.sprite.get().getRenderer(this); + sr.start(g); if (menu.getAsPredSlot("hand", 0, 1).getItem().isEmpty()) - sr.draw(pose, "hand", "altas_shield", 1, 19); + sr.draw(g, "hand", "altas_shield", 1, 19); if (menu.getAsPredSlot("armor", 0, 0).getItem().isEmpty()) - sr.draw(pose, "armor", "altas_helmet", 1, 1); + sr.draw(g, "armor", "altas_helmet", 1, 1); if (menu.getAsPredSlot("armor", 0, 1).getItem().isEmpty()) - sr.draw(pose, "armor", "altas_chestplate", 1, 1 + 18); + sr.draw(g, "armor", "altas_chestplate", 1, 1 + 18); if (menu.getAsPredSlot("armor", 0, 2).getItem().isEmpty()) - sr.draw(pose, "armor", "altas_leggings", 1, 1 + 18 * 2); + sr.draw(g, "armor", "altas_leggings", 1, 1 + 18 * 2); if (menu.getAsPredSlot("armor", 0, 3).getItem().isEmpty()) - sr.draw(pose, "armor", "altas_boots", 1, 1 + 18 * 3); + sr.draw(g, "armor", "altas_boots", 1, 1 + 18 * 3); } } diff --git a/src/main/java/dev/xkmc/modulargolems/content/modifier/base/AttributeGolemModifier.java b/src/main/java/dev/xkmc/modulargolems/content/modifier/base/AttributeGolemModifier.java index 58da62485..0f44bac1c 100644 --- a/src/main/java/dev/xkmc/modulargolems/content/modifier/base/AttributeGolemModifier.java +++ b/src/main/java/dev/xkmc/modulargolems/content/modifier/base/AttributeGolemModifier.java @@ -2,7 +2,6 @@ import dev.xkmc.modulargolems.content.core.GolemStatType; import dev.xkmc.modulargolems.content.core.StatFilterType; -import dev.xkmc.modulargolems.init.data.ModConfig; import net.minecraft.network.chat.MutableComponent; import java.util.ArrayList; @@ -17,8 +16,7 @@ public class AttributeGolemModifier extends GolemModifier { public record AttrEntry(Supplier type, double value) { public double getValue(int level) { - return ModConfig.COMMON.exponentialStat.get() && type.get().kind == GolemStatType.Kind.PERCENT ? - Math.pow(1 + value, level) - 1 : value * level; + return value * level; } } diff --git a/src/main/java/dev/xkmc/modulargolems/content/modifier/base/GolemModifier.java b/src/main/java/dev/xkmc/modulargolems/content/modifier/base/GolemModifier.java index c61c9851b..7e6218449 100644 --- a/src/main/java/dev/xkmc/modulargolems/content/modifier/base/GolemModifier.java +++ b/src/main/java/dev/xkmc/modulargolems/content/modifier/base/GolemModifier.java @@ -2,10 +2,11 @@ import dev.xkmc.l2library.base.NamedEntry; import dev.xkmc.modulargolems.content.config.GolemPartConfig; +import dev.xkmc.modulargolems.content.core.GolemType; import dev.xkmc.modulargolems.content.core.StatFilterType; import dev.xkmc.modulargolems.content.entity.common.AbstractGolemEntity; import dev.xkmc.modulargolems.content.entity.common.GolemFlags; -import dev.xkmc.modulargolems.content.item.UpgradeItem; +import dev.xkmc.modulargolems.content.item.upgrade.UpgradeItem; import dev.xkmc.modulargolems.content.item.golem.GolemPart; import dev.xkmc.modulargolems.init.registrate.GolemTypes; import net.minecraft.ChatFormatting; @@ -136,4 +137,8 @@ public boolean canExistOn(GolemPart part) { public void onSetTarget(AbstractGolemEntity golem, Mob mob, int level) { } + public boolean fitsOn(GolemType type) { + return true; + } + } diff --git a/src/main/java/dev/xkmc/modulargolems/content/modifier/base/PotionAttackModifier.java b/src/main/java/dev/xkmc/modulargolems/content/modifier/base/PotionAttackModifier.java index 0e2f58e75..5c1cfc27f 100644 --- a/src/main/java/dev/xkmc/modulargolems/content/modifier/base/PotionAttackModifier.java +++ b/src/main/java/dev/xkmc/modulargolems/content/modifier/base/PotionAttackModifier.java @@ -3,7 +3,7 @@ import dev.xkmc.l2library.base.effects.EffectUtil; import dev.xkmc.modulargolems.content.core.StatFilterType; import dev.xkmc.modulargolems.content.entity.common.AbstractGolemEntity; -import dev.xkmc.modulargolems.init.data.LangData; +import dev.xkmc.modulargolems.init.data.MGLangData; import net.minecraft.ChatFormatting; import net.minecraft.network.chat.Component; import net.minecraft.network.chat.MutableComponent; @@ -38,7 +38,7 @@ public void onHurt(AbstractGolemEntity entity, LivingHurtEvent event, int } private void applyPotion(AbstractGolemEntity self, LivingEntity target, int level) { - if (!target.level.isClientSide()) { + if (!target.level().isClientSide()) { EffectUtil.addEffect(target, func.apply(level), EffectUtil.AddReason.NONE, self); } } @@ -57,7 +57,7 @@ public List getDetail(int v) { MobEffectUtil.formatDuration(ins, 1)); } lang = lang.withStyle(mobeffect.getCategory().getTooltipFormatting()); - return List.of(LangData.POTION_ATTACK.get(lang).withStyle(ChatFormatting.GREEN)); + return List.of(MGLangData.POTION_ATTACK.get(lang).withStyle(ChatFormatting.GREEN)); } } diff --git a/src/main/java/dev/xkmc/modulargolems/content/modifier/base/PotionDefenseModifier.java b/src/main/java/dev/xkmc/modulargolems/content/modifier/base/PotionDefenseModifier.java index 63996df29..829054227 100644 --- a/src/main/java/dev/xkmc/modulargolems/content/modifier/base/PotionDefenseModifier.java +++ b/src/main/java/dev/xkmc/modulargolems/content/modifier/base/PotionDefenseModifier.java @@ -3,7 +3,7 @@ import dev.xkmc.l2library.base.effects.EffectUtil; import dev.xkmc.modulargolems.content.core.StatFilterType; import dev.xkmc.modulargolems.content.entity.common.AbstractGolemEntity; -import dev.xkmc.modulargolems.init.data.LangData; +import dev.xkmc.modulargolems.init.data.MGLangData; import net.minecraft.ChatFormatting; import net.minecraft.network.chat.Component; import net.minecraft.network.chat.MutableComponent; @@ -23,7 +23,7 @@ public PotionDefenseModifier(int maxLevel, Supplier effect) { } private MobEffectInstance getIns(int lv) { - return new MobEffectInstance(effect.get(), 40, lv, false, false); + return new MobEffectInstance(effect.get(), 40, lv - 1, false, false); } @Override @@ -41,6 +41,6 @@ public List getDetail(int v) { Component.translatable("potion.potency." + ins.getAmplifier())); } lang = lang.withStyle(mobeffect.getCategory().getTooltipFormatting()); - return List.of(LangData.POTION_DEFENSE.get(lang).withStyle(ChatFormatting.GREEN)); + return List.of(MGLangData.POTION_DEFENSE.get(lang).withStyle(ChatFormatting.GREEN)); } } diff --git a/src/main/java/dev/xkmc/modulargolems/content/modifier/base/TargetBonusModifier.java b/src/main/java/dev/xkmc/modulargolems/content/modifier/base/TargetBonusModifier.java index 1cc0f6094..26c72f84b 100644 --- a/src/main/java/dev/xkmc/modulargolems/content/modifier/base/TargetBonusModifier.java +++ b/src/main/java/dev/xkmc/modulargolems/content/modifier/base/TargetBonusModifier.java @@ -2,7 +2,7 @@ import dev.xkmc.modulargolems.content.core.StatFilterType; import dev.xkmc.modulargolems.content.entity.common.AbstractGolemEntity; -import dev.xkmc.modulargolems.init.data.ModConfig; +import dev.xkmc.modulargolems.init.data.MGConfig; import net.minecraft.ChatFormatting; import net.minecraft.network.chat.Component; import net.minecraft.network.chat.MutableComponent; @@ -24,12 +24,12 @@ public TargetBonusModifier(Predicate pred) { @Override public void onHurtTarget(AbstractGolemEntity entity, LivingHurtEvent event, int level) { if (pred.test(event.getEntity())) { - event.setAmount((float) (event.getAmount() * (1 + level * ModConfig.COMMON.targetDamageBonus.get()))); + event.setAmount((float) (event.getAmount() * (1 + level * MGConfig.COMMON.targetDamageBonus.get()))); } } public List getDetail(int v) { - int perc = (int) (ModConfig.COMMON.targetDamageBonus.get() * 100 * v); + int perc = (int) (MGConfig.COMMON.targetDamageBonus.get() * 100 * v); return List.of(Component.translatable(getDescriptionId() + ".desc", perc).withStyle(ChatFormatting.GREEN)); } } diff --git a/src/main/java/dev/xkmc/modulargolems/content/modifier/common/BellModifier.java b/src/main/java/dev/xkmc/modulargolems/content/modifier/common/BellModifier.java index 8d5cb0e97..2bc25a82d 100644 --- a/src/main/java/dev/xkmc/modulargolems/content/modifier/common/BellModifier.java +++ b/src/main/java/dev/xkmc/modulargolems/content/modifier/common/BellModifier.java @@ -20,7 +20,7 @@ public BellModifier() { @Override public void onSetTarget(AbstractGolemEntity golem, Mob mob, int level) { var aabb = golem.getBoundingBox().inflate(48); - var list = golem.level.getEntitiesOfClass(Mob.class, aabb, golem::canAttack); + var list = golem.level().getEntitiesOfClass(Mob.class, aabb, golem::canAttack); boolean sound = false; for (var e : list) { if (e instanceof Enemy && !(e instanceof Creeper) && e.canAttack(golem)) { diff --git a/src/main/java/dev/xkmc/modulargolems/content/modifier/common/ThornModifier.java b/src/main/java/dev/xkmc/modulargolems/content/modifier/common/ThornModifier.java index 3abd1d161..2aebc75ee 100644 --- a/src/main/java/dev/xkmc/modulargolems/content/modifier/common/ThornModifier.java +++ b/src/main/java/dev/xkmc/modulargolems/content/modifier/common/ThornModifier.java @@ -1,14 +1,15 @@ package dev.xkmc.modulargolems.content.modifier.common; +import dev.xkmc.l2damagetracker.init.data.L2DamageTypes; import dev.xkmc.modulargolems.content.core.StatFilterType; import dev.xkmc.modulargolems.content.entity.common.AbstractGolemEntity; import dev.xkmc.modulargolems.content.modifier.base.GolemModifier; -import dev.xkmc.modulargolems.init.data.ModConfig; +import dev.xkmc.modulargolems.init.data.MGConfig; import net.minecraft.ChatFormatting; import net.minecraft.network.chat.Component; import net.minecraft.network.chat.MutableComponent; import net.minecraft.world.damagesource.DamageSource; -import net.minecraft.world.damagesource.EntityDamageSource; +import net.minecraft.world.damagesource.DamageTypes; import net.minecraft.world.entity.LivingEntity; import net.minecraftforge.event.entity.living.LivingHurtEvent; @@ -17,7 +18,7 @@ public class ThornModifier extends GolemModifier { private static float getPercent() { - return (float) (double) ModConfig.COMMON.thorn.get(); + return (float) (double) MGConfig.COMMON.thorn.get(); } public ThornModifier() { @@ -30,11 +31,11 @@ public void onHurt(AbstractGolemEntity entity, LivingHurtEvent event, int return; } DamageSource source = event.getSource(); - if (source.isMagic() || source instanceof EntityDamageSource eds && eds.isThorns()) { + if (source.is(L2DamageTypes.MAGIC) || source.is(DamageTypes.THORNS)) { return; } if (source.getDirectEntity() instanceof LivingEntity living && living.isAlive()) { - living.hurt(DamageSource.thorns(entity), event.getAmount() * getPercent() * level); + living.hurt(entity.level().damageSources().thorns(entity), event.getAmount() * getPercent() * level); } } diff --git a/src/main/java/dev/xkmc/modulargolems/content/modifier/immunes/DamageCapModifier.java b/src/main/java/dev/xkmc/modulargolems/content/modifier/immunes/DamageCapModifier.java index 6d581e221..51d17b655 100644 --- a/src/main/java/dev/xkmc/modulargolems/content/modifier/immunes/DamageCapModifier.java +++ b/src/main/java/dev/xkmc/modulargolems/content/modifier/immunes/DamageCapModifier.java @@ -3,10 +3,11 @@ import dev.xkmc.modulargolems.content.core.StatFilterType; import dev.xkmc.modulargolems.content.entity.common.AbstractGolemEntity; import dev.xkmc.modulargolems.content.modifier.base.GolemModifier; -import dev.xkmc.modulargolems.init.data.ModConfig; +import dev.xkmc.modulargolems.init.data.MGConfig; import net.minecraft.ChatFormatting; import net.minecraft.network.chat.Component; import net.minecraft.network.chat.MutableComponent; +import net.minecraft.tags.DamageTypeTags; import net.minecraft.world.entity.EntityEvent; import net.minecraftforge.event.entity.living.LivingHurtEvent; @@ -20,20 +21,20 @@ public DamageCapModifier() { @Override public void onHurt(AbstractGolemEntity entity, LivingHurtEvent event, int level) { - if (event.getSource().isBypassInvul() || event.getSource().isBypassMagic()) { + if (event.getSource().is(DamageTypeTags.BYPASSES_INVULNERABILITY) || event.getSource().is(DamageTypeTags.BYPASSES_EFFECTS)) { return; } - float factor = (float) Math.max(0, (2 - level * 0.2) * ModConfig.COMMON.damageCap.get()); + float factor = (float) Math.max(0, (2 - level * 0.2) * MGConfig.COMMON.damageCap.get()); if (event.getAmount() > factor * entity.getMaxHealth()) { event.setAmount(factor * entity.getMaxHealth()); - entity.level.broadcastEntityEvent(entity, EntityEvent.ATTACK_BLOCKED); + entity.level().broadcastEntityEvent(entity, EntityEvent.ATTACK_BLOCKED); } } @Override public List getDetail(int level) { - float factor = (float) Math.max(0, (2 - level * 0.2) * ModConfig.COMMON.damageCap.get()); + float factor = (float) Math.max(0, (2 - level * 0.2) * MGConfig.COMMON.damageCap.get()); int perc = Math.round(100 * factor); return List.of(Component.translatable(getDescriptionId() + ".desc", perc).withStyle(ChatFormatting.GREEN)); } diff --git a/src/main/java/dev/xkmc/modulargolems/content/modifier/immunes/ExplosionResistanceModifier.java b/src/main/java/dev/xkmc/modulargolems/content/modifier/immunes/ExplosionResistanceModifier.java index 270c96917..a331f6766 100644 --- a/src/main/java/dev/xkmc/modulargolems/content/modifier/immunes/ExplosionResistanceModifier.java +++ b/src/main/java/dev/xkmc/modulargolems/content/modifier/immunes/ExplosionResistanceModifier.java @@ -3,10 +3,11 @@ import dev.xkmc.modulargolems.content.core.StatFilterType; import dev.xkmc.modulargolems.content.entity.common.AbstractGolemEntity; import dev.xkmc.modulargolems.content.modifier.base.GolemModifier; -import dev.xkmc.modulargolems.init.data.ModConfig; +import dev.xkmc.modulargolems.init.data.MGConfig; import net.minecraft.ChatFormatting; import net.minecraft.network.chat.Component; import net.minecraft.network.chat.MutableComponent; +import net.minecraft.tags.DamageTypeTags; import net.minecraftforge.event.entity.living.LivingHurtEvent; import java.util.List; @@ -19,15 +20,15 @@ public ExplosionResistanceModifier() { @Override public void onHurt(AbstractGolemEntity entity, LivingHurtEvent event, int level) { - float factor = (float) Math.max(0, 1 - level * ModConfig.COMMON.explosionResistance.get()); - if (!event.getSource().isBypassInvul() && event.getSource().isExplosion()) { + float factor = (float) Math.max(0, 1 - level * MGConfig.COMMON.explosionResistance.get()); + if (!event.getSource().is(DamageTypeTags.BYPASSES_INVULNERABILITY) && event.getSource().is(DamageTypeTags.IS_EXPLOSION)) { event.setAmount(event.getAmount() * factor); } } @Override public List getDetail(int level) { - float factor = (float) Math.max(0, 1 - level * ModConfig.COMMON.explosionResistance.get()); + float factor = (float) Math.max(0, 1 - level * MGConfig.COMMON.explosionResistance.get()); int perc = Math.round(100 * factor); return List.of(Component.translatable(getDescriptionId() + ".desc", perc).withStyle(ChatFormatting.GREEN)); } diff --git a/src/main/java/dev/xkmc/modulargolems/content/modifier/immunes/FireImmuneModifier.java b/src/main/java/dev/xkmc/modulargolems/content/modifier/immunes/FireImmuneModifier.java index 57b5c1c2b..9d2fa379a 100644 --- a/src/main/java/dev/xkmc/modulargolems/content/modifier/immunes/FireImmuneModifier.java +++ b/src/main/java/dev/xkmc/modulargolems/content/modifier/immunes/FireImmuneModifier.java @@ -4,6 +4,7 @@ import dev.xkmc.modulargolems.content.entity.common.AbstractGolemEntity; import dev.xkmc.modulargolems.content.entity.common.GolemFlags; import dev.xkmc.modulargolems.content.modifier.base.GolemModifier; +import net.minecraft.tags.DamageTypeTags; import net.minecraftforge.event.entity.living.LivingAttackEvent; import java.util.function.Consumer; @@ -22,7 +23,7 @@ public void onRegisterFlag(Consumer addFlag) { @Override public void onAttacked(AbstractGolemEntity entity, LivingAttackEvent event, int level) { - if (level > 0 && event.getSource().isFire()) { + if (level > 0 && event.getSource().is(DamageTypeTags.IS_FIRE)) { event.setCanceled(true); } } diff --git a/src/main/java/dev/xkmc/modulargolems/content/modifier/immunes/ImmunityModifier.java b/src/main/java/dev/xkmc/modulargolems/content/modifier/immunes/ImmunityModifier.java index 4e4094a12..b81ae5abf 100644 --- a/src/main/java/dev/xkmc/modulargolems/content/modifier/immunes/ImmunityModifier.java +++ b/src/main/java/dev/xkmc/modulargolems/content/modifier/immunes/ImmunityModifier.java @@ -4,6 +4,7 @@ import dev.xkmc.modulargolems.content.entity.common.AbstractGolemEntity; import dev.xkmc.modulargolems.content.entity.common.GolemFlags; import dev.xkmc.modulargolems.content.modifier.base.GolemModifier; +import net.minecraft.tags.DamageTypeTags; import net.minecraftforge.event.entity.living.LivingAttackEvent; import java.util.function.Consumer; @@ -16,7 +17,7 @@ public ImmunityModifier() { @Override public void onAttacked(AbstractGolemEntity entity, LivingAttackEvent event, int level) { - if (level > 0 && !event.getSource().isBypassInvul()) { + if (level > 0 && !event.getSource().is(DamageTypeTags.BYPASSES_INVULNERABILITY)) { event.setCanceled(true); } } diff --git a/src/main/java/dev/xkmc/modulargolems/content/modifier/immunes/MagicImmuneModifier.java b/src/main/java/dev/xkmc/modulargolems/content/modifier/immunes/MagicImmuneModifier.java index b2b082f5d..b2ce90aa1 100644 --- a/src/main/java/dev/xkmc/modulargolems/content/modifier/immunes/MagicImmuneModifier.java +++ b/src/main/java/dev/xkmc/modulargolems/content/modifier/immunes/MagicImmuneModifier.java @@ -1,5 +1,6 @@ package dev.xkmc.modulargolems.content.modifier.immunes; +import dev.xkmc.l2damagetracker.init.data.L2DamageTypes; import dev.xkmc.modulargolems.content.core.StatFilterType; import dev.xkmc.modulargolems.content.entity.common.AbstractGolemEntity; import dev.xkmc.modulargolems.content.modifier.base.GolemModifier; @@ -13,7 +14,7 @@ public MagicImmuneModifier() { @Override public void onAttacked(AbstractGolemEntity entity, LivingAttackEvent event, int level) { - if (level > 0 && event.getSource().isMagic()) { + if (level > 0 && event.getSource().is(L2DamageTypes.MAGIC)) { event.setCanceled(true); } } diff --git a/src/main/java/dev/xkmc/modulargolems/content/modifier/immunes/MagicResistanceModifier.java b/src/main/java/dev/xkmc/modulargolems/content/modifier/immunes/MagicResistanceModifier.java index 9a5458e4f..b397a329c 100644 --- a/src/main/java/dev/xkmc/modulargolems/content/modifier/immunes/MagicResistanceModifier.java +++ b/src/main/java/dev/xkmc/modulargolems/content/modifier/immunes/MagicResistanceModifier.java @@ -1,12 +1,14 @@ package dev.xkmc.modulargolems.content.modifier.immunes; +import dev.xkmc.l2damagetracker.init.data.L2DamageTypes; import dev.xkmc.modulargolems.content.core.StatFilterType; import dev.xkmc.modulargolems.content.entity.common.AbstractGolemEntity; import dev.xkmc.modulargolems.content.modifier.base.GolemModifier; -import dev.xkmc.modulargolems.init.data.ModConfig; +import dev.xkmc.modulargolems.init.data.MGConfig; import net.minecraft.ChatFormatting; import net.minecraft.network.chat.Component; import net.minecraft.network.chat.MutableComponent; +import net.minecraft.tags.DamageTypeTags; import net.minecraftforge.event.entity.living.LivingHurtEvent; import java.util.List; @@ -19,15 +21,15 @@ public MagicResistanceModifier() { @Override public void onHurt(AbstractGolemEntity entity, LivingHurtEvent event, int level) { - float factor = (float) Math.max(0, 1 - level * ModConfig.COMMON.magicResistance.get()); - if (!event.getSource().isBypassInvul() && event.getSource().isMagic()) { + float factor = (float) Math.max(0, 1 - level * MGConfig.COMMON.magicResistance.get()); + if (!event.getSource().is(DamageTypeTags.BYPASSES_INVULNERABILITY) && event.getSource().is(L2DamageTypes.MAGIC)) { event.setAmount(event.getAmount() * factor); } } @Override public List getDetail(int level) { - float factor = (float) Math.max(0, 1 - level * ModConfig.COMMON.magicResistance.get()); + float factor = (float) Math.max(0, 1 - level * MGConfig.COMMON.magicResistance.get()); int perc = Math.round(100 * factor); return List.of(Component.translatable(getDescriptionId() + ".desc", perc).withStyle(ChatFormatting.GREEN)); } diff --git a/src/main/java/dev/xkmc/modulargolems/content/modifier/immunes/PlayerImmuneModifier.java b/src/main/java/dev/xkmc/modulargolems/content/modifier/immunes/PlayerImmuneModifier.java index 1fb2f1109..492f65a73 100644 --- a/src/main/java/dev/xkmc/modulargolems/content/modifier/immunes/PlayerImmuneModifier.java +++ b/src/main/java/dev/xkmc/modulargolems/content/modifier/immunes/PlayerImmuneModifier.java @@ -3,7 +3,7 @@ import dev.xkmc.modulargolems.content.core.StatFilterType; import dev.xkmc.modulargolems.content.entity.common.AbstractGolemEntity; import dev.xkmc.modulargolems.content.modifier.base.GolemModifier; -import dev.xkmc.modulargolems.init.data.TagGen; +import dev.xkmc.modulargolems.init.data.MGTagGen; import net.minecraft.world.entity.Entity; import net.minecraftforge.event.entity.living.LivingAttackEvent; @@ -18,7 +18,7 @@ public void onAttacked(AbstractGolemEntity entity, LivingAttackEvent event if (level == 0) return; Entity source = event.getSource().getEntity(); if (source == null) return; - if (source.getType().is(TagGen.GOLEM_FRIENDLY) || entity.isAlliedTo(source)) { + if (source.getType().is(MGTagGen.GOLEM_FRIENDLY) || entity.isAlliedTo(source)) { event.setCanceled(true); } } diff --git a/src/main/java/dev/xkmc/modulargolems/content/modifier/immunes/ProjectileRejectModifier.java b/src/main/java/dev/xkmc/modulargolems/content/modifier/immunes/ProjectileRejectModifier.java index 940df5cfb..ea887e5be 100644 --- a/src/main/java/dev/xkmc/modulargolems/content/modifier/immunes/ProjectileRejectModifier.java +++ b/src/main/java/dev/xkmc/modulargolems/content/modifier/immunes/ProjectileRejectModifier.java @@ -3,6 +3,7 @@ import dev.xkmc.modulargolems.content.core.StatFilterType; import dev.xkmc.modulargolems.content.entity.common.AbstractGolemEntity; import dev.xkmc.modulargolems.content.modifier.base.GolemModifier; +import net.minecraft.tags.DamageTypeTags; import net.minecraftforge.event.entity.living.LivingAttackEvent; public class ProjectileRejectModifier extends GolemModifier { @@ -13,7 +14,8 @@ public ProjectileRejectModifier() { @Override public void onAttacked(AbstractGolemEntity entity, LivingAttackEvent event, int level) { - if (level > 0 && !event.getSource().isBypassInvul() && event.getSource().isProjectile()) { + if (level > 0 && !event.getSource().is(DamageTypeTags.BYPASSES_INVULNERABILITY) && + event.getSource().is(DamageTypeTags.IS_PROJECTILE)) { event.setCanceled(true); } } diff --git a/src/main/java/dev/xkmc/modulargolems/content/modifier/immunes/ThunderImmuneModifier.java b/src/main/java/dev/xkmc/modulargolems/content/modifier/immunes/ThunderImmuneModifier.java index 4bbe467d1..d1c7d6ea6 100644 --- a/src/main/java/dev/xkmc/modulargolems/content/modifier/immunes/ThunderImmuneModifier.java +++ b/src/main/java/dev/xkmc/modulargolems/content/modifier/immunes/ThunderImmuneModifier.java @@ -6,12 +6,12 @@ import dev.xkmc.modulargolems.content.entity.common.GolemFlags; import dev.xkmc.modulargolems.content.modifier.base.GolemModifier; import dev.xkmc.modulargolems.init.advancement.GolemTriggers; -import dev.xkmc.modulargolems.init.data.ModConfig; +import dev.xkmc.modulargolems.init.data.MGConfig; import net.minecraft.ChatFormatting; import net.minecraft.network.chat.Component; import net.minecraft.network.chat.MutableComponent; import net.minecraft.server.level.ServerPlayer; -import net.minecraft.world.damagesource.DamageSource; +import net.minecraft.tags.DamageTypeTags; import net.minecraft.world.effect.MobEffectInstance; import net.minecraft.world.effect.MobEffects; import net.minecraft.world.entity.player.Player; @@ -28,10 +28,10 @@ public ThunderImmuneModifier() { @Override public void onAttacked(AbstractGolemEntity entity, LivingAttackEvent event, int level) { - if (level > 0 && event.getSource() == DamageSource.LIGHTNING_BOLT) { + if (level > 0 && event.getSource().is(DamageTypeTags.IS_LIGHTNING)) { event.setCanceled(true); EffectUtil.addEffect(entity, new MobEffectInstance(MobEffects.FIRE_RESISTANCE, 200), EffectUtil.AddReason.SELF, entity); - entity.heal(ModConfig.COMMON.thunderHeal.get() * level); + entity.heal(MGConfig.COMMON.thunderHeal.get() * level); Player player = entity.getOwner(); if (player instanceof ServerPlayer pl) { GolemTriggers.THUNDER.trigger(pl); @@ -45,7 +45,7 @@ public void onRegisterFlag(Consumer addFlag) { } public List getDetail(int v) { - int heal = ModConfig.COMMON.thunderHeal.get() * v; + int heal = MGConfig.COMMON.thunderHeal.get() * v; return List.of(Component.translatable(getDescriptionId() + ".desc", heal).withStyle(ChatFormatting.GREEN)); } diff --git a/src/main/java/dev/xkmc/modulargolems/content/modifier/ride/RideUpgrade.java b/src/main/java/dev/xkmc/modulargolems/content/modifier/ride/RideUpgrade.java new file mode 100644 index 000000000..e10acfb26 --- /dev/null +++ b/src/main/java/dev/xkmc/modulargolems/content/modifier/ride/RideUpgrade.java @@ -0,0 +1,36 @@ +package dev.xkmc.modulargolems.content.modifier.ride; + +import dev.xkmc.modulargolems.content.core.GolemType; +import dev.xkmc.modulargolems.content.entity.common.GolemFlags; +import dev.xkmc.modulargolems.content.modifier.base.AttributeGolemModifier; +import dev.xkmc.modulargolems.init.registrate.GolemTypes; +import net.minecraft.ChatFormatting; +import net.minecraft.network.chat.Component; +import net.minecraft.network.chat.MutableComponent; + +import java.util.List; +import java.util.function.Consumer; + +public class RideUpgrade extends AttributeGolemModifier { + + public RideUpgrade(int max, AttrEntry... entries) { + super(max, entries); + } + + @Override + public void onRegisterFlag(Consumer addFlag) { + addFlag.accept(GolemFlags.PASSIVE); + } + + @Override + public boolean fitsOn(GolemType type) { + return type == GolemTypes.TYPE_DOG.get(); + } + + @Override + public List getDetail(int v) { + var ans = super.getDetail(v); + ans.add(0, Component.translatable(getDescriptionId() + ".desc").withStyle(ChatFormatting.GREEN)); + return ans; + } +} diff --git a/src/main/java/dev/xkmc/modulargolems/compat/materials/thermal/package-info.java b/src/main/java/dev/xkmc/modulargolems/content/modifier/ride/package-info.java similarity index 75% rename from src/main/java/dev/xkmc/modulargolems/compat/materials/thermal/package-info.java rename to src/main/java/dev/xkmc/modulargolems/content/modifier/ride/package-info.java index d5dfc4187..310fe0c75 100644 --- a/src/main/java/dev/xkmc/modulargolems/compat/materials/thermal/package-info.java +++ b/src/main/java/dev/xkmc/modulargolems/content/modifier/ride/package-info.java @@ -1,7 +1,7 @@ @ParametersAreNonnullByDefault @MethodsReturnNonnullByDefault -package dev.xkmc.modulargolems.compat.materials.thermal; +package dev.xkmc.modulargolems.content.modifier.ride; import net.minecraft.MethodsReturnNonnullByDefault; diff --git a/src/main/java/dev/xkmc/modulargolems/content/modifier/special/PickupGoal.java b/src/main/java/dev/xkmc/modulargolems/content/modifier/special/PickupGoal.java index 192b8f5fb..edd8982c2 100644 --- a/src/main/java/dev/xkmc/modulargolems/content/modifier/special/PickupGoal.java +++ b/src/main/java/dev/xkmc/modulargolems/content/modifier/special/PickupGoal.java @@ -5,9 +5,9 @@ import dev.xkmc.modulargolems.events.event.GolemHandleExpEvent; import dev.xkmc.modulargolems.events.event.GolemHandleItemEvent; import dev.xkmc.modulargolems.init.ModularGolems; -import dev.xkmc.modulargolems.init.data.LangData; -import dev.xkmc.modulargolems.init.data.ModConfig; -import dev.xkmc.modulargolems.init.data.TagGen; +import dev.xkmc.modulargolems.init.data.MGConfig; +import dev.xkmc.modulargolems.init.data.MGLangData; +import dev.xkmc.modulargolems.init.data.MGTagGen; import dev.xkmc.modulargolems.mixin.ExperienceOrbAccessor; import net.minecraft.core.BlockPos; import net.minecraft.world.entity.EquipmentSlot; @@ -56,14 +56,14 @@ public void tick() { return; } delay = INTERVAL; - AABB box = golem.getBoundingBox().inflate(lv * ModConfig.COMMON.basePickupRange.get()); + AABB box = golem.getBoundingBox().inflate(lv * MGConfig.COMMON.basePickupRange.get()); tryHandleItem(box); tryHandleExp(box); } private void tryHandleItem(AABB box) { Player player = golem.getOwner(); - var items = golem.level.getEntities(EntityTypeTest.forClass(ItemEntity.class), + var items = golem.level().getEntities(EntityTypeTest.forClass(ItemEntity.class), box, e -> true); validateTarget(); for (var item : items) { @@ -71,8 +71,8 @@ private void tryHandleItem(AABB box) { } if (destroyItemCount > 0) { if (player != null) { - ModularGolems.LOGGER.info(LangData.DESTROY_ITEM.get(golem, destroyItemCount).getString()); - player.sendSystemMessage(LangData.DESTROY_ITEM.get(golem, destroyItemCount)); + ModularGolems.LOGGER.info(MGLangData.DESTROY_ITEM.get(golem, destroyItemCount).getString()); + player.sendSystemMessage(MGLangData.DESTROY_ITEM.get(golem, destroyItemCount)); destroyItemCount = 0; } } @@ -80,7 +80,7 @@ private void tryHandleItem(AABB box) { private void tryHandleExp(AABB box) { Player player = golem.getOwner(); - var exps = golem.level.getEntities(EntityTypeTest.forClass(ExperienceOrb.class), + var exps = golem.level().getEntities(EntityTypeTest.forClass(ExperienceOrb.class), box, e -> true); ExperienceOrb first = null; for (var exp : exps) { @@ -98,7 +98,7 @@ private void tryHandleExp(AABB box) { } if (destroyExpCount > 0) { if (player != null) { - player.sendSystemMessage(LangData.DESTROY_EXP.get(golem, destroyExpCount)); + player.sendSystemMessage(MGLangData.DESTROY_EXP.get(golem, destroyExpCount)); destroyExpCount = 0; } } @@ -118,7 +118,7 @@ private int repairGolemAndItems(int exp) { return exp; } float lost = golem.getMaxHealth() - golem.getHealth(); - float ratio = ModConfig.COMMON.mendingXpCost.get(); + float ratio = MGConfig.COMMON.mendingXpCost.get(); float heal = Math.min(lost, exp / ratio); int cost = (int) (heal * ratio); golem.heal(heal); @@ -193,10 +193,10 @@ private void validateTarget() { for (int j = -r; j <= r; j++) { for (int k = -r; k <= r; k++) { pos.setWithOffset(origin, i, j, k); - if (!golem.level.getBlockState(pos).is(TagGen.POTENTIAL_DST)) { + if (!golem.level().getBlockState(pos).is(MGTagGen.POTENTIAL_DST)) { continue; } - BlockEntity be = golem.level.getBlockEntity(pos); + BlockEntity be = golem.level().getBlockEntity(pos); if (be != null && be.getCapability(ForgeCapabilities.ITEM_HANDLER).resolve().isPresent()) { double d = pos.distToCenterSqr(golem.position()); if (d < dist) { diff --git a/src/main/java/dev/xkmc/modulargolems/content/modifier/special/PickupModifier.java b/src/main/java/dev/xkmc/modulargolems/content/modifier/special/PickupModifier.java index a4eb1cdf8..dcf9c8b7c 100644 --- a/src/main/java/dev/xkmc/modulargolems/content/modifier/special/PickupModifier.java +++ b/src/main/java/dev/xkmc/modulargolems/content/modifier/special/PickupModifier.java @@ -3,7 +3,7 @@ import dev.xkmc.modulargolems.content.core.StatFilterType; import dev.xkmc.modulargolems.content.entity.common.AbstractGolemEntity; import dev.xkmc.modulargolems.content.modifier.base.GolemModifier; -import dev.xkmc.modulargolems.init.data.ModConfig; +import dev.xkmc.modulargolems.init.data.MGConfig; import net.minecraft.ChatFormatting; import net.minecraft.network.chat.Component; import net.minecraft.network.chat.MutableComponent; @@ -25,7 +25,7 @@ public void onRegisterGoals(AbstractGolemEntity entity, int lv, BiConsumer @Override public List getDetail(int v) { - int range = ModConfig.COMMON.basePickupRange.get() * v; + int range = MGConfig.COMMON.basePickupRange.get() * v; return List.of(Component.translatable(getDescriptionId() + ".desc", range).withStyle(ChatFormatting.GREEN)); } } diff --git a/src/main/java/dev/xkmc/modulargolems/content/modifier/special/PotionMetaModifier.java b/src/main/java/dev/xkmc/modulargolems/content/modifier/special/PotionMetaModifier.java index 8c98b29b0..0902d11cc 100644 --- a/src/main/java/dev/xkmc/modulargolems/content/modifier/special/PotionMetaModifier.java +++ b/src/main/java/dev/xkmc/modulargolems/content/modifier/special/PotionMetaModifier.java @@ -1,9 +1,9 @@ package dev.xkmc.modulargolems.content.modifier.special; import dev.xkmc.modulargolems.content.core.StatFilterType; -import dev.xkmc.modulargolems.content.item.UpgradeItem; +import dev.xkmc.modulargolems.content.item.upgrade.UpgradeItem; import dev.xkmc.modulargolems.content.modifier.base.GolemModifier; -import dev.xkmc.modulargolems.init.data.TagGen; +import dev.xkmc.modulargolems.init.data.MGTagGen; import java.util.HashSet; import java.util.List; @@ -20,7 +20,7 @@ public int addSlot(List upgrades, int lv) { int ans = 0; Set set = new HashSet<>(); for (UpgradeItem item : upgrades) { - if (item.getDefaultInstance().is(TagGen.POTION_UPGRADES)) { + if (item.getDefaultInstance().is(MGTagGen.POTION_UPGRADES)) { if (set.contains(item)) { ans++; } else { diff --git a/src/main/java/dev/xkmc/modulargolems/content/modifier/special/SonicAttackGoal.java b/src/main/java/dev/xkmc/modulargolems/content/modifier/special/SonicAttackGoal.java index 95cf7d220..a11d4cb85 100644 --- a/src/main/java/dev/xkmc/modulargolems/content/modifier/special/SonicAttackGoal.java +++ b/src/main/java/dev/xkmc/modulargolems/content/modifier/special/SonicAttackGoal.java @@ -5,7 +5,6 @@ import net.minecraft.core.particles.ParticleTypes; import net.minecraft.server.level.ServerLevel; import net.minecraft.sounds.SoundEvents; -import net.minecraft.world.damagesource.DamageSource; import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.entity.ai.attributes.Attributes; import net.minecraft.world.entity.ai.goal.Goal; @@ -83,7 +82,7 @@ public void tick() { for (int i = 1; i < 17; ++i) { Vec3 vec33 = src.add(dir.scale(i)); - if (warden.level instanceof ServerLevel level) + if (warden.level() instanceof ServerLevel level) level.sendParticles(ParticleTypes.SONIC_BOOM, vec33.x, vec33.y, vec33.z, 1, 0.0D, 0.0D, 0.0D, 0.0D); } @@ -92,7 +91,7 @@ public void tick() { List target = new ArrayList<>(); if (attr != null && attr.getValue() > 0) { AABB aabb = new AABB(src, src.add(dir.scale(16))); - for (var e : warden.level.getEntities(warden, aabb)) { + for (var e : warden.level().getEntities(warden, aabb)) { if (e instanceof LivingEntity x && warden.canAttack(x)) { target.add(x); } @@ -102,7 +101,7 @@ public void tick() { target.add(le); } for (var e : target) { - e.hurt(DamageSource.sonicBoom(warden), 10 * lv); + e.hurt(warden.level().damageSources().sonicBoom(warden), 10 * lv); double d1 = 0.5D * (1.0D - e.getAttributeValue(Attributes.KNOCKBACK_RESISTANCE)); double d0 = 2.5D * (1.0D - e.getAttributeValue(Attributes.KNOCKBACK_RESISTANCE)); e.push(dir.x() * d0, dir.y() * d1, dir.z() * d0); diff --git a/src/main/java/dev/xkmc/modulargolems/content/modifier/special/TalentMetaModifier.java b/src/main/java/dev/xkmc/modulargolems/content/modifier/special/TalentMetaModifier.java index f5c3d950e..f55d6f5d6 100644 --- a/src/main/java/dev/xkmc/modulargolems/content/modifier/special/TalentMetaModifier.java +++ b/src/main/java/dev/xkmc/modulargolems/content/modifier/special/TalentMetaModifier.java @@ -1,9 +1,9 @@ package dev.xkmc.modulargolems.content.modifier.special; import dev.xkmc.modulargolems.content.core.StatFilterType; -import dev.xkmc.modulargolems.content.item.UpgradeItem; +import dev.xkmc.modulargolems.content.item.upgrade.UpgradeItem; import dev.xkmc.modulargolems.content.modifier.base.GolemModifier; -import dev.xkmc.modulargolems.init.data.TagGen; +import dev.xkmc.modulargolems.init.data.MGTagGen; import java.util.HashSet; import java.util.List; @@ -20,7 +20,7 @@ public int addSlot(List upgrades, int lv) { int ans = 0; Set set = new HashSet<>(upgrades); for (UpgradeItem item : set) { - if (item.getDefaultInstance().is(TagGen.BLUE_UPGRADES)) { + if (item.getDefaultInstance().is(MGTagGen.BLUE_UPGRADES)) { ans++; } } diff --git a/src/main/java/dev/xkmc/modulargolems/content/recipe/GolemAssembleBuilder.java b/src/main/java/dev/xkmc/modulargolems/content/recipe/GolemAssembleBuilder.java index 3b05ee293..ccce7d4ac 100644 --- a/src/main/java/dev/xkmc/modulargolems/content/recipe/GolemAssembleBuilder.java +++ b/src/main/java/dev/xkmc/modulargolems/content/recipe/GolemAssembleBuilder.java @@ -1,6 +1,6 @@ package dev.xkmc.modulargolems.content.recipe; -import dev.xkmc.l2library.base.recipe.CustomShapedBuilder; +import dev.xkmc.l2library.serial.recipe.CustomShapedBuilder; import dev.xkmc.modulargolems.init.registrate.GolemMiscs; import net.minecraft.world.level.ItemLike; diff --git a/src/main/java/dev/xkmc/modulargolems/content/recipe/GolemAssembleRecipe.java b/src/main/java/dev/xkmc/modulargolems/content/recipe/GolemAssembleRecipe.java index 3519ff760..337bd6af5 100644 --- a/src/main/java/dev/xkmc/modulargolems/content/recipe/GolemAssembleRecipe.java +++ b/src/main/java/dev/xkmc/modulargolems/content/recipe/GolemAssembleRecipe.java @@ -1,10 +1,11 @@ package dev.xkmc.modulargolems.content.recipe; -import dev.xkmc.l2library.base.recipe.AbstractShapedRecipe; +import dev.xkmc.l2library.serial.recipe.AbstractShapedRecipe; import dev.xkmc.modulargolems.content.item.golem.GolemHolder; import dev.xkmc.modulargolems.content.item.golem.GolemPart; import dev.xkmc.modulargolems.init.registrate.GolemMiscs; import net.minecraft.core.NonNullList; +import net.minecraft.core.RegistryAccess; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.inventory.CraftingContainer; import net.minecraft.world.item.ItemStack; @@ -32,8 +33,8 @@ public boolean matches(CraftingContainer cont, Level level) { } @Override - public ItemStack assemble(CraftingContainer cont) { - ItemStack stack = super.assemble(cont); + public ItemStack assemble(CraftingContainer cont, RegistryAccess access) { + ItemStack stack = super.assemble(cont, access); for (int i = 0; i < cont.getContainerSize(); i++) { ItemStack input = cont.getItem(i); if (!input.isEmpty() && input.getItem() instanceof GolemPart part) { diff --git a/src/main/java/dev/xkmc/modulargolems/events/CraftEventListeners.java b/src/main/java/dev/xkmc/modulargolems/events/CraftEventListeners.java index 4dddf93a5..36bd70fd3 100644 --- a/src/main/java/dev/xkmc/modulargolems/events/CraftEventListeners.java +++ b/src/main/java/dev/xkmc/modulargolems/events/CraftEventListeners.java @@ -4,9 +4,10 @@ import dev.xkmc.modulargolems.content.config.GolemMaterialConfig; import dev.xkmc.modulargolems.content.core.IGolemPart; import dev.xkmc.modulargolems.content.entity.common.AbstractGolemEntity; -import dev.xkmc.modulargolems.content.item.UpgradeItem; +import dev.xkmc.modulargolems.content.item.upgrade.UpgradeItem; import dev.xkmc.modulargolems.content.item.golem.GolemHolder; import dev.xkmc.modulargolems.content.item.golem.GolemPart; +import dev.xkmc.modulargolems.init.ModularGolems; import dev.xkmc.modulargolems.init.advancement.GolemTriggers; import net.minecraft.server.level.ServerPlayer; import net.minecraft.world.item.ItemStack; @@ -14,9 +15,13 @@ import net.minecraftforge.event.GrindstoneEvent; import net.minecraftforge.event.entity.player.AnvilRepairEvent; import net.minecraftforge.eventbus.api.SubscribeEvent; +import net.minecraftforge.fml.common.Mod; import java.util.ArrayList; +@Mod.EventBusSubscriber(modid = ModularGolems.MODID, bus = Mod.EventBusSubscriber.Bus.FORGE) + + public class CraftEventListeners { @SubscribeEvent @@ -44,7 +49,7 @@ public static void onAnvilCraft(AnvilUpdateEvent event) { @SubscribeEvent public static void onAnvilFinish(AnvilRepairEvent event) { - if (event.getEntity().getLevel().isClientSide()) + if (event.getEntity().level().isClientSide()) return; ItemStack stack = event.getLeft(); ItemStack block = event.getRight(); @@ -58,7 +63,8 @@ public static void onAnvilFinish(AnvilRepairEvent event) { var mats = GolemHolder.getMaterial(result); var upgrades = GolemHolder.getUpgrades(result); int remaining = holder.getRemaining(mats, upgrades); - GolemTriggers.UPGRADE_APPLY.trigger((ServerPlayer) event.getEntity(), block, remaining); + int total = upgrades.size(); + GolemTriggers.UPGRADE_APPLY.trigger((ServerPlayer) event.getEntity(), block, remaining, total); } else { var mats = GolemHolder.getMaterial(stack); var type = holder.getEntityType(); @@ -73,7 +79,7 @@ public static void onAnvilFinish(AnvilRepairEvent event) { } @SubscribeEvent - public static void onGrindStone(GrindstoneEvent.OnplaceItem event) { + public static void onGrindStone(GrindstoneEvent.OnPlaceItem event) { if (event.getTopItem().getItem() instanceof GolemHolder) { ItemStack copy = event.getTopItem().copy(); if (GolemHolder.getUpgrades(copy).size() > 0) { @@ -108,6 +114,7 @@ void fixGolem(AnvilUpdateEvent event, GolemHolder holder, ItemStack stack) private static , P extends IGolemPart

> void appendUpgrade(AnvilUpdateEvent event, GolemHolder holder, UpgradeItem upgrade) { + if (!upgrade.fitsOn(holder.getEntityType())) return; ItemStack stack = event.getLeft(); var mats = GolemHolder.getMaterial(stack); var upgrades = GolemHolder.getUpgrades(stack); diff --git a/src/main/java/dev/xkmc/modulargolems/events/GolemEventListeners.java b/src/main/java/dev/xkmc/modulargolems/events/GolemEventListeners.java index ad8988410..2f842cba2 100644 --- a/src/main/java/dev/xkmc/modulargolems/events/GolemEventListeners.java +++ b/src/main/java/dev/xkmc/modulargolems/events/GolemEventListeners.java @@ -2,22 +2,30 @@ import dev.xkmc.modulargolems.events.event.GolemEquipEvent; import dev.xkmc.modulargolems.events.event.GolemThrowableEvent; +import dev.xkmc.modulargolems.init.ModularGolems; import net.minecraft.world.entity.EquipmentSlot; import net.minecraft.world.entity.projectile.AbstractArrow; import net.minecraft.world.entity.projectile.ThrownTrident; import net.minecraft.world.item.ArrowItem; -import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.BowItem; import net.minecraft.world.item.TridentItem; import net.minecraftforge.eventbus.api.SubscribeEvent; +import net.minecraftforge.fml.common.Mod; + +@Mod.EventBusSubscriber(modid = ModularGolems.MODID, bus = Mod.EventBusSubscriber.Bus.FORGE) public class GolemEventListeners { @SubscribeEvent public static void onEquip(GolemEquipEvent event) { - ItemStack stack = event.getStack(); - if (stack.getItem() instanceof ArrowItem) { + if (event.getStack().getItem() instanceof ArrowItem) { event.setSlot(EquipmentSlot.OFFHAND, event.getStack().getCount()); } + if (!event.getEntity().getItemBySlot(EquipmentSlot.MAINHAND).isEmpty()) { + if (event.getStack().getItem() instanceof BowItem) { + event.setSlot(EquipmentSlot.OFFHAND, event.getStack().getCount()); + } + } } @SubscribeEvent diff --git a/src/main/java/dev/xkmc/modulargolems/events/ModifierEventListeners.java b/src/main/java/dev/xkmc/modulargolems/events/ModifierEventListeners.java index 6744fc54c..09710e43a 100644 --- a/src/main/java/dev/xkmc/modulargolems/events/ModifierEventListeners.java +++ b/src/main/java/dev/xkmc/modulargolems/events/ModifierEventListeners.java @@ -1,6 +1,7 @@ package dev.xkmc.modulargolems.events; import dev.xkmc.modulargolems.content.entity.common.AbstractGolemEntity; +import dev.xkmc.modulargolems.init.ModularGolems; import dev.xkmc.modulargolems.init.registrate.GolemModifiers; import net.minecraft.world.damagesource.DamageSource; import net.minecraft.world.entity.Mob; @@ -16,7 +17,9 @@ import net.minecraftforge.event.level.ExplosionEvent; import net.minecraftforge.eventbus.api.EventPriority; import net.minecraftforge.eventbus.api.SubscribeEvent; +import net.minecraftforge.fml.common.Mod; +@Mod.EventBusSubscriber(modid = ModularGolems.MODID, bus = Mod.EventBusSubscriber.Bus.FORGE) public class ModifierEventListeners { @SubscribeEvent diff --git a/src/main/java/dev/xkmc/modulargolems/events/event/GolemEquipEvent.java b/src/main/java/dev/xkmc/modulargolems/events/event/GolemEquipEvent.java index 5b0b742d1..d12acee3b 100644 --- a/src/main/java/dev/xkmc/modulargolems/events/event/GolemEquipEvent.java +++ b/src/main/java/dev/xkmc/modulargolems/events/event/GolemEquipEvent.java @@ -1,5 +1,4 @@ package dev.xkmc.modulargolems.events.event; - import dev.xkmc.modulargolems.content.entity.humanoid.HumanoidGolemEntity; import net.minecraft.world.entity.EquipmentSlot; import net.minecraft.world.item.ItemStack; @@ -7,13 +6,10 @@ import static net.minecraft.world.entity.LivingEntity.getEquipmentSlotForItem; public class GolemEquipEvent extends HumanoidGolemEvent { - private final ItemStack stack; - private EquipmentSlot slot; private boolean canEquip; private int amount; - public GolemEquipEvent(HumanoidGolemEntity golem, ItemStack stack) { super(golem); this.stack = stack; @@ -21,13 +17,11 @@ public GolemEquipEvent(HumanoidGolemEntity golem, ItemStack stack) { canEquip = stack.canEquip(slot, golem); amount = 1; } - public void setSlot(EquipmentSlot slot, int amount) { this.slot = slot; canEquip = true; this.amount = amount; } - public boolean canEquip() { return canEquip; } diff --git a/src/main/java/dev/xkmc/modulargolems/events/event/MetalGolemEquipEvent.java b/src/main/java/dev/xkmc/modulargolems/events/event/MetalGolemEquipEvent.java new file mode 100644 index 000000000..f0ad3c4c9 --- /dev/null +++ b/src/main/java/dev/xkmc/modulargolems/events/event/MetalGolemEquipEvent.java @@ -0,0 +1,5 @@ +package dev.xkmc.modulargolems.events.event; + +public class MetalGolemEquipEvent { + +} diff --git a/src/main/java/dev/xkmc/modulargolems/init/GolemClient.java b/src/main/java/dev/xkmc/modulargolems/init/GolemClient.java index dcda8fe27..2374e3fa0 100644 --- a/src/main/java/dev/xkmc/modulargolems/init/GolemClient.java +++ b/src/main/java/dev/xkmc/modulargolems/init/GolemClient.java @@ -2,54 +2,60 @@ import dev.xkmc.modulargolems.compat.materials.common.CompatManager; import dev.xkmc.modulargolems.content.client.GolemStatusOverlay; -import dev.xkmc.modulargolems.content.item.UpgradeItem; -import dev.xkmc.modulargolems.content.item.golem.ClientHolderManager; +import dev.xkmc.modulargolems.content.item.equipments.GolemEquipmentModels; +import dev.xkmc.modulargolems.content.item.upgrade.UpgradeItem; import dev.xkmc.modulargolems.content.item.golem.GolemBEWLR; -import dev.xkmc.modulargolems.init.data.TagGen; +import dev.xkmc.modulargolems.init.data.MGTagGen; import net.minecraft.client.renderer.item.ClampedItemPropertyFunction; import net.minecraft.client.renderer.item.ItemProperties; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.item.Items; import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.api.distmarker.OnlyIn; +import net.minecraftforge.client.event.EntityRenderersEvent; import net.minecraftforge.client.event.RegisterClientReloadListenersEvent; import net.minecraftforge.client.event.RegisterGuiOverlaysEvent; import net.minecraftforge.client.gui.overlay.VanillaGuiOverlay; -import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.eventbus.api.IEventBus; +import net.minecraftforge.eventbus.api.SubscribeEvent; +import net.minecraftforge.fml.common.Mod; import net.minecraftforge.fml.event.lifecycle.FMLClientSetupEvent; -public class GolemClient { +import static dev.xkmc.modulargolems.content.item.equipments.GolemEquipmentModels.CHESTPLATE_LAYER; +import static dev.xkmc.modulargolems.content.item.equipments.GolemEquipmentModels.HELMET_LAYER; - private static IEventBus clientBus; +@Mod.EventBusSubscriber(value = Dist.CLIENT, modid = ModularGolems.MODID, bus = Mod.EventBusSubscriber.Bus.MOD) +public class GolemClient { - public static void onCtorClient(IEventBus bus) { - clientBus = bus; - bus.addListener(GolemClient::clientSetup); - bus.addListener(GolemClient::onResourceReload); - bus.addListener(GolemClient::registerOverlays); - MinecraftForge.EVENT_BUS.register(ClientHolderManager.class); - } + private static IEventBus clientBus;//TODO fill + @SubscribeEvent public static void clientSetup(FMLClientSetupEvent event) { event.enqueueWork(() -> { ClampedItemPropertyFunction func = (stack, level, entity, layer) -> entity != null && entity.isBlocking() && entity.getUseItem() == stack ? 1.0F : 0.0F; ItemProperties.register(Items.SHIELD, new ResourceLocation("blocking"), func); ClampedItemPropertyFunction arrow = (stack, level, entity, layer) -> - stack.is(TagGen.BLUE_UPGRADES) ? 1 : stack.is(TagGen.POTION_UPGRADES) ? 0.5f : 0; + stack.is(MGTagGen.BLUE_UPGRADES) ? 1 : stack.is(MGTagGen.POTION_UPGRADES) ? 0.5f : 0; for (var item : UpgradeItem.LIST) ItemProperties.register(item, new ResourceLocation(ModularGolems.MODID, "blue_arrow"), arrow); CompatManager.dispatchClientSetup(clientBus); }); } - @OnlyIn(Dist.CLIENT) + @SubscribeEvent public static void registerOverlays(RegisterGuiOverlaysEvent event) { event.registerAbove(VanillaGuiOverlay.CROSSHAIR.id(), "golem_stats", new GolemStatusOverlay()); } + @SubscribeEvent + public static void registerHeadLayer(EntityRenderersEvent.RegisterLayerDefinitions event){ + event.registerLayerDefinition(HELMET_LAYER, GolemEquipmentModels::createHelmetLayer); + } + @SubscribeEvent + public static void registerBodyLayer(EntityRenderersEvent.RegisterLayerDefinitions event){ + event.registerLayerDefinition(CHESTPLATE_LAYER, GolemEquipmentModels::createChesplateLayer); + } - @OnlyIn(Dist.CLIENT) + @SubscribeEvent public static void onResourceReload(RegisterClientReloadListenersEvent event) { event.registerReloadListener(GolemBEWLR.INSTANCE.get()); } diff --git a/src/main/java/dev/xkmc/modulargolems/init/ModularGolems.java b/src/main/java/dev/xkmc/modulargolems/init/ModularGolems.java index 0ad471c14..e3ceabca7 100644 --- a/src/main/java/dev/xkmc/modulargolems/init/ModularGolems.java +++ b/src/main/java/dev/xkmc/modulargolems/init/ModularGolems.java @@ -1,24 +1,24 @@ package dev.xkmc.modulargolems.init; +import com.tterrag.registrate.providers.ProviderType; import dev.xkmc.l2library.base.L2Registrate; -import dev.xkmc.l2library.repack.registrate.providers.ProviderType; +import dev.xkmc.l2library.serial.config.ConfigTypeEntry; +import dev.xkmc.l2library.serial.config.PacketHandlerWithConfig; import dev.xkmc.modulargolems.compat.materials.common.CompatManager; +import dev.xkmc.modulargolems.content.config.GolemMaterialConfig; +import dev.xkmc.modulargolems.content.config.GolemPartConfig; import dev.xkmc.modulargolems.content.entity.common.mode.GolemModes; -import dev.xkmc.modulargolems.events.CraftEventListeners; -import dev.xkmc.modulargolems.events.GolemEventListeners; -import dev.xkmc.modulargolems.events.ModifierEventListeners; import dev.xkmc.modulargolems.init.advancement.GolemTriggers; import dev.xkmc.modulargolems.init.data.*; import dev.xkmc.modulargolems.init.registrate.GolemItems; import dev.xkmc.modulargolems.init.registrate.GolemMiscs; import dev.xkmc.modulargolems.init.registrate.GolemModifiers; import dev.xkmc.modulargolems.init.registrate.GolemTypes; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.common.MinecraftForge; +import net.minecraft.resources.ResourceLocation; import net.minecraftforge.data.event.GatherDataEvent; import net.minecraftforge.event.entity.EntityAttributeModificationEvent; import net.minecraftforge.eventbus.api.IEventBus; -import net.minecraftforge.fml.DistExecutor; +import net.minecraftforge.eventbus.api.SubscribeEvent; import net.minecraftforge.fml.common.Mod; import net.minecraftforge.fml.event.lifecycle.FMLCommonSetupEvent; import net.minecraftforge.fml.event.lifecycle.InterModEnqueueEvent; @@ -28,66 +28,61 @@ // The value here should match an entry in the META-INF/mods.toml file @Mod(ModularGolems.MODID) +@Mod.EventBusSubscriber(modid = ModularGolems.MODID, bus = Mod.EventBusSubscriber.Bus.MOD) public class ModularGolems { public static final String MODID = "modulargolems"; public static final Logger LOGGER = LogManager.getLogger(); public static final L2Registrate REGISTRATE = new L2Registrate(MODID); + public static final IEventBus MOD_BUS = FMLJavaModLoadingContext.get().getModEventBus(); - private static void registerRegistrates(IEventBus bus) { + public static final PacketHandlerWithConfig HANDLER = new PacketHandlerWithConfig( + new ResourceLocation(ModularGolems.MODID, "main"), 1 + ); + + public static final ConfigTypeEntry PARTS = + new ConfigTypeEntry<>(HANDLER, "parts", GolemPartConfig.class); + public static final ConfigTypeEntry MATERIALS = + new ConfigTypeEntry<>(HANDLER, "materials", GolemMaterialConfig.class); + + private static void registerRegistrates() { GolemItems.register(); GolemTypes.register(); GolemMiscs.register(); GolemModifiers.register(); - ModConfig.init(); - NetworkManager.register(); - CompatManager.register(); + MGConfig.init(); GolemTriggers.register(); GolemModes.register(); - REGISTRATE.addDataGenerator(ProviderType.LANG, LangData::genLang); + REGISTRATE.addDataGenerator(ProviderType.LANG, MGLangData::genLang); REGISTRATE.addDataGenerator(ProviderType.RECIPE, RecipeGen::genRecipe); - REGISTRATE.addDataGenerator(ProviderType.BLOCK_TAGS, TagGen::onBlockTagGen); - REGISTRATE.addDataGenerator(ProviderType.ITEM_TAGS, TagGen::onItemTagGen); - REGISTRATE.addDataGenerator(ProviderType.ENTITY_TAGS, TagGen::onEntityTagGen); - REGISTRATE.addDataGenerator(ProviderType.ADVANCEMENT, AdvGen::genAdvancements); - } - - private static void registerForgeEvents() { - MinecraftForge.EVENT_BUS.register(ModifierEventListeners.class); - MinecraftForge.EVENT_BUS.register(CraftEventListeners.class); - MinecraftForge.EVENT_BUS.register(GolemEventListeners.class); - } - - private static void registerModBusEvents(IEventBus bus) { - bus.addListener(ModularGolems::modifyAttributes); - bus.addListener(ModularGolems::setup); - bus.addListener(ModularGolems::gatherData); - bus.addListener(ModularGolems::sendMessage); + REGISTRATE.addDataGenerator(ProviderType.BLOCK_TAGS, MGTagGen::onBlockTagGen); + REGISTRATE.addDataGenerator(ProviderType.ITEM_TAGS, MGTagGen::onItemTagGen); + REGISTRATE.addDataGenerator(ProviderType.ENTITY_TAGS, MGTagGen::onEntityTagGen); + REGISTRATE.addDataGenerator(ProviderType.ADVANCEMENT, MGAdvGen::genAdvancements); } public ModularGolems() { - FMLJavaModLoadingContext ctx = FMLJavaModLoadingContext.get(); - IEventBus bus = ctx.getModEventBus(); - registerModBusEvents(bus); - DistExecutor.unsafeRunWhenOn(Dist.CLIENT, () -> () -> GolemClient.onCtorClient(bus)); - registerRegistrates(bus); - registerForgeEvents(); + registerRegistrates(); } - private static void modifyAttributes(EntityAttributeModificationEvent event) { + @SubscribeEvent + public static void modifyAttributes(EntityAttributeModificationEvent event) { } - private static void setup(final FMLCommonSetupEvent event) { + @SubscribeEvent + public static void setup(final FMLCommonSetupEvent event) { event.enqueueWork(() -> { }); } + @SubscribeEvent public static void gatherData(GatherDataEvent event) { - event.getGenerator().addProvider(event.includeServer(), new ConfigGen(event.getGenerator())); + event.getGenerator().addProvider(event.includeServer(), new MGConfigGen(event.getGenerator())); CompatManager.gatherData(event); } - private static void sendMessage(final InterModEnqueueEvent event) { + @SubscribeEvent + public static void sendMessage(final InterModEnqueueEvent event) { } diff --git a/src/main/java/dev/xkmc/modulargolems/init/NetworkManager.java b/src/main/java/dev/xkmc/modulargolems/init/NetworkManager.java deleted file mode 100644 index 6b873d155..000000000 --- a/src/main/java/dev/xkmc/modulargolems/init/NetworkManager.java +++ /dev/null @@ -1,32 +0,0 @@ -package dev.xkmc.modulargolems.init; - -import dev.xkmc.l2library.serial.config.ConfigMerger; -import dev.xkmc.l2library.serial.network.BaseConfig; -import dev.xkmc.l2library.serial.network.PacketHandlerWithConfig; -import dev.xkmc.modulargolems.content.config.GolemMaterialConfig; -import dev.xkmc.modulargolems.content.config.GolemPartConfig; -import net.minecraft.resources.ResourceLocation; - -import java.util.Locale; - -public enum NetworkManager { - MATERIALS, PARTS; - - public String getID() { - return name().toLowerCase(Locale.ROOT); - } - - public static final PacketHandlerWithConfig HANDLER = new PacketHandlerWithConfig( - new ResourceLocation(ModularGolems.MODID, "main"), 1, "golem_config" - ); - - public T getMerged() { - return HANDLER.getCachedConfig(getID()); - } - - public static void register() { - HANDLER.addCachedConfig(MATERIALS.getID(), new ConfigMerger<>(GolemMaterialConfig.class)); - HANDLER.addCachedConfig(PARTS.getID(), new ConfigMerger<>(GolemPartConfig.class)); - } - -} diff --git a/src/main/java/dev/xkmc/modulargolems/init/advancement/GolemAnvilFixTrigger.java b/src/main/java/dev/xkmc/modulargolems/init/advancement/GolemAnvilFixTrigger.java index ef5c5c039..352f0f9e1 100644 --- a/src/main/java/dev/xkmc/modulargolems/init/advancement/GolemAnvilFixTrigger.java +++ b/src/main/java/dev/xkmc/modulargolems/init/advancement/GolemAnvilFixTrigger.java @@ -1,9 +1,9 @@ package dev.xkmc.modulargolems.init.advancement; -import dev.xkmc.l2library.base.advancements.BaseCriterion; -import dev.xkmc.l2library.base.advancements.BaseCriterionInstance; -import dev.xkmc.l2library.serial.SerialClass; -import net.minecraft.advancements.critereon.EntityPredicate; +import dev.xkmc.l2library.serial.advancements.BaseCriterion; +import dev.xkmc.l2library.serial.advancements.BaseCriterionInstance; +import dev.xkmc.l2serial.serialization.SerialClass; +import net.minecraft.advancements.critereon.ContextAwarePredicate; import net.minecraft.resources.ResourceLocation; import net.minecraft.server.level.ServerPlayer; @@ -12,7 +12,7 @@ public class GolemAnvilFixTrigger extends BaseCriterion { public static Ins ins() { - return new Ins(GolemTriggers.ANVIL_FIX.getId(), EntityPredicate.Composite.ANY); + return new Ins(GolemTriggers.ANVIL_FIX.getId(), ContextAwarePredicate.ANY); } public static Ins withMat(ResourceLocation mat) { @@ -36,7 +36,7 @@ public static class Ins extends BaseCriterionInstance @SerialClass.SerialField private ResourceLocation rl = null; - public Ins(ResourceLocation id, EntityPredicate.Composite player) { + public Ins(ResourceLocation id, ContextAwarePredicate player) { super(id, player); } diff --git a/src/main/java/dev/xkmc/modulargolems/init/advancement/GolemBreakToolTrigger.java b/src/main/java/dev/xkmc/modulargolems/init/advancement/GolemBreakToolTrigger.java index b1df9d071..e3290b7ea 100644 --- a/src/main/java/dev/xkmc/modulargolems/init/advancement/GolemBreakToolTrigger.java +++ b/src/main/java/dev/xkmc/modulargolems/init/advancement/GolemBreakToolTrigger.java @@ -1,16 +1,16 @@ package dev.xkmc.modulargolems.init.advancement; -import dev.xkmc.l2library.base.advancements.BaseCriterion; -import dev.xkmc.l2library.base.advancements.BaseCriterionInstance; -import dev.xkmc.l2library.serial.SerialClass; -import net.minecraft.advancements.critereon.EntityPredicate; +import dev.xkmc.l2library.serial.advancements.BaseCriterion; +import dev.xkmc.l2library.serial.advancements.BaseCriterionInstance; +import dev.xkmc.l2serial.serialization.SerialClass; +import net.minecraft.advancements.critereon.ContextAwarePredicate; import net.minecraft.resources.ResourceLocation; import net.minecraft.server.level.ServerPlayer; public class GolemBreakToolTrigger extends BaseCriterion { public static Ins ins() { - return new Ins(GolemTriggers.BREAK.getId(), EntityPredicate.Composite.ANY); + return new Ins(GolemTriggers.BREAK.getId(), ContextAwarePredicate.ANY); } public GolemBreakToolTrigger(ResourceLocation id) { @@ -24,7 +24,7 @@ public void trigger(ServerPlayer player) { @SerialClass public static class Ins extends BaseCriterionInstance { - public Ins(ResourceLocation id, EntityPredicate.Composite player) { + public Ins(ResourceLocation id, ContextAwarePredicate player) { super(id, player); } diff --git a/src/main/java/dev/xkmc/modulargolems/init/advancement/GolemEquipTrigger.java b/src/main/java/dev/xkmc/modulargolems/init/advancement/GolemEquipTrigger.java index 9b9823ad1..10f904281 100644 --- a/src/main/java/dev/xkmc/modulargolems/init/advancement/GolemEquipTrigger.java +++ b/src/main/java/dev/xkmc/modulargolems/init/advancement/GolemEquipTrigger.java @@ -1,16 +1,16 @@ package dev.xkmc.modulargolems.init.advancement; -import dev.xkmc.l2library.base.advancements.BaseCriterion; -import dev.xkmc.l2library.base.advancements.BaseCriterionInstance; -import dev.xkmc.l2library.serial.SerialClass; -import net.minecraft.advancements.critereon.EntityPredicate; +import dev.xkmc.l2library.serial.advancements.BaseCriterion; +import dev.xkmc.l2library.serial.advancements.BaseCriterionInstance; +import dev.xkmc.l2serial.serialization.SerialClass; +import net.minecraft.advancements.critereon.ContextAwarePredicate; import net.minecraft.resources.ResourceLocation; import net.minecraft.server.level.ServerPlayer; public class GolemEquipTrigger extends BaseCriterion { public static Ins ins(int min) { - Ins ans = new Ins(GolemTriggers.EQUIP.getId(), EntityPredicate.Composite.ANY); + Ins ans = new Ins(GolemTriggers.EQUIP.getId(), ContextAwarePredicate.ANY); ans.minimum = min; return ans; } @@ -29,7 +29,7 @@ public static class Ins extends BaseCriterionInstance { @SerialClass.SerialField private int minimum = 0; - public Ins(ResourceLocation id, EntityPredicate.Composite player) { + public Ins(ResourceLocation id, ContextAwarePredicate player) { super(id, player); } diff --git a/src/main/java/dev/xkmc/modulargolems/init/advancement/GolemHotFixTrigger.java b/src/main/java/dev/xkmc/modulargolems/init/advancement/GolemHotFixTrigger.java index 27c22e7e9..d2ce9e17a 100644 --- a/src/main/java/dev/xkmc/modulargolems/init/advancement/GolemHotFixTrigger.java +++ b/src/main/java/dev/xkmc/modulargolems/init/advancement/GolemHotFixTrigger.java @@ -1,16 +1,16 @@ package dev.xkmc.modulargolems.init.advancement; -import dev.xkmc.l2library.base.advancements.BaseCriterion; -import dev.xkmc.l2library.base.advancements.BaseCriterionInstance; -import dev.xkmc.l2library.serial.SerialClass; -import net.minecraft.advancements.critereon.EntityPredicate; +import dev.xkmc.l2library.serial.advancements.BaseCriterion; +import dev.xkmc.l2library.serial.advancements.BaseCriterionInstance; +import dev.xkmc.l2serial.serialization.SerialClass; +import net.minecraft.advancements.critereon.ContextAwarePredicate; import net.minecraft.resources.ResourceLocation; import net.minecraft.server.level.ServerPlayer; public class GolemHotFixTrigger extends BaseCriterion { public static Ins ins() { - return new Ins(GolemTriggers.HOT_FIX.getId(), EntityPredicate.Composite.ANY); + return new Ins(GolemTriggers.HOT_FIX.getId(), ContextAwarePredicate.ANY); } public GolemHotFixTrigger(ResourceLocation id) { @@ -24,7 +24,7 @@ public void trigger(ServerPlayer player) { @SerialClass public static class Ins extends BaseCriterionInstance { - public Ins(ResourceLocation id, EntityPredicate.Composite player) { + public Ins(ResourceLocation id, ContextAwarePredicate player) { super(id, player); } diff --git a/src/main/java/dev/xkmc/modulargolems/init/advancement/GolemKillTrigger.java b/src/main/java/dev/xkmc/modulargolems/init/advancement/GolemKillTrigger.java index 003a26d6d..7b9a082ba 100644 --- a/src/main/java/dev/xkmc/modulargolems/init/advancement/GolemKillTrigger.java +++ b/src/main/java/dev/xkmc/modulargolems/init/advancement/GolemKillTrigger.java @@ -1,9 +1,9 @@ package dev.xkmc.modulargolems.init.advancement; -import dev.xkmc.l2library.base.advancements.BaseCriterion; -import dev.xkmc.l2library.base.advancements.BaseCriterionInstance; -import dev.xkmc.l2library.serial.SerialClass; -import net.minecraft.advancements.critereon.EntityPredicate; +import dev.xkmc.l2library.serial.advancements.BaseCriterion; +import dev.xkmc.l2library.serial.advancements.BaseCriterionInstance; +import dev.xkmc.l2serial.serialization.SerialClass; +import net.minecraft.advancements.critereon.ContextAwarePredicate; import net.minecraft.resources.ResourceLocation; import net.minecraft.server.level.ServerPlayer; import net.minecraft.world.entity.Entity; @@ -14,7 +14,7 @@ public class GolemKillTrigger extends BaseCriterion { public static Ins ins() { - return new Ins(GolemTriggers.KILL.getId(), EntityPredicate.Composite.ANY); + return new Ins(GolemTriggers.KILL.getId(), ContextAwarePredicate.ANY); } public static Ins byType(EntityType type) { @@ -38,7 +38,7 @@ public static class Ins extends BaseCriterionInstance { @SerialClass.SerialField private EntityType type; - public Ins(ResourceLocation id, EntityPredicate.Composite player) { + public Ins(ResourceLocation id, ContextAwarePredicate player) { super(id, player); } diff --git a/src/main/java/dev/xkmc/modulargolems/init/advancement/GolemMassSummonTrigger.java b/src/main/java/dev/xkmc/modulargolems/init/advancement/GolemMassSummonTrigger.java new file mode 100644 index 000000000..345b79430 --- /dev/null +++ b/src/main/java/dev/xkmc/modulargolems/init/advancement/GolemMassSummonTrigger.java @@ -0,0 +1,42 @@ +package dev.xkmc.modulargolems.init.advancement; + +import dev.xkmc.l2library.serial.advancements.BaseCriterion; +import dev.xkmc.l2library.serial.advancements.BaseCriterionInstance; +import dev.xkmc.l2serial.serialization.SerialClass; +import net.minecraft.advancements.critereon.ContextAwarePredicate; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.server.level.ServerPlayer; + +public class GolemMassSummonTrigger extends BaseCriterion { + + public static Ins ins() { + return new Ins(GolemTriggers.MAS_SUMMON.getId(), ContextAwarePredicate.ANY); + } + + public static Ins atLeast(int count) { + Ins ans = ins(); + ans.count = count; + return ans; + } + + public GolemMassSummonTrigger(ResourceLocation id) { + super(id, Ins::new, Ins.class); + } + + public void trigger(ServerPlayer player, int count) { + this.trigger(player, e -> e.count <= count); + } + + @SerialClass + public static class Ins extends BaseCriterionInstance { + + @SerialClass.SerialField + private int count; + + public Ins(ResourceLocation id, ContextAwarePredicate player) { + super(id, player); + } + + } + +} diff --git a/src/main/java/dev/xkmc/modulargolems/init/advancement/GolemThunderTrigger.java b/src/main/java/dev/xkmc/modulargolems/init/advancement/GolemThunderTrigger.java index d900a0ff6..8cd51eb19 100644 --- a/src/main/java/dev/xkmc/modulargolems/init/advancement/GolemThunderTrigger.java +++ b/src/main/java/dev/xkmc/modulargolems/init/advancement/GolemThunderTrigger.java @@ -1,16 +1,16 @@ package dev.xkmc.modulargolems.init.advancement; -import dev.xkmc.l2library.base.advancements.BaseCriterion; -import dev.xkmc.l2library.base.advancements.BaseCriterionInstance; -import dev.xkmc.l2library.serial.SerialClass; -import net.minecraft.advancements.critereon.EntityPredicate; +import dev.xkmc.l2library.serial.advancements.BaseCriterion; +import dev.xkmc.l2library.serial.advancements.BaseCriterionInstance; +import dev.xkmc.l2serial.serialization.SerialClass; +import net.minecraft.advancements.critereon.ContextAwarePredicate; import net.minecraft.resources.ResourceLocation; import net.minecraft.server.level.ServerPlayer; public class GolemThunderTrigger extends BaseCriterion { public static Ins ins() { - return new Ins(GolemTriggers.THUNDER.getId(), EntityPredicate.Composite.ANY); + return new Ins(GolemTriggers.THUNDER.getId(), ContextAwarePredicate.ANY); } public GolemThunderTrigger(ResourceLocation id) { @@ -24,7 +24,7 @@ public void trigger(ServerPlayer player) { @SerialClass public static class Ins extends BaseCriterionInstance { - public Ins(ResourceLocation id, EntityPredicate.Composite player) { + public Ins(ResourceLocation id, ContextAwarePredicate player) { super(id, player); } diff --git a/src/main/java/dev/xkmc/modulargolems/init/advancement/GolemTriggers.java b/src/main/java/dev/xkmc/modulargolems/init/advancement/GolemTriggers.java index f7c428a7c..68d40c7b0 100644 --- a/src/main/java/dev/xkmc/modulargolems/init/advancement/GolemTriggers.java +++ b/src/main/java/dev/xkmc/modulargolems/init/advancement/GolemTriggers.java @@ -13,6 +13,7 @@ public class GolemTriggers { public static final GolemBreakToolTrigger BREAK = new GolemBreakToolTrigger(new ResourceLocation(ModularGolems.MODID, "break")); public static final GolemKillTrigger KILL = new GolemKillTrigger(new ResourceLocation(ModularGolems.MODID, "kill")); public static final GolemThunderTrigger THUNDER = new GolemThunderTrigger(new ResourceLocation(ModularGolems.MODID, "thunder")); + public static final GolemMassSummonTrigger MAS_SUMMON = new GolemMassSummonTrigger(new ResourceLocation(ModularGolems.MODID, "mass_summon")); public static void register() { diff --git a/src/main/java/dev/xkmc/modulargolems/init/advancement/PartCraftTrigger.java b/src/main/java/dev/xkmc/modulargolems/init/advancement/PartCraftTrigger.java index 9f3b3a93b..786367870 100644 --- a/src/main/java/dev/xkmc/modulargolems/init/advancement/PartCraftTrigger.java +++ b/src/main/java/dev/xkmc/modulargolems/init/advancement/PartCraftTrigger.java @@ -1,9 +1,9 @@ package dev.xkmc.modulargolems.init.advancement; -import dev.xkmc.l2library.base.advancements.BaseCriterion; -import dev.xkmc.l2library.base.advancements.BaseCriterionInstance; -import dev.xkmc.l2library.serial.SerialClass; -import net.minecraft.advancements.critereon.EntityPredicate; +import dev.xkmc.l2library.serial.advancements.BaseCriterion; +import dev.xkmc.l2library.serial.advancements.BaseCriterionInstance; +import dev.xkmc.l2serial.serialization.SerialClass; +import net.minecraft.advancements.critereon.ContextAwarePredicate; import net.minecraft.resources.ResourceLocation; import net.minecraft.server.level.ServerPlayer; @@ -12,7 +12,7 @@ public class PartCraftTrigger extends BaseCriterion { public static Ins ins() { - return new Ins(GolemTriggers.PART_CRAFT.getId(), EntityPredicate.Composite.ANY); + return new Ins(GolemTriggers.PART_CRAFT.getId(), ContextAwarePredicate.ANY); } public static Ins withMat(ResourceLocation mat) { @@ -36,7 +36,7 @@ public static class Ins extends BaseCriterionInstance { @SerialClass.SerialField private ResourceLocation rl = null; - public Ins(ResourceLocation id, EntityPredicate.Composite player) { + public Ins(ResourceLocation id, ContextAwarePredicate player) { super(id, player); } diff --git a/src/main/java/dev/xkmc/modulargolems/init/advancement/UpgradeApplyTrigger.java b/src/main/java/dev/xkmc/modulargolems/init/advancement/UpgradeApplyTrigger.java index 8413afa4f..94518b95a 100644 --- a/src/main/java/dev/xkmc/modulargolems/init/advancement/UpgradeApplyTrigger.java +++ b/src/main/java/dev/xkmc/modulargolems/init/advancement/UpgradeApplyTrigger.java @@ -1,10 +1,10 @@ package dev.xkmc.modulargolems.init.advancement; -import dev.xkmc.l2library.base.advancements.BaseCriterion; -import dev.xkmc.l2library.base.advancements.BaseCriterionInstance; -import dev.xkmc.l2library.serial.SerialClass; -import dev.xkmc.modulargolems.content.item.UpgradeItem; -import net.minecraft.advancements.critereon.EntityPredicate; +import dev.xkmc.l2library.serial.advancements.BaseCriterion; +import dev.xkmc.l2library.serial.advancements.BaseCriterionInstance; +import dev.xkmc.l2serial.serialization.SerialClass; +import dev.xkmc.modulargolems.content.item.upgrade.UpgradeItem; +import net.minecraft.advancements.critereon.ContextAwarePredicate; import net.minecraft.resources.ResourceLocation; import net.minecraft.server.level.ServerPlayer; import net.minecraft.world.item.ItemStack; @@ -13,7 +13,7 @@ public class UpgradeApplyTrigger extends BaseCriterion { public static Ins ins() { - return new Ins(GolemTriggers.UPGRADE_APPLY.getId(), EntityPredicate.Composite.ANY); + return new Ins(GolemTriggers.UPGRADE_APPLY.getId(), ContextAwarePredicate.ANY); } public static Ins withUpgrade(UpgradeItem item) { @@ -28,13 +28,20 @@ public static Ins withRemain(int remain) { return ans; } + public static Ins withTotal(int total) { + Ins ans = ins(); + ans.total = total; + return ans; + } + public UpgradeApplyTrigger(ResourceLocation id) { super(id, Ins::new, Ins.class); } - public void trigger(ServerPlayer player, ItemStack upgrade, int remain) { + public void trigger(ServerPlayer player, ItemStack upgrade, int remain, int total) { this.trigger(player, e -> (e.ingredient.isEmpty() || e.ingredient.test(upgrade)) && - (e.remain < 0 || e.remain >= remain)); + (e.remain < 0 || e.remain >= remain) && + (e.total < 0 || e.total <= total)); } @SerialClass @@ -44,9 +51,9 @@ public static class Ins extends BaseCriterionInstance private Ingredient ingredient = Ingredient.EMPTY; @SerialClass.SerialField - private int remain = -1; + private int remain = -1, total = -1; - public Ins(ResourceLocation id, EntityPredicate.Composite player) { + public Ins(ResourceLocation id, ContextAwarePredicate player) { super(id, player); } diff --git a/src/main/java/dev/xkmc/modulargolems/init/data/AdvGen.java b/src/main/java/dev/xkmc/modulargolems/init/data/MGAdvGen.java similarity index 84% rename from src/main/java/dev/xkmc/modulargolems/init/data/AdvGen.java rename to src/main/java/dev/xkmc/modulargolems/init/data/MGAdvGen.java index 564a03cea..3b9801fd7 100644 --- a/src/main/java/dev/xkmc/modulargolems/init/data/AdvGen.java +++ b/src/main/java/dev/xkmc/modulargolems/init/data/MGAdvGen.java @@ -1,8 +1,8 @@ package dev.xkmc.modulargolems.init.data; -import dev.xkmc.l2library.base.advancements.AdvancementGenerator; -import dev.xkmc.l2library.base.advancements.CriterionBuilder; -import dev.xkmc.l2library.repack.registrate.providers.RegistrateAdvancementProvider; +import com.tterrag.registrate.providers.RegistrateAdvancementProvider; +import dev.xkmc.l2library.serial.advancements.AdvancementGenerator; +import dev.xkmc.l2library.serial.advancements.CriterionBuilder; import dev.xkmc.modulargolems.content.item.golem.GolemHolder; import dev.xkmc.modulargolems.content.item.golem.GolemPart; import dev.xkmc.modulargolems.init.ModularGolems; @@ -13,7 +13,7 @@ import net.minecraft.world.entity.EntityType; import net.minecraft.world.item.Items; -public class AdvGen { +public class MGAdvGen { public static void genAdvancements(RegistrateAdvancementProvider pvd) { AdvancementGenerator gen = new AdvancementGenerator(pvd, ModularGolems.MODID); @@ -23,7 +23,7 @@ public static void genAdvancements(RegistrateAdvancementProvider pvd) { CriterionBuilder.item(Items.CLAY_BALL), "Welcome to Modular Golems", "Craft your army!"); var arm = root - .create("start", GolemItems.GOLEM_BODY.get(), CriterionBuilder.item(TagGen.GOLEM_PARTS), + .create("start", GolemItems.GOLEM_BODY.get(), CriterionBuilder.item(MGTagGen.GOLEM_PARTS), "The Beginning of Everything", "Craft a Golem Template and use Stone Cutter to cut it into a golem part") .create("apply", GolemPart.setMaterial(GolemItems.GOLEM_BODY.asStack(), new ResourceLocation(ModularGolems.MODID, "iron")), @@ -60,7 +60,7 @@ public static void genAdvancements(RegistrateAdvancementProvider pvd) { var golem = arm.create("craft", GolemItems.HOLDER_GOLEM.get().withUniformMaterial( new ResourceLocation(ModularGolems.MODID, "iron")), - CriterionBuilder.item(TagGen.GOLEM_HOLDERS), + CriterionBuilder.item(MGTagGen.GOLEM_HOLDERS), "A Brand New Golem", "Craft a Golem Holder with metal golem parts."); golem.create("thunder", Items.LIGHTNING_ROD, CriterionBuilder.one(GolemThunderTrigger.ins()), @@ -75,6 +75,12 @@ public static void genAdvancements(RegistrateAdvancementProvider pvd) { .create("kill_warden", Items.SCULK_CATALYST, CriterionBuilder.one(GolemKillTrigger.byType(EntityType.WARDEN)), "Ship of Theseus", "Let a golem kill a Warden").type(FrameType.CHALLENGE); + golem.create("summon", GolemItems.DISPENSE_WAND.get(), + CriterionBuilder.item(GolemItems.DISPENSE_WAND.get()), + "Airborne Battalion", "Craft a summon wand") + .create("summon_mass", GolemItems.DISPENSE_WAND.get(), + CriterionBuilder.one(GolemMassSummonTrigger.atLeast(24)), + "Portable Military", "Summon at least 24 golems at once").type(FrameType.CHALLENGE); golem.create("retrieve", GolemItems.RETRIEVAL_WAND.get(), CriterionBuilder.item(GolemItems.RETRIEVAL_WAND.get()), "Everyone Comes Back", "Craft a retrieval wand"); @@ -82,11 +88,14 @@ public static void genAdvancements(RegistrateAdvancementProvider pvd) { CriterionBuilder.item(GolemItems.COMMAND_WAND.get()), "Guard Your Home", "Craft a command wand"); var upgrade = golem.create("upgrade", GolemItems.EMPTY_UPGRADE.get(), - CriterionBuilder.item(TagGen.GOLEM_UPGRADES), + CriterionBuilder.item(MGTagGen.GOLEM_UPGRADES), "Upgrade Your Golem", "Obtain an upgrade"); upgrade.create("full", GolemItems.EMPTY_UPGRADE.get(), - CriterionBuilder.one(UpgradeApplyTrigger.withRemain(0)), - "No More Room", "Apply the maximum number of upgrades on a golem").type(FrameType.TASK); + CriterionBuilder.one(UpgradeApplyTrigger.withRemain(0)), + "No More Room", "Use up all upgrade slots").type(FrameType.TASK) + .create("max", GolemItems.TALENTED.get(), + CriterionBuilder.one(UpgradeApplyTrigger.withTotal(12)), + "Above and Beyond", "Apply 12 upgrades on a golem").type(FrameType.CHALLENGE); upgrade.create("recycle", GolemItems.RECYCLE.get(), CriterionBuilder.one(UpgradeApplyTrigger.withUpgrade(GolemItems.RECYCLE.get())), "Immortal Golem", "Apply a recycle upgrade on a golem").type(FrameType.CHALLENGE); diff --git a/src/main/java/dev/xkmc/modulargolems/init/data/ModConfig.java b/src/main/java/dev/xkmc/modulargolems/init/data/MGConfig.java similarity index 85% rename from src/main/java/dev/xkmc/modulargolems/init/data/ModConfig.java rename to src/main/java/dev/xkmc/modulargolems/init/data/MGConfig.java index a5109a481..e06b87d19 100644 --- a/src/main/java/dev/xkmc/modulargolems/init/data/ModConfig.java +++ b/src/main/java/dev/xkmc/modulargolems/init/data/MGConfig.java @@ -2,9 +2,18 @@ import net.minecraftforge.common.ForgeConfigSpec; import net.minecraftforge.fml.ModLoadingContext; +import net.minecraftforge.fml.config.IConfigSpec; +import net.minecraftforge.fml.config.ModConfig; import org.apache.commons.lang3.tuple.Pair; -public class ModConfig { +public class MGConfig { + + public static class Client { + + Client(ForgeConfigSpec.Builder builder) { + } + + } public static class Common { @@ -27,7 +36,6 @@ public static class Common { public final ForgeConfigSpec.DoubleValue conduitBoostSpeed; public final ForgeConfigSpec.IntValue thunderHeal; public final ForgeConfigSpec.IntValue teleportRadius; - public final ForgeConfigSpec.BooleanValue exponentialStat; public final ForgeConfigSpec.DoubleValue targetDamageBonus; public final ForgeConfigSpec.IntValue basePickupRange; public final ForgeConfigSpec.IntValue mendingXpCost; @@ -35,8 +43,6 @@ public static class Common { Common(ForgeConfigSpec.Builder builder) { barehandRetrieve = builder.comment("Allow players to retrieve the golems by bare hand") .define("barehandRetrieve", true); - exponentialStat = builder.comment("Percentage modifiers stack exponentially") - .define("exponentialStat", false); builder.push("modifiers"); thorn = builder.comment("Percentage damage reflection per level of thorn") @@ -95,20 +101,31 @@ public static class Common { } + public static final ForgeConfigSpec CLIENT_SPEC; + public static final Client CLIENT; + public static final ForgeConfigSpec COMMON_SPEC; public static final Common COMMON; static { + final Pair client = new ForgeConfigSpec.Builder().configure(Client::new); + CLIENT_SPEC = client.getRight(); + CLIENT = client.getLeft(); + final Pair specPair = new ForgeConfigSpec.Builder().configure(Common::new); COMMON_SPEC = specPair.getRight(); COMMON = specPair.getLeft(); } - /** - * Registers any relevant listeners for config - */ public static void init() { - ModLoadingContext.get().registerConfig(net.minecraftforge.fml.config.ModConfig.Type.COMMON, ModConfig.COMMON_SPEC); + register(ModConfig.Type.CLIENT, CLIENT_SPEC); + register(ModConfig.Type.COMMON, COMMON_SPEC); + } + + private static void register(ModConfig.Type type, IConfigSpec spec) { + var mod = ModLoadingContext.get().getActiveContainer(); + String path = "l2_configs/" + mod.getModId() + "-" + type.extension() + ".toml"; + ModLoadingContext.get().registerConfig(type, spec, path); } diff --git a/src/main/java/dev/xkmc/modulargolems/init/data/ConfigGen.java b/src/main/java/dev/xkmc/modulargolems/init/data/MGConfigGen.java similarity index 88% rename from src/main/java/dev/xkmc/modulargolems/init/data/ConfigGen.java rename to src/main/java/dev/xkmc/modulargolems/init/data/MGConfigGen.java index 5deaa411c..c42ab2632 100644 --- a/src/main/java/dev/xkmc/modulargolems/init/data/ConfigGen.java +++ b/src/main/java/dev/xkmc/modulargolems/init/data/MGConfigGen.java @@ -1,7 +1,6 @@ package dev.xkmc.modulargolems.init.data; -import dev.xkmc.l2library.serial.network.BaseConfig; -import dev.xkmc.l2library.serial.network.ConfigDataProvider; +import dev.xkmc.l2library.serial.config.ConfigDataProvider; import dev.xkmc.modulargolems.content.config.GolemMaterialConfig; import dev.xkmc.modulargolems.content.config.GolemPartConfig; import dev.xkmc.modulargolems.content.core.StatFilterType; @@ -14,19 +13,15 @@ import net.minecraft.world.item.Items; import net.minecraft.world.item.crafting.Ingredient; -import java.util.Map; +public class MGConfigGen extends ConfigDataProvider { -public class ConfigGen extends ConfigDataProvider { - - public ConfigGen(DataGenerator generator) { - super(generator, "data/modulargolems/golem_config/", "Golem Config"); + public MGConfigGen(DataGenerator generator) { + super(generator, "Golem Config"); } @Override - public void add(Map map) { - // stats of the material - // the value represents what if the entire golem is made of this material - map.put("materials/vanilla", new GolemMaterialConfig() + public void add(Collector map) { + map.add(ModularGolems.MATERIALS, new ResourceLocation(ModularGolems.MODID, "vanilla"), new GolemMaterialConfig() .addMaterial(new ResourceLocation(ModularGolems.MODID, "copper"), Ingredient.of(Items.COPPER_INGOT)) .addStat(GolemTypes.STAT_HEALTH.get(), 50) .addStat(GolemTypes.STAT_ATTACK.get(), 10) @@ -49,7 +44,7 @@ public void add(Map map) { .addStat(GolemTypes.STAT_SWEEP.get(), 2) .addModifier(GolemModifiers.FIRE_IMMUNE.get(), 1).end() - .addMaterial(new ResourceLocation(ModularGolems.MODID, "sculk"), Ingredient.of(TagGen.SCULK_MATS)) + .addMaterial(new ResourceLocation(ModularGolems.MODID, "sculk"), Ingredient.of(MGTagGen.SCULK_MATS)) .addStat(GolemTypes.STAT_HEALTH.get(), 500) .addStat(GolemTypes.STAT_ATTACK.get(), 30) .addStat(GolemTypes.STAT_SPEED.get(), 0.5) @@ -58,7 +53,7 @@ public void add(Map map) { ); // Choose which stat to use, and what percentage for the complete golem - map.put("parts/default", new GolemPartConfig() + map.add(ModularGolems.PARTS, new ResourceLocation(ModularGolems.MODID, "default"), new GolemPartConfig() .addPart(GolemItems.GOLEM_BODY.get()) .addFilter(StatFilterType.HEALTH, 0.5) .addFilter(StatFilterType.ATTACK, 0) diff --git a/src/main/java/dev/xkmc/modulargolems/init/data/LangData.java b/src/main/java/dev/xkmc/modulargolems/init/data/MGLangData.java similarity index 83% rename from src/main/java/dev/xkmc/modulargolems/init/data/LangData.java rename to src/main/java/dev/xkmc/modulargolems/init/data/MGLangData.java index 77360b033..bc4092958 100644 --- a/src/main/java/dev/xkmc/modulargolems/init/data/LangData.java +++ b/src/main/java/dev/xkmc/modulargolems/init/data/MGLangData.java @@ -1,6 +1,6 @@ package dev.xkmc.modulargolems.init.data; -import dev.xkmc.l2library.repack.registrate.providers.RegistrateLangProvider; +import com.tterrag.registrate.providers.RegistrateLangProvider; import dev.xkmc.modulargolems.compat.materials.common.CompatManager; import dev.xkmc.modulargolems.compat.misc.PatchouliLang; import dev.xkmc.modulargolems.content.entity.dog.DogGolemPartType; @@ -10,12 +10,11 @@ import net.minecraft.ChatFormatting; import net.minecraft.network.chat.Component; import net.minecraft.network.chat.MutableComponent; -import net.minecraft.network.chat.contents.TranslatableContents; import javax.annotation.Nullable; import java.util.Locale; -public enum LangData { +public enum MGLangData { HEALTH("tooltip.health", "Health: %s/%s", 2, null), SLOT("tooltip.slot", "Remaining Upgrade Slot: %s", 1, null), SHIFT("tooltip.shift", "Press SHIFT to show modifier details", 0, ChatFormatting.GRAY), @@ -28,18 +27,18 @@ public enum LangData { WAND_RETRIEVE("wand.retrieve", "Right click to retrieve all your surrounding golems. Shift right click faraway golems to retrieve golem back into inventory.", 0, ChatFormatting.GRAY), WAND_COMMAND("wand.command", "Right click to switch modes for golems. Shift right click Humanoid golem to configure inventory. Attacking entity with this wand will call all your surrounding golems to switch target to it.", 0, ChatFormatting.GRAY), - WAND_SUMMON("wand.summon", "Right click to summon all golems from your inventory. Shift right click to summon one golem to a faraway position pointed by the wand.", 0, ChatFormatting.GRAY), + WAND_SUMMON("wand.summon", "Right click to summon one golem to a faraway position pointed by the wand. Shift right click to summon all golems from your inventory.", 0, ChatFormatting.GRAY), + WAND_RIDER("wand.rider", "Right click to your doggolem to ride on it.", 0, ChatFormatting.GRAY), DESTROY_ITEM("msg.destroy_item", "Golem %s destroyed %s items because it finds no place to store.", 2, ChatFormatting.RED), - DESTROY_EXP("msg.destroy_exp", "Golem %s destroyed %s experience because it finds no place to store.", 2, ChatFormatting.RED), - ; + DESTROY_EXP("msg.destroy_exp", "Golem %s destroyed %s experience because it finds no place to store.", 2, ChatFormatting.RED); private final String key, def; private final int arg; private final ChatFormatting format; - LangData(String key, String def, int arg, @Nullable ChatFormatting format) { + MGLangData(String key, String def, int arg, @Nullable ChatFormatting format) { this.key = ModularGolems.MODID + "." + key; this.def = def; this.arg = arg; @@ -57,7 +56,7 @@ public static MutableComponent getTranslate(String s) { public MutableComponent get(Object... args) { if (args.length != arg) throw new IllegalArgumentException("for " + name() + ": expect " + arg + " parameters, got " + args.length); - MutableComponent ans = MutableComponent.create(new TranslatableContents(key, args)); + MutableComponent ans = Component.translatable(key, args); if (format != null) { return ans.withStyle(format); } @@ -65,12 +64,13 @@ public MutableComponent get(Object... args) { } public static void genLang(RegistrateLangProvider pvd) { - for (LangData lang : LangData.values()) { + for (MGLangData lang : MGLangData.values()) { pvd.add(lang.key, lang.def); } - pvd.add("itemGroup." + ModularGolems.MODID + ".golems", "Modular Golems"); pvd.add("attribute.name.golem_regen", "Golem Regen"); pvd.add("attribute.name.golem_sweep", "Sweep Range"); + pvd.add("attribute.name.golem_size", "Golem Size"); + pvd.add("attribute.name.golem_jump", "Golem Jump Strength"); pvd.add("golem_material." + ModularGolems.MODID + ".copper", "Copper"); pvd.add("golem_material." + ModularGolems.MODID + ".iron", "Iron"); diff --git a/src/main/java/dev/xkmc/modulargolems/init/data/TagGen.java b/src/main/java/dev/xkmc/modulargolems/init/data/MGTagGen.java similarity index 70% rename from src/main/java/dev/xkmc/modulargolems/init/data/TagGen.java rename to src/main/java/dev/xkmc/modulargolems/init/data/MGTagGen.java index 15d1e0897..3be462b91 100644 --- a/src/main/java/dev/xkmc/modulargolems/init/data/TagGen.java +++ b/src/main/java/dev/xkmc/modulargolems/init/data/MGTagGen.java @@ -1,12 +1,14 @@ package dev.xkmc.modulargolems.init.data; -import dev.xkmc.l2library.repack.registrate.providers.RegistrateItemTagsProvider; -import dev.xkmc.l2library.repack.registrate.providers.RegistrateTagsProvider; +import com.tterrag.registrate.providers.RegistrateItemTagsProvider; +import com.tterrag.registrate.providers.RegistrateTagsProvider; import dev.xkmc.modulargolems.init.ModularGolems; import dev.xkmc.modulargolems.init.registrate.GolemItems; -import net.minecraft.core.Registry; +import dev.xkmc.modulargolems.init.registrate.GolemTypes; +import net.minecraft.core.registries.Registries; import net.minecraft.resources.ResourceLocation; import net.minecraft.tags.BlockTags; +import net.minecraft.tags.EntityTypeTags; import net.minecraft.tags.ItemTags; import net.minecraft.tags.TagKey; import net.minecraft.world.entity.EntityType; @@ -19,7 +21,7 @@ import java.util.List; import java.util.function.Consumer; -public class TagGen { +public class MGTagGen { public static final TagKey SCULK_MATS = createItemTag("sculk_materials"); public static final TagKey GOLEM_PARTS = createItemTag("parts"); @@ -34,7 +36,7 @@ public class TagGen { public static final List>> OPTIONAL_BLOCK = new ArrayList<>(); public static void onBlockTagGen(RegistrateTagsProvider pvd) { - pvd.tag(POTENTIAL_DST) + pvd.addTag(POTENTIAL_DST) .addTag(BlockTags.SHULKER_BOXES) .addTag(Tags.Blocks.CHESTS) .addTag(Tags.Blocks.BARRELS); @@ -42,9 +44,9 @@ public static void onBlockTagGen(RegistrateTagsProvider pvd) { } public static void onItemTagGen(RegistrateItemTagsProvider pvd) { - pvd.tag(SCULK_MATS).add(Items.ECHO_SHARD); + pvd.addTag(SCULK_MATS).add(Items.ECHO_SHARD); OPTIONAL_ITEM.forEach(e -> e.accept(pvd)); - pvd.tag(BLUE_UPGRADES).add( + pvd.addTag(BLUE_UPGRADES).add( GolemItems.BELL.get(), GolemItems.ENDER_SIGHT.get(), GolemItems.FLOAT.get(), @@ -55,17 +57,21 @@ public static void onItemTagGen(RegistrateItemTagsProvider pvd) { GolemItems.SWIM.get(), GolemItems.FIRE_IMMUNE.get(), GolemItems.THUNDER_IMMUNE.get(), - GolemItems.PLAYER_IMMUNE.get() + GolemItems.PLAYER_IMMUNE.get(), + GolemItems.MOUNT_UPGRADE.get(), + GolemItems.SIZE_UPGRADE.get() ); - pvd.tag(POTION_UPGRADES).add( + pvd.addTag(POTION_UPGRADES).add( GolemItems.WEAK.get(), GolemItems.SLOW.get(), GolemItems.WITHER.get() ); } - public static void onEntityTagGen(RegistrateTagsProvider> pvd) { - pvd.tag(GOLEM_FRIENDLY).add(EntityType.PLAYER, EntityType.SNOW_GOLEM); + public static void onEntityTagGen(RegistrateTagsProvider.IntrinsicImpl> pvd) { + pvd.addTag(GOLEM_FRIENDLY).add(EntityType.PLAYER, EntityType.SNOW_GOLEM); + pvd.addTag(EntityTypeTags.FALL_DAMAGE_IMMUNE).add(GolemTypes.ENTITY_GOLEM.get(), + GolemTypes.ENTITY_HUMANOID.get(), GolemTypes.ENTITY_DOG.get()); } private static TagKey createItemTag(String id) { @@ -73,11 +79,11 @@ private static TagKey createItemTag(String id) { } private static TagKey> createEntityTag(String id) { - return TagKey.create(Registry.ENTITY_TYPE_REGISTRY, new ResourceLocation(ModularGolems.MODID, id)); + return TagKey.create(Registries.ENTITY_TYPE, new ResourceLocation(ModularGolems.MODID, id)); } private static TagKey createBlockTag(String id) { - return TagKey.create(Registry.BLOCK_REGISTRY, new ResourceLocation(ModularGolems.MODID, id)); + return TagKey.create(Registries.BLOCK, new ResourceLocation(ModularGolems.MODID, id)); } } diff --git a/src/main/java/dev/xkmc/modulargolems/init/data/RecipeGen.java b/src/main/java/dev/xkmc/modulargolems/init/data/RecipeGen.java index d376f5c08..ae0709677 100644 --- a/src/main/java/dev/xkmc/modulargolems/init/data/RecipeGen.java +++ b/src/main/java/dev/xkmc/modulargolems/init/data/RecipeGen.java @@ -1,12 +1,13 @@ package dev.xkmc.modulargolems.init.data; -import dev.xkmc.l2library.base.ingredients.EnchantmentIngredient; -import dev.xkmc.l2library.repack.registrate.providers.RegistrateRecipeProvider; -import dev.xkmc.l2library.repack.registrate.util.DataIngredient; +import com.tterrag.registrate.providers.RegistrateRecipeProvider; +import com.tterrag.registrate.util.DataIngredient; +import dev.xkmc.l2library.serial.ingredients.EnchantmentIngredient; import dev.xkmc.modulargolems.compat.materials.common.CompatManager; import dev.xkmc.modulargolems.content.recipe.GolemAssembleBuilder; import dev.xkmc.modulargolems.init.registrate.GolemItems; import net.minecraft.advancements.critereon.InventoryChangeTrigger; +import net.minecraft.data.recipes.RecipeCategory; import net.minecraft.data.recipes.ShapedRecipeBuilder; import net.minecraft.data.recipes.ShapelessRecipeBuilder; import net.minecraft.tags.ItemTags; @@ -27,45 +28,52 @@ public static void genRecipe(RegistrateRecipeProvider pvd) { // golem base { - unlock(pvd, ShapedRecipeBuilder.shaped(GolemItems.GOLEM_TEMPLATE.get())::unlockedBy, + unlock(pvd, ShapedRecipeBuilder.shaped(RecipeCategory.MISC, GolemItems.GOLEM_TEMPLATE.get())::unlockedBy, Items.CLAY).pattern("CBC").pattern("BAB").pattern("CBC") .define('A', Items.COPPER_INGOT).define('B', Items.STICK) .define('C', Items.CLAY_BALL).save(pvd); - unlock(pvd, ShapedRecipeBuilder.shaped(GolemItems.RETRIEVAL_WAND.get())::unlockedBy, Items.ENDER_PEARL) + unlock(pvd, ShapedRecipeBuilder.shaped(RecipeCategory.MISC, GolemItems.RETRIEVAL_WAND.get())::unlockedBy, GolemItems.GOLEM_TEMPLATE.get()) .pattern(" ET").pattern(" SE").pattern("S ") .define('E', Items.ENDER_PEARL) .define('S', Items.STICK) .define('T', GolemItems.GOLEM_TEMPLATE.get()) .save(pvd); - unlock(pvd, ShapedRecipeBuilder.shaped(GolemItems.DISPENSE_WAND.get())::unlockedBy, Items.DISPENSER) + unlock(pvd, ShapedRecipeBuilder.shaped(RecipeCategory.MISC, GolemItems.DISPENSE_WAND.get())::unlockedBy, GolemItems.GOLEM_TEMPLATE.get()) .pattern(" ET").pattern(" SE").pattern("S ") .define('E', Items.DISPENSER) .define('S', Items.STICK) .define('T', GolemItems.GOLEM_TEMPLATE.get()) .save(pvd); - unlock(pvd, ShapedRecipeBuilder.shaped(GolemItems.COMMAND_WAND.get())::unlockedBy, Items.GOLD_INGOT) + unlock(pvd, ShapedRecipeBuilder.shaped(RecipeCategory.MISC, GolemItems.COMMAND_WAND.get())::unlockedBy, GolemItems.GOLEM_TEMPLATE.get()) .pattern(" ET").pattern(" SE").pattern("S ") .define('E', Items.GOLD_INGOT) .define('S', Items.STICK) .define('T', GolemItems.GOLEM_TEMPLATE.get()) .save(pvd); - unlock(pvd, ShapedRecipeBuilder.shaped(GolemItems.EMPTY_UPGRADE.get(), 4)::unlockedBy, + unlock(pvd, ShapedRecipeBuilder.shaped(RecipeCategory.MISC, GolemItems.RIDER_WAND.get())::unlockedBy, GolemItems.GOLEM_TEMPLATE.get()) + .pattern(" ET").pattern(" SE").pattern("S ") + .define('E', Items.WHITE_BANNER) + .define('S', Items.STICK) + .define('T', GolemItems.GOLEM_TEMPLATE.get()) + .save(pvd); + + unlock(pvd, ShapedRecipeBuilder.shaped(RecipeCategory.MISC, GolemItems.EMPTY_UPGRADE.get(), 4)::unlockedBy, Items.AMETHYST_SHARD).pattern("CBC").pattern("BAB").pattern("CBC") .define('A', Items.AMETHYST_SHARD).define('B', Items.IRON_INGOT) .define('C', Items.CLAY_BALL).save(pvd); - pvd.stonecutting(DataIngredient.items(GolemItems.GOLEM_TEMPLATE.get()), GolemItems.GOLEM_BODY); - pvd.stonecutting(DataIngredient.items(GolemItems.GOLEM_TEMPLATE.get()), GolemItems.GOLEM_ARM); - pvd.stonecutting(DataIngredient.items(GolemItems.GOLEM_TEMPLATE.get()), GolemItems.GOLEM_LEGS); - pvd.stonecutting(DataIngredient.items(GolemItems.GOLEM_TEMPLATE.get()), GolemItems.HUMANOID_BODY); - pvd.stonecutting(DataIngredient.items(GolemItems.GOLEM_TEMPLATE.get()), GolemItems.HUMANOID_ARMS); - pvd.stonecutting(DataIngredient.items(GolemItems.GOLEM_TEMPLATE.get()), GolemItems.HUMANOID_LEGS); - pvd.stonecutting(DataIngredient.items(GolemItems.GOLEM_TEMPLATE.get()), GolemItems.DOG_BODY); - pvd.stonecutting(DataIngredient.items(GolemItems.GOLEM_TEMPLATE.get()), GolemItems.DOG_LEGS); + pvd.stonecutting(DataIngredient.items(GolemItems.GOLEM_TEMPLATE.get()), RecipeCategory.MISC, GolemItems.GOLEM_BODY); + pvd.stonecutting(DataIngredient.items(GolemItems.GOLEM_TEMPLATE.get()), RecipeCategory.MISC, GolemItems.GOLEM_ARM); + pvd.stonecutting(DataIngredient.items(GolemItems.GOLEM_TEMPLATE.get()), RecipeCategory.MISC, GolemItems.GOLEM_LEGS); + pvd.stonecutting(DataIngredient.items(GolemItems.GOLEM_TEMPLATE.get()), RecipeCategory.MISC, GolemItems.HUMANOID_BODY); + pvd.stonecutting(DataIngredient.items(GolemItems.GOLEM_TEMPLATE.get()), RecipeCategory.MISC, GolemItems.HUMANOID_ARMS); + pvd.stonecutting(DataIngredient.items(GolemItems.GOLEM_TEMPLATE.get()), RecipeCategory.MISC, GolemItems.HUMANOID_LEGS); + pvd.stonecutting(DataIngredient.items(GolemItems.GOLEM_TEMPLATE.get()), RecipeCategory.MISC, GolemItems.DOG_BODY); + pvd.stonecutting(DataIngredient.items(GolemItems.GOLEM_TEMPLATE.get()), RecipeCategory.MISC, GolemItems.DOG_LEGS); unlock(pvd, new GolemAssembleBuilder(GolemItems.HOLDER_GOLEM.get(), 1)::unlockedBy, GolemItems.GOLEM_BODY.get()) @@ -93,19 +101,19 @@ public static void genRecipe(RegistrateRecipeProvider pvd) { // upgrades { - unlock(pvd, ShapedRecipeBuilder.shaped(GolemItems.FIRE_IMMUNE.get())::unlockedBy, GolemItems.EMPTY_UPGRADE.get()) + unlock(pvd, ShapedRecipeBuilder.shaped(RecipeCategory.MISC, GolemItems.FIRE_IMMUNE.get())::unlockedBy, GolemItems.EMPTY_UPGRADE.get()) .pattern(" A ").pattern("ABA").pattern(" A ") .define('A', Items.MAGMA_CREAM) .define('B', GolemItems.EMPTY_UPGRADE.get()) .save(pvd); - unlock(pvd, ShapedRecipeBuilder.shaped(GolemItems.THUNDER_IMMUNE.get())::unlockedBy, GolemItems.EMPTY_UPGRADE.get()) + unlock(pvd, ShapedRecipeBuilder.shaped(RecipeCategory.MISC, GolemItems.THUNDER_IMMUNE.get())::unlockedBy, GolemItems.EMPTY_UPGRADE.get()) .pattern(" A ").pattern("ABA").pattern(" A ") .define('A', Items.LIGHTNING_ROD) .define('B', GolemItems.EMPTY_UPGRADE.get()) .save(pvd); - unlock(pvd, ShapedRecipeBuilder.shaped(GolemItems.RECYCLE.get())::unlockedBy, GolemItems.EMPTY_UPGRADE.get()) + unlock(pvd, ShapedRecipeBuilder.shaped(RecipeCategory.MISC, GolemItems.RECYCLE.get())::unlockedBy, GolemItems.EMPTY_UPGRADE.get()) .pattern(" C ").pattern("ABA").pattern(" D ") .define('A', Items.ENDER_PEARL) .define('B', GolemItems.EMPTY_UPGRADE.get()) @@ -113,69 +121,69 @@ public static void genRecipe(RegistrateRecipeProvider pvd) { .define('D', Items.RESPAWN_ANCHOR) .save(pvd); - unlock(pvd, ShapedRecipeBuilder.shaped(GolemItems.DIAMOND.get())::unlockedBy, GolemItems.EMPTY_UPGRADE.get()) + unlock(pvd, ShapedRecipeBuilder.shaped(RecipeCategory.MISC, GolemItems.DIAMOND.get())::unlockedBy, GolemItems.EMPTY_UPGRADE.get()) .pattern("CAC").pattern("ABA").pattern("CAC") .define('A', Items.DIAMOND_BLOCK) .define('B', GolemItems.EMPTY_UPGRADE.get()) .define('C', Items.DIAMOND) .save(pvd); - unlock(pvd, ShapedRecipeBuilder.shaped(GolemItems.NETHERITE.get())::unlockedBy, GolemItems.EMPTY_UPGRADE.get()) + unlock(pvd, ShapedRecipeBuilder.shaped(RecipeCategory.MISC, GolemItems.NETHERITE.get())::unlockedBy, GolemItems.EMPTY_UPGRADE.get()) .pattern("CAC").pattern("ABA").pattern("CAC") .define('A', Items.NETHERITE_INGOT) .define('B', GolemItems.EMPTY_UPGRADE.get()) .define('C', Items.DIAMOND) .save(pvd); - unlock(pvd, ShapedRecipeBuilder.shaped(GolemItems.QUARTZ.get())::unlockedBy, GolemItems.EMPTY_UPGRADE.get()) + unlock(pvd, ShapedRecipeBuilder.shaped(RecipeCategory.MISC, GolemItems.QUARTZ.get())::unlockedBy, GolemItems.EMPTY_UPGRADE.get()) .pattern("CAC").pattern("ABA").pattern("CAC") .define('A', Items.QUARTZ_BLOCK) .define('B', GolemItems.EMPTY_UPGRADE.get()) .define('C', Items.QUARTZ) .save(pvd); - unlock(pvd, ShapedRecipeBuilder.shaped(GolemItems.GOLD.get())::unlockedBy, GolemItems.EMPTY_UPGRADE.get()) + unlock(pvd, ShapedRecipeBuilder.shaped(RecipeCategory.MISC, GolemItems.GOLD.get())::unlockedBy, GolemItems.EMPTY_UPGRADE.get()) .pattern("CAC").pattern("ABA").pattern("CAC") .define('A', Items.GOLDEN_APPLE) .define('B', GolemItems.EMPTY_UPGRADE.get()) .define('C', Items.GOLDEN_CARROT) .save(pvd); - unlock(pvd, ShapedRecipeBuilder.shaped(GolemItems.SPONGE.get())::unlockedBy, GolemItems.EMPTY_UPGRADE.get()) + unlock(pvd, ShapedRecipeBuilder.shaped(RecipeCategory.MISC, GolemItems.SPONGE.get())::unlockedBy, GolemItems.EMPTY_UPGRADE.get()) .pattern(" A ").pattern("ABA").pattern(" A ") .define('A', Items.WET_SPONGE) .define('B', GolemItems.EMPTY_UPGRADE.get()) .save(pvd); - unlock(pvd, ShapelessRecipeBuilder.shapeless(GolemItems.ENCHANTED_GOLD.get())::unlockedBy, GolemItems.EMPTY_UPGRADE.get()) + unlock(pvd, ShapelessRecipeBuilder.shapeless(RecipeCategory.MISC, GolemItems.ENCHANTED_GOLD.get())::unlockedBy, GolemItems.EMPTY_UPGRADE.get()) .requires(GolemItems.EMPTY_UPGRADE.get()).requires(Items.ENCHANTED_GOLDEN_APPLE) .save(pvd); - unlock(pvd, ShapelessRecipeBuilder.shapeless(GolemItems.FLOAT.get())::unlockedBy, GolemItems.EMPTY_UPGRADE.get()) + unlock(pvd, ShapelessRecipeBuilder.shapeless(RecipeCategory.MISC, GolemItems.FLOAT.get())::unlockedBy, GolemItems.EMPTY_UPGRADE.get()) .requires(GolemItems.EMPTY_UPGRADE.get()).requires(ItemTags.BOATS) .save(pvd); - unlock(pvd, ShapelessRecipeBuilder.shapeless(GolemItems.SWIM.get())::unlockedBy, GolemItems.EMPTY_UPGRADE.get()) + unlock(pvd, ShapelessRecipeBuilder.shapeless(RecipeCategory.MISC, GolemItems.SWIM.get())::unlockedBy, GolemItems.EMPTY_UPGRADE.get()) .requires(GolemItems.EMPTY_UPGRADE.get()).requires(Items.HEART_OF_THE_SEA) .save(pvd); - unlock(pvd, ShapelessRecipeBuilder.shapeless(GolemItems.PLAYER_IMMUNE.get())::unlockedBy, GolemItems.EMPTY_UPGRADE.get()) + unlock(pvd, ShapelessRecipeBuilder.shapeless(RecipeCategory.MISC, GolemItems.PLAYER_IMMUNE.get())::unlockedBy, GolemItems.EMPTY_UPGRADE.get()) .requires(GolemItems.EMPTY_UPGRADE.get()).requires(Items.NETHER_STAR) .save(pvd); - unlock(pvd, ShapelessRecipeBuilder.shapeless(GolemItems.BELL.get())::unlockedBy, GolemItems.EMPTY_UPGRADE.get()) + unlock(pvd, ShapelessRecipeBuilder.shapeless(RecipeCategory.MISC, GolemItems.BELL.get())::unlockedBy, GolemItems.EMPTY_UPGRADE.get()) .requires(GolemItems.EMPTY_UPGRADE.get()).requires(Items.BELL) .save(pvd); - unlock(pvd, ShapelessRecipeBuilder.shapeless(GolemItems.ENDER_SIGHT.get())::unlockedBy, GolemItems.EMPTY_UPGRADE.get()) + unlock(pvd, ShapelessRecipeBuilder.shapeless(RecipeCategory.MISC, GolemItems.ENDER_SIGHT.get())::unlockedBy, GolemItems.EMPTY_UPGRADE.get()) .requires(GolemItems.EMPTY_UPGRADE.get()).requires(Items.ENDER_EYE) .save(pvd); - unlock(pvd, ShapelessRecipeBuilder.shapeless(GolemItems.SPEED.get())::unlockedBy, GolemItems.EMPTY_UPGRADE.get()) + unlock(pvd, ShapelessRecipeBuilder.shapeless(RecipeCategory.MISC, GolemItems.SPEED.get())::unlockedBy, GolemItems.EMPTY_UPGRADE.get()) .requires(GolemItems.EMPTY_UPGRADE.get()).requires(Items.RABBIT_FOOT) .save(pvd); - unlock(pvd, ShapedRecipeBuilder.shaped(GolemItems.WEAK.get())::unlockedBy, GolemItems.EMPTY_UPGRADE.get()) + unlock(pvd, ShapedRecipeBuilder.shaped(RecipeCategory.MISC, GolemItems.WEAK.get())::unlockedBy, GolemItems.EMPTY_UPGRADE.get()) .pattern("CDC").pattern("ABA").pattern("CDC") .define('A', Items.DRAGON_BREATH) .define('B', GolemItems.EMPTY_UPGRADE.get()) @@ -183,7 +191,7 @@ public static void genRecipe(RegistrateRecipeProvider pvd) { .define('D', Items.REDSTONE) .save(pvd); - unlock(pvd, ShapedRecipeBuilder.shaped(GolemItems.SLOW.get())::unlockedBy, GolemItems.EMPTY_UPGRADE.get()) + unlock(pvd, ShapedRecipeBuilder.shaped(RecipeCategory.MISC, GolemItems.SLOW.get())::unlockedBy, GolemItems.EMPTY_UPGRADE.get()) .pattern("CDC").pattern("ABA").pattern("EDE") .define('A', Items.DRAGON_BREATH) .define('B', GolemItems.EMPTY_UPGRADE.get()) @@ -192,7 +200,7 @@ public static void genRecipe(RegistrateRecipeProvider pvd) { .define('E', Items.SUGAR) .save(pvd); - unlock(pvd, ShapedRecipeBuilder.shaped(GolemItems.WITHER.get())::unlockedBy, GolemItems.EMPTY_UPGRADE.get()) + unlock(pvd, ShapedRecipeBuilder.shaped(RecipeCategory.MISC, GolemItems.WITHER.get())::unlockedBy, GolemItems.EMPTY_UPGRADE.get()) .pattern("CDC").pattern("ABA").pattern("CDC") .define('A', Items.DRAGON_BREATH) .define('B', GolemItems.EMPTY_UPGRADE.get()) @@ -200,14 +208,14 @@ public static void genRecipe(RegistrateRecipeProvider pvd) { .define('D', Items.REDSTONE) .save(pvd); - unlock(pvd, ShapedRecipeBuilder.shaped(GolemItems.EMERALD.get())::unlockedBy, GolemItems.EMPTY_UPGRADE.get()) + unlock(pvd, ShapedRecipeBuilder.shaped(RecipeCategory.MISC, GolemItems.EMERALD.get())::unlockedBy, GolemItems.EMPTY_UPGRADE.get()) .pattern("CAC").pattern("ABA").pattern("CAC") .define('A', Items.EMERALD_BLOCK) .define('B', GolemItems.EMPTY_UPGRADE.get()) .define('C', Items.EMERALD) .save(pvd); - unlock(pvd, ShapedRecipeBuilder.shaped(GolemItems.PICKUP.get())::unlockedBy, GolemItems.EMPTY_UPGRADE.get()) + unlock(pvd, ShapedRecipeBuilder.shaped(RecipeCategory.MISC, GolemItems.PICKUP.get())::unlockedBy, GolemItems.EMPTY_UPGRADE.get()) .pattern("AAA").pattern("DBD").pattern(" C ") .define('A', Items.HOPPER) .define('B', GolemItems.EMPTY_UPGRADE.get()) @@ -215,17 +223,17 @@ public static void genRecipe(RegistrateRecipeProvider pvd) { .define('D', Items.ENDER_PEARL) .save(pvd); - unlock(pvd, ShapelessRecipeBuilder.shapeless(GolemItems.PICKUP_MENDING.get())::unlockedBy, GolemItems.EMPTY_UPGRADE.get()) + unlock(pvd, ShapelessRecipeBuilder.shapeless(RecipeCategory.MISC, GolemItems.PICKUP_MENDING.get())::unlockedBy, GolemItems.EMPTY_UPGRADE.get()) .requires(GolemItems.EMPTY_UPGRADE.get()) .requires(new EnchantmentIngredient(Enchantments.MENDING, 1)) .save(pvd); - unlock(pvd, ShapelessRecipeBuilder.shapeless(GolemItems.PICKUP_NO_DESTROY.get())::unlockedBy, GolemItems.EMPTY_UPGRADE.get()) + unlock(pvd, ShapelessRecipeBuilder.shapeless(RecipeCategory.MISC, GolemItems.PICKUP_NO_DESTROY.get())::unlockedBy, GolemItems.EMPTY_UPGRADE.get()) .requires(GolemItems.EMPTY_UPGRADE.get()) .requires(Items.ZOMBIE_HEAD) .save(pvd); - unlock(pvd, ShapedRecipeBuilder.shaped(GolemItems.TALENTED.get())::unlockedBy, GolemItems.EMPTY_UPGRADE.get()) + unlock(pvd, ShapedRecipeBuilder.shaped(RecipeCategory.MISC, GolemItems.TALENTED.get())::unlockedBy, GolemItems.EMPTY_UPGRADE.get()) .pattern("CEC").pattern("ABA").pattern("CAC") .define('A', Items.NETHER_STAR) .define('B', GolemItems.EMPTY_UPGRADE.get()) @@ -233,7 +241,7 @@ public static void genRecipe(RegistrateRecipeProvider pvd) { .define('E', Items.DRAGON_HEAD) .save(pvd); - unlock(pvd, ShapedRecipeBuilder.shaped(GolemItems.CAULDRON.get())::unlockedBy, GolemItems.EMPTY_UPGRADE.get()) + unlock(pvd, ShapedRecipeBuilder.shaped(RecipeCategory.MISC, GolemItems.CAULDRON.get())::unlockedBy, GolemItems.EMPTY_UPGRADE.get()) .pattern("CEC").pattern("ABA").pattern("CDC") .define('A', Items.NETHER_STAR) .define('B', GolemItems.EMPTY_UPGRADE.get()) @@ -242,6 +250,17 @@ public static void genRecipe(RegistrateRecipeProvider pvd) { .define('E', Items.DRAGON_HEAD) .save(pvd); + unlock(pvd, ShapelessRecipeBuilder.shapeless(RecipeCategory.MISC, GolemItems.MOUNT_UPGRADE.get())::unlockedBy, GolemItems.EMPTY_UPGRADE.get()) + .requires(GolemItems.EMPTY_UPGRADE.get()).requires(Items.SADDLE) + .save(pvd); + + unlock(pvd, ShapedRecipeBuilder.shaped(RecipeCategory.MISC, GolemItems.SIZE_UPGRADE.get())::unlockedBy, GolemItems.EMPTY_UPGRADE.get()) + .pattern("CAC").pattern("ABA").pattern("CAC") + .define('A', Items.IRON_BLOCK) + .define('B', GolemItems.EMPTY_UPGRADE.get()) + .define('C', Items.COPPER_BLOCK) + .save(pvd); + } CompatManager.dispatchGenRecipe(pvd); diff --git a/src/main/java/dev/xkmc/modulargolems/init/registrate/GolemItems.java b/src/main/java/dev/xkmc/modulargolems/init/registrate/GolemItems.java index a686a1e3b..80b882ac3 100644 --- a/src/main/java/dev/xkmc/modulargolems/init/registrate/GolemItems.java +++ b/src/main/java/dev/xkmc/modulargolems/init/registrate/GolemItems.java @@ -1,41 +1,45 @@ package dev.xkmc.modulargolems.init.registrate; +import com.tterrag.registrate.builders.ItemBuilder; +import com.tterrag.registrate.providers.ProviderType; +import com.tterrag.registrate.util.entry.ItemEntry; +import com.tterrag.registrate.util.entry.RegistryEntry; import dev.xkmc.l2library.base.L2Registrate; -import dev.xkmc.l2library.repack.registrate.builders.ItemBuilder; -import dev.xkmc.l2library.repack.registrate.providers.ProviderType; -import dev.xkmc.l2library.repack.registrate.util.entry.ItemEntry; -import dev.xkmc.l2library.repack.registrate.util.entry.RegistryEntry; +import dev.xkmc.modulargolems.compat.materials.common.CompatManager; import dev.xkmc.modulargolems.content.entity.dog.DogGolemEntity; import dev.xkmc.modulargolems.content.entity.dog.DogGolemPartType; import dev.xkmc.modulargolems.content.entity.humanoid.HumaniodGolemPartType; import dev.xkmc.modulargolems.content.entity.humanoid.HumanoidGolemEntity; import dev.xkmc.modulargolems.content.entity.metalgolem.MetalGolemEntity; import dev.xkmc.modulargolems.content.entity.metalgolem.MetalGolemPartType; -import dev.xkmc.modulargolems.content.item.CommandWandItem; -import dev.xkmc.modulargolems.content.item.DispenseWand; -import dev.xkmc.modulargolems.content.item.RetrievalWandItem; -import dev.xkmc.modulargolems.content.item.SimpleUpgradeItem; +import dev.xkmc.modulargolems.content.item.equipments.MetalGolemArmorItem; import dev.xkmc.modulargolems.content.item.golem.GolemHolder; import dev.xkmc.modulargolems.content.item.golem.GolemPart; +import dev.xkmc.modulargolems.content.item.upgrade.SimpleUpgradeItem; +import dev.xkmc.modulargolems.content.item.wand.CommandWandItem; +import dev.xkmc.modulargolems.content.item.wand.DispenseWand; +import dev.xkmc.modulargolems.content.item.wand.RetrievalWandItem; +import dev.xkmc.modulargolems.content.item.wand.RiderWandItem; import dev.xkmc.modulargolems.content.modifier.base.GolemModifier; import dev.xkmc.modulargolems.init.ModularGolems; -import dev.xkmc.modulargolems.init.data.TagGen; +import dev.xkmc.modulargolems.init.data.MGTagGen; import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.item.ArmorItem; import net.minecraft.world.item.CreativeModeTab; import net.minecraft.world.item.Item; -import net.minecraft.world.item.ItemStack; import net.minecraftforge.client.model.generators.ModelFile; - import java.util.function.Supplier; - +import static dev.xkmc.modulargolems.content.item.equipments.GolemEquipmentModels.CHESTPLATES; +import static dev.xkmc.modulargolems.content.item.equipments.GolemEquipmentModels.HELMETS; import static dev.xkmc.modulargolems.init.ModularGolems.REGISTRATE; public class GolemItems { - public static final Tab GOLEMS = new Tab("golems"); + public static final RegistryEntry TAB; static { - REGISTRATE.creativeModeTab(() -> GOLEMS); + TAB = REGISTRATE.buildL2CreativeTab("golems", "Modular Golems", b -> b + .icon(GolemItems.HOLDER_GOLEM::asStack)); } public static final ItemEntry GOLEM_TEMPLATE, EMPTY_UPGRADE; @@ -51,20 +55,27 @@ public class GolemItems { public static final ItemEntry FIRE_IMMUNE, THUNDER_IMMUNE, RECYCLE, DIAMOND, NETHERITE, QUARTZ, GOLD, ENCHANTED_GOLD, FLOAT, SPONGE, SWIM, PLAYER_IMMUNE, ENDER_SIGHT, BELL, SPEED, SLOW, WEAK, WITHER, - EMERALD, PICKUP, PICKUP_MENDING, PICKUP_NO_DESTROY, TALENTED, CAULDRON; + EMERALD, PICKUP, PICKUP_MENDING, PICKUP_NO_DESTROY, TALENTED, CAULDRON, MOUNT_UPGRADE, SIZE_UPGRADE; public static final ItemEntry RETRIEVAL_WAND; public static final ItemEntry COMMAND_WAND; public static final ItemEntry DISPENSE_WAND; - + public static final ItemEntry RIDER_WAND; + public static final ItemEntry GOLEMGUARD_HELMET,GOLEMGUARD_CHESTPLATE; static { GOLEM_TEMPLATE = REGISTRATE.item("metal_golem_template", Item::new).defaultModel().defaultLang().register(); - RETRIEVAL_WAND = REGISTRATE.item("retrieval_wand", p -> new RetrievalWandItem(p.stacksTo(1))).defaultModel().defaultLang().register(); - COMMAND_WAND = REGISTRATE.item("command_wand", p -> new CommandWandItem(p.stacksTo(1))).defaultModel().defaultLang().register(); - DISPENSE_WAND = REGISTRATE.item("summon_wand", p -> new DispenseWand(p.stacksTo(1))).defaultModel().defaultLang().register(); - + RETRIEVAL_WAND = REGISTRATE.item("retrieval_wand", p -> new RetrievalWandItem(p.stacksTo(1))).model((ctx, pvd) -> pvd.handheld(ctx)).defaultLang().register(); + COMMAND_WAND = REGISTRATE.item("command_wand", p -> new CommandWandItem(p.stacksTo(1))).model((ctx, pvd) -> pvd.handheld(ctx)).defaultLang().register(); + DISPENSE_WAND = REGISTRATE.item("summon_wand", p -> new DispenseWand(p.stacksTo(1))).model((ctx, pvd) -> pvd.handheld(ctx)).defaultLang().register(); + RIDER_WAND = REGISTRATE.item("rider_wand", p -> new RiderWandItem(p.stacksTo(1))).model((ctx, pvd) -> pvd.handheld(ctx)).defaultLang().register(); + // golemguard armor + { + GOLEMGUARD_HELMET = REGISTRATE.item("golemguard_helmet",p ->new MetalGolemArmorItem(p.stacksTo(1), ArmorItem.Type.HELMET,6,3,HELMETS)).model((ctx, pvd) -> pvd.generated(ctx,pvd.modLoc("item/equipments/"+ctx.getName()))).defaultLang().register(); + GOLEMGUARD_CHESTPLATE = REGISTRATE.item("golemguard_chestplate",p ->new MetalGolemArmorItem(p.stacksTo(1), ArmorItem.Type.CHESTPLATE,10,5,CHESTPLATES)).model((ctx, pvd) -> pvd.generated(ctx,pvd.modLoc("item/equipments/"+ctx.getName()))).defaultLang().register(); + } // upgrades + { EMPTY_UPGRADE = REGISTRATE.item("empty_upgrade", Item::new).defaultModel().defaultLang().register(); FIRE_IMMUNE = regUpgrade("fire_immune", () -> GolemModifiers.FIRE_IMMUNE).lang("Fire Immune Upgrade").register(); @@ -91,76 +102,104 @@ public class GolemItems { PICKUP_NO_DESTROY = regUpgrade("pickup_no_destroy", () -> GolemModifiers.PICKUP_NODESTROY).lang("Pickup Augment: No Destroy").register(); TALENTED = regUpgrade("talented", () -> GolemModifiers.TALENTED).lang("Meta Upgrade: Talented").register(); CAULDRON = regUpgrade("cauldron", () -> GolemModifiers.CAULDRON).lang("Meta Upgrade: Cauldron").register(); + MOUNT_UPGRADE = regUpgrade("mount_upgrade", () -> GolemModifiers.MOUNT_UPGRADE).lang("Mount Upgrade").register(); + SIZE_UPGRADE = regUpgrade("size_upgrade", () -> GolemModifiers.SIZE_UPGRADE).lang("Size Upgrade").register(); + } + + CompatManager.register(); + // holders { HOLDER_GOLEM = REGISTRATE.item("metal_golem_holder", p -> new GolemHolder<>(p.fireResistant(), GolemTypes.TYPE_GOLEM)) - .model((ctx, pvd) -> pvd.getBuilder(ctx.getName()).parent(new ModelFile.UncheckedModelFile("builtin/entity")).texture("particle", "minecraft:block/clay")) - .tag(TagGen.GOLEM_HOLDERS).defaultLang().register(); + .model((ctx, pvd) -> pvd.getBuilder(ctx.getName()).parent(new ModelFile.UncheckedModelFile("builtin/entity")) + .texture("particle", "minecraft:block/clay")) + .transform(e -> e.tab(TAB.getKey(), x -> e.getEntry().fillItemCategory(x))) + .tag(MGTagGen.GOLEM_HOLDERS).defaultLang().register(); HOLDER_HUMANOID = REGISTRATE.item("humanoid_golem_holder", p -> new GolemHolder<>(p.fireResistant(), GolemTypes.TYPE_HUMANOID)) - .model((ctx, pvd) -> pvd.getBuilder(ctx.getName()).parent(new ModelFile.UncheckedModelFile("builtin/entity")).texture("particle", "minecraft:block/clay")) - .tag(TagGen.GOLEM_HOLDERS).defaultLang().register(); + .model((ctx, pvd) -> pvd.getBuilder(ctx.getName()).parent(new ModelFile.UncheckedModelFile("builtin/entity")) + .texture("particle", "minecraft:block/clay")) + .transform(e -> e.tab(TAB.getKey(), x -> e.getEntry().fillItemCategory(x))) + .tag(MGTagGen.GOLEM_HOLDERS).defaultLang().register(); HOLDER_DOG = REGISTRATE.item("dog_golem_holder", p -> new GolemHolder<>(p.fireResistant(), GolemTypes.TYPE_DOG)) - .model((ctx, pvd) -> pvd.getBuilder(ctx.getName()).parent(new ModelFile.UncheckedModelFile("builtin/entity")).texture("particle", "minecraft:block/clay")) - .tag(TagGen.GOLEM_HOLDERS).defaultLang().register(); + .model((ctx, pvd) -> pvd.getBuilder(ctx.getName()).parent(new ModelFile.UncheckedModelFile("builtin/entity")) + .texture("particle", "minecraft:block/clay")) + .transform(e -> e.tab(TAB.getKey(), x -> e.getEntry().fillItemCategory(x))) + .tag(MGTagGen.GOLEM_HOLDERS).defaultLang().register(); } // metal golem { GOLEM_BODY = REGISTRATE.item("metal_golem_body", p -> new GolemPart<>(p.fireResistant(), GolemTypes.TYPE_GOLEM, MetalGolemPartType.BODY, 9)) - .model((ctx, pvd) -> pvd.getBuilder(ctx.getName()).parent(new ModelFile.UncheckedModelFile("builtin/entity")).texture("particle", "minecraft:block/clay")) - .tag(TagGen.GOLEM_PARTS).defaultLang().register(); + .model((ctx, pvd) -> pvd.getBuilder(ctx.getName()).parent(new ModelFile.UncheckedModelFile("builtin/entity")) + .texture("particle", "minecraft:block/clay")) + .transform(e -> e.tab(TAB.getKey(), x -> e.getEntry().fillItemCategory(x))) + .tag(MGTagGen.GOLEM_PARTS).defaultLang().register(); GOLEM_ARM = REGISTRATE.item("metal_golem_arm", p -> new GolemPart<>(p.fireResistant(), GolemTypes.TYPE_GOLEM, MetalGolemPartType.LEFT, 9)) - .model((ctx, pvd) -> pvd.getBuilder(ctx.getName()).parent(new ModelFile.UncheckedModelFile("builtin/entity")).texture("particle", "minecraft:block/clay")) - .tag(TagGen.GOLEM_PARTS).defaultLang().register(); + .model((ctx, pvd) -> pvd.getBuilder(ctx.getName()).parent(new ModelFile.UncheckedModelFile("builtin/entity")) + .texture("particle", "minecraft:block/clay")) + .transform(e -> e.tab(TAB.getKey(), x -> e.getEntry().fillItemCategory(x))) + .tag(MGTagGen.GOLEM_PARTS).defaultLang().register(); GOLEM_LEGS = REGISTRATE.item("metal_golem_legs", p -> new GolemPart<>(p.fireResistant(), GolemTypes.TYPE_GOLEM, MetalGolemPartType.LEG, 9)) - .model((ctx, pvd) -> pvd.getBuilder(ctx.getName()).parent(new ModelFile.UncheckedModelFile("builtin/entity")).texture("particle", "minecraft:block/clay")) - .tag(TagGen.GOLEM_PARTS).defaultLang().register(); + .model((ctx, pvd) -> pvd.getBuilder(ctx.getName()).parent(new ModelFile.UncheckedModelFile("builtin/entity")) + .texture("particle", "minecraft:block/clay")) + .transform(e -> e.tab(TAB.getKey(), x -> e.getEntry().fillItemCategory(x))) + .tag(MGTagGen.GOLEM_PARTS).defaultLang().register(); } // humanoid golem { HUMANOID_BODY = REGISTRATE.item("humanoid_golem_body", p -> new GolemPart<>(p.fireResistant(), GolemTypes.TYPE_HUMANOID, HumaniodGolemPartType.BODY, 6)) - .model((ctx, pvd) -> pvd.getBuilder(ctx.getName()).parent(new ModelFile.UncheckedModelFile("builtin/entity")).texture("particle", "minecraft:block/clay")) - .tag(TagGen.GOLEM_PARTS).defaultLang().register(); + .model((ctx, pvd) -> pvd.getBuilder(ctx.getName()).parent(new ModelFile.UncheckedModelFile("builtin/entity")) + .texture("particle", "minecraft:block/clay")) + .transform(e -> e.tab(TAB.getKey(), x -> e.getEntry().fillItemCategory(x))) + .tag(MGTagGen.GOLEM_PARTS).defaultLang().register(); HUMANOID_ARMS = REGISTRATE.item("humanoid_golem_arms", p -> new GolemPart<>(p.fireResistant(), GolemTypes.TYPE_HUMANOID, HumaniodGolemPartType.ARMS, 6)) - .model((ctx, pvd) -> pvd.getBuilder(ctx.getName()).parent(new ModelFile.UncheckedModelFile("builtin/entity")).texture("particle", "minecraft:block/clay")) - .tag(TagGen.GOLEM_PARTS).defaultLang().register(); + .model((ctx, pvd) -> pvd.getBuilder(ctx.getName()).parent(new ModelFile.UncheckedModelFile("builtin/entity")) + .texture("particle", "minecraft:block/clay")) + .transform(e -> e.tab(TAB.getKey(), x -> e.getEntry().fillItemCategory(x))) + .tag(MGTagGen.GOLEM_PARTS).defaultLang().register(); HUMANOID_LEGS = REGISTRATE.item("humanoid_golem_legs", p -> new GolemPart<>(p.fireResistant(), GolemTypes.TYPE_HUMANOID, HumaniodGolemPartType.LEGS, 6)) - .model((ctx, pvd) -> pvd.getBuilder(ctx.getName()).parent(new ModelFile.UncheckedModelFile("builtin/entity")).texture("particle", "minecraft:block/clay")) - .tag(TagGen.GOLEM_PARTS).defaultLang().register(); + .model((ctx, pvd) -> pvd.getBuilder(ctx.getName()).parent(new ModelFile.UncheckedModelFile("builtin/entity")) + .texture("particle", "minecraft:block/clay")) + .transform(e -> e.tab(TAB.getKey(), x -> e.getEntry().fillItemCategory(x))) + .tag(MGTagGen.GOLEM_PARTS).defaultLang().register(); } // dog golem { DOG_BODY = REGISTRATE.item("dog_golem_body", p -> new GolemPart<>(p.fireResistant(), GolemTypes.TYPE_DOG, DogGolemPartType.BODY, 6)) - .model((ctx, pvd) -> pvd.getBuilder(ctx.getName()).parent(new ModelFile.UncheckedModelFile("builtin/entity")).texture("particle", "minecraft:block/clay")) - .tag(TagGen.GOLEM_PARTS).defaultLang().register(); + .model((ctx, pvd) -> pvd.getBuilder(ctx.getName()).parent(new ModelFile.UncheckedModelFile("builtin/entity")) + .texture("particle", "minecraft:block/clay")) + .transform(e -> e.tab(TAB.getKey(), x -> e.getEntry().fillItemCategory(x))) + .tag(MGTagGen.GOLEM_PARTS).defaultLang().register(); DOG_LEGS = REGISTRATE.item("dog_golem_legs", p -> new GolemPart<>(p.fireResistant(), GolemTypes.TYPE_DOG, DogGolemPartType.LEGS, 3)) - .model((ctx, pvd) -> pvd.getBuilder(ctx.getName()).parent(new ModelFile.UncheckedModelFile("builtin/entity")).texture("particle", "minecraft:block/clay")) - .tag(TagGen.GOLEM_PARTS).defaultLang().register(); + .model((ctx, pvd) -> pvd.getBuilder(ctx.getName()).parent(new ModelFile.UncheckedModelFile("builtin/entity")) + .texture("particle", "minecraft:block/clay")) + .transform(e -> e.tab(TAB.getKey(), x -> e.getEntry().fillItemCategory(x))) + .tag(MGTagGen.GOLEM_PARTS).defaultLang().register(); } } public static ItemBuilder regModUpgrade(String id, Supplier> mod, int lv, boolean foil, String modid) { var reg = regUpgradeImpl(id, mod, lv, foil, modid); - reg.setData(ProviderType.ITEM_TAGS, (a, b) -> b.tag(TagGen.GOLEM_UPGRADES).addOptional(reg.get().getId())); + reg.setData(ProviderType.ITEM_TAGS, (a, b) -> b.addTag(MGTagGen.GOLEM_UPGRADES).addOptional(reg.get().getId())); return reg; } @@ -173,7 +212,7 @@ private static ItemBuilder regUpgrade(String id } private static ItemBuilder regUpgrade(String id, Supplier> mod, int level, boolean foil) { - return regUpgradeImpl(id, mod, level, foil, ModularGolems.MODID).tag(TagGen.GOLEM_UPGRADES); + return regUpgradeImpl(id, mod, level, foil, ModularGolems.MODID).tag(MGTagGen.GOLEM_UPGRADES); } private static ItemBuilder regUpgradeImpl(String id, Supplier> mod, int level, boolean foil, String modid) { @@ -195,16 +234,4 @@ private static ItemBuilder regUpgradeImpl(Strin public static void register() { } - public static class Tab extends CreativeModeTab { - - public Tab(String label) { - super(ModularGolems.MODID + "." + label); - } - - @Override - public ItemStack makeIcon() { - return HOLDER_GOLEM.asStack(); - } - } - } diff --git a/src/main/java/dev/xkmc/modulargolems/init/registrate/GolemMiscs.java b/src/main/java/dev/xkmc/modulargolems/init/registrate/GolemMiscs.java index e1b218262..4b88bf159 100644 --- a/src/main/java/dev/xkmc/modulargolems/init/registrate/GolemMiscs.java +++ b/src/main/java/dev/xkmc/modulargolems/init/registrate/GolemMiscs.java @@ -1,9 +1,9 @@ package dev.xkmc.modulargolems.init.registrate; -import dev.xkmc.l2library.base.recipe.AbstractShapedRecipe; -import dev.xkmc.l2library.repack.registrate.util.entry.MenuEntry; -import dev.xkmc.l2library.repack.registrate.util.entry.RegistryEntry; -import dev.xkmc.l2library.repack.registrate.util.nullness.NonNullSupplier; +import com.tterrag.registrate.util.entry.MenuEntry; +import com.tterrag.registrate.util.entry.RegistryEntry; +import com.tterrag.registrate.util.nullness.NonNullSupplier; +import dev.xkmc.l2library.serial.recipe.AbstractShapedRecipe; import dev.xkmc.modulargolems.content.menu.EquipmentsMenu; import dev.xkmc.modulargolems.content.menu.EquipmentsScreen; import dev.xkmc.modulargolems.content.recipe.GolemAssembleRecipe; diff --git a/src/main/java/dev/xkmc/modulargolems/init/registrate/GolemModifiers.java b/src/main/java/dev/xkmc/modulargolems/init/registrate/GolemModifiers.java index af21ea725..3e6e083c9 100644 --- a/src/main/java/dev/xkmc/modulargolems/init/registrate/GolemModifiers.java +++ b/src/main/java/dev/xkmc/modulargolems/init/registrate/GolemModifiers.java @@ -1,16 +1,17 @@ package dev.xkmc.modulargolems.init.registrate; +import com.tterrag.registrate.providers.ProviderType; +import com.tterrag.registrate.util.entry.RegistryEntry; +import com.tterrag.registrate.util.nullness.NonNullSupplier; import dev.xkmc.l2library.base.L2Registrate; import dev.xkmc.l2library.base.NamedEntry; -import dev.xkmc.l2library.repack.registrate.providers.ProviderType; -import dev.xkmc.l2library.repack.registrate.util.entry.RegistryEntry; -import dev.xkmc.l2library.repack.registrate.util.nullness.NonNullSupplier; import dev.xkmc.modulargolems.content.core.StatFilterType; import dev.xkmc.modulargolems.content.entity.common.GolemFlags; import dev.xkmc.modulargolems.content.modifier.base.*; import dev.xkmc.modulargolems.content.modifier.common.BellModifier; import dev.xkmc.modulargolems.content.modifier.common.ThornModifier; import dev.xkmc.modulargolems.content.modifier.immunes.*; +import dev.xkmc.modulargolems.content.modifier.ride.RideUpgrade; import dev.xkmc.modulargolems.content.modifier.special.PickupModifier; import dev.xkmc.modulargolems.content.modifier.special.PotionMetaModifier; import dev.xkmc.modulargolems.content.modifier.special.SonicModifier; @@ -44,8 +45,9 @@ public class GolemModifiers { public static final RegistryEntry TALENTED; public static final RegistryEntry CAULDRON; public static final RegistryEntry FLOAT, SWIM, ENDER_SIGHT, RECYCLE, PICKUP_NODESTROY, PICKUP_MENDING; - public static final RegistryEntry ARMOR, TOUGH, DAMAGE, REGEN, SPEED; + public static final RegistryEntry ARMOR, TOUGH, DAMAGE, REGEN, SPEED, SIZE_UPGRADE; public static final RegistryEntry SLOW, WEAK, WITHER; + public static final RegistryEntry MOUNT_UPGRADE; static { FIRE_IMMUNE = reg("fire_immune", FireImmuneModifier::new, @@ -118,6 +120,19 @@ public class GolemModifiers { "First of every kind of upgrades with blue arrow will no longer consume upgrade slots (up to 4)"); CAULDRON = reg("cauldron", PotionMetaModifier::new, "Cauldron", "Repeated potion upgrades will no longer consume upgrade slots."); + + MOUNT_UPGRADE = reg("ridding_speed_up", () -> new RideUpgrade(1, + new RideUpgrade.AttrEntry(GolemTypes.STAT_SPEED, 0.3), + new AttributeGolemModifier.AttrEntry(GolemTypes.STAT_JUMP, 0.25), + new AttributeGolemModifier.AttrEntry(GolemTypes.STAT_HEALTH_P, 0.2) + ),"Mount Upgrade","Golem will not attack, and will not be targeted for attack."); + + SIZE_UPGRADE = reg("size_up", () -> new AttributeGolemModifier(2, + new RideUpgrade.AttrEntry(GolemTypes.STAT_SPEED, 0.15), + new AttributeGolemModifier.AttrEntry(GolemTypes.STAT_HEALTH_P, 0.2), + new RideUpgrade.AttrEntry(GolemTypes.STAT_SIZE, 0.5), + new RideUpgrade.AttrEntry(GolemTypes.STAT_RANGE, 0.5) + )).register(); } public static RegistryEntry reg(String id, NonNullSupplier sup, String name, @Nullable String def) { diff --git a/src/main/java/dev/xkmc/modulargolems/init/registrate/GolemTypes.java b/src/main/java/dev/xkmc/modulargolems/init/registrate/GolemTypes.java index 98519ac7d..736876e6e 100644 --- a/src/main/java/dev/xkmc/modulargolems/init/registrate/GolemTypes.java +++ b/src/main/java/dev/xkmc/modulargolems/init/registrate/GolemTypes.java @@ -1,8 +1,8 @@ package dev.xkmc.modulargolems.init.registrate; +import com.tterrag.registrate.util.entry.EntityEntry; +import com.tterrag.registrate.util.entry.RegistryEntry; import dev.xkmc.l2library.base.L2Registrate; -import dev.xkmc.l2library.repack.registrate.util.entry.EntityEntry; -import dev.xkmc.l2library.repack.registrate.util.entry.RegistryEntry; import dev.xkmc.modulargolems.content.core.GolemStatType; import dev.xkmc.modulargolems.content.core.GolemType; import dev.xkmc.modulargolems.content.core.StatFilterType; @@ -19,7 +19,7 @@ import dev.xkmc.modulargolems.content.entity.metalgolem.MetalGolemPartType; import dev.xkmc.modulargolems.content.entity.metalgolem.MetalGolemRenderer; import dev.xkmc.modulargolems.content.modifier.base.GolemModifier; -import dev.xkmc.modulargolems.init.data.TagGen; +import dev.xkmc.modulargolems.init.data.MGTagGen; import net.minecraft.world.entity.Mob; import net.minecraft.world.entity.MobCategory; import net.minecraft.world.entity.ai.attributes.Attribute; @@ -42,6 +42,10 @@ public class GolemTypes { () -> new RangedAttribute("attribute.name.golem_regen", 0, 0, 1000).setSyncable(true)); public static RegistryEntry GOLEM_SWEEP = REGISTRATE.simple("golem_sweep", ForgeRegistries.ATTRIBUTES.getRegistryKey(), () -> new RangedAttribute("attribute.name.golem_sweep", 0, 0, 1000).setSyncable(true)); + public static RegistryEntry GOLEM_SIZE = REGISTRATE.simple("golem_size", ForgeRegistries.ATTRIBUTES.getRegistryKey(), + () -> new RangedAttribute("attribute.name.golem_size", 1, 0, 1000).setSyncable(true)); + public static RegistryEntry GOLEM_JUMP = REGISTRATE.simple("golem_jump", ForgeRegistries.ATTRIBUTES.getRegistryKey(), + () -> new RangedAttribute("attribute.name.golem_jump", 0.5, 0, 1000).setSyncable(true)); public static final RegistryEntry STAT_HEALTH = regStat("max_health", () -> Attributes.MAX_HEALTH, GolemStatType.Kind.BASE, StatFilterType.HEALTH); public static final RegistryEntry STAT_ATTACK = regStat("attack", () -> Attributes.ATTACK_DAMAGE, GolemStatType.Kind.BASE, StatFilterType.ATTACK); @@ -53,65 +57,82 @@ public class GolemTypes { public static final RegistryEntry STAT_ATKKB = regStat("attack_knockback", () -> Attributes.ATTACK_KNOCKBACK, GolemStatType.Kind.ADD, StatFilterType.ATTACK); public static final RegistryEntry STAT_WEIGHT = regStat("weight", () -> Attributes.MOVEMENT_SPEED, GolemStatType.Kind.PERCENT, StatFilterType.MASS); public static final RegistryEntry STAT_SPEED = regStat("speed", () -> Attributes.MOVEMENT_SPEED, GolemStatType.Kind.PERCENT, StatFilterType.MOVEMENT); - - public static final EntityEntry ENTITY_GOLEM = REGISTRATE.entity("metal_golem", MetalGolemEntity::new, MobCategory.MISC) - .properties(e -> e.sized(1.4F, 2.7F).clientTrackingRange(10)) - .renderer(() -> MetalGolemRenderer::new) - .attributes(() -> Mob.createMobAttributes() - .add(Attributes.MAX_HEALTH, 100.0D) - .add(Attributes.ATTACK_DAMAGE, 15.0D) - .add(Attributes.MOVEMENT_SPEED, 0.25D) - .add(Attributes.KNOCKBACK_RESISTANCE, 1.0D) - .add(Attributes.ATTACK_SPEED, 4.0D) - .add(Attributes.ATTACK_KNOCKBACK, 1.0D) - .add(ForgeMod.ATTACK_RANGE.get(), 0) - .add(Attributes.FOLLOW_RANGE, 35) - .add(GOLEM_REGEN.get()) - .add(GOLEM_SWEEP.get()) - ).tag(TagGen.GOLEM_FRIENDLY).register(); - - public static final RegistryEntry> TYPE_GOLEM = REGISTRATE.generic(TYPES, "metal_golem", - () -> new GolemType<>(ENTITY_GOLEM, MetalGolemPartType::values, MetalGolemPartType.BODY, () -> MetalGolemModel::new)) - .defaultLang().register(); - - public static final EntityEntry ENTITY_HUMANOID = REGISTRATE.entity("humanoid_golem", HumanoidGolemEntity::new, MobCategory.MISC) - .properties(e -> e.sized(0.6F, 1.95F).clientTrackingRange(10)) - .renderer(() -> HumanoidGolemRenderer::new) - .attributes(() -> Mob.createMobAttributes() - .add(Attributes.MAX_HEALTH, 20.0D) - .add(Attributes.ATTACK_DAMAGE, 4.0D) - .add(Attributes.MOVEMENT_SPEED, 0.25D) - .add(Attributes.KNOCKBACK_RESISTANCE, 1.0D) - .add(Attributes.ATTACK_SPEED, 4.0D) - .add(Attributes.ATTACK_KNOCKBACK, 0.4D) - .add(ForgeMod.ATTACK_RANGE.get(), 0) - .add(Attributes.FOLLOW_RANGE, 35.0D) - .add(GOLEM_REGEN.get()) - .add(GOLEM_SWEEP.get(), 1) - ).tag(TagGen.GOLEM_FRIENDLY).register(); - - public static final RegistryEntry> TYPE_HUMANOID = REGISTRATE.generic(TYPES, "humanoid_golem", - () -> new GolemType<>(ENTITY_HUMANOID, HumaniodGolemPartType::values, HumaniodGolemPartType.BODY, () -> HumanoidGolemModel::new)) - .defaultLang().register(); - - public static final EntityEntry ENTITY_DOG = REGISTRATE.entity("dog_golem", DogGolemEntity::new, MobCategory.MISC) - .properties(e -> e.sized(0.85F, 0.6F).clientTrackingRange(10)) - .renderer(() -> DogGolemRenderer::new) - .attributes(() -> Mob.createMobAttributes() - .add(Attributes.MAX_HEALTH, 8.0D) - .add(Attributes.ATTACK_DAMAGE, 4.0D) - .add(Attributes.MOVEMENT_SPEED, 0.3D) - .add(Attributes.KNOCKBACK_RESISTANCE, 1.0D) - .add(Attributes.ATTACK_SPEED, 4.0D) - .add(Attributes.ATTACK_KNOCKBACK, 0.4D) - .add(ForgeMod.ATTACK_RANGE.get(), 0) - .add(Attributes.FOLLOW_RANGE, 35.0D) - .add(GOLEM_REGEN.get()) - ).tag(TagGen.GOLEM_FRIENDLY).register(); - - public static final RegistryEntry> TYPE_DOG = REGISTRATE.generic(TYPES, "dog_golem", - () -> new GolemType<>(ENTITY_DOG, DogGolemPartType::values, DogGolemPartType.BODY, () -> DogGolemModel::new)) - .defaultLang().register(); + public static final RegistryEntry STAT_JUMP = regStat("jump_strength", GOLEM_JUMP, GolemStatType.Kind.PERCENT, StatFilterType.MOVEMENT); + public static final RegistryEntry STAT_HEALTH_P = regStat("max_health_percent", () -> Attributes.MAX_HEALTH, GolemStatType.Kind.PERCENT, StatFilterType.HEALTH); + public static final RegistryEntry STAT_SIZE = regStat("max_size", GOLEM_SIZE, GolemStatType.Kind.ADD, StatFilterType.HEALTH); + public static final RegistryEntry STAT_RANGE = regStat("range", ForgeMod.ENTITY_REACH, GolemStatType.Kind.ADD, StatFilterType.ATTACK); + + public static final EntityEntry ENTITY_GOLEM; + public static final EntityEntry ENTITY_HUMANOID; + public static final EntityEntry ENTITY_DOG; + + public static final RegistryEntry> TYPE_GOLEM; + public static final RegistryEntry> TYPE_HUMANOID; + public static final RegistryEntry> TYPE_DOG; + + static { + ENTITY_GOLEM = REGISTRATE.entity("metal_golem", MetalGolemEntity::new, MobCategory.MISC) + .properties(e -> e.sized(1.4F, 2.7F).clientTrackingRange(10)) + .renderer(() -> MetalGolemRenderer::new) + .attributes(() -> Mob.createMobAttributes() + .add(Attributes.MAX_HEALTH, 100.0D) + .add(Attributes.ATTACK_DAMAGE, 15.0D) + .add(Attributes.MOVEMENT_SPEED, 0.25D) + .add(Attributes.KNOCKBACK_RESISTANCE, 1.0D) + .add(Attributes.ATTACK_SPEED, 4.0D) + .add(Attributes.ATTACK_KNOCKBACK, 1.0D) + .add(ForgeMod.ENTITY_REACH.get(), 2) + .add(Attributes.FOLLOW_RANGE, 35) + .add(GOLEM_REGEN.get()) + .add(GOLEM_SWEEP.get()) + .add(GOLEM_SIZE.get(), 3) + ).tag(MGTagGen.GOLEM_FRIENDLY).register(); + + ENTITY_HUMANOID = REGISTRATE.entity("humanoid_golem", HumanoidGolemEntity::new, MobCategory.MISC) + .properties(e -> e.sized(0.6F, 1.95F).clientTrackingRange(10)) + .renderer(() -> HumanoidGolemRenderer::new) + .attributes(() -> Mob.createMobAttributes() + .add(Attributes.MAX_HEALTH, 20.0D) + .add(Attributes.ATTACK_DAMAGE, 4.0D) + .add(Attributes.MOVEMENT_SPEED, 0.25D) + .add(Attributes.KNOCKBACK_RESISTANCE, 1.0D) + .add(Attributes.ATTACK_SPEED, 4.0D) + .add(Attributes.ATTACK_KNOCKBACK, 0.4D) + .add(ForgeMod.ENTITY_REACH.get(), 1) + .add(Attributes.FOLLOW_RANGE, 35.0D) + .add(GOLEM_REGEN.get()) + .add(GOLEM_SWEEP.get(), 1) + .add(GOLEM_SIZE.get(), 2.5) + ).tag(MGTagGen.GOLEM_FRIENDLY).register(); + + ENTITY_DOG = REGISTRATE.entity("dog_golem", DogGolemEntity::new, MobCategory.MISC) + .properties(e -> e.sized(0.85F, 0.6F).clientTrackingRange(10)) + .renderer(() -> DogGolemRenderer::new) + .attributes(() -> Mob.createMobAttributes() + .add(Attributes.MAX_HEALTH, 8.0D) + .add(Attributes.ATTACK_DAMAGE, 4.0D) + .add(Attributes.MOVEMENT_SPEED, 0.3D) + .add(Attributes.KNOCKBACK_RESISTANCE, 1.0D) + .add(Attributes.ATTACK_SPEED, 4.0D) + .add(Attributes.ATTACK_KNOCKBACK, 0.4D) + .add(ForgeMod.ENTITY_REACH.get(), 1.5) + .add(Attributes.FOLLOW_RANGE, 35.0D) + .add(GOLEM_JUMP.get(), 0.5D) + .add(GOLEM_REGEN.get()) + .add(GOLEM_SIZE.get(), 1) + ).tag(MGTagGen.GOLEM_FRIENDLY).register(); + + TYPE_GOLEM = REGISTRATE.generic(TYPES, "metal_golem", + () -> new GolemType<>(ENTITY_GOLEM, MetalGolemPartType::values, MetalGolemPartType.BODY, () -> MetalGolemModel::new)) + .defaultLang().register(); + + TYPE_HUMANOID = REGISTRATE.generic(TYPES, "humanoid_golem", + () -> new GolemType<>(ENTITY_HUMANOID, HumaniodGolemPartType::values, HumaniodGolemPartType.BODY, () -> HumanoidGolemModel::new)).defaultLang().register(); + + TYPE_DOG = REGISTRATE.generic(TYPES, "dog_golem", + () -> new GolemType<>(ENTITY_DOG, DogGolemPartType::values, DogGolemPartType.BODY, () -> DogGolemModel::new)) + .defaultLang().register(); + } private static RegistryEntry regStat(String id, Supplier sup, GolemStatType.Kind kind, StatFilterType type) { return REGISTRATE.generic(STAT_TYPES, id, () -> new GolemStatType(sup, kind, type)).register(); diff --git a/src/main/java/dev/xkmc/modulargolems/mixin/AbstractArrowMixin.java b/src/main/java/dev/xkmc/modulargolems/mixin/AbstractArrowMixin.java deleted file mode 100644 index c7d6fc8cc..000000000 --- a/src/main/java/dev/xkmc/modulargolems/mixin/AbstractArrowMixin.java +++ /dev/null @@ -1,34 +0,0 @@ -package dev.xkmc.modulargolems.mixin; - -import dev.xkmc.modulargolems.content.entity.common.AbstractGolemEntity; -import net.minecraft.world.entity.EntityType; -import net.minecraft.world.entity.projectile.AbstractArrow; -import net.minecraft.world.entity.projectile.Projectile; -import net.minecraft.world.level.Level; -import org.jetbrains.annotations.ApiStatus; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.Shadow; -import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Inject; -import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; - -@Deprecated -@ApiStatus.ScheduledForRemoval()//TODO remove -@Mixin(AbstractArrow.class) -public abstract class AbstractArrowMixin extends Projectile { - - protected AbstractArrowMixin(EntityType pEntityType, Level pLevel) { - super(pEntityType, pLevel); - } - - @Shadow - private int life; - - - @Inject(at = @At("HEAD"), method = "tickDespawn") - public void l2weaponry_tickDespawn_fastDespawn(CallbackInfo ci) { - if (getOwner() instanceof AbstractGolemEntity) - life += 19; - } - -} diff --git a/src/main/resources/META-INF/accesstransformer.cfg b/src/main/resources/META-INF/accesstransformer.cfg index c43762305..bdf2a6918 100644 --- a/src/main/resources/META-INF/accesstransformer.cfg +++ b/src/main/resources/META-INF/accesstransformer.cfg @@ -1,4 +1,5 @@ public net.minecraft.world.entity.ai.goal.target.NearestAttackableTargetGoal f_26048_ # targetType public net.minecraft.world.entity.ai.goal.target.NearestAttackableTargetGoal f_26049_ # randomInterval public net.minecraft.world.entity.ai.goal.target.TargetGoal f_26136_ # mustSee -public net.minecraft.world.entity.ai.goal.target.TargetGoal f_26131_ # mustReach \ No newline at end of file +public net.minecraft.world.entity.ai.goal.target.TargetGoal f_26131_ # mustReach +public net.minecraft.world.entity.LivingEntity f_20899_ # jumping \ No newline at end of file diff --git a/src/main/resources/META-INF/mods.toml b/src/main/resources/META-INF/mods.toml index dde54eda8..6ddfb4522 100644 --- a/src/main/resources/META-INF/mods.toml +++ b/src/main/resources/META-INF/mods.toml @@ -1,5 +1,5 @@ modLoader="javafml" -loaderVersion="[42,)" +loaderVersion="[46,)" license="All rights reserved" [[mods]] modId="modulargolems" @@ -14,18 +14,18 @@ This mod adds golems that can be crafted with different materials in a Tinker-li [[dependencies.modulargolems]] modId="forge" mandatory=true - versionRange="[42,)" + versionRange="[46,)" ordering="AFTER" side="BOTH" [[dependencies.modulargolems]] modId="minecraft" mandatory=true - versionRange="[1.19.1,1.19.3)" + versionRange="[1.20,1.21)" ordering="NONE" side="BOTH" [[dependencies.modulargolems]] modId="l2library" mandatory=true - versionRange="[1.8.8,)" + versionRange="[2.4.0,)" ordering="AFTER" side="BOTH" \ No newline at end of file diff --git a/src/main/resources/assets/modulargolems/lang/zh_cn.json b/src/main/resources/assets/modulargolems/lang/zh_cn.json index f28bc1e79..364804e01 100644 --- a/src/main/resources/assets/modulargolems/lang/zh_cn.json +++ b/src/main/resources/assets/modulargolems/lang/zh_cn.json @@ -24,6 +24,7 @@ "item.modulargolems.retrieval_wand": "回收手杖", "item.modulargolems.command_wand": "命令手杖", "item.modulargolems.summon_wand": "召唤手杖", + "item.modulargolems.rider_wand": "骑乘手杖", "item.modulargolems.sponge": "海绵升级", "item.modulargolems.swim": "游泳升级", "item.modulargolems.player": "友伤免疫升级", @@ -44,6 +45,8 @@ "item.modulargolems.pickup_no_destroy": "拾取附属:取消销毁", "item.modulargolems.talented": "辅助升级:多才多艺", "item.modulargolems.cauldron": "辅助升级:炼药锅", + "item.modulargolems.mount_upgrade": "坐骑升级", + "item.modulargolems.size_upgrade": "体形升级", "entity.modulargolems.metal_golem": "大型金属傀儡", "entity.modulargolems.humanoid_golem": "人形金属傀儡", "entity.modulargolems.dog_golem": "犬形金属傀儡", @@ -114,9 +117,13 @@ "modifier.modulargolems.talented.desc": "前4种蓝色升级的第一个升级不消耗升级槽", "modifier.modulargolems.cauldron": "炼药锅", "modifier.modulargolems.cauldron.desc": "重复的药水升级不消耗升级槽", + "modifier.modulargolems.ridding_speed_up": "坐骑升级", + "modifier.modulargolems.size_up": "体型升级", "attribute.name.golem_regen": "生命回复", "attribute.name.golem_sweep": "范围攻击", - "itemGroup.modulargolems.golems": "模块化傀儡", + "attribute.name.golem_size": "傀儡体型", + "attribute.name.golem_jump": "傀儡跳跃", + "itemGroup.l2library.golems": "模块化傀儡", "modulargolems.tooltip.health": "血量: %s/%s", "modulargolems.tooltip.slot": "剩余升级槽: %s", "modulargolems.tooltip.shift": "按 SHIFT 显示特殊效果细节", @@ -127,7 +134,8 @@ "modulargolems.tooltip.potion_defense": "傀儡获得:%s", "modulargolems.wand.command": "右键改变傀儡行动模式。蹲下右键配置人形傀儡装备。攻击实体使周围所有你的傀儡优先攻击该目标。", "modulargolems.wand.retrieve": "右键回收周围所有你的傀儡。蹲下右键回收远处的傀儡。", - "modulargolems.wand.summon": "右键召唤背包中所有傀儡。蹲下右键把一个傀儡召唤至指向的远处的方块", + "modulargolems.wand.summon": "右键把一个傀儡召唤至指向的远处的方块。蹲下右键召唤背包中所有傀儡。", + "modulargolems.wand.rider": "右键一个犬型傀儡以骑在它身上。", "modulargolems.msg.destroy_exp": "%s销毁了%s经验", "modulargolems.msg.destroy_item": "%s找不到地方放,销毁了%s个物品", "patchouli.modulargolems.landing": "金属傀儡的组装和升级手册", @@ -206,6 +214,12 @@ "advancements.modulargolems.advancements.golems.thunder.title": "行走的避雷针", "advancements.modulargolems.advancements.golems.upgrade.description": "获取一个升级模块", "advancements.modulargolems.advancements.golems.upgrade.title": "是时候升级了", + "advancements.modulargolems.advancements.golems.summon.description": "制作召唤手杖", + "advancements.modulargolems.advancements.golems.summon.title": "空降部队", + "advancements.modulargolems.advancements.golems.summon_mass.description": "一次召唤至少24只傀儡", + "advancements.modulargolems.advancements.golems.summon_mass.title": "一车面包人", + "advancements.modulargolems.advancements.golems.max.description": "对傀儡使用12个升级", + "advancements.modulargolems.advancements.golems.max.title": "超越极限", "golem_material.l2complements.eternium": "永恒", "golem_material.l2complements.poseidite": "海神", "golem_material.l2complements.shulkerate": "潜影", diff --git a/src/main/resources/data/modulargolems/patchouli_books/golem_guide/en_us/categories/golems.json b/src/main/resources/assets/modulargolems/patchouli_books/golem_guide/en_us/categories/golems.json similarity index 100% rename from src/main/resources/data/modulargolems/patchouli_books/golem_guide/en_us/categories/golems.json rename to src/main/resources/assets/modulargolems/patchouli_books/golem_guide/en_us/categories/golems.json diff --git a/src/main/resources/data/modulargolems/patchouli_books/golem_guide/en_us/categories/materials.json b/src/main/resources/assets/modulargolems/patchouli_books/golem_guide/en_us/categories/materials.json similarity index 100% rename from src/main/resources/data/modulargolems/patchouli_books/golem_guide/en_us/categories/materials.json rename to src/main/resources/assets/modulargolems/patchouli_books/golem_guide/en_us/categories/materials.json diff --git a/src/main/resources/data/modulargolems/patchouli_books/golem_guide/en_us/categories/upgrades.json b/src/main/resources/assets/modulargolems/patchouli_books/golem_guide/en_us/categories/upgrades.json similarity index 100% rename from src/main/resources/data/modulargolems/patchouli_books/golem_guide/en_us/categories/upgrades.json rename to src/main/resources/assets/modulargolems/patchouli_books/golem_guide/en_us/categories/upgrades.json diff --git a/src/main/resources/data/modulargolems/patchouli_books/golem_guide/en_us/entries/golems/a1_craft.json b/src/main/resources/assets/modulargolems/patchouli_books/golem_guide/en_us/entries/golems/a1_craft.json similarity index 100% rename from src/main/resources/data/modulargolems/patchouli_books/golem_guide/en_us/entries/golems/a1_craft.json rename to src/main/resources/assets/modulargolems/patchouli_books/golem_guide/en_us/entries/golems/a1_craft.json diff --git a/src/main/resources/data/modulargolems/patchouli_books/golem_guide/en_us/entries/golems/a2_upgrade.json b/src/main/resources/assets/modulargolems/patchouli_books/golem_guide/en_us/entries/golems/a2_upgrade.json similarity index 100% rename from src/main/resources/data/modulargolems/patchouli_books/golem_guide/en_us/entries/golems/a2_upgrade.json rename to src/main/resources/assets/modulargolems/patchouli_books/golem_guide/en_us/entries/golems/a2_upgrade.json diff --git a/src/main/resources/data/modulargolems/patchouli_books/golem_guide/en_us/entries/golems/b1_metal_golem.json b/src/main/resources/assets/modulargolems/patchouli_books/golem_guide/en_us/entries/golems/b1_metal_golem.json similarity index 100% rename from src/main/resources/data/modulargolems/patchouli_books/golem_guide/en_us/entries/golems/b1_metal_golem.json rename to src/main/resources/assets/modulargolems/patchouli_books/golem_guide/en_us/entries/golems/b1_metal_golem.json diff --git a/src/main/resources/data/modulargolems/patchouli_books/golem_guide/en_us/entries/golems/b2_humanoid_golem.json b/src/main/resources/assets/modulargolems/patchouli_books/golem_guide/en_us/entries/golems/b2_humanoid_golem.json similarity index 100% rename from src/main/resources/data/modulargolems/patchouli_books/golem_guide/en_us/entries/golems/b2_humanoid_golem.json rename to src/main/resources/assets/modulargolems/patchouli_books/golem_guide/en_us/entries/golems/b2_humanoid_golem.json diff --git a/src/main/resources/data/modulargolems/patchouli_books/golem_guide/en_us/entries/golems/b3_dog_golem.json b/src/main/resources/assets/modulargolems/patchouli_books/golem_guide/en_us/entries/golems/b3_dog_golem.json similarity index 100% rename from src/main/resources/data/modulargolems/patchouli_books/golem_guide/en_us/entries/golems/b3_dog_golem.json rename to src/main/resources/assets/modulargolems/patchouli_books/golem_guide/en_us/entries/golems/b3_dog_golem.json diff --git a/src/main/resources/data/modulargolems/patchouli_books/golem_guide/en_us/entries/golems/c1_retrieval_wand.json b/src/main/resources/assets/modulargolems/patchouli_books/golem_guide/en_us/entries/golems/c1_retrieval_wand.json similarity index 100% rename from src/main/resources/data/modulargolems/patchouli_books/golem_guide/en_us/entries/golems/c1_retrieval_wand.json rename to src/main/resources/assets/modulargolems/patchouli_books/golem_guide/en_us/entries/golems/c1_retrieval_wand.json diff --git a/src/main/resources/data/modulargolems/patchouli_books/golem_guide/en_us/entries/golems/c2_command_wand.json b/src/main/resources/assets/modulargolems/patchouli_books/golem_guide/en_us/entries/golems/c2_command_wand.json similarity index 100% rename from src/main/resources/data/modulargolems/patchouli_books/golem_guide/en_us/entries/golems/c2_command_wand.json rename to src/main/resources/assets/modulargolems/patchouli_books/golem_guide/en_us/entries/golems/c2_command_wand.json diff --git a/src/main/resources/data/modulargolems/patchouli_books/golem_guide/en_us/entries/golems/c3_summon_wand.json b/src/main/resources/assets/modulargolems/patchouli_books/golem_guide/en_us/entries/golems/c3_summon_wand.json similarity index 100% rename from src/main/resources/data/modulargolems/patchouli_books/golem_guide/en_us/entries/golems/c3_summon_wand.json rename to src/main/resources/assets/modulargolems/patchouli_books/golem_guide/en_us/entries/golems/c3_summon_wand.json diff --git a/src/main/resources/data/modulargolems/patchouli_books/golem_guide/en_us/entries/materials/bg_brimsteel.json b/src/main/resources/assets/modulargolems/patchouli_books/golem_guide/en_us/entries/materials/bg_brimsteel.json similarity index 100% rename from src/main/resources/data/modulargolems/patchouli_books/golem_guide/en_us/entries/materials/bg_brimsteel.json rename to src/main/resources/assets/modulargolems/patchouli_books/golem_guide/en_us/entries/materials/bg_brimsteel.json diff --git a/src/main/resources/data/modulargolems/patchouli_books/golem_guide/en_us/entries/materials/cr_andesite_alloy.json b/src/main/resources/assets/modulargolems/patchouli_books/golem_guide/en_us/entries/materials/cr_andesite_alloy.json similarity index 100% rename from src/main/resources/data/modulargolems/patchouli_books/golem_guide/en_us/entries/materials/cr_andesite_alloy.json rename to src/main/resources/assets/modulargolems/patchouli_books/golem_guide/en_us/entries/materials/cr_andesite_alloy.json diff --git a/src/main/resources/data/modulargolems/patchouli_books/golem_guide/en_us/entries/materials/cr_brass.json b/src/main/resources/assets/modulargolems/patchouli_books/golem_guide/en_us/entries/materials/cr_brass.json similarity index 100% rename from src/main/resources/data/modulargolems/patchouli_books/golem_guide/en_us/entries/materials/cr_brass.json rename to src/main/resources/assets/modulargolems/patchouli_books/golem_guide/en_us/entries/materials/cr_brass.json diff --git a/src/main/resources/data/modulargolems/patchouli_books/golem_guide/en_us/entries/materials/cr_railway.json b/src/main/resources/assets/modulargolems/patchouli_books/golem_guide/en_us/entries/materials/cr_railway.json similarity index 100% rename from src/main/resources/data/modulargolems/patchouli_books/golem_guide/en_us/entries/materials/cr_railway.json rename to src/main/resources/assets/modulargolems/patchouli_books/golem_guide/en_us/entries/materials/cr_railway.json diff --git a/src/main/resources/data/modulargolems/patchouli_books/golem_guide/en_us/entries/materials/cr_zinc.json b/src/main/resources/assets/modulargolems/patchouli_books/golem_guide/en_us/entries/materials/cr_zinc.json similarity index 100% rename from src/main/resources/data/modulargolems/patchouli_books/golem_guide/en_us/entries/materials/cr_zinc.json rename to src/main/resources/assets/modulargolems/patchouli_books/golem_guide/en_us/entries/materials/cr_zinc.json diff --git a/src/main/resources/data/modulargolems/patchouli_books/golem_guide/en_us/entries/materials/lc_eternium.json b/src/main/resources/assets/modulargolems/patchouli_books/golem_guide/en_us/entries/materials/lc_eternium.json similarity index 100% rename from src/main/resources/data/modulargolems/patchouli_books/golem_guide/en_us/entries/materials/lc_eternium.json rename to src/main/resources/assets/modulargolems/patchouli_books/golem_guide/en_us/entries/materials/lc_eternium.json diff --git a/src/main/resources/data/modulargolems/patchouli_books/golem_guide/en_us/entries/materials/lc_poseidite.json b/src/main/resources/assets/modulargolems/patchouli_books/golem_guide/en_us/entries/materials/lc_poseidite.json similarity index 100% rename from src/main/resources/data/modulargolems/patchouli_books/golem_guide/en_us/entries/materials/lc_poseidite.json rename to src/main/resources/assets/modulargolems/patchouli_books/golem_guide/en_us/entries/materials/lc_poseidite.json diff --git a/src/main/resources/data/modulargolems/patchouli_books/golem_guide/en_us/entries/materials/lc_shulkerate.json b/src/main/resources/assets/modulargolems/patchouli_books/golem_guide/en_us/entries/materials/lc_shulkerate.json similarity index 100% rename from src/main/resources/data/modulargolems/patchouli_books/golem_guide/en_us/entries/materials/lc_shulkerate.json rename to src/main/resources/assets/modulargolems/patchouli_books/golem_guide/en_us/entries/materials/lc_shulkerate.json diff --git a/src/main/resources/data/modulargolems/patchouli_books/golem_guide/en_us/entries/materials/lc_totemic_gold.json b/src/main/resources/assets/modulargolems/patchouli_books/golem_guide/en_us/entries/materials/lc_totemic_gold.json similarity index 100% rename from src/main/resources/data/modulargolems/patchouli_books/golem_guide/en_us/entries/materials/lc_totemic_gold.json rename to src/main/resources/assets/modulargolems/patchouli_books/golem_guide/en_us/entries/materials/lc_totemic_gold.json diff --git a/src/main/resources/data/modulargolems/patchouli_books/golem_guide/en_us/entries/materials/tf_fiery.json b/src/main/resources/assets/modulargolems/patchouli_books/golem_guide/en_us/entries/materials/tf_fiery.json similarity index 100% rename from src/main/resources/data/modulargolems/patchouli_books/golem_guide/en_us/entries/materials/tf_fiery.json rename to src/main/resources/assets/modulargolems/patchouli_books/golem_guide/en_us/entries/materials/tf_fiery.json diff --git a/src/main/resources/data/modulargolems/patchouli_books/golem_guide/en_us/entries/materials/tf_ironwood.json b/src/main/resources/assets/modulargolems/patchouli_books/golem_guide/en_us/entries/materials/tf_ironwood.json similarity index 100% rename from src/main/resources/data/modulargolems/patchouli_books/golem_guide/en_us/entries/materials/tf_ironwood.json rename to src/main/resources/assets/modulargolems/patchouli_books/golem_guide/en_us/entries/materials/tf_ironwood.json diff --git a/src/main/resources/data/modulargolems/patchouli_books/golem_guide/en_us/entries/materials/tf_knightmetal.json b/src/main/resources/assets/modulargolems/patchouli_books/golem_guide/en_us/entries/materials/tf_knightmetal.json similarity index 100% rename from src/main/resources/data/modulargolems/patchouli_books/golem_guide/en_us/entries/materials/tf_knightmetal.json rename to src/main/resources/assets/modulargolems/patchouli_books/golem_guide/en_us/entries/materials/tf_knightmetal.json diff --git a/src/main/resources/data/modulargolems/patchouli_books/golem_guide/en_us/entries/materials/tf_steeleaf.json b/src/main/resources/assets/modulargolems/patchouli_books/golem_guide/en_us/entries/materials/tf_steeleaf.json similarity index 100% rename from src/main/resources/data/modulargolems/patchouli_books/golem_guide/en_us/entries/materials/tf_steeleaf.json rename to src/main/resources/assets/modulargolems/patchouli_books/golem_guide/en_us/entries/materials/tf_steeleaf.json diff --git a/src/main/resources/data/modulargolems/patchouli_books/golem_guide/en_us/entries/materials/vanilla_copper.json b/src/main/resources/assets/modulargolems/patchouli_books/golem_guide/en_us/entries/materials/vanilla_copper.json similarity index 100% rename from src/main/resources/data/modulargolems/patchouli_books/golem_guide/en_us/entries/materials/vanilla_copper.json rename to src/main/resources/assets/modulargolems/patchouli_books/golem_guide/en_us/entries/materials/vanilla_copper.json diff --git a/src/main/resources/data/modulargolems/patchouli_books/golem_guide/en_us/entries/materials/vanilla_gold.json b/src/main/resources/assets/modulargolems/patchouli_books/golem_guide/en_us/entries/materials/vanilla_gold.json similarity index 100% rename from src/main/resources/data/modulargolems/patchouli_books/golem_guide/en_us/entries/materials/vanilla_gold.json rename to src/main/resources/assets/modulargolems/patchouli_books/golem_guide/en_us/entries/materials/vanilla_gold.json diff --git a/src/main/resources/data/modulargolems/patchouli_books/golem_guide/en_us/entries/materials/vanilla_iron.json b/src/main/resources/assets/modulargolems/patchouli_books/golem_guide/en_us/entries/materials/vanilla_iron.json similarity index 100% rename from src/main/resources/data/modulargolems/patchouli_books/golem_guide/en_us/entries/materials/vanilla_iron.json rename to src/main/resources/assets/modulargolems/patchouli_books/golem_guide/en_us/entries/materials/vanilla_iron.json diff --git a/src/main/resources/data/modulargolems/patchouli_books/golem_guide/en_us/entries/materials/vanilla_netherite.json b/src/main/resources/assets/modulargolems/patchouli_books/golem_guide/en_us/entries/materials/vanilla_netherite.json similarity index 100% rename from src/main/resources/data/modulargolems/patchouli_books/golem_guide/en_us/entries/materials/vanilla_netherite.json rename to src/main/resources/assets/modulargolems/patchouli_books/golem_guide/en_us/entries/materials/vanilla_netherite.json diff --git a/src/main/resources/data/modulargolems/patchouli_books/golem_guide/en_us/entries/materials/vanilla_sculk.json b/src/main/resources/assets/modulargolems/patchouli_books/golem_guide/en_us/entries/materials/vanilla_sculk.json similarity index 100% rename from src/main/resources/data/modulargolems/patchouli_books/golem_guide/en_us/entries/materials/vanilla_sculk.json rename to src/main/resources/assets/modulargolems/patchouli_books/golem_guide/en_us/entries/materials/vanilla_sculk.json diff --git a/src/main/resources/data/modulargolems/patchouli_books/golem_guide/en_us/entries/upgrades/cr_coating.json b/src/main/resources/assets/modulargolems/patchouli_books/golem_guide/en_us/entries/upgrades/cr_coating.json similarity index 100% rename from src/main/resources/data/modulargolems/patchouli_books/golem_guide/en_us/entries/upgrades/cr_coating.json rename to src/main/resources/assets/modulargolems/patchouli_books/golem_guide/en_us/entries/upgrades/cr_coating.json diff --git a/src/main/resources/data/modulargolems/patchouli_books/golem_guide/en_us/entries/upgrades/cr_push.json b/src/main/resources/assets/modulargolems/patchouli_books/golem_guide/en_us/entries/upgrades/cr_push.json similarity index 100% rename from src/main/resources/data/modulargolems/patchouli_books/golem_guide/en_us/entries/upgrades/cr_push.json rename to src/main/resources/assets/modulargolems/patchouli_books/golem_guide/en_us/entries/upgrades/cr_push.json diff --git a/src/main/resources/data/modulargolems/patchouli_books/golem_guide/en_us/entries/upgrades/lc_attack.json b/src/main/resources/assets/modulargolems/patchouli_books/golem_guide/en_us/entries/upgrades/lc_attack.json similarity index 100% rename from src/main/resources/data/modulargolems/patchouli_books/golem_guide/en_us/entries/upgrades/lc_attack.json rename to src/main/resources/assets/modulargolems/patchouli_books/golem_guide/en_us/entries/upgrades/lc_attack.json diff --git a/src/main/resources/data/modulargolems/patchouli_books/golem_guide/en_us/entries/upgrades/lc_flame.json b/src/main/resources/assets/modulargolems/patchouli_books/golem_guide/en_us/entries/upgrades/lc_flame.json similarity index 100% rename from src/main/resources/data/modulargolems/patchouli_books/golem_guide/en_us/entries/upgrades/lc_flame.json rename to src/main/resources/assets/modulargolems/patchouli_books/golem_guide/en_us/entries/upgrades/lc_flame.json diff --git a/src/main/resources/data/modulargolems/patchouli_books/golem_guide/en_us/entries/upgrades/lc_force_field.json b/src/main/resources/assets/modulargolems/patchouli_books/golem_guide/en_us/entries/upgrades/lc_force_field.json similarity index 100% rename from src/main/resources/data/modulargolems/patchouli_books/golem_guide/en_us/entries/upgrades/lc_force_field.json rename to src/main/resources/assets/modulargolems/patchouli_books/golem_guide/en_us/entries/upgrades/lc_force_field.json diff --git a/src/main/resources/data/modulargolems/patchouli_books/golem_guide/en_us/entries/upgrades/lc_freezing.json b/src/main/resources/assets/modulargolems/patchouli_books/golem_guide/en_us/entries/upgrades/lc_freezing.json similarity index 100% rename from src/main/resources/data/modulargolems/patchouli_books/golem_guide/en_us/entries/upgrades/lc_freezing.json rename to src/main/resources/assets/modulargolems/patchouli_books/golem_guide/en_us/entries/upgrades/lc_freezing.json diff --git a/src/main/resources/data/modulargolems/patchouli_books/golem_guide/en_us/entries/upgrades/lc_potion_cleanse.json b/src/main/resources/assets/modulargolems/patchouli_books/golem_guide/en_us/entries/upgrades/lc_potion_cleanse.json similarity index 100% rename from src/main/resources/data/modulargolems/patchouli_books/golem_guide/en_us/entries/upgrades/lc_potion_cleanse.json rename to src/main/resources/assets/modulargolems/patchouli_books/golem_guide/en_us/entries/upgrades/lc_potion_cleanse.json diff --git a/src/main/resources/data/modulargolems/patchouli_books/golem_guide/en_us/entries/upgrades/lc_potion_curse.json b/src/main/resources/assets/modulargolems/patchouli_books/golem_guide/en_us/entries/upgrades/lc_potion_curse.json similarity index 100% rename from src/main/resources/data/modulargolems/patchouli_books/golem_guide/en_us/entries/upgrades/lc_potion_curse.json rename to src/main/resources/assets/modulargolems/patchouli_books/golem_guide/en_us/entries/upgrades/lc_potion_curse.json diff --git a/src/main/resources/data/modulargolems/patchouli_books/golem_guide/en_us/entries/upgrades/lc_potion_incarceration.json b/src/main/resources/assets/modulargolems/patchouli_books/golem_guide/en_us/entries/upgrades/lc_potion_incarceration.json similarity index 100% rename from src/main/resources/data/modulargolems/patchouli_books/golem_guide/en_us/entries/upgrades/lc_potion_incarceration.json rename to src/main/resources/assets/modulargolems/patchouli_books/golem_guide/en_us/entries/upgrades/lc_potion_incarceration.json diff --git a/src/main/resources/data/modulargolems/patchouli_books/golem_guide/en_us/entries/upgrades/lc_speed.json b/src/main/resources/assets/modulargolems/patchouli_books/golem_guide/en_us/entries/upgrades/lc_speed.json similarity index 100% rename from src/main/resources/data/modulargolems/patchouli_books/golem_guide/en_us/entries/upgrades/lc_speed.json rename to src/main/resources/assets/modulargolems/patchouli_books/golem_guide/en_us/entries/upgrades/lc_speed.json diff --git a/src/main/resources/data/modulargolems/patchouli_books/golem_guide/en_us/entries/upgrades/lc_teleport.json b/src/main/resources/assets/modulargolems/patchouli_books/golem_guide/en_us/entries/upgrades/lc_teleport.json similarity index 100% rename from src/main/resources/data/modulargolems/patchouli_books/golem_guide/en_us/entries/upgrades/lc_teleport.json rename to src/main/resources/assets/modulargolems/patchouli_books/golem_guide/en_us/entries/upgrades/lc_teleport.json diff --git a/src/main/resources/data/modulargolems/patchouli_books/golem_guide/en_us/entries/upgrades/tf_carminite.json b/src/main/resources/assets/modulargolems/patchouli_books/golem_guide/en_us/entries/upgrades/tf_carminite.json similarity index 100% rename from src/main/resources/data/modulargolems/patchouli_books/golem_guide/en_us/entries/upgrades/tf_carminite.json rename to src/main/resources/assets/modulargolems/patchouli_books/golem_guide/en_us/entries/upgrades/tf_carminite.json diff --git a/src/main/resources/data/modulargolems/patchouli_books/golem_guide/en_us/entries/upgrades/tf_fiery.json b/src/main/resources/assets/modulargolems/patchouli_books/golem_guide/en_us/entries/upgrades/tf_fiery.json similarity index 100% rename from src/main/resources/data/modulargolems/patchouli_books/golem_guide/en_us/entries/upgrades/tf_fiery.json rename to src/main/resources/assets/modulargolems/patchouli_books/golem_guide/en_us/entries/upgrades/tf_fiery.json diff --git a/src/main/resources/data/modulargolems/patchouli_books/golem_guide/en_us/entries/upgrades/tf_ironwood.json b/src/main/resources/assets/modulargolems/patchouli_books/golem_guide/en_us/entries/upgrades/tf_ironwood.json similarity index 100% rename from src/main/resources/data/modulargolems/patchouli_books/golem_guide/en_us/entries/upgrades/tf_ironwood.json rename to src/main/resources/assets/modulargolems/patchouli_books/golem_guide/en_us/entries/upgrades/tf_ironwood.json diff --git a/src/main/resources/data/modulargolems/patchouli_books/golem_guide/en_us/entries/upgrades/tf_knightmetal.json b/src/main/resources/assets/modulargolems/patchouli_books/golem_guide/en_us/entries/upgrades/tf_knightmetal.json similarity index 100% rename from src/main/resources/data/modulargolems/patchouli_books/golem_guide/en_us/entries/upgrades/tf_knightmetal.json rename to src/main/resources/assets/modulargolems/patchouli_books/golem_guide/en_us/entries/upgrades/tf_knightmetal.json diff --git a/src/main/resources/data/modulargolems/patchouli_books/golem_guide/en_us/entries/upgrades/tf_naga.json b/src/main/resources/assets/modulargolems/patchouli_books/golem_guide/en_us/entries/upgrades/tf_naga.json similarity index 100% rename from src/main/resources/data/modulargolems/patchouli_books/golem_guide/en_us/entries/upgrades/tf_naga.json rename to src/main/resources/assets/modulargolems/patchouli_books/golem_guide/en_us/entries/upgrades/tf_naga.json diff --git a/src/main/resources/data/modulargolems/patchouli_books/golem_guide/en_us/entries/upgrades/tf_steeleaf.json b/src/main/resources/assets/modulargolems/patchouli_books/golem_guide/en_us/entries/upgrades/tf_steeleaf.json similarity index 100% rename from src/main/resources/data/modulargolems/patchouli_books/golem_guide/en_us/entries/upgrades/tf_steeleaf.json rename to src/main/resources/assets/modulargolems/patchouli_books/golem_guide/en_us/entries/upgrades/tf_steeleaf.json diff --git a/src/main/resources/data/modulargolems/patchouli_books/golem_guide/en_us/entries/upgrades/vanilla_bell.json b/src/main/resources/assets/modulargolems/patchouli_books/golem_guide/en_us/entries/upgrades/vanilla_bell.json similarity index 100% rename from src/main/resources/data/modulargolems/patchouli_books/golem_guide/en_us/entries/upgrades/vanilla_bell.json rename to src/main/resources/assets/modulargolems/patchouli_books/golem_guide/en_us/entries/upgrades/vanilla_bell.json diff --git a/src/main/resources/data/modulargolems/patchouli_books/golem_guide/en_us/entries/upgrades/vanilla_diamond.json b/src/main/resources/assets/modulargolems/patchouli_books/golem_guide/en_us/entries/upgrades/vanilla_diamond.json similarity index 100% rename from src/main/resources/data/modulargolems/patchouli_books/golem_guide/en_us/entries/upgrades/vanilla_diamond.json rename to src/main/resources/assets/modulargolems/patchouli_books/golem_guide/en_us/entries/upgrades/vanilla_diamond.json diff --git a/src/main/resources/data/modulargolems/patchouli_books/golem_guide/en_us/entries/upgrades/vanilla_emerald.json b/src/main/resources/assets/modulargolems/patchouli_books/golem_guide/en_us/entries/upgrades/vanilla_emerald.json similarity index 100% rename from src/main/resources/data/modulargolems/patchouli_books/golem_guide/en_us/entries/upgrades/vanilla_emerald.json rename to src/main/resources/assets/modulargolems/patchouli_books/golem_guide/en_us/entries/upgrades/vanilla_emerald.json diff --git a/src/main/resources/data/modulargolems/patchouli_books/golem_guide/en_us/entries/upgrades/vanilla_ender_sight.json b/src/main/resources/assets/modulargolems/patchouli_books/golem_guide/en_us/entries/upgrades/vanilla_ender_sight.json similarity index 100% rename from src/main/resources/data/modulargolems/patchouli_books/golem_guide/en_us/entries/upgrades/vanilla_ender_sight.json rename to src/main/resources/assets/modulargolems/patchouli_books/golem_guide/en_us/entries/upgrades/vanilla_ender_sight.json diff --git a/src/main/resources/data/modulargolems/patchouli_books/golem_guide/en_us/entries/upgrades/vanilla_fire_immune.json b/src/main/resources/assets/modulargolems/patchouli_books/golem_guide/en_us/entries/upgrades/vanilla_fire_immune.json similarity index 100% rename from src/main/resources/data/modulargolems/patchouli_books/golem_guide/en_us/entries/upgrades/vanilla_fire_immune.json rename to src/main/resources/assets/modulargolems/patchouli_books/golem_guide/en_us/entries/upgrades/vanilla_fire_immune.json diff --git a/src/main/resources/data/modulargolems/patchouli_books/golem_guide/en_us/entries/upgrades/vanilla_float.json b/src/main/resources/assets/modulargolems/patchouli_books/golem_guide/en_us/entries/upgrades/vanilla_float.json similarity index 100% rename from src/main/resources/data/modulargolems/patchouli_books/golem_guide/en_us/entries/upgrades/vanilla_float.json rename to src/main/resources/assets/modulargolems/patchouli_books/golem_guide/en_us/entries/upgrades/vanilla_float.json diff --git a/src/main/resources/data/modulargolems/patchouli_books/golem_guide/en_us/entries/upgrades/vanilla_gold.json b/src/main/resources/assets/modulargolems/patchouli_books/golem_guide/en_us/entries/upgrades/vanilla_gold.json similarity index 100% rename from src/main/resources/data/modulargolems/patchouli_books/golem_guide/en_us/entries/upgrades/vanilla_gold.json rename to src/main/resources/assets/modulargolems/patchouli_books/golem_guide/en_us/entries/upgrades/vanilla_gold.json diff --git a/src/main/resources/data/modulargolems/patchouli_books/golem_guide/en_us/entries/upgrades/vanilla_meta_cauldron.json b/src/main/resources/assets/modulargolems/patchouli_books/golem_guide/en_us/entries/upgrades/vanilla_meta_cauldron.json similarity index 100% rename from src/main/resources/data/modulargolems/patchouli_books/golem_guide/en_us/entries/upgrades/vanilla_meta_cauldron.json rename to src/main/resources/assets/modulargolems/patchouli_books/golem_guide/en_us/entries/upgrades/vanilla_meta_cauldron.json diff --git a/src/main/resources/data/modulargolems/patchouli_books/golem_guide/en_us/entries/upgrades/vanilla_meta_talented.json b/src/main/resources/assets/modulargolems/patchouli_books/golem_guide/en_us/entries/upgrades/vanilla_meta_talented.json similarity index 100% rename from src/main/resources/data/modulargolems/patchouli_books/golem_guide/en_us/entries/upgrades/vanilla_meta_talented.json rename to src/main/resources/assets/modulargolems/patchouli_books/golem_guide/en_us/entries/upgrades/vanilla_meta_talented.json diff --git a/src/main/resources/data/modulargolems/patchouli_books/golem_guide/en_us/entries/upgrades/vanilla_netherite.json b/src/main/resources/assets/modulargolems/patchouli_books/golem_guide/en_us/entries/upgrades/vanilla_netherite.json similarity index 100% rename from src/main/resources/data/modulargolems/patchouli_books/golem_guide/en_us/entries/upgrades/vanilla_netherite.json rename to src/main/resources/assets/modulargolems/patchouli_books/golem_guide/en_us/entries/upgrades/vanilla_netherite.json diff --git a/src/main/resources/data/modulargolems/patchouli_books/golem_guide/en_us/entries/upgrades/vanilla_pickup.json b/src/main/resources/assets/modulargolems/patchouli_books/golem_guide/en_us/entries/upgrades/vanilla_pickup.json similarity index 100% rename from src/main/resources/data/modulargolems/patchouli_books/golem_guide/en_us/entries/upgrades/vanilla_pickup.json rename to src/main/resources/assets/modulargolems/patchouli_books/golem_guide/en_us/entries/upgrades/vanilla_pickup.json diff --git a/src/main/resources/data/modulargolems/patchouli_books/golem_guide/en_us/entries/upgrades/vanilla_player.json b/src/main/resources/assets/modulargolems/patchouli_books/golem_guide/en_us/entries/upgrades/vanilla_player.json similarity index 100% rename from src/main/resources/data/modulargolems/patchouli_books/golem_guide/en_us/entries/upgrades/vanilla_player.json rename to src/main/resources/assets/modulargolems/patchouli_books/golem_guide/en_us/entries/upgrades/vanilla_player.json diff --git a/src/main/resources/data/modulargolems/patchouli_books/golem_guide/en_us/entries/upgrades/vanilla_potion_slowness.json b/src/main/resources/assets/modulargolems/patchouli_books/golem_guide/en_us/entries/upgrades/vanilla_potion_slowness.json similarity index 100% rename from src/main/resources/data/modulargolems/patchouli_books/golem_guide/en_us/entries/upgrades/vanilla_potion_slowness.json rename to src/main/resources/assets/modulargolems/patchouli_books/golem_guide/en_us/entries/upgrades/vanilla_potion_slowness.json diff --git a/src/main/resources/data/modulargolems/patchouli_books/golem_guide/en_us/entries/upgrades/vanilla_potion_weakness.json b/src/main/resources/assets/modulargolems/patchouli_books/golem_guide/en_us/entries/upgrades/vanilla_potion_weakness.json similarity index 100% rename from src/main/resources/data/modulargolems/patchouli_books/golem_guide/en_us/entries/upgrades/vanilla_potion_weakness.json rename to src/main/resources/assets/modulargolems/patchouli_books/golem_guide/en_us/entries/upgrades/vanilla_potion_weakness.json diff --git a/src/main/resources/data/modulargolems/patchouli_books/golem_guide/en_us/entries/upgrades/vanilla_potion_wither.json b/src/main/resources/assets/modulargolems/patchouli_books/golem_guide/en_us/entries/upgrades/vanilla_potion_wither.json similarity index 100% rename from src/main/resources/data/modulargolems/patchouli_books/golem_guide/en_us/entries/upgrades/vanilla_potion_wither.json rename to src/main/resources/assets/modulargolems/patchouli_books/golem_guide/en_us/entries/upgrades/vanilla_potion_wither.json diff --git a/src/main/resources/data/modulargolems/patchouli_books/golem_guide/en_us/entries/upgrades/vanilla_quartz.json b/src/main/resources/assets/modulargolems/patchouli_books/golem_guide/en_us/entries/upgrades/vanilla_quartz.json similarity index 100% rename from src/main/resources/data/modulargolems/patchouli_books/golem_guide/en_us/entries/upgrades/vanilla_quartz.json rename to src/main/resources/assets/modulargolems/patchouli_books/golem_guide/en_us/entries/upgrades/vanilla_quartz.json diff --git a/src/main/resources/data/modulargolems/patchouli_books/golem_guide/en_us/entries/upgrades/vanilla_recycle.json b/src/main/resources/assets/modulargolems/patchouli_books/golem_guide/en_us/entries/upgrades/vanilla_recycle.json similarity index 100% rename from src/main/resources/data/modulargolems/patchouli_books/golem_guide/en_us/entries/upgrades/vanilla_recycle.json rename to src/main/resources/assets/modulargolems/patchouli_books/golem_guide/en_us/entries/upgrades/vanilla_recycle.json diff --git a/src/main/resources/data/modulargolems/patchouli_books/golem_guide/en_us/entries/upgrades/vanilla_speed.json b/src/main/resources/assets/modulargolems/patchouli_books/golem_guide/en_us/entries/upgrades/vanilla_speed.json similarity index 100% rename from src/main/resources/data/modulargolems/patchouli_books/golem_guide/en_us/entries/upgrades/vanilla_speed.json rename to src/main/resources/assets/modulargolems/patchouli_books/golem_guide/en_us/entries/upgrades/vanilla_speed.json diff --git a/src/main/resources/data/modulargolems/patchouli_books/golem_guide/en_us/entries/upgrades/vanilla_sponge.json b/src/main/resources/assets/modulargolems/patchouli_books/golem_guide/en_us/entries/upgrades/vanilla_sponge.json similarity index 100% rename from src/main/resources/data/modulargolems/patchouli_books/golem_guide/en_us/entries/upgrades/vanilla_sponge.json rename to src/main/resources/assets/modulargolems/patchouli_books/golem_guide/en_us/entries/upgrades/vanilla_sponge.json diff --git a/src/main/resources/data/modulargolems/patchouli_books/golem_guide/en_us/entries/upgrades/vanilla_swim.json b/src/main/resources/assets/modulargolems/patchouli_books/golem_guide/en_us/entries/upgrades/vanilla_swim.json similarity index 100% rename from src/main/resources/data/modulargolems/patchouli_books/golem_guide/en_us/entries/upgrades/vanilla_swim.json rename to src/main/resources/assets/modulargolems/patchouli_books/golem_guide/en_us/entries/upgrades/vanilla_swim.json diff --git a/src/main/resources/data/modulargolems/patchouli_books/golem_guide/en_us/entries/upgrades/vanilla_thunder_immune.json b/src/main/resources/assets/modulargolems/patchouli_books/golem_guide/en_us/entries/upgrades/vanilla_thunder_immune.json similarity index 100% rename from src/main/resources/data/modulargolems/patchouli_books/golem_guide/en_us/entries/upgrades/vanilla_thunder_immune.json rename to src/main/resources/assets/modulargolems/patchouli_books/golem_guide/en_us/entries/upgrades/vanilla_thunder_immune.json diff --git a/src/main/resources/data/modulargolems/patchouli_books/golem_guide/zh_cn/categories/golems.json b/src/main/resources/assets/modulargolems/patchouli_books/golem_guide/zh_cn/categories/golems.json similarity index 100% rename from src/main/resources/data/modulargolems/patchouli_books/golem_guide/zh_cn/categories/golems.json rename to src/main/resources/assets/modulargolems/patchouli_books/golem_guide/zh_cn/categories/golems.json diff --git a/src/main/resources/data/modulargolems/patchouli_books/golem_guide/zh_cn/categories/materials.json b/src/main/resources/assets/modulargolems/patchouli_books/golem_guide/zh_cn/categories/materials.json similarity index 100% rename from src/main/resources/data/modulargolems/patchouli_books/golem_guide/zh_cn/categories/materials.json rename to src/main/resources/assets/modulargolems/patchouli_books/golem_guide/zh_cn/categories/materials.json diff --git a/src/main/resources/data/modulargolems/patchouli_books/golem_guide/zh_cn/categories/upgrades.json b/src/main/resources/assets/modulargolems/patchouli_books/golem_guide/zh_cn/categories/upgrades.json similarity index 100% rename from src/main/resources/data/modulargolems/patchouli_books/golem_guide/zh_cn/categories/upgrades.json rename to src/main/resources/assets/modulargolems/patchouli_books/golem_guide/zh_cn/categories/upgrades.json diff --git a/src/main/resources/data/modulargolems/patchouli_books/golem_guide/zh_cn/entries/golems/a1_craft.json b/src/main/resources/assets/modulargolems/patchouli_books/golem_guide/zh_cn/entries/golems/a1_craft.json similarity index 100% rename from src/main/resources/data/modulargolems/patchouli_books/golem_guide/zh_cn/entries/golems/a1_craft.json rename to src/main/resources/assets/modulargolems/patchouli_books/golem_guide/zh_cn/entries/golems/a1_craft.json diff --git a/src/main/resources/data/modulargolems/patchouli_books/golem_guide/zh_cn/entries/golems/a2_upgrade.json b/src/main/resources/assets/modulargolems/patchouli_books/golem_guide/zh_cn/entries/golems/a2_upgrade.json similarity index 100% rename from src/main/resources/data/modulargolems/patchouli_books/golem_guide/zh_cn/entries/golems/a2_upgrade.json rename to src/main/resources/assets/modulargolems/patchouli_books/golem_guide/zh_cn/entries/golems/a2_upgrade.json diff --git a/src/main/resources/data/modulargolems/patchouli_books/golem_guide/zh_cn/entries/golems/b1_metal_golem.json b/src/main/resources/assets/modulargolems/patchouli_books/golem_guide/zh_cn/entries/golems/b1_metal_golem.json similarity index 100% rename from src/main/resources/data/modulargolems/patchouli_books/golem_guide/zh_cn/entries/golems/b1_metal_golem.json rename to src/main/resources/assets/modulargolems/patchouli_books/golem_guide/zh_cn/entries/golems/b1_metal_golem.json diff --git a/src/main/resources/data/modulargolems/patchouli_books/golem_guide/zh_cn/entries/golems/b2_humanoid_golem.json b/src/main/resources/assets/modulargolems/patchouli_books/golem_guide/zh_cn/entries/golems/b2_humanoid_golem.json similarity index 100% rename from src/main/resources/data/modulargolems/patchouli_books/golem_guide/zh_cn/entries/golems/b2_humanoid_golem.json rename to src/main/resources/assets/modulargolems/patchouli_books/golem_guide/zh_cn/entries/golems/b2_humanoid_golem.json diff --git a/src/main/resources/data/modulargolems/patchouli_books/golem_guide/zh_cn/entries/golems/b3_dog_golem.json b/src/main/resources/assets/modulargolems/patchouli_books/golem_guide/zh_cn/entries/golems/b3_dog_golem.json similarity index 100% rename from src/main/resources/data/modulargolems/patchouli_books/golem_guide/zh_cn/entries/golems/b3_dog_golem.json rename to src/main/resources/assets/modulargolems/patchouli_books/golem_guide/zh_cn/entries/golems/b3_dog_golem.json diff --git a/src/main/resources/data/modulargolems/patchouli_books/golem_guide/zh_cn/entries/golems/c1_retrieval_wand.json b/src/main/resources/assets/modulargolems/patchouli_books/golem_guide/zh_cn/entries/golems/c1_retrieval_wand.json similarity index 100% rename from src/main/resources/data/modulargolems/patchouli_books/golem_guide/zh_cn/entries/golems/c1_retrieval_wand.json rename to src/main/resources/assets/modulargolems/patchouli_books/golem_guide/zh_cn/entries/golems/c1_retrieval_wand.json diff --git a/src/main/resources/data/modulargolems/patchouli_books/golem_guide/zh_cn/entries/golems/c2_command_wand.json b/src/main/resources/assets/modulargolems/patchouli_books/golem_guide/zh_cn/entries/golems/c2_command_wand.json similarity index 100% rename from src/main/resources/data/modulargolems/patchouli_books/golem_guide/zh_cn/entries/golems/c2_command_wand.json rename to src/main/resources/assets/modulargolems/patchouli_books/golem_guide/zh_cn/entries/golems/c2_command_wand.json diff --git a/src/main/resources/data/modulargolems/patchouli_books/golem_guide/zh_cn/entries/golems/c3_summon_wand.json b/src/main/resources/assets/modulargolems/patchouli_books/golem_guide/zh_cn/entries/golems/c3_summon_wand.json similarity index 100% rename from src/main/resources/data/modulargolems/patchouli_books/golem_guide/zh_cn/entries/golems/c3_summon_wand.json rename to src/main/resources/assets/modulargolems/patchouli_books/golem_guide/zh_cn/entries/golems/c3_summon_wand.json diff --git a/src/main/resources/data/modulargolems/patchouli_books/golem_guide/zh_cn/entries/materials/bg_brimsteel.json b/src/main/resources/assets/modulargolems/patchouli_books/golem_guide/zh_cn/entries/materials/bg_brimsteel.json similarity index 100% rename from src/main/resources/data/modulargolems/patchouli_books/golem_guide/zh_cn/entries/materials/bg_brimsteel.json rename to src/main/resources/assets/modulargolems/patchouli_books/golem_guide/zh_cn/entries/materials/bg_brimsteel.json diff --git a/src/main/resources/data/modulargolems/patchouli_books/golem_guide/zh_cn/entries/materials/cr_andesite_alloy.json b/src/main/resources/assets/modulargolems/patchouli_books/golem_guide/zh_cn/entries/materials/cr_andesite_alloy.json similarity index 100% rename from src/main/resources/data/modulargolems/patchouli_books/golem_guide/zh_cn/entries/materials/cr_andesite_alloy.json rename to src/main/resources/assets/modulargolems/patchouli_books/golem_guide/zh_cn/entries/materials/cr_andesite_alloy.json diff --git a/src/main/resources/data/modulargolems/patchouli_books/golem_guide/zh_cn/entries/materials/cr_brass.json b/src/main/resources/assets/modulargolems/patchouli_books/golem_guide/zh_cn/entries/materials/cr_brass.json similarity index 100% rename from src/main/resources/data/modulargolems/patchouli_books/golem_guide/zh_cn/entries/materials/cr_brass.json rename to src/main/resources/assets/modulargolems/patchouli_books/golem_guide/zh_cn/entries/materials/cr_brass.json diff --git a/src/main/resources/data/modulargolems/patchouli_books/golem_guide/zh_cn/entries/materials/cr_railway.json b/src/main/resources/assets/modulargolems/patchouli_books/golem_guide/zh_cn/entries/materials/cr_railway.json similarity index 100% rename from src/main/resources/data/modulargolems/patchouli_books/golem_guide/zh_cn/entries/materials/cr_railway.json rename to src/main/resources/assets/modulargolems/patchouli_books/golem_guide/zh_cn/entries/materials/cr_railway.json diff --git a/src/main/resources/data/modulargolems/patchouli_books/golem_guide/zh_cn/entries/materials/cr_zinc.json b/src/main/resources/assets/modulargolems/patchouli_books/golem_guide/zh_cn/entries/materials/cr_zinc.json similarity index 100% rename from src/main/resources/data/modulargolems/patchouli_books/golem_guide/zh_cn/entries/materials/cr_zinc.json rename to src/main/resources/assets/modulargolems/patchouli_books/golem_guide/zh_cn/entries/materials/cr_zinc.json diff --git a/src/main/resources/data/modulargolems/patchouli_books/golem_guide/zh_cn/entries/materials/lc_eternium.json b/src/main/resources/assets/modulargolems/patchouli_books/golem_guide/zh_cn/entries/materials/lc_eternium.json similarity index 100% rename from src/main/resources/data/modulargolems/patchouli_books/golem_guide/zh_cn/entries/materials/lc_eternium.json rename to src/main/resources/assets/modulargolems/patchouli_books/golem_guide/zh_cn/entries/materials/lc_eternium.json diff --git a/src/main/resources/data/modulargolems/patchouli_books/golem_guide/zh_cn/entries/materials/lc_poseidite.json b/src/main/resources/assets/modulargolems/patchouli_books/golem_guide/zh_cn/entries/materials/lc_poseidite.json similarity index 100% rename from src/main/resources/data/modulargolems/patchouli_books/golem_guide/zh_cn/entries/materials/lc_poseidite.json rename to src/main/resources/assets/modulargolems/patchouli_books/golem_guide/zh_cn/entries/materials/lc_poseidite.json diff --git a/src/main/resources/data/modulargolems/patchouli_books/golem_guide/zh_cn/entries/materials/lc_shulkerate.json b/src/main/resources/assets/modulargolems/patchouli_books/golem_guide/zh_cn/entries/materials/lc_shulkerate.json similarity index 100% rename from src/main/resources/data/modulargolems/patchouli_books/golem_guide/zh_cn/entries/materials/lc_shulkerate.json rename to src/main/resources/assets/modulargolems/patchouli_books/golem_guide/zh_cn/entries/materials/lc_shulkerate.json diff --git a/src/main/resources/data/modulargolems/patchouli_books/golem_guide/zh_cn/entries/materials/lc_totemic_gold.json b/src/main/resources/assets/modulargolems/patchouli_books/golem_guide/zh_cn/entries/materials/lc_totemic_gold.json similarity index 100% rename from src/main/resources/data/modulargolems/patchouli_books/golem_guide/zh_cn/entries/materials/lc_totemic_gold.json rename to src/main/resources/assets/modulargolems/patchouli_books/golem_guide/zh_cn/entries/materials/lc_totemic_gold.json diff --git a/src/main/resources/data/modulargolems/patchouli_books/golem_guide/zh_cn/entries/materials/tf_fiery.json b/src/main/resources/assets/modulargolems/patchouli_books/golem_guide/zh_cn/entries/materials/tf_fiery.json similarity index 100% rename from src/main/resources/data/modulargolems/patchouli_books/golem_guide/zh_cn/entries/materials/tf_fiery.json rename to src/main/resources/assets/modulargolems/patchouli_books/golem_guide/zh_cn/entries/materials/tf_fiery.json diff --git a/src/main/resources/data/modulargolems/patchouli_books/golem_guide/zh_cn/entries/materials/tf_ironwood.json b/src/main/resources/assets/modulargolems/patchouli_books/golem_guide/zh_cn/entries/materials/tf_ironwood.json similarity index 100% rename from src/main/resources/data/modulargolems/patchouli_books/golem_guide/zh_cn/entries/materials/tf_ironwood.json rename to src/main/resources/assets/modulargolems/patchouli_books/golem_guide/zh_cn/entries/materials/tf_ironwood.json diff --git a/src/main/resources/data/modulargolems/patchouli_books/golem_guide/zh_cn/entries/materials/tf_knightmetal.json b/src/main/resources/assets/modulargolems/patchouli_books/golem_guide/zh_cn/entries/materials/tf_knightmetal.json similarity index 100% rename from src/main/resources/data/modulargolems/patchouli_books/golem_guide/zh_cn/entries/materials/tf_knightmetal.json rename to src/main/resources/assets/modulargolems/patchouli_books/golem_guide/zh_cn/entries/materials/tf_knightmetal.json diff --git a/src/main/resources/data/modulargolems/patchouli_books/golem_guide/zh_cn/entries/materials/tf_steeleaf.json b/src/main/resources/assets/modulargolems/patchouli_books/golem_guide/zh_cn/entries/materials/tf_steeleaf.json similarity index 100% rename from src/main/resources/data/modulargolems/patchouli_books/golem_guide/zh_cn/entries/materials/tf_steeleaf.json rename to src/main/resources/assets/modulargolems/patchouli_books/golem_guide/zh_cn/entries/materials/tf_steeleaf.json diff --git a/src/main/resources/data/modulargolems/patchouli_books/golem_guide/zh_cn/entries/materials/vanilla_copper.json b/src/main/resources/assets/modulargolems/patchouli_books/golem_guide/zh_cn/entries/materials/vanilla_copper.json similarity index 100% rename from src/main/resources/data/modulargolems/patchouli_books/golem_guide/zh_cn/entries/materials/vanilla_copper.json rename to src/main/resources/assets/modulargolems/patchouli_books/golem_guide/zh_cn/entries/materials/vanilla_copper.json diff --git a/src/main/resources/data/modulargolems/patchouli_books/golem_guide/zh_cn/entries/materials/vanilla_gold.json b/src/main/resources/assets/modulargolems/patchouli_books/golem_guide/zh_cn/entries/materials/vanilla_gold.json similarity index 100% rename from src/main/resources/data/modulargolems/patchouli_books/golem_guide/zh_cn/entries/materials/vanilla_gold.json rename to src/main/resources/assets/modulargolems/patchouli_books/golem_guide/zh_cn/entries/materials/vanilla_gold.json diff --git a/src/main/resources/data/modulargolems/patchouli_books/golem_guide/zh_cn/entries/materials/vanilla_iron.json b/src/main/resources/assets/modulargolems/patchouli_books/golem_guide/zh_cn/entries/materials/vanilla_iron.json similarity index 100% rename from src/main/resources/data/modulargolems/patchouli_books/golem_guide/zh_cn/entries/materials/vanilla_iron.json rename to src/main/resources/assets/modulargolems/patchouli_books/golem_guide/zh_cn/entries/materials/vanilla_iron.json diff --git a/src/main/resources/data/modulargolems/patchouli_books/golem_guide/zh_cn/entries/materials/vanilla_netherite.json b/src/main/resources/assets/modulargolems/patchouli_books/golem_guide/zh_cn/entries/materials/vanilla_netherite.json similarity index 100% rename from src/main/resources/data/modulargolems/patchouli_books/golem_guide/zh_cn/entries/materials/vanilla_netherite.json rename to src/main/resources/assets/modulargolems/patchouli_books/golem_guide/zh_cn/entries/materials/vanilla_netherite.json diff --git a/src/main/resources/data/modulargolems/patchouli_books/golem_guide/zh_cn/entries/materials/vanilla_sculk.json b/src/main/resources/assets/modulargolems/patchouli_books/golem_guide/zh_cn/entries/materials/vanilla_sculk.json similarity index 100% rename from src/main/resources/data/modulargolems/patchouli_books/golem_guide/zh_cn/entries/materials/vanilla_sculk.json rename to src/main/resources/assets/modulargolems/patchouli_books/golem_guide/zh_cn/entries/materials/vanilla_sculk.json diff --git a/src/main/resources/data/modulargolems/patchouli_books/golem_guide/zh_cn/entries/upgrades/cr_coating.json b/src/main/resources/assets/modulargolems/patchouli_books/golem_guide/zh_cn/entries/upgrades/cr_coating.json similarity index 100% rename from src/main/resources/data/modulargolems/patchouli_books/golem_guide/zh_cn/entries/upgrades/cr_coating.json rename to src/main/resources/assets/modulargolems/patchouli_books/golem_guide/zh_cn/entries/upgrades/cr_coating.json diff --git a/src/main/resources/data/modulargolems/patchouli_books/golem_guide/zh_cn/entries/upgrades/cr_push.json b/src/main/resources/assets/modulargolems/patchouli_books/golem_guide/zh_cn/entries/upgrades/cr_push.json similarity index 100% rename from src/main/resources/data/modulargolems/patchouli_books/golem_guide/zh_cn/entries/upgrades/cr_push.json rename to src/main/resources/assets/modulargolems/patchouli_books/golem_guide/zh_cn/entries/upgrades/cr_push.json diff --git a/src/main/resources/data/modulargolems/patchouli_books/golem_guide/zh_cn/entries/upgrades/lc_attack.json b/src/main/resources/assets/modulargolems/patchouli_books/golem_guide/zh_cn/entries/upgrades/lc_attack.json similarity index 100% rename from src/main/resources/data/modulargolems/patchouli_books/golem_guide/zh_cn/entries/upgrades/lc_attack.json rename to src/main/resources/assets/modulargolems/patchouli_books/golem_guide/zh_cn/entries/upgrades/lc_attack.json diff --git a/src/main/resources/data/modulargolems/patchouli_books/golem_guide/zh_cn/entries/upgrades/lc_flame.json b/src/main/resources/assets/modulargolems/patchouli_books/golem_guide/zh_cn/entries/upgrades/lc_flame.json similarity index 100% rename from src/main/resources/data/modulargolems/patchouli_books/golem_guide/zh_cn/entries/upgrades/lc_flame.json rename to src/main/resources/assets/modulargolems/patchouli_books/golem_guide/zh_cn/entries/upgrades/lc_flame.json diff --git a/src/main/resources/data/modulargolems/patchouli_books/golem_guide/zh_cn/entries/upgrades/lc_force_field.json b/src/main/resources/assets/modulargolems/patchouli_books/golem_guide/zh_cn/entries/upgrades/lc_force_field.json similarity index 100% rename from src/main/resources/data/modulargolems/patchouli_books/golem_guide/zh_cn/entries/upgrades/lc_force_field.json rename to src/main/resources/assets/modulargolems/patchouli_books/golem_guide/zh_cn/entries/upgrades/lc_force_field.json diff --git a/src/main/resources/data/modulargolems/patchouli_books/golem_guide/zh_cn/entries/upgrades/lc_freezing.json b/src/main/resources/assets/modulargolems/patchouli_books/golem_guide/zh_cn/entries/upgrades/lc_freezing.json similarity index 100% rename from src/main/resources/data/modulargolems/patchouli_books/golem_guide/zh_cn/entries/upgrades/lc_freezing.json rename to src/main/resources/assets/modulargolems/patchouli_books/golem_guide/zh_cn/entries/upgrades/lc_freezing.json diff --git a/src/main/resources/data/modulargolems/patchouli_books/golem_guide/zh_cn/entries/upgrades/lc_potion_cleanse.json b/src/main/resources/assets/modulargolems/patchouli_books/golem_guide/zh_cn/entries/upgrades/lc_potion_cleanse.json similarity index 100% rename from src/main/resources/data/modulargolems/patchouli_books/golem_guide/zh_cn/entries/upgrades/lc_potion_cleanse.json rename to src/main/resources/assets/modulargolems/patchouli_books/golem_guide/zh_cn/entries/upgrades/lc_potion_cleanse.json diff --git a/src/main/resources/data/modulargolems/patchouli_books/golem_guide/zh_cn/entries/upgrades/lc_potion_curse.json b/src/main/resources/assets/modulargolems/patchouli_books/golem_guide/zh_cn/entries/upgrades/lc_potion_curse.json similarity index 100% rename from src/main/resources/data/modulargolems/patchouli_books/golem_guide/zh_cn/entries/upgrades/lc_potion_curse.json rename to src/main/resources/assets/modulargolems/patchouli_books/golem_guide/zh_cn/entries/upgrades/lc_potion_curse.json diff --git a/src/main/resources/data/modulargolems/patchouli_books/golem_guide/zh_cn/entries/upgrades/lc_potion_incarceration.json b/src/main/resources/assets/modulargolems/patchouli_books/golem_guide/zh_cn/entries/upgrades/lc_potion_incarceration.json similarity index 100% rename from src/main/resources/data/modulargolems/patchouli_books/golem_guide/zh_cn/entries/upgrades/lc_potion_incarceration.json rename to src/main/resources/assets/modulargolems/patchouli_books/golem_guide/zh_cn/entries/upgrades/lc_potion_incarceration.json diff --git a/src/main/resources/data/modulargolems/patchouli_books/golem_guide/zh_cn/entries/upgrades/lc_speed.json b/src/main/resources/assets/modulargolems/patchouli_books/golem_guide/zh_cn/entries/upgrades/lc_speed.json similarity index 100% rename from src/main/resources/data/modulargolems/patchouli_books/golem_guide/zh_cn/entries/upgrades/lc_speed.json rename to src/main/resources/assets/modulargolems/patchouli_books/golem_guide/zh_cn/entries/upgrades/lc_speed.json diff --git a/src/main/resources/data/modulargolems/patchouli_books/golem_guide/zh_cn/entries/upgrades/lc_teleport.json b/src/main/resources/assets/modulargolems/patchouli_books/golem_guide/zh_cn/entries/upgrades/lc_teleport.json similarity index 100% rename from src/main/resources/data/modulargolems/patchouli_books/golem_guide/zh_cn/entries/upgrades/lc_teleport.json rename to src/main/resources/assets/modulargolems/patchouli_books/golem_guide/zh_cn/entries/upgrades/lc_teleport.json diff --git a/src/main/resources/data/modulargolems/patchouli_books/golem_guide/zh_cn/entries/upgrades/tf_carminite.json b/src/main/resources/assets/modulargolems/patchouli_books/golem_guide/zh_cn/entries/upgrades/tf_carminite.json similarity index 100% rename from src/main/resources/data/modulargolems/patchouli_books/golem_guide/zh_cn/entries/upgrades/tf_carminite.json rename to src/main/resources/assets/modulargolems/patchouli_books/golem_guide/zh_cn/entries/upgrades/tf_carminite.json diff --git a/src/main/resources/data/modulargolems/patchouli_books/golem_guide/zh_cn/entries/upgrades/tf_fiery.json b/src/main/resources/assets/modulargolems/patchouli_books/golem_guide/zh_cn/entries/upgrades/tf_fiery.json similarity index 100% rename from src/main/resources/data/modulargolems/patchouli_books/golem_guide/zh_cn/entries/upgrades/tf_fiery.json rename to src/main/resources/assets/modulargolems/patchouli_books/golem_guide/zh_cn/entries/upgrades/tf_fiery.json diff --git a/src/main/resources/data/modulargolems/patchouli_books/golem_guide/zh_cn/entries/upgrades/tf_ironwood.json b/src/main/resources/assets/modulargolems/patchouli_books/golem_guide/zh_cn/entries/upgrades/tf_ironwood.json similarity index 100% rename from src/main/resources/data/modulargolems/patchouli_books/golem_guide/zh_cn/entries/upgrades/tf_ironwood.json rename to src/main/resources/assets/modulargolems/patchouli_books/golem_guide/zh_cn/entries/upgrades/tf_ironwood.json diff --git a/src/main/resources/data/modulargolems/patchouli_books/golem_guide/zh_cn/entries/upgrades/tf_knightmetal.json b/src/main/resources/assets/modulargolems/patchouli_books/golem_guide/zh_cn/entries/upgrades/tf_knightmetal.json similarity index 100% rename from src/main/resources/data/modulargolems/patchouli_books/golem_guide/zh_cn/entries/upgrades/tf_knightmetal.json rename to src/main/resources/assets/modulargolems/patchouli_books/golem_guide/zh_cn/entries/upgrades/tf_knightmetal.json diff --git a/src/main/resources/data/modulargolems/patchouli_books/golem_guide/zh_cn/entries/upgrades/tf_naga.json b/src/main/resources/assets/modulargolems/patchouli_books/golem_guide/zh_cn/entries/upgrades/tf_naga.json similarity index 100% rename from src/main/resources/data/modulargolems/patchouli_books/golem_guide/zh_cn/entries/upgrades/tf_naga.json rename to src/main/resources/assets/modulargolems/patchouli_books/golem_guide/zh_cn/entries/upgrades/tf_naga.json diff --git a/src/main/resources/data/modulargolems/patchouli_books/golem_guide/zh_cn/entries/upgrades/tf_steeleaf.json b/src/main/resources/assets/modulargolems/patchouli_books/golem_guide/zh_cn/entries/upgrades/tf_steeleaf.json similarity index 100% rename from src/main/resources/data/modulargolems/patchouli_books/golem_guide/zh_cn/entries/upgrades/tf_steeleaf.json rename to src/main/resources/assets/modulargolems/patchouli_books/golem_guide/zh_cn/entries/upgrades/tf_steeleaf.json diff --git a/src/main/resources/data/modulargolems/patchouli_books/golem_guide/zh_cn/entries/upgrades/vanilla_bell.json b/src/main/resources/assets/modulargolems/patchouli_books/golem_guide/zh_cn/entries/upgrades/vanilla_bell.json similarity index 100% rename from src/main/resources/data/modulargolems/patchouli_books/golem_guide/zh_cn/entries/upgrades/vanilla_bell.json rename to src/main/resources/assets/modulargolems/patchouli_books/golem_guide/zh_cn/entries/upgrades/vanilla_bell.json diff --git a/src/main/resources/data/modulargolems/patchouli_books/golem_guide/zh_cn/entries/upgrades/vanilla_diamond.json b/src/main/resources/assets/modulargolems/patchouli_books/golem_guide/zh_cn/entries/upgrades/vanilla_diamond.json similarity index 100% rename from src/main/resources/data/modulargolems/patchouli_books/golem_guide/zh_cn/entries/upgrades/vanilla_diamond.json rename to src/main/resources/assets/modulargolems/patchouli_books/golem_guide/zh_cn/entries/upgrades/vanilla_diamond.json diff --git a/src/main/resources/data/modulargolems/patchouli_books/golem_guide/zh_cn/entries/upgrades/vanilla_emerald.json b/src/main/resources/assets/modulargolems/patchouli_books/golem_guide/zh_cn/entries/upgrades/vanilla_emerald.json similarity index 100% rename from src/main/resources/data/modulargolems/patchouli_books/golem_guide/zh_cn/entries/upgrades/vanilla_emerald.json rename to src/main/resources/assets/modulargolems/patchouli_books/golem_guide/zh_cn/entries/upgrades/vanilla_emerald.json diff --git a/src/main/resources/data/modulargolems/patchouli_books/golem_guide/zh_cn/entries/upgrades/vanilla_ender_sight.json b/src/main/resources/assets/modulargolems/patchouli_books/golem_guide/zh_cn/entries/upgrades/vanilla_ender_sight.json similarity index 100% rename from src/main/resources/data/modulargolems/patchouli_books/golem_guide/zh_cn/entries/upgrades/vanilla_ender_sight.json rename to src/main/resources/assets/modulargolems/patchouli_books/golem_guide/zh_cn/entries/upgrades/vanilla_ender_sight.json diff --git a/src/main/resources/data/modulargolems/patchouli_books/golem_guide/zh_cn/entries/upgrades/vanilla_fire_immune.json b/src/main/resources/assets/modulargolems/patchouli_books/golem_guide/zh_cn/entries/upgrades/vanilla_fire_immune.json similarity index 100% rename from src/main/resources/data/modulargolems/patchouli_books/golem_guide/zh_cn/entries/upgrades/vanilla_fire_immune.json rename to src/main/resources/assets/modulargolems/patchouli_books/golem_guide/zh_cn/entries/upgrades/vanilla_fire_immune.json diff --git a/src/main/resources/data/modulargolems/patchouli_books/golem_guide/zh_cn/entries/upgrades/vanilla_float.json b/src/main/resources/assets/modulargolems/patchouli_books/golem_guide/zh_cn/entries/upgrades/vanilla_float.json similarity index 100% rename from src/main/resources/data/modulargolems/patchouli_books/golem_guide/zh_cn/entries/upgrades/vanilla_float.json rename to src/main/resources/assets/modulargolems/patchouli_books/golem_guide/zh_cn/entries/upgrades/vanilla_float.json diff --git a/src/main/resources/data/modulargolems/patchouli_books/golem_guide/zh_cn/entries/upgrades/vanilla_gold.json b/src/main/resources/assets/modulargolems/patchouli_books/golem_guide/zh_cn/entries/upgrades/vanilla_gold.json similarity index 100% rename from src/main/resources/data/modulargolems/patchouli_books/golem_guide/zh_cn/entries/upgrades/vanilla_gold.json rename to src/main/resources/assets/modulargolems/patchouli_books/golem_guide/zh_cn/entries/upgrades/vanilla_gold.json diff --git a/src/main/resources/data/modulargolems/patchouli_books/golem_guide/zh_cn/entries/upgrades/vanilla_meta_cauldron.json b/src/main/resources/assets/modulargolems/patchouli_books/golem_guide/zh_cn/entries/upgrades/vanilla_meta_cauldron.json similarity index 100% rename from src/main/resources/data/modulargolems/patchouli_books/golem_guide/zh_cn/entries/upgrades/vanilla_meta_cauldron.json rename to src/main/resources/assets/modulargolems/patchouli_books/golem_guide/zh_cn/entries/upgrades/vanilla_meta_cauldron.json diff --git a/src/main/resources/data/modulargolems/patchouli_books/golem_guide/zh_cn/entries/upgrades/vanilla_meta_talented.json b/src/main/resources/assets/modulargolems/patchouli_books/golem_guide/zh_cn/entries/upgrades/vanilla_meta_talented.json similarity index 100% rename from src/main/resources/data/modulargolems/patchouli_books/golem_guide/zh_cn/entries/upgrades/vanilla_meta_talented.json rename to src/main/resources/assets/modulargolems/patchouli_books/golem_guide/zh_cn/entries/upgrades/vanilla_meta_talented.json diff --git a/src/main/resources/data/modulargolems/patchouli_books/golem_guide/zh_cn/entries/upgrades/vanilla_netherite.json b/src/main/resources/assets/modulargolems/patchouli_books/golem_guide/zh_cn/entries/upgrades/vanilla_netherite.json similarity index 100% rename from src/main/resources/data/modulargolems/patchouli_books/golem_guide/zh_cn/entries/upgrades/vanilla_netherite.json rename to src/main/resources/assets/modulargolems/patchouli_books/golem_guide/zh_cn/entries/upgrades/vanilla_netherite.json diff --git a/src/main/resources/data/modulargolems/patchouli_books/golem_guide/zh_cn/entries/upgrades/vanilla_pickup.json b/src/main/resources/assets/modulargolems/patchouli_books/golem_guide/zh_cn/entries/upgrades/vanilla_pickup.json similarity index 100% rename from src/main/resources/data/modulargolems/patchouli_books/golem_guide/zh_cn/entries/upgrades/vanilla_pickup.json rename to src/main/resources/assets/modulargolems/patchouli_books/golem_guide/zh_cn/entries/upgrades/vanilla_pickup.json diff --git a/src/main/resources/data/modulargolems/patchouli_books/golem_guide/zh_cn/entries/upgrades/vanilla_player.json b/src/main/resources/assets/modulargolems/patchouli_books/golem_guide/zh_cn/entries/upgrades/vanilla_player.json similarity index 100% rename from src/main/resources/data/modulargolems/patchouli_books/golem_guide/zh_cn/entries/upgrades/vanilla_player.json rename to src/main/resources/assets/modulargolems/patchouli_books/golem_guide/zh_cn/entries/upgrades/vanilla_player.json diff --git a/src/main/resources/data/modulargolems/patchouli_books/golem_guide/zh_cn/entries/upgrades/vanilla_potion_slowness.json b/src/main/resources/assets/modulargolems/patchouli_books/golem_guide/zh_cn/entries/upgrades/vanilla_potion_slowness.json similarity index 100% rename from src/main/resources/data/modulargolems/patchouli_books/golem_guide/zh_cn/entries/upgrades/vanilla_potion_slowness.json rename to src/main/resources/assets/modulargolems/patchouli_books/golem_guide/zh_cn/entries/upgrades/vanilla_potion_slowness.json diff --git a/src/main/resources/data/modulargolems/patchouli_books/golem_guide/zh_cn/entries/upgrades/vanilla_potion_weakness.json b/src/main/resources/assets/modulargolems/patchouli_books/golem_guide/zh_cn/entries/upgrades/vanilla_potion_weakness.json similarity index 100% rename from src/main/resources/data/modulargolems/patchouli_books/golem_guide/zh_cn/entries/upgrades/vanilla_potion_weakness.json rename to src/main/resources/assets/modulargolems/patchouli_books/golem_guide/zh_cn/entries/upgrades/vanilla_potion_weakness.json diff --git a/src/main/resources/data/modulargolems/patchouli_books/golem_guide/zh_cn/entries/upgrades/vanilla_potion_wither.json b/src/main/resources/assets/modulargolems/patchouli_books/golem_guide/zh_cn/entries/upgrades/vanilla_potion_wither.json similarity index 100% rename from src/main/resources/data/modulargolems/patchouli_books/golem_guide/zh_cn/entries/upgrades/vanilla_potion_wither.json rename to src/main/resources/assets/modulargolems/patchouli_books/golem_guide/zh_cn/entries/upgrades/vanilla_potion_wither.json diff --git a/src/main/resources/data/modulargolems/patchouli_books/golem_guide/zh_cn/entries/upgrades/vanilla_quartz.json b/src/main/resources/assets/modulargolems/patchouli_books/golem_guide/zh_cn/entries/upgrades/vanilla_quartz.json similarity index 100% rename from src/main/resources/data/modulargolems/patchouli_books/golem_guide/zh_cn/entries/upgrades/vanilla_quartz.json rename to src/main/resources/assets/modulargolems/patchouli_books/golem_guide/zh_cn/entries/upgrades/vanilla_quartz.json diff --git a/src/main/resources/data/modulargolems/patchouli_books/golem_guide/zh_cn/entries/upgrades/vanilla_recycle.json b/src/main/resources/assets/modulargolems/patchouli_books/golem_guide/zh_cn/entries/upgrades/vanilla_recycle.json similarity index 100% rename from src/main/resources/data/modulargolems/patchouli_books/golem_guide/zh_cn/entries/upgrades/vanilla_recycle.json rename to src/main/resources/assets/modulargolems/patchouli_books/golem_guide/zh_cn/entries/upgrades/vanilla_recycle.json diff --git a/src/main/resources/data/modulargolems/patchouli_books/golem_guide/zh_cn/entries/upgrades/vanilla_speed.json b/src/main/resources/assets/modulargolems/patchouli_books/golem_guide/zh_cn/entries/upgrades/vanilla_speed.json similarity index 100% rename from src/main/resources/data/modulargolems/patchouli_books/golem_guide/zh_cn/entries/upgrades/vanilla_speed.json rename to src/main/resources/assets/modulargolems/patchouli_books/golem_guide/zh_cn/entries/upgrades/vanilla_speed.json diff --git a/src/main/resources/data/modulargolems/patchouli_books/golem_guide/zh_cn/entries/upgrades/vanilla_sponge.json b/src/main/resources/assets/modulargolems/patchouli_books/golem_guide/zh_cn/entries/upgrades/vanilla_sponge.json similarity index 100% rename from src/main/resources/data/modulargolems/patchouli_books/golem_guide/zh_cn/entries/upgrades/vanilla_sponge.json rename to src/main/resources/assets/modulargolems/patchouli_books/golem_guide/zh_cn/entries/upgrades/vanilla_sponge.json diff --git a/src/main/resources/data/modulargolems/patchouli_books/golem_guide/zh_cn/entries/upgrades/vanilla_swim.json b/src/main/resources/assets/modulargolems/patchouli_books/golem_guide/zh_cn/entries/upgrades/vanilla_swim.json similarity index 100% rename from src/main/resources/data/modulargolems/patchouli_books/golem_guide/zh_cn/entries/upgrades/vanilla_swim.json rename to src/main/resources/assets/modulargolems/patchouli_books/golem_guide/zh_cn/entries/upgrades/vanilla_swim.json diff --git a/src/main/resources/data/modulargolems/patchouli_books/golem_guide/zh_cn/entries/upgrades/vanilla_thunder_immune.json b/src/main/resources/assets/modulargolems/patchouli_books/golem_guide/zh_cn/entries/upgrades/vanilla_thunder_immune.json similarity index 100% rename from src/main/resources/data/modulargolems/patchouli_books/golem_guide/zh_cn/entries/upgrades/vanilla_thunder_immune.json rename to src/main/resources/assets/modulargolems/patchouli_books/golem_guide/zh_cn/entries/upgrades/vanilla_thunder_immune.json diff --git a/src/main/resources/assets/modulargolems/textures/equipments/golemguard_chestplate.png b/src/main/resources/assets/modulargolems/textures/equipments/golemguard_chestplate.png new file mode 100644 index 000000000..47f69c5ab Binary files /dev/null and b/src/main/resources/assets/modulargolems/textures/equipments/golemguard_chestplate.png differ diff --git a/src/main/resources/assets/modulargolems/textures/equipments/golemguard_helmet.png b/src/main/resources/assets/modulargolems/textures/equipments/golemguard_helmet.png new file mode 100644 index 000000000..f1c934870 Binary files /dev/null and b/src/main/resources/assets/modulargolems/textures/equipments/golemguard_helmet.png differ diff --git a/src/main/resources/assets/modulargolems/textures/item/equipments/golemguard_chestplate.png b/src/main/resources/assets/modulargolems/textures/item/equipments/golemguard_chestplate.png new file mode 100644 index 000000000..73f88830a Binary files /dev/null and b/src/main/resources/assets/modulargolems/textures/item/equipments/golemguard_chestplate.png differ diff --git a/src/main/resources/assets/modulargolems/textures/item/equipments/golemguard_helmet.png b/src/main/resources/assets/modulargolems/textures/item/equipments/golemguard_helmet.png new file mode 100644 index 000000000..73f88830a Binary files /dev/null and b/src/main/resources/assets/modulargolems/textures/item/equipments/golemguard_helmet.png differ diff --git a/src/main/resources/assets/modulargolems/textures/item/rider_wand.png b/src/main/resources/assets/modulargolems/textures/item/rider_wand.png new file mode 100644 index 000000000..ba01ef264 Binary files /dev/null and b/src/main/resources/assets/modulargolems/textures/item/rider_wand.png differ diff --git a/src/main/resources/assets/modulargolems/textures/item/upgrades/mount_upgrade.png b/src/main/resources/assets/modulargolems/textures/item/upgrades/mount_upgrade.png new file mode 100644 index 000000000..e668faabe Binary files /dev/null and b/src/main/resources/assets/modulargolems/textures/item/upgrades/mount_upgrade.png differ diff --git a/src/main/resources/assets/modulargolems/textures/item/upgrades/size_upgrade.png b/src/main/resources/assets/modulargolems/textures/item/upgrades/size_upgrade.png new file mode 100644 index 000000000..a66f50f6f Binary files /dev/null and b/src/main/resources/assets/modulargolems/textures/item/upgrades/size_upgrade.png differ diff --git a/src/main/resources/data/modulargolems/gui/coords/equipments.json b/src/main/resources/data/modulargolems/gui/coords/equipments.json deleted file mode 100644 index bb2c5bfce..000000000 --- a/src/main/resources/data/modulargolems/gui/coords/equipments.json +++ /dev/null @@ -1,53 +0,0 @@ -{ - "height": 184, - "comp": { - "hand": { - "x": 71, - "y": 35, - "w": 18, - "h": 18, - "rx": 1, - "ry": 2 - }, - "armor": { - "x": 89, - "y": 17, - "w": 18, - "h": 18, - "rx": 1, - "ry": 4 - } - }, - "side": { - "altas_helmet": { - "x": 176, - "y": 0, - "w": 16, - "h": 16 - }, - "altas_chestplate": { - "x": 192, - "y": 0, - "w": 16, - "h": 16 - }, - "altas_leggings": { - "x": 208, - "y": 0, - "w": 16, - "h": 16 - }, - "altas_boots": { - "x": 224, - "y": 0, - "w": 16, - "h": 16 - }, - "altas_shield": { - "x": 176, - "y": 16, - "w": 16, - "h": 16 - } - } -} \ No newline at end of file diff --git a/src/main/resources/assets/modulargolems/textures/gui/coords/equipments.json b/src/main/resources/data/modulargolems/l2library_config/menu_layout/equipments.json similarity index 100% rename from src/main/resources/assets/modulargolems/textures/gui/coords/equipments.json rename to src/main/resources/data/modulargolems/l2library_config/menu_layout/equipments.json diff --git a/src/main/resources/data/modulargolems/patchouli_books/golem_guide/book.json b/src/main/resources/data/modulargolems/patchouli_books/golem_guide/book.json index 51a79defc..81c1db251 100644 --- a/src/main/resources/data/modulargolems/patchouli_books/golem_guide/book.json +++ b/src/main/resources/data/modulargolems/patchouli_books/golem_guide/book.json @@ -3,5 +3,6 @@ "landing_text": "patchouli.modulargolems.landing", "version": 1, "model": "modulargolems:book", - "creative_tab": "modulargolems.golems" + "creative_tab": "l2library:golems", + "use_resource_pack": true } \ No newline at end of file diff --git a/src/main/resources/modulargolems.mixins.json b/src/main/resources/modulargolems.mixins.json index b4caae770..ccae1a85b 100644 --- a/src/main/resources/modulargolems.mixins.json +++ b/src/main/resources/modulargolems.mixins.json @@ -5,7 +5,6 @@ "compatibilityLevel": "JAVA_17", "refmap": "modulargolems.refmap.json", "mixins": [ - "AbstractArrowMixin", "ExperienceOrbAccessor", "ServerLevelMixin" ], diff --git a/src/test/java/organize/GUIGenerator.java b/src/test/java/organize/GUIGenerator.java index e30e5116d..b8ecb1026 100644 --- a/src/test/java/organize/GUIGenerator.java +++ b/src/test/java/organize/GUIGenerator.java @@ -99,8 +99,8 @@ private BufferedImage getImg() throws IOException { GUIGenerator(String modid) { GUI = "./src/test/resources/" + modid + "/gui/"; - DST = "./src/test/resources/" + modid + "/assets/textures/gui/"; - CDST = "./src/test/resources/" + modid + "/data/" + modid + "/gui/"; + DST = "./src/main/resources/assets/" + modid + "/textures/gui/"; + CDST = "./src/main/resources/data/" + modid + "/l2library_config/menu_layout/"; CONT = GUI + "-templates/container/" + modid + "/"; } @@ -173,8 +173,7 @@ void gen() throws IOException { File fx = new File(DST + "container/" + fi.getName().split("\\.")[0] + ".png"); check(fx); ImageIO.write(bimg, "PNG", fx); - write(DST + "coords/" + fi.getName(), out); - write(CDST + "coords/" + fi.getName(), out); + write(CDST + fi.getName(), out); } diff --git a/src/test/java/organize/sub/LangFileOrganizer.java b/src/test/java/organize/LangFileOrganizer.java similarity index 94% rename from src/test/java/organize/sub/LangFileOrganizer.java rename to src/test/java/organize/LangFileOrganizer.java index ed591c513..3ca49670b 100644 --- a/src/test/java/organize/sub/LangFileOrganizer.java +++ b/src/test/java/organize/LangFileOrganizer.java @@ -1,14 +1,15 @@ -package organize.sub; +package organize; import com.google.gson.JsonElement; import com.google.gson.JsonObject; import com.google.gson.JsonParser; import com.mojang.datafixers.util.Pair; -import organize.ResourceOrganizer; import java.io.File; import java.io.FileReader; import java.io.FileWriter; +import java.nio.charset.Charset; +import java.nio.charset.StandardCharsets; import java.util.ArrayList; import java.util.List; import java.util.Map; @@ -62,7 +63,7 @@ public void organize(File f) throws Exception { }); } } - FileWriter w = new FileWriter(target); + FileWriter w = new FileWriter(target, StandardCharsets.UTF_8); w.write(GSON.toJson(dst_json)); w.close(); } diff --git a/src/test/java/organize/ResourceOrganizer.java b/src/test/java/organize/ResourceOrganizer.java index d6ee6915b..d1f4789f9 100644 --- a/src/test/java/organize/ResourceOrganizer.java +++ b/src/test/java/organize/ResourceOrganizer.java @@ -3,7 +3,6 @@ import com.google.common.io.Files; import com.google.gson.Gson; import com.google.gson.GsonBuilder; -import organize.sub.*; import java.io.File; import java.io.PrintStream; @@ -33,16 +32,13 @@ public static void main(String[] args) throws Exception { new LangFileOrganizer(); //new ItemFileOrganizer(); //new BlockFileOrganizer(); - //new ArmorFileOrganizer(); - //new RecipeFileOrganizer(); - new AssetMisc(); - new DataMisc(); - //new ConfigFileOrganizer(); - //new GeckoMisc(); + //new AssetMisc(); + //new DataMisc(); File f = new File("./src/test/resources"); for (File fi : f.listFiles()) { MODID = fi.getName(); - //delete(new File("./src/main/resources/assets/l2artifacts/")); + //delete(new File("./src/main/resources/assets/l2backpack/")); + //delete(new File("./src/main/resources/data/l2backpack/recipes")); if (!fi.isDirectory()) continue; for (ResourceOrganizer obj : MAP.values()) { @@ -79,7 +75,7 @@ public final String getTargetFolder() { } public final String getResourceFolder(boolean main) { - return (main ? "./src/main/resources/" : "./src/test/resources/"); + return (main ? "./src/main/resources/" : "l2backpack/src/test/resources/"); } protected String readFile(String path) { diff --git a/src/test/java/organize/TextureStitcher.java b/src/test/java/organize/TextureStitcher.java deleted file mode 100644 index baf136e9d..000000000 --- a/src/test/java/organize/TextureStitcher.java +++ /dev/null @@ -1,72 +0,0 @@ -package organize; - -import javax.imageio.ImageIO; -import java.awt.*; -import java.awt.image.BufferedImage; -import java.io.File; -import java.io.IOException; - -public class TextureStitcher { - - public static void main(String[] args) throws IOException { - File colors = new File("./temp/col/"); - File templates = new File("./temp/template/"); - for (File col : colors.listFiles()) { - for (File tpl : templates.listFiles()) { - String colName = col.getName().split("\\.")[0]; - String tplName = tpl.getName().split("\\.")[0]; - File write = new File("./temp/out/" + tplName + "/" + colName + ".png"); - draw(col, tpl, write); - } - } - - } - - private static void draw(File colorFile, File templateFile, File write) throws IOException { - BufferedImage colorImg = ImageIO.read(colorFile); - BufferedImage templateImg = ImageIO.read(templateFile); - BufferedImage out = new BufferedImage(templateImg.getWidth(), templateImg.getHeight(), BufferedImage.TYPE_4BYTE_ABGR); - float r = 0, g = 0, b = 0, n = 0; - - for (int i = 0; i < colorImg.getWidth(); i++) { - for (int j = 0; j < colorImg.getHeight(); j++) { - int col = colorImg.getRGB(i, j); - Color color = new Color(col); - float a = color.getAlpha() / 256f; - r += color.getRed() * a / 256; - g += color.getGreen() * a / 256; - b += color.getBlue() * a / 256; - n += a; - } - } - float[] data = new float[3]; - Color.RGBtoHSB(Math.round(r / n * 256), Math.round(g / n * 256), Math.round(b / n * 256), data); - int mix = Color.HSBtoRGB(data[0], data[1], 1); - Color mixCol = new Color(mix); - r = mixCol.getRed() / 256f; - g = mixCol.getGreen() / 256f; - b = mixCol.getBlue() / 256f; - - - for (int i = 0; i < templateImg.getWidth(); i++) { - for (int j = 0; j < templateImg.getHeight(); j++) { - int col = templateImg.getRGB(i, j); - Color color = new Color(col); - if ((col & 0xff000000) == 0) { - out.setRGB(i, j, col); - continue; - } - Color next = new Color(Math.round(color.getRed() * r), - Math.round(color.getGreen() * g), - Math.round(color.getBlue() * b)); - col = next.getRGB(); - out.setRGB(i, j, col); - } - } - - if (!write.getParentFile().exists()) write.getParentFile().mkdirs(); - if (!write.exists()) write.createNewFile(); - ImageIO.write(out, "PNG", write); - } - -} diff --git a/src/test/java/organize/json/JsonPart.java b/src/test/java/organize/json/JsonPart.java deleted file mode 100644 index 310498996..000000000 --- a/src/test/java/organize/json/JsonPart.java +++ /dev/null @@ -1,23 +0,0 @@ -package organize.json; - -import com.google.gson.JsonElement; -import dev.xkmc.l2library.serial.SerialClass; - -@SerialClass -public abstract class JsonPart { - - @SerialClass.SerialField - public String file; - @SerialClass.SerialField - public String path; - - public abstract void inject(JsonElement elem); - - public void add(JsonElement je) { - String[] keys = path.split("\\."); - for (String key : keys) { - je = je.getAsJsonObject().get(key); - } - inject(je); - } -} diff --git a/src/test/java/organize/json/JsonPartList.java b/src/test/java/organize/json/JsonPartList.java deleted file mode 100644 index aad7e8e5c..000000000 --- a/src/test/java/organize/json/JsonPartList.java +++ /dev/null @@ -1,29 +0,0 @@ -package organize.json; - -import com.google.gson.JsonArray; -import com.google.gson.JsonElement; -import com.google.gson.JsonObject; -import dev.xkmc.l2library.serial.SerialClass; - -@SerialClass -public class JsonPartList extends JsonPart { - - @SerialClass.SerialField - public JsonElement list; - - @SerialClass.SerialField - public JsonElement common; - - @Override - public void inject(JsonElement elem) { - JsonArray dst = elem.getAsJsonArray(); - list.getAsJsonArray().forEach(e0 -> { - dst.add(e0); - common.getAsJsonObject().entrySet().forEach(e -> { - JsonObject obj = e0.getAsJsonObject(); - if (!obj.has(e.getKey())) - obj.add(e.getKey(), e.getValue()); - }); - }); - } -} diff --git a/src/test/java/organize/json/JsonPartMap.java b/src/test/java/organize/json/JsonPartMap.java deleted file mode 100644 index 7e9154d14..000000000 --- a/src/test/java/organize/json/JsonPartMap.java +++ /dev/null @@ -1,30 +0,0 @@ -package organize.json; - -import com.google.gson.JsonElement; -import com.google.gson.JsonObject; -import dev.xkmc.l2library.serial.SerialClass; - -@SerialClass -public class JsonPartMap extends JsonPart { - - @SerialClass.SerialField - public JsonElement map; - - @SerialClass.SerialField - public JsonElement common; - - @Override - public void inject(JsonElement elem) { - JsonObject dst = elem.getAsJsonObject(); - map.getAsJsonObject().entrySet().forEach(ent -> { - dst.add(ent.getKey(), ent.getValue()); - if (common != null) { - common.getAsJsonObject().entrySet().forEach(e -> { - JsonObject obj = ent.getValue().getAsJsonObject(); - if (!obj.has(e.getKey())) - obj.add(e.getKey(), e.getValue()); - }); - } - }); - } -} diff --git a/src/test/java/organize/sub/ArmorFileOrganizer.java b/src/test/java/organize/sub/ArmorFileOrganizer.java deleted file mode 100644 index 279f56bbd..000000000 --- a/src/test/java/organize/sub/ArmorFileOrganizer.java +++ /dev/null @@ -1,22 +0,0 @@ -package organize.sub; - -import com.google.common.io.Files; -import organize.ResourceOrganizer; - -import java.io.File; - -public class ArmorFileOrganizer extends ResourceOrganizer { - - public ArmorFileOrganizer() { - super(Type.ASSETS, "armor", "textures/models/armor/"); - } - - @Override - public void organize(File f) throws Exception { - for (File fi : f.listFiles()) { - File ti = new File(getResourceFolder(true) + "assets/minecraft/" + target + fi.getName()); - check(ti); - Files.copy(fi, ti); - } - } -} diff --git a/src/test/java/organize/sub/AssetMisc.java b/src/test/java/organize/sub/AssetMisc.java deleted file mode 100644 index ae26c075e..000000000 --- a/src/test/java/organize/sub/AssetMisc.java +++ /dev/null @@ -1,38 +0,0 @@ -package organize.sub; - -import com.google.common.io.Files; -import organize.ResourceOrganizer; - -import java.io.File; - -public class AssetMisc extends ResourceOrganizer { - - public AssetMisc() { - super(Type.ASSETS, "assets", ""); - } - - @Override - public void organize(File f) throws Exception { - for (File fi : f.listFiles()) - process(fi, getTargetFolder(), ""); - } - - private void process(File f, String path, String pre) throws Exception { - if (f.getName().startsWith(".")) - return; - if (f.isDirectory()) { - for (File fi : f.listFiles()) { - String next = f.getName().startsWith("-") || f.getName().startsWith("@") ? path : path + f.getName() + "/"; - String npre = f.getName().startsWith("_") ? pre + f.getName() : - f.getName().endsWith("_") ? f.getName() + pre : - f.getName().startsWith("@") ? f.getName().substring(1) - : pre; - process(fi, next, npre); - } - } else { - File t = new File(path + pre + f.getName()); - check(t); - Files.copy(f, t); - } - } -} diff --git a/src/test/java/organize/sub/BlockFileOrganizer.java b/src/test/java/organize/sub/BlockFileOrganizer.java deleted file mode 100644 index 5ce49ed59..000000000 --- a/src/test/java/organize/sub/BlockFileOrganizer.java +++ /dev/null @@ -1,44 +0,0 @@ -package organize.sub; - -import com.google.common.io.Files; -import organize.ResourceOrganizer; - -import java.io.File; - -public class BlockFileOrganizer extends ResourceOrganizer { - - public String texture; - - public BlockFileOrganizer() { - super(Type.ASSETS, "blocks", ""); - } - - - @Override - public void organize(File f) throws Exception { - texture = getTargetFolder() + "textures/block/"; - process("", f); - } - - private void process(String prefix, File f) throws Exception { - String filename = f.getName(); - if (filename.startsWith("-") || filename.startsWith(".")) - return; - filename = f.isDirectory() ? filename : filename.split("\\.")[0]; - String name = filename.startsWith("_") ? prefix + filename : filename.endsWith("_") ? filename + prefix : filename; - if (f.isDirectory()) { - for (File fi : f.listFiles()) { - String file = fi.getName(); - if (file.startsWith("-") || file.startsWith(".")) - continue; - process(name, fi); - } - return; - } - String ext = f.getName().substring(filename.length()); - File ti = new File(texture + name + ext); - check(ti); - Files.copy(f, ti); - } - -} diff --git a/src/test/java/organize/sub/ConfigFileOrganizer.java b/src/test/java/organize/sub/ConfigFileOrganizer.java deleted file mode 100644 index b3834c57c..000000000 --- a/src/test/java/organize/sub/ConfigFileOrganizer.java +++ /dev/null @@ -1,148 +0,0 @@ -package organize.sub; - -import com.google.common.collect.Maps; -import com.google.common.io.Files; -import com.google.gson.JsonArray; -import com.google.gson.JsonElement; -import com.google.gson.JsonParser; -import dev.xkmc.l2library.serial.codec.JsonCodec; -import organize.ResourceOrganizer; -import organize.json.JsonPart; - -import java.io.File; -import java.io.FileReader; -import java.io.PrintStream; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -public class ConfigFileOrganizer extends ResourceOrganizer { - - public ConfigFileOrganizer() { - super(Type.DATA, "difficulty_config", "difficulty_config/"); - } - - private Map> parts; - - @Override - public void organize(File f) throws Exception { - parts = Maps.newLinkedHashMap(); - addParts(new File(f.getPath() + "/-parts/")); - generate(new File(f.getPath() + "/-template")); - process("", f, (name, file) -> { - String fs = getTargetFolder() + name; - File ti = new File(fs + ".json"); - check(ti); - if (parts.containsKey(name)) { - JsonElement je = new JsonParser().parse(new FileReader(file)); - parts.get(name).forEach(e -> e.add(je)); - PrintStream ps = new PrintStream(ti); - ps.println(je.toString()); - ps.close(); - } else - Files.copy(file, ti); - }, false); - } - - private void generate(File file) throws Exception { - if (!file.exists()) - return; - File info = new File(file.getPath() + "/-info.json"); - if (!info.exists()) - return; - Map map = new HashMap<>(); - process("", file, (name, f) -> { - map.put(name, readFile(f.getPath())); - }, false); - JsonElement elem = new JsonParser().parse(new FileReader(info)); - for (Map.Entry layer_0 : elem.getAsJsonObject().entrySet()) { - List list = new ArrayList<>(); - if (layer_0.getKey().startsWith("-")) { - JsonArray arr = layer_0.getValue().getAsJsonObject().get("-list").getAsJsonArray(); - for (JsonElement e : arr) { - list.add(new Pair(e.getAsString(), map)); - } - } else { - list.add(new Pair(layer_0.getKey(), map)); - } - for (Map.Entry layer_1 : layer_0.getValue().getAsJsonObject().entrySet()) { - String _name = layer_1.getKey(); - if (_name.startsWith("-")) - continue; - for (Pair pair : list) { - String name = _name; - if (name.endsWith("_")) - name = name + pair.name; - else if (name.startsWith("_")) - name = pair.name + name; - else name = name + "_" + pair.name; - File dst = new File(getTargetFolder() + name + ".json"); - check(dst); - String ans = pair.template; - for (Map.Entry layer_2 : layer_1.getValue().getAsJsonObject().entrySet()) { - ans = ans.replaceAll("\\^" + layer_2.getKey(), layer_2.getValue().getAsString()); - } - ans = ans.replaceAll("\\^m", MODID); - ans = ans.replaceAll("\\^n", _name); - PrintStream ps = new PrintStream(dst); - ps.println(ans); - ps.close(); - } - } - } - } - - private void addParts(File f) throws Exception { - if (f.isDirectory()) { - for (File fi : f.listFiles()) { - String file = fi.getName(); - if (file.startsWith("-") || file.startsWith(".")) - continue; - addParts(fi); - } - return; - } - JsonElement je = new JsonParser().parse(new FileReader(f)); - JsonPart part = JsonCodec.from(je, JsonPart.class, null); - List list = parts.getOrDefault(part.file, new ArrayList<>()); - list.add(part); - parts.put(part.file, list); - } - - private void process(String prefix, File f, ExcCons cons, boolean skip_dash) throws Exception { - String filename = f.getName(); - if (skip_dash && filename.startsWith("-") || filename.startsWith(".")) - return; - filename = f.isDirectory() ? filename : filename.split("\\.")[0]; - String name = filename.startsWith("_") ? prefix + filename : filename.endsWith("_") ? filename + prefix : filename; - if (f.isDirectory()) { - for (File fi : f.listFiles()) { - String file = fi.getName(); - if (file.startsWith("-") || file.startsWith(".")) - continue; - process(name, fi, cons, true); - } - return; - } - cons.accept(name, f); - } - - private static class Pair { - - private final String name; - private final String template; - - private Pair(String name, Map map) { - this.name = name; - this.template = map.get(name); - } - } - - private interface ExcCons { - - void accept(String name, File file) throws Exception; - - } - -} diff --git a/src/test/java/organize/sub/DataMisc.java b/src/test/java/organize/sub/DataMisc.java deleted file mode 100644 index 1de2eca63..000000000 --- a/src/test/java/organize/sub/DataMisc.java +++ /dev/null @@ -1,32 +0,0 @@ -package organize.sub; - -import com.google.common.io.Files; -import organize.ResourceOrganizer; - -import java.io.File; - -public class DataMisc extends ResourceOrganizer { - - public DataMisc() { - super(Type.DATA, "data", ""); - } - - @Override - public void organize(File f) throws Exception { - for (File fi : f.listFiles()) - process(fi, getResourceFolder(true) + type + "/"); - } - - private void process(File f, String pre) throws Exception { - if (f.getName().startsWith(".")) - return; - if (f.isDirectory()) { - for (File fi : f.listFiles()) - process(fi, pre + f.getName() + "/"); - } else { - File t = new File(pre + f.getName()); - check(t); - Files.copy(f, t); - } - } -} diff --git a/src/test/java/organize/sub/GeckoMisc.java b/src/test/java/organize/sub/GeckoMisc.java deleted file mode 100644 index 216cc2921..000000000 --- a/src/test/java/organize/sub/GeckoMisc.java +++ /dev/null @@ -1,40 +0,0 @@ -package organize.sub; - -import com.google.common.io.Files; -import organize.ResourceOrganizer; - -import java.io.File; - -public class GeckoMisc extends ResourceOrganizer { - - public GeckoMisc() { - super(Type.ASSETS, "gecko", ""); - } - - @Override - public void organize(File f) throws Exception { - for (File fi : f.listFiles()) - process(fi); - } - - private void process(File f) throws Exception { - if (f.getName().startsWith(".")) - return; - if (f.isDirectory()) { - for (File fi : f.listFiles()) { - process(fi); - } - } else { - String name = f.getName(); - String path = getTargetFolder(); - if (name.endsWith("animation.json")) - path += "animations/"; - else if (name.endsWith("geo.json")) - path += "geo/"; - else path += "textures/gecko/"; - File t = new File(path + f.getName()); - check(t); - Files.copy(f, t); - } - } -} diff --git a/src/test/java/organize/sub/ItemFileOrganizer.java b/src/test/java/organize/sub/ItemFileOrganizer.java deleted file mode 100644 index d64230cf1..000000000 --- a/src/test/java/organize/sub/ItemFileOrganizer.java +++ /dev/null @@ -1,43 +0,0 @@ -package organize.sub; - -import com.google.common.io.Files; -import organize.ResourceOrganizer; - -import java.io.File; - -public class ItemFileOrganizer extends ResourceOrganizer { - - public String texture; - - public ItemFileOrganizer() { - super(Type.ASSETS, "items", ""); - } - - - @Override - public void organize(File f) throws Exception { - texture = getTargetFolder() + "textures/item/"; - process("", f); - } - - private void process(String prefix, File f) throws Exception { - String filename = f.getName(); - if (filename.startsWith("-") || filename.startsWith(".")) - return; - filename = f.isDirectory() ? filename : filename.split("\\.")[0]; - String name = filename.startsWith("_") ? prefix + filename : filename.endsWith("_") ? filename + prefix : filename; - if (f.isDirectory()) { - for (File fi : f.listFiles()) { - String file = fi.getName(); - if (file.startsWith("-") || file.startsWith(".")) - continue; - process(name, fi); - } - return; - } - File ti = new File(texture + name + ".png"); - check(ti); - Files.copy(f, ti); - } - -} diff --git a/src/test/java/organize/sub/RecipeFileOrganizer.java b/src/test/java/organize/sub/RecipeFileOrganizer.java deleted file mode 100644 index d12cd57ab..000000000 --- a/src/test/java/organize/sub/RecipeFileOrganizer.java +++ /dev/null @@ -1,118 +0,0 @@ -package organize.sub; - -import com.google.common.io.Files; -import com.google.gson.JsonArray; -import com.google.gson.JsonElement; -import com.google.gson.JsonParser; -import organize.ResourceOrganizer; - -import java.io.File; -import java.io.FileReader; -import java.io.PrintStream; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -public class RecipeFileOrganizer extends ResourceOrganizer { - - public RecipeFileOrganizer() { - super(Type.DATA, "recipes", "recipes/"); - } - - @Override - public void organize(File f) throws Exception { - generate(new File(f.getPath() + "/-template")); - process("", "", f, (name, file) -> { - String fs = getTargetFolder() + name; - File ti = new File(fs + ".json"); - check(ti); - Files.copy(file, ti); - }, false); - } - - private void generate(File file) throws Exception { - if (!file.exists()) - return; - File info = new File(file.getPath() + "/-info.json"); - if (!info.exists()) - return; - Map map = new HashMap<>(); - process("", "", file, (name, f) -> { - map.put(name, readFile(f.getPath())); - }, false); - JsonElement elem = new JsonParser().parse(new FileReader(info)); - for (Map.Entry layer_0 : elem.getAsJsonObject().entrySet()) { - List list = new ArrayList<>(); - if (layer_0.getKey().startsWith("-")) { - JsonArray arr = layer_0.getValue().getAsJsonObject().get("-list").getAsJsonArray(); - for (JsonElement e : arr) { - list.add(new Pair(e.getAsString(), map)); - } - } else { - list.add(new Pair(layer_0.getKey(), map)); - } - for (Map.Entry layer_1 : layer_0.getValue().getAsJsonObject().entrySet()) { - String _name = layer_1.getKey(); - if (_name.startsWith("-")) - continue; - for (Pair pair : list) { - String name = _name; - if (name.endsWith("_")) - name = name + pair.name; - else if (name.startsWith("_")) - name = pair.name + name; - else name = name + "_" + pair.name; - File dst = new File(getTargetFolder() + name + ".json"); - check(dst); - String ans = pair.template; - for (Map.Entry layer_2 : layer_1.getValue().getAsJsonObject().entrySet()) { - ans = ans.replaceAll("\\^" + layer_2.getKey(), layer_2.getValue().getAsString()); - } - ans = ans.replaceAll("\\^m", MODID); - ans = ans.replaceAll("\\^n", _name); - PrintStream ps = new PrintStream(dst); - ps.println(ans); - ps.close(); - } - } - } - } - - private void process(String folder, String prefix, File f, ExcCons cons, boolean skip_dash) throws Exception { - String filename = f.getName(); - if (skip_dash && filename.startsWith("-") || filename.startsWith(".")) - return; - filename = f.isDirectory() ? filename : filename.split("\\.")[0]; - String name = filename.startsWith("_") ? prefix + filename : filename.endsWith("_") ? filename + prefix : filename; - String subfolder = skip_dash && !prefix.startsWith("-") && name.equals(filename) ? folder.length() == 0 ? prefix : folder + "/" + prefix : folder; - if (f.isDirectory()) { - for (File fi : f.listFiles()) { - String file = fi.getName(); - if (file.startsWith("-") || file.startsWith(".")) - continue; - process(subfolder, skip_dash ? name : "", fi, cons, true); - } - return; - } - cons.accept(subfolder.length() == 0 ? name : subfolder + "/" + name, f); - } - - private static class Pair { - - private final String name; - private final String template; - - private Pair(String name, Map map) { - this.name = name; - this.template = map.get(name); - } - } - - private interface ExcCons { - - void accept(String name, File file) throws Exception; - - } - -} diff --git a/src/test/java/test/Test.java b/src/test/java/test/Test.java deleted file mode 100644 index e2cd870bf..000000000 --- a/src/test/java/test/Test.java +++ /dev/null @@ -1,20 +0,0 @@ -package test; - -import net.minecraft.advancements.critereon.MinMaxBounds; -import net.minecraft.world.level.storage.loot.LootContext; - -import java.lang.reflect.Constructor; -import java.lang.reflect.Field; -import java.util.List; -import java.util.Set; - -public class Test { - - public static void main(String[] args) { - - } - - private static void test(){ - } - -} diff --git a/src/test/resources/modulargolems/assets/textures/gui/container/equipments.png b/src/test/resources/modulargolems/assets/textures/gui/container/equipments.png deleted file mode 100644 index 764383d9e..000000000 Binary files a/src/test/resources/modulargolems/assets/textures/gui/container/equipments.png and /dev/null differ diff --git a/src/test/resources/modulargolems/assets/textures/gui/coords/equipments.json b/src/test/resources/modulargolems/assets/textures/gui/coords/equipments.json deleted file mode 100644 index bb2c5bfce..000000000 --- a/src/test/resources/modulargolems/assets/textures/gui/coords/equipments.json +++ /dev/null @@ -1,53 +0,0 @@ -{ - "height": 184, - "comp": { - "hand": { - "x": 71, - "y": 35, - "w": 18, - "h": 18, - "rx": 1, - "ry": 2 - }, - "armor": { - "x": 89, - "y": 17, - "w": 18, - "h": 18, - "rx": 1, - "ry": 4 - } - }, - "side": { - "altas_helmet": { - "x": 176, - "y": 0, - "w": 16, - "h": 16 - }, - "altas_chestplate": { - "x": 192, - "y": 0, - "w": 16, - "h": 16 - }, - "altas_leggings": { - "x": 208, - "y": 0, - "w": 16, - "h": 16 - }, - "altas_boots": { - "x": 224, - "y": 0, - "w": 16, - "h": 16 - }, - "altas_shield": { - "x": 176, - "y": 16, - "w": 16, - "h": 16 - } - } -} \ No newline at end of file diff --git a/src/test/resources/modulargolems/data/modulargolems/gui/coords/equipments.json b/src/test/resources/modulargolems/data/modulargolems/gui/coords/equipments.json deleted file mode 100644 index bb2c5bfce..000000000 --- a/src/test/resources/modulargolems/data/modulargolems/gui/coords/equipments.json +++ /dev/null @@ -1,53 +0,0 @@ -{ - "height": 184, - "comp": { - "hand": { - "x": 71, - "y": 35, - "w": 18, - "h": 18, - "rx": 1, - "ry": 2 - }, - "armor": { - "x": 89, - "y": 17, - "w": 18, - "h": 18, - "rx": 1, - "ry": 4 - } - }, - "side": { - "altas_helmet": { - "x": 176, - "y": 0, - "w": 16, - "h": 16 - }, - "altas_chestplate": { - "x": 192, - "y": 0, - "w": 16, - "h": 16 - }, - "altas_leggings": { - "x": 208, - "y": 0, - "w": 16, - "h": 16 - }, - "altas_boots": { - "x": 224, - "y": 0, - "w": 16, - "h": 16 - }, - "altas_shield": { - "x": 176, - "y": 16, - "w": 16, - "h": 16 - } - } -} \ No newline at end of file diff --git a/src/test/resources/modulargolems/lang/zh_cn/advancements.json b/src/test/resources/modulargolems/lang/zh_cn/advancements.json index 3b6d7fc14..d3bfa54b5 100644 --- a/src/test/resources/modulargolems/lang/zh_cn/advancements.json +++ b/src/test/resources/modulargolems/lang/zh_cn/advancements.json @@ -43,6 +43,12 @@ "thunder.description": "让一个免疫雷电的傀儡被闪电击中", "thunder.title": "行走的避雷针", "upgrade.description": "获取一个升级模块", - "upgrade.title": "是时候升级了" + "upgrade.title": "是时候升级了", + "summon.description": "制作召唤手杖", + "summon.title": "空降部队", + "summon_mass.description": "一次召唤至少24只傀儡", + "summon_mass.title": "一车面包人", + "max.description": "对傀儡使用12个升级", + "max.title": "超越极限" } } \ No newline at end of file diff --git a/src/test/resources/modulargolems/lang/zh_cn/golem.json b/src/test/resources/modulargolems/lang/zh_cn/golem.json index 944b8607d..a8c9f518c 100644 --- a/src/test/resources/modulargolems/lang/zh_cn/golem.json +++ b/src/test/resources/modulargolems/lang/zh_cn/golem.json @@ -81,6 +81,9 @@ "talented": "多才多艺", "talented.desc": "前4种蓝色升级的第一个升级不消耗升级槽", "cauldron": "炼药锅", - "cauldron.desc": "重复的药水升级不消耗升级槽" + "cauldron.desc": "重复的药水升级不消耗升级槽", + "ridding_speed_up": "坐骑升级", + "ridding_speed_up.desc": "傀儡不会攻击也不会成为攻击对象", + "size_up": "体型升级" } } \ No newline at end of file diff --git a/src/test/resources/modulargolems/lang/zh_cn/item.json b/src/test/resources/modulargolems/lang/zh_cn/item.json index bee91269c..e01e85d25 100644 --- a/src/test/resources/modulargolems/lang/zh_cn/item.json +++ b/src/test/resources/modulargolems/lang/zh_cn/item.json @@ -25,6 +25,7 @@ "retrieval_wand": "回收手杖", "command_wand": "命令手杖", "summon_wand": "召唤手杖", + "rider_wand": "骑乘手杖", "sponge": "海绵升级", "swim": "游泳升级", "player": "友伤免疫升级", @@ -44,6 +45,8 @@ "pickup_mending": "拾取附属:经验修补", "pickup_no_destroy": "拾取附属:取消销毁", "talented": "辅助升级:多才多艺", - "cauldron": "辅助升级:炼药锅" + "cauldron": "辅助升级:炼药锅", + "mount_upgrade": "坐骑升级", + "size_upgrade": "体形升级" } } \ No newline at end of file diff --git a/src/test/resources/modulargolems/lang/zh_cn/main.json b/src/test/resources/modulargolems/lang/zh_cn/main.json index 78f4c5e81..79c5b684c 100644 --- a/src/test/resources/modulargolems/lang/zh_cn/main.json +++ b/src/test/resources/modulargolems/lang/zh_cn/main.json @@ -1,7 +1,11 @@ { - "attribute.name.golem_regen": "生命回复", - "attribute.name.golem_sweep": "范围攻击", - "itemGroup.modulargolems.golems": "模块化傀儡", + "attribute.name": { + "golem_regen": "生命回复", + "golem_sweep": "范围攻击", + "golem_size": "傀儡体型", + "golem_jump": "傀儡跳跃" + }, + "itemGroup.l2library.golems": "模块化傀儡", "modulargolems": { "tooltip": { "health": "血量: %s/%s", @@ -16,7 +20,8 @@ "wand": { "command": "右键改变傀儡行动模式。蹲下右键配置人形傀儡装备。攻击实体使周围所有你的傀儡优先攻击该目标。", "retrieve": "右键回收周围所有你的傀儡。蹲下右键回收远处的傀儡。", - "summon": "右键召唤背包中所有傀儡。蹲下右键把一个傀儡召唤至指向的远处的方块" + "summon": "右键把一个傀儡召唤至指向的远处的方块。蹲下右键召唤背包中所有傀儡。", + "rider": "右键一个犬型傀儡以骑在它身上。" }, "msg": { "destroy_exp": "%s销毁了%s经验",