diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 00000000..f811f6ae --- /dev/null +++ b/.gitattributes @@ -0,0 +1,5 @@ +# Disable autocrlf on generated files, they always generate with LF +# Add any extra files or paths here to make git stop saying they +# are changed when only line endings change. +src/generated/**/.cache/cache text eol=lf +src/generated/**/*.json text eol=lf diff --git a/.gitignore b/.gitignore index 1a3ab3df..2a7d62b9 100644 --- a/.gitignore +++ b/.gitignore @@ -5,6 +5,7 @@ .classpath .project /run +/runs *.launch /.idea /doc diff --git a/README.md b/README.md index 7d229ee2..ef47ce1f 100644 --- a/README.md +++ b/README.md @@ -1,11 +1,11 @@ -Allomancy 4.6.6 +Allomancy 5.0.0 =============== [![ CurseForge](http://cf.way2muchnoise.eu/256282.svg)](https://minecraft.curseforge.com/projects/allomancy) [![Modrinth Downloads](https://img.shields.io/modrinth/dt/allomancy?color=00AF5C&label=downloads&style=flat-square&logo=modrinth)](https://modrinth.com/mod/allomancy) [![Build status](https://github.com/legobmw99/Allomancy/actions/workflows/gradle.yml/badge.svg)](https://github.com/legobmw99/Allomancy/actions) This mod adds the basics of [Allomancy](http://coppermind.net/wiki/Allomancy) from Brandon Sanderson's book series *Mistborn*. -This mod is currently updated for `Minecraft 1.20.1` and `Forge 47.0.19` +This mod is currently updated for `Minecraft 1.20.4` and `NeoForge 20.4.70` Please verify and report any issues! diff --git a/build.gradle b/build.gradle index fecf4570..ae06a266 100644 --- a/build.gradle +++ b/build.gradle @@ -1,14 +1,18 @@ plugins { + id 'java-library' id 'eclipse' id 'idea' id 'maven-publish' - id 'net.minecraftforge.gradle' version '[6.0,6.2)' - id 'org.parchmentmc.librarian.forgegradle' version '1.+' + id 'net.neoforged.gradle.userdev' version '7.0.57' } version = mod_version group = mod_group_id +repositories { + mavenLocal() +} + base { archivesName = mod_id } @@ -16,128 +20,49 @@ base { // Mojang ships Java 17 to end users in 1.18+, so your mod should target Java 17. 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 { - // The mappings can be changed at any time and must be in the following format. - // Channel: Version: - // official MCVersion Official field/method names from Mojang mapping files - // parchment YYYY.MM.DD-MCVersion Open community-sourced parameter names and javadocs layered on top of official - // - // You must be aware of the Mojang license when using the 'official' or 'parchment' mappings. - // See more information here: https://github.com/MinecraftForge/MCPConfig/blob/master/Mojang.md - // - // Parchment is an unofficial project maintained by ParchmentMC, separate from MinecraftForge - // Additional setup is needed to use their mappings: https://parchmentmc.org/docs/getting-started - // - // Use non-default mappings at your own risk. They may not always work. - // Simply re-run your setup task after changing the mappings to update your workspace. - mappings channel: mapping_channel, version: mapping_version - - // When true, this property will have all Eclipse run configurations run the "prepareX" task for the given run configuration before launching the game. - // In most cases, it is not necessary to enable. - // enableEclipsePrepareRuns = true - - // When true, this property will have all IntelliJ IDEA run configurations run the "prepareX" task for the given run configuration before launching the game. - // In most cases, it is not necessary to enable. - // enableIdeaPrepareRuns = true - - // This property allows configuring Gradle's ProcessResources task(s) to run on IDE output locations before launching the game. - // It is REQUIRED to be set to true for this template to function. - // See https://docs.gradle.org/current/dsl/org.gradle.language.jvm.tasks.ProcessResources.html - copyIdeResources = true - - // When true, this property will add the folder name of all declared run configurations to generated IDE run configurations. - // The folder name can be set on a run configuration using the "folderName" property. - // By default, the folder name of a run configuration is the name of the Gradle project containing it. - // generateRunFolders = true - - // This property enables access transformers for use in development. - // They will be applied to the Minecraft artifact. - // The access transformer file can be anywhere in the project. - // However, it must be at "META-INF/accesstransformer.cfg" in the final mod jar to be loaded by Forge. - // This default location is a best practice to automatically put the file in the right place in the final jar. - // See https://docs.minecraftforge.net/en/latest/advanced/accesstransformers/ for more information. - // accessTransformer = file('src/main/resources/META-INF/accesstransformer.cfg') - - // Default run configurations. - // These can be tweaked, removed, or duplicated as needed. - runs { - client { - workingDirectory project.file('run') - - // Recommended logging data for a userdev environment - // The markers can be added/remove as needed separated by commas. - // "SCAN": For mods scan. - // "REGISTRIES": For firing of registry events. - // "REGISTRYDUMP": For getting the contents of all registries. - property 'forge.logging.markers', 'REGISTRIES' - - // Recommended logging level for the console - // You can set various levels here. - // Please read: https://stackoverflow.com/questions/2031163/when-to-use-the-different-log-levels - property 'forge.logging.console.level', 'debug' - - // Comma-separated list of namespaces to load gametests from. Empty = all namespaces. - property 'forge.enabledGameTestNamespaces', mod_id - - mods { - "${mod_id}" { - source sourceSets.main - } - } - } - - server { - workingDirectory project.file('run') - - property 'forge.logging.markers', 'REGISTRIES' - - property 'forge.logging.console.level', 'debug' - - property 'forge.enabledGameTestNamespaces', mod_id - - mods { - "${mod_id}" { - source sourceSets.main - } - } - } - - // This run config launches GameTestServer and runs all registered gametests, then exits. - // By default, the server will crash when no gametests are provided. - // The gametest system is also enabled by default for other run configs under the /test command. - gameTestServer { - workingDirectory project.file('run') - - property 'forge.logging.markers', 'REGISTRIES' - - property 'forge.logging.console.level', 'debug' - - property 'forge.enabledGameTestNamespaces', mod_id - - mods { - "${mod_id}" { - source sourceSets.main - } - } - } +// Default run configurations. +// These can be tweaked, removed, or duplicated as needed. +runs { + // applies to all the run configs below + configureEach { + // Recommended logging data for a userdev environment + // The markers can be added/remove as needed separated by commas. + // "SCAN": For mods scan. + // "REGISTRIES": For firing of registry events. + // "REGISTRYDUMP": For getting the contents of all registries. + systemProperty 'forge.logging.markers', 'REGISTRIES' + + // Recommended logging level for the console + // You can set various levels here. + // Please read: https://stackoverflow.com/questions/2031163/when-to-use-the-different-log-levels + systemProperty 'forge.logging.console.level', 'debug' + + modSource project.sourceSets.main + } - data { - workingDirectory project.file('run') + client { + // Comma-separated list of namespaces to load gametests from. Empty = all namespaces. + systemProperty 'forge.enabledGameTestNamespaces', project.mod_id + } - property 'forge.logging.markers', 'REGISTRIES' + server { + systemProperty 'forge.enabledGameTestNamespaces', project.mod_id + programArgument '--nogui' + } - property 'forge.logging.console.level', 'debug' + // This run config launches GameTestServer and runs all registered gametests, then exits. + // By default, the server will crash when no gametests are provided. + // The gametest system is also enabled by default for other run configs under the /test command. + gameTestServer { + systemProperty 'forge.enabledGameTestNamespaces', project.mod_id + } - // Specify the modid for data generation, where to output the resulting resource, and where to look for existing resources. - args '--mod', mod_id, '--all', '--output', file('src/generated/resources/'), '--existing', file('src/main/resources/') + data { + // example of overriding the workingDirectory set in configureEach above, uncomment if you want to use it + // workingDirectory project.file('run-data') - mods { - "${mod_id}" { - source sourceSets.main - } - } - } + // Specify the modid for data generation, where to output the resulting resource, and where to look for existing resources. + programArguments.addAll '--mod', project.mod_id, '--all', '--output', file('src/generated/resources/').getAbsolutePath(), '--existing', file('src/main/resources/').getAbsolutePath() } } @@ -164,28 +89,36 @@ repositories { dependencies { // Specify the version of Minecraft to use. - // Any artifact can be supplied so long as it has a "userdev" classifier artifact and is a compatible patcher artifact. - // The "userdev" classifier will be requested and setup by ForgeGradle. - // If the group id is "net.minecraft" and the artifact id is one of ["client", "server", "joined"], - // then special handling is done to allow a setup of a vanilla dependency without the use of an external repository. - minecraft "net.minecraftforge:forge:${minecraft_version}-${forge_version}" - - // Example mod dependency with JEI - using fg.deobf() ensures the dependency is remapped to your development mappings + // Depending on the plugin applied there are several options. We will assume you applied the userdev plugin as shown above. + // The group for userdev is net.neoforged, the module name is neoforge, and the version is the same as the neoforge version. + // You can however also use the vanilla plugin (net.neoforged.gradle.vanilla) to use a version of Minecraft without the neoforge loader. + // And its provides the option to then use net.minecraft as the group, and one of; client, server or joined as the module name, plus the game version as version. + // For all intends and purposes: You can treat this dependency as if it is a normal library you would use. + implementation "net.neoforged:neoforge:${neo_version}" + + // Example mod dependency with JEI // The JEI API is declared for compile time use, while the full JEI artifact is used at runtime - // compileOnly fg.deobf("mezz.jei:jei-${mc_version}-common-api:${jei_version}") - // compileOnly fg.deobf("mezz.jei:jei-${mc_version}-forge-api:${jei_version}") - // runtimeOnly fg.deobf("mezz.jei:jei-${mc_version}-forge:${jei_version}") - - dependencies { - // Visit https://www.curseforge.com/minecraft/mc-mods/jade/files/all - // to get the latest version's jade_id - implementation fg.deobf("curse.maven:jade-324717:${jade_id}") - } + // compileOnly "mezz.jei:jei-${mc_version}-common-api:${jei_version}" + // compileOnly "mezz.jei:jei-${mc_version}-forge-api:${jei_version}" + // runtimeOnly "mezz.jei:jei-${mc_version}-forge:${jei_version}" + + dependencies { + // Visit https://www.curseforge.com/minecraft/mc-mods/jade/files/all + // to get the latest version's jade_id +// implementation "curse.maven:jade-324717:${jade_id}" + api "curse.maven:jade-324717:${jade_api}" + } // Example mod dependency using a mod jar from ./libs with a flat dir repository // This maps to ./libs/coolmod-${mc_version}-${coolmod_version}.jar // The group id is ignored when searching -- in this case, it is "blank" - // implementation fg.deobf("blank:coolmod-${mc_version}:${coolmod_version}") + // implementation "blank:coolmod-${mc_version}:${coolmod_version}" + + // Example mod dependency using a file as dependency + // implementation files("libs/coolmod-${mc_version}-${coolmod_version}.jar") + + // Example project dependency using a sister or child project: + // implementation project(":myproject") // For more info: // http://www.gradle.org/docs/current/userguide/artifact_dependencies_tutorial.html @@ -196,53 +129,32 @@ dependencies { // A missing property will result in an error. Properties are expanded using ${} Groovy notation. // When "copyIdeResources" is enabled, this will also run before the game launches in IDE environments. // See https://docs.gradle.org/current/dsl/org.gradle.language.jvm.tasks.ProcessResources.html -def resourceTargets = ['META-INF/mods.toml', 'pack.mcmeta'] -def replaceProperties = [ - minecraft_version : minecraft_version, minecraft_version_range: minecraft_version_range, - forge_version : forge_version, forge_version_range: forge_version_range, - loader_version_range: loader_version_range, - mod_id : mod_id, mod_name: mod_name, mod_license: mod_license, mod_version: mod_version, - mod_authors : mod_authors, mod_description: mod_description -] -processResources { +tasks.withType(ProcessResources).configureEach { + var replaceProperties = [ + minecraft_version : minecraft_version, minecraft_version_range: minecraft_version_range, + neo_version : neo_version, neo_version_range: neo_version_range, + loader_version_range: loader_version_range, + jade_version_range : jade_version_range, + mod_id : mod_id, mod_name: mod_name, mod_license: mod_license, mod_version: mod_version, + mod_authors : mod_authors, mod_description: mod_description, + ] inputs.properties replaceProperties - replaceProperties.put 'project', project - filesMatching(resourceTargets) { - expand replaceProperties - } -} - -// Example for how to get properties into the manifest for reading at runtime. -jar { - manifest { - attributes([ - "Specification-Title" : mod_id, - "Specification-Vendor" : mod_authors, - "Specification-Version" : "1", // We are version 1 of ourselves - "Implementation-Title" : project.name, - "Implementation-Version" : project.jar.archiveVersion, - "Implementation-Vendor" : mod_authors, - "Implementation-Timestamp": new Date().format("yyyy-MM-dd'T'HH:mm:ssZ") - ]) + filesMatching(['META-INF/mods.toml']) { + expand replaceProperties + [project: project] } } // 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') - publishing { publications { - mavenJava(MavenPublication) { - artifact jar + register('mavenJava', MavenPublication) { + from components.java } } repositories { maven { - url "file://${project.projectDir}/mcmodsrepo" + url "file://${project.projectDir}/repo" } } } @@ -251,7 +163,6 @@ tasks.withType(JavaCompile).configureEach { options.encoding = 'UTF-8' // Use the UTF-8 charset for Java compilation } - task deobfJar(type: Jar) { from sourceSets.main.output archiveClassifier = 'deobf' diff --git a/gradle.properties b/gradle.properties index d907f4c4..fcd31a66 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,42 +1,27 @@ # 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=-Xmx4G org.gradle.daemon=false - +org.gradle.debug=false ## Environment Properties - -# The Minecraft version must agree with the Forge version to get a valid artifact -minecraft_version=1.20.1 +# You can find the latest versions here: https://projects.neoforged.net/neoforged/neoforge +# The Minecraft version must agree with the Neo version to get a valid artifact +minecraft_version=1.20.4 # The Minecraft version range can use any release version of Minecraft as bounds. # Snapshots, pre-releases, and release candidates are not guaranteed to sort properly # as they do not follow standard versioning conventions. -minecraft_version_range=[1.20.1,1.21) -# The Forge version must agree with the Minecraft version to get a valid artifact -forge_version=47.0.19 -# The Forge version range can use any version of Forge as bounds or match the loader version range -forge_version_range=[47,) -# The loader version range can only use the major version of Forge/FML as bounds -loader_version_range=[47,) -# The mapping channel to use for mappings. -# The default set of supported mapping channels are ["official", "snapshot", "snapshot_nodoc", "stable", "stable_nodoc"]. -# Additional mapping channels can be registered through the "channelProviders" extension in a Gradle plugin. -# -# | Channel | Version | | -# |-----------|----------------------|--------------------------------------------------------------------------------| -# | official | MCVersion | Official field/method names from Mojang mapping files | -# | parchment | YYYY.MM.DD-MCVersion | Open community-sourced parameter names and javadocs layered on top of official | -# -# You must be aware of the Mojang license when using the 'official' or 'parchment' mappings. -# See more information here: https://github.com/MinecraftForge/MCPConfig/blob/master/Mojang.md -# -# Parchment is an unofficial project maintained by ParchmentMC, separate from Minecraft Forge. -# Additional setup is needed to use their mappings, see https://parchmentmc.org/docs/getting-started -mapping_channel=parchment -# mapping_channel=official -# The mapping version to query from the mapping channel. -# This must match the format required by the mapping channel. -mapping_version=2023.06.26-1.20.1 +minecraft_version_range=[1.20.4,1.21) +# The Neo version must agree with the Minecraft version to get a valid artifact +neo_version=20.4.80-beta +# The Neo version range can use any version of Neo as bounds +neo_version_range=[20.4.70,) +# The loader version range can only use the major version of FML as bounds +loader_version_range=[2,) + +jade_id=4980188 +jade_api=4980190 +jade_version_range=[13,) + ## Mod Properties # The unique mod identifier for the mod. Must be lowercase in English locale. Must fit the regex [a-z][a-z0-9_]{1,63} # Must match the String constant located in the main mod class annotated with @Mod. @@ -46,7 +31,7 @@ mod_name=Allomancy # The license of the mod. Review your options at https://choosealicense.com/. All Rights Reserved is the default. mod_license=GPL v3 # The mod version. See https://semver.org/ -mod_version=4.6.6 +mod_version=5.0.0 # The group ID for the mod. It is only important when publishing as an artifact to a Maven repository. # This should match the base package used for the mod sources. # See https://maven.apache.org/guides/mini/guide-naming-conventions.html @@ -56,5 +41,3 @@ mod_authors=legobmw99 # The description of the mod. This is a simple multiline text string that is used for display purposes in the mod list. mod_description=Adds Brandon Sanderson's Allomancy to Minecraft! -# TODO api file for now -jade_id=4573194 diff --git a/settings.gradle b/settings.gradle index b7fe2dc8..fc113aec 100644 --- a/settings.gradle +++ b/settings.gradle @@ -1,14 +1,12 @@ pluginManagement { repositories { + mavenLocal() gradlePluginPortal() - maven { - name = 'MinecraftForge' - url = 'https://maven.minecraftforge.net/' - } + maven { url = 'https://maven.neoforged.net/releases' } maven { url = 'https://maven.parchmentmc.org' } } } plugins { id 'org.gradle.toolchains.foojay-resolver-convention' version '0.5.0' -} \ No newline at end of file +} diff --git a/src/generated/resources/assets/allomancy/lang/en_us.json b/src/generated/resources/assets/allomancy/lang/en_us.json index e7e12d57..a41318e0 100644 --- a/src/generated/resources/assets/allomancy/lang/en_us.json +++ b/src/generated/resources/assets/allomancy/lang/en_us.json @@ -5,6 +5,8 @@ "advancements.dna_entangled.title": "Spiritual DNA Entanglement", "advancements.local_metallurgist.desc": "Craft a grinder to begin mixing metals", "advancements.local_metallurgist.title": "Local Metallurgist!", + "allomancy.networking.failed": "Allomancy packet failed to play: %s", + "allomancy.networking.kicked": "Requested illegal action: %s", "block.allomancy.aluminum_block": "Aluminum Block", "block.allomancy.aluminum_ore": "Aluminum Ore", "block.allomancy.bendalloy_block": "Bendalloy Block", diff --git a/src/generated/resources/data/allomancy/advancements/main/become_mistborn.json b/src/generated/resources/data/allomancy/advancements/main/become_mistborn.json index d65656bf..bbd14bcc 100644 --- a/src/generated/resources/data/allomancy/advancements/main/become_mistborn.json +++ b/src/generated/resources/data/allomancy/advancements/main/become_mistborn.json @@ -13,7 +13,6 @@ } }, "display": { - "announce_to_chat": true, "description": { "translate": "advancements.become_mistborn.desc" }, @@ -23,7 +22,6 @@ "item": "allomancy:mistcloak", "nbt": "{Damage:0}" }, - "show_toast": true, "title": { "translate": "advancements.become_mistborn.title" } @@ -35,5 +33,6 @@ ], "rewards": { "experience": 100 - } + }, + "sends_telemetry_event": true } \ No newline at end of file diff --git a/src/generated/resources/data/allomancy/advancements/main/dna_entangled.json b/src/generated/resources/data/allomancy/advancements/main/dna_entangled.json index bd26c3b5..664a07f9 100644 --- a/src/generated/resources/data/allomancy/advancements/main/dna_entangled.json +++ b/src/generated/resources/data/allomancy/advancements/main/dna_entangled.json @@ -10,12 +10,10 @@ "description": { "translate": "advancements.dna_entangled.desc" }, - "frame": "task", "hidden": true, "icon": { "item": "allomancy:lerasium_nugget" }, - "show_toast": true, "title": { "translate": "advancements.dna_entangled.title" } @@ -24,5 +22,6 @@ [ "impossible" ] - ] + ], + "sends_telemetry_event": true } \ No newline at end of file diff --git a/src/generated/resources/data/allomancy/advancements/main/metallurgist.json b/src/generated/resources/data/allomancy/advancements/main/metallurgist.json index f3ba211a..d3217fae 100644 --- a/src/generated/resources/data/allomancy/advancements/main/metallurgist.json +++ b/src/generated/resources/data/allomancy/advancements/main/metallurgist.json @@ -15,17 +15,13 @@ } }, "display": { - "announce_to_chat": true, "description": { "translate": "advancements.local_metallurgist.desc" }, - "frame": "task", - "hidden": false, "icon": { "item": "allomancy:allomantic_grinder", "nbt": "{Damage:0}" }, - "show_toast": true, "title": { "translate": "advancements.local_metallurgist.title" } @@ -34,5 +30,6 @@ [ "grinder" ] - ] + ], + "sends_telemetry_event": true } \ No newline at end of file diff --git a/src/generated/resources/data/allomancy/advancements/recipes/building_blocks/aluminum_block.json b/src/generated/resources/data/allomancy/advancements/recipes/building_blocks/aluminum_block.json index cdf29d02..4e110c5f 100644 --- a/src/generated/resources/data/allomancy/advancements/recipes/building_blocks/aluminum_block.json +++ b/src/generated/resources/data/allomancy/advancements/recipes/building_blocks/aluminum_block.json @@ -22,8 +22,8 @@ }, "requirements": [ [ - "has_aluminum_ingot", - "has_the_recipe" + "has_the_recipe", + "has_aluminum_ingot" ] ], "rewards": { diff --git a/src/generated/resources/data/allomancy/advancements/recipes/building_blocks/bendalloy_block.json b/src/generated/resources/data/allomancy/advancements/recipes/building_blocks/bendalloy_block.json index 6a2161a3..eb8d4067 100644 --- a/src/generated/resources/data/allomancy/advancements/recipes/building_blocks/bendalloy_block.json +++ b/src/generated/resources/data/allomancy/advancements/recipes/building_blocks/bendalloy_block.json @@ -22,8 +22,8 @@ }, "requirements": [ [ - "has_bendalloy_ingot", - "has_the_recipe" + "has_the_recipe", + "has_bendalloy_ingot" ] ], "rewards": { diff --git a/src/generated/resources/data/allomancy/advancements/recipes/building_blocks/brass_block.json b/src/generated/resources/data/allomancy/advancements/recipes/building_blocks/brass_block.json index c1fcb89e..7de2b7fb 100644 --- a/src/generated/resources/data/allomancy/advancements/recipes/building_blocks/brass_block.json +++ b/src/generated/resources/data/allomancy/advancements/recipes/building_blocks/brass_block.json @@ -22,8 +22,8 @@ }, "requirements": [ [ - "has_brass_ingot", - "has_the_recipe" + "has_the_recipe", + "has_brass_ingot" ] ], "rewards": { diff --git a/src/generated/resources/data/allomancy/advancements/recipes/building_blocks/bronze_block.json b/src/generated/resources/data/allomancy/advancements/recipes/building_blocks/bronze_block.json index f6ed26fb..58b0782c 100644 --- a/src/generated/resources/data/allomancy/advancements/recipes/building_blocks/bronze_block.json +++ b/src/generated/resources/data/allomancy/advancements/recipes/building_blocks/bronze_block.json @@ -22,8 +22,8 @@ }, "requirements": [ [ - "has_bronze_ingot", - "has_the_recipe" + "has_the_recipe", + "has_bronze_ingot" ] ], "rewards": { diff --git a/src/generated/resources/data/allomancy/advancements/recipes/building_blocks/cadmium_block.json b/src/generated/resources/data/allomancy/advancements/recipes/building_blocks/cadmium_block.json index 42561726..47db4bfa 100644 --- a/src/generated/resources/data/allomancy/advancements/recipes/building_blocks/cadmium_block.json +++ b/src/generated/resources/data/allomancy/advancements/recipes/building_blocks/cadmium_block.json @@ -22,8 +22,8 @@ }, "requirements": [ [ - "has_cadmium_ingot", - "has_the_recipe" + "has_the_recipe", + "has_cadmium_ingot" ] ], "rewards": { diff --git a/src/generated/resources/data/allomancy/advancements/recipes/building_blocks/chromium_block.json b/src/generated/resources/data/allomancy/advancements/recipes/building_blocks/chromium_block.json index 1775cda8..d81b49ea 100644 --- a/src/generated/resources/data/allomancy/advancements/recipes/building_blocks/chromium_block.json +++ b/src/generated/resources/data/allomancy/advancements/recipes/building_blocks/chromium_block.json @@ -22,8 +22,8 @@ }, "requirements": [ [ - "has_chromium_ingot", - "has_the_recipe" + "has_the_recipe", + "has_chromium_ingot" ] ], "rewards": { diff --git a/src/generated/resources/data/allomancy/advancements/recipes/building_blocks/duralumin_block.json b/src/generated/resources/data/allomancy/advancements/recipes/building_blocks/duralumin_block.json index 2ffec39a..b9b80a24 100644 --- a/src/generated/resources/data/allomancy/advancements/recipes/building_blocks/duralumin_block.json +++ b/src/generated/resources/data/allomancy/advancements/recipes/building_blocks/duralumin_block.json @@ -22,8 +22,8 @@ }, "requirements": [ [ - "has_duralumin_ingot", - "has_the_recipe" + "has_the_recipe", + "has_duralumin_ingot" ] ], "rewards": { diff --git a/src/generated/resources/data/allomancy/advancements/recipes/building_blocks/electrum_block.json b/src/generated/resources/data/allomancy/advancements/recipes/building_blocks/electrum_block.json index 2eeeb965..17e22d6f 100644 --- a/src/generated/resources/data/allomancy/advancements/recipes/building_blocks/electrum_block.json +++ b/src/generated/resources/data/allomancy/advancements/recipes/building_blocks/electrum_block.json @@ -22,8 +22,8 @@ }, "requirements": [ [ - "has_electrum_ingot", - "has_the_recipe" + "has_the_recipe", + "has_electrum_ingot" ] ], "rewards": { diff --git a/src/generated/resources/data/allomancy/advancements/recipes/building_blocks/lead_block.json b/src/generated/resources/data/allomancy/advancements/recipes/building_blocks/lead_block.json index e81a5c3a..261557e6 100644 --- a/src/generated/resources/data/allomancy/advancements/recipes/building_blocks/lead_block.json +++ b/src/generated/resources/data/allomancy/advancements/recipes/building_blocks/lead_block.json @@ -22,8 +22,8 @@ }, "requirements": [ [ - "has_lead_ingot", - "has_the_recipe" + "has_the_recipe", + "has_lead_ingot" ] ], "rewards": { diff --git a/src/generated/resources/data/allomancy/advancements/recipes/building_blocks/nicrosil_block.json b/src/generated/resources/data/allomancy/advancements/recipes/building_blocks/nicrosil_block.json index fb0e22b5..a01e3690 100644 --- a/src/generated/resources/data/allomancy/advancements/recipes/building_blocks/nicrosil_block.json +++ b/src/generated/resources/data/allomancy/advancements/recipes/building_blocks/nicrosil_block.json @@ -22,8 +22,8 @@ }, "requirements": [ [ - "has_nicrosil_ingot", - "has_the_recipe" + "has_the_recipe", + "has_nicrosil_ingot" ] ], "rewards": { diff --git a/src/generated/resources/data/allomancy/advancements/recipes/building_blocks/pewter_block.json b/src/generated/resources/data/allomancy/advancements/recipes/building_blocks/pewter_block.json index b3711503..8d7fd909 100644 --- a/src/generated/resources/data/allomancy/advancements/recipes/building_blocks/pewter_block.json +++ b/src/generated/resources/data/allomancy/advancements/recipes/building_blocks/pewter_block.json @@ -22,8 +22,8 @@ }, "requirements": [ [ - "has_pewter_ingot", - "has_the_recipe" + "has_the_recipe", + "has_pewter_ingot" ] ], "rewards": { diff --git a/src/generated/resources/data/allomancy/advancements/recipes/building_blocks/silver_block.json b/src/generated/resources/data/allomancy/advancements/recipes/building_blocks/silver_block.json index 99ecc192..1e22762f 100644 --- a/src/generated/resources/data/allomancy/advancements/recipes/building_blocks/silver_block.json +++ b/src/generated/resources/data/allomancy/advancements/recipes/building_blocks/silver_block.json @@ -22,8 +22,8 @@ }, "requirements": [ [ - "has_silver_ingot", - "has_the_recipe" + "has_the_recipe", + "has_silver_ingot" ] ], "rewards": { diff --git a/src/generated/resources/data/allomancy/advancements/recipes/building_blocks/steel_block.json b/src/generated/resources/data/allomancy/advancements/recipes/building_blocks/steel_block.json index ca3c058c..e1d0b8a8 100644 --- a/src/generated/resources/data/allomancy/advancements/recipes/building_blocks/steel_block.json +++ b/src/generated/resources/data/allomancy/advancements/recipes/building_blocks/steel_block.json @@ -22,8 +22,8 @@ }, "requirements": [ [ - "has_steel_ingot", - "has_the_recipe" + "has_the_recipe", + "has_steel_ingot" ] ], "rewards": { diff --git a/src/generated/resources/data/allomancy/advancements/recipes/building_blocks/tin_block.json b/src/generated/resources/data/allomancy/advancements/recipes/building_blocks/tin_block.json index 4c8f282d..e32a5a53 100644 --- a/src/generated/resources/data/allomancy/advancements/recipes/building_blocks/tin_block.json +++ b/src/generated/resources/data/allomancy/advancements/recipes/building_blocks/tin_block.json @@ -22,8 +22,8 @@ }, "requirements": [ [ - "has_tin_ingot", - "has_the_recipe" + "has_the_recipe", + "has_tin_ingot" ] ], "rewards": { diff --git a/src/generated/resources/data/allomancy/advancements/recipes/building_blocks/zinc_block.json b/src/generated/resources/data/allomancy/advancements/recipes/building_blocks/zinc_block.json index ca2a4c30..f670c690 100644 --- a/src/generated/resources/data/allomancy/advancements/recipes/building_blocks/zinc_block.json +++ b/src/generated/resources/data/allomancy/advancements/recipes/building_blocks/zinc_block.json @@ -22,8 +22,8 @@ }, "requirements": [ [ - "has_zinc_ingot", - "has_the_recipe" + "has_the_recipe", + "has_zinc_ingot" ] ], "rewards": { diff --git a/src/generated/resources/data/allomancy/advancements/recipes/combat/coin_bag.json b/src/generated/resources/data/allomancy/advancements/recipes/combat/coin_bag.json index 2670d7fd..a739a209 100644 --- a/src/generated/resources/data/allomancy/advancements/recipes/combat/coin_bag.json +++ b/src/generated/resources/data/allomancy/advancements/recipes/combat/coin_bag.json @@ -22,8 +22,8 @@ }, "requirements": [ [ - "has_gold_nugget", - "has_the_recipe" + "has_the_recipe", + "has_gold_nugget" ] ], "rewards": { diff --git a/src/generated/resources/data/allomancy/advancements/recipes/combat/koloss_blade.json b/src/generated/resources/data/allomancy/advancements/recipes/combat/koloss_blade.json index a85cefc1..44256ed0 100644 --- a/src/generated/resources/data/allomancy/advancements/recipes/combat/koloss_blade.json +++ b/src/generated/resources/data/allomancy/advancements/recipes/combat/koloss_blade.json @@ -22,8 +22,8 @@ }, "requirements": [ [ - "has_lerasium_nugget", - "has_the_recipe" + "has_the_recipe", + "has_lerasium_nugget" ] ], "rewards": { diff --git a/src/generated/resources/data/allomancy/advancements/recipes/combat/mistcloak.json b/src/generated/resources/data/allomancy/advancements/recipes/combat/mistcloak.json index bdc132e1..95771e22 100644 --- a/src/generated/resources/data/allomancy/advancements/recipes/combat/mistcloak.json +++ b/src/generated/resources/data/allomancy/advancements/recipes/combat/mistcloak.json @@ -22,8 +22,8 @@ }, "requirements": [ [ - "has_vial", - "has_the_recipe" + "has_the_recipe", + "has_vial" ] ], "rewards": { diff --git a/src/generated/resources/data/allomancy/advancements/recipes/combat/obsidian_dagger.json b/src/generated/resources/data/allomancy/advancements/recipes/combat/obsidian_dagger.json index 44ed68e1..e6a822cf 100644 --- a/src/generated/resources/data/allomancy/advancements/recipes/combat/obsidian_dagger.json +++ b/src/generated/resources/data/allomancy/advancements/recipes/combat/obsidian_dagger.json @@ -22,8 +22,8 @@ }, "requirements": [ [ - "has_mistcloak", - "has_the_recipe" + "has_the_recipe", + "has_mistcloak" ] ], "rewards": { diff --git a/src/generated/resources/data/allomancy/advancements/recipes/food/allomantic_grinder.json b/src/generated/resources/data/allomancy/advancements/recipes/food/allomantic_grinder.json index 2612e686..8b6561d0 100644 --- a/src/generated/resources/data/allomancy/advancements/recipes/food/allomantic_grinder.json +++ b/src/generated/resources/data/allomancy/advancements/recipes/food/allomantic_grinder.json @@ -22,8 +22,8 @@ }, "requirements": [ [ - "has_iron_ingot", - "has_the_recipe" + "has_the_recipe", + "has_iron_ingot" ] ], "rewards": { diff --git a/src/generated/resources/data/allomancy/advancements/recipes/food/vial.json b/src/generated/resources/data/allomancy/advancements/recipes/food/vial.json index f9cbff13..bdf19c4e 100644 --- a/src/generated/resources/data/allomancy/advancements/recipes/food/vial.json +++ b/src/generated/resources/data/allomancy/advancements/recipes/food/vial.json @@ -22,8 +22,8 @@ }, "requirements": [ [ - "has_glass", - "has_the_recipe" + "has_the_recipe", + "has_glass" ] ], "rewards": { diff --git a/src/generated/resources/data/allomancy/advancements/recipes/misc/aluminum_flakes.json b/src/generated/resources/data/allomancy/advancements/recipes/misc/aluminum_flakes.json index 09ebfbf9..945d4320 100644 --- a/src/generated/resources/data/allomancy/advancements/recipes/misc/aluminum_flakes.json +++ b/src/generated/resources/data/allomancy/advancements/recipes/misc/aluminum_flakes.json @@ -22,8 +22,8 @@ }, "requirements": [ [ - "has_allomantic_grinder", - "has_the_recipe" + "has_the_recipe", + "has_allomantic_grinder" ] ], "rewards": { diff --git a/src/generated/resources/data/allomancy/advancements/recipes/misc/aluminum_ingot_from_aluminum_ore.json b/src/generated/resources/data/allomancy/advancements/recipes/misc/aluminum_ingot_from_aluminum_ore.json new file mode 100644 index 00000000..6e6e56ac --- /dev/null +++ b/src/generated/resources/data/allomancy/advancements/recipes/misc/aluminum_ingot_from_aluminum_ore.json @@ -0,0 +1,34 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_aluminum_ore": { + "conditions": { + "items": [ + { + "items": [ + "allomancy:aluminum_ore" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "allomancy:aluminum_ingot_from_aluminum_ore" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_aluminum_ore" + ] + ], + "rewards": { + "recipes": [ + "allomancy:aluminum_ingot_from_aluminum_ore" + ] + } +} \ No newline at end of file diff --git a/src/generated/resources/data/allomancy/advancements/recipes/misc/aluminum_ingot_from_aluminum_ore_from_blasting.json b/src/generated/resources/data/allomancy/advancements/recipes/misc/aluminum_ingot_from_aluminum_ore_from_blasting.json new file mode 100644 index 00000000..544f8ac1 --- /dev/null +++ b/src/generated/resources/data/allomancy/advancements/recipes/misc/aluminum_ingot_from_aluminum_ore_from_blasting.json @@ -0,0 +1,34 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_aluminum_ore": { + "conditions": { + "items": [ + { + "items": [ + "allomancy:aluminum_ore" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "allomancy:aluminum_ingot_from_aluminum_ore_from_blasting" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_aluminum_ore" + ] + ], + "rewards": { + "recipes": [ + "allomancy:aluminum_ingot_from_aluminum_ore_from_blasting" + ] + } +} \ No newline at end of file diff --git a/src/generated/resources/data/allomancy/advancements/recipes/misc/aluminum_ingot_from_block.json b/src/generated/resources/data/allomancy/advancements/recipes/misc/aluminum_ingot_from_block.json index bc4c3515..eaf649df 100644 --- a/src/generated/resources/data/allomancy/advancements/recipes/misc/aluminum_ingot_from_block.json +++ b/src/generated/resources/data/allomancy/advancements/recipes/misc/aluminum_ingot_from_block.json @@ -22,8 +22,8 @@ }, "requirements": [ [ - "has_aluminum_block", - "has_the_recipe" + "has_the_recipe", + "has_aluminum_block" ] ], "rewards": { diff --git a/src/generated/resources/data/allomancy/advancements/recipes/misc/aluminum_ingot_from_deepslate_aluminum_ore.json b/src/generated/resources/data/allomancy/advancements/recipes/misc/aluminum_ingot_from_deepslate_aluminum_ore.json new file mode 100644 index 00000000..b91eb98a --- /dev/null +++ b/src/generated/resources/data/allomancy/advancements/recipes/misc/aluminum_ingot_from_deepslate_aluminum_ore.json @@ -0,0 +1,34 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_deepslate_aluminum_ore": { + "conditions": { + "items": [ + { + "items": [ + "allomancy:deepslate_aluminum_ore" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "allomancy:aluminum_ingot_from_deepslate_aluminum_ore" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_deepslate_aluminum_ore" + ] + ], + "rewards": { + "recipes": [ + "allomancy:aluminum_ingot_from_deepslate_aluminum_ore" + ] + } +} \ No newline at end of file diff --git a/src/generated/resources/data/allomancy/advancements/recipes/misc/aluminum_ingot_from_deepslate_aluminum_ore_from_blasting.json b/src/generated/resources/data/allomancy/advancements/recipes/misc/aluminum_ingot_from_deepslate_aluminum_ore_from_blasting.json new file mode 100644 index 00000000..1a8dd6f1 --- /dev/null +++ b/src/generated/resources/data/allomancy/advancements/recipes/misc/aluminum_ingot_from_deepslate_aluminum_ore_from_blasting.json @@ -0,0 +1,34 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_deepslate_aluminum_ore": { + "conditions": { + "items": [ + { + "items": [ + "allomancy:deepslate_aluminum_ore" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "allomancy:aluminum_ingot_from_deepslate_aluminum_ore_from_blasting" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_deepslate_aluminum_ore" + ] + ], + "rewards": { + "recipes": [ + "allomancy:aluminum_ingot_from_deepslate_aluminum_ore_from_blasting" + ] + } +} \ No newline at end of file diff --git a/src/generated/resources/data/allomancy/advancements/recipes/misc/aluminum_ingot_from_nuggets.json b/src/generated/resources/data/allomancy/advancements/recipes/misc/aluminum_ingot_from_nuggets.json index bde7d159..50ff6202 100644 --- a/src/generated/resources/data/allomancy/advancements/recipes/misc/aluminum_ingot_from_nuggets.json +++ b/src/generated/resources/data/allomancy/advancements/recipes/misc/aluminum_ingot_from_nuggets.json @@ -22,8 +22,8 @@ }, "requirements": [ [ - "has_aluminum_nugget", - "has_the_recipe" + "has_the_recipe", + "has_aluminum_nugget" ] ], "rewards": { diff --git a/src/generated/resources/data/allomancy/advancements/recipes/misc/aluminum_ingot.json b/src/generated/resources/data/allomancy/advancements/recipes/misc/aluminum_ingot_from_raw_aluminum.json similarity index 74% rename from src/generated/resources/data/allomancy/advancements/recipes/misc/aluminum_ingot.json rename to src/generated/resources/data/allomancy/advancements/recipes/misc/aluminum_ingot_from_raw_aluminum.json index 58682eba..22107002 100644 --- a/src/generated/resources/data/allomancy/advancements/recipes/misc/aluminum_ingot.json +++ b/src/generated/resources/data/allomancy/advancements/recipes/misc/aluminum_ingot_from_raw_aluminum.json @@ -15,20 +15,20 @@ }, "has_the_recipe": { "conditions": { - "recipe": "allomancy:aluminum_ingot" + "recipe": "allomancy:aluminum_ingot_from_raw_aluminum" }, "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ [ - "has_raw_aluminum", - "has_the_recipe" + "has_the_recipe", + "has_raw_aluminum" ] ], "rewards": { "recipes": [ - "allomancy:aluminum_ingot" + "allomancy:aluminum_ingot_from_raw_aluminum" ] } } \ No newline at end of file diff --git a/src/generated/resources/data/allomancy/advancements/recipes/misc/aluminum_ingot_from_blasting.json b/src/generated/resources/data/allomancy/advancements/recipes/misc/aluminum_ingot_from_raw_aluminum_from_blasting.json similarity index 71% rename from src/generated/resources/data/allomancy/advancements/recipes/misc/aluminum_ingot_from_blasting.json rename to src/generated/resources/data/allomancy/advancements/recipes/misc/aluminum_ingot_from_raw_aluminum_from_blasting.json index ec57a44b..b8794278 100644 --- a/src/generated/resources/data/allomancy/advancements/recipes/misc/aluminum_ingot_from_blasting.json +++ b/src/generated/resources/data/allomancy/advancements/recipes/misc/aluminum_ingot_from_raw_aluminum_from_blasting.json @@ -15,20 +15,20 @@ }, "has_the_recipe": { "conditions": { - "recipe": "allomancy:aluminum_ingot_from_blasting" + "recipe": "allomancy:aluminum_ingot_from_raw_aluminum_from_blasting" }, "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ [ - "has_raw_aluminum", - "has_the_recipe" + "has_the_recipe", + "has_raw_aluminum" ] ], "rewards": { "recipes": [ - "allomancy:aluminum_ingot_from_blasting" + "allomancy:aluminum_ingot_from_raw_aluminum_from_blasting" ] } } \ No newline at end of file diff --git a/src/generated/resources/data/allomancy/advancements/recipes/misc/aluminum_nugget.json b/src/generated/resources/data/allomancy/advancements/recipes/misc/aluminum_nugget.json index ce67b0d2..5786889b 100644 --- a/src/generated/resources/data/allomancy/advancements/recipes/misc/aluminum_nugget.json +++ b/src/generated/resources/data/allomancy/advancements/recipes/misc/aluminum_nugget.json @@ -22,8 +22,8 @@ }, "requirements": [ [ - "has_aluminum_ingot", - "has_the_recipe" + "has_the_recipe", + "has_aluminum_ingot" ] ], "rewards": { diff --git a/src/generated/resources/data/allomancy/advancements/recipes/misc/aluminum_pattern.json b/src/generated/resources/data/allomancy/advancements/recipes/misc/aluminum_pattern.json index 761b06fd..fd4a6e8c 100644 --- a/src/generated/resources/data/allomancy/advancements/recipes/misc/aluminum_pattern.json +++ b/src/generated/resources/data/allomancy/advancements/recipes/misc/aluminum_pattern.json @@ -22,8 +22,8 @@ }, "requirements": [ [ - "has_aluminum_flakes", - "has_the_recipe" + "has_the_recipe", + "has_aluminum_flakes" ] ], "rewards": { diff --git a/src/generated/resources/data/allomancy/advancements/recipes/misc/bendalloy_flakes.json b/src/generated/resources/data/allomancy/advancements/recipes/misc/bendalloy_flakes.json index 0a0342a9..15e4a4d3 100644 --- a/src/generated/resources/data/allomancy/advancements/recipes/misc/bendalloy_flakes.json +++ b/src/generated/resources/data/allomancy/advancements/recipes/misc/bendalloy_flakes.json @@ -22,8 +22,8 @@ }, "requirements": [ [ - "has_allomantic_grinder", - "has_the_recipe" + "has_the_recipe", + "has_allomantic_grinder" ] ], "rewards": { diff --git a/src/generated/resources/data/allomancy/advancements/recipes/misc/bendalloy_flakes_from_mixing.json b/src/generated/resources/data/allomancy/advancements/recipes/misc/bendalloy_flakes_from_mixing.json index d865f59c..53d4257b 100644 --- a/src/generated/resources/data/allomancy/advancements/recipes/misc/bendalloy_flakes_from_mixing.json +++ b/src/generated/resources/data/allomancy/advancements/recipes/misc/bendalloy_flakes_from_mixing.json @@ -22,8 +22,8 @@ }, "requirements": [ [ - "has_allomantic_grinder", - "has_the_recipe" + "has_the_recipe", + "has_allomantic_grinder" ] ], "rewards": { diff --git a/src/generated/resources/data/allomancy/advancements/recipes/misc/bendalloy_ingot_from_alloying.json b/src/generated/resources/data/allomancy/advancements/recipes/misc/bendalloy_ingot_from_alloying.json index ebc510e8..d2828eee 100644 --- a/src/generated/resources/data/allomancy/advancements/recipes/misc/bendalloy_ingot_from_alloying.json +++ b/src/generated/resources/data/allomancy/advancements/recipes/misc/bendalloy_ingot_from_alloying.json @@ -22,8 +22,8 @@ }, "requirements": [ [ - "has_cadmium_ingot", - "has_the_recipe" + "has_the_recipe", + "has_cadmium_ingot" ] ], "rewards": { diff --git a/src/generated/resources/data/allomancy/advancements/recipes/misc/bendalloy_ingot_from_block.json b/src/generated/resources/data/allomancy/advancements/recipes/misc/bendalloy_ingot_from_block.json index 4ad31951..97b3ae5d 100644 --- a/src/generated/resources/data/allomancy/advancements/recipes/misc/bendalloy_ingot_from_block.json +++ b/src/generated/resources/data/allomancy/advancements/recipes/misc/bendalloy_ingot_from_block.json @@ -22,8 +22,8 @@ }, "requirements": [ [ - "has_bendalloy_block", - "has_the_recipe" + "has_the_recipe", + "has_bendalloy_block" ] ], "rewards": { diff --git a/src/generated/resources/data/allomancy/advancements/recipes/misc/bendalloy_ingot_from_nuggets.json b/src/generated/resources/data/allomancy/advancements/recipes/misc/bendalloy_ingot_from_nuggets.json index 98348d8d..405122a6 100644 --- a/src/generated/resources/data/allomancy/advancements/recipes/misc/bendalloy_ingot_from_nuggets.json +++ b/src/generated/resources/data/allomancy/advancements/recipes/misc/bendalloy_ingot_from_nuggets.json @@ -22,8 +22,8 @@ }, "requirements": [ [ - "has_bendalloy_nugget", - "has_the_recipe" + "has_the_recipe", + "has_bendalloy_nugget" ] ], "rewards": { diff --git a/src/generated/resources/data/allomancy/advancements/recipes/misc/bendalloy_nugget.json b/src/generated/resources/data/allomancy/advancements/recipes/misc/bendalloy_nugget.json index 37f4b68d..392a9e80 100644 --- a/src/generated/resources/data/allomancy/advancements/recipes/misc/bendalloy_nugget.json +++ b/src/generated/resources/data/allomancy/advancements/recipes/misc/bendalloy_nugget.json @@ -22,8 +22,8 @@ }, "requirements": [ [ - "has_bendalloy_ingot", - "has_the_recipe" + "has_the_recipe", + "has_bendalloy_ingot" ] ], "rewards": { diff --git a/src/generated/resources/data/allomancy/advancements/recipes/misc/bendalloy_pattern.json b/src/generated/resources/data/allomancy/advancements/recipes/misc/bendalloy_pattern.json index 2e475a89..d580df69 100644 --- a/src/generated/resources/data/allomancy/advancements/recipes/misc/bendalloy_pattern.json +++ b/src/generated/resources/data/allomancy/advancements/recipes/misc/bendalloy_pattern.json @@ -22,8 +22,8 @@ }, "requirements": [ [ - "has_bendalloy_flakes", - "has_the_recipe" + "has_the_recipe", + "has_bendalloy_flakes" ] ], "rewards": { diff --git a/src/generated/resources/data/allomancy/advancements/recipes/misc/brass_flakes.json b/src/generated/resources/data/allomancy/advancements/recipes/misc/brass_flakes.json index 81f2a918..a2e336af 100644 --- a/src/generated/resources/data/allomancy/advancements/recipes/misc/brass_flakes.json +++ b/src/generated/resources/data/allomancy/advancements/recipes/misc/brass_flakes.json @@ -22,8 +22,8 @@ }, "requirements": [ [ - "has_allomantic_grinder", - "has_the_recipe" + "has_the_recipe", + "has_allomantic_grinder" ] ], "rewards": { diff --git a/src/generated/resources/data/allomancy/advancements/recipes/misc/brass_flakes_from_mixing.json b/src/generated/resources/data/allomancy/advancements/recipes/misc/brass_flakes_from_mixing.json index 7a113cea..e1033baf 100644 --- a/src/generated/resources/data/allomancy/advancements/recipes/misc/brass_flakes_from_mixing.json +++ b/src/generated/resources/data/allomancy/advancements/recipes/misc/brass_flakes_from_mixing.json @@ -22,8 +22,8 @@ }, "requirements": [ [ - "has_allomantic_grinder", - "has_the_recipe" + "has_the_recipe", + "has_allomantic_grinder" ] ], "rewards": { diff --git a/src/generated/resources/data/allomancy/advancements/recipes/misc/brass_ingot_from_alloying.json b/src/generated/resources/data/allomancy/advancements/recipes/misc/brass_ingot_from_alloying.json index 76f1e9da..213650ea 100644 --- a/src/generated/resources/data/allomancy/advancements/recipes/misc/brass_ingot_from_alloying.json +++ b/src/generated/resources/data/allomancy/advancements/recipes/misc/brass_ingot_from_alloying.json @@ -22,8 +22,8 @@ }, "requirements": [ [ - "has_zinc_ingot", - "has_the_recipe" + "has_the_recipe", + "has_zinc_ingot" ] ], "rewards": { diff --git a/src/generated/resources/data/allomancy/advancements/recipes/misc/brass_ingot_from_block.json b/src/generated/resources/data/allomancy/advancements/recipes/misc/brass_ingot_from_block.json index d91dfea5..03542e93 100644 --- a/src/generated/resources/data/allomancy/advancements/recipes/misc/brass_ingot_from_block.json +++ b/src/generated/resources/data/allomancy/advancements/recipes/misc/brass_ingot_from_block.json @@ -22,8 +22,8 @@ }, "requirements": [ [ - "has_brass_block", - "has_the_recipe" + "has_the_recipe", + "has_brass_block" ] ], "rewards": { diff --git a/src/generated/resources/data/allomancy/advancements/recipes/misc/brass_ingot_from_nuggets.json b/src/generated/resources/data/allomancy/advancements/recipes/misc/brass_ingot_from_nuggets.json index f7037700..891db803 100644 --- a/src/generated/resources/data/allomancy/advancements/recipes/misc/brass_ingot_from_nuggets.json +++ b/src/generated/resources/data/allomancy/advancements/recipes/misc/brass_ingot_from_nuggets.json @@ -22,8 +22,8 @@ }, "requirements": [ [ - "has_brass_nugget", - "has_the_recipe" + "has_the_recipe", + "has_brass_nugget" ] ], "rewards": { diff --git a/src/generated/resources/data/allomancy/advancements/recipes/misc/brass_nugget.json b/src/generated/resources/data/allomancy/advancements/recipes/misc/brass_nugget.json index ab6538a0..a8811049 100644 --- a/src/generated/resources/data/allomancy/advancements/recipes/misc/brass_nugget.json +++ b/src/generated/resources/data/allomancy/advancements/recipes/misc/brass_nugget.json @@ -22,8 +22,8 @@ }, "requirements": [ [ - "has_brass_ingot", - "has_the_recipe" + "has_the_recipe", + "has_brass_ingot" ] ], "rewards": { diff --git a/src/generated/resources/data/allomancy/advancements/recipes/misc/brass_pattern.json b/src/generated/resources/data/allomancy/advancements/recipes/misc/brass_pattern.json index 30284c39..d0ef73e0 100644 --- a/src/generated/resources/data/allomancy/advancements/recipes/misc/brass_pattern.json +++ b/src/generated/resources/data/allomancy/advancements/recipes/misc/brass_pattern.json @@ -22,8 +22,8 @@ }, "requirements": [ [ - "has_brass_flakes", - "has_the_recipe" + "has_the_recipe", + "has_brass_flakes" ] ], "rewards": { diff --git a/src/generated/resources/data/allomancy/advancements/recipes/misc/bronze_flakes.json b/src/generated/resources/data/allomancy/advancements/recipes/misc/bronze_flakes.json index 1032559b..d0496d09 100644 --- a/src/generated/resources/data/allomancy/advancements/recipes/misc/bronze_flakes.json +++ b/src/generated/resources/data/allomancy/advancements/recipes/misc/bronze_flakes.json @@ -22,8 +22,8 @@ }, "requirements": [ [ - "has_allomantic_grinder", - "has_the_recipe" + "has_the_recipe", + "has_allomantic_grinder" ] ], "rewards": { diff --git a/src/generated/resources/data/allomancy/advancements/recipes/misc/bronze_flakes_from_mixing.json b/src/generated/resources/data/allomancy/advancements/recipes/misc/bronze_flakes_from_mixing.json index 381970a4..87360a10 100644 --- a/src/generated/resources/data/allomancy/advancements/recipes/misc/bronze_flakes_from_mixing.json +++ b/src/generated/resources/data/allomancy/advancements/recipes/misc/bronze_flakes_from_mixing.json @@ -22,8 +22,8 @@ }, "requirements": [ [ - "has_allomantic_grinder", - "has_the_recipe" + "has_the_recipe", + "has_allomantic_grinder" ] ], "rewards": { diff --git a/src/generated/resources/data/allomancy/advancements/recipes/misc/bronze_ingot_from_alloying.json b/src/generated/resources/data/allomancy/advancements/recipes/misc/bronze_ingot_from_alloying.json index c5046a55..c5319fa4 100644 --- a/src/generated/resources/data/allomancy/advancements/recipes/misc/bronze_ingot_from_alloying.json +++ b/src/generated/resources/data/allomancy/advancements/recipes/misc/bronze_ingot_from_alloying.json @@ -22,8 +22,8 @@ }, "requirements": [ [ - "has_tin_ingot", - "has_the_recipe" + "has_the_recipe", + "has_tin_ingot" ] ], "rewards": { diff --git a/src/generated/resources/data/allomancy/advancements/recipes/misc/bronze_ingot_from_block.json b/src/generated/resources/data/allomancy/advancements/recipes/misc/bronze_ingot_from_block.json index 1c2fe102..41fac1ad 100644 --- a/src/generated/resources/data/allomancy/advancements/recipes/misc/bronze_ingot_from_block.json +++ b/src/generated/resources/data/allomancy/advancements/recipes/misc/bronze_ingot_from_block.json @@ -22,8 +22,8 @@ }, "requirements": [ [ - "has_bronze_block", - "has_the_recipe" + "has_the_recipe", + "has_bronze_block" ] ], "rewards": { diff --git a/src/generated/resources/data/allomancy/advancements/recipes/misc/bronze_ingot_from_nuggets.json b/src/generated/resources/data/allomancy/advancements/recipes/misc/bronze_ingot_from_nuggets.json index 44e84645..b1e7bd5b 100644 --- a/src/generated/resources/data/allomancy/advancements/recipes/misc/bronze_ingot_from_nuggets.json +++ b/src/generated/resources/data/allomancy/advancements/recipes/misc/bronze_ingot_from_nuggets.json @@ -22,8 +22,8 @@ }, "requirements": [ [ - "has_bronze_nugget", - "has_the_recipe" + "has_the_recipe", + "has_bronze_nugget" ] ], "rewards": { diff --git a/src/generated/resources/data/allomancy/advancements/recipes/misc/bronze_nugget.json b/src/generated/resources/data/allomancy/advancements/recipes/misc/bronze_nugget.json index 9ce81368..6282a2d5 100644 --- a/src/generated/resources/data/allomancy/advancements/recipes/misc/bronze_nugget.json +++ b/src/generated/resources/data/allomancy/advancements/recipes/misc/bronze_nugget.json @@ -22,8 +22,8 @@ }, "requirements": [ [ - "has_bronze_ingot", - "has_the_recipe" + "has_the_recipe", + "has_bronze_ingot" ] ], "rewards": { diff --git a/src/generated/resources/data/allomancy/advancements/recipes/misc/bronze_pattern.json b/src/generated/resources/data/allomancy/advancements/recipes/misc/bronze_pattern.json index d3b3b701..a0393646 100644 --- a/src/generated/resources/data/allomancy/advancements/recipes/misc/bronze_pattern.json +++ b/src/generated/resources/data/allomancy/advancements/recipes/misc/bronze_pattern.json @@ -22,8 +22,8 @@ }, "requirements": [ [ - "has_bronze_flakes", - "has_the_recipe" + "has_the_recipe", + "has_bronze_flakes" ] ], "rewards": { diff --git a/src/generated/resources/data/allomancy/advancements/recipes/misc/cadmium_flakes.json b/src/generated/resources/data/allomancy/advancements/recipes/misc/cadmium_flakes.json index f224094e..2b907428 100644 --- a/src/generated/resources/data/allomancy/advancements/recipes/misc/cadmium_flakes.json +++ b/src/generated/resources/data/allomancy/advancements/recipes/misc/cadmium_flakes.json @@ -22,8 +22,8 @@ }, "requirements": [ [ - "has_allomantic_grinder", - "has_the_recipe" + "has_the_recipe", + "has_allomantic_grinder" ] ], "rewards": { diff --git a/src/generated/resources/data/allomancy/advancements/recipes/misc/cadmium_ingot_from_block.json b/src/generated/resources/data/allomancy/advancements/recipes/misc/cadmium_ingot_from_block.json index 9bc25f3c..800c92e2 100644 --- a/src/generated/resources/data/allomancy/advancements/recipes/misc/cadmium_ingot_from_block.json +++ b/src/generated/resources/data/allomancy/advancements/recipes/misc/cadmium_ingot_from_block.json @@ -22,8 +22,8 @@ }, "requirements": [ [ - "has_cadmium_block", - "has_the_recipe" + "has_the_recipe", + "has_cadmium_block" ] ], "rewards": { diff --git a/src/generated/resources/data/allomancy/advancements/recipes/misc/cadmium_ingot_from_cadmium_ore.json b/src/generated/resources/data/allomancy/advancements/recipes/misc/cadmium_ingot_from_cadmium_ore.json new file mode 100644 index 00000000..8f0acdec --- /dev/null +++ b/src/generated/resources/data/allomancy/advancements/recipes/misc/cadmium_ingot_from_cadmium_ore.json @@ -0,0 +1,34 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_cadmium_ore": { + "conditions": { + "items": [ + { + "items": [ + "allomancy:cadmium_ore" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "allomancy:cadmium_ingot_from_cadmium_ore" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_cadmium_ore" + ] + ], + "rewards": { + "recipes": [ + "allomancy:cadmium_ingot_from_cadmium_ore" + ] + } +} \ No newline at end of file diff --git a/src/generated/resources/data/allomancy/advancements/recipes/misc/cadmium_ingot_from_cadmium_ore_from_blasting.json b/src/generated/resources/data/allomancy/advancements/recipes/misc/cadmium_ingot_from_cadmium_ore_from_blasting.json new file mode 100644 index 00000000..5e6b5f00 --- /dev/null +++ b/src/generated/resources/data/allomancy/advancements/recipes/misc/cadmium_ingot_from_cadmium_ore_from_blasting.json @@ -0,0 +1,34 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_cadmium_ore": { + "conditions": { + "items": [ + { + "items": [ + "allomancy:cadmium_ore" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "allomancy:cadmium_ingot_from_cadmium_ore_from_blasting" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_cadmium_ore" + ] + ], + "rewards": { + "recipes": [ + "allomancy:cadmium_ingot_from_cadmium_ore_from_blasting" + ] + } +} \ No newline at end of file diff --git a/src/generated/resources/data/allomancy/advancements/recipes/misc/cadmium_ingot_from_deepslate_cadmium_ore.json b/src/generated/resources/data/allomancy/advancements/recipes/misc/cadmium_ingot_from_deepslate_cadmium_ore.json new file mode 100644 index 00000000..ed1d96fb --- /dev/null +++ b/src/generated/resources/data/allomancy/advancements/recipes/misc/cadmium_ingot_from_deepslate_cadmium_ore.json @@ -0,0 +1,34 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_deepslate_cadmium_ore": { + "conditions": { + "items": [ + { + "items": [ + "allomancy:deepslate_cadmium_ore" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "allomancy:cadmium_ingot_from_deepslate_cadmium_ore" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_deepslate_cadmium_ore" + ] + ], + "rewards": { + "recipes": [ + "allomancy:cadmium_ingot_from_deepslate_cadmium_ore" + ] + } +} \ No newline at end of file diff --git a/src/generated/resources/data/allomancy/advancements/recipes/misc/cadmium_ingot_from_deepslate_cadmium_ore_from_blasting.json b/src/generated/resources/data/allomancy/advancements/recipes/misc/cadmium_ingot_from_deepslate_cadmium_ore_from_blasting.json new file mode 100644 index 00000000..24cbb965 --- /dev/null +++ b/src/generated/resources/data/allomancy/advancements/recipes/misc/cadmium_ingot_from_deepslate_cadmium_ore_from_blasting.json @@ -0,0 +1,34 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_deepslate_cadmium_ore": { + "conditions": { + "items": [ + { + "items": [ + "allomancy:deepslate_cadmium_ore" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "allomancy:cadmium_ingot_from_deepslate_cadmium_ore_from_blasting" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_deepslate_cadmium_ore" + ] + ], + "rewards": { + "recipes": [ + "allomancy:cadmium_ingot_from_deepslate_cadmium_ore_from_blasting" + ] + } +} \ No newline at end of file diff --git a/src/generated/resources/data/allomancy/advancements/recipes/misc/cadmium_ingot_from_nuggets.json b/src/generated/resources/data/allomancy/advancements/recipes/misc/cadmium_ingot_from_nuggets.json index 2447bd22..02a97e37 100644 --- a/src/generated/resources/data/allomancy/advancements/recipes/misc/cadmium_ingot_from_nuggets.json +++ b/src/generated/resources/data/allomancy/advancements/recipes/misc/cadmium_ingot_from_nuggets.json @@ -22,8 +22,8 @@ }, "requirements": [ [ - "has_cadmium_nugget", - "has_the_recipe" + "has_the_recipe", + "has_cadmium_nugget" ] ], "rewards": { diff --git a/src/generated/resources/data/allomancy/advancements/recipes/misc/cadmium_ingot.json b/src/generated/resources/data/allomancy/advancements/recipes/misc/cadmium_ingot_from_raw_cadmium.json similarity index 75% rename from src/generated/resources/data/allomancy/advancements/recipes/misc/cadmium_ingot.json rename to src/generated/resources/data/allomancy/advancements/recipes/misc/cadmium_ingot_from_raw_cadmium.json index bf224de3..59621eee 100644 --- a/src/generated/resources/data/allomancy/advancements/recipes/misc/cadmium_ingot.json +++ b/src/generated/resources/data/allomancy/advancements/recipes/misc/cadmium_ingot_from_raw_cadmium.json @@ -15,20 +15,20 @@ }, "has_the_recipe": { "conditions": { - "recipe": "allomancy:cadmium_ingot" + "recipe": "allomancy:cadmium_ingot_from_raw_cadmium" }, "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ [ - "has_raw_cadmium", - "has_the_recipe" + "has_the_recipe", + "has_raw_cadmium" ] ], "rewards": { "recipes": [ - "allomancy:cadmium_ingot" + "allomancy:cadmium_ingot_from_raw_cadmium" ] } } \ No newline at end of file diff --git a/src/generated/resources/data/allomancy/advancements/recipes/misc/cadmium_ingot_from_blasting.json b/src/generated/resources/data/allomancy/advancements/recipes/misc/cadmium_ingot_from_raw_cadmium_from_blasting.json similarity index 72% rename from src/generated/resources/data/allomancy/advancements/recipes/misc/cadmium_ingot_from_blasting.json rename to src/generated/resources/data/allomancy/advancements/recipes/misc/cadmium_ingot_from_raw_cadmium_from_blasting.json index 9980715a..45c7e0e5 100644 --- a/src/generated/resources/data/allomancy/advancements/recipes/misc/cadmium_ingot_from_blasting.json +++ b/src/generated/resources/data/allomancy/advancements/recipes/misc/cadmium_ingot_from_raw_cadmium_from_blasting.json @@ -15,20 +15,20 @@ }, "has_the_recipe": { "conditions": { - "recipe": "allomancy:cadmium_ingot_from_blasting" + "recipe": "allomancy:cadmium_ingot_from_raw_cadmium_from_blasting" }, "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ [ - "has_raw_cadmium", - "has_the_recipe" + "has_the_recipe", + "has_raw_cadmium" ] ], "rewards": { "recipes": [ - "allomancy:cadmium_ingot_from_blasting" + "allomancy:cadmium_ingot_from_raw_cadmium_from_blasting" ] } } \ No newline at end of file diff --git a/src/generated/resources/data/allomancy/advancements/recipes/misc/cadmium_nugget.json b/src/generated/resources/data/allomancy/advancements/recipes/misc/cadmium_nugget.json index 3b840c5a..f814653c 100644 --- a/src/generated/resources/data/allomancy/advancements/recipes/misc/cadmium_nugget.json +++ b/src/generated/resources/data/allomancy/advancements/recipes/misc/cadmium_nugget.json @@ -22,8 +22,8 @@ }, "requirements": [ [ - "has_cadmium_ingot", - "has_the_recipe" + "has_the_recipe", + "has_cadmium_ingot" ] ], "rewards": { diff --git a/src/generated/resources/data/allomancy/advancements/recipes/misc/cadmium_pattern.json b/src/generated/resources/data/allomancy/advancements/recipes/misc/cadmium_pattern.json index ad3f6a24..d0e1741a 100644 --- a/src/generated/resources/data/allomancy/advancements/recipes/misc/cadmium_pattern.json +++ b/src/generated/resources/data/allomancy/advancements/recipes/misc/cadmium_pattern.json @@ -22,8 +22,8 @@ }, "requirements": [ [ - "has_cadmium_flakes", - "has_the_recipe" + "has_the_recipe", + "has_cadmium_flakes" ] ], "rewards": { diff --git a/src/generated/resources/data/allomancy/advancements/recipes/misc/chromium_flakes.json b/src/generated/resources/data/allomancy/advancements/recipes/misc/chromium_flakes.json index a2474c09..9fa15945 100644 --- a/src/generated/resources/data/allomancy/advancements/recipes/misc/chromium_flakes.json +++ b/src/generated/resources/data/allomancy/advancements/recipes/misc/chromium_flakes.json @@ -22,8 +22,8 @@ }, "requirements": [ [ - "has_allomantic_grinder", - "has_the_recipe" + "has_the_recipe", + "has_allomantic_grinder" ] ], "rewards": { diff --git a/src/generated/resources/data/allomancy/advancements/recipes/misc/chromium_ingot_from_block.json b/src/generated/resources/data/allomancy/advancements/recipes/misc/chromium_ingot_from_block.json index 9f57170d..bb65ad3e 100644 --- a/src/generated/resources/data/allomancy/advancements/recipes/misc/chromium_ingot_from_block.json +++ b/src/generated/resources/data/allomancy/advancements/recipes/misc/chromium_ingot_from_block.json @@ -22,8 +22,8 @@ }, "requirements": [ [ - "has_chromium_block", - "has_the_recipe" + "has_the_recipe", + "has_chromium_block" ] ], "rewards": { diff --git a/src/generated/resources/data/allomancy/advancements/recipes/misc/chromium_ingot_from_chromium_ore.json b/src/generated/resources/data/allomancy/advancements/recipes/misc/chromium_ingot_from_chromium_ore.json new file mode 100644 index 00000000..c98187d9 --- /dev/null +++ b/src/generated/resources/data/allomancy/advancements/recipes/misc/chromium_ingot_from_chromium_ore.json @@ -0,0 +1,34 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_chromium_ore": { + "conditions": { + "items": [ + { + "items": [ + "allomancy:chromium_ore" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "allomancy:chromium_ingot_from_chromium_ore" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_chromium_ore" + ] + ], + "rewards": { + "recipes": [ + "allomancy:chromium_ingot_from_chromium_ore" + ] + } +} \ No newline at end of file diff --git a/src/generated/resources/data/allomancy/advancements/recipes/misc/chromium_ingot_from_chromium_ore_from_blasting.json b/src/generated/resources/data/allomancy/advancements/recipes/misc/chromium_ingot_from_chromium_ore_from_blasting.json new file mode 100644 index 00000000..ae941e72 --- /dev/null +++ b/src/generated/resources/data/allomancy/advancements/recipes/misc/chromium_ingot_from_chromium_ore_from_blasting.json @@ -0,0 +1,34 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_chromium_ore": { + "conditions": { + "items": [ + { + "items": [ + "allomancy:chromium_ore" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "allomancy:chromium_ingot_from_chromium_ore_from_blasting" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_chromium_ore" + ] + ], + "rewards": { + "recipes": [ + "allomancy:chromium_ingot_from_chromium_ore_from_blasting" + ] + } +} \ No newline at end of file diff --git a/src/generated/resources/data/allomancy/advancements/recipes/misc/chromium_ingot_from_deepslate_chromium_ore.json b/src/generated/resources/data/allomancy/advancements/recipes/misc/chromium_ingot_from_deepslate_chromium_ore.json new file mode 100644 index 00000000..0544145d --- /dev/null +++ b/src/generated/resources/data/allomancy/advancements/recipes/misc/chromium_ingot_from_deepslate_chromium_ore.json @@ -0,0 +1,34 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_deepslate_chromium_ore": { + "conditions": { + "items": [ + { + "items": [ + "allomancy:deepslate_chromium_ore" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "allomancy:chromium_ingot_from_deepslate_chromium_ore" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_deepslate_chromium_ore" + ] + ], + "rewards": { + "recipes": [ + "allomancy:chromium_ingot_from_deepslate_chromium_ore" + ] + } +} \ No newline at end of file diff --git a/src/generated/resources/data/allomancy/advancements/recipes/misc/chromium_ingot_from_deepslate_chromium_ore_from_blasting.json b/src/generated/resources/data/allomancy/advancements/recipes/misc/chromium_ingot_from_deepslate_chromium_ore_from_blasting.json new file mode 100644 index 00000000..52f7ba2e --- /dev/null +++ b/src/generated/resources/data/allomancy/advancements/recipes/misc/chromium_ingot_from_deepslate_chromium_ore_from_blasting.json @@ -0,0 +1,34 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_deepslate_chromium_ore": { + "conditions": { + "items": [ + { + "items": [ + "allomancy:deepslate_chromium_ore" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "allomancy:chromium_ingot_from_deepslate_chromium_ore_from_blasting" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_deepslate_chromium_ore" + ] + ], + "rewards": { + "recipes": [ + "allomancy:chromium_ingot_from_deepslate_chromium_ore_from_blasting" + ] + } +} \ No newline at end of file diff --git a/src/generated/resources/data/allomancy/advancements/recipes/misc/chromium_ingot_from_nuggets.json b/src/generated/resources/data/allomancy/advancements/recipes/misc/chromium_ingot_from_nuggets.json index 1647272c..6d792b12 100644 --- a/src/generated/resources/data/allomancy/advancements/recipes/misc/chromium_ingot_from_nuggets.json +++ b/src/generated/resources/data/allomancy/advancements/recipes/misc/chromium_ingot_from_nuggets.json @@ -22,8 +22,8 @@ }, "requirements": [ [ - "has_chromium_nugget", - "has_the_recipe" + "has_the_recipe", + "has_chromium_nugget" ] ], "rewards": { diff --git a/src/generated/resources/data/allomancy/advancements/recipes/misc/chromium_ingot.json b/src/generated/resources/data/allomancy/advancements/recipes/misc/chromium_ingot_from_raw_chromium.json similarity index 74% rename from src/generated/resources/data/allomancy/advancements/recipes/misc/chromium_ingot.json rename to src/generated/resources/data/allomancy/advancements/recipes/misc/chromium_ingot_from_raw_chromium.json index bd15222b..e6e66582 100644 --- a/src/generated/resources/data/allomancy/advancements/recipes/misc/chromium_ingot.json +++ b/src/generated/resources/data/allomancy/advancements/recipes/misc/chromium_ingot_from_raw_chromium.json @@ -15,20 +15,20 @@ }, "has_the_recipe": { "conditions": { - "recipe": "allomancy:chromium_ingot" + "recipe": "allomancy:chromium_ingot_from_raw_chromium" }, "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ [ - "has_raw_chromium", - "has_the_recipe" + "has_the_recipe", + "has_raw_chromium" ] ], "rewards": { "recipes": [ - "allomancy:chromium_ingot" + "allomancy:chromium_ingot_from_raw_chromium" ] } } \ No newline at end of file diff --git a/src/generated/resources/data/allomancy/advancements/recipes/misc/chromium_ingot_from_blasting.json b/src/generated/resources/data/allomancy/advancements/recipes/misc/chromium_ingot_from_raw_chromium_from_blasting.json similarity index 71% rename from src/generated/resources/data/allomancy/advancements/recipes/misc/chromium_ingot_from_blasting.json rename to src/generated/resources/data/allomancy/advancements/recipes/misc/chromium_ingot_from_raw_chromium_from_blasting.json index 95d4b5fa..0cb5fc01 100644 --- a/src/generated/resources/data/allomancy/advancements/recipes/misc/chromium_ingot_from_blasting.json +++ b/src/generated/resources/data/allomancy/advancements/recipes/misc/chromium_ingot_from_raw_chromium_from_blasting.json @@ -15,20 +15,20 @@ }, "has_the_recipe": { "conditions": { - "recipe": "allomancy:chromium_ingot_from_blasting" + "recipe": "allomancy:chromium_ingot_from_raw_chromium_from_blasting" }, "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ [ - "has_raw_chromium", - "has_the_recipe" + "has_the_recipe", + "has_raw_chromium" ] ], "rewards": { "recipes": [ - "allomancy:chromium_ingot_from_blasting" + "allomancy:chromium_ingot_from_raw_chromium_from_blasting" ] } } \ No newline at end of file diff --git a/src/generated/resources/data/allomancy/advancements/recipes/misc/chromium_nugget.json b/src/generated/resources/data/allomancy/advancements/recipes/misc/chromium_nugget.json index 2b05f813..3458307e 100644 --- a/src/generated/resources/data/allomancy/advancements/recipes/misc/chromium_nugget.json +++ b/src/generated/resources/data/allomancy/advancements/recipes/misc/chromium_nugget.json @@ -22,8 +22,8 @@ }, "requirements": [ [ - "has_chromium_ingot", - "has_the_recipe" + "has_the_recipe", + "has_chromium_ingot" ] ], "rewards": { diff --git a/src/generated/resources/data/allomancy/advancements/recipes/misc/chromium_pattern.json b/src/generated/resources/data/allomancy/advancements/recipes/misc/chromium_pattern.json index dedd5232..1dccdc19 100644 --- a/src/generated/resources/data/allomancy/advancements/recipes/misc/chromium_pattern.json +++ b/src/generated/resources/data/allomancy/advancements/recipes/misc/chromium_pattern.json @@ -22,8 +22,8 @@ }, "requirements": [ [ - "has_chromium_flakes", - "has_the_recipe" + "has_the_recipe", + "has_chromium_flakes" ] ], "rewards": { diff --git a/src/generated/resources/data/allomancy/advancements/recipes/misc/copper_flakes.json b/src/generated/resources/data/allomancy/advancements/recipes/misc/copper_flakes.json index 6fef0b53..c0379952 100644 --- a/src/generated/resources/data/allomancy/advancements/recipes/misc/copper_flakes.json +++ b/src/generated/resources/data/allomancy/advancements/recipes/misc/copper_flakes.json @@ -22,8 +22,8 @@ }, "requirements": [ [ - "has_allomantic_grinder", - "has_the_recipe" + "has_the_recipe", + "has_allomantic_grinder" ] ], "rewards": { diff --git a/src/generated/resources/data/allomancy/advancements/recipes/misc/copper_pattern.json b/src/generated/resources/data/allomancy/advancements/recipes/misc/copper_pattern.json index 4b19bf5d..f31677a3 100644 --- a/src/generated/resources/data/allomancy/advancements/recipes/misc/copper_pattern.json +++ b/src/generated/resources/data/allomancy/advancements/recipes/misc/copper_pattern.json @@ -22,8 +22,8 @@ }, "requirements": [ [ - "has_copper_flakes", - "has_the_recipe" + "has_the_recipe", + "has_copper_flakes" ] ], "rewards": { diff --git a/src/generated/resources/data/allomancy/advancements/recipes/misc/duralumin_flakes.json b/src/generated/resources/data/allomancy/advancements/recipes/misc/duralumin_flakes.json index 349dcd10..c758abd9 100644 --- a/src/generated/resources/data/allomancy/advancements/recipes/misc/duralumin_flakes.json +++ b/src/generated/resources/data/allomancy/advancements/recipes/misc/duralumin_flakes.json @@ -22,8 +22,8 @@ }, "requirements": [ [ - "has_allomantic_grinder", - "has_the_recipe" + "has_the_recipe", + "has_allomantic_grinder" ] ], "rewards": { diff --git a/src/generated/resources/data/allomancy/advancements/recipes/misc/duralumin_flakes_from_mixing.json b/src/generated/resources/data/allomancy/advancements/recipes/misc/duralumin_flakes_from_mixing.json index 8498253c..ef8658ca 100644 --- a/src/generated/resources/data/allomancy/advancements/recipes/misc/duralumin_flakes_from_mixing.json +++ b/src/generated/resources/data/allomancy/advancements/recipes/misc/duralumin_flakes_from_mixing.json @@ -22,8 +22,8 @@ }, "requirements": [ [ - "has_allomantic_grinder", - "has_the_recipe" + "has_the_recipe", + "has_allomantic_grinder" ] ], "rewards": { diff --git a/src/generated/resources/data/allomancy/advancements/recipes/misc/duralumin_ingot_from_alloying.json b/src/generated/resources/data/allomancy/advancements/recipes/misc/duralumin_ingot_from_alloying.json index f0881250..2998aed1 100644 --- a/src/generated/resources/data/allomancy/advancements/recipes/misc/duralumin_ingot_from_alloying.json +++ b/src/generated/resources/data/allomancy/advancements/recipes/misc/duralumin_ingot_from_alloying.json @@ -22,8 +22,8 @@ }, "requirements": [ [ - "has_aluminum_ingot", - "has_the_recipe" + "has_the_recipe", + "has_aluminum_ingot" ] ], "rewards": { diff --git a/src/generated/resources/data/allomancy/advancements/recipes/misc/duralumin_ingot_from_block.json b/src/generated/resources/data/allomancy/advancements/recipes/misc/duralumin_ingot_from_block.json index 7e2ee216..b70611df 100644 --- a/src/generated/resources/data/allomancy/advancements/recipes/misc/duralumin_ingot_from_block.json +++ b/src/generated/resources/data/allomancy/advancements/recipes/misc/duralumin_ingot_from_block.json @@ -22,8 +22,8 @@ }, "requirements": [ [ - "has_duralumin_block", - "has_the_recipe" + "has_the_recipe", + "has_duralumin_block" ] ], "rewards": { diff --git a/src/generated/resources/data/allomancy/advancements/recipes/misc/duralumin_ingot_from_nuggets.json b/src/generated/resources/data/allomancy/advancements/recipes/misc/duralumin_ingot_from_nuggets.json index b95042e7..e50b3024 100644 --- a/src/generated/resources/data/allomancy/advancements/recipes/misc/duralumin_ingot_from_nuggets.json +++ b/src/generated/resources/data/allomancy/advancements/recipes/misc/duralumin_ingot_from_nuggets.json @@ -22,8 +22,8 @@ }, "requirements": [ [ - "has_duralumin_nugget", - "has_the_recipe" + "has_the_recipe", + "has_duralumin_nugget" ] ], "rewards": { diff --git a/src/generated/resources/data/allomancy/advancements/recipes/misc/duralumin_nugget.json b/src/generated/resources/data/allomancy/advancements/recipes/misc/duralumin_nugget.json index f09af3dd..2e1e1909 100644 --- a/src/generated/resources/data/allomancy/advancements/recipes/misc/duralumin_nugget.json +++ b/src/generated/resources/data/allomancy/advancements/recipes/misc/duralumin_nugget.json @@ -22,8 +22,8 @@ }, "requirements": [ [ - "has_duralumin_ingot", - "has_the_recipe" + "has_the_recipe", + "has_duralumin_ingot" ] ], "rewards": { diff --git a/src/generated/resources/data/allomancy/advancements/recipes/misc/duralumin_pattern.json b/src/generated/resources/data/allomancy/advancements/recipes/misc/duralumin_pattern.json index de7bbe0e..7fbdce1f 100644 --- a/src/generated/resources/data/allomancy/advancements/recipes/misc/duralumin_pattern.json +++ b/src/generated/resources/data/allomancy/advancements/recipes/misc/duralumin_pattern.json @@ -22,8 +22,8 @@ }, "requirements": [ [ - "has_duralumin_flakes", - "has_the_recipe" + "has_the_recipe", + "has_duralumin_flakes" ] ], "rewards": { diff --git a/src/generated/resources/data/allomancy/advancements/recipes/misc/electrum_flakes.json b/src/generated/resources/data/allomancy/advancements/recipes/misc/electrum_flakes.json index 37e4ebc7..5021867b 100644 --- a/src/generated/resources/data/allomancy/advancements/recipes/misc/electrum_flakes.json +++ b/src/generated/resources/data/allomancy/advancements/recipes/misc/electrum_flakes.json @@ -22,8 +22,8 @@ }, "requirements": [ [ - "has_allomantic_grinder", - "has_the_recipe" + "has_the_recipe", + "has_allomantic_grinder" ] ], "rewards": { diff --git a/src/generated/resources/data/allomancy/advancements/recipes/misc/electrum_flakes_from_mixing.json b/src/generated/resources/data/allomancy/advancements/recipes/misc/electrum_flakes_from_mixing.json index 136819b4..49dd5314 100644 --- a/src/generated/resources/data/allomancy/advancements/recipes/misc/electrum_flakes_from_mixing.json +++ b/src/generated/resources/data/allomancy/advancements/recipes/misc/electrum_flakes_from_mixing.json @@ -22,8 +22,8 @@ }, "requirements": [ [ - "has_allomantic_grinder", - "has_the_recipe" + "has_the_recipe", + "has_allomantic_grinder" ] ], "rewards": { diff --git a/src/generated/resources/data/allomancy/advancements/recipes/misc/electrum_ingot_from_alloying.json b/src/generated/resources/data/allomancy/advancements/recipes/misc/electrum_ingot_from_alloying.json index 41190ed4..5eba5d31 100644 --- a/src/generated/resources/data/allomancy/advancements/recipes/misc/electrum_ingot_from_alloying.json +++ b/src/generated/resources/data/allomancy/advancements/recipes/misc/electrum_ingot_from_alloying.json @@ -22,8 +22,8 @@ }, "requirements": [ [ - "has_silver_ingot", - "has_the_recipe" + "has_the_recipe", + "has_silver_ingot" ] ], "rewards": { diff --git a/src/generated/resources/data/allomancy/advancements/recipes/misc/electrum_ingot_from_block.json b/src/generated/resources/data/allomancy/advancements/recipes/misc/electrum_ingot_from_block.json index 91d1b7bf..ac808572 100644 --- a/src/generated/resources/data/allomancy/advancements/recipes/misc/electrum_ingot_from_block.json +++ b/src/generated/resources/data/allomancy/advancements/recipes/misc/electrum_ingot_from_block.json @@ -22,8 +22,8 @@ }, "requirements": [ [ - "has_electrum_block", - "has_the_recipe" + "has_the_recipe", + "has_electrum_block" ] ], "rewards": { diff --git a/src/generated/resources/data/allomancy/advancements/recipes/misc/electrum_ingot_from_nuggets.json b/src/generated/resources/data/allomancy/advancements/recipes/misc/electrum_ingot_from_nuggets.json index a349dabc..811099ee 100644 --- a/src/generated/resources/data/allomancy/advancements/recipes/misc/electrum_ingot_from_nuggets.json +++ b/src/generated/resources/data/allomancy/advancements/recipes/misc/electrum_ingot_from_nuggets.json @@ -22,8 +22,8 @@ }, "requirements": [ [ - "has_electrum_nugget", - "has_the_recipe" + "has_the_recipe", + "has_electrum_nugget" ] ], "rewards": { diff --git a/src/generated/resources/data/allomancy/advancements/recipes/misc/electrum_nugget.json b/src/generated/resources/data/allomancy/advancements/recipes/misc/electrum_nugget.json index 278bfed9..30f4863a 100644 --- a/src/generated/resources/data/allomancy/advancements/recipes/misc/electrum_nugget.json +++ b/src/generated/resources/data/allomancy/advancements/recipes/misc/electrum_nugget.json @@ -22,8 +22,8 @@ }, "requirements": [ [ - "has_electrum_ingot", - "has_the_recipe" + "has_the_recipe", + "has_electrum_ingot" ] ], "rewards": { diff --git a/src/generated/resources/data/allomancy/advancements/recipes/misc/electrum_pattern.json b/src/generated/resources/data/allomancy/advancements/recipes/misc/electrum_pattern.json index 3278e3ad..90b252d2 100644 --- a/src/generated/resources/data/allomancy/advancements/recipes/misc/electrum_pattern.json +++ b/src/generated/resources/data/allomancy/advancements/recipes/misc/electrum_pattern.json @@ -22,8 +22,8 @@ }, "requirements": [ [ - "has_electrum_flakes", - "has_the_recipe" + "has_the_recipe", + "has_electrum_flakes" ] ], "rewards": { diff --git a/src/generated/resources/data/allomancy/advancements/recipes/misc/gold_flakes.json b/src/generated/resources/data/allomancy/advancements/recipes/misc/gold_flakes.json index 90ab88b7..00ca984a 100644 --- a/src/generated/resources/data/allomancy/advancements/recipes/misc/gold_flakes.json +++ b/src/generated/resources/data/allomancy/advancements/recipes/misc/gold_flakes.json @@ -22,8 +22,8 @@ }, "requirements": [ [ - "has_allomantic_grinder", - "has_the_recipe" + "has_the_recipe", + "has_allomantic_grinder" ] ], "rewards": { diff --git a/src/generated/resources/data/allomancy/advancements/recipes/misc/gold_pattern.json b/src/generated/resources/data/allomancy/advancements/recipes/misc/gold_pattern.json index d9e875b0..adc44ab5 100644 --- a/src/generated/resources/data/allomancy/advancements/recipes/misc/gold_pattern.json +++ b/src/generated/resources/data/allomancy/advancements/recipes/misc/gold_pattern.json @@ -22,8 +22,8 @@ }, "requirements": [ [ - "has_gold_flakes", - "has_the_recipe" + "has_the_recipe", + "has_gold_flakes" ] ], "rewards": { diff --git a/src/generated/resources/data/allomancy/advancements/recipes/misc/iron_flakes.json b/src/generated/resources/data/allomancy/advancements/recipes/misc/iron_flakes.json index 6c3c2a9b..47c26a24 100644 --- a/src/generated/resources/data/allomancy/advancements/recipes/misc/iron_flakes.json +++ b/src/generated/resources/data/allomancy/advancements/recipes/misc/iron_flakes.json @@ -22,8 +22,8 @@ }, "requirements": [ [ - "has_allomantic_grinder", - "has_the_recipe" + "has_the_recipe", + "has_allomantic_grinder" ] ], "rewards": { diff --git a/src/generated/resources/data/allomancy/advancements/recipes/misc/iron_pattern.json b/src/generated/resources/data/allomancy/advancements/recipes/misc/iron_pattern.json index a4d5df6a..8e5a87d8 100644 --- a/src/generated/resources/data/allomancy/advancements/recipes/misc/iron_pattern.json +++ b/src/generated/resources/data/allomancy/advancements/recipes/misc/iron_pattern.json @@ -22,8 +22,8 @@ }, "requirements": [ [ - "has_iron_flakes", - "has_the_recipe" + "has_the_recipe", + "has_iron_flakes" ] ], "rewards": { diff --git a/src/generated/resources/data/allomancy/advancements/recipes/misc/lead_flakes.json b/src/generated/resources/data/allomancy/advancements/recipes/misc/lead_flakes.json index e6b9c504..7128b542 100644 --- a/src/generated/resources/data/allomancy/advancements/recipes/misc/lead_flakes.json +++ b/src/generated/resources/data/allomancy/advancements/recipes/misc/lead_flakes.json @@ -22,8 +22,8 @@ }, "requirements": [ [ - "has_allomantic_grinder", - "has_the_recipe" + "has_the_recipe", + "has_allomantic_grinder" ] ], "rewards": { diff --git a/src/generated/resources/data/allomancy/advancements/recipes/misc/lead_ingot_from_block.json b/src/generated/resources/data/allomancy/advancements/recipes/misc/lead_ingot_from_block.json index 46a5806f..5503e068 100644 --- a/src/generated/resources/data/allomancy/advancements/recipes/misc/lead_ingot_from_block.json +++ b/src/generated/resources/data/allomancy/advancements/recipes/misc/lead_ingot_from_block.json @@ -22,8 +22,8 @@ }, "requirements": [ [ - "has_lead_block", - "has_the_recipe" + "has_the_recipe", + "has_lead_block" ] ], "rewards": { diff --git a/src/generated/resources/data/allomancy/advancements/recipes/misc/lead_ingot_from_deepslate_lead_ore.json b/src/generated/resources/data/allomancy/advancements/recipes/misc/lead_ingot_from_deepslate_lead_ore.json new file mode 100644 index 00000000..f39cd431 --- /dev/null +++ b/src/generated/resources/data/allomancy/advancements/recipes/misc/lead_ingot_from_deepslate_lead_ore.json @@ -0,0 +1,34 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_deepslate_lead_ore": { + "conditions": { + "items": [ + { + "items": [ + "allomancy:deepslate_lead_ore" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "allomancy:lead_ingot_from_deepslate_lead_ore" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_deepslate_lead_ore" + ] + ], + "rewards": { + "recipes": [ + "allomancy:lead_ingot_from_deepslate_lead_ore" + ] + } +} \ No newline at end of file diff --git a/src/generated/resources/data/allomancy/advancements/recipes/misc/lead_ingot_from_deepslate_lead_ore_from_blasting.json b/src/generated/resources/data/allomancy/advancements/recipes/misc/lead_ingot_from_deepslate_lead_ore_from_blasting.json new file mode 100644 index 00000000..47531563 --- /dev/null +++ b/src/generated/resources/data/allomancy/advancements/recipes/misc/lead_ingot_from_deepslate_lead_ore_from_blasting.json @@ -0,0 +1,34 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_deepslate_lead_ore": { + "conditions": { + "items": [ + { + "items": [ + "allomancy:deepslate_lead_ore" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "allomancy:lead_ingot_from_deepslate_lead_ore_from_blasting" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_deepslate_lead_ore" + ] + ], + "rewards": { + "recipes": [ + "allomancy:lead_ingot_from_deepslate_lead_ore_from_blasting" + ] + } +} \ No newline at end of file diff --git a/src/generated/resources/data/allomancy/advancements/recipes/misc/lead_ingot_from_lead_ore.json b/src/generated/resources/data/allomancy/advancements/recipes/misc/lead_ingot_from_lead_ore.json new file mode 100644 index 00000000..5557d8da --- /dev/null +++ b/src/generated/resources/data/allomancy/advancements/recipes/misc/lead_ingot_from_lead_ore.json @@ -0,0 +1,34 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_lead_ore": { + "conditions": { + "items": [ + { + "items": [ + "allomancy:lead_ore" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "allomancy:lead_ingot_from_lead_ore" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_lead_ore" + ] + ], + "rewards": { + "recipes": [ + "allomancy:lead_ingot_from_lead_ore" + ] + } +} \ No newline at end of file diff --git a/src/generated/resources/data/allomancy/advancements/recipes/misc/lead_ingot_from_lead_ore_from_blasting.json b/src/generated/resources/data/allomancy/advancements/recipes/misc/lead_ingot_from_lead_ore_from_blasting.json new file mode 100644 index 00000000..ea6bb9ed --- /dev/null +++ b/src/generated/resources/data/allomancy/advancements/recipes/misc/lead_ingot_from_lead_ore_from_blasting.json @@ -0,0 +1,34 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_lead_ore": { + "conditions": { + "items": [ + { + "items": [ + "allomancy:lead_ore" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "allomancy:lead_ingot_from_lead_ore_from_blasting" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_lead_ore" + ] + ], + "rewards": { + "recipes": [ + "allomancy:lead_ingot_from_lead_ore_from_blasting" + ] + } +} \ No newline at end of file diff --git a/src/generated/resources/data/allomancy/advancements/recipes/misc/lead_ingot_from_nuggets.json b/src/generated/resources/data/allomancy/advancements/recipes/misc/lead_ingot_from_nuggets.json index 5e25ab09..a394bb08 100644 --- a/src/generated/resources/data/allomancy/advancements/recipes/misc/lead_ingot_from_nuggets.json +++ b/src/generated/resources/data/allomancy/advancements/recipes/misc/lead_ingot_from_nuggets.json @@ -22,8 +22,8 @@ }, "requirements": [ [ - "has_lead_nugget", - "has_the_recipe" + "has_the_recipe", + "has_lead_nugget" ] ], "rewards": { diff --git a/src/generated/resources/data/allomancy/advancements/recipes/misc/lead_ingot_from_blasting.json b/src/generated/resources/data/allomancy/advancements/recipes/misc/lead_ingot_from_raw_lead.json similarity index 77% rename from src/generated/resources/data/allomancy/advancements/recipes/misc/lead_ingot_from_blasting.json rename to src/generated/resources/data/allomancy/advancements/recipes/misc/lead_ingot_from_raw_lead.json index a1f7f6e3..62ee1ea0 100644 --- a/src/generated/resources/data/allomancy/advancements/recipes/misc/lead_ingot_from_blasting.json +++ b/src/generated/resources/data/allomancy/advancements/recipes/misc/lead_ingot_from_raw_lead.json @@ -15,20 +15,20 @@ }, "has_the_recipe": { "conditions": { - "recipe": "allomancy:lead_ingot_from_blasting" + "recipe": "allomancy:lead_ingot_from_raw_lead" }, "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ [ - "has_raw_lead", - "has_the_recipe" + "has_the_recipe", + "has_raw_lead" ] ], "rewards": { "recipes": [ - "allomancy:lead_ingot_from_blasting" + "allomancy:lead_ingot_from_raw_lead" ] } } \ No newline at end of file diff --git a/src/generated/resources/data/allomancy/advancements/recipes/misc/lead_ingot.json b/src/generated/resources/data/allomancy/advancements/recipes/misc/lead_ingot_from_raw_lead_from_blasting.json similarity index 73% rename from src/generated/resources/data/allomancy/advancements/recipes/misc/lead_ingot.json rename to src/generated/resources/data/allomancy/advancements/recipes/misc/lead_ingot_from_raw_lead_from_blasting.json index 250f2044..e1fdd579 100644 --- a/src/generated/resources/data/allomancy/advancements/recipes/misc/lead_ingot.json +++ b/src/generated/resources/data/allomancy/advancements/recipes/misc/lead_ingot_from_raw_lead_from_blasting.json @@ -15,20 +15,20 @@ }, "has_the_recipe": { "conditions": { - "recipe": "allomancy:lead_ingot" + "recipe": "allomancy:lead_ingot_from_raw_lead_from_blasting" }, "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ [ - "has_raw_lead", - "has_the_recipe" + "has_the_recipe", + "has_raw_lead" ] ], "rewards": { "recipes": [ - "allomancy:lead_ingot" + "allomancy:lead_ingot_from_raw_lead_from_blasting" ] } } \ No newline at end of file diff --git a/src/generated/resources/data/allomancy/advancements/recipes/misc/lead_nugget.json b/src/generated/resources/data/allomancy/advancements/recipes/misc/lead_nugget.json index 40cc3f55..80aee0df 100644 --- a/src/generated/resources/data/allomancy/advancements/recipes/misc/lead_nugget.json +++ b/src/generated/resources/data/allomancy/advancements/recipes/misc/lead_nugget.json @@ -22,8 +22,8 @@ }, "requirements": [ [ - "has_lead_ingot", - "has_the_recipe" + "has_the_recipe", + "has_lead_ingot" ] ], "rewards": { diff --git a/src/generated/resources/data/allomancy/advancements/recipes/misc/lerasium_nugget.json b/src/generated/resources/data/allomancy/advancements/recipes/misc/lerasium_nugget.json index 3f17d5dc..d186a420 100644 --- a/src/generated/resources/data/allomancy/advancements/recipes/misc/lerasium_nugget.json +++ b/src/generated/resources/data/allomancy/advancements/recipes/misc/lerasium_nugget.json @@ -22,8 +22,8 @@ }, "requirements": [ [ - "has_nether_star", - "has_the_recipe" + "has_the_recipe", + "has_nether_star" ] ], "rewards": { diff --git a/src/generated/resources/data/allomancy/advancements/recipes/misc/nicrosil_flakes.json b/src/generated/resources/data/allomancy/advancements/recipes/misc/nicrosil_flakes.json index f43671a1..d1100d40 100644 --- a/src/generated/resources/data/allomancy/advancements/recipes/misc/nicrosil_flakes.json +++ b/src/generated/resources/data/allomancy/advancements/recipes/misc/nicrosil_flakes.json @@ -22,8 +22,8 @@ }, "requirements": [ [ - "has_allomantic_grinder", - "has_the_recipe" + "has_the_recipe", + "has_allomantic_grinder" ] ], "rewards": { diff --git a/src/generated/resources/data/allomancy/advancements/recipes/misc/nicrosil_flakes_from_mixing.json b/src/generated/resources/data/allomancy/advancements/recipes/misc/nicrosil_flakes_from_mixing.json index 0a7f2a9e..88a3856d 100644 --- a/src/generated/resources/data/allomancy/advancements/recipes/misc/nicrosil_flakes_from_mixing.json +++ b/src/generated/resources/data/allomancy/advancements/recipes/misc/nicrosil_flakes_from_mixing.json @@ -22,8 +22,8 @@ }, "requirements": [ [ - "has_allomantic_grinder", - "has_the_recipe" + "has_the_recipe", + "has_allomantic_grinder" ] ], "rewards": { diff --git a/src/generated/resources/data/allomancy/advancements/recipes/misc/nicrosil_ingot_from_alloying.json b/src/generated/resources/data/allomancy/advancements/recipes/misc/nicrosil_ingot_from_alloying.json index dd363e38..89e1a11f 100644 --- a/src/generated/resources/data/allomancy/advancements/recipes/misc/nicrosil_ingot_from_alloying.json +++ b/src/generated/resources/data/allomancy/advancements/recipes/misc/nicrosil_ingot_from_alloying.json @@ -22,8 +22,8 @@ }, "requirements": [ [ - "has_chromium_ingot", - "has_the_recipe" + "has_the_recipe", + "has_chromium_ingot" ] ], "rewards": { diff --git a/src/generated/resources/data/allomancy/advancements/recipes/misc/nicrosil_ingot_from_block.json b/src/generated/resources/data/allomancy/advancements/recipes/misc/nicrosil_ingot_from_block.json index 66c7bca3..c5648b7b 100644 --- a/src/generated/resources/data/allomancy/advancements/recipes/misc/nicrosil_ingot_from_block.json +++ b/src/generated/resources/data/allomancy/advancements/recipes/misc/nicrosil_ingot_from_block.json @@ -22,8 +22,8 @@ }, "requirements": [ [ - "has_nicrosil_block", - "has_the_recipe" + "has_the_recipe", + "has_nicrosil_block" ] ], "rewards": { diff --git a/src/generated/resources/data/allomancy/advancements/recipes/misc/nicrosil_ingot_from_nuggets.json b/src/generated/resources/data/allomancy/advancements/recipes/misc/nicrosil_ingot_from_nuggets.json index 628f92d5..a5d008de 100644 --- a/src/generated/resources/data/allomancy/advancements/recipes/misc/nicrosil_ingot_from_nuggets.json +++ b/src/generated/resources/data/allomancy/advancements/recipes/misc/nicrosil_ingot_from_nuggets.json @@ -22,8 +22,8 @@ }, "requirements": [ [ - "has_nicrosil_nugget", - "has_the_recipe" + "has_the_recipe", + "has_nicrosil_nugget" ] ], "rewards": { diff --git a/src/generated/resources/data/allomancy/advancements/recipes/misc/nicrosil_nugget.json b/src/generated/resources/data/allomancy/advancements/recipes/misc/nicrosil_nugget.json index 635b45ff..f2c69a9b 100644 --- a/src/generated/resources/data/allomancy/advancements/recipes/misc/nicrosil_nugget.json +++ b/src/generated/resources/data/allomancy/advancements/recipes/misc/nicrosil_nugget.json @@ -22,8 +22,8 @@ }, "requirements": [ [ - "has_nicrosil_ingot", - "has_the_recipe" + "has_the_recipe", + "has_nicrosil_ingot" ] ], "rewards": { diff --git a/src/generated/resources/data/allomancy/advancements/recipes/misc/nicrosil_pattern.json b/src/generated/resources/data/allomancy/advancements/recipes/misc/nicrosil_pattern.json index f78d36b6..93478855 100644 --- a/src/generated/resources/data/allomancy/advancements/recipes/misc/nicrosil_pattern.json +++ b/src/generated/resources/data/allomancy/advancements/recipes/misc/nicrosil_pattern.json @@ -22,8 +22,8 @@ }, "requirements": [ [ - "has_nicrosil_flakes", - "has_the_recipe" + "has_the_recipe", + "has_nicrosil_flakes" ] ], "rewards": { diff --git a/src/generated/resources/data/allomancy/advancements/recipes/misc/pewter_flakes.json b/src/generated/resources/data/allomancy/advancements/recipes/misc/pewter_flakes.json index 2e613153..fbec0a20 100644 --- a/src/generated/resources/data/allomancy/advancements/recipes/misc/pewter_flakes.json +++ b/src/generated/resources/data/allomancy/advancements/recipes/misc/pewter_flakes.json @@ -22,8 +22,8 @@ }, "requirements": [ [ - "has_allomantic_grinder", - "has_the_recipe" + "has_the_recipe", + "has_allomantic_grinder" ] ], "rewards": { diff --git a/src/generated/resources/data/allomancy/advancements/recipes/misc/pewter_flakes_from_mixing.json b/src/generated/resources/data/allomancy/advancements/recipes/misc/pewter_flakes_from_mixing.json index f8100d56..bdcd0541 100644 --- a/src/generated/resources/data/allomancy/advancements/recipes/misc/pewter_flakes_from_mixing.json +++ b/src/generated/resources/data/allomancy/advancements/recipes/misc/pewter_flakes_from_mixing.json @@ -22,8 +22,8 @@ }, "requirements": [ [ - "has_allomantic_grinder", - "has_the_recipe" + "has_the_recipe", + "has_allomantic_grinder" ] ], "rewards": { diff --git a/src/generated/resources/data/allomancy/advancements/recipes/misc/pewter_ingot_from_alloying.json b/src/generated/resources/data/allomancy/advancements/recipes/misc/pewter_ingot_from_alloying.json index ec23d346..b792dfd0 100644 --- a/src/generated/resources/data/allomancy/advancements/recipes/misc/pewter_ingot_from_alloying.json +++ b/src/generated/resources/data/allomancy/advancements/recipes/misc/pewter_ingot_from_alloying.json @@ -22,8 +22,8 @@ }, "requirements": [ [ - "has_tin_ingot", - "has_the_recipe" + "has_the_recipe", + "has_tin_ingot" ] ], "rewards": { diff --git a/src/generated/resources/data/allomancy/advancements/recipes/misc/pewter_ingot_from_block.json b/src/generated/resources/data/allomancy/advancements/recipes/misc/pewter_ingot_from_block.json index 82bc369a..ab4fff48 100644 --- a/src/generated/resources/data/allomancy/advancements/recipes/misc/pewter_ingot_from_block.json +++ b/src/generated/resources/data/allomancy/advancements/recipes/misc/pewter_ingot_from_block.json @@ -22,8 +22,8 @@ }, "requirements": [ [ - "has_pewter_block", - "has_the_recipe" + "has_the_recipe", + "has_pewter_block" ] ], "rewards": { diff --git a/src/generated/resources/data/allomancy/advancements/recipes/misc/pewter_ingot_from_nuggets.json b/src/generated/resources/data/allomancy/advancements/recipes/misc/pewter_ingot_from_nuggets.json index f4277ef3..fb819d93 100644 --- a/src/generated/resources/data/allomancy/advancements/recipes/misc/pewter_ingot_from_nuggets.json +++ b/src/generated/resources/data/allomancy/advancements/recipes/misc/pewter_ingot_from_nuggets.json @@ -22,8 +22,8 @@ }, "requirements": [ [ - "has_pewter_nugget", - "has_the_recipe" + "has_the_recipe", + "has_pewter_nugget" ] ], "rewards": { diff --git a/src/generated/resources/data/allomancy/advancements/recipes/misc/pewter_nugget.json b/src/generated/resources/data/allomancy/advancements/recipes/misc/pewter_nugget.json index 0271a8f0..83604067 100644 --- a/src/generated/resources/data/allomancy/advancements/recipes/misc/pewter_nugget.json +++ b/src/generated/resources/data/allomancy/advancements/recipes/misc/pewter_nugget.json @@ -22,8 +22,8 @@ }, "requirements": [ [ - "has_pewter_ingot", - "has_the_recipe" + "has_the_recipe", + "has_pewter_ingot" ] ], "rewards": { diff --git a/src/generated/resources/data/allomancy/advancements/recipes/misc/pewter_pattern.json b/src/generated/resources/data/allomancy/advancements/recipes/misc/pewter_pattern.json index c05b56bf..5a76dd27 100644 --- a/src/generated/resources/data/allomancy/advancements/recipes/misc/pewter_pattern.json +++ b/src/generated/resources/data/allomancy/advancements/recipes/misc/pewter_pattern.json @@ -22,8 +22,8 @@ }, "requirements": [ [ - "has_pewter_flakes", - "has_the_recipe" + "has_the_recipe", + "has_pewter_flakes" ] ], "rewards": { diff --git a/src/generated/resources/data/allomancy/advancements/recipes/misc/silver_flakes.json b/src/generated/resources/data/allomancy/advancements/recipes/misc/silver_flakes.json index 321f14d3..9611e2a1 100644 --- a/src/generated/resources/data/allomancy/advancements/recipes/misc/silver_flakes.json +++ b/src/generated/resources/data/allomancy/advancements/recipes/misc/silver_flakes.json @@ -22,8 +22,8 @@ }, "requirements": [ [ - "has_allomantic_grinder", - "has_the_recipe" + "has_the_recipe", + "has_allomantic_grinder" ] ], "rewards": { diff --git a/src/generated/resources/data/allomancy/advancements/recipes/misc/silver_ingot_from_block.json b/src/generated/resources/data/allomancy/advancements/recipes/misc/silver_ingot_from_block.json index 2525a8aa..8d2cf13b 100644 --- a/src/generated/resources/data/allomancy/advancements/recipes/misc/silver_ingot_from_block.json +++ b/src/generated/resources/data/allomancy/advancements/recipes/misc/silver_ingot_from_block.json @@ -22,8 +22,8 @@ }, "requirements": [ [ - "has_silver_block", - "has_the_recipe" + "has_the_recipe", + "has_silver_block" ] ], "rewards": { diff --git a/src/generated/resources/data/allomancy/advancements/recipes/misc/silver_ingot_from_deepslate_silver_ore.json b/src/generated/resources/data/allomancy/advancements/recipes/misc/silver_ingot_from_deepslate_silver_ore.json new file mode 100644 index 00000000..3ee118fe --- /dev/null +++ b/src/generated/resources/data/allomancy/advancements/recipes/misc/silver_ingot_from_deepslate_silver_ore.json @@ -0,0 +1,34 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_deepslate_silver_ore": { + "conditions": { + "items": [ + { + "items": [ + "allomancy:deepslate_silver_ore" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "allomancy:silver_ingot_from_deepslate_silver_ore" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_deepslate_silver_ore" + ] + ], + "rewards": { + "recipes": [ + "allomancy:silver_ingot_from_deepslate_silver_ore" + ] + } +} \ No newline at end of file diff --git a/src/generated/resources/data/allomancy/advancements/recipes/misc/silver_ingot_from_deepslate_silver_ore_from_blasting.json b/src/generated/resources/data/allomancy/advancements/recipes/misc/silver_ingot_from_deepslate_silver_ore_from_blasting.json new file mode 100644 index 00000000..d9245034 --- /dev/null +++ b/src/generated/resources/data/allomancy/advancements/recipes/misc/silver_ingot_from_deepslate_silver_ore_from_blasting.json @@ -0,0 +1,34 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_deepslate_silver_ore": { + "conditions": { + "items": [ + { + "items": [ + "allomancy:deepslate_silver_ore" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "allomancy:silver_ingot_from_deepslate_silver_ore_from_blasting" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_deepslate_silver_ore" + ] + ], + "rewards": { + "recipes": [ + "allomancy:silver_ingot_from_deepslate_silver_ore_from_blasting" + ] + } +} \ No newline at end of file diff --git a/src/generated/resources/data/allomancy/advancements/recipes/misc/silver_ingot_from_nuggets.json b/src/generated/resources/data/allomancy/advancements/recipes/misc/silver_ingot_from_nuggets.json index aad285ec..ee5ba1ef 100644 --- a/src/generated/resources/data/allomancy/advancements/recipes/misc/silver_ingot_from_nuggets.json +++ b/src/generated/resources/data/allomancy/advancements/recipes/misc/silver_ingot_from_nuggets.json @@ -22,8 +22,8 @@ }, "requirements": [ [ - "has_silver_nugget", - "has_the_recipe" + "has_the_recipe", + "has_silver_nugget" ] ], "rewards": { diff --git a/src/generated/resources/data/allomancy/advancements/recipes/misc/silver_ingot.json b/src/generated/resources/data/allomancy/advancements/recipes/misc/silver_ingot_from_raw_silver.json similarity index 75% rename from src/generated/resources/data/allomancy/advancements/recipes/misc/silver_ingot.json rename to src/generated/resources/data/allomancy/advancements/recipes/misc/silver_ingot_from_raw_silver.json index f9eeeab6..895474ad 100644 --- a/src/generated/resources/data/allomancy/advancements/recipes/misc/silver_ingot.json +++ b/src/generated/resources/data/allomancy/advancements/recipes/misc/silver_ingot_from_raw_silver.json @@ -15,20 +15,20 @@ }, "has_the_recipe": { "conditions": { - "recipe": "allomancy:silver_ingot" + "recipe": "allomancy:silver_ingot_from_raw_silver" }, "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ [ - "has_raw_silver", - "has_the_recipe" + "has_the_recipe", + "has_raw_silver" ] ], "rewards": { "recipes": [ - "allomancy:silver_ingot" + "allomancy:silver_ingot_from_raw_silver" ] } } \ No newline at end of file diff --git a/src/generated/resources/data/allomancy/advancements/recipes/misc/silver_ingot_from_blasting.json b/src/generated/resources/data/allomancy/advancements/recipes/misc/silver_ingot_from_raw_silver_from_blasting.json similarity index 72% rename from src/generated/resources/data/allomancy/advancements/recipes/misc/silver_ingot_from_blasting.json rename to src/generated/resources/data/allomancy/advancements/recipes/misc/silver_ingot_from_raw_silver_from_blasting.json index 339f2a55..a4ab2833 100644 --- a/src/generated/resources/data/allomancy/advancements/recipes/misc/silver_ingot_from_blasting.json +++ b/src/generated/resources/data/allomancy/advancements/recipes/misc/silver_ingot_from_raw_silver_from_blasting.json @@ -15,20 +15,20 @@ }, "has_the_recipe": { "conditions": { - "recipe": "allomancy:silver_ingot_from_blasting" + "recipe": "allomancy:silver_ingot_from_raw_silver_from_blasting" }, "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ [ - "has_raw_silver", - "has_the_recipe" + "has_the_recipe", + "has_raw_silver" ] ], "rewards": { "recipes": [ - "allomancy:silver_ingot_from_blasting" + "allomancy:silver_ingot_from_raw_silver_from_blasting" ] } } \ No newline at end of file diff --git a/src/generated/resources/data/allomancy/advancements/recipes/misc/silver_ingot_from_silver_ore.json b/src/generated/resources/data/allomancy/advancements/recipes/misc/silver_ingot_from_silver_ore.json new file mode 100644 index 00000000..5cbd2a90 --- /dev/null +++ b/src/generated/resources/data/allomancy/advancements/recipes/misc/silver_ingot_from_silver_ore.json @@ -0,0 +1,34 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_silver_ore": { + "conditions": { + "items": [ + { + "items": [ + "allomancy:silver_ore" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "allomancy:silver_ingot_from_silver_ore" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_silver_ore" + ] + ], + "rewards": { + "recipes": [ + "allomancy:silver_ingot_from_silver_ore" + ] + } +} \ No newline at end of file diff --git a/src/generated/resources/data/allomancy/advancements/recipes/misc/silver_ingot_from_silver_ore_from_blasting.json b/src/generated/resources/data/allomancy/advancements/recipes/misc/silver_ingot_from_silver_ore_from_blasting.json new file mode 100644 index 00000000..9dbaa030 --- /dev/null +++ b/src/generated/resources/data/allomancy/advancements/recipes/misc/silver_ingot_from_silver_ore_from_blasting.json @@ -0,0 +1,34 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_silver_ore": { + "conditions": { + "items": [ + { + "items": [ + "allomancy:silver_ore" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "allomancy:silver_ingot_from_silver_ore_from_blasting" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_silver_ore" + ] + ], + "rewards": { + "recipes": [ + "allomancy:silver_ingot_from_silver_ore_from_blasting" + ] + } +} \ No newline at end of file diff --git a/src/generated/resources/data/allomancy/advancements/recipes/misc/silver_nugget.json b/src/generated/resources/data/allomancy/advancements/recipes/misc/silver_nugget.json index 0c9ad2be..e635b915 100644 --- a/src/generated/resources/data/allomancy/advancements/recipes/misc/silver_nugget.json +++ b/src/generated/resources/data/allomancy/advancements/recipes/misc/silver_nugget.json @@ -22,8 +22,8 @@ }, "requirements": [ [ - "has_silver_ingot", - "has_the_recipe" + "has_the_recipe", + "has_silver_ingot" ] ], "rewards": { diff --git a/src/generated/resources/data/allomancy/advancements/recipes/misc/steel_flakes.json b/src/generated/resources/data/allomancy/advancements/recipes/misc/steel_flakes.json index a233ae9b..ca9e00af 100644 --- a/src/generated/resources/data/allomancy/advancements/recipes/misc/steel_flakes.json +++ b/src/generated/resources/data/allomancy/advancements/recipes/misc/steel_flakes.json @@ -22,8 +22,8 @@ }, "requirements": [ [ - "has_allomantic_grinder", - "has_the_recipe" + "has_the_recipe", + "has_allomantic_grinder" ] ], "rewards": { diff --git a/src/generated/resources/data/allomancy/advancements/recipes/misc/steel_flakes_from_mixing.json b/src/generated/resources/data/allomancy/advancements/recipes/misc/steel_flakes_from_mixing.json index bfe8b085..b27cbe02 100644 --- a/src/generated/resources/data/allomancy/advancements/recipes/misc/steel_flakes_from_mixing.json +++ b/src/generated/resources/data/allomancy/advancements/recipes/misc/steel_flakes_from_mixing.json @@ -22,8 +22,8 @@ }, "requirements": [ [ - "has_allomantic_grinder", - "has_the_recipe" + "has_the_recipe", + "has_allomantic_grinder" ] ], "rewards": { diff --git a/src/generated/resources/data/allomancy/advancements/recipes/misc/steel_ingot_from_alloying.json b/src/generated/resources/data/allomancy/advancements/recipes/misc/steel_ingot_from_alloying.json index 54b04e51..c4b87874 100644 --- a/src/generated/resources/data/allomancy/advancements/recipes/misc/steel_ingot_from_alloying.json +++ b/src/generated/resources/data/allomancy/advancements/recipes/misc/steel_ingot_from_alloying.json @@ -22,8 +22,8 @@ }, "requirements": [ [ - "has_coal", - "has_the_recipe" + "has_the_recipe", + "has_coal" ] ], "rewards": { diff --git a/src/generated/resources/data/allomancy/advancements/recipes/misc/steel_ingot_from_block.json b/src/generated/resources/data/allomancy/advancements/recipes/misc/steel_ingot_from_block.json index 6995b31e..faf440f1 100644 --- a/src/generated/resources/data/allomancy/advancements/recipes/misc/steel_ingot_from_block.json +++ b/src/generated/resources/data/allomancy/advancements/recipes/misc/steel_ingot_from_block.json @@ -22,8 +22,8 @@ }, "requirements": [ [ - "has_steel_block", - "has_the_recipe" + "has_the_recipe", + "has_steel_block" ] ], "rewards": { diff --git a/src/generated/resources/data/allomancy/advancements/recipes/misc/steel_ingot_from_nuggets.json b/src/generated/resources/data/allomancy/advancements/recipes/misc/steel_ingot_from_nuggets.json index 65471d55..af6b1396 100644 --- a/src/generated/resources/data/allomancy/advancements/recipes/misc/steel_ingot_from_nuggets.json +++ b/src/generated/resources/data/allomancy/advancements/recipes/misc/steel_ingot_from_nuggets.json @@ -22,8 +22,8 @@ }, "requirements": [ [ - "has_steel_nugget", - "has_the_recipe" + "has_the_recipe", + "has_steel_nugget" ] ], "rewards": { diff --git a/src/generated/resources/data/allomancy/advancements/recipes/misc/steel_nugget.json b/src/generated/resources/data/allomancy/advancements/recipes/misc/steel_nugget.json index 8436f6fe..69752e3e 100644 --- a/src/generated/resources/data/allomancy/advancements/recipes/misc/steel_nugget.json +++ b/src/generated/resources/data/allomancy/advancements/recipes/misc/steel_nugget.json @@ -22,8 +22,8 @@ }, "requirements": [ [ - "has_steel_ingot", - "has_the_recipe" + "has_the_recipe", + "has_steel_ingot" ] ], "rewards": { diff --git a/src/generated/resources/data/allomancy/advancements/recipes/misc/steel_pattern.json b/src/generated/resources/data/allomancy/advancements/recipes/misc/steel_pattern.json index 6de2db83..eb11b4bc 100644 --- a/src/generated/resources/data/allomancy/advancements/recipes/misc/steel_pattern.json +++ b/src/generated/resources/data/allomancy/advancements/recipes/misc/steel_pattern.json @@ -22,8 +22,8 @@ }, "requirements": [ [ - "has_steel_flakes", - "has_the_recipe" + "has_the_recipe", + "has_steel_flakes" ] ], "rewards": { diff --git a/src/generated/resources/data/allomancy/advancements/recipes/misc/tin_flakes.json b/src/generated/resources/data/allomancy/advancements/recipes/misc/tin_flakes.json index c7eaa5f6..5577cd16 100644 --- a/src/generated/resources/data/allomancy/advancements/recipes/misc/tin_flakes.json +++ b/src/generated/resources/data/allomancy/advancements/recipes/misc/tin_flakes.json @@ -22,8 +22,8 @@ }, "requirements": [ [ - "has_allomantic_grinder", - "has_the_recipe" + "has_the_recipe", + "has_allomantic_grinder" ] ], "rewards": { diff --git a/src/generated/resources/data/allomancy/advancements/recipes/misc/tin_ingot_from_block.json b/src/generated/resources/data/allomancy/advancements/recipes/misc/tin_ingot_from_block.json index 6455513f..2f542ccc 100644 --- a/src/generated/resources/data/allomancy/advancements/recipes/misc/tin_ingot_from_block.json +++ b/src/generated/resources/data/allomancy/advancements/recipes/misc/tin_ingot_from_block.json @@ -22,8 +22,8 @@ }, "requirements": [ [ - "has_tin_block", - "has_the_recipe" + "has_the_recipe", + "has_tin_block" ] ], "rewards": { diff --git a/src/generated/resources/data/allomancy/advancements/recipes/misc/tin_ingot_from_deepslate_tin_ore.json b/src/generated/resources/data/allomancy/advancements/recipes/misc/tin_ingot_from_deepslate_tin_ore.json new file mode 100644 index 00000000..f40a0cf1 --- /dev/null +++ b/src/generated/resources/data/allomancy/advancements/recipes/misc/tin_ingot_from_deepslate_tin_ore.json @@ -0,0 +1,34 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_deepslate_tin_ore": { + "conditions": { + "items": [ + { + "items": [ + "allomancy:deepslate_tin_ore" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "allomancy:tin_ingot_from_deepslate_tin_ore" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_deepslate_tin_ore" + ] + ], + "rewards": { + "recipes": [ + "allomancy:tin_ingot_from_deepslate_tin_ore" + ] + } +} \ No newline at end of file diff --git a/src/generated/resources/data/allomancy/advancements/recipes/misc/tin_ingot_from_deepslate_tin_ore_from_blasting.json b/src/generated/resources/data/allomancy/advancements/recipes/misc/tin_ingot_from_deepslate_tin_ore_from_blasting.json new file mode 100644 index 00000000..1f274c57 --- /dev/null +++ b/src/generated/resources/data/allomancy/advancements/recipes/misc/tin_ingot_from_deepslate_tin_ore_from_blasting.json @@ -0,0 +1,34 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_deepslate_tin_ore": { + "conditions": { + "items": [ + { + "items": [ + "allomancy:deepslate_tin_ore" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "allomancy:tin_ingot_from_deepslate_tin_ore_from_blasting" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_deepslate_tin_ore" + ] + ], + "rewards": { + "recipes": [ + "allomancy:tin_ingot_from_deepslate_tin_ore_from_blasting" + ] + } +} \ No newline at end of file diff --git a/src/generated/resources/data/allomancy/advancements/recipes/misc/tin_ingot_from_nuggets.json b/src/generated/resources/data/allomancy/advancements/recipes/misc/tin_ingot_from_nuggets.json index ca76d82e..dc5054d2 100644 --- a/src/generated/resources/data/allomancy/advancements/recipes/misc/tin_ingot_from_nuggets.json +++ b/src/generated/resources/data/allomancy/advancements/recipes/misc/tin_ingot_from_nuggets.json @@ -22,8 +22,8 @@ }, "requirements": [ [ - "has_tin_nugget", - "has_the_recipe" + "has_the_recipe", + "has_tin_nugget" ] ], "rewards": { diff --git a/src/generated/resources/data/allomancy/advancements/recipes/misc/tin_ingot.json b/src/generated/resources/data/allomancy/advancements/recipes/misc/tin_ingot_from_raw_tin.json similarity index 77% rename from src/generated/resources/data/allomancy/advancements/recipes/misc/tin_ingot.json rename to src/generated/resources/data/allomancy/advancements/recipes/misc/tin_ingot_from_raw_tin.json index 81ee2104..955659b2 100644 --- a/src/generated/resources/data/allomancy/advancements/recipes/misc/tin_ingot.json +++ b/src/generated/resources/data/allomancy/advancements/recipes/misc/tin_ingot_from_raw_tin.json @@ -15,20 +15,20 @@ }, "has_the_recipe": { "conditions": { - "recipe": "allomancy:tin_ingot" + "recipe": "allomancy:tin_ingot_from_raw_tin" }, "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ [ - "has_raw_tin", - "has_the_recipe" + "has_the_recipe", + "has_raw_tin" ] ], "rewards": { "recipes": [ - "allomancy:tin_ingot" + "allomancy:tin_ingot_from_raw_tin" ] } } \ No newline at end of file diff --git a/src/generated/resources/data/allomancy/advancements/recipes/misc/tin_ingot_from_blasting.json b/src/generated/resources/data/allomancy/advancements/recipes/misc/tin_ingot_from_raw_tin_from_blasting.json similarity index 74% rename from src/generated/resources/data/allomancy/advancements/recipes/misc/tin_ingot_from_blasting.json rename to src/generated/resources/data/allomancy/advancements/recipes/misc/tin_ingot_from_raw_tin_from_blasting.json index 33e4db5c..c5d5c0ce 100644 --- a/src/generated/resources/data/allomancy/advancements/recipes/misc/tin_ingot_from_blasting.json +++ b/src/generated/resources/data/allomancy/advancements/recipes/misc/tin_ingot_from_raw_tin_from_blasting.json @@ -15,20 +15,20 @@ }, "has_the_recipe": { "conditions": { - "recipe": "allomancy:tin_ingot_from_blasting" + "recipe": "allomancy:tin_ingot_from_raw_tin_from_blasting" }, "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ [ - "has_raw_tin", - "has_the_recipe" + "has_the_recipe", + "has_raw_tin" ] ], "rewards": { "recipes": [ - "allomancy:tin_ingot_from_blasting" + "allomancy:tin_ingot_from_raw_tin_from_blasting" ] } } \ No newline at end of file diff --git a/src/generated/resources/data/allomancy/advancements/recipes/misc/tin_ingot_from_tin_ore.json b/src/generated/resources/data/allomancy/advancements/recipes/misc/tin_ingot_from_tin_ore.json new file mode 100644 index 00000000..88c59879 --- /dev/null +++ b/src/generated/resources/data/allomancy/advancements/recipes/misc/tin_ingot_from_tin_ore.json @@ -0,0 +1,34 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_the_recipe": { + "conditions": { + "recipe": "allomancy:tin_ingot_from_tin_ore" + }, + "trigger": "minecraft:recipe_unlocked" + }, + "has_tin_ore": { + "conditions": { + "items": [ + { + "items": [ + "allomancy:tin_ore" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_tin_ore" + ] + ], + "rewards": { + "recipes": [ + "allomancy:tin_ingot_from_tin_ore" + ] + } +} \ No newline at end of file diff --git a/src/generated/resources/data/allomancy/advancements/recipes/misc/tin_ingot_from_tin_ore_from_blasting.json b/src/generated/resources/data/allomancy/advancements/recipes/misc/tin_ingot_from_tin_ore_from_blasting.json new file mode 100644 index 00000000..47bd7be3 --- /dev/null +++ b/src/generated/resources/data/allomancy/advancements/recipes/misc/tin_ingot_from_tin_ore_from_blasting.json @@ -0,0 +1,34 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_the_recipe": { + "conditions": { + "recipe": "allomancy:tin_ingot_from_tin_ore_from_blasting" + }, + "trigger": "minecraft:recipe_unlocked" + }, + "has_tin_ore": { + "conditions": { + "items": [ + { + "items": [ + "allomancy:tin_ore" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_tin_ore" + ] + ], + "rewards": { + "recipes": [ + "allomancy:tin_ingot_from_tin_ore_from_blasting" + ] + } +} \ No newline at end of file diff --git a/src/generated/resources/data/allomancy/advancements/recipes/misc/tin_nugget.json b/src/generated/resources/data/allomancy/advancements/recipes/misc/tin_nugget.json index 9e9aa9a0..6ab9e1cd 100644 --- a/src/generated/resources/data/allomancy/advancements/recipes/misc/tin_nugget.json +++ b/src/generated/resources/data/allomancy/advancements/recipes/misc/tin_nugget.json @@ -22,8 +22,8 @@ }, "requirements": [ [ - "has_tin_ingot", - "has_the_recipe" + "has_the_recipe", + "has_tin_ingot" ] ], "rewards": { diff --git a/src/generated/resources/data/allomancy/advancements/recipes/misc/tin_pattern.json b/src/generated/resources/data/allomancy/advancements/recipes/misc/tin_pattern.json index 28559353..0f726725 100644 --- a/src/generated/resources/data/allomancy/advancements/recipes/misc/tin_pattern.json +++ b/src/generated/resources/data/allomancy/advancements/recipes/misc/tin_pattern.json @@ -22,8 +22,8 @@ }, "requirements": [ [ - "has_tin_flakes", - "has_the_recipe" + "has_the_recipe", + "has_tin_flakes" ] ], "rewards": { diff --git a/src/generated/resources/data/allomancy/advancements/recipes/misc/zinc_flakes.json b/src/generated/resources/data/allomancy/advancements/recipes/misc/zinc_flakes.json index 8504a343..441e76a5 100644 --- a/src/generated/resources/data/allomancy/advancements/recipes/misc/zinc_flakes.json +++ b/src/generated/resources/data/allomancy/advancements/recipes/misc/zinc_flakes.json @@ -22,8 +22,8 @@ }, "requirements": [ [ - "has_allomantic_grinder", - "has_the_recipe" + "has_the_recipe", + "has_allomantic_grinder" ] ], "rewards": { diff --git a/src/generated/resources/data/allomancy/advancements/recipes/misc/zinc_ingot_from_block.json b/src/generated/resources/data/allomancy/advancements/recipes/misc/zinc_ingot_from_block.json index 07ff2042..47b206e8 100644 --- a/src/generated/resources/data/allomancy/advancements/recipes/misc/zinc_ingot_from_block.json +++ b/src/generated/resources/data/allomancy/advancements/recipes/misc/zinc_ingot_from_block.json @@ -22,8 +22,8 @@ }, "requirements": [ [ - "has_zinc_block", - "has_the_recipe" + "has_the_recipe", + "has_zinc_block" ] ], "rewards": { diff --git a/src/generated/resources/data/allomancy/advancements/recipes/misc/zinc_ingot_from_deepslate_zinc_ore.json b/src/generated/resources/data/allomancy/advancements/recipes/misc/zinc_ingot_from_deepslate_zinc_ore.json new file mode 100644 index 00000000..251f9dc1 --- /dev/null +++ b/src/generated/resources/data/allomancy/advancements/recipes/misc/zinc_ingot_from_deepslate_zinc_ore.json @@ -0,0 +1,34 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_deepslate_zinc_ore": { + "conditions": { + "items": [ + { + "items": [ + "allomancy:deepslate_zinc_ore" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "allomancy:zinc_ingot_from_deepslate_zinc_ore" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_deepslate_zinc_ore" + ] + ], + "rewards": { + "recipes": [ + "allomancy:zinc_ingot_from_deepslate_zinc_ore" + ] + } +} \ No newline at end of file diff --git a/src/generated/resources/data/allomancy/advancements/recipes/misc/zinc_ingot_from_deepslate_zinc_ore_from_blasting.json b/src/generated/resources/data/allomancy/advancements/recipes/misc/zinc_ingot_from_deepslate_zinc_ore_from_blasting.json new file mode 100644 index 00000000..cff123f4 --- /dev/null +++ b/src/generated/resources/data/allomancy/advancements/recipes/misc/zinc_ingot_from_deepslate_zinc_ore_from_blasting.json @@ -0,0 +1,34 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_deepslate_zinc_ore": { + "conditions": { + "items": [ + { + "items": [ + "allomancy:deepslate_zinc_ore" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "allomancy:zinc_ingot_from_deepslate_zinc_ore_from_blasting" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_deepslate_zinc_ore" + ] + ], + "rewards": { + "recipes": [ + "allomancy:zinc_ingot_from_deepslate_zinc_ore_from_blasting" + ] + } +} \ No newline at end of file diff --git a/src/generated/resources/data/allomancy/advancements/recipes/misc/zinc_ingot_from_nuggets.json b/src/generated/resources/data/allomancy/advancements/recipes/misc/zinc_ingot_from_nuggets.json index fa6d9e6b..2814df26 100644 --- a/src/generated/resources/data/allomancy/advancements/recipes/misc/zinc_ingot_from_nuggets.json +++ b/src/generated/resources/data/allomancy/advancements/recipes/misc/zinc_ingot_from_nuggets.json @@ -22,8 +22,8 @@ }, "requirements": [ [ - "has_zinc_nugget", - "has_the_recipe" + "has_the_recipe", + "has_zinc_nugget" ] ], "rewards": { diff --git a/src/generated/resources/data/allomancy/advancements/recipes/misc/zinc_ingot.json b/src/generated/resources/data/allomancy/advancements/recipes/misc/zinc_ingot_from_raw_zinc.json similarity index 77% rename from src/generated/resources/data/allomancy/advancements/recipes/misc/zinc_ingot.json rename to src/generated/resources/data/allomancy/advancements/recipes/misc/zinc_ingot_from_raw_zinc.json index 20c9c108..33ee188d 100644 --- a/src/generated/resources/data/allomancy/advancements/recipes/misc/zinc_ingot.json +++ b/src/generated/resources/data/allomancy/advancements/recipes/misc/zinc_ingot_from_raw_zinc.json @@ -15,20 +15,20 @@ }, "has_the_recipe": { "conditions": { - "recipe": "allomancy:zinc_ingot" + "recipe": "allomancy:zinc_ingot_from_raw_zinc" }, "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ [ - "has_raw_zinc", - "has_the_recipe" + "has_the_recipe", + "has_raw_zinc" ] ], "rewards": { "recipes": [ - "allomancy:zinc_ingot" + "allomancy:zinc_ingot_from_raw_zinc" ] } } \ No newline at end of file diff --git a/src/generated/resources/data/allomancy/advancements/recipes/misc/zinc_ingot_from_blasting.json b/src/generated/resources/data/allomancy/advancements/recipes/misc/zinc_ingot_from_raw_zinc_from_blasting.json similarity index 73% rename from src/generated/resources/data/allomancy/advancements/recipes/misc/zinc_ingot_from_blasting.json rename to src/generated/resources/data/allomancy/advancements/recipes/misc/zinc_ingot_from_raw_zinc_from_blasting.json index 0e33c47b..6150095f 100644 --- a/src/generated/resources/data/allomancy/advancements/recipes/misc/zinc_ingot_from_blasting.json +++ b/src/generated/resources/data/allomancy/advancements/recipes/misc/zinc_ingot_from_raw_zinc_from_blasting.json @@ -15,20 +15,20 @@ }, "has_the_recipe": { "conditions": { - "recipe": "allomancy:zinc_ingot_from_blasting" + "recipe": "allomancy:zinc_ingot_from_raw_zinc_from_blasting" }, "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ [ - "has_raw_zinc", - "has_the_recipe" + "has_the_recipe", + "has_raw_zinc" ] ], "rewards": { "recipes": [ - "allomancy:zinc_ingot_from_blasting" + "allomancy:zinc_ingot_from_raw_zinc_from_blasting" ] } } \ No newline at end of file diff --git a/src/generated/resources/data/allomancy/advancements/recipes/misc/zinc_ingot_from_zinc_ore.json b/src/generated/resources/data/allomancy/advancements/recipes/misc/zinc_ingot_from_zinc_ore.json new file mode 100644 index 00000000..abad90cc --- /dev/null +++ b/src/generated/resources/data/allomancy/advancements/recipes/misc/zinc_ingot_from_zinc_ore.json @@ -0,0 +1,34 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_the_recipe": { + "conditions": { + "recipe": "allomancy:zinc_ingot_from_zinc_ore" + }, + "trigger": "minecraft:recipe_unlocked" + }, + "has_zinc_ore": { + "conditions": { + "items": [ + { + "items": [ + "allomancy:zinc_ore" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_zinc_ore" + ] + ], + "rewards": { + "recipes": [ + "allomancy:zinc_ingot_from_zinc_ore" + ] + } +} \ No newline at end of file diff --git a/src/generated/resources/data/allomancy/advancements/recipes/misc/zinc_ingot_from_zinc_ore_from_blasting.json b/src/generated/resources/data/allomancy/advancements/recipes/misc/zinc_ingot_from_zinc_ore_from_blasting.json new file mode 100644 index 00000000..5e0951a3 --- /dev/null +++ b/src/generated/resources/data/allomancy/advancements/recipes/misc/zinc_ingot_from_zinc_ore_from_blasting.json @@ -0,0 +1,34 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_the_recipe": { + "conditions": { + "recipe": "allomancy:zinc_ingot_from_zinc_ore_from_blasting" + }, + "trigger": "minecraft:recipe_unlocked" + }, + "has_zinc_ore": { + "conditions": { + "items": [ + { + "items": [ + "allomancy:zinc_ore" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_zinc_ore" + ] + ], + "rewards": { + "recipes": [ + "allomancy:zinc_ingot_from_zinc_ore_from_blasting" + ] + } +} \ No newline at end of file diff --git a/src/generated/resources/data/allomancy/advancements/recipes/misc/zinc_nugget.json b/src/generated/resources/data/allomancy/advancements/recipes/misc/zinc_nugget.json index 6b5faa13..1080f907 100644 --- a/src/generated/resources/data/allomancy/advancements/recipes/misc/zinc_nugget.json +++ b/src/generated/resources/data/allomancy/advancements/recipes/misc/zinc_nugget.json @@ -22,8 +22,8 @@ }, "requirements": [ [ - "has_zinc_ingot", - "has_the_recipe" + "has_the_recipe", + "has_zinc_ingot" ] ], "rewards": { diff --git a/src/generated/resources/data/allomancy/advancements/recipes/misc/zinc_pattern.json b/src/generated/resources/data/allomancy/advancements/recipes/misc/zinc_pattern.json index 6ebcad54..c331b709 100644 --- a/src/generated/resources/data/allomancy/advancements/recipes/misc/zinc_pattern.json +++ b/src/generated/resources/data/allomancy/advancements/recipes/misc/zinc_pattern.json @@ -22,8 +22,8 @@ }, "requirements": [ [ - "has_zinc_flakes", - "has_the_recipe" + "has_the_recipe", + "has_zinc_flakes" ] ], "rewards": { diff --git a/src/generated/resources/data/allomancy/advancements/recipes/redstone/iron_button.json b/src/generated/resources/data/allomancy/advancements/recipes/redstone/iron_button.json index ffd43c60..4fc4a429 100644 --- a/src/generated/resources/data/allomancy/advancements/recipes/redstone/iron_button.json +++ b/src/generated/resources/data/allomancy/advancements/recipes/redstone/iron_button.json @@ -22,8 +22,8 @@ }, "requirements": [ [ - "has_iron_ingot", - "has_the_recipe" + "has_the_recipe", + "has_iron_ingot" ] ], "rewards": { diff --git a/src/generated/resources/data/allomancy/advancements/recipes/redstone/iron_lever.json b/src/generated/resources/data/allomancy/advancements/recipes/redstone/iron_lever.json index c7a9a241..06495734 100644 --- a/src/generated/resources/data/allomancy/advancements/recipes/redstone/iron_lever.json +++ b/src/generated/resources/data/allomancy/advancements/recipes/redstone/iron_lever.json @@ -22,8 +22,8 @@ }, "requirements": [ [ - "has_iron_ingot", - "has_the_recipe" + "has_the_recipe", + "has_iron_ingot" ] ], "rewards": { diff --git a/src/generated/resources/data/allomancy/loot_tables/blocks/aluminum_block.json b/src/generated/resources/data/allomancy/loot_tables/blocks/aluminum_block.json index f4efa9ae..7c384930 100644 --- a/src/generated/resources/data/allomancy/loot_tables/blocks/aluminum_block.json +++ b/src/generated/resources/data/allomancy/loot_tables/blocks/aluminum_block.json @@ -12,5 +12,6 @@ "name": "aluminum_block", "rolls": 1.0 } - ] + ], + "random_sequence": "allomancy:blocks/aluminum_block" } \ No newline at end of file diff --git a/src/generated/resources/data/allomancy/loot_tables/blocks/aluminum_ore.json b/src/generated/resources/data/allomancy/loot_tables/blocks/aluminum_ore.json index 1933caf6..4d3f64cd 100644 --- a/src/generated/resources/data/allomancy/loot_tables/blocks/aluminum_ore.json +++ b/src/generated/resources/data/allomancy/loot_tables/blocks/aluminum_ore.json @@ -58,5 +58,6 @@ "name": "aluminum_ore", "rolls": 1.0 } - ] + ], + "random_sequence": "allomancy:blocks/aluminum_ore" } \ No newline at end of file diff --git a/src/generated/resources/data/allomancy/loot_tables/blocks/bendalloy_block.json b/src/generated/resources/data/allomancy/loot_tables/blocks/bendalloy_block.json index e49edda0..b73fc680 100644 --- a/src/generated/resources/data/allomancy/loot_tables/blocks/bendalloy_block.json +++ b/src/generated/resources/data/allomancy/loot_tables/blocks/bendalloy_block.json @@ -12,5 +12,6 @@ "name": "bendalloy_block", "rolls": 1.0 } - ] + ], + "random_sequence": "allomancy:blocks/bendalloy_block" } \ No newline at end of file diff --git a/src/generated/resources/data/allomancy/loot_tables/blocks/brass_block.json b/src/generated/resources/data/allomancy/loot_tables/blocks/brass_block.json index 8188f73a..57bf8e7a 100644 --- a/src/generated/resources/data/allomancy/loot_tables/blocks/brass_block.json +++ b/src/generated/resources/data/allomancy/loot_tables/blocks/brass_block.json @@ -12,5 +12,6 @@ "name": "brass_block", "rolls": 1.0 } - ] + ], + "random_sequence": "allomancy:blocks/brass_block" } \ No newline at end of file diff --git a/src/generated/resources/data/allomancy/loot_tables/blocks/bronze_block.json b/src/generated/resources/data/allomancy/loot_tables/blocks/bronze_block.json index ee18304b..b2de1074 100644 --- a/src/generated/resources/data/allomancy/loot_tables/blocks/bronze_block.json +++ b/src/generated/resources/data/allomancy/loot_tables/blocks/bronze_block.json @@ -12,5 +12,6 @@ "name": "bronze_block", "rolls": 1.0 } - ] + ], + "random_sequence": "allomancy:blocks/bronze_block" } \ No newline at end of file diff --git a/src/generated/resources/data/allomancy/loot_tables/blocks/cadmium_block.json b/src/generated/resources/data/allomancy/loot_tables/blocks/cadmium_block.json index 375b40b4..12621b3f 100644 --- a/src/generated/resources/data/allomancy/loot_tables/blocks/cadmium_block.json +++ b/src/generated/resources/data/allomancy/loot_tables/blocks/cadmium_block.json @@ -12,5 +12,6 @@ "name": "cadmium_block", "rolls": 1.0 } - ] + ], + "random_sequence": "allomancy:blocks/cadmium_block" } \ No newline at end of file diff --git a/src/generated/resources/data/allomancy/loot_tables/blocks/cadmium_ore.json b/src/generated/resources/data/allomancy/loot_tables/blocks/cadmium_ore.json index 1308a38a..1e9c083c 100644 --- a/src/generated/resources/data/allomancy/loot_tables/blocks/cadmium_ore.json +++ b/src/generated/resources/data/allomancy/loot_tables/blocks/cadmium_ore.json @@ -58,5 +58,6 @@ "name": "cadmium_ore", "rolls": 1.0 } - ] + ], + "random_sequence": "allomancy:blocks/cadmium_ore" } \ No newline at end of file diff --git a/src/generated/resources/data/allomancy/loot_tables/blocks/chromium_block.json b/src/generated/resources/data/allomancy/loot_tables/blocks/chromium_block.json index d504b186..fe1c7cb6 100644 --- a/src/generated/resources/data/allomancy/loot_tables/blocks/chromium_block.json +++ b/src/generated/resources/data/allomancy/loot_tables/blocks/chromium_block.json @@ -12,5 +12,6 @@ "name": "chromium_block", "rolls": 1.0 } - ] + ], + "random_sequence": "allomancy:blocks/chromium_block" } \ No newline at end of file diff --git a/src/generated/resources/data/allomancy/loot_tables/blocks/chromium_ore.json b/src/generated/resources/data/allomancy/loot_tables/blocks/chromium_ore.json index 8d5784dd..9068aa83 100644 --- a/src/generated/resources/data/allomancy/loot_tables/blocks/chromium_ore.json +++ b/src/generated/resources/data/allomancy/loot_tables/blocks/chromium_ore.json @@ -58,5 +58,6 @@ "name": "chromium_ore", "rolls": 1.0 } - ] + ], + "random_sequence": "allomancy:blocks/chromium_ore" } \ No newline at end of file diff --git a/src/generated/resources/data/allomancy/loot_tables/blocks/deepslate_aluminum_ore.json b/src/generated/resources/data/allomancy/loot_tables/blocks/deepslate_aluminum_ore.json index bda870ff..69601d51 100644 --- a/src/generated/resources/data/allomancy/loot_tables/blocks/deepslate_aluminum_ore.json +++ b/src/generated/resources/data/allomancy/loot_tables/blocks/deepslate_aluminum_ore.json @@ -58,5 +58,6 @@ "name": "deepslate_aluminum_ore", "rolls": 1.0 } - ] + ], + "random_sequence": "allomancy:blocks/deepslate_aluminum_ore" } \ No newline at end of file diff --git a/src/generated/resources/data/allomancy/loot_tables/blocks/deepslate_cadmium_ore.json b/src/generated/resources/data/allomancy/loot_tables/blocks/deepslate_cadmium_ore.json index 197f0275..f42e44a8 100644 --- a/src/generated/resources/data/allomancy/loot_tables/blocks/deepslate_cadmium_ore.json +++ b/src/generated/resources/data/allomancy/loot_tables/blocks/deepslate_cadmium_ore.json @@ -58,5 +58,6 @@ "name": "deepslate_cadmium_ore", "rolls": 1.0 } - ] + ], + "random_sequence": "allomancy:blocks/deepslate_cadmium_ore" } \ No newline at end of file diff --git a/src/generated/resources/data/allomancy/loot_tables/blocks/deepslate_chromium_ore.json b/src/generated/resources/data/allomancy/loot_tables/blocks/deepslate_chromium_ore.json index 1ee60eb3..620312d9 100644 --- a/src/generated/resources/data/allomancy/loot_tables/blocks/deepslate_chromium_ore.json +++ b/src/generated/resources/data/allomancy/loot_tables/blocks/deepslate_chromium_ore.json @@ -58,5 +58,6 @@ "name": "deepslate_chromium_ore", "rolls": 1.0 } - ] + ], + "random_sequence": "allomancy:blocks/deepslate_chromium_ore" } \ No newline at end of file diff --git a/src/generated/resources/data/allomancy/loot_tables/blocks/deepslate_lead_ore.json b/src/generated/resources/data/allomancy/loot_tables/blocks/deepslate_lead_ore.json index 42a4b5a5..d9825f00 100644 --- a/src/generated/resources/data/allomancy/loot_tables/blocks/deepslate_lead_ore.json +++ b/src/generated/resources/data/allomancy/loot_tables/blocks/deepslate_lead_ore.json @@ -58,5 +58,6 @@ "name": "deepslate_lead_ore", "rolls": 1.0 } - ] + ], + "random_sequence": "allomancy:blocks/deepslate_lead_ore" } \ No newline at end of file diff --git a/src/generated/resources/data/allomancy/loot_tables/blocks/deepslate_silver_ore.json b/src/generated/resources/data/allomancy/loot_tables/blocks/deepslate_silver_ore.json index aacd7b34..f2c6cee3 100644 --- a/src/generated/resources/data/allomancy/loot_tables/blocks/deepslate_silver_ore.json +++ b/src/generated/resources/data/allomancy/loot_tables/blocks/deepslate_silver_ore.json @@ -58,5 +58,6 @@ "name": "deepslate_silver_ore", "rolls": 1.0 } - ] + ], + "random_sequence": "allomancy:blocks/deepslate_silver_ore" } \ No newline at end of file diff --git a/src/generated/resources/data/allomancy/loot_tables/blocks/deepslate_tin_ore.json b/src/generated/resources/data/allomancy/loot_tables/blocks/deepslate_tin_ore.json index 844babb2..6b91538e 100644 --- a/src/generated/resources/data/allomancy/loot_tables/blocks/deepslate_tin_ore.json +++ b/src/generated/resources/data/allomancy/loot_tables/blocks/deepslate_tin_ore.json @@ -58,5 +58,6 @@ "name": "deepslate_tin_ore", "rolls": 1.0 } - ] + ], + "random_sequence": "allomancy:blocks/deepslate_tin_ore" } \ No newline at end of file diff --git a/src/generated/resources/data/allomancy/loot_tables/blocks/deepslate_zinc_ore.json b/src/generated/resources/data/allomancy/loot_tables/blocks/deepslate_zinc_ore.json index 318f0176..6edab031 100644 --- a/src/generated/resources/data/allomancy/loot_tables/blocks/deepslate_zinc_ore.json +++ b/src/generated/resources/data/allomancy/loot_tables/blocks/deepslate_zinc_ore.json @@ -58,5 +58,6 @@ "name": "deepslate_zinc_ore", "rolls": 1.0 } - ] + ], + "random_sequence": "allomancy:blocks/deepslate_zinc_ore" } \ No newline at end of file diff --git a/src/generated/resources/data/allomancy/loot_tables/blocks/duralumin_block.json b/src/generated/resources/data/allomancy/loot_tables/blocks/duralumin_block.json index 86d88be2..666ba72f 100644 --- a/src/generated/resources/data/allomancy/loot_tables/blocks/duralumin_block.json +++ b/src/generated/resources/data/allomancy/loot_tables/blocks/duralumin_block.json @@ -12,5 +12,6 @@ "name": "duralumin_block", "rolls": 1.0 } - ] + ], + "random_sequence": "allomancy:blocks/duralumin_block" } \ No newline at end of file diff --git a/src/generated/resources/data/allomancy/loot_tables/blocks/electrum_block.json b/src/generated/resources/data/allomancy/loot_tables/blocks/electrum_block.json index 5961b388..6b951b43 100644 --- a/src/generated/resources/data/allomancy/loot_tables/blocks/electrum_block.json +++ b/src/generated/resources/data/allomancy/loot_tables/blocks/electrum_block.json @@ -12,5 +12,6 @@ "name": "electrum_block", "rolls": 1.0 } - ] + ], + "random_sequence": "allomancy:blocks/electrum_block" } \ No newline at end of file diff --git a/src/generated/resources/data/allomancy/loot_tables/blocks/iron_button.json b/src/generated/resources/data/allomancy/loot_tables/blocks/iron_button.json index 99b0813f..d5658a00 100644 --- a/src/generated/resources/data/allomancy/loot_tables/blocks/iron_button.json +++ b/src/generated/resources/data/allomancy/loot_tables/blocks/iron_button.json @@ -12,5 +12,6 @@ "name": "iron_button", "rolls": 1.0 } - ] + ], + "random_sequence": "allomancy:blocks/iron_button" } \ No newline at end of file diff --git a/src/generated/resources/data/allomancy/loot_tables/blocks/iron_lever.json b/src/generated/resources/data/allomancy/loot_tables/blocks/iron_lever.json index 69e24335..509d6b3b 100644 --- a/src/generated/resources/data/allomancy/loot_tables/blocks/iron_lever.json +++ b/src/generated/resources/data/allomancy/loot_tables/blocks/iron_lever.json @@ -12,5 +12,6 @@ "name": "iron_lever", "rolls": 1.0 } - ] + ], + "random_sequence": "allomancy:blocks/iron_lever" } \ No newline at end of file diff --git a/src/generated/resources/data/allomancy/loot_tables/blocks/lead_block.json b/src/generated/resources/data/allomancy/loot_tables/blocks/lead_block.json index f9a637de..9a2d2445 100644 --- a/src/generated/resources/data/allomancy/loot_tables/blocks/lead_block.json +++ b/src/generated/resources/data/allomancy/loot_tables/blocks/lead_block.json @@ -12,5 +12,6 @@ "name": "lead_block", "rolls": 1.0 } - ] + ], + "random_sequence": "allomancy:blocks/lead_block" } \ No newline at end of file diff --git a/src/generated/resources/data/allomancy/loot_tables/blocks/lead_ore.json b/src/generated/resources/data/allomancy/loot_tables/blocks/lead_ore.json index 8c69fde9..5fc95080 100644 --- a/src/generated/resources/data/allomancy/loot_tables/blocks/lead_ore.json +++ b/src/generated/resources/data/allomancy/loot_tables/blocks/lead_ore.json @@ -58,5 +58,6 @@ "name": "lead_ore", "rolls": 1.0 } - ] + ], + "random_sequence": "allomancy:blocks/lead_ore" } \ No newline at end of file diff --git a/src/generated/resources/data/allomancy/loot_tables/blocks/nicrosil_block.json b/src/generated/resources/data/allomancy/loot_tables/blocks/nicrosil_block.json index 8bcce53a..10e9c7cc 100644 --- a/src/generated/resources/data/allomancy/loot_tables/blocks/nicrosil_block.json +++ b/src/generated/resources/data/allomancy/loot_tables/blocks/nicrosil_block.json @@ -12,5 +12,6 @@ "name": "nicrosil_block", "rolls": 1.0 } - ] + ], + "random_sequence": "allomancy:blocks/nicrosil_block" } \ No newline at end of file diff --git a/src/generated/resources/data/allomancy/loot_tables/blocks/pewter_block.json b/src/generated/resources/data/allomancy/loot_tables/blocks/pewter_block.json index a7a48e8b..9aab69d8 100644 --- a/src/generated/resources/data/allomancy/loot_tables/blocks/pewter_block.json +++ b/src/generated/resources/data/allomancy/loot_tables/blocks/pewter_block.json @@ -12,5 +12,6 @@ "name": "pewter_block", "rolls": 1.0 } - ] + ], + "random_sequence": "allomancy:blocks/pewter_block" } \ No newline at end of file diff --git a/src/generated/resources/data/allomancy/loot_tables/blocks/raw_aluminum_block.json b/src/generated/resources/data/allomancy/loot_tables/blocks/raw_aluminum_block.json index 38db292d..27b1eb8c 100644 --- a/src/generated/resources/data/allomancy/loot_tables/blocks/raw_aluminum_block.json +++ b/src/generated/resources/data/allomancy/loot_tables/blocks/raw_aluminum_block.json @@ -12,5 +12,6 @@ "name": "raw_aluminum_block", "rolls": 1.0 } - ] + ], + "random_sequence": "allomancy:blocks/raw_aluminum_block" } \ No newline at end of file diff --git a/src/generated/resources/data/allomancy/loot_tables/blocks/raw_cadmium_block.json b/src/generated/resources/data/allomancy/loot_tables/blocks/raw_cadmium_block.json index b25078ae..ba72e33c 100644 --- a/src/generated/resources/data/allomancy/loot_tables/blocks/raw_cadmium_block.json +++ b/src/generated/resources/data/allomancy/loot_tables/blocks/raw_cadmium_block.json @@ -12,5 +12,6 @@ "name": "raw_cadmium_block", "rolls": 1.0 } - ] + ], + "random_sequence": "allomancy:blocks/raw_cadmium_block" } \ No newline at end of file diff --git a/src/generated/resources/data/allomancy/loot_tables/blocks/raw_chromium_block.json b/src/generated/resources/data/allomancy/loot_tables/blocks/raw_chromium_block.json index 093b6749..039312e2 100644 --- a/src/generated/resources/data/allomancy/loot_tables/blocks/raw_chromium_block.json +++ b/src/generated/resources/data/allomancy/loot_tables/blocks/raw_chromium_block.json @@ -12,5 +12,6 @@ "name": "raw_chromium_block", "rolls": 1.0 } - ] + ], + "random_sequence": "allomancy:blocks/raw_chromium_block" } \ No newline at end of file diff --git a/src/generated/resources/data/allomancy/loot_tables/blocks/raw_lead_block.json b/src/generated/resources/data/allomancy/loot_tables/blocks/raw_lead_block.json index 6551da5d..76d618cc 100644 --- a/src/generated/resources/data/allomancy/loot_tables/blocks/raw_lead_block.json +++ b/src/generated/resources/data/allomancy/loot_tables/blocks/raw_lead_block.json @@ -12,5 +12,6 @@ "name": "raw_lead_block", "rolls": 1.0 } - ] + ], + "random_sequence": "allomancy:blocks/raw_lead_block" } \ No newline at end of file diff --git a/src/generated/resources/data/allomancy/loot_tables/blocks/raw_silver_block.json b/src/generated/resources/data/allomancy/loot_tables/blocks/raw_silver_block.json index 54051512..180fb7b0 100644 --- a/src/generated/resources/data/allomancy/loot_tables/blocks/raw_silver_block.json +++ b/src/generated/resources/data/allomancy/loot_tables/blocks/raw_silver_block.json @@ -12,5 +12,6 @@ "name": "raw_silver_block", "rolls": 1.0 } - ] + ], + "random_sequence": "allomancy:blocks/raw_silver_block" } \ No newline at end of file diff --git a/src/generated/resources/data/allomancy/loot_tables/blocks/raw_tin_block.json b/src/generated/resources/data/allomancy/loot_tables/blocks/raw_tin_block.json index ac23648e..6ae4d350 100644 --- a/src/generated/resources/data/allomancy/loot_tables/blocks/raw_tin_block.json +++ b/src/generated/resources/data/allomancy/loot_tables/blocks/raw_tin_block.json @@ -12,5 +12,6 @@ "name": "raw_tin_block", "rolls": 1.0 } - ] + ], + "random_sequence": "allomancy:blocks/raw_tin_block" } \ No newline at end of file diff --git a/src/generated/resources/data/allomancy/loot_tables/blocks/raw_zinc_block.json b/src/generated/resources/data/allomancy/loot_tables/blocks/raw_zinc_block.json index e938b4aa..bd76a6d4 100644 --- a/src/generated/resources/data/allomancy/loot_tables/blocks/raw_zinc_block.json +++ b/src/generated/resources/data/allomancy/loot_tables/blocks/raw_zinc_block.json @@ -12,5 +12,6 @@ "name": "raw_zinc_block", "rolls": 1.0 } - ] + ], + "random_sequence": "allomancy:blocks/raw_zinc_block" } \ No newline at end of file diff --git a/src/generated/resources/data/allomancy/loot_tables/blocks/silver_block.json b/src/generated/resources/data/allomancy/loot_tables/blocks/silver_block.json index abdd1a32..1c10cb3b 100644 --- a/src/generated/resources/data/allomancy/loot_tables/blocks/silver_block.json +++ b/src/generated/resources/data/allomancy/loot_tables/blocks/silver_block.json @@ -12,5 +12,6 @@ "name": "silver_block", "rolls": 1.0 } - ] + ], + "random_sequence": "allomancy:blocks/silver_block" } \ No newline at end of file diff --git a/src/generated/resources/data/allomancy/loot_tables/blocks/silver_ore.json b/src/generated/resources/data/allomancy/loot_tables/blocks/silver_ore.json index d5d6261d..fc4c748a 100644 --- a/src/generated/resources/data/allomancy/loot_tables/blocks/silver_ore.json +++ b/src/generated/resources/data/allomancy/loot_tables/blocks/silver_ore.json @@ -58,5 +58,6 @@ "name": "silver_ore", "rolls": 1.0 } - ] + ], + "random_sequence": "allomancy:blocks/silver_ore" } \ No newline at end of file diff --git a/src/generated/resources/data/allomancy/loot_tables/blocks/steel_block.json b/src/generated/resources/data/allomancy/loot_tables/blocks/steel_block.json index e9f99412..99538387 100644 --- a/src/generated/resources/data/allomancy/loot_tables/blocks/steel_block.json +++ b/src/generated/resources/data/allomancy/loot_tables/blocks/steel_block.json @@ -12,5 +12,6 @@ "name": "steel_block", "rolls": 1.0 } - ] + ], + "random_sequence": "allomancy:blocks/steel_block" } \ No newline at end of file diff --git a/src/generated/resources/data/allomancy/loot_tables/blocks/tin_block.json b/src/generated/resources/data/allomancy/loot_tables/blocks/tin_block.json index 03efa8b1..400b8487 100644 --- a/src/generated/resources/data/allomancy/loot_tables/blocks/tin_block.json +++ b/src/generated/resources/data/allomancy/loot_tables/blocks/tin_block.json @@ -12,5 +12,6 @@ "name": "tin_block", "rolls": 1.0 } - ] + ], + "random_sequence": "allomancy:blocks/tin_block" } \ No newline at end of file diff --git a/src/generated/resources/data/allomancy/loot_tables/blocks/tin_ore.json b/src/generated/resources/data/allomancy/loot_tables/blocks/tin_ore.json index 2c0d9355..70f122b1 100644 --- a/src/generated/resources/data/allomancy/loot_tables/blocks/tin_ore.json +++ b/src/generated/resources/data/allomancy/loot_tables/blocks/tin_ore.json @@ -58,5 +58,6 @@ "name": "tin_ore", "rolls": 1.0 } - ] + ], + "random_sequence": "allomancy:blocks/tin_ore" } \ No newline at end of file diff --git a/src/generated/resources/data/allomancy/loot_tables/blocks/zinc_block.json b/src/generated/resources/data/allomancy/loot_tables/blocks/zinc_block.json index 62720d33..6a31fe97 100644 --- a/src/generated/resources/data/allomancy/loot_tables/blocks/zinc_block.json +++ b/src/generated/resources/data/allomancy/loot_tables/blocks/zinc_block.json @@ -12,5 +12,6 @@ "name": "zinc_block", "rolls": 1.0 } - ] + ], + "random_sequence": "allomancy:blocks/zinc_block" } \ No newline at end of file diff --git a/src/generated/resources/data/allomancy/loot_tables/blocks/zinc_ore.json b/src/generated/resources/data/allomancy/loot_tables/blocks/zinc_ore.json index 49286f05..186553f4 100644 --- a/src/generated/resources/data/allomancy/loot_tables/blocks/zinc_ore.json +++ b/src/generated/resources/data/allomancy/loot_tables/blocks/zinc_ore.json @@ -58,5 +58,6 @@ "name": "zinc_ore", "rolls": 1.0 } - ] + ], + "random_sequence": "allomancy:blocks/zinc_ore" } \ No newline at end of file diff --git a/src/generated/resources/data/allomancy/loot_tables/inject/lerasium.json b/src/generated/resources/data/allomancy/loot_tables/inject/lerasium.json index 6ba41673..3210a772 100644 --- a/src/generated/resources/data/allomancy/loot_tables/inject/lerasium.json +++ b/src/generated/resources/data/allomancy/loot_tables/inject/lerasium.json @@ -17,5 +17,6 @@ "name": "main", "rolls": 1.0 } - ] + ], + "random_sequence": "allomancy:inject/lerasium" } \ No newline at end of file diff --git a/src/generated/resources/data/allomancy/loot_tables/inject/obsidian_dagger.json b/src/generated/resources/data/allomancy/loot_tables/inject/obsidian_dagger.json index e6c70642..224cc69e 100644 --- a/src/generated/resources/data/allomancy/loot_tables/inject/obsidian_dagger.json +++ b/src/generated/resources/data/allomancy/loot_tables/inject/obsidian_dagger.json @@ -22,5 +22,6 @@ "name": "main", "rolls": 1.0 } - ] + ], + "random_sequence": "allomancy:inject/obsidian_dagger" } \ No newline at end of file diff --git a/src/generated/resources/data/allomancy/recipes/allomantic_grinder.json b/src/generated/resources/data/allomancy/recipes/allomantic_grinder.json index f72b613f..2ae003b8 100644 --- a/src/generated/resources/data/allomancy/recipes/allomantic_grinder.json +++ b/src/generated/resources/data/allomancy/recipes/allomantic_grinder.json @@ -16,6 +16,5 @@ ], "result": { "item": "allomancy:allomantic_grinder" - }, - "show_notification": true + } } \ No newline at end of file diff --git a/src/generated/resources/data/allomancy/recipes/aluminum_ingot_from_aluminum_ore.json b/src/generated/resources/data/allomancy/recipes/aluminum_ingot_from_aluminum_ore.json new file mode 100644 index 00000000..8bddb1e5 --- /dev/null +++ b/src/generated/resources/data/allomancy/recipes/aluminum_ingot_from_aluminum_ore.json @@ -0,0 +1,10 @@ +{ + "type": "minecraft:smelting", + "category": "misc", + "cookingtime": 200, + "experience": 0.6, + "ingredient": { + "item": "allomancy:aluminum_ore" + }, + "result": "allomancy:aluminum_ingot" +} \ No newline at end of file diff --git a/src/generated/resources/data/allomancy/recipes/aluminum_ingot_from_aluminum_ore_from_blasting.json b/src/generated/resources/data/allomancy/recipes/aluminum_ingot_from_aluminum_ore_from_blasting.json new file mode 100644 index 00000000..687f613e --- /dev/null +++ b/src/generated/resources/data/allomancy/recipes/aluminum_ingot_from_aluminum_ore_from_blasting.json @@ -0,0 +1,10 @@ +{ + "type": "minecraft:blasting", + "category": "misc", + "cookingtime": 100, + "experience": 0.6, + "ingredient": { + "item": "allomancy:aluminum_ore" + }, + "result": "allomancy:aluminum_ingot" +} \ No newline at end of file diff --git a/src/generated/resources/data/allomancy/recipes/aluminum_ingot_from_deepslate_aluminum_ore.json b/src/generated/resources/data/allomancy/recipes/aluminum_ingot_from_deepslate_aluminum_ore.json new file mode 100644 index 00000000..b0debf5c --- /dev/null +++ b/src/generated/resources/data/allomancy/recipes/aluminum_ingot_from_deepslate_aluminum_ore.json @@ -0,0 +1,10 @@ +{ + "type": "minecraft:smelting", + "category": "misc", + "cookingtime": 200, + "experience": 0.6, + "ingredient": { + "item": "allomancy:deepslate_aluminum_ore" + }, + "result": "allomancy:aluminum_ingot" +} \ No newline at end of file diff --git a/src/generated/resources/data/allomancy/recipes/aluminum_ingot_from_deepslate_aluminum_ore_from_blasting.json b/src/generated/resources/data/allomancy/recipes/aluminum_ingot_from_deepslate_aluminum_ore_from_blasting.json new file mode 100644 index 00000000..0490b44a --- /dev/null +++ b/src/generated/resources/data/allomancy/recipes/aluminum_ingot_from_deepslate_aluminum_ore_from_blasting.json @@ -0,0 +1,10 @@ +{ + "type": "minecraft:blasting", + "category": "misc", + "cookingtime": 100, + "experience": 0.6, + "ingredient": { + "item": "allomancy:deepslate_aluminum_ore" + }, + "result": "allomancy:aluminum_ingot" +} \ No newline at end of file diff --git a/src/generated/resources/data/allomancy/recipes/aluminum_ingot.json b/src/generated/resources/data/allomancy/recipes/aluminum_ingot_from_raw_aluminum.json similarity index 100% rename from src/generated/resources/data/allomancy/recipes/aluminum_ingot.json rename to src/generated/resources/data/allomancy/recipes/aluminum_ingot_from_raw_aluminum.json diff --git a/src/generated/resources/data/allomancy/recipes/aluminum_ingot_from_blasting.json b/src/generated/resources/data/allomancy/recipes/aluminum_ingot_from_raw_aluminum_from_blasting.json similarity index 100% rename from src/generated/resources/data/allomancy/recipes/aluminum_ingot_from_blasting.json rename to src/generated/resources/data/allomancy/recipes/aluminum_ingot_from_raw_aluminum_from_blasting.json diff --git a/src/generated/resources/data/allomancy/recipes/cadmium_ingot_from_cadmium_ore.json b/src/generated/resources/data/allomancy/recipes/cadmium_ingot_from_cadmium_ore.json new file mode 100644 index 00000000..015457a7 --- /dev/null +++ b/src/generated/resources/data/allomancy/recipes/cadmium_ingot_from_cadmium_ore.json @@ -0,0 +1,10 @@ +{ + "type": "minecraft:smelting", + "category": "misc", + "cookingtime": 200, + "experience": 0.7, + "ingredient": { + "item": "allomancy:cadmium_ore" + }, + "result": "allomancy:cadmium_ingot" +} \ No newline at end of file diff --git a/src/generated/resources/data/allomancy/recipes/cadmium_ingot_from_cadmium_ore_from_blasting.json b/src/generated/resources/data/allomancy/recipes/cadmium_ingot_from_cadmium_ore_from_blasting.json new file mode 100644 index 00000000..b0c30231 --- /dev/null +++ b/src/generated/resources/data/allomancy/recipes/cadmium_ingot_from_cadmium_ore_from_blasting.json @@ -0,0 +1,10 @@ +{ + "type": "minecraft:blasting", + "category": "misc", + "cookingtime": 100, + "experience": 0.7, + "ingredient": { + "item": "allomancy:cadmium_ore" + }, + "result": "allomancy:cadmium_ingot" +} \ No newline at end of file diff --git a/src/generated/resources/data/allomancy/recipes/cadmium_ingot_from_deepslate_cadmium_ore.json b/src/generated/resources/data/allomancy/recipes/cadmium_ingot_from_deepslate_cadmium_ore.json new file mode 100644 index 00000000..fe805c01 --- /dev/null +++ b/src/generated/resources/data/allomancy/recipes/cadmium_ingot_from_deepslate_cadmium_ore.json @@ -0,0 +1,10 @@ +{ + "type": "minecraft:smelting", + "category": "misc", + "cookingtime": 200, + "experience": 0.7, + "ingredient": { + "item": "allomancy:deepslate_cadmium_ore" + }, + "result": "allomancy:cadmium_ingot" +} \ No newline at end of file diff --git a/src/generated/resources/data/allomancy/recipes/cadmium_ingot_from_deepslate_cadmium_ore_from_blasting.json b/src/generated/resources/data/allomancy/recipes/cadmium_ingot_from_deepslate_cadmium_ore_from_blasting.json new file mode 100644 index 00000000..e689fb9c --- /dev/null +++ b/src/generated/resources/data/allomancy/recipes/cadmium_ingot_from_deepslate_cadmium_ore_from_blasting.json @@ -0,0 +1,10 @@ +{ + "type": "minecraft:blasting", + "category": "misc", + "cookingtime": 100, + "experience": 0.7, + "ingredient": { + "item": "allomancy:deepslate_cadmium_ore" + }, + "result": "allomancy:cadmium_ingot" +} \ No newline at end of file diff --git a/src/generated/resources/data/allomancy/recipes/cadmium_ingot.json b/src/generated/resources/data/allomancy/recipes/cadmium_ingot_from_raw_cadmium.json similarity index 100% rename from src/generated/resources/data/allomancy/recipes/cadmium_ingot.json rename to src/generated/resources/data/allomancy/recipes/cadmium_ingot_from_raw_cadmium.json diff --git a/src/generated/resources/data/allomancy/recipes/cadmium_ingot_from_blasting.json b/src/generated/resources/data/allomancy/recipes/cadmium_ingot_from_raw_cadmium_from_blasting.json similarity index 100% rename from src/generated/resources/data/allomancy/recipes/cadmium_ingot_from_blasting.json rename to src/generated/resources/data/allomancy/recipes/cadmium_ingot_from_raw_cadmium_from_blasting.json diff --git a/src/generated/resources/data/allomancy/recipes/chromium_ingot_from_chromium_ore.json b/src/generated/resources/data/allomancy/recipes/chromium_ingot_from_chromium_ore.json new file mode 100644 index 00000000..b4bc8282 --- /dev/null +++ b/src/generated/resources/data/allomancy/recipes/chromium_ingot_from_chromium_ore.json @@ -0,0 +1,10 @@ +{ + "type": "minecraft:smelting", + "category": "misc", + "cookingtime": 200, + "experience": 0.7, + "ingredient": { + "item": "allomancy:chromium_ore" + }, + "result": "allomancy:chromium_ingot" +} \ No newline at end of file diff --git a/src/generated/resources/data/allomancy/recipes/chromium_ingot_from_chromium_ore_from_blasting.json b/src/generated/resources/data/allomancy/recipes/chromium_ingot_from_chromium_ore_from_blasting.json new file mode 100644 index 00000000..0e3c50e8 --- /dev/null +++ b/src/generated/resources/data/allomancy/recipes/chromium_ingot_from_chromium_ore_from_blasting.json @@ -0,0 +1,10 @@ +{ + "type": "minecraft:blasting", + "category": "misc", + "cookingtime": 100, + "experience": 0.7, + "ingredient": { + "item": "allomancy:chromium_ore" + }, + "result": "allomancy:chromium_ingot" +} \ No newline at end of file diff --git a/src/generated/resources/data/allomancy/recipes/chromium_ingot_from_deepslate_chromium_ore.json b/src/generated/resources/data/allomancy/recipes/chromium_ingot_from_deepslate_chromium_ore.json new file mode 100644 index 00000000..e608a3a6 --- /dev/null +++ b/src/generated/resources/data/allomancy/recipes/chromium_ingot_from_deepslate_chromium_ore.json @@ -0,0 +1,10 @@ +{ + "type": "minecraft:smelting", + "category": "misc", + "cookingtime": 200, + "experience": 0.7, + "ingredient": { + "item": "allomancy:deepslate_chromium_ore" + }, + "result": "allomancy:chromium_ingot" +} \ No newline at end of file diff --git a/src/generated/resources/data/allomancy/recipes/chromium_ingot_from_deepslate_chromium_ore_from_blasting.json b/src/generated/resources/data/allomancy/recipes/chromium_ingot_from_deepslate_chromium_ore_from_blasting.json new file mode 100644 index 00000000..d92e06dd --- /dev/null +++ b/src/generated/resources/data/allomancy/recipes/chromium_ingot_from_deepslate_chromium_ore_from_blasting.json @@ -0,0 +1,10 @@ +{ + "type": "minecraft:blasting", + "category": "misc", + "cookingtime": 100, + "experience": 0.7, + "ingredient": { + "item": "allomancy:deepslate_chromium_ore" + }, + "result": "allomancy:chromium_ingot" +} \ No newline at end of file diff --git a/src/generated/resources/data/allomancy/recipes/chromium_ingot.json b/src/generated/resources/data/allomancy/recipes/chromium_ingot_from_raw_chromium.json similarity index 100% rename from src/generated/resources/data/allomancy/recipes/chromium_ingot.json rename to src/generated/resources/data/allomancy/recipes/chromium_ingot_from_raw_chromium.json diff --git a/src/generated/resources/data/allomancy/recipes/chromium_ingot_from_blasting.json b/src/generated/resources/data/allomancy/recipes/chromium_ingot_from_raw_chromium_from_blasting.json similarity index 100% rename from src/generated/resources/data/allomancy/recipes/chromium_ingot_from_blasting.json rename to src/generated/resources/data/allomancy/recipes/chromium_ingot_from_raw_chromium_from_blasting.json diff --git a/src/generated/resources/data/allomancy/recipes/coin_bag.json b/src/generated/resources/data/allomancy/recipes/coin_bag.json index 5c684b5b..1c5bd6d1 100644 --- a/src/generated/resources/data/allomancy/recipes/coin_bag.json +++ b/src/generated/resources/data/allomancy/recipes/coin_bag.json @@ -19,6 +19,5 @@ ], "result": { "item": "allomancy:coin_bag" - }, - "show_notification": true + } } \ No newline at end of file diff --git a/src/generated/resources/data/allomancy/recipes/iron_button.json b/src/generated/resources/data/allomancy/recipes/iron_button.json index d282c92f..96eadf43 100644 --- a/src/generated/resources/data/allomancy/recipes/iron_button.json +++ b/src/generated/resources/data/allomancy/recipes/iron_button.json @@ -15,6 +15,5 @@ ], "result": { "item": "allomancy:iron_button" - }, - "show_notification": true + } } \ No newline at end of file diff --git a/src/generated/resources/data/allomancy/recipes/iron_lever.json b/src/generated/resources/data/allomancy/recipes/iron_lever.json index 649c5622..c2ec144c 100644 --- a/src/generated/resources/data/allomancy/recipes/iron_lever.json +++ b/src/generated/resources/data/allomancy/recipes/iron_lever.json @@ -15,6 +15,5 @@ ], "result": { "item": "allomancy:iron_lever" - }, - "show_notification": true + } } \ No newline at end of file diff --git a/src/generated/resources/data/allomancy/recipes/koloss_blade.json b/src/generated/resources/data/allomancy/recipes/koloss_blade.json index f6c970ae..14752d8d 100644 --- a/src/generated/resources/data/allomancy/recipes/koloss_blade.json +++ b/src/generated/resources/data/allomancy/recipes/koloss_blade.json @@ -16,6 +16,5 @@ ], "result": { "item": "allomancy:koloss_blade" - }, - "show_notification": true + } } \ No newline at end of file diff --git a/src/generated/resources/data/allomancy/recipes/lead_ingot_from_deepslate_lead_ore.json b/src/generated/resources/data/allomancy/recipes/lead_ingot_from_deepslate_lead_ore.json new file mode 100644 index 00000000..6bd8a98a --- /dev/null +++ b/src/generated/resources/data/allomancy/recipes/lead_ingot_from_deepslate_lead_ore.json @@ -0,0 +1,10 @@ +{ + "type": "minecraft:smelting", + "category": "misc", + "cookingtime": 200, + "experience": 0.4, + "ingredient": { + "item": "allomancy:deepslate_lead_ore" + }, + "result": "allomancy:lead_ingot" +} \ No newline at end of file diff --git a/src/generated/resources/data/allomancy/recipes/lead_ingot_from_deepslate_lead_ore_from_blasting.json b/src/generated/resources/data/allomancy/recipes/lead_ingot_from_deepslate_lead_ore_from_blasting.json new file mode 100644 index 00000000..8726202f --- /dev/null +++ b/src/generated/resources/data/allomancy/recipes/lead_ingot_from_deepslate_lead_ore_from_blasting.json @@ -0,0 +1,10 @@ +{ + "type": "minecraft:blasting", + "category": "misc", + "cookingtime": 100, + "experience": 0.4, + "ingredient": { + "item": "allomancy:deepslate_lead_ore" + }, + "result": "allomancy:lead_ingot" +} \ No newline at end of file diff --git a/src/generated/resources/data/allomancy/recipes/lead_ingot_from_lead_ore.json b/src/generated/resources/data/allomancy/recipes/lead_ingot_from_lead_ore.json new file mode 100644 index 00000000..2614ad77 --- /dev/null +++ b/src/generated/resources/data/allomancy/recipes/lead_ingot_from_lead_ore.json @@ -0,0 +1,10 @@ +{ + "type": "minecraft:smelting", + "category": "misc", + "cookingtime": 200, + "experience": 0.4, + "ingredient": { + "item": "allomancy:lead_ore" + }, + "result": "allomancy:lead_ingot" +} \ No newline at end of file diff --git a/src/generated/resources/data/allomancy/recipes/lead_ingot_from_lead_ore_from_blasting.json b/src/generated/resources/data/allomancy/recipes/lead_ingot_from_lead_ore_from_blasting.json new file mode 100644 index 00000000..f5826e06 --- /dev/null +++ b/src/generated/resources/data/allomancy/recipes/lead_ingot_from_lead_ore_from_blasting.json @@ -0,0 +1,10 @@ +{ + "type": "minecraft:blasting", + "category": "misc", + "cookingtime": 100, + "experience": 0.4, + "ingredient": { + "item": "allomancy:lead_ore" + }, + "result": "allomancy:lead_ingot" +} \ No newline at end of file diff --git a/src/generated/resources/data/allomancy/recipes/lead_ingot.json b/src/generated/resources/data/allomancy/recipes/lead_ingot_from_raw_lead.json similarity index 100% rename from src/generated/resources/data/allomancy/recipes/lead_ingot.json rename to src/generated/resources/data/allomancy/recipes/lead_ingot_from_raw_lead.json diff --git a/src/generated/resources/data/allomancy/recipes/lead_ingot_from_blasting.json b/src/generated/resources/data/allomancy/recipes/lead_ingot_from_raw_lead_from_blasting.json similarity index 100% rename from src/generated/resources/data/allomancy/recipes/lead_ingot_from_blasting.json rename to src/generated/resources/data/allomancy/recipes/lead_ingot_from_raw_lead_from_blasting.json diff --git a/src/generated/resources/data/allomancy/recipes/mistcloak.json b/src/generated/resources/data/allomancy/recipes/mistcloak.json index 4d1d3f04..94e2deb8 100644 --- a/src/generated/resources/data/allomancy/recipes/mistcloak.json +++ b/src/generated/resources/data/allomancy/recipes/mistcloak.json @@ -13,6 +13,5 @@ ], "result": { "item": "allomancy:mistcloak" - }, - "show_notification": true + } } \ No newline at end of file diff --git a/src/generated/resources/data/allomancy/recipes/obsidian_dagger.json b/src/generated/resources/data/allomancy/recipes/obsidian_dagger.json index df6d8cbc..9ca0a84d 100644 --- a/src/generated/resources/data/allomancy/recipes/obsidian_dagger.json +++ b/src/generated/resources/data/allomancy/recipes/obsidian_dagger.json @@ -16,6 +16,5 @@ ], "result": { "item": "allomancy:obsidian_dagger" - }, - "show_notification": true + } } \ No newline at end of file diff --git a/src/generated/resources/data/allomancy/recipes/silver_ingot_from_deepslate_silver_ore.json b/src/generated/resources/data/allomancy/recipes/silver_ingot_from_deepslate_silver_ore.json new file mode 100644 index 00000000..c4e11169 --- /dev/null +++ b/src/generated/resources/data/allomancy/recipes/silver_ingot_from_deepslate_silver_ore.json @@ -0,0 +1,10 @@ +{ + "type": "minecraft:smelting", + "category": "misc", + "cookingtime": 200, + "experience": 1.0, + "ingredient": { + "item": "allomancy:deepslate_silver_ore" + }, + "result": "allomancy:silver_ingot" +} \ No newline at end of file diff --git a/src/generated/resources/data/allomancy/recipes/silver_ingot_from_deepslate_silver_ore_from_blasting.json b/src/generated/resources/data/allomancy/recipes/silver_ingot_from_deepslate_silver_ore_from_blasting.json new file mode 100644 index 00000000..9968a373 --- /dev/null +++ b/src/generated/resources/data/allomancy/recipes/silver_ingot_from_deepslate_silver_ore_from_blasting.json @@ -0,0 +1,10 @@ +{ + "type": "minecraft:blasting", + "category": "misc", + "cookingtime": 100, + "experience": 1.0, + "ingredient": { + "item": "allomancy:deepslate_silver_ore" + }, + "result": "allomancy:silver_ingot" +} \ No newline at end of file diff --git a/src/generated/resources/data/allomancy/recipes/silver_ingot.json b/src/generated/resources/data/allomancy/recipes/silver_ingot_from_raw_silver.json similarity index 100% rename from src/generated/resources/data/allomancy/recipes/silver_ingot.json rename to src/generated/resources/data/allomancy/recipes/silver_ingot_from_raw_silver.json diff --git a/src/generated/resources/data/allomancy/recipes/silver_ingot_from_blasting.json b/src/generated/resources/data/allomancy/recipes/silver_ingot_from_raw_silver_from_blasting.json similarity index 100% rename from src/generated/resources/data/allomancy/recipes/silver_ingot_from_blasting.json rename to src/generated/resources/data/allomancy/recipes/silver_ingot_from_raw_silver_from_blasting.json diff --git a/src/generated/resources/data/allomancy/recipes/silver_ingot_from_silver_ore.json b/src/generated/resources/data/allomancy/recipes/silver_ingot_from_silver_ore.json new file mode 100644 index 00000000..4bf17f42 --- /dev/null +++ b/src/generated/resources/data/allomancy/recipes/silver_ingot_from_silver_ore.json @@ -0,0 +1,10 @@ +{ + "type": "minecraft:smelting", + "category": "misc", + "cookingtime": 200, + "experience": 1.0, + "ingredient": { + "item": "allomancy:silver_ore" + }, + "result": "allomancy:silver_ingot" +} \ No newline at end of file diff --git a/src/generated/resources/data/allomancy/recipes/silver_ingot_from_silver_ore_from_blasting.json b/src/generated/resources/data/allomancy/recipes/silver_ingot_from_silver_ore_from_blasting.json new file mode 100644 index 00000000..482d15b2 --- /dev/null +++ b/src/generated/resources/data/allomancy/recipes/silver_ingot_from_silver_ore_from_blasting.json @@ -0,0 +1,10 @@ +{ + "type": "minecraft:blasting", + "category": "misc", + "cookingtime": 100, + "experience": 1.0, + "ingredient": { + "item": "allomancy:silver_ore" + }, + "result": "allomancy:silver_ingot" +} \ No newline at end of file diff --git a/src/generated/resources/data/allomancy/recipes/tin_ingot_from_deepslate_tin_ore.json b/src/generated/resources/data/allomancy/recipes/tin_ingot_from_deepslate_tin_ore.json new file mode 100644 index 00000000..e6a92103 --- /dev/null +++ b/src/generated/resources/data/allomancy/recipes/tin_ingot_from_deepslate_tin_ore.json @@ -0,0 +1,10 @@ +{ + "type": "minecraft:smelting", + "category": "misc", + "cookingtime": 200, + "experience": 0.6, + "ingredient": { + "item": "allomancy:deepslate_tin_ore" + }, + "result": "allomancy:tin_ingot" +} \ No newline at end of file diff --git a/src/generated/resources/data/allomancy/recipes/tin_ingot_from_deepslate_tin_ore_from_blasting.json b/src/generated/resources/data/allomancy/recipes/tin_ingot_from_deepslate_tin_ore_from_blasting.json new file mode 100644 index 00000000..bd7763a0 --- /dev/null +++ b/src/generated/resources/data/allomancy/recipes/tin_ingot_from_deepslate_tin_ore_from_blasting.json @@ -0,0 +1,10 @@ +{ + "type": "minecraft:blasting", + "category": "misc", + "cookingtime": 100, + "experience": 0.6, + "ingredient": { + "item": "allomancy:deepslate_tin_ore" + }, + "result": "allomancy:tin_ingot" +} \ No newline at end of file diff --git a/src/generated/resources/data/allomancy/recipes/tin_ingot.json b/src/generated/resources/data/allomancy/recipes/tin_ingot_from_raw_tin.json similarity index 100% rename from src/generated/resources/data/allomancy/recipes/tin_ingot.json rename to src/generated/resources/data/allomancy/recipes/tin_ingot_from_raw_tin.json diff --git a/src/generated/resources/data/allomancy/recipes/tin_ingot_from_blasting.json b/src/generated/resources/data/allomancy/recipes/tin_ingot_from_raw_tin_from_blasting.json similarity index 100% rename from src/generated/resources/data/allomancy/recipes/tin_ingot_from_blasting.json rename to src/generated/resources/data/allomancy/recipes/tin_ingot_from_raw_tin_from_blasting.json diff --git a/src/generated/resources/data/allomancy/recipes/tin_ingot_from_tin_ore.json b/src/generated/resources/data/allomancy/recipes/tin_ingot_from_tin_ore.json new file mode 100644 index 00000000..23004223 --- /dev/null +++ b/src/generated/resources/data/allomancy/recipes/tin_ingot_from_tin_ore.json @@ -0,0 +1,10 @@ +{ + "type": "minecraft:smelting", + "category": "misc", + "cookingtime": 200, + "experience": 0.6, + "ingredient": { + "item": "allomancy:tin_ore" + }, + "result": "allomancy:tin_ingot" +} \ No newline at end of file diff --git a/src/generated/resources/data/allomancy/recipes/tin_ingot_from_tin_ore_from_blasting.json b/src/generated/resources/data/allomancy/recipes/tin_ingot_from_tin_ore_from_blasting.json new file mode 100644 index 00000000..5e36ed8a --- /dev/null +++ b/src/generated/resources/data/allomancy/recipes/tin_ingot_from_tin_ore_from_blasting.json @@ -0,0 +1,10 @@ +{ + "type": "minecraft:blasting", + "category": "misc", + "cookingtime": 100, + "experience": 0.6, + "ingredient": { + "item": "allomancy:tin_ore" + }, + "result": "allomancy:tin_ingot" +} \ No newline at end of file diff --git a/src/generated/resources/data/allomancy/recipes/vial.json b/src/generated/resources/data/allomancy/recipes/vial.json index 8b034110..81548e92 100644 --- a/src/generated/resources/data/allomancy/recipes/vial.json +++ b/src/generated/resources/data/allomancy/recipes/vial.json @@ -17,6 +17,5 @@ "result": { "count": 4, "item": "allomancy:vial" - }, - "show_notification": true + } } \ No newline at end of file diff --git a/src/generated/resources/data/allomancy/recipes/zinc_ingot_from_deepslate_zinc_ore.json b/src/generated/resources/data/allomancy/recipes/zinc_ingot_from_deepslate_zinc_ore.json new file mode 100644 index 00000000..12051179 --- /dev/null +++ b/src/generated/resources/data/allomancy/recipes/zinc_ingot_from_deepslate_zinc_ore.json @@ -0,0 +1,10 @@ +{ + "type": "minecraft:smelting", + "category": "misc", + "cookingtime": 200, + "experience": 0.6, + "ingredient": { + "item": "allomancy:deepslate_zinc_ore" + }, + "result": "allomancy:zinc_ingot" +} \ No newline at end of file diff --git a/src/generated/resources/data/allomancy/recipes/zinc_ingot_from_deepslate_zinc_ore_from_blasting.json b/src/generated/resources/data/allomancy/recipes/zinc_ingot_from_deepslate_zinc_ore_from_blasting.json new file mode 100644 index 00000000..319ba2c7 --- /dev/null +++ b/src/generated/resources/data/allomancy/recipes/zinc_ingot_from_deepslate_zinc_ore_from_blasting.json @@ -0,0 +1,10 @@ +{ + "type": "minecraft:blasting", + "category": "misc", + "cookingtime": 100, + "experience": 0.6, + "ingredient": { + "item": "allomancy:deepslate_zinc_ore" + }, + "result": "allomancy:zinc_ingot" +} \ No newline at end of file diff --git a/src/generated/resources/data/allomancy/recipes/zinc_ingot.json b/src/generated/resources/data/allomancy/recipes/zinc_ingot_from_raw_zinc.json similarity index 100% rename from src/generated/resources/data/allomancy/recipes/zinc_ingot.json rename to src/generated/resources/data/allomancy/recipes/zinc_ingot_from_raw_zinc.json diff --git a/src/generated/resources/data/allomancy/recipes/zinc_ingot_from_blasting.json b/src/generated/resources/data/allomancy/recipes/zinc_ingot_from_raw_zinc_from_blasting.json similarity index 100% rename from src/generated/resources/data/allomancy/recipes/zinc_ingot_from_blasting.json rename to src/generated/resources/data/allomancy/recipes/zinc_ingot_from_raw_zinc_from_blasting.json diff --git a/src/generated/resources/data/allomancy/recipes/zinc_ingot_from_zinc_ore.json b/src/generated/resources/data/allomancy/recipes/zinc_ingot_from_zinc_ore.json new file mode 100644 index 00000000..c26b9f63 --- /dev/null +++ b/src/generated/resources/data/allomancy/recipes/zinc_ingot_from_zinc_ore.json @@ -0,0 +1,10 @@ +{ + "type": "minecraft:smelting", + "category": "misc", + "cookingtime": 200, + "experience": 0.6, + "ingredient": { + "item": "allomancy:zinc_ore" + }, + "result": "allomancy:zinc_ingot" +} \ No newline at end of file diff --git a/src/generated/resources/data/allomancy/recipes/zinc_ingot_from_zinc_ore_from_blasting.json b/src/generated/resources/data/allomancy/recipes/zinc_ingot_from_zinc_ore_from_blasting.json new file mode 100644 index 00000000..6f45a993 --- /dev/null +++ b/src/generated/resources/data/allomancy/recipes/zinc_ingot_from_zinc_ore_from_blasting.json @@ -0,0 +1,10 @@ +{ + "type": "minecraft:blasting", + "category": "misc", + "cookingtime": 100, + "experience": 0.6, + "ingredient": { + "item": "allomancy:zinc_ore" + }, + "result": "allomancy:zinc_ingot" +} \ No newline at end of file diff --git a/src/main/java/com/legobmw99/allomancy/Allomancy.java b/src/main/java/com/legobmw99/allomancy/Allomancy.java index 841a8f24..facdd250 100644 --- a/src/main/java/com/legobmw99/allomancy/Allomancy.java +++ b/src/main/java/com/legobmw99/allomancy/Allomancy.java @@ -8,20 +8,20 @@ import com.legobmw99.allomancy.modules.powers.PowersSetup; import com.legobmw99.allomancy.modules.powers.client.PowersClientSetup; import com.legobmw99.allomancy.modules.powers.client.gui.MetalOverlay; -import com.legobmw99.allomancy.modules.powers.data.AllomancerCapability; +import com.legobmw99.allomancy.modules.powers.data.AllomancerAttachment; import com.legobmw99.allomancy.network.Network; import com.legobmw99.allomancy.util.AllomancyConfig; import com.legobmw99.allomancy.util.ItemDisplay; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.common.MinecraftForge; -import net.minecraftforge.fml.DistExecutor; -import net.minecraftforge.fml.common.Mod; -import net.minecraftforge.fml.event.lifecycle.FMLClientSetupEvent; -import net.minecraftforge.fml.event.lifecycle.FMLCommonSetupEvent; -import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext; +import net.neoforged.api.distmarker.Dist; +import net.neoforged.bus.api.IEventBus; +import net.neoforged.fml.common.Mod; +import net.neoforged.fml.event.lifecycle.FMLClientSetupEvent; +import net.neoforged.fml.event.lifecycle.FMLCommonSetupEvent; +import net.neoforged.neoforge.common.NeoForge; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; + @Mod(Allomancy.MODID) public class Allomancy { @@ -29,39 +29,36 @@ public class Allomancy { public static final Logger LOGGER = LogManager.getLogger(); - public static Allomancy instance; - - public Allomancy() { - instance = this; - // Register our setup events on the necessary buses - var modBus = FMLJavaModLoadingContext.get().getModEventBus(); - modBus.addListener(Allomancy::init); - modBus.addListener(Allomancy::clientInit); - modBus.addListener(AllomancyConfig::onLoad); - modBus.addListener(AllomancyConfig::onReload); - modBus.addListener(AllomancerCapability::registerCapability); - modBus.addListener(CombatClientSetup::registerEntityRenders); - modBus.addListener(ItemDisplay::addTabContents); - modBus.addListener(MetalOverlay::registerGUI); + public Allomancy(IEventBus bus, Dist dist) { - DistExecutor.unsafeRunWhenOn(Dist.CLIENT, () -> () -> { - modBus.addListener(PowersClientSetup::registerKeyBinding); - modBus.addListener(PowersClientSetup::registerParticle); - PowersClientSetup.register(); - }); + // Register our setup events on the necessary buses + bus.addListener(Allomancy::init); + bus.addListener(Allomancy::clientInit); + bus.addListener(AllomancyConfig::onLoad); + bus.addListener(AllomancyConfig::onReload); + bus.addListener(CombatClientSetup::registerEntityRenders); + bus.addListener(ItemDisplay::addTabContents); + bus.addListener(Network::registerPayloads); + bus.addListener(MetalOverlay::registerGUI); - MinecraftForge.EVENT_BUS.addListener(PowersSetup::registerCommands); + if (dist.isClient()) { + bus.addListener(PowersClientSetup::registerKeyBinding); + bus.addListener(PowersClientSetup::registerParticle); + PowersClientSetup.register(bus); + } + NeoForge.EVENT_BUS.addListener(PowersSetup::registerCommands); // Register all Registries - PowersSetup.register(); - CombatSetup.register(); - ConsumeSetup.register(); - MaterialsSetup.register(); - ExtrasSetup.register(); - ItemDisplay.register(); + AllomancerAttachment.register(bus); + PowersSetup.register(bus); + CombatSetup.register(bus); + ConsumeSetup.register(bus); + MaterialsSetup.register(bus); + ExtrasSetup.register(bus); + ItemDisplay.register(bus); AllomancyConfig.register(); @@ -74,8 +71,6 @@ public static void clientInit(final FMLClientSetupEvent e) { public static void init(final FMLCommonSetupEvent e) { PowersSetup.init(e); MaterialsSetup.init(e); - e.enqueueWork(Network::registerPackets); - } } diff --git a/src/main/java/com/legobmw99/allomancy/api/data/IAllomancerData.java b/src/main/java/com/legobmw99/allomancy/api/data/IAllomancerData.java index 567530e5..b88ab479 100644 --- a/src/main/java/com/legobmw99/allomancy/api/data/IAllomancerData.java +++ b/src/main/java/com/legobmw99/allomancy/api/data/IAllomancerData.java @@ -2,7 +2,6 @@ import com.legobmw99.allomancy.api.enums.Metal; import net.minecraft.core.BlockPos; -import net.minecraft.nbt.CompoundTag; import net.minecraft.resources.ResourceKey; import net.minecraft.server.level.ServerPlayer; import net.minecraft.world.level.Level; @@ -185,8 +184,4 @@ public interface IAllomancerData { void setEnhanced(int time); - void load(CompoundTag nbt); - - CompoundTag save(); - } diff --git a/src/main/java/com/legobmw99/allomancy/datagen/Advancements.java b/src/main/java/com/legobmw99/allomancy/datagen/Advancements.java index 554196f6..f3bb1c80 100644 --- a/src/main/java/com/legobmw99/allomancy/datagen/Advancements.java +++ b/src/main/java/com/legobmw99/allomancy/datagen/Advancements.java @@ -3,30 +3,28 @@ import com.legobmw99.allomancy.Allomancy; import com.legobmw99.allomancy.modules.combat.CombatSetup; import com.legobmw99.allomancy.modules.consumables.ConsumeSetup; -import net.minecraft.advancements.Advancement; -import net.minecraft.advancements.AdvancementRewards; -import net.minecraft.advancements.FrameType; +import net.minecraft.advancements.*; import net.minecraft.advancements.critereon.ConsumeItemTrigger; import net.minecraft.advancements.critereon.ImpossibleTrigger; import net.minecraft.advancements.critereon.InventoryChangeTrigger; import net.minecraft.core.HolderLookup; import net.minecraft.network.chat.Component; import net.minecraft.resources.ResourceLocation; -import net.minecraftforge.common.data.ExistingFileHelper; -import net.minecraftforge.common.data.ForgeAdvancementProvider; +import net.neoforged.neoforge.common.data.AdvancementProvider; +import net.neoforged.neoforge.common.data.ExistingFileHelper; import java.util.function.Consumer; -public class Advancements implements ForgeAdvancementProvider.AdvancementGenerator { +public class Advancements implements AdvancementProvider.AdvancementGenerator { @Override - public void generate(HolderLookup.Provider registries, Consumer saver, ExistingFileHelper existingFileHelper) { + public void generate(HolderLookup.Provider registries, Consumer saver, ExistingFileHelper existingFileHelper) { Advancement.Builder .advancement() .parent(Advancement.Builder.advancement().build(new ResourceLocation("adventure/root"))) .display(ConsumeSetup.ALLOMANTIC_GRINDER.get(), Component.translatable("advancements.local_metallurgist.title"), - Component.translatable("advancements.local_metallurgist.desc"), null, FrameType.TASK, true, true, false) + Component.translatable("advancements.local_metallurgist.desc"), null, AdvancementType.TASK, true, true, false) .addCriterion("grinder", InventoryChangeTrigger.TriggerInstance.hasItems(ConsumeSetup.ALLOMANTIC_GRINDER.get())) .save(saver, "allomancy:main/metallurgist"); @@ -34,15 +32,15 @@ public void generate(HolderLookup.Provider registries, Consumer sav .advancement() .parent(Advancement.Builder.advancement().build(new ResourceLocation(Allomancy.MODID, "main/metallurgist"))) .display(ConsumeSetup.LERASIUM_NUGGET.get(), Component.translatable("advancements.dna_entangled.title"), Component.translatable("advancements.dna_entangled.desc"), - null, FrameType.TASK, true, false, true) - .addCriterion("impossible", new ImpossibleTrigger.TriggerInstance()) + null, AdvancementType.TASK, true, false, true) + .addCriterion("impossible", CriteriaTriggers.IMPOSSIBLE.createCriterion(new ImpossibleTrigger.TriggerInstance())) .save(saver, "allomancy:main/dna_entangled"); Advancement.Builder .advancement() .parent(Advancement.Builder.advancement().build(new ResourceLocation(Allomancy.MODID, "main/metallurgist"))) .display(CombatSetup.MISTCLOAK.get(), Component.translatable("advancements.become_mistborn.title"), Component.translatable("advancements.become_mistborn.desc"), - null, FrameType.CHALLENGE, true, true, true) + null, AdvancementType.CHALLENGE, true, true, true) .addCriterion("lerasium_nugget", ConsumeItemTrigger.TriggerInstance.usedItem(ConsumeSetup.LERASIUM_NUGGET.get())) .rewards(AdvancementRewards.Builder.experience(100)) .save(saver, "allomancy:main/become_mistborn"); diff --git a/src/main/java/com/legobmw99/allomancy/datagen/BannerTag.java b/src/main/java/com/legobmw99/allomancy/datagen/BannerTag.java index 984558f1..46e81843 100644 --- a/src/main/java/com/legobmw99/allomancy/datagen/BannerTag.java +++ b/src/main/java/com/legobmw99/allomancy/datagen/BannerTag.java @@ -13,7 +13,7 @@ public class BannerTag extends TagsProvider { - public BannerTag(PackOutput pGenerator, CompletableFuture registries, net.minecraftforge.common.data.ExistingFileHelper existingFileHelper) { + public BannerTag(PackOutput pGenerator, CompletableFuture registries, net.neoforged.neoforge.common.data.ExistingFileHelper existingFileHelper) { super(pGenerator, Registries.BANNER_PATTERN, registries, Allomancy.MODID, existingFileHelper); } diff --git a/src/main/java/com/legobmw99/allomancy/datagen/BlockLootTables.java b/src/main/java/com/legobmw99/allomancy/datagen/BlockLootTables.java index 270a7bd3..60643d64 100644 --- a/src/main/java/com/legobmw99/allomancy/datagen/BlockLootTables.java +++ b/src/main/java/com/legobmw99/allomancy/datagen/BlockLootTables.java @@ -6,6 +6,7 @@ import net.minecraft.advancements.critereon.EnchantmentPredicate; import net.minecraft.advancements.critereon.ItemPredicate; import net.minecraft.advancements.critereon.MinMaxBounds; +import net.minecraft.core.registries.BuiltInRegistries; import net.minecraft.data.loot.LootTableSubProvider; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.item.Item; @@ -21,17 +22,16 @@ import net.minecraft.world.level.storage.loot.predicates.MatchTool; import net.minecraft.world.level.storage.loot.providers.number.ConstantValue; import net.minecraft.world.level.storage.loot.providers.number.UniformGenerator; -import net.minecraftforge.registries.ForgeRegistries; -import net.minecraftforge.registries.RegistryObject; import java.util.function.BiConsumer; +import java.util.function.Supplier; public class BlockLootTables implements LootTableSubProvider { // Useful boilerplate from McJtyLib protected static void addSimpleBlock(BiConsumer writer, String name, Block block) { - Allomancy.LOGGER.debug("Creating Loot Table for block " + ForgeRegistries.BLOCKS.getKey(block)); + Allomancy.LOGGER.debug("Creating Loot Table for block " + BuiltInRegistries.BLOCK.getKey(block)); LootPool.Builder builder = LootPool.lootPool().name(name).setRolls(ConstantValue.exactly(1)).add(LootItem.lootTableItem(block)); writer.accept(new ResourceLocation(Allomancy.MODID, "blocks/" + name), LootTable.lootTable().withPool(builder)); @@ -64,19 +64,19 @@ public void generate(BiConsumer writer) { var raw = MaterialsSetup.RAW_ORE_ITEMS.get(i).get(); var rawb = MaterialsSetup.RAW_ORE_BLOCKS.get(i).get(); - addSilkTouchBlock(writer, ForgeRegistries.BLOCKS.getKey(ore).getPath(), ore, raw, 1, 1); - addSilkTouchBlock(writer, ForgeRegistries.BLOCKS.getKey(ds).getPath(), ds, raw, 1, 1); - addSimpleBlock(writer, ForgeRegistries.BLOCKS.getKey(rawb).getPath(), rawb); + addSilkTouchBlock(writer, BuiltInRegistries.BLOCK.getKey(ore).getPath(), ore, raw, 1, 1); + addSilkTouchBlock(writer, BuiltInRegistries.BLOCK.getKey(ds).getPath(), ds, raw, 1, 1); + addSimpleBlock(writer, BuiltInRegistries.BLOCK.getKey(rawb).getPath(), rawb); } addSimpleBlock(writer, "iron_button", ExtrasSetup.IRON_BUTTON.get()); addSimpleBlock(writer, "iron_lever", ExtrasSetup.IRON_LEVER.get()); - for (RegistryObject rblock : MaterialsSetup.STORAGE_BLOCKS) { + for (Supplier rblock : MaterialsSetup.STORAGE_BLOCKS) { if (rblock != null) { Block block = rblock.get(); - addSimpleBlock(writer, ForgeRegistries.BLOCKS.getKey(block).getPath(), block); + addSimpleBlock(writer, BuiltInRegistries.BLOCK.getKey(block).getPath(), block); } } } diff --git a/src/main/java/com/legobmw99/allomancy/datagen/BlockStates.java b/src/main/java/com/legobmw99/allomancy/datagen/BlockStates.java index 4107775f..046d66e2 100644 --- a/src/main/java/com/legobmw99/allomancy/datagen/BlockStates.java +++ b/src/main/java/com/legobmw99/allomancy/datagen/BlockStates.java @@ -6,13 +6,12 @@ import com.legobmw99.allomancy.modules.extras.block.IronLeverBlock; import com.legobmw99.allomancy.modules.materials.MaterialsSetup; import net.minecraft.core.Direction; +import net.minecraft.core.registries.BuiltInRegistries; import net.minecraft.data.PackOutput; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.state.properties.AttachFace; -import net.minecraftforge.client.model.generators.*; -import net.minecraftforge.common.data.ExistingFileHelper; -import net.minecraftforge.registries.ForgeRegistries; -import net.minecraftforge.registries.RegistryObject; +import net.neoforged.neoforge.client.model.generators.*; +import net.neoforged.neoforge.common.data.ExistingFileHelper; import java.util.function.BiConsumer; @@ -36,13 +35,13 @@ protected void registerStatesAndModels() { singleTextureBlock(block, path, "block/" + path); } - for (RegistryObject rblock : MaterialsSetup.RAW_ORE_BLOCKS) { + for (var rblock : MaterialsSetup.RAW_ORE_BLOCKS) { Block block = rblock.get(); String path = rblock.getId().getPath(); singleTextureBlock(block, path, "block/" + path); } - for (RegistryObject rblock : MaterialsSetup.STORAGE_BLOCKS) { + for (var rblock : MaterialsSetup.STORAGE_BLOCKS) { if (rblock != null) { Block block = rblock.get(); String path = rblock.getId().getPath(); @@ -57,7 +56,7 @@ protected void registerStatesAndModels() { private void singleTextureBlock(Block block, String model, String texture) { - Allomancy.LOGGER.debug("Creating Block Data for " + ForgeRegistries.BLOCKS.getKey(block)); + Allomancy.LOGGER.debug("Creating Block Data for " + BuiltInRegistries.BLOCK.getKey(block)); simpleBlock(block); } diff --git a/src/main/java/com/legobmw99/allomancy/datagen/BlockTags.java b/src/main/java/com/legobmw99/allomancy/datagen/BlockTags.java index 5cafbaf5..79a0e278 100644 --- a/src/main/java/com/legobmw99/allomancy/datagen/BlockTags.java +++ b/src/main/java/com/legobmw99/allomancy/datagen/BlockTags.java @@ -8,8 +8,8 @@ import net.minecraft.resources.ResourceKey; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.level.block.Block; -import net.minecraftforge.common.data.BlockTagsProvider; -import net.minecraftforge.common.data.ExistingFileHelper; +import net.neoforged.neoforge.common.data.BlockTagsProvider; +import net.neoforged.neoforge.common.data.ExistingFileHelper; import java.util.concurrent.CompletableFuture; diff --git a/src/main/java/com/legobmw99/allomancy/datagen/DataGenerators.java b/src/main/java/com/legobmw99/allomancy/datagen/DataGenerators.java index 265c0212..5c040dd6 100644 --- a/src/main/java/com/legobmw99/allomancy/datagen/DataGenerators.java +++ b/src/main/java/com/legobmw99/allomancy/datagen/DataGenerators.java @@ -2,10 +2,10 @@ import net.minecraft.data.loot.LootTableProvider; import net.minecraft.world.level.storage.loot.parameters.LootContextParamSets; -import net.minecraftforge.common.data.ForgeAdvancementProvider; -import net.minecraftforge.data.event.GatherDataEvent; -import net.minecraftforge.eventbus.api.SubscribeEvent; -import net.minecraftforge.fml.common.Mod; +import net.neoforged.bus.api.SubscribeEvent; +import net.neoforged.fml.common.Mod; +import net.neoforged.neoforge.common.data.AdvancementProvider; +import net.neoforged.neoforge.data.event.GatherDataEvent; import java.util.Collections; import java.util.List; @@ -19,14 +19,14 @@ public static void gatherData(GatherDataEvent event) { var packOutput = generator.getPackOutput(); var lookup = event.getLookupProvider(); var fileHelper = event.getExistingFileHelper(); - generator.addProvider(event.includeServer(), new Recipes(packOutput)); + generator.addProvider(event.includeServer(), new Recipes(packOutput, lookup)); generator.addProvider(event.includeServer(), new LootTableProvider(packOutput, Collections.emptySet(), List.of(new LootTableProvider.SubProviderEntry(BlockLootTables::new, LootContextParamSets.BLOCK), new LootTableProvider.SubProviderEntry(DungeonLootTables::new, LootContextParamSets.EMPTY)))); BlockTags blocktags = new BlockTags(packOutput, lookup, fileHelper); generator.addProvider(event.includeServer(), blocktags); generator.addProvider(event.includeServer(), new ItemTags(packOutput, lookup, blocktags.contentsGetter(), fileHelper)); - generator.addProvider(event.includeServer(), new ForgeAdvancementProvider(packOutput, lookup, fileHelper, List.of(new Advancements()))); + generator.addProvider(event.includeServer(), new AdvancementProvider(packOutput, lookup, fileHelper, List.of(new Advancements()))); generator.addProvider(event.includeServer(), new BannerTag(packOutput, lookup, fileHelper)); generator.addProvider(event.includeClient(), new Languages(packOutput)); diff --git a/src/main/java/com/legobmw99/allomancy/datagen/ItemModels.java b/src/main/java/com/legobmw99/allomancy/datagen/ItemModels.java index 0284fc39..ffc0138b 100644 --- a/src/main/java/com/legobmw99/allomancy/datagen/ItemModels.java +++ b/src/main/java/com/legobmw99/allomancy/datagen/ItemModels.java @@ -6,13 +6,14 @@ import com.legobmw99.allomancy.modules.consumables.ConsumeSetup; import com.legobmw99.allomancy.modules.extras.ExtrasSetup; import com.legobmw99.allomancy.modules.materials.MaterialsSetup; +import net.minecraft.core.registries.BuiltInRegistries; import net.minecraft.data.PackOutput; import net.minecraft.world.item.Item; import net.minecraft.world.level.block.Block; -import net.minecraftforge.client.model.generators.ItemModelProvider; -import net.minecraftforge.client.model.generators.ModelFile; -import net.minecraftforge.common.data.ExistingFileHelper; -import net.minecraftforge.registries.ForgeRegistries; +import net.neoforged.neoforge.client.model.generators.ItemModelProvider; +import net.neoforged.neoforge.client.model.generators.ModelFile; +import net.neoforged.neoforge.common.data.ExistingFileHelper; + public class ItemModels extends ItemModelProvider { public ItemModels(PackOutput generator, ExistingFileHelper existingFileHelper) { @@ -85,35 +86,35 @@ protected void registerModels() { } public void parentedBlock(Block block) { - parentedBlock(block, "block/" + ForgeRegistries.BLOCKS.getKey(block).getPath()); + parentedBlock(block, "block/" + BuiltInRegistries.BLOCK.getKey(block).getPath()); } public void parentedBlock(Block block, String model) { - Allomancy.LOGGER.debug("Creating Item Model for " + ForgeRegistries.BLOCKS.getKey(block)); - getBuilder(ForgeRegistries.BLOCKS.getKey(block).getPath()).parent(new ModelFile.UncheckedModelFile(modLoc(model))); + Allomancy.LOGGER.debug("Creating Item Model for " + BuiltInRegistries.BLOCK.getKey(block)); + getBuilder(BuiltInRegistries.BLOCK.getKey(block).getPath()).parent(new ModelFile.UncheckedModelFile(modLoc(model))); } public void itemGenerated(Item item) { - itemGenerated(item, "item/" + ForgeRegistries.ITEMS.getKey(item).getPath()); + itemGenerated(item, "item/" + BuiltInRegistries.ITEM.getKey(item).getPath()); } public void itemGenerated(Item item, String model) { - Allomancy.LOGGER.debug("Creating Item Model for " + ForgeRegistries.ITEMS.getKey(item)); - getBuilder(ForgeRegistries.ITEMS.getKey(item).getPath()).parent(getExistingFile(mcLoc("item/generated"))).texture("layer0", modLoc(model)); + Allomancy.LOGGER.debug("Creating Item Model for " + BuiltInRegistries.ITEM.getKey(item)); + getBuilder(BuiltInRegistries.ITEM.getKey(item).getPath()).parent(getExistingFile(mcLoc("item/generated"))).texture("layer0", modLoc(model)); } public void itemHandheld(Item item) { - Allomancy.LOGGER.debug("Creating Item Model for " + ForgeRegistries.ITEMS.getKey(item)); - getBuilder(ForgeRegistries.ITEMS.getKey(item).getPath()) + Allomancy.LOGGER.debug("Creating Item Model for " + BuiltInRegistries.ITEM.getKey(item)); + getBuilder(BuiltInRegistries.ITEM.getKey(item).getPath()) .parent(getExistingFile(mcLoc("item/handheld"))) - .texture("layer0", modLoc("item/" + ForgeRegistries.ITEMS.getKey(item).getPath())); + .texture("layer0", modLoc("item/" + BuiltInRegistries.ITEM.getKey(item).getPath())); } public void largeItemHandheld(Item item) { - Allomancy.LOGGER.debug("Creating Large Item Model for " + ForgeRegistries.ITEMS.getKey(item)); - getBuilder(ForgeRegistries.ITEMS.getKey(item).getPath()) + Allomancy.LOGGER.debug("Creating Large Item Model for " + BuiltInRegistries.ITEM.getKey(item)); + getBuilder(BuiltInRegistries.ITEM.getKey(item).getPath()) .parent(getExistingFile(modLoc("item/handheld_large"))) - .texture("layer0", modLoc("item/" + ForgeRegistries.ITEMS.getKey(item).getPath())); + .texture("layer0", modLoc("item/" + BuiltInRegistries.ITEM.getKey(item).getPath())); } @Override diff --git a/src/main/java/com/legobmw99/allomancy/datagen/ItemTags.java b/src/main/java/com/legobmw99/allomancy/datagen/ItemTags.java index 8cab1fa2..f6eb06be 100644 --- a/src/main/java/com/legobmw99/allomancy/datagen/ItemTags.java +++ b/src/main/java/com/legobmw99/allomancy/datagen/ItemTags.java @@ -11,7 +11,7 @@ import net.minecraft.resources.ResourceLocation; import net.minecraft.world.item.Item; import net.minecraft.world.level.block.Block; -import net.minecraftforge.common.data.ExistingFileHelper; +import net.neoforged.neoforge.common.data.ExistingFileHelper; import java.util.concurrent.CompletableFuture; diff --git a/src/main/java/com/legobmw99/allomancy/datagen/Languages.java b/src/main/java/com/legobmw99/allomancy/datagen/Languages.java index 0f33389c..55ae6461 100644 --- a/src/main/java/com/legobmw99/allomancy/datagen/Languages.java +++ b/src/main/java/com/legobmw99/allomancy/datagen/Languages.java @@ -8,7 +8,7 @@ import com.legobmw99.allomancy.modules.materials.MaterialsSetup; import net.minecraft.data.PackOutput; import net.minecraft.world.item.DyeColor; -import net.minecraftforge.common.data.LanguageProvider; +import net.neoforged.neoforge.common.data.LanguageProvider; import java.util.Arrays; import java.util.Locale; @@ -124,6 +124,8 @@ protected void addTranslations() { add("config.jade.plugin_allomancy.waila_bronze", "Allomancy: Show burning metals when seeking"); + add("allomancy.networking.failed", "Allomancy packet failed to play: %s"); + add("allomancy.networking.kicked", "Requested illegal action: %s"); } diff --git a/src/main/java/com/legobmw99/allomancy/datagen/Recipes.java b/src/main/java/com/legobmw99/allomancy/datagen/Recipes.java index e9d45ab7..c1b3e67f 100644 --- a/src/main/java/com/legobmw99/allomancy/datagen/Recipes.java +++ b/src/main/java/com/legobmw99/allomancy/datagen/Recipes.java @@ -4,9 +4,12 @@ import com.legobmw99.allomancy.api.enums.Metal; import com.legobmw99.allomancy.modules.combat.CombatSetup; import com.legobmw99.allomancy.modules.consumables.ConsumeSetup; +import com.legobmw99.allomancy.modules.consumables.item.recipe.VialItemRecipe; import com.legobmw99.allomancy.modules.extras.ExtrasSetup; import com.legobmw99.allomancy.modules.materials.MaterialsSetup; import net.minecraft.advancements.critereon.InventoryChangeTrigger; +import net.minecraft.core.HolderLookup; +import net.minecraft.core.registries.BuiltInRegistries; import net.minecraft.data.PackOutput; import net.minecraft.data.recipes.*; import net.minecraft.resources.ResourceLocation; @@ -16,21 +19,20 @@ import net.minecraft.world.item.Items; import net.minecraft.world.item.crafting.Ingredient; import net.minecraft.world.level.ItemLike; -import net.minecraftforge.common.Tags; -import net.minecraftforge.registries.ForgeRegistries; +import net.neoforged.neoforge.common.Tags; import java.util.HashMap; import java.util.HashSet; import java.util.Map; import java.util.Set; -import java.util.function.Consumer; +import java.util.concurrent.CompletableFuture; public class Recipes extends RecipeProvider { private final Map defaultIngredients = new HashMap<>(); - public Recipes(PackOutput packOutput) { - super(packOutput); + public Recipes(PackOutput packOutput, CompletableFuture lookupProvider) { + super(packOutput, lookupProvider); add('i', Tags.Items.INGOTS_IRON); add('g', Tags.Items.INGOTS_GOLD); add('s', Items.STICK); @@ -44,22 +46,16 @@ public Recipes(PackOutput packOutput) { } - protected static void buildShapeless(Consumer consumer, RecipeCategory cat, ItemLike result, int count, Item criterion, Ingredient... ingredients) { + protected static void buildShapeless(RecipeOutput consumer, RecipeCategory cat, ItemLike result, int count, Item criterion, Ingredient... ingredients) { buildShapeless(consumer, cat, result, count, criterion, "", ingredients); } - protected static void buildShapeless(Consumer consumer, - RecipeCategory cat, - ItemLike result, - int count, - Item criterion, - String save, - Ingredient... ingredients) { - Allomancy.LOGGER.debug("Creating Shapeless Recipe for " + ForgeRegistries.ITEMS.getKey(result.asItem()) + " " + save); + protected static void buildShapeless(RecipeOutput consumer, RecipeCategory cat, ItemLike result, int count, Item criterion, String save, Ingredient... ingredients) { + Allomancy.LOGGER.debug("Creating Shapeless Recipe for " + BuiltInRegistries.ITEM.getKey(result.asItem()) + " " + save); ShapelessRecipeBuilder builder = ShapelessRecipeBuilder.shapeless(cat, result, count); - builder.unlockedBy("has_" + ForgeRegistries.ITEMS.getKey(criterion).getPath(), InventoryChangeTrigger.TriggerInstance.hasItems(criterion)); + builder.unlockedBy("has_" + BuiltInRegistries.ITEM.getKey(criterion).getPath(), InventoryChangeTrigger.TriggerInstance.hasItems(criterion)); for (Ingredient ingredient : ingredients) { builder.requires(ingredient); @@ -72,17 +68,19 @@ protected static void buildShapeless(Consumer consumer, } } - protected static void buildSmeltingAndBlasting(Consumer consumer, ItemLike result, ItemLike ingredient, float xp) { - Allomancy.LOGGER.debug("Creating Smelting and Blasting Recipe for " + ForgeRegistries.ITEMS.getKey(result.asItem())); + protected static void buildSmeltingAndBlasting(RecipeOutput consumer, ItemLike result, ItemLike ingredient, float xp) { + Allomancy.LOGGER.debug("Creating Smelting and Blasting Recipe for " + BuiltInRegistries.ITEM.getKey(result.asItem())); SimpleCookingRecipeBuilder smelt = SimpleCookingRecipeBuilder.smelting(ing(ingredient), RecipeCategory.MISC, result, xp, 200); SimpleCookingRecipeBuilder blast = SimpleCookingRecipeBuilder.blasting(ing(ingredient), RecipeCategory.MISC, result, xp, 100); - smelt.unlockedBy("has_" + ForgeRegistries.ITEMS.getKey(ingredient.asItem()).getPath(), InventoryChangeTrigger.TriggerInstance.hasItems(ingredient)); - blast.unlockedBy("has_" + ForgeRegistries.ITEMS.getKey(ingredient.asItem()).getPath(), InventoryChangeTrigger.TriggerInstance.hasItems(ingredient)); + smelt.unlockedBy("has_" + BuiltInRegistries.ITEM.getKey(ingredient.asItem()).getPath(), InventoryChangeTrigger.TriggerInstance.hasItems(ingredient)); + blast.unlockedBy("has_" + BuiltInRegistries.ITEM.getKey(ingredient.asItem()).getPath(), InventoryChangeTrigger.TriggerInstance.hasItems(ingredient)); - smelt.save(consumer); - blast.save(consumer, ForgeRegistries.ITEMS.getKey(result.asItem()) + "_from_blasting"); + var name = BuiltInRegistries.ITEM.getKey(result.asItem()) + "_from_" + BuiltInRegistries.ITEM.getKey(ingredient.asItem()).getPath(); + + smelt.save(consumer, name); + blast.save(consumer, name + "_from_blasting"); } @@ -129,7 +127,7 @@ protected static Ingredient[] repeatWith(Ingredient ing, int n, Ingredient... ex } @Override - protected void buildRecipes(Consumer consumer) { + protected void buildRecipes(RecipeOutput consumer) { // Basic Shaped Recipes buildShaped(consumer, RecipeCategory.REDSTONE, ExtrasSetup.IRON_LEVER.get(), Items.IRON_INGOT, "s", "I"); @@ -147,8 +145,12 @@ protected void buildRecipes(Consumer consumer) { float[] ore_metal_xp = {0.6F, 0.7F, 0.7F, 0.4F, 1.0F, 0.6F, 0.6F}; for (int i = 0; i < MaterialsSetup.ORE_METALS.length; i++) { var raw = MaterialsSetup.RAW_ORE_ITEMS.get(i).get(); + var ore = MaterialsSetup.ORE_BLOCKS_ITEMS.get(i).get(); + var deep_ore = MaterialsSetup.DEEPSLATE_ORE_BLOCKS_ITEMS.get(i).get(); var ingot = MaterialsSetup.INGOTS.get(ore_metal_indexes[i]).get(); buildSmeltingAndBlasting(consumer, ingot, raw, ore_metal_xp[i]); + buildSmeltingAndBlasting(consumer, ingot, ore, ore_metal_xp[i]); + buildSmeltingAndBlasting(consumer, ingot, deep_ore, ore_metal_xp[i]); } @@ -159,7 +161,7 @@ protected void buildRecipes(Consumer consumer) { // Grinder recipes Item flake = MaterialsSetup.FLAKES.get(i).get(); - String flakeType = ForgeRegistries.ITEMS.getKey(flake).getPath().substring(0, ForgeRegistries.ITEMS.getKey(flake).getPath().indexOf('_')); + String flakeType = BuiltInRegistries.ITEM.getKey(flake).getPath().substring(0, BuiltInRegistries.ITEM.getKey(flake).getPath().indexOf('_')); buildShapeless(consumer, RecipeCategory.MISC, flake, 2, ConsumeSetup.ALLOMANTIC_GRINDER.get(), ing(ConsumeSetup.ALLOMANTIC_GRINDER.get()), ing("forge:" + "ingots/" + flakeType)); @@ -174,10 +176,11 @@ protected void buildRecipes(Consumer consumer) { // building up buildShapeless(consumer, RecipeCategory.BUILDING_BLOCKS, block, 1, ingot, repeat(ing(ingot), 9)); - buildShapeless(consumer, RecipeCategory.MISC, ingot, 1, nugget, "allomancy:" + ForgeRegistries.ITEMS.getKey(ingot).getPath() + "_from_nuggets", repeat(ing(nugget), 9)); + buildShapeless(consumer, RecipeCategory.MISC, ingot, 1, nugget, "allomancy:" + BuiltInRegistries.ITEM.getKey(ingot).getPath() + "_from_nuggets", + repeat(ing(nugget), 9)); // breaking down - buildShapeless(consumer, RecipeCategory.MISC, ingot, 9, block, "allomancy:" + ForgeRegistries.ITEMS.getKey(ingot).getPath() + "_from_block", ing(block)); + buildShapeless(consumer, RecipeCategory.MISC, ingot, 9, block, "allomancy:" + BuiltInRegistries.ITEM.getKey(ingot).getPath() + "_from_block", ing(block)); buildShapeless(consumer, RecipeCategory.MISC, nugget, 9, ingot, ing(ingot)); } @@ -246,6 +249,7 @@ protected void buildRecipes(Consumer consumer) { ShapedRecipeBuilder .shaped(RecipeCategory.COMBAT, CombatSetup.COIN_BAG.get()) .unlockedBy("has_gold_nugget", InventoryChangeTrigger.TriggerInstance.hasItems(CombatSetup.MISTCLOAK.get())) + .showNotification(true) .define('#', Items.LEAD) .define('l', Items.LEATHER) .define('g', Items.GOLD_NUGGET) @@ -255,16 +259,17 @@ protected void buildRecipes(Consumer consumer) { .save(consumer); Allomancy.LOGGER.debug("Creating Special Recipe for Vial Filling"); - SpecialRecipeBuilder.special(ConsumeSetup.VIAL_RECIPE_SERIALIZER.get()).save(consumer, "allomancy:vial_filling_recipe"); + SpecialRecipeBuilder.special(VialItemRecipe::new).save(consumer, "allomancy:vial_filling_recipe"); } - protected void buildShaped(Consumer consumer, RecipeCategory cat, ItemLike result, int count, Item criterion, String... lines) { - Allomancy.LOGGER.debug("Creating Shaped Recipe for " + ForgeRegistries.ITEMS.getKey(result.asItem())); + protected void buildShaped(RecipeOutput consumer, RecipeCategory cat, ItemLike result, int count, Item criterion, String... lines) { + Allomancy.LOGGER.debug("Creating Shaped Recipe for " + BuiltInRegistries.ITEM.getKey(result.asItem())); ShapedRecipeBuilder builder = ShapedRecipeBuilder.shaped(cat, result, count); - builder.unlockedBy("has_" + ForgeRegistries.ITEMS.getKey(criterion).getPath(), InventoryChangeTrigger.TriggerInstance.hasItems(criterion)); + builder.unlockedBy("has_" + BuiltInRegistries.ITEM.getKey(criterion).getPath(), InventoryChangeTrigger.TriggerInstance.hasItems(criterion)); + builder.showNotification(true); Set characters = new HashSet<>(); for (String line : lines) { @@ -281,7 +286,7 @@ protected void buildShaped(Consumer consumer, RecipeCategory cat builder.save(consumer); } - protected void buildShaped(Consumer consumer, RecipeCategory cat, ItemLike result, Item criterion, String... lines) { + protected void buildShaped(RecipeOutput consumer, RecipeCategory cat, ItemLike result, Item criterion, String... lines) { buildShaped(consumer, cat, result, 1, criterion, lines); } diff --git a/src/main/java/com/legobmw99/allomancy/integration/AllomancyTooltip.java b/src/main/java/com/legobmw99/allomancy/integration/AllomancyTooltip.java index c63b9475..009e2e65 100644 --- a/src/main/java/com/legobmw99/allomancy/integration/AllomancyTooltip.java +++ b/src/main/java/com/legobmw99/allomancy/integration/AllomancyTooltip.java @@ -2,7 +2,7 @@ import com.legobmw99.allomancy.Allomancy; import com.legobmw99.allomancy.api.enums.Metal; -import com.legobmw99.allomancy.modules.powers.data.AllomancerCapability; +import com.legobmw99.allomancy.modules.powers.data.AllomancerAttachment; import net.minecraft.network.chat.Component; import net.minecraft.network.chat.MutableComponent; import net.minecraft.resources.ResourceLocation; @@ -23,30 +23,33 @@ private static MutableComponent translateMetal(Metal mt) { @Override public void appendTooltip(ITooltip tooltip, EntityAccessor accessor, IPluginConfig iPluginConfig) { - accessor.getPlayer().getCapability(AllomancerCapability.PLAYER_CAP).ifPresent(cap -> { - if (cap.isBurning(Metal.BRONZE) && (cap.isEnhanced() || !cap.isBurning(Metal.COPPER))) { - accessor.getEntity().getCapability(AllomancerCapability.PLAYER_CAP).ifPresent(capOther -> { - if (!capOther.isBurning(Metal.COPPER) || (cap.isEnhanced() && !capOther.isEnhanced())) { - - MutableComponent text = null; - - for (Metal mt : Metal.values()) { - if (capOther.isBurning(mt)) { - if (text == null) { - text = translateMetal(mt); - } else { - text = text.append(", ").append(translateMetal(mt)); - } + var data = accessor.getPlayer().getData(AllomancerAttachment.ALLOMANCY_DATA); + + if (data.isBurning(Metal.BRONZE) && (data.isEnhanced() || !data.isBurning(Metal.COPPER))) { + + if (accessor.getEntity().hasData(AllomancerAttachment.ALLOMANCY_DATA)) { + var dataOther = accessor.getEntity().getData(AllomancerAttachment.ALLOMANCY_DATA); + + if (!dataOther.isBurning(Metal.COPPER) || (data.isEnhanced() && !dataOther.isEnhanced())) { + + MutableComponent text = null; + + for (Metal mt : Metal.values()) { + if (dataOther.isBurning(mt)) { + if (text == null) { + text = translateMetal(mt); + } else { + text = text.append(", ").append(translateMetal(mt)); } } + } - if (text != null) { - tooltip.add(text); - } + if (text != null) { + tooltip.add(text); } - }); + } } - }); + } } @Override diff --git a/src/main/java/com/legobmw99/allomancy/modules/combat/CombatSetup.java b/src/main/java/com/legobmw99/allomancy/modules/combat/CombatSetup.java index a774ec86..87377bdc 100644 --- a/src/main/java/com/legobmw99/allomancy/modules/combat/CombatSetup.java +++ b/src/main/java/com/legobmw99/allomancy/modules/combat/CombatSetup.java @@ -6,26 +6,27 @@ import com.legobmw99.allomancy.modules.combat.item.KolossBladeItem; import com.legobmw99.allomancy.modules.combat.item.MistcloakItem; import com.legobmw99.allomancy.modules.combat.item.ObsidianDaggerItem; +import net.minecraft.core.registries.Registries; import net.minecraft.sounds.SoundEvent; import net.minecraft.sounds.SoundEvents; import net.minecraft.world.entity.EntityType; import net.minecraft.world.entity.MobCategory; import net.minecraft.world.item.ArmorItem; import net.minecraft.world.item.ArmorMaterial; -import net.minecraft.world.item.Item; import net.minecraft.world.item.Items; import net.minecraft.world.item.crafting.Ingredient; -import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext; -import net.minecraftforge.registries.DeferredRegister; -import net.minecraftforge.registries.ForgeRegistries; -import net.minecraftforge.registries.RegistryObject; +import net.neoforged.bus.api.IEventBus; +import net.neoforged.neoforge.registries.DeferredItem; +import net.neoforged.neoforge.registries.DeferredRegister; + +import java.util.function.Supplier; public class CombatSetup { - public static final DeferredRegister> ENTITIES = DeferredRegister.create(ForgeRegistries.ENTITY_TYPES, Allomancy.MODID); - public static final DeferredRegister ITEMS = DeferredRegister.create(ForgeRegistries.ITEMS, Allomancy.MODID); - public static final RegistryObject COIN_BAG = ITEMS.register("coin_bag", CoinBagItem::new); - public static final RegistryObject OBSIDIAN_DAGGER = ITEMS.register("obsidian_dagger", ObsidianDaggerItem::new); - public static final RegistryObject KOLOSS_BLADE = ITEMS.register("koloss_blade", KolossBladeItem::new); + public static final DeferredRegister> ENTITIES = DeferredRegister.create(Registries.ENTITY_TYPE, Allomancy.MODID); + public static final DeferredRegister.Items ITEMS = DeferredRegister.createItems(Allomancy.MODID); + public static final DeferredItem COIN_BAG = ITEMS.register("coin_bag", CoinBagItem::new); + public static final DeferredItem OBSIDIAN_DAGGER = ITEMS.register("obsidian_dagger", ObsidianDaggerItem::new); + public static final DeferredItem KOLOSS_BLADE = ITEMS.register("koloss_blade", KolossBladeItem::new); public static final ArmorMaterial WoolArmor = new ArmorMaterial() { @Override public int getDurabilityForType(ArmorItem.Type type) { @@ -68,18 +69,17 @@ public float getKnockbackResistance() { } }; - public static final RegistryObject MISTCLOAK = ITEMS.register("mistcloak", MistcloakItem::new); + public static final DeferredItem MISTCLOAK = ITEMS.register("mistcloak", MistcloakItem::new); - public static void register() { - ENTITIES.register(FMLJavaModLoadingContext.get().getModEventBus()); - ITEMS.register(FMLJavaModLoadingContext.get().getModEventBus()); + public static void register(IEventBus bus) { + ENTITIES.register(bus); + ITEMS.register(bus); } - public static final RegistryObject> NUGGET_PROJECTILE = ENTITIES.register("nugget_projectile", () -> EntityType.Builder + public static final Supplier> NUGGET_PROJECTILE = ENTITIES.register("nugget_projectile", () -> EntityType.Builder .of(ProjectileNuggetEntity::new, MobCategory.MISC) .setShouldReceiveVelocityUpdates(true) .setUpdateInterval(20) - .setCustomClientFactory((spawnEntity, world) -> new ProjectileNuggetEntity(world, spawnEntity.getEntity())) .sized(0.25F, 0.25F) .build("nugget_projectile")); } diff --git a/src/main/java/com/legobmw99/allomancy/modules/combat/client/CombatClientSetup.java b/src/main/java/com/legobmw99/allomancy/modules/combat/client/CombatClientSetup.java index 5a536186..5152822b 100644 --- a/src/main/java/com/legobmw99/allomancy/modules/combat/client/CombatClientSetup.java +++ b/src/main/java/com/legobmw99/allomancy/modules/combat/client/CombatClientSetup.java @@ -2,7 +2,7 @@ import com.legobmw99.allomancy.modules.combat.CombatSetup; import net.minecraft.client.renderer.entity.ThrownItemRenderer; -import net.minecraftforge.client.event.EntityRenderersEvent; +import net.neoforged.neoforge.client.event.EntityRenderersEvent; public class CombatClientSetup { public static void registerEntityRenders(final EntityRenderersEvent.RegisterRenderers e) { diff --git a/src/main/java/com/legobmw99/allomancy/modules/combat/entity/ProjectileNuggetEntity.java b/src/main/java/com/legobmw99/allomancy/modules/combat/entity/ProjectileNuggetEntity.java index ef4337b7..6a262b3c 100644 --- a/src/main/java/com/legobmw99/allomancy/modules/combat/entity/ProjectileNuggetEntity.java +++ b/src/main/java/com/legobmw99/allomancy/modules/combat/entity/ProjectileNuggetEntity.java @@ -1,8 +1,6 @@ package com.legobmw99.allomancy.modules.combat.entity; import com.legobmw99.allomancy.modules.combat.CombatSetup; -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; @@ -20,9 +18,8 @@ import net.minecraft.world.level.Level; import net.minecraft.world.phys.EntityHitResult; import net.minecraft.world.phys.HitResult; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.api.distmarker.OnlyIn; -import net.minecraftforge.network.NetworkHooks; +import net.neoforged.api.distmarker.Dist; +import net.neoforged.api.distmarker.OnlyIn; @OnlyIn(value = Dist.CLIENT, _interface = ItemSupplier.class) public class ProjectileNuggetEntity extends ThrowableItemProjectile implements ItemSupplier { @@ -101,16 +98,9 @@ public float getDamage() { return this.damage; } - @Override protected Item getDefaultItem() { return Items.GOLD_NUGGET; } - @Override - public Packet getAddEntityPacket() { - return NetworkHooks.getEntitySpawningPacket(this); - } - - } diff --git a/src/main/java/com/legobmw99/allomancy/modules/combat/item/CoinBagItem.java b/src/main/java/com/legobmw99/allomancy/modules/combat/item/CoinBagItem.java index 65fed9b8..6758c438 100644 --- a/src/main/java/com/legobmw99/allomancy/modules/combat/item/CoinBagItem.java +++ b/src/main/java/com/legobmw99/allomancy/modules/combat/item/CoinBagItem.java @@ -1,17 +1,16 @@ package com.legobmw99.allomancy.modules.combat.item; -import com.legobmw99.allomancy.api.data.IAllomancerData; import com.legobmw99.allomancy.api.enums.Metal; import com.legobmw99.allomancy.modules.combat.entity.ProjectileNuggetEntity; import com.legobmw99.allomancy.modules.powers.PowerUtils; -import com.legobmw99.allomancy.modules.powers.data.AllomancerCapability; +import com.legobmw99.allomancy.modules.powers.data.AllomancerAttachment; +import net.minecraft.core.registries.BuiltInRegistries; import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResult; import net.minecraft.world.InteractionResultHolder; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.*; import net.minecraft.world.level.Level; -import net.minecraftforge.registries.ForgeRegistries; import javax.annotation.Nonnull; import java.util.function.Predicate; @@ -21,7 +20,7 @@ public class CoinBagItem extends ProjectileWeaponItem { public static final Predicate NUGGETS = (stack) -> { Item item = stack.getItem(); - return PowerUtils.doesResourceContainsMetal(ForgeRegistries.ITEMS.getKey(item)) && ForgeRegistries.ITEMS.getKey(item).getPath().contains("nugget"); + return PowerUtils.doesResourceContainsMetal(BuiltInRegistries.ITEM.getKey(item)) && BuiltInRegistries.ITEM.getKey(item).getPath().contains("nugget"); }; public CoinBagItem() { @@ -29,7 +28,7 @@ public CoinBagItem() { } private static Ammo getAmmoFromItem(Item itemIn) { - return switch (ForgeRegistries.ITEMS.getKey(itemIn).getPath()) { + return switch (BuiltInRegistries.ITEM.getKey(itemIn).getPath()) { case "iron_nugget", "steel_nugget", "bronze_nugget", "copper_nugget", "nickel_nugget" -> Ammo.HEAVY; case "bendalloy_nugget", "nicrosil_nugget", "electrum_nugget", "platinum_nugget" -> Ammo.MAGIC; default -> Ammo.LIGHT; @@ -48,13 +47,12 @@ public InteractionResultHolder use(Level world, Player player, Intera itemstack = new ItemStack(Items.GOLD_NUGGET, 1); } - - if (!itemstack.isEmpty() && player.getCapability(AllomancerCapability.PLAYER_CAP).filter(data -> data.isBurning(Metal.STEEL)).isPresent()) { + if (!itemstack.isEmpty() && player.getData(AllomancerAttachment.ALLOMANCY_DATA).isBurning(Metal.STEEL)) { if (!world.isClientSide) { Ammo type = getAmmoFromItem(itemstack.getItem()); float dmg = type.damage; - if (player.getCapability(AllomancerCapability.PLAYER_CAP).filter(IAllomancerData::isEnhanced).isPresent()) { + if (player.getData(AllomancerAttachment.ALLOMANCY_DATA).isEnhanced()) { dmg *= 2.0F; } ProjectileNuggetEntity nugget_projectile = new ProjectileNuggetEntity(player, world, itemstack, dmg); diff --git a/src/main/java/com/legobmw99/allomancy/modules/combat/item/KolossBladeItem.java b/src/main/java/com/legobmw99/allomancy/modules/combat/item/KolossBladeItem.java index 856ae2b0..28d49ae3 100644 --- a/src/main/java/com/legobmw99/allomancy/modules/combat/item/KolossBladeItem.java +++ b/src/main/java/com/legobmw99/allomancy/modules/combat/item/KolossBladeItem.java @@ -1,7 +1,7 @@ package com.legobmw99.allomancy.modules.combat.item; import com.legobmw99.allomancy.api.enums.Metal; -import com.legobmw99.allomancy.modules.powers.data.AllomancerCapability; +import com.legobmw99.allomancy.modules.powers.data.AllomancerAttachment; import com.legobmw99.allomancy.util.ItemDisplay; import net.minecraft.ChatFormatting; import net.minecraft.network.chat.Component; @@ -28,7 +28,7 @@ public void inventoryTick(ItemStack stack, Level worldIn, Entity entityIn, int i if (entityIn instanceof Player player) { if (isSelected && (player.getOffhandItem() != stack)) { if (!(player.hasEffect(MobEffects.DAMAGE_BOOST) && player.getEffect(MobEffects.DAMAGE_BOOST).getAmplifier() >= 2) && - player.getCapability(AllomancerCapability.PLAYER_CAP).filter(data -> data.isBurning(Metal.PEWTER)).isEmpty()) { + !player.getData(AllomancerAttachment.ALLOMANCY_DATA).isBurning(Metal.PEWTER)) { player.addEffect(new MobEffectInstance(MobEffects.DIG_SLOWDOWN, 10, 10, true, false)); player.addEffect(new MobEffectInstance(MobEffects.WEAKNESS, 10, 10, true, false)); player.addEffect(new MobEffectInstance(MobEffects.MOVEMENT_SLOWDOWN, 10, 0, true, false)); @@ -39,7 +39,7 @@ public void inventoryTick(ItemStack stack, Level worldIn, Entity entityIn, int i @Override public boolean canDisableShield(ItemStack stack, ItemStack shield, LivingEntity entity, LivingEntity attacker) { - return (attacker instanceof Player) && (attacker.getCapability(AllomancerCapability.PLAYER_CAP).filter(data -> data.isBurning(Metal.PEWTER)).isPresent()); + return (attacker instanceof Player) && (attacker.getData(AllomancerAttachment.ALLOMANCY_DATA).isBurning(Metal.PEWTER)); } @Override diff --git a/src/main/java/com/legobmw99/allomancy/modules/consumables/ConsumeSetup.java b/src/main/java/com/legobmw99/allomancy/modules/consumables/ConsumeSetup.java index 0c51edb1..3599d931 100644 --- a/src/main/java/com/legobmw99/allomancy/modules/consumables/ConsumeSetup.java +++ b/src/main/java/com/legobmw99/allomancy/modules/consumables/ConsumeSetup.java @@ -5,26 +5,26 @@ import com.legobmw99.allomancy.modules.consumables.item.LerasiumItem; import com.legobmw99.allomancy.modules.consumables.item.VialItem; import com.legobmw99.allomancy.modules.consumables.item.recipe.VialItemRecipe; -import net.minecraft.world.item.Item; +import net.minecraft.core.registries.Registries; import net.minecraft.world.item.crafting.RecipeSerializer; -import net.minecraft.world.item.crafting.SimpleCraftingRecipeSerializer; -import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext; -import net.minecraftforge.registries.DeferredRegister; -import net.minecraftforge.registries.ForgeRegistries; -import net.minecraftforge.registries.RegistryObject; +import net.neoforged.bus.api.IEventBus; +import net.neoforged.neoforge.registries.DeferredItem; +import net.neoforged.neoforge.registries.DeferredRegister; + +import java.util.function.Supplier; public class ConsumeSetup { - public static final DeferredRegister ITEMS = DeferredRegister.create(ForgeRegistries.ITEMS, Allomancy.MODID); - public static final RegistryObject ALLOMANTIC_GRINDER = ITEMS.register("allomantic_grinder", GrinderItem::new); - public static final RegistryObject LERASIUM_NUGGET = ITEMS.register("lerasium_nugget", LerasiumItem::new); - public static final RegistryObject VIAL = ITEMS.register("vial", VialItem::new); + public static final DeferredRegister.Items ITEMS = DeferredRegister.createItems(Allomancy.MODID); + public static final DeferredItem ALLOMANTIC_GRINDER = ITEMS.register("allomantic_grinder", GrinderItem::new); + public static final DeferredItem LERASIUM_NUGGET = ITEMS.register("lerasium_nugget", LerasiumItem::new); + public static final DeferredItem VIAL = ITEMS.register("vial", VialItem::new); - public static final DeferredRegister> RECIPES = DeferredRegister.create(ForgeRegistries.RECIPE_SERIALIZERS, Allomancy.MODID); - public static final RegistryObject> VIAL_RECIPE_SERIALIZER = RECIPES.register("vial_filling", VialItemRecipe.Serializer::new); + public static final DeferredRegister> RECIPES = DeferredRegister.create(Registries.RECIPE_SERIALIZER, Allomancy.MODID); + public static final Supplier VIAL_RECIPE_SERIALIZER = RECIPES.register("vial_filling", VialItemRecipe.Serializer::new); - public static void register() { - ITEMS.register(FMLJavaModLoadingContext.get().getModEventBus()); - RECIPES.register(FMLJavaModLoadingContext.get().getModEventBus()); + public static void register(IEventBus bus) { + ITEMS.register(bus); + RECIPES.register(bus); } } diff --git a/src/main/java/com/legobmw99/allomancy/modules/consumables/item/LerasiumItem.java b/src/main/java/com/legobmw99/allomancy/modules/consumables/item/LerasiumItem.java index 6da3bc0e..a4318e20 100644 --- a/src/main/java/com/legobmw99/allomancy/modules/consumables/item/LerasiumItem.java +++ b/src/main/java/com/legobmw99/allomancy/modules/consumables/item/LerasiumItem.java @@ -1,7 +1,6 @@ package com.legobmw99.allomancy.modules.consumables.item; -import com.legobmw99.allomancy.api.data.IAllomancerData; -import com.legobmw99.allomancy.modules.powers.data.AllomancerCapability; +import com.legobmw99.allomancy.modules.powers.data.AllomancerAttachment; import com.legobmw99.allomancy.util.ItemDisplay; import net.minecraft.ChatFormatting; import net.minecraft.network.chat.Component; @@ -35,7 +34,8 @@ public LerasiumItem() { @Override public InteractionResultHolder use(Level world, Player player, InteractionHand hand) { ItemStack itemStackIn = player.getItemInHand(hand); - if (player.getCapability(AllomancerCapability.PLAYER_CAP).filter(data -> !data.isMistborn()).isPresent()) { + + if (!player.getData(AllomancerAttachment.ALLOMANCY_DATA).isMistborn()) { player.startUsingItem(hand); return new InteractionResultHolder<>(InteractionResult.SUCCESS, itemStackIn); } @@ -47,13 +47,15 @@ public InteractionResultHolder use(Level world, Player player, Intera @Override public ItemStack finishUsingItem(ItemStack stack, Level world, LivingEntity livingEntity) { - livingEntity.getCapability(AllomancerCapability.PLAYER_CAP).ifPresent(IAllomancerData::setMistborn); - //Fancy-shmancy effects - LightningBolt lightning = new LightningBolt(EntityType.LIGHTNING_BOLT, world); - lightning.setVisualOnly(true); - lightning.moveTo(livingEntity.position().add(0, 3, 0)); - world.addFreshEntity(lightning); - livingEntity.addEffect(new MobEffectInstance(MobEffects.FIRE_RESISTANCE, 20, 0, true, false)); + if (livingEntity instanceof Player) { + livingEntity.getData(AllomancerAttachment.ALLOMANCY_DATA).setMistborn(); + //Fancy-shmancy effects + LightningBolt lightning = new LightningBolt(EntityType.LIGHTNING_BOLT, world); + lightning.setVisualOnly(true); + lightning.moveTo(livingEntity.position().add(0, 3, 0)); + world.addFreshEntity(lightning); + livingEntity.addEffect(new MobEffectInstance(MobEffects.FIRE_RESISTANCE, 20, 0, true, false)); + } return super.finishUsingItem(stack, world, livingEntity); } diff --git a/src/main/java/com/legobmw99/allomancy/modules/consumables/item/VialItem.java b/src/main/java/com/legobmw99/allomancy/modules/consumables/item/VialItem.java index 4c5e201f..389d33b1 100644 --- a/src/main/java/com/legobmw99/allomancy/modules/consumables/item/VialItem.java +++ b/src/main/java/com/legobmw99/allomancy/modules/consumables/item/VialItem.java @@ -2,7 +2,7 @@ import com.legobmw99.allomancy.api.enums.Metal; import com.legobmw99.allomancy.modules.consumables.ConsumeSetup; -import com.legobmw99.allomancy.modules.powers.data.AllomancerCapability; +import com.legobmw99.allomancy.modules.powers.data.AllomancerAttachment; import com.legobmw99.allomancy.util.ItemDisplay; import net.minecraft.ChatFormatting; import net.minecraft.client.gui.screens.Screen; @@ -16,8 +16,8 @@ import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.*; import net.minecraft.world.level.Level; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.api.distmarker.OnlyIn; +import net.neoforged.api.distmarker.Dist; +import net.neoforged.api.distmarker.OnlyIn; import javax.annotation.Nullable; import java.util.List; @@ -32,19 +32,19 @@ public VialItem() { @Override public ItemStack finishUsingItem(ItemStack stack, Level world, LivingEntity livingEntity) { - if (!stack.hasTag()) { + if (!stack.hasTag() || !livingEntity.hasData(AllomancerAttachment.ALLOMANCY_DATA)) { return stack; } - livingEntity.getCapability(AllomancerCapability.PLAYER_CAP).ifPresent(data -> { - for (Metal mt : Metal.values()) { - if (stack.getTag().contains(mt.getName()) && stack.getTag().getBoolean(mt.getName())) { - if (data.getAmount(mt) < 10) { - data.setAmount(mt, data.getAmount(mt) + 1); - } + + var data = livingEntity.getData(AllomancerAttachment.ALLOMANCY_DATA); + for (Metal mt : Metal.values()) { + if (stack.getTag().contains(mt.getName()) && stack.getTag().getBoolean(mt.getName())) { + if (data.getAmount(mt) < 10) { + data.setAmount(mt, data.getAmount(mt) + 1); } } - }); + } if (!((Player) (livingEntity)).getAbilities().instabuild) { stack.shrink(1); @@ -71,29 +71,28 @@ public UseAnim getUseAnimation(ItemStack stack) { @Override public InteractionResultHolder use(Level worldIn, Player playerIn, InteractionHand hand) { ItemStack itemStackIn = playerIn.getItemInHand(hand); - return playerIn.getCapability(AllomancerCapability.PLAYER_CAP).map(data -> { - //If all the ones being filled are full, don't allow - int filling = 0, full = 0; - if (itemStackIn.hasTag()) { - for (Metal mt : Metal.values()) { - if (itemStackIn.getTag().contains(mt.getName()) && itemStackIn.getTag().getBoolean(mt.getName())) { - filling++; - if (data.getAmount(mt) >= 10) { - full++; - } + + var data = playerIn.getData(AllomancerAttachment.ALLOMANCY_DATA); + //If all the ones being filled are full, don't allow + int filling = 0, full = 0; + if (itemStackIn.hasTag()) { + for (Metal mt : Metal.values()) { + if (itemStackIn.getTag().contains(mt.getName()) && itemStackIn.getTag().getBoolean(mt.getName())) { + filling++; + if (data.getAmount(mt) >= 10) { + full++; } } + } - if (filling != full) { - playerIn.startUsingItem(hand); - return new InteractionResultHolder<>(InteractionResult.SUCCESS, itemStackIn); - } + if (filling != full) { + playerIn.startUsingItem(hand); + return new InteractionResultHolder<>(InteractionResult.SUCCESS, itemStackIn); } - return new InteractionResultHolder<>(InteractionResult.FAIL, itemStackIn); - }).orElse(new InteractionResultHolder<>(InteractionResult.FAIL, itemStackIn)); + } + return new InteractionResultHolder<>(InteractionResult.FAIL, itemStackIn); } - @OnlyIn(Dist.CLIENT) @Override public void appendHoverText(ItemStack stack, @Nullable Level worldIn, List tooltip, TooltipFlag flagIn) { diff --git a/src/main/java/com/legobmw99/allomancy/modules/consumables/item/recipe/VialItemRecipe.java b/src/main/java/com/legobmw99/allomancy/modules/consumables/item/recipe/VialItemRecipe.java index cf476df8..ab6b64d5 100644 --- a/src/main/java/com/legobmw99/allomancy/modules/consumables/item/recipe/VialItemRecipe.java +++ b/src/main/java/com/legobmw99/allomancy/modules/consumables/item/recipe/VialItemRecipe.java @@ -5,27 +5,25 @@ import com.legobmw99.allomancy.modules.materials.MaterialsSetup; import net.minecraft.core.RegistryAccess; import net.minecraft.nbt.CompoundTag; -import net.minecraft.resources.ResourceLocation; import net.minecraft.world.inventory.CraftingContainer; import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.crafting.*; import net.minecraft.world.level.Level; -import net.minecraftforge.registries.RegistryObject; import javax.annotation.Nonnull; import java.util.Arrays; +import java.util.function.Supplier; public class VialItemRecipe extends CustomRecipe { - private static final Ingredient INGREDIENT_FLAKES = Ingredient.of( - MaterialsSetup.FLAKES.subList(0, Metal.values().length).stream().map(RegistryObject::get).toArray(Item[]::new)); + private static final Ingredient INGREDIENT_FLAKES = Ingredient.of(MaterialsSetup.FLAKES.subList(0, Metal.values().length).stream().map(Supplier::get).toArray(Item[]::new)); private static final Ingredient INGREDIENT_VIAL = Ingredient.of(ConsumeSetup.VIAL.get()); private ItemStack item_result = ItemStack.EMPTY; - public VialItemRecipe(ResourceLocation idIn, CraftingBookCategory catIn) { - super(idIn, catIn); + public VialItemRecipe(CraftingBookCategory catIn) { + super(catIn); } @Override diff --git a/src/main/java/com/legobmw99/allomancy/modules/extras/ExtrasSetup.java b/src/main/java/com/legobmw99/allomancy/modules/extras/ExtrasSetup.java index 8ec69041..78f86170 100644 --- a/src/main/java/com/legobmw99/allomancy/modules/extras/ExtrasSetup.java +++ b/src/main/java/com/legobmw99/allomancy/modules/extras/ExtrasSetup.java @@ -10,31 +10,31 @@ import net.minecraft.world.item.BannerPatternItem; import net.minecraft.world.item.BlockItem; import net.minecraft.world.item.Item; -import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.entity.BannerPattern; -import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext; -import net.minecraftforge.registries.DeferredRegister; -import net.minecraftforge.registries.ForgeRegistries; -import net.minecraftforge.registries.RegistryObject; +import net.neoforged.bus.api.IEventBus; +import net.neoforged.neoforge.registries.DeferredBlock; +import net.neoforged.neoforge.registries.DeferredHolder; +import net.neoforged.neoforge.registries.DeferredItem; +import net.neoforged.neoforge.registries.DeferredRegister; import java.util.ArrayList; import java.util.List; public class ExtrasSetup { - public static final DeferredRegister BLOCKS = DeferredRegister.create(ForgeRegistries.BLOCKS, Allomancy.MODID); - public static final DeferredRegister ITEMS = DeferredRegister.create(ForgeRegistries.ITEMS, Allomancy.MODID); + public static final DeferredRegister.Blocks BLOCKS = DeferredRegister.createBlocks(Allomancy.MODID); + public static final DeferredRegister.Items ITEMS = DeferredRegister.createItems(Allomancy.MODID); public static final DeferredRegister BP = DeferredRegister.create(Registries.BANNER_PATTERN, Allomancy.MODID); - public static final RegistryObject IRON_BUTTON = BLOCKS.register("iron_button", IronButtonBlock::new); - public static final RegistryObject IRON_BUTTON_ITEM = ITEMS.register("iron_button", () -> new BlockItem(IRON_BUTTON.get(), new Item.Properties())); - public static final RegistryObject IRON_LEVER = BLOCKS.register("iron_lever", IronLeverBlock::new); - public static final RegistryObject IRON_LEVER_ITEM = ITEMS.register("iron_lever", () -> new BlockItem(IRON_LEVER.get(), new Item.Properties())); + public static final DeferredBlock IRON_BUTTON = BLOCKS.register("iron_button", IronButtonBlock::new); + public static final DeferredItem IRON_BUTTON_ITEM = ITEMS.register("iron_button", () -> new BlockItem(IRON_BUTTON.get(), new Item.Properties())); + public static final DeferredBlock IRON_LEVER = BLOCKS.register("iron_lever", IronLeverBlock::new); + public static final DeferredItem IRON_LEVER_ITEM = ITEMS.register("iron_lever", () -> new BlockItem(IRON_LEVER.get(), new Item.Properties())); - public static final List> PATTERNS = new ArrayList<>(); + public static final List> PATTERNS = new ArrayList<>(); public static final List> PATTERN_KEYS = new ArrayList<>(); - public static final List> PATTERN_ITEMS = new ArrayList<>(); + public static final List> PATTERN_ITEMS = new ArrayList<>(); static { @@ -51,9 +51,9 @@ public class ExtrasSetup { } } - public static void register() { - BLOCKS.register(FMLJavaModLoadingContext.get().getModEventBus()); - ITEMS.register(FMLJavaModLoadingContext.get().getModEventBus()); - BP.register(FMLJavaModLoadingContext.get().getModEventBus()); + public static void register(IEventBus bus) { + BLOCKS.register(bus); + ITEMS.register(bus); + BP.register(bus); } } diff --git a/src/main/java/com/legobmw99/allomancy/modules/extras/block/IronButtonBlock.java b/src/main/java/com/legobmw99/allomancy/modules/extras/block/IronButtonBlock.java index 4772722c..1c0a3352 100644 --- a/src/main/java/com/legobmw99/allomancy/modules/extras/block/IronButtonBlock.java +++ b/src/main/java/com/legobmw99/allomancy/modules/extras/block/IronButtonBlock.java @@ -25,7 +25,7 @@ public class IronButtonBlock extends ButtonBlock implements IAllomanticallyUsableBlock { public IronButtonBlock() { - super(Block.Properties.of().noCollission().strength(1.0F), BlockSetType.IRON, 35, false); + super(BlockSetType.IRON, 35, Block.Properties.of().noCollission().strength(1.0F)); } @Override diff --git a/src/main/java/com/legobmw99/allomancy/modules/materials/MaterialsConfig.java b/src/main/java/com/legobmw99/allomancy/modules/materials/MaterialsConfig.java index a3c93b08..bf97f1a4 100644 --- a/src/main/java/com/legobmw99/allomancy/modules/materials/MaterialsConfig.java +++ b/src/main/java/com/legobmw99/allomancy/modules/materials/MaterialsConfig.java @@ -1,12 +1,12 @@ package com.legobmw99.allomancy.modules.materials; -import net.minecraftforge.common.ForgeConfigSpec; +import net.neoforged.neoforge.common.ModConfigSpec; public class MaterialsConfig { - public static ForgeConfigSpec.BooleanValue generate_lerasium; - public static ForgeConfigSpec.BooleanValue generate_unbreakable_daggers; + public static ModConfigSpec.BooleanValue generate_lerasium; + public static ModConfigSpec.BooleanValue generate_unbreakable_daggers; - public static void init(ForgeConfigSpec.Builder common_builder) { + public static void init(ModConfigSpec.Builder common_builder) { common_builder.comment("Settings for the mod's added generation").push("world"); common_builder.push("loot"); diff --git a/src/main/java/com/legobmw99/allomancy/modules/materials/MaterialsSetup.java b/src/main/java/com/legobmw99/allomancy/modules/materials/MaterialsSetup.java index 7d1ced80..78ada28e 100644 --- a/src/main/java/com/legobmw99/allomancy/modules/materials/MaterialsSetup.java +++ b/src/main/java/com/legobmw99/allomancy/modules/materials/MaterialsSetup.java @@ -3,18 +3,18 @@ import com.legobmw99.allomancy.Allomancy; import com.legobmw99.allomancy.api.enums.Metal; import com.legobmw99.allomancy.modules.materials.world.LootTableInjector; +import net.minecraft.util.valueproviders.UniformInt; import net.minecraft.world.item.BlockItem; import net.minecraft.world.item.Item; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.Blocks; import net.minecraft.world.level.block.DropExperienceBlock; -import net.minecraft.world.level.block.state.BlockBehaviour; -import net.minecraftforge.common.MinecraftForge; -import net.minecraftforge.fml.event.lifecycle.FMLCommonSetupEvent; -import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext; -import net.minecraftforge.registries.DeferredRegister; -import net.minecraftforge.registries.ForgeRegistries; -import net.minecraftforge.registries.RegistryObject; +import net.neoforged.bus.api.IEventBus; +import net.neoforged.fml.event.lifecycle.FMLCommonSetupEvent; +import net.neoforged.neoforge.common.NeoForge; +import net.neoforged.neoforge.registries.DeferredBlock; +import net.neoforged.neoforge.registries.DeferredItem; +import net.neoforged.neoforge.registries.DeferredRegister; import java.util.ArrayList; import java.util.List; @@ -23,23 +23,23 @@ public class MaterialsSetup { public static final String[] ORE_METALS = {"aluminum", "cadmium", "chromium", "lead", "silver", "tin", "zinc"}; - public static final DeferredRegister BLOCKS = DeferredRegister.create(ForgeRegistries.BLOCKS, Allomancy.MODID); - public static final DeferredRegister ITEMS = DeferredRegister.create(ForgeRegistries.ITEMS, Allomancy.MODID); + public static final DeferredRegister.Blocks BLOCKS = DeferredRegister.createBlocks(Allomancy.MODID); + public static final DeferredRegister.Items ITEMS = DeferredRegister.createItems(Allomancy.MODID); - public static final List> FLAKES = new ArrayList<>(); - public static final List> NUGGETS = new ArrayList<>(); - public static final List> INGOTS = new ArrayList<>(); - public static final List> STORAGE_BLOCKS = new ArrayList<>(); - public static final List> STORAGE_BLOCK_ITEMS = new ArrayList<>(); + public static final List> FLAKES = new ArrayList<>(); + public static final List> NUGGETS = new ArrayList<>(); + public static final List> INGOTS = new ArrayList<>(); + public static final List> STORAGE_BLOCKS = new ArrayList<>(); + public static final List> STORAGE_BLOCK_ITEMS = new ArrayList<>(); - public static final List> ORE_BLOCKS = new ArrayList<>(); - public static final List> ORE_BLOCKS_ITEMS = new ArrayList<>(); - public static final List> DEEPSLATE_ORE_BLOCKS = new ArrayList<>(); - public static final List> DEEPSLATE_ORE_BLOCKS_ITEMS = new ArrayList<>(); - public static final List> RAW_ORE_BLOCKS = new ArrayList<>(); - public static final List> RAW_ORE_BLOCKS_ITEMS = new ArrayList<>(); - public static final List> RAW_ORE_ITEMS = new ArrayList<>(); + public static final List> ORE_BLOCKS = new ArrayList<>(); + public static final List> ORE_BLOCKS_ITEMS = new ArrayList<>(); + public static final List> DEEPSLATE_ORE_BLOCKS = new ArrayList<>(); + public static final List> DEEPSLATE_ORE_BLOCKS_ITEMS = new ArrayList<>(); + public static final List> RAW_ORE_BLOCKS = new ArrayList<>(); + public static final List> RAW_ORE_BLOCKS_ITEMS = new ArrayList<>(); + public static final List> RAW_ORE_ITEMS = new ArrayList<>(); public static int METAL_ITEM_LEN = Metal.values().length; public static final int LEAD = METAL_ITEM_LEN++; @@ -92,27 +92,27 @@ public class MaterialsSetup { } - public static void register() { - BLOCKS.register(FMLJavaModLoadingContext.get().getModEventBus()); - ITEMS.register(FMLJavaModLoadingContext.get().getModEventBus()); + public static void register(IEventBus bus) { + BLOCKS.register(bus); + ITEMS.register(bus); } public static void init(final FMLCommonSetupEvent e) { e.enqueueWork(() -> { - MinecraftForge.EVENT_BUS.register(LootTableInjector.class); + NeoForge.EVENT_BUS.register(LootTableInjector.class); }); } public static Block createStandardBlock() { - return new Block(BlockBehaviour.Properties.copy(Blocks.STONE).strength(2.1F).requiresCorrectToolForDrops()); + return new Block(Blocks.STONE.properties().strength(2.1F).requiresCorrectToolForDrops()); } public static Block createStandardOre() { - return new DropExperienceBlock(BlockBehaviour.Properties.copy(Blocks.IRON_ORE)); + return new DropExperienceBlock(UniformInt.of(2, 5), Blocks.IRON_ORE.properties()); } public static Block createDeepslateBlock() { - return new DropExperienceBlock(BlockBehaviour.Properties.copy(Blocks.DEEPSLATE_IRON_ORE).strength(4.5F, 3.0F)); + return new DropExperienceBlock(UniformInt.of(2, 5), Blocks.DEEPSLATE_IRON_ORE.properties().strength(4.5F, 3.0F)); } public static Item createStandardItem() { diff --git a/src/main/java/com/legobmw99/allomancy/modules/materials/world/LootTableInjector.java b/src/main/java/com/legobmw99/allomancy/modules/materials/world/LootTableInjector.java index a52b379f..ffb4c31c 100644 --- a/src/main/java/com/legobmw99/allomancy/modules/materials/world/LootTableInjector.java +++ b/src/main/java/com/legobmw99/allomancy/modules/materials/world/LootTableInjector.java @@ -5,12 +5,16 @@ import net.minecraft.resources.ResourceLocation; import net.minecraft.world.level.storage.loot.LootPool; import net.minecraft.world.level.storage.loot.entries.LootTableReference; -import net.minecraftforge.event.LootTableLoadEvent; -import net.minecraftforge.eventbus.api.SubscribeEvent; +import net.neoforged.bus.api.SubscribeEvent; +import net.neoforged.neoforge.event.LootTableLoadEvent; public class LootTableInjector { @SubscribeEvent public static void onLootTableLoad(final LootTableLoadEvent event) { + if (event.getName() == null) { + return; + } + String name = event.getName().toString(); if (MaterialsConfig.generate_lerasium.get() && (name.equals("minecraft:chests/simple_dungeon") || name.equals("minecraft:chests/desert_pyramid") || name.equals("minecraft:chests/jungle_temple") || diff --git a/src/main/java/com/legobmw99/allomancy/modules/powers/CommonEventHandler.java b/src/main/java/com/legobmw99/allomancy/modules/powers/CommonEventHandler.java index be9e6334..2ba1e247 100644 --- a/src/main/java/com/legobmw99/allomancy/modules/powers/CommonEventHandler.java +++ b/src/main/java/com/legobmw99/allomancy/modules/powers/CommonEventHandler.java @@ -5,17 +5,19 @@ import com.legobmw99.allomancy.api.enums.Metal; import com.legobmw99.allomancy.modules.combat.item.KolossBladeItem; import com.legobmw99.allomancy.modules.materials.MaterialsSetup; -import com.legobmw99.allomancy.modules.powers.data.AllomancerCapability; -import com.legobmw99.allomancy.modules.powers.data.AllomancerDataProvider; -import com.legobmw99.allomancy.modules.powers.network.UpdateEnhancedPacket; +import com.legobmw99.allomancy.modules.powers.data.AllomancerAttachment; +import com.legobmw99.allomancy.modules.powers.data.AllomancerData; +import com.legobmw99.allomancy.modules.powers.network.EnhanceTimePayload; import com.legobmw99.allomancy.network.Network; import net.minecraft.core.BlockPos; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.nbt.NbtAccounter; +import net.minecraft.nbt.NbtIo; import net.minecraft.resources.ResourceKey; import net.minecraft.server.level.ServerLevel; import net.minecraft.server.level.ServerPlayer; import net.minecraft.world.effect.MobEffectInstance; import net.minecraft.world.effect.MobEffects; -import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.entity.item.ItemEntity; import net.minecraft.world.entity.player.Player; @@ -28,23 +30,54 @@ import net.minecraft.world.level.block.entity.BlockEntityTicker; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.phys.AABB; -import net.minecraftforge.event.AttachCapabilitiesEvent; -import net.minecraftforge.event.TickEvent; -import net.minecraftforge.event.entity.living.LivingDeathEvent; -import net.minecraftforge.event.entity.living.LivingHurtEvent; -import net.minecraftforge.event.entity.player.PlayerEvent; -import net.minecraftforge.event.entity.player.PlayerSetSpawnEvent; -import net.minecraftforge.eventbus.api.SubscribeEvent; - +import net.minecraft.world.phys.Vec3; +import net.neoforged.bus.api.SubscribeEvent; +import net.neoforged.neoforge.event.TickEvent; +import net.neoforged.neoforge.event.entity.living.LivingDeathEvent; +import net.neoforged.neoforge.event.entity.living.LivingHurtEvent; +import net.neoforged.neoforge.event.entity.player.PlayerEvent; +import net.neoforged.neoforge.event.entity.player.PlayerSetSpawnEvent; + +import java.io.File; import java.util.Arrays; public class CommonEventHandler { + + /** + * TEMPORARY: Used to port Forge worlds to Neoforged. + * Loads the player's data file and sees if they have an old forge Capability stored. + */ @SubscribeEvent - public static void onAttachCapability(final AttachCapabilitiesEvent event) { - if (event.getObject() instanceof Player p) { - AllomancerDataProvider provider = new AllomancerDataProvider(); - event.addCapability(AllomancerCapability.IDENTIFIER, provider); + public static void onPlayerLoad(final PlayerEvent.LoadFromFile event) { + Player player = event.getEntity(); + + if (!player.hasData(AllomancerAttachment.ALLOMANCY_DATA)) { + CompoundTag compoundtag = null; + try { + File file1 = new File(event.getPlayerDirectory(), event.getPlayerUUID() + ".dat"); + if (file1.exists() && file1.isFile()) { + compoundtag = NbtIo.readCompressed(file1.toPath(), NbtAccounter.unlimitedHeap()); + } + } catch (Exception exception) { + Allomancy.LOGGER.warn("Failed to load old player data for {}", player.getName().getString()); + } + + if (compoundtag != null && compoundtag.contains("ForgeCaps")) { + CompoundTag caps = compoundtag.getCompound("ForgeCaps"); + if (caps.contains("allomancy:allomancy_data")) { + Allomancy.LOGGER.info("Found old forge data for player {}, trying to load!", player.getName().getString()); + var data = new AllomancerData(); + try { + data.deserializeNBT(caps.getCompound("allomancy:allomancy_data")); + player.setData(AllomancerAttachment.ALLOMANCY_DATA, data); + Allomancy.LOGGER.info("Loaded old forge data for player {}!", player.getName().getString()); + + } catch (Exception exception) { + Allomancy.LOGGER.error("Failed to deserialize old data!", exception); + } + } + } } } @@ -54,7 +87,8 @@ public static void onJoinWorld(final PlayerEvent.PlayerLoggedInEvent event) { return; } if (event.getEntity() instanceof ServerPlayer player) { - player.getCapability(AllomancerCapability.PLAYER_CAP).ifPresent(data -> { + if (!player.hasData(AllomancerAttachment.ALLOMANCY_DATA)) { + var data = player.getData(AllomancerAttachment.ALLOMANCY_DATA); //Handle random misting case if (PowersConfig.random_mistings.get() && data.isUninvested()) { byte randomMisting; @@ -71,10 +105,10 @@ public static void onJoinWorld(final PlayerEvent.PlayerLoggedInEvent event) { player.getCommandSenderWorld().addFreshEntity(entity); } } - }); + } //Sync cap to client - Network.sync(player); + Network.syncAllomancerData(player); } } @@ -82,71 +116,54 @@ public static void onJoinWorld(final PlayerEvent.PlayerLoggedInEvent event) { @SubscribeEvent public static void onPlayerClone(final PlayerEvent.Clone event) { if (!event.getEntity().level().isClientSide() && event.getEntity() instanceof ServerPlayer player) { - - - event.getOriginal().reviveCaps(); - player.getCapability(AllomancerCapability.PLAYER_CAP).ifPresent(data -> event.getOriginal().getCapability(AllomancerCapability.PLAYER_CAP).ifPresent(oldData -> { - data.setDeathLoc(oldData.getDeathLoc(), oldData.getDeathDim()); - if (!oldData.isUninvested()) { // make sure the new player has the same power status - for (Metal mt : Metal.values()) { - if (oldData.hasPower(mt)) { - data.addPower(mt); - } - } + if (event.isWasDeath() && !player.level().getGameRules().getBoolean(GameRules.RULE_KEEPINVENTORY)) { + // if they died and keepInventory isn't set, they shouldn't keep their metals. + var data = player.getData(AllomancerAttachment.ALLOMANCY_DATA); + for (Metal mt : Metal.values()) { + data.setAmount(mt, 0); + data.setBurning(mt, false); } - - if (player.level().getGameRules().getBoolean(GameRules.RULE_KEEPINVENTORY) || - !event.isWasDeath()) { // if keepInventory is true, or they didn't die, allow them to keep their metals, too - for (Metal mt : Metal.values()) { - data.setAmount(mt, oldData.getAmount(mt)); - } - } - })); - event.getOriginal().getCapability(AllomancerCapability.PLAYER_CAP).invalidate(); - event.getOriginal().invalidateCaps(); - - Network.sync(player); + } + Network.syncAllomancerData(player); } } @SubscribeEvent public static void onRespawn(final PlayerEvent.PlayerRespawnEvent event) { if (!event.getEntity().getCommandSenderWorld().isClientSide() && event.getEntity() instanceof ServerPlayer player) { - Network.sync(player); + Network.syncAllomancerData(player); } } @SubscribeEvent public static void onChangeDimension(final PlayerEvent.PlayerChangedDimensionEvent event) { if (!event.getEntity().getCommandSenderWorld().isClientSide() && event.getEntity() instanceof ServerPlayer player) { - Network.sync(player); + Network.syncAllomancerData(player); } } @SubscribeEvent - public static void onStartTracking(final net.minecraftforge.event.entity.player.PlayerEvent.StartTracking event) { + public static void onStartTracking(final PlayerEvent.StartTracking event) { if (!event.getTarget().level().isClientSide && event.getTarget() instanceof ServerPlayer player) { - Network.sync(player); + Network.syncAllomancerData(player); } } @SubscribeEvent public static void onSetSpawn(final PlayerSetSpawnEvent event) { if (event.getEntity() instanceof ServerPlayer player) { - player.getCapability(AllomancerCapability.PLAYER_CAP).ifPresent(data -> { - data.setSpawnLoc(event.getNewSpawn(), event.getSpawnLevel()); - Network.sync(data, player); - }); + var data = player.getData(AllomancerAttachment.ALLOMANCY_DATA); + data.setSpawnLoc(event.getNewSpawn(), event.getSpawnLevel()); + Network.syncAllomancerData(player); } } @SubscribeEvent public static void onLivingDeath(final LivingDeathEvent event) { if (event.getEntity() instanceof ServerPlayer player) { - player.getCapability(AllomancerCapability.PLAYER_CAP).ifPresent(data -> { - data.setDeathLoc(player.blockPosition(), player.level().dimension()); - Network.sync(data, player); - }); + var data = player.getData(AllomancerAttachment.ALLOMANCY_DATA); + data.setDeathLoc(player.blockPosition(), player.level().dimension()); + Network.syncAllomancerData(player); } } @@ -154,47 +171,46 @@ public static void onLivingDeath(final LivingDeathEvent event) { public static void onDamage(final LivingHurtEvent event) { // Increase outgoing damage for pewter burners if (event.getSource().getEntity() instanceof ServerPlayer source) { - source.getCapability(AllomancerCapability.PLAYER_CAP).ifPresent(data -> { - - if (data.isBurning(Metal.PEWTER)) { - if (data.isEnhanced()) { - if (source.getMainHandItem().getItem() instanceof KolossBladeItem) { - event.setAmount(550); // Duralumin OHK with Koloss blade - PowerUtils.wipePlayer(source); - } else { - event.setAmount(event.getAmount() * 3); - } + var data = source.getData(AllomancerAttachment.ALLOMANCY_DATA); + + if (data.isBurning(Metal.PEWTER)) { + if (data.isEnhanced()) { + if (source.getMainHandItem().getItem() instanceof KolossBladeItem) { + event.setAmount(550); // Duralumin OHK with Koloss blade + PowerUtils.wipePlayer(source); } else { - event.setAmount(event.getAmount() + 2); + event.setAmount(event.getAmount() * 3); } + } else { + event.setAmount(event.getAmount() + 2); } + } - if (data.isBurning(Metal.CHROMIUM)) { - if (event.getEntity() instanceof Player player) { - PowerUtils.wipePlayer(player); - } + if (data.isBurning(Metal.CHROMIUM)) { + if (event.getEntity() instanceof Player player) { + PowerUtils.wipePlayer(player); } - }); + } } // Reduce incoming damage for pewter burners if (event.getEntity() instanceof ServerPlayer player) { - player.getCapability(AllomancerCapability.PLAYER_CAP).ifPresent(data -> { - if (data.isBurning(Metal.PEWTER)) { - if (data.isEnhanced()) { // Duralumin invulnerability - Allomancy.LOGGER.debug("Canceling Damage"); - event.setAmount(0); - event.setCanceled(true); - } else { - Allomancy.LOGGER.debug("Reducing Damage"); + var data = player.getData(AllomancerAttachment.ALLOMANCY_DATA); - event.setAmount(event.getAmount() - 2); - // Note that they took damage, will come in to play if they stop burning - data.setDamageStored(data.getDamageStored() + 1); - Network.sync(data, player); - } + if (data.isBurning(Metal.PEWTER)) { + if (data.isEnhanced()) { // Duralumin invulnerability + Allomancy.LOGGER.debug("Canceling Damage"); + event.setAmount(0); + event.setCanceled(true); + } else { + Allomancy.LOGGER.debug("Reducing Damage"); + + event.setAmount(event.getAmount() - 2); + // Note that they took damage, will come in to play if they stop burning + data.setDamageStored(data.getDamageStored() + 1); + Network.syncAllomancerData(player); } - }); + } } } @@ -214,159 +230,156 @@ public static void onWorldTick(final TickEvent.LevelTickEvent event) { } private static void playerPowerTick(Player curPlayer, Level level) { - curPlayer.getCapability(AllomancerCapability.PLAYER_CAP).ifPresent(data -> { - if (!data.isUninvested()) { - /********************************************* - * ALUMINUM AND DURALUMIN * - *********************************************/ - if (data.isBurning(Metal.ALUMINUM)) { - PowerUtils.wipePlayer(curPlayer); + var data = curPlayer.getData(AllomancerAttachment.ALLOMANCY_DATA); + if (!data.isUninvested()) { + /********************************************* + * ALUMINUM AND DURALUMIN * + *********************************************/ + if (data.isBurning(Metal.ALUMINUM)) { + PowerUtils.wipePlayer(curPlayer); + } + if (data.isBurning(Metal.DURALUMIN) && !data.isEnhanced()) { + data.setEnhanced(2); + if (curPlayer instanceof ServerPlayer sp) { + Network.sync(new EnhanceTimePayload(2, sp.getId()), sp); } - if (data.isBurning(Metal.DURALUMIN) && !data.isEnhanced()) { - data.setEnhanced(2); + } else if (!data.isBurning(Metal.DURALUMIN) && data.isEnhanced()) { + data.decEnhanced(); + if (!data.isEnhanced()) { //Enhancement ran out this tick if (curPlayer instanceof ServerPlayer sp) { - Network.sync(new UpdateEnhancedPacket(2, sp.getId()), sp); - } - } else if (!data.isBurning(Metal.DURALUMIN) && data.isEnhanced()) { - data.decEnhanced(); - if (!data.isEnhanced()) { //Enhancement ran out this tick - if (curPlayer instanceof ServerPlayer sp) { - Network.sync(new UpdateEnhancedPacket(false, sp.getId()), sp); - } - data.drainMetals(Arrays.stream(Metal.values()).filter(data::isBurning).toArray(Metal[]::new)); + Network.sync(new EnhanceTimePayload(false, sp.getId()), sp); } + data.drainMetals(Arrays.stream(Metal.values()).filter(data::isBurning).toArray(Metal[]::new)); } + } - // Run the necessary updates on the player's metals - // Ran AFTER duralumin and aluminum to make sure they function correctly - if (curPlayer instanceof ServerPlayer player) { - data.tickBurning(player); - } + // Run the necessary updates on the player's metals + // Ran AFTER duralumin and aluminum to make sure they function correctly + if (curPlayer instanceof ServerPlayer player) { + data.tickBurning(player); + } - /********************************************* - * CHROMIUM (enhanced) * - *********************************************/ - if (data.isEnhanced() && data.isBurning(Metal.CHROMIUM)) { - if (level instanceof ServerLevel) { - int max = 20; - BlockPos negative = curPlayer.blockPosition().offset(-max, -max, -max); - BlockPos positive = curPlayer.blockPosition().offset(max, max, max); - level - .getEntitiesOfClass(Player.class, new AABB(negative, positive)) - .forEach(otherPlayer -> otherPlayer.getCapability(AllomancerCapability.PLAYER_CAP).ifPresent(otherData -> otherData.drainMetals(Metal.values()))); - } + /********************************************* + * CHROMIUM (enhanced) * + *********************************************/ + if (data.isEnhanced() && data.isBurning(Metal.CHROMIUM)) { + if (level instanceof ServerLevel) { + int max = 20; + Vec3 negative = curPlayer.position().add(-max, -max, -max); + Vec3 positive = curPlayer.position().add(max, max, max); + level + .getEntitiesOfClass(Player.class, new AABB(negative, positive)) + .forEach(otherPlayer -> otherPlayer.getData(AllomancerAttachment.ALLOMANCY_DATA).drainMetals(Metal.values())); } + } - /********************************************* - * GOLD AND ELECTRUM (enhanced) * - *********************************************/ - if (data.isEnhanced() && data.isBurning(Metal.ELECTRUM) && data.getAmount(Metal.ELECTRUM) >= 9) { - ResourceKey spawnDim = data.getSpawnDim(); - BlockPos spawnLoc; + /********************************************* + * GOLD AND ELECTRUM (enhanced) * + *********************************************/ + if (data.isEnhanced() && data.isBurning(Metal.ELECTRUM) && data.getAmount(Metal.ELECTRUM) >= 9) { + ResourceKey spawnDim = data.getSpawnDim(); + BlockPos spawnLoc; - if (spawnDim != null) { - spawnLoc = data.getSpawnLoc(); - } else { - spawnDim = Level.OVERWORLD; // no spawn --> use world spawn - spawnLoc = new BlockPos(level.getLevelData().getXSpawn(), level.getLevelData().getYSpawn(), level.getLevelData().getZSpawn()); + if (spawnDim != null) { + spawnLoc = data.getSpawnLoc(); + } else { + spawnDim = Level.OVERWORLD; // no spawn --> use world spawn + spawnLoc = new BlockPos(level.getLevelData().getXSpawn(), level.getLevelData().getYSpawn(), level.getLevelData().getZSpawn()); - } + } - PowerUtils.teleport(curPlayer, level, spawnDim, spawnLoc); - if (data.isBurning(Metal.DURALUMIN)) { - data.drainMetals(Metal.DURALUMIN); - } - data.drainMetals(Metal.ELECTRUM); + PowerUtils.teleport(curPlayer, level, spawnDim, spawnLoc); + if (data.isBurning(Metal.DURALUMIN)) { + data.drainMetals(Metal.DURALUMIN); + } + data.drainMetals(Metal.ELECTRUM); - } else if (data.isEnhanced() && data.isBurning(Metal.GOLD) && data.getAmount(Metal.GOLD) >= 9) { // These should be mutually exclusive - ResourceKey deathDim = data.getDeathDim(); - if (deathDim != null) { - PowerUtils.teleport(curPlayer, level, deathDim, data.getDeathLoc()); - if (data.isBurning(Metal.DURALUMIN)) { - data.drainMetals(Metal.DURALUMIN); - } - data.drainMetals(Metal.GOLD); + } else if (data.isEnhanced() && data.isBurning(Metal.GOLD) && data.getAmount(Metal.GOLD) >= 9) { // These should be mutually exclusive + ResourceKey deathDim = data.getDeathDim(); + if (deathDim != null) { + PowerUtils.teleport(curPlayer, level, deathDim, data.getDeathLoc()); + if (data.isBurning(Metal.DURALUMIN)) { + data.drainMetals(Metal.DURALUMIN); } + data.drainMetals(Metal.GOLD); } + } - /********************************************* - * BENDALLOY AND CADMIUM * - *********************************************/ - if (data.isBurning(Metal.BENDALLOY) && !data.isBurning(Metal.CADMIUM)) { - curPlayer.addEffect(new MobEffectInstance(MobEffects.DIG_SPEED, 10, 3, true, false)); - curPlayer.aiStep(); - curPlayer.aiStep(); + /********************************************* + * BENDALLOY AND CADMIUM * + *********************************************/ + if (data.isBurning(Metal.BENDALLOY) && !data.isBurning(Metal.CADMIUM)) { + curPlayer.addEffect(new MobEffectInstance(MobEffects.DIG_SPEED, 10, 3, true, false)); - tickNearby(curPlayer, level, data); - } - if (data.isBurning(Metal.CADMIUM) && !data.isBurning(Metal.BENDALLOY)) { - int max = data.isEnhanced() ? 20 : 10; - BlockPos negative = curPlayer.blockPosition().offset(-max, -max, -max); - BlockPos positive = curPlayer.blockPosition().offset(max, max, max); - int slowness_amplifier = data.isEnhanced() ? 255 : 2; // Duralumin freezes entities - level.getEntitiesOfClass(LivingEntity.class, new AABB(negative, positive)).forEach(entity -> { - entity.addEffect(new MobEffectInstance(MobEffects.SLOW_FALLING, 10, 0, true, false)); - if (entity != curPlayer) { - entity.addEffect(new MobEffectInstance(MobEffects.MOVEMENT_SLOWDOWN, 10, slowness_amplifier, true, false)); - } - }); - } + tickNearby(curPlayer, level, data); + } + if (data.isBurning(Metal.CADMIUM) && !data.isBurning(Metal.BENDALLOY)) { + int max = data.isEnhanced() ? 20 : 10; + Vec3 negative = curPlayer.position().add(-max, -max, -max); + Vec3 positive = curPlayer.position().add(max, max, max); + int slowness_amplifier = data.isEnhanced() ? 255 : 2; // Duralumin freezes entities + level.getEntitiesOfClass(LivingEntity.class, new AABB(negative, positive)).forEach(entity -> { + entity.addEffect(new MobEffectInstance(MobEffects.SLOW_FALLING, 10, 0, true, false)); + if (entity != curPlayer) { + entity.addEffect(new MobEffectInstance(MobEffects.MOVEMENT_SLOWDOWN, 10, slowness_amplifier, true, false)); + } + }); + } - /********************************************* - * TIN AND PEWTER * - *********************************************/ - if (data.isBurning(Metal.TIN)) { - // Add night vision to tin-burners - curPlayer.addEffect(new MobEffectInstance(MobEffects.NIGHT_VISION, Short.MAX_VALUE, 5, true, false)); - if (data.isEnhanced()) { // Tin and Duralumin is too much to handle - curPlayer.addEffect(new MobEffectInstance(MobEffects.BLINDNESS, 100, 150, true, false)); - if (level.random.nextInt(50) == 0) { - curPlayer.addEffect(new MobEffectInstance(MobEffects.CONFUSION, 100, 0, true, false)); - } - } else { // Remove blindness from normal tin burners - if (curPlayer.hasEffect(MobEffects.BLINDNESS)) { - curPlayer.removeEffect(MobEffects.BLINDNESS); - } + /********************************************* + * TIN AND PEWTER * + *********************************************/ + if (data.isBurning(Metal.TIN)) { + // Add night vision to tin-burners + curPlayer.addEffect(new MobEffectInstance(MobEffects.NIGHT_VISION, -1, 5, true, false)); + if (data.isEnhanced()) { // Tin and Duralumin is too much to handle + curPlayer.addEffect(new MobEffectInstance(MobEffects.BLINDNESS, 100, 150, true, false)); + if (level.random.nextInt(50) == 0) { + curPlayer.addEffect(new MobEffectInstance(MobEffects.CONFUSION, 100, 0, true, false)); } - } - // Remove night vision from non-tin burners if duration < 10 seconds. Related to the above issue with flashing, only if the amplifier is 5 - if (!data.isBurning(Metal.TIN) && curPlayer.getEffect(MobEffects.NIGHT_VISION) != null && curPlayer.getEffect(MobEffects.NIGHT_VISION).getAmplifier() == 5) { - curPlayer.removeEffect(MobEffects.NIGHT_VISION); - } - if (data.isBurning(Metal.PEWTER)) { - //Add jump boost and speed to pewter burners - curPlayer.addEffect(new MobEffectInstance(MobEffects.JUMP, 10, 1, true, false)); - curPlayer.addEffect(new MobEffectInstance(MobEffects.MOVEMENT_SPEED, 10, 0, true, false)); - curPlayer.addEffect(new MobEffectInstance(MobEffects.DIG_SPEED, 10, 1, true, false)); - - if (data.getDamageStored() > 0) { - if (level.random.nextInt(200) == 0) { - data.setDamageStored(data.getDamageStored() - 1); - } + } else { // Remove blindness from normal tin burners + if (curPlayer.hasEffect(MobEffects.BLINDNESS)) { + curPlayer.removeEffect(MobEffects.BLINDNESS); } - } - // Damage the player if they have stored damage and pewter cuts out - if (!data.isBurning(Metal.PEWTER) && (data.getDamageStored() > 0)) { - data.setDamageStored(data.getDamageStored() - 1); - curPlayer.hurt(level.damageSources().magic(), 2); + } + // Remove night vision from non-tin burners if duration < 10 seconds. Related to the above issue with flashing, only if the amplifier is 5 + if (!data.isBurning(Metal.TIN) && curPlayer.getEffect(MobEffects.NIGHT_VISION) != null && curPlayer.getEffect(MobEffects.NIGHT_VISION).getAmplifier() == 5) { + curPlayer.removeEffect(MobEffects.NIGHT_VISION); + } + if (data.isBurning(Metal.PEWTER)) { + //Add jump boost and speed to pewter burners + curPlayer.addEffect(new MobEffectInstance(MobEffects.JUMP, 10, 1, true, false)); + curPlayer.addEffect(new MobEffectInstance(MobEffects.MOVEMENT_SPEED, 10, 0, true, false)); + curPlayer.addEffect(new MobEffectInstance(MobEffects.DIG_SPEED, 10, 1, true, false)); + + if (data.getDamageStored() > 0) { + if (level.random.nextInt(200) == 0) { + data.setDamageStored(data.getDamageStored() - 1); + } } + } + // Damage the player if they have stored damage and pewter cuts out + if (!data.isBurning(Metal.PEWTER) && (data.getDamageStored() > 0)) { + data.setDamageStored(data.getDamageStored() - 1); + curPlayer.hurt(level.damageSources().magic(), 2); + } - /********************************************* - * COPPER (enhanced) * - *********************************************/ - if (data.isEnhanced() && data.isBurning(Metal.COPPER)) { - curPlayer.addEffect(new MobEffectInstance(MobEffects.INVISIBILITY, 20, 50, true, false)); - } + + /********************************************* + * COPPER (enhanced) * + *********************************************/ + if (data.isEnhanced() && data.isBurning(Metal.COPPER)) { + curPlayer.addEffect(new MobEffectInstance(MobEffects.INVISIBILITY, 20, 50, true, false)); } - }); + } } @SuppressWarnings("unchecked") @@ -375,7 +388,7 @@ private static void tickNearby(Player curPlayer, Level level, IAllomancerData da int max = data.isEnhanced() ? 10 : 5; BlockPos negative = curPlayer.blockPosition().offset(-max, -max, -max); BlockPos positive = curPlayer.blockPosition().offset(max, max, max); - serverLevel.getEntitiesOfClass(LivingEntity.class, new AABB(negative, positive)).forEach(entity -> { + serverLevel.getEntitiesOfClass(LivingEntity.class, AABB.encapsulatingFullBlocks(negative, positive)).forEach(entity -> { entity.aiStep(); entity.aiStep(); }); diff --git a/src/main/java/com/legobmw99/allomancy/modules/powers/PowerUtils.java b/src/main/java/com/legobmw99/allomancy/modules/powers/PowerUtils.java index 835cbd56..4846bedb 100644 --- a/src/main/java/com/legobmw99/allomancy/modules/powers/PowerUtils.java +++ b/src/main/java/com/legobmw99/allomancy/modules/powers/PowerUtils.java @@ -3,11 +3,12 @@ import com.legobmw99.allomancy.Allomancy; import com.legobmw99.allomancy.api.enums.Metal; import com.legobmw99.allomancy.modules.combat.entity.ProjectileNuggetEntity; -import com.legobmw99.allomancy.modules.powers.data.AllomancerCapability; +import com.legobmw99.allomancy.modules.powers.data.AllomancerAttachment; import com.legobmw99.allomancy.modules.powers.entity.ai.AIAttackOnCollideExtended; import com.legobmw99.allomancy.modules.powers.entity.ai.AIEvilAttack; import com.legobmw99.allomancy.network.Network; import net.minecraft.core.BlockPos; +import net.minecraft.core.registries.BuiltInRegistries; import net.minecraft.resources.ResourceKey; import net.minecraft.resources.ResourceLocation; import net.minecraft.server.level.ServerLevel; @@ -42,8 +43,7 @@ import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.phys.Vec3; -import net.minecraftforge.common.util.ITeleporter; -import net.minecraftforge.registries.ForgeRegistries; +import net.neoforged.neoforge.common.util.ITeleporter; import java.util.function.Function; import java.util.function.Predicate; @@ -87,7 +87,7 @@ public static boolean isBlockStateMetal(BlockState state) { * @return Whether the block is metal */ public static boolean isBlockMetal(Block block) { - return isOnWhitelist(ForgeRegistries.BLOCKS.getKey(block).toString()); + return isOnWhitelist(BuiltInRegistries.BLOCK.getKey(block).toString()); } /** @@ -97,7 +97,7 @@ public static boolean isBlockMetal(Block block) { * @return Whether the item is metal */ public static boolean isItemMetal(ItemStack item) { - return isOnWhitelist(ForgeRegistries.ITEMS.getKey(item.getItem()).toString()); + return isOnWhitelist(BuiltInRegistries.ITEM.getKey(item.getItem()).toString()); } private static boolean isOnWhitelist(String s) { @@ -152,14 +152,13 @@ public static boolean isEntityMetal(Entity entity) { * @param player The player to wipe */ public static void wipePlayer(Player player) { - player.getCapability(AllomancerCapability.PLAYER_CAP).ifPresent(data -> { - data.drainMetals(Metal.values()); - player.removeAllEffects(); + var data = player.getData(AllomancerAttachment.ALLOMANCY_DATA); + data.drainMetals(Metal.values()); + player.removeAllEffects(); - if (player instanceof ServerPlayer sp) { - Network.sync(data, sp); - } - }); + if (player instanceof ServerPlayer sp) { + Network.syncAllomancerData(sp); + } } /** @@ -188,7 +187,7 @@ public static void move(double directionScalar, Entity toMove, BlockPos block) { /* - * Three helper functions for working with Vector3ds + * Three helper functions for working with Vec3s */ private static Vec3 clamp(Vec3 value, Vec3 min, Vec3 max) { return new Vec3(Mth.clamp(value.x, min.x, max.x), Mth.clamp(value.y, min.y, max.y), Mth.clamp(value.z, min.z, max.z)); diff --git a/src/main/java/com/legobmw99/allomancy/modules/powers/PowersConfig.java b/src/main/java/com/legobmw99/allomancy/modules/powers/PowersConfig.java index b13cf95f..20229c8d 100644 --- a/src/main/java/com/legobmw99/allomancy/modules/powers/PowersConfig.java +++ b/src/main/java/com/legobmw99/allomancy/modules/powers/PowersConfig.java @@ -4,33 +4,33 @@ import com.legobmw99.allomancy.modules.combat.CombatSetup; import com.legobmw99.allomancy.modules.consumables.ConsumeSetup; import com.legobmw99.allomancy.util.AllomancyConfig; +import net.minecraft.core.registries.BuiltInRegistries; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.item.Item; import net.minecraft.world.item.Items; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.Blocks; import net.minecraft.world.level.block.state.properties.WoodType; -import net.minecraftforge.common.ForgeConfigSpec; -import net.minecraftforge.fml.config.ModConfig; -import net.minecraftforge.fml.event.config.ModConfigEvent; -import net.minecraftforge.registries.ForgeRegistries; +import net.neoforged.fml.config.ModConfig; +import net.neoforged.fml.event.config.ModConfigEvent; +import net.neoforged.neoforge.common.ModConfigSpec; import java.util.*; public class PowersConfig { public static final Set whitelist = new HashSet<>(); - public static ForgeConfigSpec.IntValue max_metal_detection; - public static ForgeConfigSpec.BooleanValue animate_selection; - public static ForgeConfigSpec.BooleanValue enable_overlay; - public static ForgeConfigSpec.EnumValue overlay_position; - public static ForgeConfigSpec.BooleanValue random_mistings; - public static ForgeConfigSpec.BooleanValue generate_whitelist; - public static ForgeConfigSpec.BooleanValue respect_player_UUID; - public static ForgeConfigSpec.ConfigValue> cfg_whitelist; + public static ModConfigSpec.IntValue max_metal_detection; + public static ModConfigSpec.BooleanValue animate_selection; + public static ModConfigSpec.BooleanValue enable_overlay; + public static ModConfigSpec.EnumValue overlay_position; + public static ModConfigSpec.BooleanValue random_mistings; + public static ModConfigSpec.BooleanValue generate_whitelist; + public static ModConfigSpec.BooleanValue respect_player_UUID; + public static ModConfigSpec.ConfigValue> cfg_whitelist; private static HashSet defaultList; - public static void init(ForgeConfigSpec.Builder server_builder, ForgeConfigSpec.Builder common_builder, ForgeConfigSpec.Builder client_builder) { + public static void init(ModConfigSpec.Builder server_builder, ModConfigSpec.Builder common_builder, ModConfigSpec.Builder client_builder) { common_builder.comment("Settings for the gameplay elements of the mod").push("gameplay"); random_mistings = common_builder.comment("Spawn players as a random Misting").define("random_mistings", true); respect_player_UUID = common_builder @@ -147,6 +147,7 @@ private static Set default_whitelist() { add(Blocks.NETHERITE_BLOCK); add(Blocks.LODESTONE); add(Blocks.GILDED_BLACKSTONE); + add(Blocks.LIGHTNING_ROD); add(Items.BRUSH); @@ -162,9 +163,9 @@ private static Set default_whitelist() { add(CombatSetup.COIN_BAG.get()); - ForgeRegistries.ITEMS.getKeys().stream().filter(Objects::nonNull).filter(PowerUtils::doesResourceContainsMetal).forEach(PowersConfig::add); + BuiltInRegistries.ITEM.keySet().stream().filter(Objects::nonNull).filter(PowerUtils::doesResourceContainsMetal).forEach(PowersConfig::add); - ForgeRegistries.BLOCKS.getKeys().stream().filter(Objects::nonNull).filter(PowerUtils::doesResourceContainsMetal).forEach(PowersConfig::add); + BuiltInRegistries.BLOCK.keySet().stream().filter(Objects::nonNull).filter(PowerUtils::doesResourceContainsMetal).forEach(PowersConfig::add); return defaultList; @@ -181,11 +182,11 @@ private static void add(ResourceLocation r) { } private static void add(Block block) { - add(ForgeRegistries.BLOCKS.getKey(block)); + add(BuiltInRegistries.BLOCK.getKey(block)); } private static void add(Item item) { - add(ForgeRegistries.ITEMS.getKey(item)); + add(BuiltInRegistries.ITEM.getKey(item)); } public enum SCREEN_LOC { diff --git a/src/main/java/com/legobmw99/allomancy/modules/powers/PowersSetup.java b/src/main/java/com/legobmw99/allomancy/modules/powers/PowersSetup.java index 6dc50323..cea299ac 100644 --- a/src/main/java/com/legobmw99/allomancy/modules/powers/PowersSetup.java +++ b/src/main/java/com/legobmw99/allomancy/modules/powers/PowersSetup.java @@ -7,27 +7,30 @@ import net.minecraft.commands.synchronization.ArgumentTypeInfo; import net.minecraft.commands.synchronization.ArgumentTypeInfos; import net.minecraft.commands.synchronization.SingletonArgumentInfo; -import net.minecraftforge.common.MinecraftForge; -import net.minecraftforge.event.RegisterCommandsEvent; -import net.minecraftforge.fml.event.lifecycle.FMLClientSetupEvent; -import net.minecraftforge.fml.event.lifecycle.FMLCommonSetupEvent; -import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext; -import net.minecraftforge.registries.DeferredRegister; -import net.minecraftforge.registries.ForgeRegistries; -import net.minecraftforge.registries.RegistryObject; +import net.minecraft.core.registries.Registries; +import net.neoforged.bus.api.IEventBus; +import net.neoforged.fml.event.lifecycle.FMLClientSetupEvent; +import net.neoforged.fml.event.lifecycle.FMLCommonSetupEvent; +import net.neoforged.neoforge.common.NeoForge; +import net.neoforged.neoforge.event.RegisterCommandsEvent; +import net.neoforged.neoforge.registries.DeferredRegister; + +import java.util.function.Supplier; public class PowersSetup { - private static final DeferredRegister> COMMAND_ARGUMENT_TYPES = DeferredRegister.create(ForgeRegistries.COMMAND_ARGUMENT_TYPES, Allomancy.MODID); - private static final RegistryObject> CONTAINER_CLASS = COMMAND_ARGUMENT_TYPES.register("allomancy_power", - () -> ArgumentTypeInfos.registerByClass( - AllomancyPowerType.class, - SingletonArgumentInfo.contextFree( - AllomancyPowerType::allomancyPowerType))); + private static final DeferredRegister> COMMAND_ARGUMENT_TYPES = DeferredRegister.create(Registries.COMMAND_ARGUMENT_TYPE, Allomancy.MODID); + private static final Supplier> CONTAINER_CLASS = COMMAND_ARGUMENT_TYPES.register("allomancy_power", + () -> ArgumentTypeInfos.registerByClass( + AllomancyPowerType.class, + SingletonArgumentInfo.contextFree( + AllomancyPowerType::allomancyPowerType))); public static void clientInit(final FMLClientSetupEvent e) { - MinecraftForge.EVENT_BUS.register(new ClientEventHandler()); + e.enqueueWork(() -> { + NeoForge.EVENT_BUS.register(new ClientEventHandler()); + }); } @@ -38,11 +41,11 @@ public static void registerCommands(final RegisterCommandsEvent e) { public static void init(final FMLCommonSetupEvent e) { e.enqueueWork(() -> { - MinecraftForge.EVENT_BUS.register(CommonEventHandler.class); + NeoForge.EVENT_BUS.register(CommonEventHandler.class); }); } - public static void register() { - COMMAND_ARGUMENT_TYPES.register(FMLJavaModLoadingContext.get().getModEventBus()); + public static void register(IEventBus bus) { + COMMAND_ARGUMENT_TYPES.register(bus); } } diff --git a/src/main/java/com/legobmw99/allomancy/modules/powers/client/ClientEventHandler.java b/src/main/java/com/legobmw99/allomancy/modules/powers/client/ClientEventHandler.java index 8337383d..ef95d95a 100644 --- a/src/main/java/com/legobmw99/allomancy/modules/powers/client/ClientEventHandler.java +++ b/src/main/java/com/legobmw99/allomancy/modules/powers/client/ClientEventHandler.java @@ -8,49 +8,48 @@ import com.legobmw99.allomancy.modules.powers.client.gui.MetalSelectScreen; import com.legobmw99.allomancy.modules.powers.client.particle.SoundParticleData; import com.legobmw99.allomancy.modules.powers.client.util.ClientUtils; -import com.legobmw99.allomancy.modules.powers.client.util.MetalBlockBlob; -import com.legobmw99.allomancy.modules.powers.data.AllomancerCapability; -import com.legobmw99.allomancy.modules.powers.network.ChangeEmotionPacket; -import com.legobmw99.allomancy.modules.powers.network.TryPushPullBlock; -import com.legobmw99.allomancy.modules.powers.network.TryPushPullEntity; -import com.legobmw99.allomancy.modules.powers.network.UpdateEnhancedPacket; +import com.legobmw99.allomancy.modules.powers.client.util.SensoryTracking; +import com.legobmw99.allomancy.modules.powers.data.AllomancerAttachment; +import com.legobmw99.allomancy.modules.powers.network.BlockPushPullPayload; +import com.legobmw99.allomancy.modules.powers.network.EmotionPayload; +import com.legobmw99.allomancy.modules.powers.network.EnhanceTimePayload; +import com.legobmw99.allomancy.modules.powers.network.EntityPushPullPayload; import com.legobmw99.allomancy.network.Network; +import com.mojang.blaze3d.platform.InputConstants; import com.mojang.blaze3d.systems.RenderSystem; import com.mojang.blaze3d.vertex.PoseStack; import net.minecraft.client.Minecraft; +import net.minecraft.client.Options; +import net.minecraft.client.player.Input; import net.minecraft.client.renderer.GameRenderer; import net.minecraft.client.resources.sounds.SoundInstance; import net.minecraft.core.BlockPos; import net.minecraft.resources.ResourceKey; import net.minecraft.util.Mth; +import net.minecraft.world.effect.MobEffects; import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.PathfinderMob; import net.minecraft.world.entity.player.Player; +import net.minecraft.world.item.enchantment.EnchantmentHelper; import net.minecraft.world.level.Level; -import net.minecraft.world.phys.*; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.api.distmarker.OnlyIn; -import net.minecraftforge.client.event.InputEvent; -import net.minecraftforge.client.event.RenderLevelStageEvent; -import net.minecraftforge.client.event.sound.PlaySoundEvent; -import net.minecraftforge.event.TickEvent; -import net.minecraftforge.eventbus.api.SubscribeEvent; +import net.minecraft.world.phys.BlockHitResult; +import net.minecraft.world.phys.EntityHitResult; +import net.minecraft.world.phys.HitResult; +import net.minecraft.world.phys.Vec3; +import net.neoforged.api.distmarker.Dist; +import net.neoforged.api.distmarker.OnlyIn; +import net.neoforged.bus.api.SubscribeEvent; +import net.neoforged.neoforge.client.event.InputEvent; +import net.neoforged.neoforge.client.event.MovementInputUpdateEvent; +import net.neoforged.neoforge.client.event.RenderLevelStageEvent; +import net.neoforged.neoforge.client.event.sound.PlaySoundEvent; +import net.neoforged.neoforge.event.TickEvent; import org.lwjgl.glfw.GLFW; -import java.util.HashSet; -import java.util.LinkedList; -import java.util.Set; - public class ClientEventHandler { - - private final Minecraft mc = Minecraft.getInstance(); + private final SensoryTracking tracking = new SensoryTracking(); - private final Set metal_entities = new HashSet<>(); - private final Set metal_blobs = new HashSet<>(); - private final Set nearby_allomancers = new HashSet<>(); - - private int tickOffset = 0; @OnlyIn(Dist.CLIENT) @SubscribeEvent @@ -61,130 +60,46 @@ public void onClientTick(final TickEvent.ClientTickEvent event) { } Player player = this.mc.player; - player.getCapability(AllomancerCapability.PLAYER_CAP).ifPresent(data -> { - if (data.isUninvested()) { - return; - } - // Duralumin makes you move much quicker and reach much further - int dist_modifier = data.isEnhanced() ? 2 : 1; - - // Handle our input-based powers - if (this.mc.options.keyAttack.isDown()) { - // Ray trace 20 blocks (or 40 if enhanced) - var trace = ClientUtils.getMouseOverExtended(20F * dist_modifier); - // All iron pulling powers - metalPushPull(player, data, trace, Metal.IRON, PowerUtils.PULL); - // All zinc powers - emotionPushPull(data, trace, Metal.ZINC, true); - } - - if (this.mc.options.keyUse.isDown()) { - // Ray trace 20 blocks (or 40 if enhanced) - var trace = ClientUtils.getMouseOverExtended(20F * dist_modifier); - // All steel pushing powers - metalPushPull(player, data, trace, Metal.STEEL, PowerUtils.PUSH); - // All brass powers - emotionPushPull(data, trace, Metal.BRASS, false); - - if (data.isBurning(Metal.NICROSIL)) { - if ((trace != null) && (trace.getType() == HitResult.Type.ENTITY)) { - Entity entity = ((EntityHitResult) trace).getEntity(); - if (entity instanceof Player) { - Network.sendToServer(new UpdateEnhancedPacket(true, entity.getId())); - } - } - } - } - - this.tickOffset = (this.tickOffset + 1) % 2; - if (this.tickOffset == 0) { - populateSensoryLists(player, data); - } - }); - - } - - private void populateSensoryLists(Player player, IAllomancerData data) { - // Populate the metal lists - this.metal_blobs.clear(); - this.metal_entities.clear(); - if (data.isBurning(Metal.IRON) || data.isBurning(Metal.STEEL)) { - int max = PowersConfig.max_metal_detection.get(); - var negative = player.blockPosition().offset(-max, -max, -max); - var positive = player.blockPosition().offset(max, max, max); - - // Add metal entities to metal list - this.metal_entities.addAll(player.level().getEntitiesOfClass(Entity.class, new AABB(negative, positive), e -> PowerUtils.isEntityMetal(e) && !e.equals(player))); - - // Add metal blobs to metal list - var seen = new HashSet(); - BlockPos.betweenClosed(negative, positive).forEach(starter -> searchNearbyMetalBlocks(seen, starter.immutable(), player.level())); - } - - // Populate our list of nearby allomancy users - this.nearby_allomancers.clear(); - if (data.isBurning(Metal.BRONZE) && (data.isEnhanced() || !data.isBurning(Metal.COPPER))) { - // Add metal burners to a list - var negative = player.blockPosition().offset(-30, -30, -30); - var positive = player.blockPosition().offset(30, 30, 30); - var nearby_players = player.level().getEntitiesOfClass(Player.class, new AABB(negative, positive), entity -> entity != null && entity != player); - - for (Player otherPlayer : nearby_players) { - boolean cont = otherPlayer.getCapability(AllomancerCapability.PLAYER_CAP).map(otherData -> checkSeeking(data, otherPlayer, otherData)).orElse(true); - if (!cont) { - this.nearby_allomancers.clear(); - break; - } - } - } - } - - /** - * A sort of BFS with a global seen list - */ - private void searchNearbyMetalBlocks(HashSet seen, BlockPos starter, Level level) { - if (seen.contains(starter)) { + var data = player.getData(AllomancerAttachment.ALLOMANCY_DATA); + if (data.isUninvested()) { return; } - seen.add(starter); - - if (!PowerUtils.isBlockStateMetal(level.getBlockState(starter))) { - return; + // Duralumin makes you move much quicker and reach much further + int dist_modifier = data.isEnhanced() ? 2 : 1; + + // Handle our input-based powers + if (this.mc.options.keyAttack.isDown()) { + // Ray trace 20 blocks (or 40 if enhanced) + var trace = ClientUtils.getMouseOverExtended(20F * dist_modifier); + // All iron pulling powers + metalPushPull(player, data, trace, Metal.IRON, PowerUtils.PULL); + // All zinc powers + emotionPushPull(data, trace, Metal.ZINC, true); } - var points = new LinkedList(); - points.add(starter); - var blob = new MetalBlockBlob(starter); - while (!points.isEmpty()) { - var pos = points.remove(); - for (var p1 : BlockPos.withinManhattan(pos, 1, 1, 1)) { - if (!seen.contains(p1)) { - var p2 = p1.immutable(); - seen.add(p2); - if (PowerUtils.isBlockStateMetal(level.getBlockState(p2))) { - points.add(p2); - blob.add(p2); + if (this.mc.options.keyUse.isDown()) { + // Ray trace 20 blocks (or 40 if enhanced) + var trace = ClientUtils.getMouseOverExtended(20F * dist_modifier); + // All steel pushing powers + metalPushPull(player, data, trace, Metal.STEEL, PowerUtils.PUSH); + // All brass powers + emotionPushPull(data, trace, Metal.BRASS, false); + + if (data.isBurning(Metal.NICROSIL)) { + if ((trace != null) && (trace.getType() == HitResult.Type.ENTITY)) { + Entity entity = ((EntityHitResult) trace).getEntity(); + if (entity instanceof Player) { + Network.sendToServer(new EnhanceTimePayload(true, entity.getId())); } } } } - this.metal_blobs.add(blob); - } - private boolean checkSeeking(IAllomancerData data, Player otherPlayer, IAllomancerData otherData) { - if (otherData.isBurning(Metal.COPPER) && (!data.isEnhanced() || otherData.isEnhanced())) { - return false; - } - for (Metal mt : Metal.values()) { - if (otherData.isBurning(mt)) { - this.nearby_allomancers.add(otherPlayer); - break; - } - } - return true; + this.tracking.tick(); } - private void emotionPushPull(IAllomancerData data, HitResult trace, Metal metal, boolean make_aggressive) { + + private static void emotionPushPull(IAllomancerData data, HitResult trace, Metal metal, boolean make_aggressive) { if (!data.isBurning(metal) || trace == null) { return; } @@ -192,7 +107,7 @@ private void emotionPushPull(IAllomancerData data, HitResult trace, Metal metal, if (trace.getType() == HitResult.Type.ENTITY) { Entity entity = ((EntityHitResult) trace).getEntity(); if (entity instanceof PathfinderMob) { - Network.sendToServer(new ChangeEmotionPacket(entity.getId(), make_aggressive)); + Network.sendToServer(new EmotionPayload(entity.getId(), make_aggressive)); } } } @@ -205,11 +120,11 @@ private void metalPushPull(Player player, IAllomancerData data, HitResult trace, int force_multiplier = data.isEnhanced() ? 4 : 1; if (trace.getType() == HitResult.Type.ENTITY && PowerUtils.isEntityMetal(((EntityHitResult) trace).getEntity())) { - Network.sendToServer(new TryPushPullEntity(((EntityHitResult) trace).getEntity().getId(), direction * force_multiplier)); + Network.sendToServer(new EntityPushPullPayload(((EntityHitResult) trace).getEntity().getId(), direction * force_multiplier)); } else if (trace.getType() == HitResult.Type.BLOCK) { BlockPos bp = ((BlockHitResult) trace).getBlockPos(); if (PowerUtils.isBlockStateMetal(this.mc.level.getBlockState(bp)) || (player.getMainHandItem().getItem() == CombatSetup.COIN_BAG.get() && player.isCrouching())) { - Network.sendToServer(new TryPushPullBlock(bp, direction * force_multiplier)); + Network.sendToServer(new BlockPushPullPayload(bp, direction * force_multiplier)); } } } @@ -224,7 +139,7 @@ public void onKeyInput(final InputEvent.Key event) { @OnlyIn(Dist.CLIENT) @SubscribeEvent - public void onMouseInput(final InputEvent.MouseButton event) { + public void onMouseInput(final InputEvent.MouseButton.Pre event) { if (event.getAction() == GLFW.GLFW_PRESS) { acceptInput(); } @@ -246,30 +161,28 @@ private void acceptInput() { PowersConfig.enable_overlay.set(!PowersConfig.enable_overlay.get()); return; } + var data = player.getData(AllomancerAttachment.ALLOMANCY_DATA); - player.getCapability(AllomancerCapability.PLAYER_CAP).ifPresent(data -> { - for (int i = 0; i < PowersClientSetup.powers.length; i++) { - if (PowersClientSetup.powers[i].isDown()) { - ClientUtils.toggleBurn(Metal.getMetal(i), data); - } + for (int i = 0; i < PowersClientSetup.powers.length; i++) { + if (PowersClientSetup.powers[i].isDown()) { + ClientUtils.toggleBurn(Metal.getMetal(i), data); } - if (PowersClientSetup.burn.isDown()) { - switch (data.getPowerCount()) { - case 0: - break; - case 1: - ClientUtils.toggleBurn(data.getPowers()[0], data); - break; - default: - this.mc.setScreen(new MetalSelectScreen()); - break; - } + } + if (PowersClientSetup.burn.isDown()) { + switch (data.getPowerCount()) { + case 0: + break; + case 1: + ClientUtils.toggleBurn(data.getPowers()[0], data); + break; + default: + this.mc.setScreen(new MetalSelectScreen()); + break; } - }); - - + } } + @OnlyIn(Dist.CLIENT) @SubscribeEvent public void onRenderLevelStage(final RenderLevelStageEvent event) { @@ -282,69 +195,62 @@ public void onRenderLevelStage(final RenderLevelStageEvent event) { if (player == null || !player.isAlive() || this.mc.options.getCameraType().isMirrored()) { return; } + var data = player.getData(AllomancerAttachment.ALLOMANCY_DATA); - player.getCapability(AllomancerCapability.PLAYER_CAP).ifPresent(data -> { - if (data.isUninvested()) { - return; - } - PoseStack stack = setupPoseStack(event); + if (data.isUninvested()) { + return; + } + PoseStack stack = setupPoseStack(event); - double rho = 1; - float theta = (float) ((this.mc.player.getViewYRot(event.getPartialTick()) + 90) * Math.PI / 180); - float phi = Mth.clamp((float) ((this.mc.player.getViewXRot(event.getPartialTick()) + 90) * Math.PI / 180), 0.0001F, 3.14F); + double rho = 1; + float theta = (float) ((this.mc.player.getViewYRot(event.getPartialTick()) + 90) * Math.PI / 180); + float phi = Mth.clamp((float) ((this.mc.player.getViewXRot(event.getPartialTick()) + 90) * Math.PI / 180), 0.0001F, 3.14F); - Vec3 playervec = this.mc.cameraEntity - .getEyePosition(event.getPartialTick()) - .add(rho * Mth.sin(phi) * Mth.cos(theta), rho * Mth.cos(phi) - 0.35F, rho * Mth.sin(phi) * Mth.sin(theta)); + Vec3 playervec = this.mc.cameraEntity + .getEyePosition(event.getPartialTick()) + .add(rho * Mth.sin(phi) * Mth.cos(theta), rho * Mth.cos(phi) - 0.35F, rho * Mth.sin(phi) * Mth.sin(theta)); - /********************************************* - * IRON AND STEEL LINES * - *********************************************/ + /********************************************* + * IRON AND STEEL LINES * + *********************************************/ - if ((data.isBurning(Metal.IRON) || data.isBurning(Metal.STEEL))) { - for (var entity : this.metal_entities) { - ClientUtils.drawMetalLine(stack, playervec, entity.position(), 1.5F, 0F, 0.6F, 1F); - } + if ((data.isBurning(Metal.IRON) || data.isBurning(Metal.STEEL))) { + this.tracking.forEachMetalicEntity(entity -> ClientUtils.drawMetalLine(stack, playervec, entity.position(), 1.5F, 0F, 0.6F, 1F)); - for (var mb : this.metal_blobs) { - ClientUtils.drawMetalLine(stack, playervec, mb.getCenter(), Mth.clamp(0.3F + mb.size() * 0.4F, 0.5F, 7.5F), 0F, 0.6F, 1F); - } - } + this.tracking.forEachMetalBlob(blob -> ClientUtils.drawMetalLine(stack, playervec, blob.getCenter(), Mth.clamp(0.3F + blob.size() * 0.4F, 0.5F, 7.5F), 0F, 0.6F, 1F)); + } - /********************************************* - * BRONZE LINES * - *********************************************/ - if ((data.isBurning(Metal.BRONZE) && (data.isEnhanced() || !data.isBurning(Metal.COPPER)))) { - for (Player playerEntity : this.nearby_allomancers) { - ClientUtils.drawMetalLine(stack, playervec, playerEntity.position(), 5.0F, 0.7F, 0.15F, 0.15F); - } - } + /********************************************* + * BRONZE LINES * + *********************************************/ + if ((data.isBurning(Metal.BRONZE) && (data.isEnhanced() || !data.isBurning(Metal.COPPER)))) { + this.tracking.forEachSeeked(playerEntity -> ClientUtils.drawMetalLine(stack, playervec, playerEntity.position(), 5.0F, 0.7F, 0.15F, 0.15F)); + } - /********************************************* - * GOLD AND ELECTRUM LINES * - *********************************************/ - if (data.isBurning(Metal.GOLD)) { - ResourceKey deathDim = data.getDeathDim(); - if (deathDim != null && player.level().dimension() == deathDim) { - ClientUtils.drawMetalLine(stack, playervec, Vec3.atCenterOf(data.getDeathLoc()), 3.0F, 0.9F, 0.85F, 0.0F); - } + /********************************************* + * GOLD AND ELECTRUM LINES * + *********************************************/ + if (data.isBurning(Metal.GOLD)) { + ResourceKey deathDim = data.getDeathDim(); + if (deathDim != null && player.level().dimension() == deathDim) { + ClientUtils.drawMetalLine(stack, playervec, Vec3.atCenterOf(data.getDeathLoc()), 3.0F, 0.9F, 0.85F, 0.0F); } - if (data.isBurning(Metal.ELECTRUM)) { - ResourceKey spawnDim = data.getSpawnDim(); - if (spawnDim == null && player.level().dimension() == Level.OVERWORLD) { // overworld, no spawn --> use world spawn - var levelData = player.level().getLevelData(); - BlockPos spawnLoc = new BlockPos(levelData.getXSpawn(), levelData.getYSpawn(), levelData.getZSpawn()); - ClientUtils.drawMetalLine(stack, playervec, Vec3.atCenterOf(spawnLoc), 3.0F, 0.7F, 0.8F, 0.2F); - } else if (spawnDim != null && player.level().dimension() == spawnDim) { - ClientUtils.drawMetalLine(stack, playervec, Vec3.atCenterOf(data.getSpawnLoc()), 3.0F, 0.7F, 0.8F, 0.2F); - } + } + if (data.isBurning(Metal.ELECTRUM)) { + ResourceKey spawnDim = data.getSpawnDim(); + if (spawnDim == null && player.level().dimension() == Level.OVERWORLD) { // overworld, no spawn --> use world spawn + var levelData = player.level().getLevelData(); + BlockPos spawnLoc = new BlockPos(levelData.getXSpawn(), levelData.getYSpawn(), levelData.getZSpawn()); + ClientUtils.drawMetalLine(stack, playervec, Vec3.atCenterOf(spawnLoc), 3.0F, 0.7F, 0.8F, 0.2F); + } else if (spawnDim != null && player.level().dimension() == spawnDim) { + ClientUtils.drawMetalLine(stack, playervec, Vec3.atCenterOf(data.getSpawnLoc()), 3.0F, 0.7F, 0.8F, 0.2F); } + } - teardownPoseStack(stack); + teardownPoseStack(stack); - }); } private static void teardownPoseStack(PoseStack stack) { @@ -385,29 +291,63 @@ public void onSound(PlaySoundEvent event) { if ((player == null) || (sound == null) || !player.isAlive()) { return; } + var data = player.getData(AllomancerAttachment.ALLOMANCY_DATA); - player.getCapability(AllomancerCapability.PLAYER_CAP).ifPresent(data -> { - double motionX, motionY, motionZ, magnitude; + double motionX, motionY, motionZ, magnitude; - if (data.isBurning(Metal.TIN)) { + if (data.isBurning(Metal.TIN)) { - magnitude = Math.sqrt(player.position().distanceToSqr(sound.getX(), sound.getY(), sound.getZ())); + magnitude = Math.sqrt(player.position().distanceToSqr(sound.getX(), sound.getY(), sound.getZ())); - if (((magnitude) > 25) || ((magnitude) < 3)) { - return; - } - Vec3 vec = player.position(); - double posX = vec.x(), posY = vec.y(), posZ = vec.z(); - // Spawn sound particles - String soundName = sound.getLocation().toString(); - if (soundName.contains("entity") || soundName.contains("step")) { - motionX = ((posX - (event.getSound().getX() + .5)) * -0.7) / magnitude; - motionY = ((posY - (event.getSound().getY() + .2)) * -0.7) / magnitude; - motionZ = ((posZ - (event.getSound().getZ() + .5)) * -0.7) / magnitude; - this.mc.particleEngine.createParticle(new SoundParticleData(sound.getSource()), posX + (Math.sin(Math.toRadians(player.getYHeadRot())) * -.7d), posY + .2, - posZ + (Math.cos(Math.toRadians(player.getYHeadRot())) * .7d), motionX, motionY, motionZ); - } + if (((magnitude) > 25) || ((magnitude) < 3)) { + return; + } + Vec3 vec = player.position(); + double posX = vec.x(), posY = vec.y(), posZ = vec.z(); + // Spawn sound particles + String soundName = sound.getLocation().toString(); + if (soundName.contains("entity") || soundName.contains("step")) { + motionX = ((posX - (event.getSound().getX() + .5)) * -0.7) / magnitude; + motionY = ((posY - (event.getSound().getY() + .2)) * -0.7) / magnitude; + motionZ = ((posZ - (event.getSound().getZ() + .5)) * -0.7) / magnitude; + this.mc.particleEngine.createParticle(new SoundParticleData(sound.getSource()), posX + (Math.sin(Math.toRadians(player.getYHeadRot())) * -.7d), posY + .2, + posZ + (Math.cos(Math.toRadians(player.getYHeadRot())) * .7d), motionX, motionY, motionZ); + } + } + } + + /** + * Used to enable movement while the MetalSelectScreen is open + */ + @SubscribeEvent + public void updateInputEvent(MovementInputUpdateEvent event) { + if (this.mc.screen instanceof MetalSelectScreen) { + Options options = this.mc.options; + Input eInput = event.getInput(); + float f = Mth.clamp(0.3F + EnchantmentHelper.getSneakingSpeedBonus(this.mc.player), 0.0F, 1.0F); + // from KeyboardInput#tick + eInput.up = InputConstants.isKeyDown(this.mc.getWindow().getWindow(), options.keyUp.getKey().getValue()); + eInput.down = InputConstants.isKeyDown(this.mc.getWindow().getWindow(), options.keyDown.getKey().getValue()); + eInput.left = InputConstants.isKeyDown(this.mc.getWindow().getWindow(), options.keyLeft.getKey().getValue()); + eInput.right = InputConstants.isKeyDown(this.mc.getWindow().getWindow(), options.keyRight.getKey().getValue()); + eInput.forwardImpulse = eInput.up == eInput.down ? 0.0f : (eInput.up ? 1.0f : -1.0f); + eInput.leftImpulse = eInput.left == eInput.right ? 0.0f : (eInput.left ? 1.0f : -1.0f); + eInput.jumping = InputConstants.isKeyDown(this.mc.getWindow().getWindow(), options.keyJump.getKey().getValue()); + eInput.shiftKeyDown = InputConstants.isKeyDown(this.mc.getWindow().getWindow(), options.keyShift.getKey().getValue()); + if (this.mc.player.isMovingSlowly()) { + eInput.leftImpulse *= f; + eInput.forwardImpulse *= f; } - }); + + // from LocalPlayer#aiStep + if (!this.mc.player.isSprinting() && + (!(this.mc.player.isInWater() || this.mc.player.isInFluidType((fluidType, height) -> this.mc.player.canSwimInFluidType(fluidType))) || + (this.mc.player.isUnderWater() || this.mc.player.canStartSwimming())) && eInput.forwardImpulse >= 0.8 && !this.mc.player.isUsingItem() && + (this.mc.player.getFoodData().getFoodLevel() > 6.0F || this.mc.player.getAbilities().mayfly) && !this.mc.player.hasEffect(MobEffects.BLINDNESS) && + InputConstants.isKeyDown(this.mc.getWindow().getWindow(), options.keySprint.getKey().getValue())) { + this.mc.player.setSprinting(true); + } + } } + } diff --git a/src/main/java/com/legobmw99/allomancy/modules/powers/client/ClientPayloadHandler.java b/src/main/java/com/legobmw99/allomancy/modules/powers/client/ClientPayloadHandler.java new file mode 100644 index 00000000..146cca5a --- /dev/null +++ b/src/main/java/com/legobmw99/allomancy/modules/powers/client/ClientPayloadHandler.java @@ -0,0 +1,37 @@ +package com.legobmw99.allomancy.modules.powers.client; + +import com.legobmw99.allomancy.Allomancy; +import com.legobmw99.allomancy.modules.powers.data.AllomancerAttachment; +import com.legobmw99.allomancy.modules.powers.network.AllomancerDataPayload; +import com.legobmw99.allomancy.modules.powers.network.EnhanceTimePayload; +import net.minecraft.client.Minecraft; +import net.minecraft.network.chat.Component; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.player.Player; +import net.neoforged.neoforge.network.handling.PlayPayloadContext; + +public class ClientPayloadHandler { + + public static void handleAllomancerData(final AllomancerDataPayload data, final PlayPayloadContext ctx) { + ctx.workHandler().submitAsync(() -> { + Minecraft.getInstance().level.getPlayerByUUID(data.player()).getData(AllomancerAttachment.ALLOMANCY_DATA).deserializeNBT(data.nbt()); + }).exceptionally(e -> { + Allomancy.LOGGER.error("Failed to handle allomancerData update", e); + ctx.packetHandler().disconnect(Component.translatable("allomancy.networking.failed", e.getMessage())); + return null; + }); + } + + public static void updateEnhanced(final EnhanceTimePayload payload, final PlayPayloadContext ctx) { + ctx.workHandler().submitAsync(() -> { + Entity e = Minecraft.getInstance().level.getEntity(payload.entityID()); + if (e instanceof Player player) { + player.getData(AllomancerAttachment.ALLOMANCY_DATA).setEnhanced(payload.enhanceTime()); + } + }).exceptionally(e -> { + Allomancy.LOGGER.error("Failed to handle client updateEnhanced", e); + ctx.packetHandler().disconnect(Component.translatable("allomancy.networking.failed", e.getMessage())); + return null; + }); + } +} diff --git a/src/main/java/com/legobmw99/allomancy/modules/powers/client/PowersClientSetup.java b/src/main/java/com/legobmw99/allomancy/modules/powers/client/PowersClientSetup.java index b0868b78..fffe6c6e 100644 --- a/src/main/java/com/legobmw99/allomancy/modules/powers/client/PowersClientSetup.java +++ b/src/main/java/com/legobmw99/allomancy/modules/powers/client/PowersClientSetup.java @@ -7,25 +7,26 @@ import com.mojang.serialization.Codec; import net.minecraft.client.KeyMapping; import net.minecraft.core.particles.ParticleType; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.api.distmarker.OnlyIn; -import net.minecraftforge.client.event.RegisterKeyMappingsEvent; -import net.minecraftforge.client.event.RegisterParticleProvidersEvent; -import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext; -import net.minecraftforge.registries.DeferredRegister; -import net.minecraftforge.registries.ForgeRegistries; -import net.minecraftforge.registries.RegistryObject; +import net.minecraft.core.registries.Registries; +import net.neoforged.api.distmarker.Dist; +import net.neoforged.api.distmarker.OnlyIn; +import net.neoforged.bus.api.IEventBus; +import net.neoforged.neoforge.client.event.RegisterKeyMappingsEvent; +import net.neoforged.neoforge.client.event.RegisterParticleProvidersEvent; +import net.neoforged.neoforge.registries.DeferredRegister; import org.lwjgl.glfw.GLFW; +import java.util.function.Supplier; + public class PowersClientSetup { - public static final DeferredRegister> PARTICLES = DeferredRegister.create(ForgeRegistries.PARTICLE_TYPES, Allomancy.MODID); - public static final RegistryObject> SOUND_PARTICLE_TYPE = PARTICLES.register("sound_particle", - () -> new ParticleType<>(true, SoundParticleData.DESERIALIZER) { - @Override - public Codec codec() { - return null; - } - }); + public static final DeferredRegister> PARTICLES = DeferredRegister.create(Registries.PARTICLE_TYPE, Allomancy.MODID); + public static final Supplier> SOUND_PARTICLE_TYPE = PARTICLES.register("sound_particle", + () -> new ParticleType<>(true, SoundParticleData.DESERIALIZER) { + @Override + public Codec codec() { + return SoundParticleData.CODEC; + } + }); @OnlyIn(Dist.CLIENT) public static KeyMapping hud; @@ -50,8 +51,8 @@ public static void registerKeyBinding(final RegisterKeyMappingsEvent evt) { } - public static void register() { - PARTICLES.register(FMLJavaModLoadingContext.get().getModEventBus()); + public static void register(IEventBus bus) { + PARTICLES.register(bus); } public static void registerParticle(final RegisterParticleProvidersEvent event) { diff --git a/src/main/java/com/legobmw99/allomancy/modules/powers/client/gui/MetalOverlay.java b/src/main/java/com/legobmw99/allomancy/modules/powers/client/gui/MetalOverlay.java index cd2f917b..d4465047 100644 --- a/src/main/java/com/legobmw99/allomancy/modules/powers/client/gui/MetalOverlay.java +++ b/src/main/java/com/legobmw99/allomancy/modules/powers/client/gui/MetalOverlay.java @@ -1,8 +1,9 @@ package com.legobmw99.allomancy.modules.powers.client.gui; +import com.legobmw99.allomancy.Allomancy; import com.legobmw99.allomancy.api.enums.Metal; import com.legobmw99.allomancy.modules.powers.PowersConfig; -import com.legobmw99.allomancy.modules.powers.data.AllomancerCapability; +import com.legobmw99.allomancy.modules.powers.data.AllomancerAttachment; import com.mojang.blaze3d.systems.RenderSystem; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.GuiGraphics; @@ -10,9 +11,9 @@ import net.minecraft.client.player.LocalPlayer; import net.minecraft.client.renderer.GameRenderer; import net.minecraft.resources.ResourceLocation; -import net.minecraftforge.client.event.RegisterGuiOverlaysEvent; -import net.minecraftforge.client.gui.overlay.ForgeGui; -import net.minecraftforge.client.gui.overlay.IGuiOverlay; +import net.neoforged.neoforge.client.event.RegisterGuiOverlaysEvent; +import net.neoforged.neoforge.client.gui.overlay.ExtendedGui; +import net.neoforged.neoforge.client.gui.overlay.IGuiOverlay; import java.awt.*; @@ -33,7 +34,7 @@ public class MetalOverlay implements IGuiOverlay { private MetalOverlay() {} public static void registerGUI(final RegisterGuiOverlaysEvent evt) { - evt.registerAboveAll("metal_display", new MetalOverlay()); + evt.registerAboveAll(new ResourceLocation(Allomancy.MODID, "metal_display"), new MetalOverlay()); } private static void blit(GuiGraphics graphics, int x, int y, float uOffset, float vOffset, int uWidth, int vHeight) { @@ -41,7 +42,7 @@ private static void blit(GuiGraphics graphics, int x, int y, float uOffset, floa } @Override - public void render(ForgeGui gui, GuiGraphics guiGraphics, float partialTick, int screenWidth, int screenHeight) { + public void render(ExtendedGui gui, GuiGraphics guiGraphics, float partialTick, int screenWidth, int screenHeight) { Minecraft mc = Minecraft.getInstance(); LocalPlayer player = mc.player; @@ -81,34 +82,34 @@ public void render(ForgeGui gui, GuiGraphics guiGraphics, float partialTick, int RenderSystem.setShader(GameRenderer::getPositionTexShader); RenderSystem.setShaderTexture(0, meterLoc); - player.getCapability(AllomancerCapability.PLAYER_CAP).ifPresent(data -> { + var data = player.getData(AllomancerAttachment.ALLOMANCY_DATA); - if (data.isUninvested()) { - return; - } - /* - * The rendering for the overlay - */ - for (Metal mt : Metal.values()) { - if (data.hasPower(mt)) { - int metalY = 9 - data.getAmount(mt); - int i = mt.getIndex(); - int offset = (i / 2) * 4; // Adding a gap between pairs - // Draw the bars first - blit(guiGraphics, renderX + 1 + (7 * i) + offset, renderY + 5 + metalY, 7 + (6 * i), 1 + metalY, 3, 10 - metalY); - // Draw the gauges second, so that highlights and decorations show over the bar. - blit(guiGraphics, renderX + (7 * i) + offset, renderY, 0, 0, 5, 20); - // Draw the fire if it is burning - if (data.isBurning(mt)) { - int frameCount = (currentFrame + i) % 4; - var frame = Frames[frameCount]; - blit(guiGraphics, renderX + (7 * i) + offset, renderY + 4 + metalY, frame.x, frame.y, 5, 3); - } - } + if (data.isUninvested()) { + return; + } + /* + * The rendering for the overlay + */ + for (Metal mt : Metal.values()) { + if (data.hasPower(mt)) { + int metalY = 9 - data.getAmount(mt); + int i = mt.getIndex(); + int offset = (i / 2) * 4; // Adding a gap between pairs + // Draw the bars first + blit(guiGraphics, renderX + 1 + (7 * i) + offset, renderY + 5 + metalY, 7 + (6 * i), 1 + metalY, 3, 10 - metalY); + // Draw the gauges second, so that highlights and decorations show over the bar. + blit(guiGraphics, renderX + (7 * i) + offset, renderY, 0, 0, 5, 20); + // Draw the fire if it is burning + if (data.isBurning(mt)) { + int frameCount = (currentFrame + i) % 4; + var frame = Frames[frameCount]; + blit(guiGraphics, renderX + (7 * i) + offset, renderY + 4 + metalY, frame.x, frame.y, 5, 3); + } } - }); + + } // Update the animation counters diff --git a/src/main/java/com/legobmw99/allomancy/modules/powers/client/gui/MetalSelectScreen.java b/src/main/java/com/legobmw99/allomancy/modules/powers/client/gui/MetalSelectScreen.java index d8c4172c..f7a9b297 100644 --- a/src/main/java/com/legobmw99/allomancy/modules/powers/client/gui/MetalSelectScreen.java +++ b/src/main/java/com/legobmw99/allomancy/modules/powers/client/gui/MetalSelectScreen.java @@ -13,7 +13,7 @@ import com.legobmw99.allomancy.modules.powers.PowersConfig; import com.legobmw99.allomancy.modules.powers.client.PowersClientSetup; import com.legobmw99.allomancy.modules.powers.client.util.ClientUtils; -import com.legobmw99.allomancy.modules.powers.data.AllomancerCapability; +import com.legobmw99.allomancy.modules.powers.data.AllomancerAttachment; import com.mojang.blaze3d.systems.RenderSystem; import com.mojang.blaze3d.vertex.BufferBuilder; import com.mojang.blaze3d.vertex.DefaultVertexFormat; @@ -28,8 +28,8 @@ import net.minecraft.resources.ResourceLocation; import net.minecraft.sounds.SoundEvents; import net.minecraft.util.Mth; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.api.distmarker.OnlyIn; +import net.neoforged.api.distmarker.Dist; +import net.neoforged.api.distmarker.OnlyIn; import org.lwjgl.opengl.GL11; import java.util.Arrays; @@ -62,106 +62,105 @@ private static int toMetalIndex(int segment) { public void render(GuiGraphics guiGraphics, int mx, int my, float partialTicks) { super.render(guiGraphics, mx, my, partialTicks); - this.mc.player.getCapability(AllomancerCapability.PLAYER_CAP).ifPresent(data -> { + var data = this.mc.player.getData(AllomancerAttachment.ALLOMANCY_DATA); - int x = this.width / 2; - int y = this.height / 2; - int maxRadius = 80; + int x = this.width / 2; + int y = this.height / 2; + int maxRadius = 80; - double angle = mouseAngle(x, y, mx, my); + double angle = mouseAngle(x, y, mx, my); - int segments = METAL_NAMES.length; - float step = (float) Math.PI / 180; - float degPer = (float) Math.PI * 2 / segments; + int segments = METAL_NAMES.length; + float step = (float) Math.PI / 180; + float degPer = (float) Math.PI * 2 / segments; - this.slotSelected = -1; + this.slotSelected = -1; - Tesselator tess = Tesselator.getInstance(); - BufferBuilder buf = tess.getBuilder(); + Tesselator tess = Tesselator.getInstance(); + BufferBuilder buf = tess.getBuilder(); - RenderSystem.disableCull(); - RenderSystem.enableBlend(); - RenderSystem.setShader(GameRenderer::getPositionColorShader); + RenderSystem.disableCull(); + RenderSystem.enableBlend(); + RenderSystem.setShader(GameRenderer::getPositionColorShader); - buf.begin(VertexFormat.Mode.TRIANGLE_FAN, DefaultVertexFormat.POSITION_COLOR); + buf.begin(VertexFormat.Mode.TRIANGLE_FAN, DefaultVertexFormat.POSITION_COLOR); - for (int seg = 0; seg < segments; seg++) { - Metal mt = Metal.getMetal(toMetalIndex(seg)); - boolean mouseInSector = data.hasPower(mt) && (degPer * seg < angle && angle < degPer * (seg + 1)); - float radius = Math.max(0F, Math.min((this.timeIn + partialTicks - seg * 6F / segments) * 40F, maxRadius)); - if (mouseInSector) { - this.slotSelected = seg; - radius *= 1.025f; - } + for (int seg = 0; seg < segments; seg++) { + Metal mt = Metal.getMetal(toMetalIndex(seg)); + boolean mouseInSector = data.hasPower(mt) && (degPer * seg < angle && angle < degPer * (seg + 1)); + float radius = Math.max(0F, Math.min((this.timeIn + partialTicks - seg * 6F / segments) * 40F, maxRadius)); + if (mouseInSector) { + this.slotSelected = seg; + radius *= 1.025f; + } - int gs = 0x55; - if (seg % 2 == 0) { - gs += 0x19; - } + int gs = 0x55; + if (seg % 2 == 0) { + gs += 0x19; + } - gs = (!data.hasPower(mt) || data.getAmount(mt) == 0) ? 0 : gs; + gs = (!data.hasPower(mt) || data.getAmount(mt) == 0) ? 0 : gs; - int r = data.isBurning(mt) ? 0xFF : gs; - int g = gs; - int b = gs; - int a = 0x99; + int r = data.isBurning(mt) ? 0xFF : gs; + int g = gs; + int b = gs; + int a = 0x99; - if (seg == 0) { - buf.vertex(x, y, 0).color(0x19, 0x19, 0x19, 0x15).endVertex(); - } + if (seg == 0) { + buf.vertex(x, y, 0).color(0x19, 0x19, 0x19, 0x15).endVertex(); + } - for (float v = 0; v < degPer + step / 2; v += step) { - float rad = v + seg * degPer; - float xp = x + Mth.cos(rad) * radius; - float yp = y + Mth.sin(rad) * radius; + for (float v = 0; v < degPer + step / 2; v += step) { + float rad = v + seg * degPer; + float xp = x + Mth.cos(rad) * radius; + float yp = y + Mth.sin(rad) * radius; - if (v == 0) { - buf.vertex(xp, yp, 0).color(r, g, b, a).endVertex(); - } + if (v == 0) { buf.vertex(xp, yp, 0).color(r, g, b, a).endVertex(); } + buf.vertex(xp, yp, 0).color(r, g, b, a).endVertex(); + } + } + tess.end(); + + for (int seg = 0; seg < segments; seg++) { + Metal mt = Metal.getMetal(toMetalIndex(seg)); + boolean mouseInSector = data.hasPower(mt) && (degPer * seg < angle && angle < degPer * (seg + 1)); + float radius = Math.max(0F, Math.min((this.timeIn + partialTicks - seg * 6F / segments) * 40F, maxRadius)); + if (mouseInSector) { + radius *= 1.025f; } - tess.end(); - - for (int seg = 0; seg < segments; seg++) { - Metal mt = Metal.getMetal(toMetalIndex(seg)); - boolean mouseInSector = data.hasPower(mt) && (degPer * seg < angle && angle < degPer * (seg + 1)); - float radius = Math.max(0F, Math.min((this.timeIn + partialTicks - seg * 6F / segments) * 40F, maxRadius)); - if (mouseInSector) { - radius *= 1.025f; - } - float rad = (seg + 0.5f) * degPer; - float xp = x + Mth.cos(rad) * radius; - float yp = y + Mth.sin(rad) * radius; - - float xsp = xp - 4; - float ysp = yp; - String name = (mouseInSector ? ChatFormatting.UNDERLINE : ChatFormatting.RESET) + Component.translatable(METAL_LOCAL[toMetalIndex(seg)]).getString(); - int textwidth = this.mc.font.width(name); + float rad = (seg + 0.5f) * degPer; + float xp = x + Mth.cos(rad) * radius; + float yp = y + Mth.sin(rad) * radius; - if (xsp < x) { - xsp -= textwidth - 8; - } - if (ysp < y) { - ysp -= 9; - } + float xsp = xp - 4; + float ysp = yp; + String name = (mouseInSector ? ChatFormatting.UNDERLINE : ChatFormatting.RESET) + Component.translatable(METAL_LOCAL[toMetalIndex(seg)]).getString(); + int textwidth = this.font.width(name); + if (xsp < x) { + xsp -= textwidth - 8; + } + if (ysp < y) { + ysp -= 9; + } + guiGraphics.drawString(this.font, name, xsp, ysp, 0xFFFFFF, true); - double mod = 0.8; - int xdp = (int) ((xp - x) * mod + x); - int ydp = (int) ((yp - y) * mod + y); - RenderSystem.setShader(GameRenderer::getPositionTexShader); - RenderSystem.setShaderTexture(0, METAL_ICONS[toMetalIndex(seg)]); - guiGraphics.blit(METAL_ICONS[toMetalIndex(seg)], xdp - 8, ydp - 8, 0, 0, 16, 16, 16, 16); + double mod = 0.8; + int xdp = (int) ((xp - x) * mod + x); + int ydp = (int) ((yp - y) * mod + y); + RenderSystem.setShader(GameRenderer::getPositionTexShader); + RenderSystem.setShaderTexture(0, METAL_ICONS[toMetalIndex(seg)]); + guiGraphics.blit(METAL_ICONS[toMetalIndex(seg)], xdp - 8, ydp - 8, 0, 0, 16, 16, 16, 16); - } + } - RenderSystem.enableBlend(); - RenderSystem.blendFuncSeparate(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA, 1, 0); - RenderSystem.disableBlend(); - }); + RenderSystem.enableBlend(); + RenderSystem.blendFuncSeparate(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA, 1, 0); + RenderSystem.disableBlend(); } @@ -204,13 +203,16 @@ public boolean mouseReleased(double mouseX, double mouseY, int button) { private void toggleSelected() { if (this.slotSelected != -1) { Metal mt = Metal.getMetal(toMetalIndex(this.slotSelected)); - this.mc.player.getCapability(AllomancerCapability.PLAYER_CAP).ifPresent(data -> { - ClientUtils.toggleBurn(mt, data); - this.mc.player.playSound(SoundEvents.UI_BUTTON_CLICK.get(), 0.1F, 2.0F); - }); + var data = this.mc.player.getData(AllomancerAttachment.ALLOMANCY_DATA); + ClientUtils.toggleBurn(mt, data); + this.mc.player.playSound(SoundEvents.UI_BUTTON_CLICK.value(), 0.1F, 2.0F); } } + @Override + public void renderTransparentBackground(GuiGraphics unused) { + } + @Override public boolean isPauseScreen() { return false; diff --git a/src/main/java/com/legobmw99/allomancy/modules/powers/client/particle/SoundParticle.java b/src/main/java/com/legobmw99/allomancy/modules/powers/client/particle/SoundParticle.java index 6ecc08b4..412893f7 100644 --- a/src/main/java/com/legobmw99/allomancy/modules/powers/client/particle/SoundParticle.java +++ b/src/main/java/com/legobmw99/allomancy/modules/powers/client/particle/SoundParticle.java @@ -6,8 +6,8 @@ import net.minecraft.client.particle.TextureSheetParticle; import net.minecraft.sounds.SoundSource; import net.minecraft.world.level.Level; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.api.distmarker.OnlyIn; +import net.neoforged.api.distmarker.Dist; +import net.neoforged.api.distmarker.OnlyIn; @OnlyIn(Dist.CLIENT) public class SoundParticle extends TextureSheetParticle { diff --git a/src/main/java/com/legobmw99/allomancy/modules/powers/client/particle/SoundParticleData.java b/src/main/java/com/legobmw99/allomancy/modules/powers/client/particle/SoundParticleData.java index 55207aa6..3df130c9 100644 --- a/src/main/java/com/legobmw99/allomancy/modules/powers/client/particle/SoundParticleData.java +++ b/src/main/java/com/legobmw99/allomancy/modules/powers/client/particle/SoundParticleData.java @@ -2,15 +2,18 @@ import com.legobmw99.allomancy.modules.powers.client.PowersClientSetup; import com.mojang.brigadier.StringReader; +import com.mojang.serialization.Codec; +import com.mojang.serialization.codecs.RecordCodecBuilder; import net.minecraft.core.particles.ParticleOptions; import net.minecraft.core.particles.ParticleType; +import net.minecraft.core.registries.BuiltInRegistries; import net.minecraft.network.FriendlyByteBuf; import net.minecraft.sounds.SoundSource; -import net.minecraftforge.registries.ForgeRegistries; public class SoundParticleData implements ParticleOptions { - + public static final Codec CODEC = RecordCodecBuilder.create( + instance -> instance.group(Codec.INT.fieldOf("type").forGetter(d -> d.getSoundType().ordinal())).apply(instance, s -> new SoundParticleData(SoundSource.values()[s]))); public static final ParticleOptions.Deserializer DESERIALIZER = new ParticleOptions.Deserializer<>() { @Override @@ -45,6 +48,6 @@ public void writeToNetwork(FriendlyByteBuf buffer) { @Override public String writeToString() { - return ForgeRegistries.PARTICLE_TYPES.getKey(this.getType()) + " " + this.type.toString(); + return BuiltInRegistries.PARTICLE_TYPE.getKey(this.getType()) + " " + this.type.toString(); } } diff --git a/src/main/java/com/legobmw99/allomancy/modules/powers/client/util/ClientUtils.java b/src/main/java/com/legobmw99/allomancy/modules/powers/client/util/ClientUtils.java index 6ecc3b94..be141306 100644 --- a/src/main/java/com/legobmw99/allomancy/modules/powers/client/util/ClientUtils.java +++ b/src/main/java/com/legobmw99/allomancy/modules/powers/client/util/ClientUtils.java @@ -2,7 +2,7 @@ import com.legobmw99.allomancy.api.data.IAllomancerData; import com.legobmw99.allomancy.api.enums.Metal; -import com.legobmw99.allomancy.modules.powers.network.UpdateBurnPacket; +import com.legobmw99.allomancy.modules.powers.network.ToggleBurnPayload; import com.legobmw99.allomancy.network.Network; import com.mojang.blaze3d.systems.RenderSystem; import com.mojang.blaze3d.vertex.*; @@ -16,8 +16,8 @@ import net.minecraft.world.phys.EntityHitResult; import net.minecraft.world.phys.HitResult; import net.minecraft.world.phys.Vec3; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.api.distmarker.OnlyIn; +import net.neoforged.api.distmarker.Dist; +import net.neoforged.api.distmarker.OnlyIn; import org.joml.Matrix4f; import javax.annotation.Nullable; @@ -98,21 +98,21 @@ public static void drawMetalLine(PoseStack stack, Vec3 player, Vec3 dest, float /** * Used to toggle a metal's burn state and play a sound effect * - * @param metal the index of the metal to toggle - * @param capability the capability being handled + * @param metal the index of the metal to toggle + * @param data the Allomancer data of the player */ - public static void toggleBurn(Metal metal, IAllomancerData capability) { - if (!capability.hasPower(metal)) { + public static void toggleBurn(Metal metal, IAllomancerData data) { + if (!data.hasPower(metal)) { return; } - Network.sendToServer(new UpdateBurnPacket(metal, !capability.isBurning(metal))); + Network.sendToServer(new ToggleBurnPayload(metal, !data.isBurning(metal))); - if (capability.getAmount(metal) > 0) { - capability.setBurning(metal, !capability.isBurning(metal)); + if (data.getAmount(metal) > 0) { + data.setBurning(metal, !data.isBurning(metal)); } // play a sound effect - if (capability.isBurning(metal)) { + if (data.isBurning(metal)) { player.playSound(SoundEvent.createFixedRangeEvent(new ResourceLocation("item.flintandsteel.use"), 1f), 1, 5); } else { player.playSound(SoundEvent.createFixedRangeEvent(new ResourceLocation("block.fire.extinguish"), 1f), 1, 4); diff --git a/src/main/java/com/legobmw99/allomancy/modules/powers/client/util/MetalBlockBlob.java b/src/main/java/com/legobmw99/allomancy/modules/powers/client/util/MetalBlockBlob.java deleted file mode 100644 index e3a8a238..00000000 --- a/src/main/java/com/legobmw99/allomancy/modules/powers/client/util/MetalBlockBlob.java +++ /dev/null @@ -1,54 +0,0 @@ -package com.legobmw99.allomancy.modules.powers.client.util; - -import net.minecraft.client.Minecraft; -import net.minecraft.core.BlockPos; -import net.minecraft.world.level.Level; -import net.minecraft.world.phys.Vec3; - -public class MetalBlockBlob { - - private static final Level level = Minecraft.getInstance().level; - private int blocks = 0; - private Vec3 center = null; - - public MetalBlockBlob(BlockPos initial) { - this.add(initial); - } - - public MetalBlockBlob() { - } - - private static Vec3 getCenterOfBlock(BlockPos pos) { - try { - return Vec3.atLowerCornerOf(pos).add(level.getBlockState(pos).getShape(level, pos).bounds().getCenter()); - } catch (UnsupportedOperationException e) { - return Vec3.atCenterOf(pos); - } - } - - public int size() { - return this.blocks; - } - - public void add(BlockPos pos) { - pos = pos.immutable(); - - this.blocks += 1; - - if (this.center == null) { - this.center = getCenterOfBlock(pos); - } else { - this.center = this.center.scale(this.blocks - 1).add(getCenterOfBlock(pos)).scale(1.0D / this.blocks); - } - - } - - public Vec3 getCenter() { - return this.center; - } - - @Override - public String toString() { - return "MetalBlockBlob{" + "blocks=" + this.blocks + ", center=" + this.center + '}'; - } -} diff --git a/src/main/java/com/legobmw99/allomancy/modules/powers/client/util/SensoryTracking.java b/src/main/java/com/legobmw99/allomancy/modules/powers/client/util/SensoryTracking.java new file mode 100644 index 00000000..b06d51ab --- /dev/null +++ b/src/main/java/com/legobmw99/allomancy/modules/powers/client/util/SensoryTracking.java @@ -0,0 +1,184 @@ +package com.legobmw99.allomancy.modules.powers.client.util; + +import com.legobmw99.allomancy.api.data.IAllomancerData; +import com.legobmw99.allomancy.api.enums.Metal; +import com.legobmw99.allomancy.modules.powers.PowerUtils; +import com.legobmw99.allomancy.modules.powers.PowersConfig; +import com.legobmw99.allomancy.modules.powers.data.AllomancerAttachment; +import net.minecraft.client.Minecraft; +import net.minecraft.core.BlockPos; +import net.minecraft.util.ArrayListDeque; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.level.Level; +import net.minecraft.world.phys.AABB; +import net.minecraft.world.phys.Vec3; + +import java.util.*; +import java.util.function.Consumer; + +public class SensoryTracking { + + private final List metal_entities = new ArrayList<>(); + private final List metal_blobs = new ArrayList<>(); + private final List nearby_allomancers = new ArrayList<>(); + + private int tickOffset = 0; + private final Deque to_consider = new ArrayListDeque<>(); + private final Set seen = new HashSet<>(); + + public void tick() { + this.tickOffset = (this.tickOffset + 1) % 2; + if (this.tickOffset == 0) { + populateSensoryLists(); + } + } + + public void forEachSeeked(Consumer f) { + this.nearby_allomancers.forEach(f); + } + + public void forEachMetalicEntity(Consumer f) { + this.metal_entities.forEach(f); + } + + public void forEachMetalBlob(Consumer f) { + this.metal_blobs.forEach(f); + } + + private void populateSensoryLists() { + Player player = Minecraft.getInstance().player; + IAllomancerData data = player.getData(AllomancerAttachment.ALLOMANCY_DATA); + + this.metal_blobs.clear(); + this.metal_entities.clear(); + if (data.isBurning(Metal.IRON) || data.isBurning(Metal.STEEL)) { + int max = PowersConfig.max_metal_detection.get(); + var negative = player.blockPosition().offset(-max, -max, -max); + var positive = player.blockPosition().offset(max, max, max); + + // Add metal entities to metal list + this.metal_entities.addAll( + player.level().getEntitiesOfClass(Entity.class, AABB.encapsulatingFullBlocks(negative, positive), e -> PowerUtils.isEntityMetal(e) && !e.equals(player))); + + // Add metal blobs to metal list + this.seen.clear(); + BlockPos.betweenClosed(negative, positive).forEach(starter -> searchNearbyMetalBlocks(player.blockPosition(), max, starter.immutable(), player.level())); + } + + // Populate our list of nearby allomancy users + this.nearby_allomancers.clear(); + if (data.isBurning(Metal.BRONZE) && (data.isEnhanced() || !data.isBurning(Metal.COPPER))) { + // Add metal burners to a list + var negative = player.position().add(-30, -30, -30); + var positive = player.position().add(30, 30, 30); + + + var nearby_players = player.level().getEntitiesOfClass(Player.class, new AABB(negative, positive), entity -> entity != null && entity != player); + + for (Player otherPlayer : nearby_players) { + if (!addSeeked(data, otherPlayer)) { + this.nearby_allomancers.clear(); + break; + } + } + } + } + + /** + * A sort of BFS with a global seen list + */ + private void searchNearbyMetalBlocks(BlockPos origin, int range, BlockPos starter, Level level) { + if (this.seen.contains(starter)) { + return; + } + this.seen.add(starter); + + if (!PowerUtils.isBlockStateMetal(level.getBlockState(starter))) { + return; + } + + int range_sqr = 4 * range * range; + + this.to_consider.clear(); + this.to_consider.addFirst(starter); + + var blob = new MetalBlockBlob(starter); + while (!this.to_consider.isEmpty()) { + var pos = this.to_consider.removeLast(); + for (var p1 : BlockPos.withinManhattan(pos, 1, 1, 1)) { + if (!this.seen.contains(p1)) { + var p2 = p1.immutable(); + this.seen.add(p2); + if (origin.distSqr(p2) < range_sqr && PowerUtils.isBlockStateMetal(level.getBlockState(p2))) { + this.to_consider.add(p2); + blob.add(p2); + } + } + } + } + this.metal_blobs.add(blob); + } + + private boolean addSeeked(IAllomancerData data, Player otherPlayer) { + var otherData = otherPlayer.getData(AllomancerAttachment.ALLOMANCY_DATA); + if (otherData.isBurning(Metal.COPPER) && (!data.isEnhanced() || otherData.isEnhanced())) { + return false; + } + + if (Arrays.stream(Metal.values()).anyMatch(otherData::isBurning)) { + this.nearby_allomancers.add(otherPlayer); + } + + return true; + } + + + public static class MetalBlockBlob { + + private static final Level level = Minecraft.getInstance().level; + private int blocks = 0; + private Vec3 center = null; + + public MetalBlockBlob(BlockPos initial) { + this.add(initial); + } + + public MetalBlockBlob() { + } + + private static Vec3 getCenterOfBlock(BlockPos pos) { + try { + return Vec3.atLowerCornerOf(pos).add(level.getBlockState(pos).getShape(level, pos).bounds().getCenter()); + } catch (UnsupportedOperationException e) { + return Vec3.atCenterOf(pos); + } + } + + public int size() { + return this.blocks; + } + + public void add(BlockPos pos) { + pos = pos.immutable(); + + this.blocks += 1; + + if (this.center == null) { + this.center = getCenterOfBlock(pos); + } else { + this.center = this.center.scale(this.blocks - 1).add(getCenterOfBlock(pos)).scale(1.0D / this.blocks); + } + + } + + public Vec3 getCenter() { + return this.center; + } + + @Override + public String toString() { + return "MetalBlockBlob{" + "blocks=" + this.blocks + ", center=" + this.center + '}'; + } + } +} diff --git a/src/main/java/com/legobmw99/allomancy/modules/powers/command/AllomancyPowerCommand.java b/src/main/java/com/legobmw99/allomancy/modules/powers/command/AllomancyPowerCommand.java index ede1c604..1db7d6d9 100644 --- a/src/main/java/com/legobmw99/allomancy/modules/powers/command/AllomancyPowerCommand.java +++ b/src/main/java/com/legobmw99/allomancy/modules/powers/command/AllomancyPowerCommand.java @@ -2,7 +2,7 @@ import com.legobmw99.allomancy.api.data.IAllomancerData; import com.legobmw99.allomancy.api.enums.Metal; -import com.legobmw99.allomancy.modules.powers.data.AllomancerCapability; +import com.legobmw99.allomancy.modules.powers.data.AllomancerAttachment; import com.legobmw99.allomancy.network.Network; import com.mojang.brigadier.CommandDispatcher; import com.mojang.brigadier.builder.LiteralArgumentBuilder; @@ -15,12 +15,13 @@ import net.minecraft.commands.arguments.EntityArgument; import net.minecraft.network.chat.Component; import net.minecraft.server.level.ServerPlayer; -import net.minecraftforge.common.util.NonNullConsumer; +import net.neoforged.neoforge.common.util.NonNullConsumer; import java.util.Arrays; import java.util.Collection; import java.util.Collections; import java.util.List; +import java.util.function.BiConsumer; import java.util.function.Function; import java.util.function.Predicate; @@ -102,33 +103,33 @@ private static int handleMultiPlayer(CommandContext ctx, private static void getPowers(CommandContext ctx, ServerPlayer player) { StringBuilder powers = new StringBuilder(); - player.getCapability(AllomancerCapability.PLAYER_CAP).ifPresent(data -> { - if (data.isMistborn()) { - powers.append("all"); - } else if (data.isUninvested()) { - powers.append("none"); - } else { - for (Metal mt : Metal.values()) { - if (data.hasPower(mt)) { - if (powers.isEmpty()) { - powers.append(mt.getName()); - } else { - powers.append(", ").append(mt.getName()); - } + var data = player.getData(AllomancerAttachment.ALLOMANCY_DATA); + + if (data.isMistborn()) { + powers.append("all"); + } else if (data.isUninvested()) { + powers.append("none"); + } else { + for (Metal mt : Metal.values()) { + if (data.hasPower(mt)) { + if (powers.isEmpty()) { + powers.append(mt.getName()); + } else { + powers.append(", ").append(mt.getName()); } } } - }); + } ctx.getSource().sendSuccess(() -> Component.translatable("commands.allomancy.getpowers", player.getDisplayName(), powers.toString()), true); } private static void addPower(CommandContext ctx, ServerPlayer player) throws CommandSyntaxException { - handlePowerChange(ctx, player, IAllomancerData::setMistborn, data -> Predicate.not(data::hasPower), mt -> (data -> data.addPower(mt)), ERROR_CANT_ADD::create, + handlePowerChange(ctx, player, IAllomancerData::setMistborn, data -> Predicate.not(data::hasPower), (mt, data) -> data.addPower(mt), ERROR_CANT_ADD::create, "commands.allomancy.addpower"); } private static void removePower(CommandContext ctx, ServerPlayer player) throws CommandSyntaxException { - handlePowerChange(ctx, player, IAllomancerData::setUninvested, (data) -> data::hasPower, (mt) -> (data -> data.revokePower(mt)), ERROR_CANT_REMOVE::create, + handlePowerChange(ctx, player, IAllomancerData::setUninvested, (data) -> data::hasPower, (mt, data) -> data.revokePower(mt), ERROR_CANT_REMOVE::create, "commands.allomancy.removepower"); } @@ -148,32 +149,33 @@ private static void handlePowerChange(CommandContext ctx, ServerPlayer player, NonNullConsumer all, Function> filterFunction, - Function> single, + BiConsumer single, Function exception, String success) throws CommandSyntaxException { String type = ctx.getArgument("type", String.class); + var data = player.getData(AllomancerAttachment.ALLOMANCY_DATA); if (type.equalsIgnoreCase("all")) { - player.getCapability(AllomancerCapability.PLAYER_CAP).ifPresent(all); + all.accept(data); } else { - Predicate filter = player.getCapability(AllomancerCapability.PLAYER_CAP).map(filterFunction::apply).orElse((m) -> false); + Predicate filter = filterFunction.apply(data); if (type.equalsIgnoreCase("random")) { List metalList = Arrays.asList(Metal.values()); Collections.shuffle(metalList); Metal mt = metalList.stream().filter(filter).findFirst().orElseThrow(() -> exception.apply(type)); - player.getCapability(AllomancerCapability.PLAYER_CAP).ifPresent(single.apply(mt)); + single.accept(mt, data); } else { Metal mt = Metal.valueOf(type.toUpperCase()); if (filter.test(mt)) { - player.getCapability(AllomancerCapability.PLAYER_CAP).ifPresent(single.apply(mt)); + single.accept(mt, data); } else { throw exception.apply(type); } } } - Network.sync(player); + Network.syncAllomancerData(player); ctx.getSource().sendSuccess(() -> Component.translatable(success, player.getDisplayName(), type), true); diff --git a/src/main/java/com/legobmw99/allomancy/modules/powers/data/AllomancerAttachment.java b/src/main/java/com/legobmw99/allomancy/modules/powers/data/AllomancerAttachment.java new file mode 100644 index 00000000..e12d41a8 --- /dev/null +++ b/src/main/java/com/legobmw99/allomancy/modules/powers/data/AllomancerAttachment.java @@ -0,0 +1,24 @@ +package com.legobmw99.allomancy.modules.powers.data; + +import com.legobmw99.allomancy.Allomancy; +import net.neoforged.bus.api.IEventBus; +import net.neoforged.neoforge.attachment.AttachmentType; +import net.neoforged.neoforge.registries.DeferredRegister; +import net.neoforged.neoforge.registries.NeoForgeRegistries; + +import java.util.function.Supplier; + +public class AllomancerAttachment { + + private static final DeferredRegister> ATTACHMENT_TYPES = DeferredRegister.create(NeoForgeRegistries.ATTACHMENT_TYPES, Allomancy.MODID); + + public static final Supplier> ALLOMANCY_DATA = ATTACHMENT_TYPES.register("allomancy_data", () -> AttachmentType + .serializable(AllomancerData::new) + .copyOnDeath() + .build()); + + public static void register(IEventBus bus) { + ATTACHMENT_TYPES.register(bus); + } + +} \ No newline at end of file diff --git a/src/main/java/com/legobmw99/allomancy/modules/powers/data/AllomancerCapability.java b/src/main/java/com/legobmw99/allomancy/modules/powers/data/AllomancerCapability.java deleted file mode 100644 index 71286371..00000000 --- a/src/main/java/com/legobmw99/allomancy/modules/powers/data/AllomancerCapability.java +++ /dev/null @@ -1,22 +0,0 @@ -package com.legobmw99.allomancy.modules.powers.data; - -import com.legobmw99.allomancy.Allomancy; -import com.legobmw99.allomancy.api.data.IAllomancerData; -import net.minecraft.resources.ResourceLocation; -import net.minecraftforge.common.capabilities.Capability; -import net.minecraftforge.common.capabilities.CapabilityManager; -import net.minecraftforge.common.capabilities.CapabilityToken; -import net.minecraftforge.common.capabilities.RegisterCapabilitiesEvent; - -public class AllomancerCapability { - - public static final Capability PLAYER_CAP = CapabilityManager.get(new CapabilityToken<>() { - }); - - public static final ResourceLocation IDENTIFIER = new ResourceLocation(Allomancy.MODID, "allomancy_data"); - - public static void registerCapability(final RegisterCapabilitiesEvent event) { - event.register(IAllomancerData.class); - } - -} diff --git a/src/main/java/com/legobmw99/allomancy/modules/powers/data/DefaultAllomancerData.java b/src/main/java/com/legobmw99/allomancy/modules/powers/data/AllomancerData.java similarity index 96% rename from src/main/java/com/legobmw99/allomancy/modules/powers/data/DefaultAllomancerData.java rename to src/main/java/com/legobmw99/allomancy/modules/powers/data/AllomancerData.java index 5a517148..2b4c5987 100644 --- a/src/main/java/com/legobmw99/allomancy/modules/powers/data/DefaultAllomancerData.java +++ b/src/main/java/com/legobmw99/allomancy/modules/powers/data/AllomancerData.java @@ -10,10 +10,11 @@ import net.minecraft.resources.ResourceLocation; import net.minecraft.server.level.ServerPlayer; import net.minecraft.world.level.Level; +import net.neoforged.neoforge.common.util.INBTSerializable; import java.util.Arrays; -public class DefaultAllomancerData implements IAllomancerData { +public class AllomancerData implements IAllomancerData, INBTSerializable { private static final int[] MAX_BURN_TIME = {1800, 1800, 3600, 600, 1800, 1800, 2400, 1600, 100, 20, 300, 40, 1000, 10000, 3600, 160}; @@ -28,7 +29,7 @@ public class DefaultAllomancerData implements IAllomancerData { private BlockPos spawn_pos; private int enhanced_time; - public DefaultAllomancerData() { + public AllomancerData() { int powers = Metal.values().length; this.allomantic_powers = new boolean[powers]; @@ -72,7 +73,7 @@ public void tickBurning(ServerPlayer player) { } } if (sync) { - Network.sync(this, player); + Network.syncAllomancerData(player); } } @@ -261,7 +262,9 @@ public void setEnhanced(int time) { this.enhanced_time = time; } - public CompoundTag save() { + + @Override + public CompoundTag serializeNBT() { CompoundTag allomancy_data = new CompoundTag(); CompoundTag abilities = new CompoundTag(); @@ -304,7 +307,8 @@ public CompoundTag save() { return allomancy_data; } - public void load(CompoundTag allomancy_data) { + @Override + public void deserializeNBT(CompoundTag allomancy_data) { CompoundTag abilities = (CompoundTag) allomancy_data.get("abilities"); for (Metal mt : Metal.values()) { if (abilities.getBoolean(mt.getName())) { diff --git a/src/main/java/com/legobmw99/allomancy/modules/powers/data/AllomancerDataProvider.java b/src/main/java/com/legobmw99/allomancy/modules/powers/data/AllomancerDataProvider.java deleted file mode 100644 index fe94308e..00000000 --- a/src/main/java/com/legobmw99/allomancy/modules/powers/data/AllomancerDataProvider.java +++ /dev/null @@ -1,44 +0,0 @@ -package com.legobmw99.allomancy.modules.powers.data; - -import com.legobmw99.allomancy.api.data.IAllomancerData; -import net.minecraft.core.Direction; -import net.minecraft.nbt.CompoundTag; -import net.minecraftforge.common.capabilities.Capability; -import net.minecraftforge.common.capabilities.ICapabilitySerializable; -import net.minecraftforge.common.util.LazyOptional; - -import javax.annotation.Nonnull; -import javax.annotation.Nullable; - -public class AllomancerDataProvider implements ICapabilitySerializable { - - private final DefaultAllomancerData data = new DefaultAllomancerData(); - private final LazyOptional dataOptional = LazyOptional.of(() -> this.data); - - @Nonnull - @Override - public LazyOptional getCapability(@Nonnull Capability cap, @Nullable Direction side) { - return AllomancerCapability.PLAYER_CAP.orEmpty(cap, this.dataOptional.cast()); - } - - @Override - public CompoundTag serializeNBT() { - if (AllomancerCapability.PLAYER_CAP == null) { - return new CompoundTag(); - } else { - return this.data.save(); - } - - } - - @Override - public void deserializeNBT(CompoundTag allomancy_data) { - if (AllomancerCapability.PLAYER_CAP != null) { - this.data.load(allomancy_data); - } - } - - public void invalidate() { - this.dataOptional.invalidate(); - } -} diff --git a/src/main/java/com/legobmw99/allomancy/modules/powers/entity/ai/AIEvilAttack.java b/src/main/java/com/legobmw99/allomancy/modules/powers/entity/ai/AIEvilAttack.java index 779a5d33..2cefebd4 100644 --- a/src/main/java/com/legobmw99/allomancy/modules/powers/entity/ai/AIEvilAttack.java +++ b/src/main/java/com/legobmw99/allomancy/modules/powers/entity/ai/AIEvilAttack.java @@ -9,7 +9,9 @@ public AIEvilAttack(Rabbit rabbit) { super(rabbit, 1.4D, true); } - protected double getAttackReachSqr(LivingEntity attackTarget) { - return 4.0F + attackTarget.getBbWidth(); + @Override + protected boolean canPerformAttack(LivingEntity attackTarget) { + return this.isTimeToAttack() && this.mob.distanceToSqr(attackTarget) <= (4.0F + attackTarget.getBbWidth()) && this.mob.getSensing().hasLineOfSight(attackTarget); } + } \ No newline at end of file diff --git a/src/main/java/com/legobmw99/allomancy/modules/powers/network/AllomancerDataPacket.java b/src/main/java/com/legobmw99/allomancy/modules/powers/network/AllomancerDataPacket.java deleted file mode 100644 index 8de0144f..00000000 --- a/src/main/java/com/legobmw99/allomancy/modules/powers/network/AllomancerDataPacket.java +++ /dev/null @@ -1,55 +0,0 @@ -package com.legobmw99.allomancy.modules.powers.network; - -import com.legobmw99.allomancy.api.data.IAllomancerData; -import com.legobmw99.allomancy.modules.powers.data.AllomancerCapability; -import net.minecraft.client.Minecraft; -import net.minecraft.nbt.CompoundTag; -import net.minecraft.network.FriendlyByteBuf; -import net.minecraft.world.entity.player.Player; -import net.minecraftforge.network.NetworkEvent; - -import java.util.UUID; -import java.util.function.Supplier; - -public class AllomancerDataPacket { - - private final CompoundTag nbt; - private final UUID uuid; - - /** - * Packet for sending Allomancy player data to a client - * - * @param data the IAllomancerData data for the player - * @param player the player - */ - public AllomancerDataPacket(IAllomancerData data, Player player) { - this.uuid = player.getUUID(); - this.nbt = (data != null && AllomancerCapability.PLAYER_CAP != null) ? data.save() : new CompoundTag(); - - } - - private AllomancerDataPacket(CompoundTag nbt, UUID uuid) { - this.nbt = nbt; - this.uuid = uuid; - } - - public static AllomancerDataPacket decode(FriendlyByteBuf buf) { - return new AllomancerDataPacket(buf.readNbt(), buf.readUUID()); - } - - public void encode(FriendlyByteBuf buf) { - buf.writeNbt(this.nbt); - buf.writeUUID(this.uuid); - } - - public void handle(Supplier ctx) { - ctx.get().enqueueWork(() -> { - Player player = Minecraft.getInstance().level.getPlayerByUUID(this.uuid); - - if (player != null && AllomancerCapability.PLAYER_CAP != null) { - player.getCapability(AllomancerCapability.PLAYER_CAP).ifPresent(data -> data.load(this.nbt)); - } - }); - ctx.get().setPacketHandled(true); - } -} diff --git a/src/main/java/com/legobmw99/allomancy/modules/powers/network/AllomancerDataPayload.java b/src/main/java/com/legobmw99/allomancy/modules/powers/network/AllomancerDataPayload.java new file mode 100644 index 00000000..fe63d460 --- /dev/null +++ b/src/main/java/com/legobmw99/allomancy/modules/powers/network/AllomancerDataPayload.java @@ -0,0 +1,35 @@ +package com.legobmw99.allomancy.modules.powers.network; + +import com.legobmw99.allomancy.Allomancy; +import com.legobmw99.allomancy.modules.powers.data.AllomancerAttachment; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.network.FriendlyByteBuf; +import net.minecraft.network.protocol.common.custom.CustomPacketPayload; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.server.level.ServerPlayer; + +import java.util.UUID; + +public record AllomancerDataPayload(CompoundTag nbt, UUID player) implements CustomPacketPayload { + public static final ResourceLocation ID = new ResourceLocation(Allomancy.MODID, "player_data"); + + + public AllomancerDataPayload(ServerPlayer player) { + this(player.getData(AllomancerAttachment.ALLOMANCY_DATA).serializeNBT(), player.getUUID()); + } + + public AllomancerDataPayload(final FriendlyByteBuf buf) { + this(buf.readNbt(), buf.readUUID()); + } + + @Override + public void write(FriendlyByteBuf buf) { + buf.writeNbt(this.nbt); + buf.writeUUID(this.player); + } + + @Override + public ResourceLocation id() { + return ID; + } +} diff --git a/src/main/java/com/legobmw99/allomancy/modules/powers/network/BlockPushPullPayload.java b/src/main/java/com/legobmw99/allomancy/modules/powers/network/BlockPushPullPayload.java new file mode 100644 index 00000000..273bdd93 --- /dev/null +++ b/src/main/java/com/legobmw99/allomancy/modules/powers/network/BlockPushPullPayload.java @@ -0,0 +1,30 @@ +package com.legobmw99.allomancy.modules.powers.network; + +import com.legobmw99.allomancy.Allomancy; +import net.minecraft.core.BlockPos; +import net.minecraft.network.FriendlyByteBuf; +import net.minecraft.network.protocol.common.custom.CustomPacketPayload; +import net.minecraft.resources.ResourceLocation; + +public record BlockPushPullPayload(BlockPos block, int direction) implements CustomPacketPayload { + public static final ResourceLocation ID = new ResourceLocation(Allomancy.MODID, "block_push_pull"); + + public BlockPushPullPayload(FriendlyByteBuf buf) { + this(buf.readBlockPos(), buf.readInt()); + } + + @Override + public void write(FriendlyByteBuf buf) { + buf.writeBlockPos(this.block); + buf.writeInt(this.direction); + } + + public boolean isPush() { + return this.direction > 0; + } + + @Override + public ResourceLocation id() { + return ID; + } +} diff --git a/src/main/java/com/legobmw99/allomancy/modules/powers/network/ChangeEmotionPacket.java b/src/main/java/com/legobmw99/allomancy/modules/powers/network/ChangeEmotionPacket.java deleted file mode 100644 index 792a51b0..00000000 --- a/src/main/java/com/legobmw99/allomancy/modules/powers/network/ChangeEmotionPacket.java +++ /dev/null @@ -1,55 +0,0 @@ -package com.legobmw99.allomancy.modules.powers.network; - -import com.legobmw99.allomancy.api.data.IAllomancerData; -import com.legobmw99.allomancy.modules.powers.PowerUtils; -import com.legobmw99.allomancy.modules.powers.data.AllomancerCapability; -import net.minecraft.network.FriendlyByteBuf; -import net.minecraft.world.entity.PathfinderMob; -import net.minecraft.world.entity.player.Player; -import net.minecraftforge.network.NetworkEvent; - -import java.util.function.Supplier; - -public class ChangeEmotionPacket { - - private final int entityID; - private final boolean make_aggressive; - - - /** - * Make a mob either angry or passive, depending on aggro - * - * @param entityID the mob to be effected - * @param make_aggressive true if mob should be aggressive - */ - public ChangeEmotionPacket(int entityID, boolean make_aggressive) { - this.entityID = entityID; - this.make_aggressive = make_aggressive; - } - - public static ChangeEmotionPacket decode(FriendlyByteBuf buf) { - return new ChangeEmotionPacket(buf.readInt(), buf.readBoolean()); - } - - public void encode(FriendlyByteBuf buf) { - buf.writeInt(this.entityID); - buf.writeBoolean(this.make_aggressive); - } - - public void handle(Supplier ctx) { - ctx.get().enqueueWork(() -> { - Player allomancer = ctx.get().getSender(); - PathfinderMob target = (PathfinderMob) allomancer.level().getEntity(this.entityID); - if (target == null) { - return; - } - boolean enhanced = allomancer.getCapability(AllomancerCapability.PLAYER_CAP).filter(IAllomancerData::isEnhanced).isPresent(); - if (this.make_aggressive) { - PowerUtils.riotEntity(target, allomancer, enhanced); - } else { - PowerUtils.sootheEntity(target, allomancer, enhanced); - } - }); - ctx.get().setPacketHandled(true); - } -} \ No newline at end of file diff --git a/src/main/java/com/legobmw99/allomancy/modules/powers/network/EmotionPayload.java b/src/main/java/com/legobmw99/allomancy/modules/powers/network/EmotionPayload.java new file mode 100644 index 00000000..0dfcc235 --- /dev/null +++ b/src/main/java/com/legobmw99/allomancy/modules/powers/network/EmotionPayload.java @@ -0,0 +1,26 @@ +package com.legobmw99.allomancy.modules.powers.network; + +import com.legobmw99.allomancy.Allomancy; +import net.minecraft.network.FriendlyByteBuf; +import net.minecraft.network.protocol.common.custom.CustomPacketPayload; +import net.minecraft.resources.ResourceLocation; + +public record EmotionPayload(int entityID, boolean makeAggressive) implements CustomPacketPayload { + + public static final ResourceLocation ID = new ResourceLocation(Allomancy.MODID, "change_emotion"); + + public EmotionPayload(FriendlyByteBuf buf) { + this(buf.readInt(), buf.readBoolean()); + } + + @Override + public void write(FriendlyByteBuf buf) { + buf.writeInt(this.entityID); + buf.writeBoolean(this.makeAggressive); + } + + @Override + public ResourceLocation id() { + return ID; + } +} diff --git a/src/main/java/com/legobmw99/allomancy/modules/powers/network/EnhanceTimePayload.java b/src/main/java/com/legobmw99/allomancy/modules/powers/network/EnhanceTimePayload.java new file mode 100644 index 00000000..431eda9f --- /dev/null +++ b/src/main/java/com/legobmw99/allomancy/modules/powers/network/EnhanceTimePayload.java @@ -0,0 +1,30 @@ +package com.legobmw99.allomancy.modules.powers.network; + +import com.legobmw99.allomancy.Allomancy; +import net.minecraft.network.FriendlyByteBuf; +import net.minecraft.network.protocol.common.custom.CustomPacketPayload; +import net.minecraft.resources.ResourceLocation; + +public record EnhanceTimePayload(int enhanceTime, int entityID) implements CustomPacketPayload { + + public static final ResourceLocation ID = new ResourceLocation(Allomancy.MODID, "enhance_tick"); + + public EnhanceTimePayload(boolean enhanced, int entityID) { + this(enhanced ? 100 : 0, entityID); + } + + public EnhanceTimePayload(FriendlyByteBuf buf) { + this(buf.readInt(), buf.readInt()); + } + + @Override + public void write(FriendlyByteBuf buf) { + buf.writeInt(this.enhanceTime); + buf.writeInt(this.entityID); + } + + @Override + public ResourceLocation id() { + return ID; + } +} diff --git a/src/main/java/com/legobmw99/allomancy/modules/powers/network/EntityPushPullPayload.java b/src/main/java/com/legobmw99/allomancy/modules/powers/network/EntityPushPullPayload.java new file mode 100644 index 00000000..1089aac6 --- /dev/null +++ b/src/main/java/com/legobmw99/allomancy/modules/powers/network/EntityPushPullPayload.java @@ -0,0 +1,26 @@ +package com.legobmw99.allomancy.modules.powers.network; + +import com.legobmw99.allomancy.Allomancy; +import net.minecraft.network.FriendlyByteBuf; +import net.minecraft.network.protocol.common.custom.CustomPacketPayload; +import net.minecraft.resources.ResourceLocation; + +public record EntityPushPullPayload(int entityID, int direction) implements CustomPacketPayload { + + public static final ResourceLocation ID = new ResourceLocation(Allomancy.MODID, "entity_push_pull"); + + public EntityPushPullPayload(FriendlyByteBuf buf) { + this(buf.readInt(), buf.readInt()); + } + + @Override + public void write(FriendlyByteBuf buf) { + buf.writeInt(this.entityID); + buf.writeInt(this.direction); + } + + @Override + public ResourceLocation id() { + return ID; + } +} diff --git a/src/main/java/com/legobmw99/allomancy/modules/powers/network/ServerPayloadHandler.java b/src/main/java/com/legobmw99/allomancy/modules/powers/network/ServerPayloadHandler.java new file mode 100644 index 00000000..a36727d1 --- /dev/null +++ b/src/main/java/com/legobmw99/allomancy/modules/powers/network/ServerPayloadHandler.java @@ -0,0 +1,152 @@ +package com.legobmw99.allomancy.modules.powers.network; + +import com.legobmw99.allomancy.Allomancy; +import com.legobmw99.allomancy.api.block.IAllomanticallyUsableBlock; +import com.legobmw99.allomancy.api.enums.Metal; +import com.legobmw99.allomancy.modules.combat.CombatSetup; +import com.legobmw99.allomancy.modules.powers.PowerUtils; +import com.legobmw99.allomancy.modules.powers.data.AllomancerAttachment; +import com.legobmw99.allomancy.network.Network; +import net.minecraft.core.BlockPos; +import net.minecraft.network.chat.Component; +import net.minecraft.server.level.ServerPlayer; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.PathfinderMob; +import net.minecraft.world.entity.animal.IronGolem; +import net.minecraft.world.entity.decoration.ArmorStand; +import net.minecraft.world.entity.decoration.ItemFrame; +import net.minecraft.world.entity.item.FallingBlockEntity; +import net.minecraft.world.entity.item.ItemEntity; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.entity.projectile.ThrowableItemProjectile; +import net.minecraft.world.entity.vehicle.AbstractMinecart; +import net.minecraft.world.level.Level; +import net.neoforged.neoforge.network.handling.PlayPayloadContext; + +import java.util.Arrays; + +public class ServerPayloadHandler { + + public static void handleEmotionChange(final EmotionPayload data, final PlayPayloadContext ctx) { + ctx.workHandler().submitAsync(() -> { + Player allomancer = ctx.player().get(); + PathfinderMob target = (PathfinderMob) ctx.level().get().getEntity(data.entityID()); + if (target == null) { + return; + } + boolean enhanced = allomancer.getData(AllomancerAttachment.ALLOMANCY_DATA).isEnhanced(); + if (data.makeAggressive()) { + PowerUtils.riotEntity(target, allomancer, enhanced); + } else { + PowerUtils.sootheEntity(target, allomancer, enhanced); + } + }).exceptionally(e -> { + Allomancy.LOGGER.error("Failed to handle changeEmotions", e); + ctx.packetHandler().disconnect(Component.translatable("allomancy.networking.failed", e.getMessage())); + return null; + }); + + } + + public static void tryPushPullBlock(final BlockPushPullPayload data, final PlayPayloadContext ctx) { + ctx.workHandler().execute(() -> { + Player player = ctx.player().get(); + Level level = ctx.level().get(); + BlockPos pos = data.block(); + // Sanity check to make sure the block is loaded in the server + if (level.isLoaded(pos)) { + // activate blocks + if (level.getBlockState(pos).getBlock() instanceof IAllomanticallyUsableBlock block) { + block.useAllomantically(level.getBlockState(pos), level, pos, player, data.isPush()); + } else if (PowerUtils.isBlockStateMetal(player.level().getBlockState(pos)) // Check whitelist on server + || (player.getMainHandItem().getItem() == CombatSetup.COIN_BAG.get() // check coin bag + && (!player.getProjectile(player.getMainHandItem()).isEmpty()) && data.isPush())) { + PowerUtils.move(data.direction(), player, pos); + } + } else { + Allomancy.LOGGER.warn("Illegal use of iron/steel by player: {}!", player); + ctx.packetHandler().disconnect(Component.translatable("allomancy.networking.kicked", "Tried to push or pull against an unloaded block!")); + } + }); + } + + public static void tryPushPullEntity(final EntityPushPullPayload data, final PlayPayloadContext ctx) { + ctx.workHandler().execute(() -> { + Player player = ctx.player().get(); + Level level = ctx.level().get(); + Entity target = level.getEntity(data.entityID()); + + if (target != null) { + if (PowerUtils.isEntityMetal(target)) { + // The player moves + if (target instanceof IronGolem || target instanceof ItemFrame) { + PowerUtils.move(data.direction(), player, target.blockPosition()); + } else if (target instanceof ItemEntity || target instanceof FallingBlockEntity || target instanceof ArmorStand || + (target instanceof AbstractMinecart && !target.isVehicle())) { + PowerUtils.move(data.direction() / 2.0, target, player.blockPosition()); + + // Split the difference + } else if (!(target instanceof ThrowableItemProjectile)) { + PowerUtils.move(data.direction() / 2.0, target, player.blockPosition()); + PowerUtils.move(data.direction() / 2.0, player, target.blockPosition()); + } + } + } + }); + } + + public static void toggleBurnRequest(final ToggleBurnPayload payload, final PlayPayloadContext ctx) { + assert ctx.flow().getReceptionSide().isServer(); + + ctx.workHandler().submitAsync(() -> { + ServerPlayer player = (ServerPlayer) ctx.player().get(); + Metal mt = payload.metal(); + var data = player.getData(AllomancerAttachment.ALLOMANCY_DATA); + + boolean value = payload.on(); + + if (!data.hasPower(mt) || data.getAmount(mt) <= 0) { + value = false; + } + + data.setBurning(mt, value); + if (!value && mt == Metal.DURALUMIN) { + data.drainMetals(Arrays.stream(Metal.values()).filter(data::isBurning).toArray(Metal[]::new)); + } + if (!value && data.isEnhanced()) { + data.drainMetals(mt); + } + + Network.syncAllomancerData(player); + + }).exceptionally(e -> { + Allomancy.LOGGER.error("Failed to handle toggleBurn", e); + ctx.packetHandler().disconnect(Component.translatable("allomancy.networking.failed", e.getMessage())); + return null; + }); + } + + public static void updateEnhanced(final EnhanceTimePayload payload, final PlayPayloadContext ctx) { + ctx.workHandler().submitAsync(() -> { + Player source = ctx.player().get(); + + if (!source.getData(AllomancerAttachment.ALLOMANCY_DATA).isBurning(Metal.NICROSIL)) { + Allomancy.LOGGER.warn("Illegal use of Nicrosil by player: {}!", source); + ctx.packetHandler().disconnect(Component.translatable("allomancy.networking.kicked", "Tried to mark other player as enhanced while not burning Nicrosil!")); + return; + } + + Entity e = ctx.level().get().getEntity(payload.entityID()); + if (e instanceof ServerPlayer player) { + var target_data = player.getData(AllomancerAttachment.ALLOMANCY_DATA); + target_data.setEnhanced(payload.enhanceTime()); + // broadcast back to player and tracking + Network.sync(payload, player); + } + }).exceptionally(e -> { + Allomancy.LOGGER.error("Failed to handle sever updateEnhanced", e); + ctx.packetHandler().disconnect(Component.translatable("allomancy.networking.failed", e.getMessage())); + return null; + }); + } +} diff --git a/src/main/java/com/legobmw99/allomancy/modules/powers/network/ToggleBurnPayload.java b/src/main/java/com/legobmw99/allomancy/modules/powers/network/ToggleBurnPayload.java new file mode 100644 index 00000000..9b526fd8 --- /dev/null +++ b/src/main/java/com/legobmw99/allomancy/modules/powers/network/ToggleBurnPayload.java @@ -0,0 +1,26 @@ +package com.legobmw99.allomancy.modules.powers.network; + +import com.legobmw99.allomancy.Allomancy; +import com.legobmw99.allomancy.api.enums.Metal; +import net.minecraft.network.FriendlyByteBuf; +import net.minecraft.network.protocol.common.custom.CustomPacketPayload; +import net.minecraft.resources.ResourceLocation; + +public record ToggleBurnPayload(Metal metal, boolean on) implements CustomPacketPayload { + public static final ResourceLocation ID = new ResourceLocation(Allomancy.MODID, "toggle_burn"); + + public ToggleBurnPayload(FriendlyByteBuf buf) { + this(buf.readEnum(Metal.class), buf.readBoolean()); + } + + @Override + public void write(FriendlyByteBuf buf) { + buf.writeEnum(this.metal); + buf.writeBoolean(this.on); + } + + @Override + public ResourceLocation id() { + return ID; + } +} diff --git a/src/main/java/com/legobmw99/allomancy/modules/powers/network/TryPushPullBlock.java b/src/main/java/com/legobmw99/allomancy/modules/powers/network/TryPushPullBlock.java deleted file mode 100644 index 3b49c91e..00000000 --- a/src/main/java/com/legobmw99/allomancy/modules/powers/network/TryPushPullBlock.java +++ /dev/null @@ -1,56 +0,0 @@ -package com.legobmw99.allomancy.modules.powers.network; - -import com.legobmw99.allomancy.api.block.IAllomanticallyUsableBlock; -import com.legobmw99.allomancy.modules.combat.CombatSetup; -import com.legobmw99.allomancy.modules.powers.PowerUtils; -import net.minecraft.core.BlockPos; -import net.minecraft.network.FriendlyByteBuf; -import net.minecraft.server.level.ServerPlayer; -import net.minecraftforge.network.NetworkEvent; - -import java.util.function.Supplier; - -public class TryPushPullBlock { - - private final BlockPos blockPos; - private final int direction; - - /** - * Send a request to the server to use iron or steel on a block - * - * @param block the block - * @param direction the direction (1 for push, -1 for pull) - */ - public TryPushPullBlock(BlockPos block, int direction) { - this.blockPos = block; - this.direction = direction; - } - - public static TryPushPullBlock decode(FriendlyByteBuf buf) { - return new TryPushPullBlock(buf.readBlockPos(), buf.readInt()); - } - - public void encode(FriendlyByteBuf buf) { - buf.writeBlockPos(this.blockPos); - buf.writeInt(this.direction); - } - - public void handle(Supplier ctx) { - ctx.get().enqueueWork(() -> { - ServerPlayer player = ctx.get().getSender(); - BlockPos pos = this.blockPos; - // Sanity check to make sure the block is loaded in the server - if (player.level().isLoaded(pos)) { - // activate blocks - if (player.level().getBlockState(pos).getBlock() instanceof IAllomanticallyUsableBlock block) { - block.useAllomantically(player.level().getBlockState(pos), player.level(), pos, player, this.direction > 0); - } else if (PowerUtils.isBlockStateMetal(player.level().getBlockState(pos)) // Check whitelist on server - || (player.getMainHandItem().getItem() == CombatSetup.COIN_BAG.get() // check coin bag - && (!player.getProjectile(player.getMainHandItem()).isEmpty()) && this.direction > 0)) { - PowerUtils.move(this.direction, player, pos); - } - } - }); - ctx.get().setPacketHandled(true); - } -} diff --git a/src/main/java/com/legobmw99/allomancy/modules/powers/network/TryPushPullEntity.java b/src/main/java/com/legobmw99/allomancy/modules/powers/network/TryPushPullEntity.java deleted file mode 100644 index 3e807be4..00000000 --- a/src/main/java/com/legobmw99/allomancy/modules/powers/network/TryPushPullEntity.java +++ /dev/null @@ -1,70 +0,0 @@ -package com.legobmw99.allomancy.modules.powers.network; - -import com.legobmw99.allomancy.modules.powers.PowerUtils; -import net.minecraft.network.FriendlyByteBuf; -import net.minecraft.server.level.ServerPlayer; -import net.minecraft.world.entity.Entity; -import net.minecraft.world.entity.animal.IronGolem; -import net.minecraft.world.entity.decoration.ArmorStand; -import net.minecraft.world.entity.decoration.ItemFrame; -import net.minecraft.world.entity.item.FallingBlockEntity; -import net.minecraft.world.entity.item.ItemEntity; -import net.minecraft.world.entity.projectile.ThrowableItemProjectile; -import net.minecraft.world.entity.vehicle.AbstractMinecart; -import net.minecraftforge.network.NetworkEvent; - -import java.util.function.Supplier; - -public class TryPushPullEntity { - - private final int entityIDOther; - private final int direction; - - /** - * Send a request to the server to use iron or steel on an entity - * - * @param entityIDOther the entity you are requesting the data of - * @param direction the direction (1 for push, -1 for pull) - */ - public TryPushPullEntity(int entityIDOther, int direction) { - this.entityIDOther = entityIDOther; - this.direction = direction; - - } - - public static TryPushPullEntity decode(FriendlyByteBuf buf) { - return new TryPushPullEntity(buf.readInt(), buf.readInt()); - } - - public void encode(FriendlyByteBuf buf) { - buf.writeInt(this.entityIDOther); - buf.writeInt(this.direction); - } - - public void handle(Supplier ctx) { - ctx.get().enqueueWork(() -> { - ServerPlayer player = ctx.get().getSender(); - Entity target = player.level().getEntity(this.entityIDOther); - if (target != null) { - if (PowerUtils.isEntityMetal(target)) { - // The player moves - if (target instanceof IronGolem || target instanceof ItemFrame) { - PowerUtils.move(this.direction, player, target.blockPosition()); - - } else if (target instanceof ItemEntity || target instanceof FallingBlockEntity || target instanceof ArmorStand || - (target instanceof AbstractMinecart && !target.isVehicle())) { - PowerUtils.move(this.direction / 2.0, target, player.blockPosition()); - - // Split the difference - } else if (!(target instanceof ThrowableItemProjectile)) { - PowerUtils.move(this.direction / 2.0, target, player.blockPosition()); - - PowerUtils.move(this.direction / 2.0, player, target.blockPosition()); - } - } - } - - }); - ctx.get().setPacketHandled(true); - } -} diff --git a/src/main/java/com/legobmw99/allomancy/modules/powers/network/UpdateBurnPacket.java b/src/main/java/com/legobmw99/allomancy/modules/powers/network/UpdateBurnPacket.java deleted file mode 100644 index 9d74e63d..00000000 --- a/src/main/java/com/legobmw99/allomancy/modules/powers/network/UpdateBurnPacket.java +++ /dev/null @@ -1,62 +0,0 @@ -package com.legobmw99.allomancy.modules.powers.network; - -import com.legobmw99.allomancy.api.enums.Metal; -import com.legobmw99.allomancy.modules.powers.data.AllomancerCapability; -import com.legobmw99.allomancy.network.Network; -import net.minecraft.network.FriendlyByteBuf; -import net.minecraft.server.level.ServerPlayer; -import net.minecraftforge.network.NetworkEvent; - -import java.util.Arrays; -import java.util.function.Supplier; - - -public class UpdateBurnPacket { - - private final Metal mt; - private final boolean value; - - /** - * Send request to the server to change the burning state of a metal - * - * @param mt the metal - * @param value whether it is burning - */ - public UpdateBurnPacket(Metal mt, boolean value) { - this.mt = mt; - this.value = value; // Convert bool to int - } - - public static UpdateBurnPacket decode(FriendlyByteBuf buf) { - return new UpdateBurnPacket(buf.readEnum(Metal.class), buf.readBoolean()); - } - - public void encode(FriendlyByteBuf buf) { - buf.writeEnum(this.mt); - buf.writeBoolean(this.value); - } - - public void handle(Supplier ctx) { - ctx.get().enqueueWork(() -> { - - ServerPlayer player = ctx.get().getSender(); - - player.getCapability(AllomancerCapability.PLAYER_CAP).ifPresent(data -> { - if (data.hasPower(this.mt) && data.getAmount(this.mt) > 0) { - data.setBurning(this.mt, this.value); - if (!this.value && this.mt == Metal.DURALUMIN) { - data.drainMetals(Arrays.stream(Metal.values()).filter(data::isBurning).toArray(Metal[]::new)); - } - if (!this.value && data.isEnhanced()) { - data.drainMetals(this.mt); - } - } else { - data.setBurning(this.mt, false); - } - Network.sync(data, player); - }); - - }); - ctx.get().setPacketHandled(true); - } -} diff --git a/src/main/java/com/legobmw99/allomancy/modules/powers/network/UpdateEnhancedPacket.java b/src/main/java/com/legobmw99/allomancy/modules/powers/network/UpdateEnhancedPacket.java deleted file mode 100644 index b4a5b4a1..00000000 --- a/src/main/java/com/legobmw99/allomancy/modules/powers/network/UpdateEnhancedPacket.java +++ /dev/null @@ -1,60 +0,0 @@ -package com.legobmw99.allomancy.modules.powers.network; - -import com.legobmw99.allomancy.modules.powers.data.AllomancerCapability; -import com.legobmw99.allomancy.network.Network; -import net.minecraft.client.Minecraft; -import net.minecraft.network.FriendlyByteBuf; -import net.minecraft.server.level.ServerPlayer; -import net.minecraft.world.entity.player.Player; -import net.minecraftforge.network.NetworkDirection; -import net.minecraftforge.network.NetworkEvent; - -import java.util.function.Supplier; - -public class UpdateEnhancedPacket { - - private final int enhance_time; - private final int entityID; - - - public UpdateEnhancedPacket(boolean enhanced, int entityID) { - this.enhance_time = enhanced ? 100 : 0; - this.entityID = entityID; - } - - public UpdateEnhancedPacket(int enhance_time, int entityID) { - this.enhance_time = enhance_time; - this.entityID = entityID; - } - - public static UpdateEnhancedPacket decode(FriendlyByteBuf buf) { - return new UpdateEnhancedPacket(buf.readInt(), buf.readInt()); - } - - public void encode(FriendlyByteBuf buf) { - buf.writeInt(this.enhance_time); - buf.writeInt(this.entityID); - } - - public void handle(Supplier ctx) { - // TODO: check person doing this has the right powers to do so, need to encode target and source. - ctx.get().enqueueWork(() -> { - if (ctx.get().getDirection() == NetworkDirection.PLAY_TO_SERVER) { // Update player of own status - Player player = (Player) ctx.get().getSender().level().getEntity(this.entityID); - if (player instanceof ServerPlayer p) { - player.getCapability(AllomancerCapability.PLAYER_CAP).ifPresent(data -> { - data.setEnhanced(this.enhance_time); - Network.sync(new UpdateEnhancedPacket(this.enhance_time, this.entityID), p); - }); - } - } else { - Player player = (Player) Minecraft.getInstance().level.getEntity(this.entityID); - if (player != null) { - player.getCapability(AllomancerCapability.PLAYER_CAP).ifPresent(data -> data.setEnhanced(this.enhance_time)); - } - } - - }); - ctx.get().setPacketHandled(true); - } -} diff --git a/src/main/java/com/legobmw99/allomancy/network/Network.java b/src/main/java/com/legobmw99/allomancy/network/Network.java index 0aba78b9..7729901b 100644 --- a/src/main/java/com/legobmw99/allomancy/network/Network.java +++ b/src/main/java/com/legobmw99/allomancy/network/Network.java @@ -1,63 +1,38 @@ package com.legobmw99.allomancy.network; import com.legobmw99.allomancy.Allomancy; -import com.legobmw99.allomancy.api.data.IAllomancerData; -import com.legobmw99.allomancy.modules.powers.data.AllomancerCapability; +import com.legobmw99.allomancy.modules.powers.client.ClientPayloadHandler; import com.legobmw99.allomancy.modules.powers.network.*; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.network.protocol.common.custom.CustomPacketPayload; import net.minecraft.server.level.ServerPlayer; -import net.minecraftforge.common.util.FakePlayer; -import net.minecraftforge.network.NetworkDirection; -import net.minecraftforge.network.NetworkRegistry; -import net.minecraftforge.network.PacketDistributor; -import net.minecraftforge.network.simple.SimpleChannel; +import net.neoforged.neoforge.network.PacketDistributor; +import net.neoforged.neoforge.network.event.RegisterPayloadHandlerEvent; +import net.neoforged.neoforge.network.registration.IPayloadRegistrar; public class Network { + public static void registerPayloads(final RegisterPayloadHandlerEvent event) { + final IPayloadRegistrar registrar = event.registrar(Allomancy.MODID).versioned("2.0"); - private static final String VERSION = "1.1"; - public static final SimpleChannel INSTANCE = NetworkRegistry.newSimpleChannel(new ResourceLocation(Allomancy.MODID, "networking"), () -> VERSION, VERSION::equals, - VERSION::equals); + registrar.play(AllomancerDataPayload.ID, AllomancerDataPayload::new, handler -> handler.client(ClientPayloadHandler::handleAllomancerData)); + registrar.play(EmotionPayload.ID, EmotionPayload::new, handler -> handler.server(ServerPayloadHandler::handleEmotionChange)); + registrar.play(BlockPushPullPayload.ID, BlockPushPullPayload::new, handler -> handler.server(ServerPayloadHandler::tryPushPullBlock)); + registrar.play(EntityPushPullPayload.ID, EntityPushPullPayload::new, handler -> handler.server(ServerPayloadHandler::tryPushPullEntity)); + registrar.play(ToggleBurnPayload.ID, ToggleBurnPayload::new, handler -> handler.server(ServerPayloadHandler::toggleBurnRequest)); + registrar.play(EnhanceTimePayload.ID, EnhanceTimePayload::new, + handler -> handler.server(ServerPayloadHandler::updateEnhanced).client(ClientPayloadHandler::updateEnhanced)); - private static int index = 0; - - private static int nextIndex() { - return index++; - } - - public static void registerPackets() { - INSTANCE.registerMessage(nextIndex(), AllomancerDataPacket.class, AllomancerDataPacket::encode, AllomancerDataPacket::decode, AllomancerDataPacket::handle); - INSTANCE.registerMessage(nextIndex(), UpdateBurnPacket.class, UpdateBurnPacket::encode, UpdateBurnPacket::decode, UpdateBurnPacket::handle); - INSTANCE.registerMessage(nextIndex(), ChangeEmotionPacket.class, ChangeEmotionPacket::encode, ChangeEmotionPacket::decode, ChangeEmotionPacket::handle); - INSTANCE.registerMessage(nextIndex(), TryPushPullEntity.class, TryPushPullEntity::encode, TryPushPullEntity::decode, TryPushPullEntity::handle); - INSTANCE.registerMessage(nextIndex(), TryPushPullBlock.class, TryPushPullBlock::encode, TryPushPullBlock::decode, TryPushPullBlock::handle); - INSTANCE.registerMessage(nextIndex(), UpdateEnhancedPacket.class, UpdateEnhancedPacket::encode, UpdateEnhancedPacket::decode, UpdateEnhancedPacket::handle); - } - - public static void sendToServer(Object msg) { - INSTANCE.sendToServer(msg); } - public static void sendTo(Object msg, ServerPlayer player) { - if (!(player instanceof FakePlayer)) { - INSTANCE.sendTo(msg, player.connection.connection, NetworkDirection.PLAY_TO_CLIENT); - } + public static void sendToServer(CustomPacketPayload msg) { + PacketDistributor.SERVER.noArg().send(msg); } - public static void sendTo(Object msg, PacketDistributor.PacketTarget target) { - INSTANCE.send(target, msg); + public static void syncAllomancerData(ServerPlayer player) { + sync(new AllomancerDataPayload(player), player); } - public static void sync(ServerPlayer player) { - player.getCapability(AllomancerCapability.PLAYER_CAP).ifPresent(data -> sync(data, player)); + public static void sync(CustomPacketPayload msg, ServerPlayer player) { + PacketDistributor.TRACKING_ENTITY_AND_SELF.with(player).send(msg); } - - public static void sync(IAllomancerData cap, ServerPlayer player) { - sync(new AllomancerDataPacket(cap, player), player); - } - - public static void sync(Object msg, ServerPlayer player) { - sendTo(msg, PacketDistributor.TRACKING_ENTITY_AND_SELF.with(() -> player)); - } - } diff --git a/src/main/java/com/legobmw99/allomancy/util/AllomancyConfig.java b/src/main/java/com/legobmw99/allomancy/util/AllomancyConfig.java index de7b45d6..372416ad 100644 --- a/src/main/java/com/legobmw99/allomancy/util/AllomancyConfig.java +++ b/src/main/java/com/legobmw99/allomancy/util/AllomancyConfig.java @@ -2,23 +2,23 @@ import com.legobmw99.allomancy.modules.materials.MaterialsConfig; import com.legobmw99.allomancy.modules.powers.PowersConfig; -import net.minecraftforge.common.ForgeConfigSpec; -import net.minecraftforge.fml.ModLoadingContext; -import net.minecraftforge.fml.config.ModConfig; -import net.minecraftforge.fml.event.config.ModConfigEvent; +import net.neoforged.fml.ModLoadingContext; +import net.neoforged.fml.config.ModConfig; +import net.neoforged.fml.event.config.ModConfigEvent; +import net.neoforged.neoforge.common.ModConfigSpec; public class AllomancyConfig { - public static final ForgeConfigSpec COMMON_CONFIG; - public static final ForgeConfigSpec CLIENT_CONFIG; - public static final ForgeConfigSpec SERVER_CONFIG; + public static final ModConfigSpec COMMON_CONFIG; + public static final ModConfigSpec CLIENT_CONFIG; + public static final ModConfigSpec SERVER_CONFIG; static { - var COMMON_BUILDER = new ForgeConfigSpec.Builder(); - var CLIENT_BUILDER = new ForgeConfigSpec.Builder(); - var SERVER_BUILDER = new ForgeConfigSpec.Builder(); + var COMMON_BUILDER = new ModConfigSpec.Builder(); + var CLIENT_BUILDER = new ModConfigSpec.Builder(); + var SERVER_BUILDER = new ModConfigSpec.Builder(); MaterialsConfig.init(COMMON_BUILDER); PowersConfig.init(SERVER_BUILDER, COMMON_BUILDER, CLIENT_BUILDER); diff --git a/src/main/java/com/legobmw99/allomancy/util/ItemDisplay.java b/src/main/java/com/legobmw99/allomancy/util/ItemDisplay.java index 598cd91d..e19c7e0b 100644 --- a/src/main/java/com/legobmw99/allomancy/util/ItemDisplay.java +++ b/src/main/java/com/legobmw99/allomancy/util/ItemDisplay.java @@ -15,16 +15,17 @@ import net.minecraft.world.item.CreativeModeTab; import net.minecraft.world.item.CreativeModeTabs; import net.minecraft.world.item.ItemStack; -import net.minecraftforge.event.BuildCreativeModeTabContentsEvent; -import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext; -import net.minecraftforge.registries.DeferredRegister; -import net.minecraftforge.registries.RegistryObject; +import net.neoforged.bus.api.IEventBus; +import net.neoforged.neoforge.event.BuildCreativeModeTabContentsEvent; +import net.neoforged.neoforge.registries.DeferredRegister; + +import java.util.function.Supplier; public class ItemDisplay { public static final DeferredRegister CREATIVETABS = DeferredRegister.create(Registries.CREATIVE_MODE_TAB, Allomancy.MODID); - public static RegistryObject allomancy_group = CREATIVETABS.register("main_tab", () -> CreativeModeTab + public static Supplier allomancy_group = CREATIVETABS.register("main_tab", () -> CreativeModeTab .builder() .icon(() -> new ItemStack(CombatSetup.MISTCLOAK.get())) .title(Component.translatable("tabs.allomancy.main_tab")) @@ -107,8 +108,8 @@ public static void addTabContents(BuildCreativeModeTabContentsEvent event) { } } - public static void register() { - CREATIVETABS.register(FMLJavaModLoadingContext.get().getModEventBus()); + public static void register(IEventBus bus) { + CREATIVETABS.register(bus); } public static MutableComponent addColorToText(String translationKey, ChatFormatting color) { diff --git a/src/main/resources/META-INF/mods.toml b/src/main/resources/META-INF/mods.toml index 029f7606..c39ec4d9 100644 --- a/src/main/resources/META-INF/mods.toml +++ b/src/main/resources/META-INF/mods.toml @@ -4,32 +4,32 @@ # Note that there are a couple of TOML lists in this file. # Find more information on toml format here: https://github.com/toml-lang/toml # The name of the mod loader type to load - for regular FML @Mod mods it should be javafml -modLoader="javafml" #mandatory -# A version range to match for said mod loader - for regular FML @Mod it will be the forge version -loaderVersion="${loader_version_range}" #mandatory This is typically bumped every Minecraft version by Forge. See our download page for lists of versions. +modLoader = "javafml" #mandatory +# A version range to match for said mod loader - for regular FML @Mod it will be the the FML version. This is currently 47. +loaderVersion = "${loader_version_range}" #mandatory # The license for you mod. This is mandatory metadata and allows for easier comprehension of your redistributive properties. # Review your options at https://choosealicense.com/. All rights reserved is the default copyright stance, and is thus the default here. -license="${mod_license}" +license = "${mod_license}" # A URL to refer people to when problems occur with this mod issueTrackerURL = "https://github.com/legobmw99/Allomancy/issues" #optional # A list of mods - how many allowed here is determined by the individual mod loader [[mods]] #mandatory # The modid of the mod -modId="${mod_id}" #mandatory +modId = "${mod_id}" #mandatory # The version number of the mod -version="${mod_version}" #mandatory +version = "${mod_version}" #mandatory # A display name for the mod -displayName="${mod_name}" #mandatory -# A URL to query for updates for this mod. See the JSON update specification https://docs.minecraftforge.net/en/latest/misc/updatechecker/ -updateJSONURL="https://api.modrinth.com/updates/allomancy/forge_updates.json" #optional +displayName = "${mod_name}" #mandatory +# A URL to query for updates for this mod. See the JSON update specification https://docs.neoforged.net/docs/misc/updatechecker/ +updateJSONURL = "https://api.modrinth.com/updates/allomancy/forge_updates.json" #optional # A URL for the "homepage" for this mod, displayed in the mod UI displayURL = "https://github.com/legobmw99/Allomancy" #optional # A file name (in the root of the mod JAR) containing a logo for display -logoFile="logo.png" #optional +logoFile = "logo.png" #optional # A text field displayed in the mod UI credits = "Thanks to Brandon Sanderson, for the magic, and ZenDarva, for the original Allomancy mod" #optional # A text field displayed in the mod UI -authors="${mod_authors}" #optional +authors = "${mod_authors}" #optional # Display Test controls the display for your mod in the server connection screen # MATCH_VERSION means that your mod will cause a red X if the versions on client and server differ. This is the default behaviour and should be what you choose if you have server and client elements to your mod. # IGNORE_SERVER_VERSION means that your mod will not cause a red X if it's present on the server but not on the client. This is what you should use if you're a server only mod. @@ -39,26 +39,43 @@ authors="${mod_authors}" #optional #displayTest="MATCH_VERSION" # MATCH_VERSION is the default if nothing is specified (#optional) # The description text for the mod (multi line!) (#mandatory) -description='''${mod_description}''' +description = '''${mod_description}''' # A dependency - use the . to indicate dependency for a specific modid. Dependencies are optional. -[[dependencies.${mod_id}]] #optional +[[dependencies.${ mod_id }]] #optional # the modid of the dependency -modId="forge" #mandatory -# Does this dependency have to exist - if not, ordering below must be specified -mandatory=true #mandatory +modId = "neoforge" #mandatory +# The type of the dependency. Can be one of "required", "optional", "incompatible" or "discouraged" (case insensitive). +# 'required' requires the mod to exist, 'optional' does not +# 'incompatible' will prevent the game from loading when the mod exists, and 'discouraged' will show a warning +type = "required" #mandatory +# Optional field describing why the dependency is required or why it is incompatible +# reason="..." # The version range of the dependency -versionRange="${forge_version_range}" #mandatory -# An ordering relationship for the dependency - BEFORE or AFTER required if the dependency is not mandatory +versionRange = "${neo_version_range}" #mandatory +# An ordering relationship for the dependency. # BEFORE - This mod is loaded BEFORE the dependency # AFTER - This mod is loaded AFTER the dependency -ordering="NONE" +ordering = "NONE" # Side this dependency is applied on - BOTH, CLIENT, or SERVER -side="BOTH" +side = "BOTH" # Here's another dependency -[[dependencies.${mod_id}]] -modId="minecraft" -mandatory=true +[[dependencies.${ mod_id }]] +modId = "minecraft" +type = "required" # This version range declares a minimum of the current minecraft version up to but not including the next major version -versionRange="${minecraft_version_range}" -ordering="NONE" -side="BOTH" +versionRange = "${minecraft_version_range}" +ordering = "NONE" +side = "BOTH" + +[[dependencies.${ mod_id }]] +modId = "jade" +type = "optional" +# This version range declares a minimum of the current minecraft version up to but not including the next major version +versionRange = "${jade_version_range}" +ordering = "NONE" +side = "CLIENT" +# Features are specific properties of the game environment, that you may want to declare you require. This example declares +# that your mod requires GL version 3.2 or higher. Other features will be added. They are side aware so declaring this won't +# stop your mod loading on the server for example. +#[features.${mod_id}] +#openGLVersion="[3.2,)" \ No newline at end of file diff --git a/src/main/resources/assets/allomancy/lang/cs_cz.json b/src/main/resources/assets/allomancy/lang/cs_cz.json index 680788cd..8318a4a4 100644 --- a/src/main/resources/assets/allomancy/lang/cs_cz.json +++ b/src/main/resources/assets/allomancy/lang/cs_cz.json @@ -1,445 +1,445 @@ { - "advancements.become_mistborn.desc" : "Máš moc, kterou ti většina lidí závidí...", - "advancements.become_mistborn.title" : "Staňte se Mistbornem!", - "advancements.dna_entangled.desc" : "Vaše DNA je příliš spjata s duchovní sférou, než abyste mohli používat Lerasium.", - "advancements.dna_entangled.title" : "Duchovní propojení DNA", - "advancements.local_metallurgist.desc" : "Vyrobte si mlýnek a začněte míchat kovy.", - "advancements.local_metallurgist.title" : "Místní hutník!", - "block.allomancy.aluminum_block" : "Blok hliníku", - "block.allomancy.aluminum_ore" : "Hliníková ruda", - "block.allomancy.bendalloy_block" : "Blok Bendalloy", - "block.allomancy.brass_block" : "Mosazný blok", - "block.allomancy.bronze_block" : "Bronzový blok", - "block.allomancy.cadmium_block" : "Blok kadmia", - "block.allomancy.cadmium_ore" : "Kadmiová ruda", - "block.allomancy.chromium_block" : "Blok chromu", - "block.allomancy.chromium_ore" : "Chromium Ore", - "block.allomancy.deepslate_aluminum_ore" : "Hliníková ruda Deepslate", - "block.allomancy.deepslate_cadmium_ore" : "Kadmiová ruda Deppslate", - "block.allomancy.deepslate_chromium_ore" : "Chromová ruda Deepslate", - "block.allomancy.deepslate_lead_ore" : "Olověná ruda Deepslate", - "block.allomancy.deepslate_silver_ore" : "Stříbrná ruda Deepslate", - "block.allomancy.deepslate_tin_ore" : "Cínová ruda Deepslate", - "block.allomancy.deepslate_zinc_ore" : "Zinková ruda Deepslate", - "block.allomancy.duralumin_block" : "Duralový blok", - "block.allomancy.electrum_block" : "Blok elektra", - "block.allomancy.iron_activation.lore" : "Tento předmět se zdá být příliš těžký na to, aby se dal aktivovat běžnými prostředky.", - "block.allomancy.iron_button" : "Železné tlačítko", - "block.allomancy.iron_lever" : "Železná páka", - "block.allomancy.lead_block" : "Olověný blok", - "block.allomancy.lead_ore" : "Olověná ruda", - "block.allomancy.nicrosil_block" : "Blok nikrosilu", - "block.allomancy.pewter_block" : "Blok slitiny cínu", - "block.allomancy.raw_aluminum_block" : "Blok surového hliníku", - "block.allomancy.raw_cadmium_block" : "Blok surového kadmia", - "block.allomancy.raw_chromium_block" : "Blok surového chromu", - "block.allomancy.raw_lead_block" : "Blok surového olova", - "block.allomancy.raw_silver_block" : "Blok surového stříbra", - "block.allomancy.raw_tin_block" : "Blok surového cínu", - "block.allomancy.raw_zinc_block" : "Blok surového zinku", - "block.allomancy.silver_block" : "Stříbrný blok", - "block.allomancy.silver_ore" : "Stříbrná ruda", - "block.allomancy.steel_block" : "Ocelový blok", - "block.allomancy.tin_block" : "Blok cínu", - "block.allomancy.tin_ore" : "Cínová ruda", - "block.allomancy.zinc_block" : "Blok zinku", - "block.allomancy.zinc_ore" : "Ruda zinku", - "block.minecraft.banner.allomancy.aluminum.black" : "Černý symbol z hliníku", - "block.minecraft.banner.allomancy.aluminum.blue" : "Modrý symbol z hliníku", - "block.minecraft.banner.allomancy.aluminum.brown" : "Hnědý symbol z hliníku", - "block.minecraft.banner.allomancy.aluminum.cyan" : "Azurový symbol z hliníku", - "block.minecraft.banner.allomancy.aluminum.gray" : "Šedivý symbol z hliníku", - "block.minecraft.banner.allomancy.aluminum.green" : "Zelený symbol z hliníku", - "block.minecraft.banner.allomancy.aluminum.light_blue" : "Světlemodrý symbol z hliníku", - "block.minecraft.banner.allomancy.aluminum.light_gray" : "Světlezelený symbol z hliníku", - "block.minecraft.banner.allomancy.aluminum.lime" : "Vápenatý symbol z hliníku", - "block.minecraft.banner.allomancy.aluminum.magenta" : "Purpurový symbol z hliníku", - "block.minecraft.banner.allomancy.aluminum.orange" : "Oranžový symbol z hliníku", - "block.minecraft.banner.allomancy.aluminum.pink" : "Růžový symbol z hliníku", - "block.minecraft.banner.allomancy.aluminum.purple" : "Fialový symbol z hliníku", - "block.minecraft.banner.allomancy.aluminum.red" : "Černý symbol z hliníku", - "block.minecraft.banner.allomancy.aluminum.white" : "Bílý symbol z hliníku", - "block.minecraft.banner.allomancy.aluminum.yellow" : "Žlutý symbol z hliníku", - "block.minecraft.banner.allomancy.bendalloy.black" : "Černý symbol z Bendalloy", - "block.minecraft.banner.allomancy.bendalloy.blue" : "Modrý symbol z Bendalloy", - "block.minecraft.banner.allomancy.bendalloy.brown" : "Hnědý symbol z Bendalloy", - "block.minecraft.banner.allomancy.bendalloy.cyan" : "Azurový symbol z Bendalloy", - "block.minecraft.banner.allomancy.bendalloy.gray" : "Šedý symbol z Bendalloy", - "block.minecraft.banner.allomancy.bendalloy.green" : "Zelený symbol z Bendalloy", - "block.minecraft.banner.allomancy.bendalloy.light_blue" : "Světlemodrý symbol z Bendalloy", - "block.minecraft.banner.allomancy.bendalloy.light_gray" : "Světlezelený symbol Bendalloy", - "block.minecraft.banner.allomancy.bendalloy.lime" : "Vápenatý symbol z Bendalloy", - "block.minecraft.banner.allomancy.bendalloy.magenta" : "Purpurový symbol z Bendalloy", - "block.minecraft.banner.allomancy.bendalloy.orange" : "Oranžový symbol z Bendalloy", - "block.minecraft.banner.allomancy.bendalloy.pink" : "Růžový symbol z Bendalloy", - "block.minecraft.banner.allomancy.bendalloy.purple" : "Fialový symbol z Bendalloy", - "block.minecraft.banner.allomancy.bendalloy.red" : "Červený symbol z Bendalloy", - "block.minecraft.banner.allomancy.bendalloy.white" : "Bílý symbol z Bendalloy", - "block.minecraft.banner.allomancy.bendalloy.yellow" : "Žlutý symbol z Bendalloy", - "block.minecraft.banner.allomancy.brass.black" : "Černý symbol z mosazi", - "block.minecraft.banner.allomancy.brass.blue" : "Modrý symbol z mosazi", - "block.minecraft.banner.allomancy.brass.brown" : "Hnědý symbol z mosazi", - "block.minecraft.banner.allomancy.brass.cyan" : "Azurový symbol z mosazi", - "block.minecraft.banner.allomancy.brass.gray" : "Šedý symbol z mosazi", - "block.minecraft.banner.allomancy.brass.green" : "Zelený symbol z mosazi", - "block.minecraft.banner.allomancy.brass.light_blue" : "Světlemodrý symbol z mosazi", - "block.minecraft.banner.allomancy.brass.light_gray" : "Světlezelený symbol z mosazi", - "block.minecraft.banner.allomancy.brass.lime" : "Vápenatý symbol z mosazi", - "block.minecraft.banner.allomancy.brass.magenta" : "Purpurový symbol z mosazi", - "block.minecraft.banner.allomancy.brass.orange" : "Oranžový symbol z mosazi", - "block.minecraft.banner.allomancy.brass.pink" : "Růžový symbol z mosazi", - "block.minecraft.banner.allomancy.brass.purple" : "Fialový symbol z mosazi", - "block.minecraft.banner.allomancy.brass.red" : "Červený symbol z mosazi", - "block.minecraft.banner.allomancy.brass.white" : "Bílý symbol z mosazi", - "block.minecraft.banner.allomancy.brass.yellow" : "Žlutý symbol z mosazi", - "block.minecraft.banner.allomancy.bronze.black" : "Černý symbol z bronzu", - "block.minecraft.banner.allomancy.bronze.blue" : "Modrý symbol z bronzu", - "block.minecraft.banner.allomancy.bronze.brown" : "Hnědý symbol z bronzu", - "block.minecraft.banner.allomancy.bronze.cyan" : "Azurový symbol z bronzu", - "block.minecraft.banner.allomancy.bronze.gray" : "Šedý symbol z bronzu", - "block.minecraft.banner.allomancy.bronze.green" : "Zelený symbol z bronzu", - "block.minecraft.banner.allomancy.bronze.light_blue" : "Světlemodrý symbol z bronzu", - "block.minecraft.banner.allomancy.bronze.light_gray" : "Světlezelený symbol z bronzu", - "block.minecraft.banner.allomancy.bronze.lime" : "Vápenatý symbol z bronzu", - "block.minecraft.banner.allomancy.bronze.magenta" : "Purpurový symbol z bronzu", - "block.minecraft.banner.allomancy.bronze.orange" : "Oranžový symbol z bronzu", - "block.minecraft.banner.allomancy.bronze.pink" : "Růžový symbol z bronzu", - "block.minecraft.banner.allomancy.bronze.purple" : "Fialový symbol z bronzu", - "block.minecraft.banner.allomancy.bronze.red" : "Červený symbol z bronzu", - "block.minecraft.banner.allomancy.bronze.white" : "Bílý symbol z bronzu", - "block.minecraft.banner.allomancy.bronze.yellow" : "Žlutý symbol z bronzu", - "block.minecraft.banner.allomancy.cadmium.black" : "Černý symbol z kadmia", - "block.minecraft.banner.allomancy.cadmium.blue" : "Modrý symbol z kadmia", - "block.minecraft.banner.allomancy.cadmium.brown" : "Hnědý symbol z kadmia", - "block.minecraft.banner.allomancy.cadmium.cyan" : "Azurový symbol z kadmia", - "block.minecraft.banner.allomancy.cadmium.gray" : "Šedivý symbol z kadmia", - "block.minecraft.banner.allomancy.cadmium.green" : "Zelený symbol z kadmia", - "block.minecraft.banner.allomancy.cadmium.light_blue" : "Světlemodrý symbol z kadmia", - "block.minecraft.banner.allomancy.cadmium.light_gray" : "Světlezelený symbol z kadmia", - "block.minecraft.banner.allomancy.cadmium.lime" : "Vápenatý symbol z kadmia", - "block.minecraft.banner.allomancy.cadmium.magenta" : "Purpurový symbol z kadmia", - "block.minecraft.banner.allomancy.cadmium.orange" : "Oranžový symbol z kadmia", - "block.minecraft.banner.allomancy.cadmium.pink" : "Růžový symbol z kadmia", - "block.minecraft.banner.allomancy.cadmium.purple" : "Fialový symbol z kadmia", - "block.minecraft.banner.allomancy.cadmium.red" : "Červený symbol z kadmia", - "block.minecraft.banner.allomancy.cadmium.white" : "Bílý symbol z kadmia", - "block.minecraft.banner.allomancy.cadmium.yellow" : "Žlutý symbol z kadmia", - "block.minecraft.banner.allomancy.chromium.black" : "Černý symbol z chromu", - "block.minecraft.banner.allomancy.chromium.blue" : "Modrý symbol z chromu", - "block.minecraft.banner.allomancy.chromium.brown" : "Hnědý symbol z chromu", - "block.minecraft.banner.allomancy.chromium.cyan" : "Azurový symbol z chromu", - "block.minecraft.banner.allomancy.chromium.gray" : "Šedivý symbol z chromu", - "block.minecraft.banner.allomancy.chromium.green" : "Zelený symbol z chromu", - "block.minecraft.banner.allomancy.chromium.light_blue" : "Světlemodrý symbol z chromu", - "block.minecraft.banner.allomancy.chromium.light_gray" : "Světlezelený symbol z chromu", - "block.minecraft.banner.allomancy.chromium.lime" : "Vápenatý symbol z chromu", - "block.minecraft.banner.allomancy.chromium.magenta" : "Purpurový symbol z chromu", - "block.minecraft.banner.allomancy.chromium.orange" : "Oranžový symbol z chromu", - "block.minecraft.banner.allomancy.chromium.pink" : "Růžový symbol z chromu", - "block.minecraft.banner.allomancy.chromium.purple" : "Fialový symbol z chromu", - "block.minecraft.banner.allomancy.chromium.red" : "Červený symbol z chromu", - "block.minecraft.banner.allomancy.chromium.white" : "Bílý symbol z chromu", - "block.minecraft.banner.allomancy.chromium.yellow" : "Žlutý symbol z chromu", - "block.minecraft.banner.allomancy.copper.black" : "Černý symbol z mědi", - "block.minecraft.banner.allomancy.copper.blue" : "Modrý symbol z mědi", - "block.minecraft.banner.allomancy.copper.brown" : "Hnědý symbol z mědi", - "block.minecraft.banner.allomancy.copper.cyan" : "Azurový symbol z mědi", - "block.minecraft.banner.allomancy.copper.gray" : "Šedivý symbol z mědi", - "block.minecraft.banner.allomancy.copper.green" : "Zelený symbol z mědi", - "block.minecraft.banner.allomancy.copper.light_blue" : "Světlemodrý symbol z mědi", - "block.minecraft.banner.allomancy.copper.light_gray" : "Světlezelený symbol z mědi", - "block.minecraft.banner.allomancy.copper.lime" : "Vápenatý symbol z mědi", - "block.minecraft.banner.allomancy.copper.magenta" : "Purpurový symbol z mědi", - "block.minecraft.banner.allomancy.copper.orange" : "Oranžový symbol z mědi", - "block.minecraft.banner.allomancy.copper.pink" : "Růžový symbol z mědi", - "block.minecraft.banner.allomancy.copper.purple" : "Fialový symbol z mědi", - "block.minecraft.banner.allomancy.copper.red" : "Červený symbol z mědi", - "block.minecraft.banner.allomancy.copper.white" : "Bílý symbol z mědi", - "block.minecraft.banner.allomancy.copper.yellow" : "Žlutý symbol z mědi", - "block.minecraft.banner.allomancy.duralumin.black" : "Černý symbol z duralu", - "block.minecraft.banner.allomancy.duralumin.blue" : "Modrý symbol z duralu", - "block.minecraft.banner.allomancy.duralumin.brown" : "Hnědý symbol z duralu", - "block.minecraft.banner.allomancy.duralumin.cyan" : "Azurový symbol z duralu", - "block.minecraft.banner.allomancy.duralumin.gray" : "Šedivý symbol z duralu", - "block.minecraft.banner.allomancy.duralumin.green" : "Zelený symbol z duralu", - "block.minecraft.banner.allomancy.duralumin.light_blue" : "Světlemodrý symbol z duralu", - "block.minecraft.banner.allomancy.duralumin.light_gray" : "Světlezelený symbol z duralu", - "block.minecraft.banner.allomancy.duralumin.lime" : "Vápenatý symbol z duralu", - "block.minecraft.banner.allomancy.duralumin.magenta" : "Purpurový symbol z duralu", - "block.minecraft.banner.allomancy.duralumin.orange" : "Oranžový symbol z duralu", - "block.minecraft.banner.allomancy.duralumin.pink" : "Růžový symbol z duralu", - "block.minecraft.banner.allomancy.duralumin.purple" : "Fialový symbol z duralu", - "block.minecraft.banner.allomancy.duralumin.red" : "Červený symbol z duralu", - "block.minecraft.banner.allomancy.duralumin.white" : "Bílý symbol z duralu", - "block.minecraft.banner.allomancy.duralumin.yellow" : "Žlutý symbol z duralu", - "block.minecraft.banner.allomancy.electrum.black" : "Černý symbol z elektra", - "block.minecraft.banner.allomancy.electrum.blue" : "Modrý symbol z elektra", - "block.minecraft.banner.allomancy.electrum.brown" : "Hnědý symbol z elektra", - "block.minecraft.banner.allomancy.electrum.cyan" : "Azurový symbol z elektra", - "block.minecraft.banner.allomancy.electrum.gray" : "Šedivý symbol z elektra", - "block.minecraft.banner.allomancy.electrum.green" : "Zelený symbol z elektra", - "block.minecraft.banner.allomancy.electrum.light_blue" : "Světlemodrý symbol z elektra", - "block.minecraft.banner.allomancy.electrum.light_gray" : "Světlezelený symbol z elektra", - "block.minecraft.banner.allomancy.electrum.lime" : "Vápenatý symbol z elektra", - "block.minecraft.banner.allomancy.electrum.magenta" : "Purpurový symbol z elektra", - "block.minecraft.banner.allomancy.electrum.orange" : "Oranžový symbol z elektra", - "block.minecraft.banner.allomancy.electrum.pink" : "Růžový symbol z elektra", - "block.minecraft.banner.allomancy.electrum.purple" : "Fialový symbol z elektra", - "block.minecraft.banner.allomancy.electrum.red" : "Červený symbol z elektra", - "block.minecraft.banner.allomancy.electrum.white" : "Bílý symbol z elektra", - "block.minecraft.banner.allomancy.electrum.yellow" : "Žlutý symbol z elektra", - "block.minecraft.banner.allomancy.gold.black" : "Černý symbol ze zlata", - "block.minecraft.banner.allomancy.gold.blue" : "Modrý symbol ze zlata", - "block.minecraft.banner.allomancy.gold.brown" : "Hnědý symbol ze zlata", - "block.minecraft.banner.allomancy.gold.cyan" : "Azurový symbol ze zlata", - "block.minecraft.banner.allomancy.gold.gray" : "Šedivý symbol ze zlata", - "block.minecraft.banner.allomancy.gold.green" : "Zelený symbol ze zlata", - "block.minecraft.banner.allomancy.gold.light_blue" : "Světlemodrý symbol ze zlata", - "block.minecraft.banner.allomancy.gold.light_gray" : "Světlezelený symbol ze zlata", - "block.minecraft.banner.allomancy.gold.lime" : "Vápenatý symbol ze zalata", - "block.minecraft.banner.allomancy.gold.magenta" : "Purpurový symbol ze zlata", - "block.minecraft.banner.allomancy.gold.orange" : "Oranžový symbol ze zlata", - "block.minecraft.banner.allomancy.gold.pink" : "Růžový symbol ze zlata", - "block.minecraft.banner.allomancy.gold.purple" : "Fialový symbol ze zlata", - "block.minecraft.banner.allomancy.gold.red" : "Červený symbol ze zlata", - "block.minecraft.banner.allomancy.gold.white" : "Bílý symbol ze zlata", - "block.minecraft.banner.allomancy.gold.yellow" : "Žlutý symbol ze zlata", - "block.minecraft.banner.allomancy.iron.black" : "Černý symbol ze železa", - "block.minecraft.banner.allomancy.iron.blue" : "Modrý symbol ze železa", - "block.minecraft.banner.allomancy.iron.brown" : "Hnědý symbol ze železa", - "block.minecraft.banner.allomancy.iron.cyan" : "Azurový symbol ze železa", - "block.minecraft.banner.allomancy.iron.gray" : "Šedivý symbol ze železa", - "block.minecraft.banner.allomancy.iron.green" : "Zelený symbol ze železa ", - "block.minecraft.banner.allomancy.iron.light_blue" : "Světlemodrý symbol ze železa", - "block.minecraft.banner.allomancy.iron.light_gray" : "Světlezelený symbol ze železa", - "block.minecraft.banner.allomancy.iron.lime" : "Vápenatý symbol ze železa", - "block.minecraft.banner.allomancy.iron.magenta" : "Purpurový symbol ze železa", - "block.minecraft.banner.allomancy.iron.orange" : "Oranžový symbol ze železa", - "block.minecraft.banner.allomancy.iron.pink" : "Růžový symbol ze železa", - "block.minecraft.banner.allomancy.iron.purple" : "Fialový symbol ze železa", - "block.minecraft.banner.allomancy.iron.red" : "Červený symbol ze železa", - "block.minecraft.banner.allomancy.iron.white" : "Bilý symbol ze železa", - "block.minecraft.banner.allomancy.iron.yellow" : "Žlutý symbol ze železa", - "block.minecraft.banner.allomancy.nicrosil.black" : "Černý symbol z nikrosilu", - "block.minecraft.banner.allomancy.nicrosil.blue" : "Modrý symbol nikrosilu", - "block.minecraft.banner.allomancy.nicrosil.brown" : "Hnědý symbol z nikrosilu", - "block.minecraft.banner.allomancy.nicrosil.cyan" : "Azurový symbol z nikrosilu", - "block.minecraft.banner.allomancy.nicrosil.gray" : "Šedivý symbol z nikrosilu", - "block.minecraft.banner.allomancy.nicrosil.green" : "Zelený symbol z nikrosilu", - "block.minecraft.banner.allomancy.nicrosil.light_blue" : "Světlemodrý symbol z nikrosilu", - "block.minecraft.banner.allomancy.nicrosil.light_gray" : "Světlezelený symbol z nikrosilu", - "block.minecraft.banner.allomancy.nicrosil.lime" : "Vápenatý symbol z nikrosilu", - "block.minecraft.banner.allomancy.nicrosil.magenta" : "Purpurový symbol z nikrosilu", - "block.minecraft.banner.allomancy.nicrosil.orange" : "Oranžový symbol z nikrosilu", - "block.minecraft.banner.allomancy.nicrosil.pink" : "Růžový symbol z nikrosilu", - "block.minecraft.banner.allomancy.nicrosil.purple" : "Fialový symbol z nikrosilu", - "block.minecraft.banner.allomancy.nicrosil.red" : "Červený symbol z nikrosilu", - "block.minecraft.banner.allomancy.nicrosil.white" : "Bilý symbol z nikrosilu", - "block.minecraft.banner.allomancy.nicrosil.yellow" : "Žlutý symbol z nikrosilu", - "block.minecraft.banner.allomancy.pewter.black" : "Černý symbol ze slitiny cínu", - "block.minecraft.banner.allomancy.pewter.blue" : "Modrý symbol ze slitiny cínu", - "block.minecraft.banner.allomancy.pewter.brown" : "Hnědý symbol ze slitiny cínu", - "block.minecraft.banner.allomancy.pewter.cyan" : "Azurový symbol ze slitiny cínu", - "block.minecraft.banner.allomancy.pewter.gray" : "Šedivý symbol ze slitiny cínu", - "block.minecraft.banner.allomancy.pewter.green" : "Zelený symbol ze slitiny cínu", - "block.minecraft.banner.allomancy.pewter.light_blue" : "Světlemodrý symbol ze slitiny cínu", - "block.minecraft.banner.allomancy.pewter.light_gray" : "Světlezelený symbol ze slitiny cínu", - "block.minecraft.banner.allomancy.pewter.lime" : "Vápenatý symbol ze slitiny cínu", - "block.minecraft.banner.allomancy.pewter.magenta" : "Purpurový symbol ze slitiny cínu", - "block.minecraft.banner.allomancy.pewter.orange" : "Oranžový symbol ze slitiny cínu", - "block.minecraft.banner.allomancy.pewter.pink" : "Růžový symbol ze slitiny cínu", - "block.minecraft.banner.allomancy.pewter.purple" : "Fialový symbol ze slitiny cínu", - "block.minecraft.banner.allomancy.pewter.red" : "Červený symbol ze slitiny cínu", - "block.minecraft.banner.allomancy.pewter.white" : "Bílý symbol ze slitiny cínu", - "block.minecraft.banner.allomancy.pewter.yellow" : "Žlutý symbol ze slitiny cínu", - "block.minecraft.banner.allomancy.steel.black" : "Černý symbol z oceli", - "block.minecraft.banner.allomancy.steel.blue" : "Modrý symbol z oceli", - "block.minecraft.banner.allomancy.steel.brown" : "Hnědý symbol z oceli", - "block.minecraft.banner.allomancy.steel.cyan" : "Azurový symbol z oceli", - "block.minecraft.banner.allomancy.steel.gray" : "Šedivý symbol z oceli", - "block.minecraft.banner.allomancy.steel.green" : "Zelený symbol z oceli", - "block.minecraft.banner.allomancy.steel.light_blue" : "Světlemodrý symbol z oceli", - "block.minecraft.banner.allomancy.steel.light_gray" : "Světlezelený symbol z oceli", - "block.minecraft.banner.allomancy.steel.lime" : "Vápenatý symbol z oceli", - "block.minecraft.banner.allomancy.steel.magenta" : "Purpurový symbol z oceli", - "block.minecraft.banner.allomancy.steel.orange" : "Oranžový symbol z oceli", - "block.minecraft.banner.allomancy.steel.pink" : "Růžový symbol z oceli", - "block.minecraft.banner.allomancy.steel.purple" : "Fialový symbol z oceli", - "block.minecraft.banner.allomancy.steel.red" : "Červený symbol z oceli", - "block.minecraft.banner.allomancy.steel.white" : "Bilý symbol z oceli", - "block.minecraft.banner.allomancy.steel.yellow" : "Žlutý symbol z oceli", - "block.minecraft.banner.allomancy.tin.black" : "Černý symbol z cínu", - "block.minecraft.banner.allomancy.tin.blue" : "Modrý symbol z cínu", - "block.minecraft.banner.allomancy.tin.brown" : "Hnědý symbol z cínu", - "block.minecraft.banner.allomancy.tin.cyan" : "Azurový symbol z cínu", - "block.minecraft.banner.allomancy.tin.gray" : "Šedivý symbol z cínu", - "block.minecraft.banner.allomancy.tin.green" : "Zelený symbol z cínu", - "block.minecraft.banner.allomancy.tin.light_blue" : "Světlemodrý symbol z cínu", - "block.minecraft.banner.allomancy.tin.light_gray" : "Světlezelený symbol z cínu", - "block.minecraft.banner.allomancy.tin.lime" : "Vápenatý symbol z cínu", - "block.minecraft.banner.allomancy.tin.magenta" : "Purpurový symbol z cínu", - "block.minecraft.banner.allomancy.tin.orange" : "Oranžový symbol z cínu", - "block.minecraft.banner.allomancy.tin.pink" : "Růžový symbol z cínu", - "block.minecraft.banner.allomancy.tin.purple" : "Fialový symbol z cínu", - "block.minecraft.banner.allomancy.tin.red" : "Červený symbol z cínu", - "block.minecraft.banner.allomancy.tin.white" : "Bílý symbol z cínu", - "block.minecraft.banner.allomancy.tin.yellow" : "Žlutý symbol z cínu", - "block.minecraft.banner.allomancy.zinc.black" : "Černý symbol ze zinku", - "block.minecraft.banner.allomancy.zinc.blue" : "Modrý symbol ze zinku", - "block.minecraft.banner.allomancy.zinc.brown" : "Hnědý symbol ze zinku", - "block.minecraft.banner.allomancy.zinc.cyan" : "Azurový symbol ze zinku", - "block.minecraft.banner.allomancy.zinc.gray" : "Šedivý symbol ze zinku", - "block.minecraft.banner.allomancy.zinc.green" : "Zelený symbol ze zinku", - "block.minecraft.banner.allomancy.zinc.light_blue" : "Světlemodrý symbol ze zinku", - "block.minecraft.banner.allomancy.zinc.light_gray" : "Světle zelený", - "block.minecraft.banner.allomancy.zinc.lime" : "Vápenatý symbol ze zinku", - "block.minecraft.banner.allomancy.zinc.magenta" : "Purpurový symbol ze zinku", - "block.minecraft.banner.allomancy.zinc.orange" : "Oranžový symbol ze zinku", - "block.minecraft.banner.allomancy.zinc.pink" : "Růžový symbol ze zinku", - "block.minecraft.banner.allomancy.zinc.purple" : "Fialový symbol ze zinku", - "block.minecraft.banner.allomancy.zinc.red" : "Červený symbol ze zinku", - "block.minecraft.banner.allomancy.zinc.white" : "Bílý symbol ze zinku", - "block.minecraft.banner.allomancy.zinc.yellow" : "Žlutý symbol ze zinku", - "commands.allomancy.addpower" : "%š přidává Allomatickou sílu %š", - "commands.allomancy.err_add" : "Nelze přidat sílu %s, již byla přidána", - "commands.allomancy.err_remove" : "Nelze odebrat sílu %s, kterou jsem neměl", - "commands.allomancy.getpowers" : "%s má v současné době Allomatickou sílu: %s", - "commands.allomancy.removepower" : "%s odebrána Allomantická síla %s", - "commands.allomancy.unrecognized" : "Nerozpoznaná Allomatická síla: '%s'", - "config.jade.plugin_allomancy.waila_bronze" : "Alomancie: Ukáže při hledání hořící kovy", - "entity.allomancy.nugget_projectile" : "Projektil nugetu", - "item.allomancy.allomantic_grinder" : "Ruční bruska", - "item.allomancy.aluminum_flakes" : "Hliníkové plátky", - "item.allomancy.aluminum_ingot" : "Hliníkový ingot", - "item.allomancy.aluminum_nugget" : "Hliníkový nuget", - "item.allomancy.aluminum_pattern" : "Vzor praporu", - "item.allomancy.aluminum_pattern.desc" : "Hliníkový symbol", - "item.allomancy.bendalloy_flakes" : "Bendlloy plátky", - "item.allomancy.bendalloy_ingot" : "Bendlloy ingot", - "item.allomancy.bendalloy_nugget" : "Bendlloy nuget", - "item.allomancy.bendalloy_pattern" : "Vzor praporu", - "item.allomancy.bendalloy_pattern.desc" : "Symbol Bendalloy", - "item.allomancy.brass_flakes" : "Mosazné pláty", - "item.allomancy.brass_ingot" : "Mosazný ingot", - "item.allomancy.brass_nugget" : "Mosazný nuget", - "item.allomancy.brass_pattern" : "Vzor praporu", - "item.allomancy.brass_pattern.desc" : "Mosazný symbol", - "item.allomancy.bronze_flakes" : "Bronzové pláty", - "item.allomancy.bronze_ingot" : "Bronzový ingot", - "item.allomancy.bronze_nugget" : "Bronzový nuget", - "item.allomancy.bronze_pattern" : "Vzor praporu", - "item.allomancy.bronze_pattern.desc" : "Bronzový symbol", - "item.allomancy.cadmium_flakes" : "Pláty z kadmia", - "item.allomancy.cadmium_ingot" : "Kadmiový ingot", - "item.allomancy.cadmium_nugget" : "Kadmiový nuget", - "item.allomancy.cadmium_pattern" : "Vzor praporu", - "item.allomancy.cadmium_pattern.desc" : "Kadmiový symbol", - "item.allomancy.chromium_flakes" : "Pláty z chrómu", - "item.allomancy.chromium_ingot" : "Chrómový ingot", - "item.allomancy.chromium_nugget" : "Chrómový nuget", - "item.allomancy.chromium_pattern" : "Vzor praporu", - "item.allomancy.chromium_pattern.desc" : "Chrómový symbol", - "item.allomancy.coin_bag" : "Vak na mince", - "item.allomancy.copper_flakes" : "Měděné pláty", - "item.allomancy.copper_pattern" : "Vzor praporu", - "item.allomancy.copper_pattern.desc" : "Měděný symbol", - "item.allomancy.duralumin_flakes" : "Duralové pláty", - "item.allomancy.duralumin_ingot" : "Duralový ingot", - "item.allomancy.duralumin_nugget" : "Duralový nuget", - "item.allomancy.duralumin_pattern" : "Vzor praporu", - "item.allomancy.duralumin_pattern.desc" : "Duralový symbol", - "item.allomancy.electrum_flakes" : "Elektrum pláty", - "item.allomancy.electrum_ingot" : "Elektrum ingot", - "item.allomancy.electrum_nugget" : "Elektrum nuget", - "item.allomancy.electrum_pattern" : "Vzor praporu", - "item.allomancy.electrum_pattern.desc" : "Elektrum symbol", - "item.allomancy.gold_flakes" : "Zlaté pláty", - "item.allomancy.gold_pattern" : "Vzor praporu", - "item.allomancy.gold_pattern.desc" : "Zlatý symbol", - "item.allomancy.iron_flakes" : "Železné pláty", - "item.allomancy.iron_pattern" : "Vzor praporu", - "item.allomancy.iron_pattern.desc" : "Železný symbol", - "item.allomancy.koloss_blade" : "Kolossova čepel", - "item.allomancy.koloss_blade.lore" : "Tento předmět je pro běžného člověka příliš těžký.", - "item.allomancy.lead_flakes" : "Olověné pláty", - "item.allomancy.lead_ingot" : "Olověný ingot", - "item.allomancy.lead_nugget" : "Olověný nuget", - "item.allomancy.lerasium_nugget" : "Lerasium nuget", - "item.allomancy.lerasium_nugget.lore" : "Tento předmět je obdařen zvláštní mocí, možná byste ho měli pozřít?", - "item.allomancy.mistcloak" : "Mistcloak", - "item.allomancy.nicrosil_flakes" : "Nikrosilové pláty", - "item.allomancy.nicrosil_ingot" : "Nikrosilový ingot", - "item.allomancy.nicrosil_nugget" : "Nicrosilový nuget", - "item.allomancy.nicrosil_pattern" : "Vzor praporu", - "item.allomancy.nicrosil_pattern.desc" : "Nicrosilový symbol", - "item.allomancy.obsidian_dagger" : "Obsidiánová dýka", - "item.allomancy.pewter_flakes" : "Pláty ze slitiny cínu", - "item.allomancy.pewter_ingot" : "Ingot ze slitiny cínu", - "item.allomancy.pewter_nugget" : "Nuget ze slitiny cínu", - "item.allomancy.pewter_pattern" : "Vzor praporu", - "item.allomancy.pewter_pattern.desc" : "Symbol ze slitiny cínu", - "item.allomancy.raw_aluminum" : "Surový hliník", - "item.allomancy.raw_cadmium" : "Surové kadmium", - "item.allomancy.raw_chromium" : "Surový chróm", - "item.allomancy.raw_lead" : "Surové olovo", - "item.allomancy.raw_silver" : "Surové stříbro", - "item.allomancy.raw_tin" : "Surový cín", - "item.allomancy.raw_zinc" : "Surový zinek", - "item.allomancy.silver_flakes" : "Stříbrné pláty", - "item.allomancy.silver_ingot" : "Stříbrný ingot", - "item.allomancy.silver_nugget" : "Stříbrný nuget", - "item.allomancy.steel_flakes" : "Ocelové pláty", - "item.allomancy.steel_ingot" : "Ocelový ingot", - "item.allomancy.steel_nugget" : "Ocelový nuget", - "item.allomancy.steel_pattern" : "Vzor praporu", - "item.allomancy.steel_pattern.desc" : "Ocelový symbol", - "item.allomancy.tin_flakes" : "Cínové pláty", - "item.allomancy.tin_ingot" : "Cínový ingot", - "item.allomancy.tin_nugget" : "Cínový nuget", - "item.allomancy.tin_pattern" : "Vzor praporu", - "item.allomancy.tin_pattern.desc" : "Cínový symbol", - "item.allomancy.vial" : "Alomatická lahvička", - "item.allomancy.vial.lore_count" : "Obsahuje %d kovů", - "item.allomancy.vial.lore_inst" : "Podržením SHIFT zobrazíte", - "item.allomancy.zinc_flakes" : "Zinkové pláty", - "item.allomancy.zinc_ingot" : "Zinkový ingot", - "item.allomancy.zinc_nugget" : "Zinkový nuget", - "item.allomancy.zinc_pattern" : "Vzor praporu", - "item.allomancy.zinc_pattern.desc" : "Zinkový symbol", - "itemGroup.allomancy" : "Alomancie", - "key.burn" : "Pálení kovů", - "key.categories.allomancy" : "Alomancie", - "key.hud" : "Zobrazit HUD", - "key.metals.aluminum" : "Hliníkový přepínač", - "key.metals.bendalloy" : "Přepínač Bndalloy", - "key.metals.brass" : "Mosazný přepínač", - "key.metals.bronze" : "Bronzový přepínač", - "key.metals.cadmium" : "Kadmiový přepínač", - "key.metals.chromium" : "Chrómový přepínač", - "key.metals.copper" : "Měděný přepínač", - "key.metals.duralumin" : "Duralový přepínač", - "key.metals.electrum" : "Elektromový přepínač", - "key.metals.gold" : "Zlatý přepínač", - "key.metals.iron" : "Železný přepínač", - "key.metals.nicrosil" : "Nikrosilový přepínač", - "key.metals.pewter" : "Přepínač ze slitiny cínu", - "key.metals.steel" : "Ocelový přepínač", - "key.metals.tin" : "Plechový přepínač", - "key.metals.zinc" : "Zinkový přepínač", - "metals.aluminum" : "Hliník", - "metals.bendalloy" : "Bendalloy", - "metals.brass" : "Mosaz", - "metals.bronze" : "Bronz", - "metals.cadmium" : "Kadmium", - "metals.chromium" : "Chróm", - "metals.copper" : "Měď", - "metals.duralumin" : "Dural", - "metals.electrum" : "Elektrum", - "metals.gold" : "Zlato", - "metals.iron" : "Železo", - "metals.nicrosil" : "Nikrosil", - "metals.pewter" : "Slitina cínu", - "metals.steel" : "Ocel", - "metals.tin" : "Cín", - "metals.zinc" : "Zinek" + "advancements.become_mistborn.desc": "Máš moc, kterou ti většina lidí závidí...", + "advancements.become_mistborn.title": "Staňte se Mistbornem!", + "advancements.dna_entangled.desc": "Vaše DNA je příliš spjata s duchovní sférou, než abyste mohli používat Lerasium.", + "advancements.dna_entangled.title": "Duchovní propojení DNA", + "advancements.local_metallurgist.desc": "Vyrobte si mlýnek a začněte míchat kovy.", + "advancements.local_metallurgist.title": "Místní hutník!", + "block.allomancy.aluminum_block": "Blok hliníku", + "block.allomancy.aluminum_ore": "Hliníková ruda", + "block.allomancy.bendalloy_block": "Blok Bendalloy", + "block.allomancy.brass_block": "Mosazný blok", + "block.allomancy.bronze_block": "Bronzový blok", + "block.allomancy.cadmium_block": "Blok kadmia", + "block.allomancy.cadmium_ore": "Kadmiová ruda", + "block.allomancy.chromium_block": "Blok chromu", + "block.allomancy.chromium_ore": "Chromium Ore", + "block.allomancy.deepslate_aluminum_ore": "Hliníková ruda Deepslate", + "block.allomancy.deepslate_cadmium_ore": "Kadmiová ruda Deppslate", + "block.allomancy.deepslate_chromium_ore": "Chromová ruda Deepslate", + "block.allomancy.deepslate_lead_ore": "Olověná ruda Deepslate", + "block.allomancy.deepslate_silver_ore": "Stříbrná ruda Deepslate", + "block.allomancy.deepslate_tin_ore": "Cínová ruda Deepslate", + "block.allomancy.deepslate_zinc_ore": "Zinková ruda Deepslate", + "block.allomancy.duralumin_block": "Duralový blok", + "block.allomancy.electrum_block": "Blok elektra", + "block.allomancy.iron_activation.lore": "Tento předmět se zdá být příliš těžký na to, aby se dal aktivovat běžnými prostředky.", + "block.allomancy.iron_button": "Železné tlačítko", + "block.allomancy.iron_lever": "Železná páka", + "block.allomancy.lead_block": "Olověný blok", + "block.allomancy.lead_ore": "Olověná ruda", + "block.allomancy.nicrosil_block": "Blok nikrosilu", + "block.allomancy.pewter_block": "Blok slitiny cínu", + "block.allomancy.raw_aluminum_block": "Blok surového hliníku", + "block.allomancy.raw_cadmium_block": "Blok surového kadmia", + "block.allomancy.raw_chromium_block": "Blok surového chromu", + "block.allomancy.raw_lead_block": "Blok surového olova", + "block.allomancy.raw_silver_block": "Blok surového stříbra", + "block.allomancy.raw_tin_block": "Blok surového cínu", + "block.allomancy.raw_zinc_block": "Blok surového zinku", + "block.allomancy.silver_block": "Stříbrný blok", + "block.allomancy.silver_ore": "Stříbrná ruda", + "block.allomancy.steel_block": "Ocelový blok", + "block.allomancy.tin_block": "Blok cínu", + "block.allomancy.tin_ore": "Cínová ruda", + "block.allomancy.zinc_block": "Blok zinku", + "block.allomancy.zinc_ore": "Ruda zinku", + "block.minecraft.banner.allomancy.aluminum.black": "Černý symbol z hliníku", + "block.minecraft.banner.allomancy.aluminum.blue": "Modrý symbol z hliníku", + "block.minecraft.banner.allomancy.aluminum.brown": "Hnědý symbol z hliníku", + "block.minecraft.banner.allomancy.aluminum.cyan": "Azurový symbol z hliníku", + "block.minecraft.banner.allomancy.aluminum.gray": "Šedivý symbol z hliníku", + "block.minecraft.banner.allomancy.aluminum.green": "Zelený symbol z hliníku", + "block.minecraft.banner.allomancy.aluminum.light_blue": "Světlemodrý symbol z hliníku", + "block.minecraft.banner.allomancy.aluminum.light_gray": "Světlezelený symbol z hliníku", + "block.minecraft.banner.allomancy.aluminum.lime": "Vápenatý symbol z hliníku", + "block.minecraft.banner.allomancy.aluminum.magenta": "Purpurový symbol z hliníku", + "block.minecraft.banner.allomancy.aluminum.orange": "Oranžový symbol z hliníku", + "block.minecraft.banner.allomancy.aluminum.pink": "Růžový symbol z hliníku", + "block.minecraft.banner.allomancy.aluminum.purple": "Fialový symbol z hliníku", + "block.minecraft.banner.allomancy.aluminum.red": "Černý symbol z hliníku", + "block.minecraft.banner.allomancy.aluminum.white": "Bílý symbol z hliníku", + "block.minecraft.banner.allomancy.aluminum.yellow": "Žlutý symbol z hliníku", + "block.minecraft.banner.allomancy.bendalloy.black": "Černý symbol z Bendalloy", + "block.minecraft.banner.allomancy.bendalloy.blue": "Modrý symbol z Bendalloy", + "block.minecraft.banner.allomancy.bendalloy.brown": "Hnědý symbol z Bendalloy", + "block.minecraft.banner.allomancy.bendalloy.cyan": "Azurový symbol z Bendalloy", + "block.minecraft.banner.allomancy.bendalloy.gray": "Šedý symbol z Bendalloy", + "block.minecraft.banner.allomancy.bendalloy.green": "Zelený symbol z Bendalloy", + "block.minecraft.banner.allomancy.bendalloy.light_blue": "Světlemodrý symbol z Bendalloy", + "block.minecraft.banner.allomancy.bendalloy.light_gray": "Světlezelený symbol Bendalloy", + "block.minecraft.banner.allomancy.bendalloy.lime": "Vápenatý symbol z Bendalloy", + "block.minecraft.banner.allomancy.bendalloy.magenta": "Purpurový symbol z Bendalloy", + "block.minecraft.banner.allomancy.bendalloy.orange": "Oranžový symbol z Bendalloy", + "block.minecraft.banner.allomancy.bendalloy.pink": "Růžový symbol z Bendalloy", + "block.minecraft.banner.allomancy.bendalloy.purple": "Fialový symbol z Bendalloy", + "block.minecraft.banner.allomancy.bendalloy.red": "Červený symbol z Bendalloy", + "block.minecraft.banner.allomancy.bendalloy.white": "Bílý symbol z Bendalloy", + "block.minecraft.banner.allomancy.bendalloy.yellow": "Žlutý symbol z Bendalloy", + "block.minecraft.banner.allomancy.brass.black": "Černý symbol z mosazi", + "block.minecraft.banner.allomancy.brass.blue": "Modrý symbol z mosazi", + "block.minecraft.banner.allomancy.brass.brown": "Hnědý symbol z mosazi", + "block.minecraft.banner.allomancy.brass.cyan": "Azurový symbol z mosazi", + "block.minecraft.banner.allomancy.brass.gray": "Šedý symbol z mosazi", + "block.minecraft.banner.allomancy.brass.green": "Zelený symbol z mosazi", + "block.minecraft.banner.allomancy.brass.light_blue": "Světlemodrý symbol z mosazi", + "block.minecraft.banner.allomancy.brass.light_gray": "Světlezelený symbol z mosazi", + "block.minecraft.banner.allomancy.brass.lime": "Vápenatý symbol z mosazi", + "block.minecraft.banner.allomancy.brass.magenta": "Purpurový symbol z mosazi", + "block.minecraft.banner.allomancy.brass.orange": "Oranžový symbol z mosazi", + "block.minecraft.banner.allomancy.brass.pink": "Růžový symbol z mosazi", + "block.minecraft.banner.allomancy.brass.purple": "Fialový symbol z mosazi", + "block.minecraft.banner.allomancy.brass.red": "Červený symbol z mosazi", + "block.minecraft.banner.allomancy.brass.white": "Bílý symbol z mosazi", + "block.minecraft.banner.allomancy.brass.yellow": "Žlutý symbol z mosazi", + "block.minecraft.banner.allomancy.bronze.black": "Černý symbol z bronzu", + "block.minecraft.banner.allomancy.bronze.blue": "Modrý symbol z bronzu", + "block.minecraft.banner.allomancy.bronze.brown": "Hnědý symbol z bronzu", + "block.minecraft.banner.allomancy.bronze.cyan": "Azurový symbol z bronzu", + "block.minecraft.banner.allomancy.bronze.gray": "Šedý symbol z bronzu", + "block.minecraft.banner.allomancy.bronze.green": "Zelený symbol z bronzu", + "block.minecraft.banner.allomancy.bronze.light_blue": "Světlemodrý symbol z bronzu", + "block.minecraft.banner.allomancy.bronze.light_gray": "Světlezelený symbol z bronzu", + "block.minecraft.banner.allomancy.bronze.lime": "Vápenatý symbol z bronzu", + "block.minecraft.banner.allomancy.bronze.magenta": "Purpurový symbol z bronzu", + "block.minecraft.banner.allomancy.bronze.orange": "Oranžový symbol z bronzu", + "block.minecraft.banner.allomancy.bronze.pink": "Růžový symbol z bronzu", + "block.minecraft.banner.allomancy.bronze.purple": "Fialový symbol z bronzu", + "block.minecraft.banner.allomancy.bronze.red": "Červený symbol z bronzu", + "block.minecraft.banner.allomancy.bronze.white": "Bílý symbol z bronzu", + "block.minecraft.banner.allomancy.bronze.yellow": "Žlutý symbol z bronzu", + "block.minecraft.banner.allomancy.cadmium.black": "Černý symbol z kadmia", + "block.minecraft.banner.allomancy.cadmium.blue": "Modrý symbol z kadmia", + "block.minecraft.banner.allomancy.cadmium.brown": "Hnědý symbol z kadmia", + "block.minecraft.banner.allomancy.cadmium.cyan": "Azurový symbol z kadmia", + "block.minecraft.banner.allomancy.cadmium.gray": "Šedivý symbol z kadmia", + "block.minecraft.banner.allomancy.cadmium.green": "Zelený symbol z kadmia", + "block.minecraft.banner.allomancy.cadmium.light_blue": "Světlemodrý symbol z kadmia", + "block.minecraft.banner.allomancy.cadmium.light_gray": "Světlezelený symbol z kadmia", + "block.minecraft.banner.allomancy.cadmium.lime": "Vápenatý symbol z kadmia", + "block.minecraft.banner.allomancy.cadmium.magenta": "Purpurový symbol z kadmia", + "block.minecraft.banner.allomancy.cadmium.orange": "Oranžový symbol z kadmia", + "block.minecraft.banner.allomancy.cadmium.pink": "Růžový symbol z kadmia", + "block.minecraft.banner.allomancy.cadmium.purple": "Fialový symbol z kadmia", + "block.minecraft.banner.allomancy.cadmium.red": "Červený symbol z kadmia", + "block.minecraft.banner.allomancy.cadmium.white": "Bílý symbol z kadmia", + "block.minecraft.banner.allomancy.cadmium.yellow": "Žlutý symbol z kadmia", + "block.minecraft.banner.allomancy.chromium.black": "Černý symbol z chromu", + "block.minecraft.banner.allomancy.chromium.blue": "Modrý symbol z chromu", + "block.minecraft.banner.allomancy.chromium.brown": "Hnědý symbol z chromu", + "block.minecraft.banner.allomancy.chromium.cyan": "Azurový symbol z chromu", + "block.minecraft.banner.allomancy.chromium.gray": "Šedivý symbol z chromu", + "block.minecraft.banner.allomancy.chromium.green": "Zelený symbol z chromu", + "block.minecraft.banner.allomancy.chromium.light_blue": "Světlemodrý symbol z chromu", + "block.minecraft.banner.allomancy.chromium.light_gray": "Světlezelený symbol z chromu", + "block.minecraft.banner.allomancy.chromium.lime": "Vápenatý symbol z chromu", + "block.minecraft.banner.allomancy.chromium.magenta": "Purpurový symbol z chromu", + "block.minecraft.banner.allomancy.chromium.orange": "Oranžový symbol z chromu", + "block.minecraft.banner.allomancy.chromium.pink": "Růžový symbol z chromu", + "block.minecraft.banner.allomancy.chromium.purple": "Fialový symbol z chromu", + "block.minecraft.banner.allomancy.chromium.red": "Červený symbol z chromu", + "block.minecraft.banner.allomancy.chromium.white": "Bílý symbol z chromu", + "block.minecraft.banner.allomancy.chromium.yellow": "Žlutý symbol z chromu", + "block.minecraft.banner.allomancy.copper.black": "Černý symbol z mědi", + "block.minecraft.banner.allomancy.copper.blue": "Modrý symbol z mědi", + "block.minecraft.banner.allomancy.copper.brown": "Hnědý symbol z mědi", + "block.minecraft.banner.allomancy.copper.cyan": "Azurový symbol z mědi", + "block.minecraft.banner.allomancy.copper.gray": "Šedivý symbol z mědi", + "block.minecraft.banner.allomancy.copper.green": "Zelený symbol z mědi", + "block.minecraft.banner.allomancy.copper.light_blue": "Světlemodrý symbol z mědi", + "block.minecraft.banner.allomancy.copper.light_gray": "Světlezelený symbol z mědi", + "block.minecraft.banner.allomancy.copper.lime": "Vápenatý symbol z mědi", + "block.minecraft.banner.allomancy.copper.magenta": "Purpurový symbol z mědi", + "block.minecraft.banner.allomancy.copper.orange": "Oranžový symbol z mědi", + "block.minecraft.banner.allomancy.copper.pink": "Růžový symbol z mědi", + "block.minecraft.banner.allomancy.copper.purple": "Fialový symbol z mědi", + "block.minecraft.banner.allomancy.copper.red": "Červený symbol z mědi", + "block.minecraft.banner.allomancy.copper.white": "Bílý symbol z mědi", + "block.minecraft.banner.allomancy.copper.yellow": "Žlutý symbol z mědi", + "block.minecraft.banner.allomancy.duralumin.black": "Černý symbol z duralu", + "block.minecraft.banner.allomancy.duralumin.blue": "Modrý symbol z duralu", + "block.minecraft.banner.allomancy.duralumin.brown": "Hnědý symbol z duralu", + "block.minecraft.banner.allomancy.duralumin.cyan": "Azurový symbol z duralu", + "block.minecraft.banner.allomancy.duralumin.gray": "Šedivý symbol z duralu", + "block.minecraft.banner.allomancy.duralumin.green": "Zelený symbol z duralu", + "block.minecraft.banner.allomancy.duralumin.light_blue": "Světlemodrý symbol z duralu", + "block.minecraft.banner.allomancy.duralumin.light_gray": "Světlezelený symbol z duralu", + "block.minecraft.banner.allomancy.duralumin.lime": "Vápenatý symbol z duralu", + "block.minecraft.banner.allomancy.duralumin.magenta": "Purpurový symbol z duralu", + "block.minecraft.banner.allomancy.duralumin.orange": "Oranžový symbol z duralu", + "block.minecraft.banner.allomancy.duralumin.pink": "Růžový symbol z duralu", + "block.minecraft.banner.allomancy.duralumin.purple": "Fialový symbol z duralu", + "block.minecraft.banner.allomancy.duralumin.red": "Červený symbol z duralu", + "block.minecraft.banner.allomancy.duralumin.white": "Bílý symbol z duralu", + "block.minecraft.banner.allomancy.duralumin.yellow": "Žlutý symbol z duralu", + "block.minecraft.banner.allomancy.electrum.black": "Černý symbol z elektra", + "block.minecraft.banner.allomancy.electrum.blue": "Modrý symbol z elektra", + "block.minecraft.banner.allomancy.electrum.brown": "Hnědý symbol z elektra", + "block.minecraft.banner.allomancy.electrum.cyan": "Azurový symbol z elektra", + "block.minecraft.banner.allomancy.electrum.gray": "Šedivý symbol z elektra", + "block.minecraft.banner.allomancy.electrum.green": "Zelený symbol z elektra", + "block.minecraft.banner.allomancy.electrum.light_blue": "Světlemodrý symbol z elektra", + "block.minecraft.banner.allomancy.electrum.light_gray": "Světlezelený symbol z elektra", + "block.minecraft.banner.allomancy.electrum.lime": "Vápenatý symbol z elektra", + "block.minecraft.banner.allomancy.electrum.magenta": "Purpurový symbol z elektra", + "block.minecraft.banner.allomancy.electrum.orange": "Oranžový symbol z elektra", + "block.minecraft.banner.allomancy.electrum.pink": "Růžový symbol z elektra", + "block.minecraft.banner.allomancy.electrum.purple": "Fialový symbol z elektra", + "block.minecraft.banner.allomancy.electrum.red": "Červený symbol z elektra", + "block.minecraft.banner.allomancy.electrum.white": "Bílý symbol z elektra", + "block.minecraft.banner.allomancy.electrum.yellow": "Žlutý symbol z elektra", + "block.minecraft.banner.allomancy.gold.black": "Černý symbol ze zlata", + "block.minecraft.banner.allomancy.gold.blue": "Modrý symbol ze zlata", + "block.minecraft.banner.allomancy.gold.brown": "Hnědý symbol ze zlata", + "block.minecraft.banner.allomancy.gold.cyan": "Azurový symbol ze zlata", + "block.minecraft.banner.allomancy.gold.gray": "Šedivý symbol ze zlata", + "block.minecraft.banner.allomancy.gold.green": "Zelený symbol ze zlata", + "block.minecraft.banner.allomancy.gold.light_blue": "Světlemodrý symbol ze zlata", + "block.minecraft.banner.allomancy.gold.light_gray": "Světlezelený symbol ze zlata", + "block.minecraft.banner.allomancy.gold.lime": "Vápenatý symbol ze zalata", + "block.minecraft.banner.allomancy.gold.magenta": "Purpurový symbol ze zlata", + "block.minecraft.banner.allomancy.gold.orange": "Oranžový symbol ze zlata", + "block.minecraft.banner.allomancy.gold.pink": "Růžový symbol ze zlata", + "block.minecraft.banner.allomancy.gold.purple": "Fialový symbol ze zlata", + "block.minecraft.banner.allomancy.gold.red": "Červený symbol ze zlata", + "block.minecraft.banner.allomancy.gold.white": "Bílý symbol ze zlata", + "block.minecraft.banner.allomancy.gold.yellow": "Žlutý symbol ze zlata", + "block.minecraft.banner.allomancy.iron.black": "Černý symbol ze železa", + "block.minecraft.banner.allomancy.iron.blue": "Modrý symbol ze železa", + "block.minecraft.banner.allomancy.iron.brown": "Hnědý symbol ze železa", + "block.minecraft.banner.allomancy.iron.cyan": "Azurový symbol ze železa", + "block.minecraft.banner.allomancy.iron.gray": "Šedivý symbol ze železa", + "block.minecraft.banner.allomancy.iron.green": "Zelený symbol ze železa ", + "block.minecraft.banner.allomancy.iron.light_blue": "Světlemodrý symbol ze železa", + "block.minecraft.banner.allomancy.iron.light_gray": "Světlezelený symbol ze železa", + "block.minecraft.banner.allomancy.iron.lime": "Vápenatý symbol ze železa", + "block.minecraft.banner.allomancy.iron.magenta": "Purpurový symbol ze železa", + "block.minecraft.banner.allomancy.iron.orange": "Oranžový symbol ze železa", + "block.minecraft.banner.allomancy.iron.pink": "Růžový symbol ze železa", + "block.minecraft.banner.allomancy.iron.purple": "Fialový symbol ze železa", + "block.minecraft.banner.allomancy.iron.red": "Červený symbol ze železa", + "block.minecraft.banner.allomancy.iron.white": "Bilý symbol ze železa", + "block.minecraft.banner.allomancy.iron.yellow": "Žlutý symbol ze železa", + "block.minecraft.banner.allomancy.nicrosil.black": "Černý symbol z nikrosilu", + "block.minecraft.banner.allomancy.nicrosil.blue": "Modrý symbol nikrosilu", + "block.minecraft.banner.allomancy.nicrosil.brown": "Hnědý symbol z nikrosilu", + "block.minecraft.banner.allomancy.nicrosil.cyan": "Azurový symbol z nikrosilu", + "block.minecraft.banner.allomancy.nicrosil.gray": "Šedivý symbol z nikrosilu", + "block.minecraft.banner.allomancy.nicrosil.green": "Zelený symbol z nikrosilu", + "block.minecraft.banner.allomancy.nicrosil.light_blue": "Světlemodrý symbol z nikrosilu", + "block.minecraft.banner.allomancy.nicrosil.light_gray": "Světlezelený symbol z nikrosilu", + "block.minecraft.banner.allomancy.nicrosil.lime": "Vápenatý symbol z nikrosilu", + "block.minecraft.banner.allomancy.nicrosil.magenta": "Purpurový symbol z nikrosilu", + "block.minecraft.banner.allomancy.nicrosil.orange": "Oranžový symbol z nikrosilu", + "block.minecraft.banner.allomancy.nicrosil.pink": "Růžový symbol z nikrosilu", + "block.minecraft.banner.allomancy.nicrosil.purple": "Fialový symbol z nikrosilu", + "block.minecraft.banner.allomancy.nicrosil.red": "Červený symbol z nikrosilu", + "block.minecraft.banner.allomancy.nicrosil.white": "Bilý symbol z nikrosilu", + "block.minecraft.banner.allomancy.nicrosil.yellow": "Žlutý symbol z nikrosilu", + "block.minecraft.banner.allomancy.pewter.black": "Černý symbol ze slitiny cínu", + "block.minecraft.banner.allomancy.pewter.blue": "Modrý symbol ze slitiny cínu", + "block.minecraft.banner.allomancy.pewter.brown": "Hnědý symbol ze slitiny cínu", + "block.minecraft.banner.allomancy.pewter.cyan": "Azurový symbol ze slitiny cínu", + "block.minecraft.banner.allomancy.pewter.gray": "Šedivý symbol ze slitiny cínu", + "block.minecraft.banner.allomancy.pewter.green": "Zelený symbol ze slitiny cínu", + "block.minecraft.banner.allomancy.pewter.light_blue": "Světlemodrý symbol ze slitiny cínu", + "block.minecraft.banner.allomancy.pewter.light_gray": "Světlezelený symbol ze slitiny cínu", + "block.minecraft.banner.allomancy.pewter.lime": "Vápenatý symbol ze slitiny cínu", + "block.minecraft.banner.allomancy.pewter.magenta": "Purpurový symbol ze slitiny cínu", + "block.minecraft.banner.allomancy.pewter.orange": "Oranžový symbol ze slitiny cínu", + "block.minecraft.banner.allomancy.pewter.pink": "Růžový symbol ze slitiny cínu", + "block.minecraft.banner.allomancy.pewter.purple": "Fialový symbol ze slitiny cínu", + "block.minecraft.banner.allomancy.pewter.red": "Červený symbol ze slitiny cínu", + "block.minecraft.banner.allomancy.pewter.white": "Bílý symbol ze slitiny cínu", + "block.minecraft.banner.allomancy.pewter.yellow": "Žlutý symbol ze slitiny cínu", + "block.minecraft.banner.allomancy.steel.black": "Černý symbol z oceli", + "block.minecraft.banner.allomancy.steel.blue": "Modrý symbol z oceli", + "block.minecraft.banner.allomancy.steel.brown": "Hnědý symbol z oceli", + "block.minecraft.banner.allomancy.steel.cyan": "Azurový symbol z oceli", + "block.minecraft.banner.allomancy.steel.gray": "Šedivý symbol z oceli", + "block.minecraft.banner.allomancy.steel.green": "Zelený symbol z oceli", + "block.minecraft.banner.allomancy.steel.light_blue": "Světlemodrý symbol z oceli", + "block.minecraft.banner.allomancy.steel.light_gray": "Světlezelený symbol z oceli", + "block.minecraft.banner.allomancy.steel.lime": "Vápenatý symbol z oceli", + "block.minecraft.banner.allomancy.steel.magenta": "Purpurový symbol z oceli", + "block.minecraft.banner.allomancy.steel.orange": "Oranžový symbol z oceli", + "block.minecraft.banner.allomancy.steel.pink": "Růžový symbol z oceli", + "block.minecraft.banner.allomancy.steel.purple": "Fialový symbol z oceli", + "block.minecraft.banner.allomancy.steel.red": "Červený symbol z oceli", + "block.minecraft.banner.allomancy.steel.white": "Bilý symbol z oceli", + "block.minecraft.banner.allomancy.steel.yellow": "Žlutý symbol z oceli", + "block.minecraft.banner.allomancy.tin.black": "Černý symbol z cínu", + "block.minecraft.banner.allomancy.tin.blue": "Modrý symbol z cínu", + "block.minecraft.banner.allomancy.tin.brown": "Hnědý symbol z cínu", + "block.minecraft.banner.allomancy.tin.cyan": "Azurový symbol z cínu", + "block.minecraft.banner.allomancy.tin.gray": "Šedivý symbol z cínu", + "block.minecraft.banner.allomancy.tin.green": "Zelený symbol z cínu", + "block.minecraft.banner.allomancy.tin.light_blue": "Světlemodrý symbol z cínu", + "block.minecraft.banner.allomancy.tin.light_gray": "Světlezelený symbol z cínu", + "block.minecraft.banner.allomancy.tin.lime": "Vápenatý symbol z cínu", + "block.minecraft.banner.allomancy.tin.magenta": "Purpurový symbol z cínu", + "block.minecraft.banner.allomancy.tin.orange": "Oranžový symbol z cínu", + "block.minecraft.banner.allomancy.tin.pink": "Růžový symbol z cínu", + "block.minecraft.banner.allomancy.tin.purple": "Fialový symbol z cínu", + "block.minecraft.banner.allomancy.tin.red": "Červený symbol z cínu", + "block.minecraft.banner.allomancy.tin.white": "Bílý symbol z cínu", + "block.minecraft.banner.allomancy.tin.yellow": "Žlutý symbol z cínu", + "block.minecraft.banner.allomancy.zinc.black": "Černý symbol ze zinku", + "block.minecraft.banner.allomancy.zinc.blue": "Modrý symbol ze zinku", + "block.minecraft.banner.allomancy.zinc.brown": "Hnědý symbol ze zinku", + "block.minecraft.banner.allomancy.zinc.cyan": "Azurový symbol ze zinku", + "block.minecraft.banner.allomancy.zinc.gray": "Šedivý symbol ze zinku", + "block.minecraft.banner.allomancy.zinc.green": "Zelený symbol ze zinku", + "block.minecraft.banner.allomancy.zinc.light_blue": "Světlemodrý symbol ze zinku", + "block.minecraft.banner.allomancy.zinc.light_gray": "Světle zelený", + "block.minecraft.banner.allomancy.zinc.lime": "Vápenatý symbol ze zinku", + "block.minecraft.banner.allomancy.zinc.magenta": "Purpurový symbol ze zinku", + "block.minecraft.banner.allomancy.zinc.orange": "Oranžový symbol ze zinku", + "block.minecraft.banner.allomancy.zinc.pink": "Růžový symbol ze zinku", + "block.minecraft.banner.allomancy.zinc.purple": "Fialový symbol ze zinku", + "block.minecraft.banner.allomancy.zinc.red": "Červený symbol ze zinku", + "block.minecraft.banner.allomancy.zinc.white": "Bílý symbol ze zinku", + "block.minecraft.banner.allomancy.zinc.yellow": "Žlutý symbol ze zinku", + "commands.allomancy.addpower": "%š přidává Allomatickou sílu %š", + "commands.allomancy.err_add": "Nelze přidat sílu %s, již byla přidána", + "commands.allomancy.err_remove": "Nelze odebrat sílu %s, kterou jsem neměl", + "commands.allomancy.getpowers": "%s má v současné době Allomatickou sílu: %s", + "commands.allomancy.removepower": "%s odebrána Allomantická síla %s", + "commands.allomancy.unrecognized": "Nerozpoznaná Allomatická síla: '%s'", + "config.jade.plugin_allomancy.waila_bronze": "Alomancie: Ukáže při hledání hořící kovy", + "entity.allomancy.nugget_projectile": "Projektil nugetu", + "item.allomancy.allomantic_grinder": "Ruční bruska", + "item.allomancy.aluminum_flakes": "Hliníkové plátky", + "item.allomancy.aluminum_ingot": "Hliníkový ingot", + "item.allomancy.aluminum_nugget": "Hliníkový nuget", + "item.allomancy.aluminum_pattern": "Vzor praporu", + "item.allomancy.aluminum_pattern.desc": "Hliníkový symbol", + "item.allomancy.bendalloy_flakes": "Bendlloy plátky", + "item.allomancy.bendalloy_ingot": "Bendlloy ingot", + "item.allomancy.bendalloy_nugget": "Bendlloy nuget", + "item.allomancy.bendalloy_pattern": "Vzor praporu", + "item.allomancy.bendalloy_pattern.desc": "Symbol Bendalloy", + "item.allomancy.brass_flakes": "Mosazné pláty", + "item.allomancy.brass_ingot": "Mosazný ingot", + "item.allomancy.brass_nugget": "Mosazný nuget", + "item.allomancy.brass_pattern": "Vzor praporu", + "item.allomancy.brass_pattern.desc": "Mosazný symbol", + "item.allomancy.bronze_flakes": "Bronzové pláty", + "item.allomancy.bronze_ingot": "Bronzový ingot", + "item.allomancy.bronze_nugget": "Bronzový nuget", + "item.allomancy.bronze_pattern": "Vzor praporu", + "item.allomancy.bronze_pattern.desc": "Bronzový symbol", + "item.allomancy.cadmium_flakes": "Pláty z kadmia", + "item.allomancy.cadmium_ingot": "Kadmiový ingot", + "item.allomancy.cadmium_nugget": "Kadmiový nuget", + "item.allomancy.cadmium_pattern": "Vzor praporu", + "item.allomancy.cadmium_pattern.desc": "Kadmiový symbol", + "item.allomancy.chromium_flakes": "Pláty z chrómu", + "item.allomancy.chromium_ingot": "Chrómový ingot", + "item.allomancy.chromium_nugget": "Chrómový nuget", + "item.allomancy.chromium_pattern": "Vzor praporu", + "item.allomancy.chromium_pattern.desc": "Chrómový symbol", + "item.allomancy.coin_bag": "Vak na mince", + "item.allomancy.copper_flakes": "Měděné pláty", + "item.allomancy.copper_pattern": "Vzor praporu", + "item.allomancy.copper_pattern.desc": "Měděný symbol", + "item.allomancy.duralumin_flakes": "Duralové pláty", + "item.allomancy.duralumin_ingot": "Duralový ingot", + "item.allomancy.duralumin_nugget": "Duralový nuget", + "item.allomancy.duralumin_pattern": "Vzor praporu", + "item.allomancy.duralumin_pattern.desc": "Duralový symbol", + "item.allomancy.electrum_flakes": "Elektrum pláty", + "item.allomancy.electrum_ingot": "Elektrum ingot", + "item.allomancy.electrum_nugget": "Elektrum nuget", + "item.allomancy.electrum_pattern": "Vzor praporu", + "item.allomancy.electrum_pattern.desc": "Elektrum symbol", + "item.allomancy.gold_flakes": "Zlaté pláty", + "item.allomancy.gold_pattern": "Vzor praporu", + "item.allomancy.gold_pattern.desc": "Zlatý symbol", + "item.allomancy.iron_flakes": "Železné pláty", + "item.allomancy.iron_pattern": "Vzor praporu", + "item.allomancy.iron_pattern.desc": "Železný symbol", + "item.allomancy.koloss_blade": "Kolossova čepel", + "item.allomancy.koloss_blade.lore": "Tento předmět je pro běžného člověka příliš těžký.", + "item.allomancy.lead_flakes": "Olověné pláty", + "item.allomancy.lead_ingot": "Olověný ingot", + "item.allomancy.lead_nugget": "Olověný nuget", + "item.allomancy.lerasium_nugget": "Lerasium nuget", + "item.allomancy.lerasium_nugget.lore": "Tento předmět je obdařen zvláštní mocí, možná byste ho měli pozřít?", + "item.allomancy.mistcloak": "Mistcloak", + "item.allomancy.nicrosil_flakes": "Nikrosilové pláty", + "item.allomancy.nicrosil_ingot": "Nikrosilový ingot", + "item.allomancy.nicrosil_nugget": "Nicrosilový nuget", + "item.allomancy.nicrosil_pattern": "Vzor praporu", + "item.allomancy.nicrosil_pattern.desc": "Nicrosilový symbol", + "item.allomancy.obsidian_dagger": "Obsidiánová dýka", + "item.allomancy.pewter_flakes": "Pláty ze slitiny cínu", + "item.allomancy.pewter_ingot": "Ingot ze slitiny cínu", + "item.allomancy.pewter_nugget": "Nuget ze slitiny cínu", + "item.allomancy.pewter_pattern": "Vzor praporu", + "item.allomancy.pewter_pattern.desc": "Symbol ze slitiny cínu", + "item.allomancy.raw_aluminum": "Surový hliník", + "item.allomancy.raw_cadmium": "Surové kadmium", + "item.allomancy.raw_chromium": "Surový chróm", + "item.allomancy.raw_lead": "Surové olovo", + "item.allomancy.raw_silver": "Surové stříbro", + "item.allomancy.raw_tin": "Surový cín", + "item.allomancy.raw_zinc": "Surový zinek", + "item.allomancy.silver_flakes": "Stříbrné pláty", + "item.allomancy.silver_ingot": "Stříbrný ingot", + "item.allomancy.silver_nugget": "Stříbrný nuget", + "item.allomancy.steel_flakes": "Ocelové pláty", + "item.allomancy.steel_ingot": "Ocelový ingot", + "item.allomancy.steel_nugget": "Ocelový nuget", + "item.allomancy.steel_pattern": "Vzor praporu", + "item.allomancy.steel_pattern.desc": "Ocelový symbol", + "item.allomancy.tin_flakes": "Cínové pláty", + "item.allomancy.tin_ingot": "Cínový ingot", + "item.allomancy.tin_nugget": "Cínový nuget", + "item.allomancy.tin_pattern": "Vzor praporu", + "item.allomancy.tin_pattern.desc": "Cínový symbol", + "item.allomancy.vial": "Alomatická lahvička", + "item.allomancy.vial.lore_count": "Obsahuje %d kovů", + "item.allomancy.vial.lore_inst": "Podržením SHIFT zobrazíte", + "item.allomancy.zinc_flakes": "Zinkové pláty", + "item.allomancy.zinc_ingot": "Zinkový ingot", + "item.allomancy.zinc_nugget": "Zinkový nuget", + "item.allomancy.zinc_pattern": "Vzor praporu", + "item.allomancy.zinc_pattern.desc": "Zinkový symbol", + "itemGroup.allomancy": "Alomancie", + "key.burn": "Pálení kovů", + "key.categories.allomancy": "Alomancie", + "key.hud": "Zobrazit HUD", + "key.metals.aluminum": "Hliníkový přepínač", + "key.metals.bendalloy": "Přepínač Bndalloy", + "key.metals.brass": "Mosazný přepínač", + "key.metals.bronze": "Bronzový přepínač", + "key.metals.cadmium": "Kadmiový přepínač", + "key.metals.chromium": "Chrómový přepínač", + "key.metals.copper": "Měděný přepínač", + "key.metals.duralumin": "Duralový přepínač", + "key.metals.electrum": "Elektromový přepínač", + "key.metals.gold": "Zlatý přepínač", + "key.metals.iron": "Železný přepínač", + "key.metals.nicrosil": "Nikrosilový přepínač", + "key.metals.pewter": "Přepínač ze slitiny cínu", + "key.metals.steel": "Ocelový přepínač", + "key.metals.tin": "Plechový přepínač", + "key.metals.zinc": "Zinkový přepínač", + "metals.aluminum": "Hliník", + "metals.bendalloy": "Bendalloy", + "metals.brass": "Mosaz", + "metals.bronze": "Bronz", + "metals.cadmium": "Kadmium", + "metals.chromium": "Chróm", + "metals.copper": "Měď", + "metals.duralumin": "Dural", + "metals.electrum": "Elektrum", + "metals.gold": "Zlato", + "metals.iron": "Železo", + "metals.nicrosil": "Nikrosil", + "metals.pewter": "Slitina cínu", + "metals.steel": "Ocel", + "metals.tin": "Cín", + "metals.zinc": "Zinek" } \ No newline at end of file diff --git a/src/main/resources/data/allomancy/forge/biome_modifier/overworld_ores.json b/src/main/resources/data/allomancy/forge/biome_modifier/overworld_ores.json deleted file mode 100644 index ad031ea3..00000000 --- a/src/main/resources/data/allomancy/forge/biome_modifier/overworld_ores.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "type": "forge:add_features", - "biomes": "#minecraft:is_overworld", - "features": ["allomancy:aluminum_ore","allomancy:cadmium_ore","allomancy:chromium_ore","allomancy:lead_ore","allomancy:silver_ore","allomancy:tin_ore","allomancy:zinc_ore"] , - "step": "underground_ores" -} \ No newline at end of file diff --git a/src/main/resources/data/allomancy/neoforge/biome_modifier/overworld_ores.json b/src/main/resources/data/allomancy/neoforge/biome_modifier/overworld_ores.json new file mode 100644 index 00000000..9538c172 --- /dev/null +++ b/src/main/resources/data/allomancy/neoforge/biome_modifier/overworld_ores.json @@ -0,0 +1,14 @@ +{ + "type": "neoforge:add_features", + "biomes": "#minecraft:is_overworld", + "features": [ + "allomancy:aluminum_ore", + "allomancy:cadmium_ore", + "allomancy:chromium_ore", + "allomancy:lead_ore", + "allomancy:silver_ore", + "allomancy:tin_ore", + "allomancy:zinc_ore" + ], + "step": "underground_ores" +} \ No newline at end of file diff --git a/src/main/resources/pack.mcmeta b/src/main/resources/pack.mcmeta index 7e3e1517..dae24f30 100644 --- a/src/main/resources/pack.mcmeta +++ b/src/main/resources/pack.mcmeta @@ -1,7 +1,7 @@ { - "pack": { - "description": "Allomancy resources", - "pack_format": 15, - "_comment": "" - } + "pack": { + "description": "Allomancy resources", + "pack_format": 15, + "_comment": "" + } }