diff --git a/build.gradle b/build.gradle index f188a683d..7547cdb3d 100644 --- a/build.gradle +++ b/build.gradle @@ -1,103 +1,105 @@ plugins { - id 'net.minecraftforge.gradle' version '[6.0,6.2)' - id 'org.parchmentmc.librarian.forgegradle' version '1.+' - id 'org.spongepowered.mixin' version '0.7.+' - id 'com.github.johnrengelman.shadow' version '7.0.0' + id 'java-library' id 'idea' + id 'net.neoforged.gradle.userdev' version '7.1.20' } version = "${mod_version}" group = 'igentuman.nc' -archivesBaseName = "NuclearCraft-${mc_version}" +base { + archivesName = "NuclearCraft-${mc_version}" +} -java.toolchain.languageVersion = JavaLanguageVersion.of(17) +java.toolchain.languageVersion = JavaLanguageVersion.of(21) println "Java: ${System.getProperty 'java.version'}, JVM: ${System.getProperty 'java.vm.version'} (${System.getProperty 'java.vendor'}), Arch: ${System.getProperty 'os.arch'}" + idea { module { downloadJavadoc = true downloadSources = true } } + minecraft { - mappings channel: 'parchment', version: "${mappings_version}-${mc_version}" - accessTransformer = file('src/main/resources/META-INF/accesstransformer.cfg') + accessTransformers { + file('src/main/resources/META-INF/accesstransformer.cfg') + } +} - runs { - client { - workingDirectory project.file('run') - property 'forge.logging.markers', 'REGISTRIES' - property 'forge.logging.console.level', 'debug' - property 'mixin.env.remapRefMap', 'true' - property 'mixin.env.refMapRemappingFile', "${projectDir}/build/createSrgToMcp/output.srg" - property 'forge.enabledGameTestNamespaces', 'nuclearcraft' - args '--width', '1920', '--height', '1080' - mods { - nuclearcraft { - source sourceSets.main - } - } - } +runs { + configureEach { + systemProperty 'forge.logging.markers', 'REGISTRIES' + systemProperty 'forge.logging.console.level', 'debug' + modSource project.sourceSets.main + } - server { - workingDirectory project.file('server') - property 'forge.logging.markers', 'REGISTRIES' - property 'forge.logging.console.level', 'debug' - property 'mixin.env.remapRefMap', 'true' - property 'mixin.env.refMapRemappingFile', "${projectDir}/build/createSrgToMcp/output.srg" - property 'forge.enabledGameTestNamespaces', 'nuclearcraft' + client { + systemProperty 'neoforge.enabledGameTestNamespaces', "${mod_id}" + programArguments.addAll '--width', '1920', '--height', '1080' + } - mods { - nuclearcraft { - source sourceSets.main - } - } - } + server { + systemProperty 'neoforge.enabledGameTestNamespaces', "${mod_id}" + programArgument '--nogui' + } + + data { + programArguments.addAll '--mod', "${mod_id}", '--all', '--output', file('src/generated/resources/').getAbsolutePath(), '--existing', file('src/main/resources/').getAbsolutePath() + } +} - data { - workingDirectory project.file('run') - property 'mixin.env.remapRefMap', 'true' - property 'mixin.env.refMapRemappingFile', "${projectDir}/build/createSrgToMcp/output.srg" - property 'forge.logging.markers', 'REGISTRIES' - property 'forge.logging.console.level', 'debug' - args '--mod', 'nuclearcraft', '--all', '--output', file('src/generated/resources/'), '--existing', file('src/main/resources/') - mods { - nuclearcraft { - source sourceSets.main - } - } +sourceSets { + main { + java { + // TODO: Compat modules excluded — waiting on these mods to port to NeoForge 1.21.1. Remove exclusions when available. + exclude 'igentuman/nc/compat/oc2/**' // Open Computers 2 + exclude 'igentuman/nc/compat/tis3d/**' // TIS-3D + exclude 'igentuman/nc/compat/kubejs/**' // KubeJS + exclude 'igentuman/nc/compat/refined_storage/**' // Refined Storage + // AE2 compat re-enabled — AE2 19.x available for NeoForge 1.21.1 + exclude 'igentuman/nc/mixin/KubeJSRecipesEventJSMixin.java' // KubeJS mixin } + resources { srcDir 'src/generated/resources' } } } -sourceSets.main.resources { srcDir 'src/generated/resources' } +configurations { + runtimeClasspath.extendsFrom localRuntime +} repositories { - maven { url "https://minecraft.curseforge.com/api/maven/" } - maven { url "https://maven.blamejared.com" } - maven { url "https://jitpack.io" } - maven { url "https://www.cursemaven.com" } - maven { url "https://squiddev.cc/maven/" } - maven { url "https://maven.tterrag.com/" } - maven { url "https://modmaven.dev/" } - maven { url "https://maven.firstdarkdev.xyz/snapshots/" } - maven { url "https://maven.architectury.dev" } - maven { url "https://maven.saps.dev/minecraft" } + mavenLocal() + maven { + name = "Jared's maven" + url = "https://maven.blamejared.com/" + } + maven { + name = "TOP" + url = "https://maven.k-4u.nl" + } + maven { + name = "TerraformersMC" + url = "https://maven.terraformersmc.com/" + } maven { - url "https://maven.latvian.dev/releases" + name = "CurseMaven" + url = "https://www.cursemaven.com" content { - includeGroup "dev.latvian.mods" - includeGroup "dev.latvian.apps" + includeGroup "curse.maven" } } - maven { - url 'https://jitpack.io' + name = "SquidDev" + url = "https://maven.squiddev.cc" content { - includeGroup "com.github.rtyley" + includeGroup("cc.tweaked") } } - + maven { url = "https://jitpack.io" } + maven { url = "https://modmaven.dev/" } + maven { url = "https://maven.architectury.dev" } + maven { url = "https://maven.saps.dev/minecraft" } maven { name = 'GTCEu Maven' url = 'https://maven.gtceu.com' @@ -105,186 +107,113 @@ repositories { includeGroup 'com.gregtechceu.gtceu' } } + maven { + url = "https://maven.latvian.dev/releases" + content { + includeGroup "dev.latvian.mods" + includeGroup "dev.latvian.apps" + } + } } dependencies { - annotationProcessor 'org.spongepowered:mixin:0.8.5:processor' - implementation 'org.spongepowered:mixin:0.8.5' - minecraft "net.minecraftforge:forge:${mc_version}-${forge_version}" - - compileOnly fg.deobf("com.gregtechceu.gtceu:gtceu-${mc_version}:${gtm_version}"){ - transitive = false - } - implementation fg.deobf("curse.maven:markdownmanual-502485:4873115") - - implementation fg.deobf("curse.maven:tis-3d-238603:5266274") { - transitive = false - } - - compileOnly fg.deobf("curse.maven:masterful-machinery-423476:5818581") - //implementation fg.deobf("curse.maven:configured-457570:5180900") - //compileOnly fg.deobf("curse.maven:mantle-74924:6603205") - //compileOnly fg.deobf("curse.maven:tinkers-construct-74072:6603344") - runtimeOnly fg.deobf("curse.maven:construction-wand-399558:4684054") - runtimeOnly fg.deobf("curse.maven:spark-361579:4738952") -/* implementation fg.deobf("com.lowdragmc.ldlib:ldlib-forge-${mc_version}:${ldlib_version}") { - transitive = false - } - implementation fg.deobf("com.tterrag.registrate:Registrate:${registrate_version}") { - transitive = false - }*/ - compileOnly fg.deobf("curse.maven:guideme-1173950:7013686") { - transitive = false - } - compileOnly fg.deobf("curse.maven:applied-energistics-2-223794:7096071") { - transitive = false - } - implementation fg.deobf("curse.maven:multi-builder-tool-827020:7041820") - runtimeOnly fg.deobf("curse.maven:ctm-267602:5983309") - compileOnly fg.deobf("curse.maven:immersive-engineering-231951:5224387") - implementation fg.deobf("curse.maven:thermal-foundation-222880:5443583") - implementation fg.deobf("curse.maven:thermal-expansion-69163:5372749") - implementation fg.deobf("curse.maven:cofh-core-69162:5374122") - compileOnly fg.deobf("curse.maven:refined-storage-243076:4844585") - - implementation fg.deobf("curse.maven:flib-661261:6369719") - implementation fg.deobf("curse.maven:cyclic-239286:6373460") - compileOnly fg.deobf("curse.maven:the-lost-cities-269024:6174986") - compileOnly fg.deobf("mezz.jei:jei-${mc_version}-common-api:${jei_version}") - compileOnly fg.deobf("mezz.jei:jei-${mc_version}-forge-api:${jei_version}") - implementation fg.deobf("mezz.jei:jei-${mc_version}-forge:${jei_version}") - compileOnly fg.deobf("curse.maven:emi-580555:5872526") - - compileOnly fg.deobf("mcjty.theoneprobe:theoneprobe:${top_version}:api") { - transitive = false - } - runtimeOnly fg.deobf("mcjty.theoneprobe:theoneprobe:${top_version}") { - transitive = false - } - - compileOnly fg.deobf("dev.latvian.mods:kubejs-forge:${kubejs_version}"){ - transitive = false - } + implementation "net.neoforged:neoforge:${neo_version}" - compileOnly fg.deobf("dev.latvian.mods:rhino-forge:${rhino_version}"){ - transitive = false - } - implementation fg.deobf("dev.architectury:architectury-forge:${architectury_version}") - implementation fg.deobf("curse.maven:ftb-library-forge-404465:5282375") - implementation fg.deobf("curse.maven:ftb-teams-forge-404468:5267190") - implementation fg.deobf("curse.maven:ftb-chunks-forge-314906:5267364") - - //runtimeOnly fg.deobf("curse.maven:nbtedit-reborn-678133:4420565") - //runtimeOnly fg.deobf("com.blamejared.crafttweaker:CraftTweaker-forge-${mc_version}:${ct_version}") + // JEI + compileOnly "mezz.jei:jei-${mc_version}-common-api:${jei_version}" + compileOnly "mezz.jei:jei-${mc_version}-neoforge-api:${jei_version}" + // JEI runtime disabled — EMI bridges JEI recipes; running both causes duplicate recipe warnings + // localRuntime "mezz.jei:jei-${mc_version}-neoforge:${jei_version}" + // EMI + compileOnly "dev.emi:emi-neoforge:${emi_version}:api" + localRuntime "dev.emi:emi-neoforge:${emi_version}" - runtimeOnly fg.deobf("curse.maven:large-ore-deposits-318833:6251845") { - transitive = false - } - runtimeOnly fg.deobf("curse.maven:forgeendertech-244844:6030567"){ - transitive = false - } - compileOnly fg.deobf("curse.maven:better-fusion-reactor-for-mekanism-602409:6794834") - implementation fg.deobf("mekanism:Mekanism:${mc_version}-${mekanism_version}") - implementation fg.deobf("mekanism:Mekanism:${mc_version}-${mekanism_version}:generators") - //compileOnly fg.deobf("mekanism:Mekanism:${mc_version}-${mekanism_version}:api") + // The One Probe + compileOnly("mcjty.theoneprobe:theoneprobe:${top_version}:api") { transitive = false } + localRuntime("mcjty.theoneprobe:theoneprobe:${top_version}") { transitive = false } + // CC:Tweaked (uses -forge naming for NeoForge 1.21.1) compileOnly("cc.tweaked:cc-tweaked-${mc_version}-core-api:${cc_version}") - compileOnly(fg.deobf("cc.tweaked:cc-tweaked-${mc_version}-forge-api:${cc_version}")) - implementation fg.deobf("cc.tweaked:cc-tweaked-${mc_version}-forge:${cc_version}") - - compileOnly fg.deobf("curse.maven:sedna-511276:${sedna_version}") - compileOnly fg.deobf("curse.maven:markdownmanual-502485:${md_version}") - compileOnly fg.deobf("curse.maven:oc2r-1037738:${oc2_version}") - - compileOnly fg.deobf("vazkii.patchouli:Patchouli:${mc_version}-${patchouli_version}:api") - runtimeOnly fg.deobf("vazkii.patchouli:Patchouli:${mc_version}-${patchouli_version}") - - testImplementation 'org.junit.jupiter:junit-jupiter-api:5.9.2' - testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.9.2' - -// Mockito dependencies - testImplementation 'org.mockito:mockito-core:5.3.1' - testImplementation 'org.mockito:mockito-junit-jupiter:5.3.1' -} - -jar { - manifest { - attributes([ - "Specification-Title" : "nuclearcraft", - "Specification-Vendor" : "nuclearcraftsareus", - "Specification-Version" : "1", - "Implementation-Title" : project.name, - "Implementation-Version" : project.jar.archiveVersion, - "Implementation-Vendor" : "nuclearcraftsareus", - "Implementation-Timestamp": new Date().format("yyyy-MM-dd'T'HH:mm:ssZ") - ]) - } -} - -mixin { - add sourceSets.main, "nuclearcraft.refmap.json" - config "nuclearcraft.mixins.json" -} - -jar.enabled = false - -tasks.withType(JavaCompile).configureEach { - options.encoding = 'UTF-8' // Use the UTF-8 charset for Java compilation -} - -configurations { - shaded { - transitive = false - } + compileOnly("cc.tweaked:cc-tweaked-${mc_version}-forge-api:${cc_version}") + localRuntime("cc.tweaked:cc-tweaked-${mc_version}-forge:${cc_version}") + + // Mekanism + implementation "mekanism:Mekanism:${mc_version}-${mekanism_version}" + implementation "mekanism:Mekanism:${mc_version}-${mekanism_version}:generators" + + // Applied Energistics 2 + compileOnly("org.appliedenergistics:appliedenergistics2:${ae2_version}") { transitive = false } + localRuntime "org.appliedenergistics:appliedenergistics2:${ae2_version}" + + // GregTech CEu Modern + compileOnly("com.gregtechceu.gtceu:gtceu-${mc_version}:${gtm_version}") { transitive = false } + + // KubeJS + compileOnly("dev.latvian.mods:kubejs-neoforge:${kubejs_version}") { transitive = false } + compileOnly("dev.latvian.mods:rhino:${rhino_version}") { transitive = false } + + // Architectury + implementation "dev.architectury:architectury-neoforge:${architectury_version}" + + // Patchouli + compileOnly "vazkii.patchouli:Patchouli:${mc_version}-${patchouli_version}:api" + localRuntime "vazkii.patchouli:Patchouli:${mc_version}-${patchouli_version}" + + // Testing + testImplementation 'org.junit.jupiter:junit-jupiter-api:5.10.2' + testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.10.2' + testImplementation 'org.mockito:mockito-core:5.11.0' + testImplementation 'org.mockito:mockito-junit-jupiter:5.11.0' + + // ---- DEFERRED: These mods have no NeoForge 1.21.1 port ---- + // Thermal Foundation, Thermal Expansion, CoFH Core + // OC2 / Sedna / MarkdownManual + // TIS-3D + // Masterful Machinery, Large Ore Deposits, ForgeEnderTech, Cyclic, FLib + // Refined Storage, Immersive Engineering, The Lost Cities + // Construction Wand, Spark + // FTB Library/Teams/Chunks, CTM + // Better Fusion Reactor for Mekanism + // Multi Builder Tool, AE2 (check availability) } test { useJUnitPlatform() } -tasks.named('processResources', ProcessResources).configure { +tasks.withType(ProcessResources).configureEach { var replaceProperties = [ - 'version': version, + mc_version : mc_version, + mc_version_range : mc_version_range, + neo_version : neo_version, + neo_version_range : neo_version_range, + loader_version_range : loader_version_range, + mod_id : mod_id, + mod_version : mod_version, ] inputs.properties replaceProperties - filesMatching(['META-INF/mods.toml', 'pack.mcmeta']) { - expand replaceProperties + [project: project] + filesMatching(['META-INF/neoforge.mods.toml']) { + expand replaceProperties } } -shadowJar { - finalizedBy 'reobfShadowJar' - - from sourceSets.main.output.classesDirs - from sourceSets.main.output.resourcesDir +tasks.withType(JavaCompile).configureEach { + options.encoding = 'UTF-8' + options.compilerArgs += ['-Xmaxerrs', '5000'] +} +jar { manifest { attributes([ - "Specification-Title" : "NuclearCraft", - "Specification-Vendor" : "igentuman", - "Specification-Version" : "${project.version}", - "Implementation-Title" : "${project.name}", - "Implementation-Version": "${version}", - "Implementation-Vendor" : "igentuman", - "MixinConfigs" : "nuclearcraft.mixins.json", - "MixinConnector" : "igentuman.nc.mixin.NuclearCraftMixinConnector" + "Specification-Title" : "nuclearcraft", + "Specification-Vendor" : "nuclearcraftsareus", + "Specification-Version" : "1", + "Implementation-Title" : project.name, + "Implementation-Version" : project.jar.archiveVersion, + "Implementation-Vendor" : "nuclearcraftsareus", + "Implementation-Timestamp": new Date().format("yyyy-MM-dd'T'HH:mm:ssZ") ]) } - - configurations = [project.configurations.shaded] - archiveClassifier = null -} - - - -reobf { - shadowJar {} } - -afterEvaluate { - tasks.reobfJar.enabled = false -} - -tasks.assemble.dependsOn reobfShadowJar \ No newline at end of file diff --git a/gradle.properties b/gradle.properties index 6a0f55533..c94dab097 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,28 +1,33 @@ # 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=true org.gradle.parallel=true org.gradle.caching=true -mod_version=1.2.17 +# Parchment mappings +neogradle.subsystems.parchment.minecraftVersion=1.21.1 +neogradle.subsystems.parchment.mappingsVersion=2024.11.17 -mc_version=1.20.1 -mappings_version=2023.09.03 -forge_version=47.4.6 +# Minecraft and NeoForge +mc_version=1.21.1 +mc_version_range=[1.21.1,1.22) +neo_version=21.1.219 +neo_version_range=[21.1.0,) +loader_version_range=[4,) -ae2_version=12.9.8 -cc_version=1.109.5 -oc2_version=6280699 -md_version=4873115 -sedna_version=5261893 -ct_version=10.1.39 -jei_version=15.20.0.105 -patchouli_version=84-FORGE -mekanism_version=10.4.5.19 -top_version=1.20.1-10.0.1-3 -ctm_version=1.1.6+8 -kubejs_version=2001.6.5-build.16 -rhino_version=2001.2.3-build.6 -architectury_version=9.2.14 -gtm_version=7.2.0 \ No newline at end of file +# Mod +mod_version=1.3.0 +mod_id=nuclearcraft + +# Dependencies +jei_version=19.21.2.313 +cc_version=1.117.0 +mekanism_version=10.7.18.84 +top_version=1.21_neo-12.0.3-5 +kubejs_version=2101.7.2-build.348 +rhino_version=2101.2.7-build.81 +architectury_version=13.0.8 +emi_version=1.1.21+1.21.1 +patchouli_version=92-NEOFORGE +gtm_version=7.0.2 +ae2_version=19.2.17 diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 8838ba97b..ca025c83a 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.4-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.14-bin.zip networkTimeout=10000 validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME diff --git a/settings.gradle b/settings.gradle index fbf5b3500..90ae98fa4 100644 --- a/settings.gradle +++ b/settings.gradle @@ -1,8 +1,11 @@ pluginManagement { repositories { + mavenLocal() gradlePluginPortal() - maven { url = 'https://maven.minecraftforge.net/' } - maven { url = 'https://maven.parchmentmc.org' } - maven { url = 'https://repo.spongepowered.org/repository/maven-public/' } + maven { url = 'https://maven.neoforged.net/releases' } } -} \ No newline at end of file +} + +plugins { + id 'org.gradle.toolchains.foojay-resolver-convention' version '0.9.0' +} diff --git a/src/generated/resources/assets/nuclearcraft/lang/en_us.json b/src/generated/resources/assets/nuclearcraft/lang/en_us.json index c13310d01..0d2b80032 100644 --- a/src/generated/resources/assets/nuclearcraft/lang/en_us.json +++ b/src/generated/resources/assets/nuclearcraft/lang/en_us.json @@ -132,6 +132,7 @@ "block.nuclearcraft.du_lithium_ion_battery": "DU Lithium Ion Battery", "block.nuclearcraft.du_storage_container": "DU Storage Container", "block.nuclearcraft.du_voltaic_pile": "DU Voltaic Pile", + "block.nuclearcraft.dummy_turbine_blade": "DUmmy Turbine Blade", "block.nuclearcraft.electrolyzer": "Electrolyzer", "block.nuclearcraft.electromagnet_yoke": "Electromagnet Yoke", "block.nuclearcraft.electrum_block": "Electrum Block", @@ -347,6 +348,7 @@ "emi.category.nuclearcraft.nc_ore_veins": "Ore Veins", "emi.category.nuclearcraft.nuclear_furnace": "Nuclear Furnace", "emi.category.nuclearcraft.particle_info": "Particle Info", + "emi.category.nuclearcraft.particle_source_info": "Particle Source", "emi.category.nuclearcraft.pressurizer": "Pressurizer", "emi.category.nuclearcraft.pump": "Pump", "emi.category.nuclearcraft.rock_crusher": "Rock Crusher", @@ -2615,6 +2617,12 @@ "side_config.right": "RIGHT: ", "side_config.up": "UP: ", "solar_panel.fe_generation": "Daytime Gen: %s FE/t", + "sound_event.nuclearcraft.blackhole.idle": "Black Hole Hums", + "sound_event.nuclearcraft.blackhole.spawn": "Black Hole Spawns", + "sound_event.nuclearcraft.boss_action": "Boss of the Wasteland Action", + "sound_event.nuclearcraft.boss_angry": "Boss of the Wasteland Angry", + "sound_event.nuclearcraft.boss_hit": "Boss of the Wasteland Hit", + "sound_event.nuclearcraft.boss_idle": "Boss of the Wasteland Idle", "sound_event.nuclearcraft.feral_ghoul.death": "Feral Ghoul death", "sound_event.nuclearcraft.feral_ghoul.idle": "Feral Ghoul idle", "sound_event.nuclearcraft.fission_reactor": "Fission Reactor Ticking", @@ -2629,6 +2637,7 @@ "sound_event.nuclearcraft.item.geiger_4": "Geiger Counter Ticks Level 4 Intensity", "sound_event.nuclearcraft.item.geiger_5": "Geiger Counter Ticks Level 5 Intensity", "sound_event.nuclearcraft.item.geiger_6": "Geiger Counter Ticks Max Intensity", + "sound_event.nuclearcraft.laser.shoot": "Laser Shoots", "sound_event.nuclearcraft.turbine": "Turbine is spinning", "speed.multiplier": "Speed Multiplier: x%s", "speed.parallel_processing": "Parallel processing: x%s", @@ -2782,5 +2791,6 @@ "validation.structure.wrong_corner": "Wrong corner block at: %s", "validation.structure.wrong_inner": "Wrong Block at: %s", "validation.structure.wrong_outer": "Wrong Casing at: %s", - "validation.structure.wrong_proportions": "Wrong proportions" + "validation.structure.wrong_proportions": "Wrong proportions", + "tooltip.nc.accelerator.too_hot": "Accelerator is too hot" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/aluminum_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/aluminum_bucket.json index 624a0b1e0..3ef497ab7 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/aluminum_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/aluminum_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:aluminum", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/aluminum_clean_slurry_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/aluminum_clean_slurry_bucket.json index 3c73e932c..87c6fc6e4 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/aluminum_clean_slurry_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/aluminum_clean_slurry_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:aluminum_clean_slurry", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/aluminum_slurry_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/aluminum_slurry_bucket.json index d5c48a1bc..ff4ca6378 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/aluminum_slurry_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/aluminum_slurry_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:aluminum_slurry", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/americium_241_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/americium_241_bucket.json index 8962f9adb..6683be6f0 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/americium_241_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/americium_241_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:americium_241", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/americium_241_ni_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/americium_241_ni_bucket.json index 649ea00f9..a35fbf32e 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/americium_241_ni_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/americium_241_ni_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:americium_241_ni", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/americium_241_ox_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/americium_241_ox_bucket.json index f05b27a5b..6ffd56e2f 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/americium_241_ox_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/americium_241_ox_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:americium_241_ox", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/americium_241_za_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/americium_241_za_bucket.json index def94fad6..df7e1b7ab 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/americium_241_za_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/americium_241_za_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:americium_241_za", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/americium_242_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/americium_242_bucket.json index fe0c10ea6..a87ee83e6 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/americium_242_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/americium_242_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:americium_242", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/americium_242_ni_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/americium_242_ni_bucket.json index e61faa858..180e4dd86 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/americium_242_ni_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/americium_242_ni_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:americium_242_ni", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/americium_242_ox_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/americium_242_ox_bucket.json index a29862acd..692981f56 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/americium_242_ox_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/americium_242_ox_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:americium_242_ox", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/americium_242_za_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/americium_242_za_bucket.json index aa4179cba..2bd442814 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/americium_242_za_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/americium_242_za_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:americium_242_za", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/americium_243_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/americium_243_bucket.json index fa002e8f8..392c1573f 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/americium_243_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/americium_243_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:americium_243", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/americium_243_ni_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/americium_243_ni_bucket.json index ec5cdb85d..3da1be0d4 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/americium_243_ni_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/americium_243_ni_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:americium_243_ni", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/americium_243_ox_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/americium_243_ox_bucket.json index 0e304f747..9589f5c16 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/americium_243_ox_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/americium_243_ox_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:americium_243_ox", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/americium_243_za_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/americium_243_za_bucket.json index 1f77e3e72..bca75c3f5 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/americium_243_za_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/americium_243_za_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:americium_243_za", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/ammonia_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/ammonia_bucket.json index 297239dce..dc28aac02 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/ammonia_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/ammonia_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": true, "fluid": "nuclearcraft:ammonia", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/aqua_regia_acid_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/aqua_regia_acid_bucket.json index c62ca3346..684001b53 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/aqua_regia_acid_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/aqua_regia_acid_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:aqua_regia_acid", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/argon_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/argon_bucket.json index 7d5ddfa8b..f7bdd14f3 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/argon_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/argon_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": true, "fluid": "nuclearcraft:argon", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/arsenic_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/arsenic_bucket.json index b698614ea..5b1232f15 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/arsenic_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/arsenic_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:arsenic", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/berkelium_247_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/berkelium_247_bucket.json index 32df91519..f1b4c4a8d 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/berkelium_247_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/berkelium_247_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:berkelium_247", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/berkelium_247_ni_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/berkelium_247_ni_bucket.json index db415b71f..85d208e5e 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/berkelium_247_ni_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/berkelium_247_ni_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:berkelium_247_ni", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/berkelium_247_ox_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/berkelium_247_ox_bucket.json index b9227d42a..c3ba2742b 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/berkelium_247_ox_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/berkelium_247_ox_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:berkelium_247_ox", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/berkelium_247_za_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/berkelium_247_za_bucket.json index 94be37300..2ea3107b0 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/berkelium_247_za_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/berkelium_247_za_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:berkelium_247_za", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/berkelium_248_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/berkelium_248_bucket.json index 06b0b68e1..c84d3551a 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/berkelium_248_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/berkelium_248_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:berkelium_248", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/berkelium_248_ni_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/berkelium_248_ni_bucket.json index ff6ab928a..bf5b2d549 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/berkelium_248_ni_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/berkelium_248_ni_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:berkelium_248_ni", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/berkelium_248_ox_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/berkelium_248_ox_bucket.json index 48426bd7b..992b2084b 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/berkelium_248_ox_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/berkelium_248_ox_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:berkelium_248_ox", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/berkelium_248_za_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/berkelium_248_za_bucket.json index 3a91509c5..0e52ddc6d 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/berkelium_248_za_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/berkelium_248_za_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:berkelium_248_za", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/beryllium_7_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/beryllium_7_bucket.json index 7a9d12424..c06647729 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/beryllium_7_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/beryllium_7_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:beryllium_7", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/beryllium_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/beryllium_bucket.json index 5efef57b0..49022645b 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/beryllium_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/beryllium_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:beryllium", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/beryllium_fluoride_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/beryllium_fluoride_bucket.json index 4b970cccc..d2da6a089 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/beryllium_fluoride_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/beryllium_fluoride_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:beryllium_fluoride", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/borax_solution_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/borax_solution_bucket.json index 95e455c2f..e84c008fc 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/borax_solution_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/borax_solution_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:borax_solution", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/boric_acid_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/boric_acid_bucket.json index 08059e151..150f7c3b6 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/boric_acid_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/boric_acid_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:boric_acid", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/boron_10_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/boron_10_bucket.json index d518974c4..b9fc1d2af 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/boron_10_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/boron_10_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:boron_10", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/boron_10_ni_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/boron_10_ni_bucket.json index 4653d9b9b..373865a8f 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/boron_10_ni_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/boron_10_ni_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:boron_10_ni", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/boron_10_ox_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/boron_10_ox_bucket.json index c9f69c903..74bd79ca5 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/boron_10_ox_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/boron_10_ox_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:boron_10_ox", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/boron_10_za_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/boron_10_za_bucket.json index 38aab99a8..5c52b87b1 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/boron_10_za_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/boron_10_za_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:boron_10_za", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/boron_11_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/boron_11_bucket.json index e01244262..c87e0a640 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/boron_11_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/boron_11_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:boron_11", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/boron_11_ni_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/boron_11_ni_bucket.json index a35f2d32d..954525204 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/boron_11_ni_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/boron_11_ni_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:boron_11_ni", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/boron_11_ox_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/boron_11_ox_bucket.json index 8a975eb7f..8fa07d6a0 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/boron_11_ox_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/boron_11_ox_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:boron_11_ox", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/boron_11_za_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/boron_11_za_bucket.json index a0db3a780..d5374247a 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/boron_11_za_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/boron_11_za_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:boron_11_za", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/boron_arsenide_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/boron_arsenide_bucket.json index 5b1ce5e76..64d3c6edc 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/boron_arsenide_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/boron_arsenide_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:boron_arsenide", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/boron_arsenide_solution_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/boron_arsenide_solution_bucket.json index 224bd670a..4a5b3bf67 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/boron_arsenide_solution_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/boron_arsenide_solution_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:boron_arsenide_solution", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/boron_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/boron_bucket.json index 71d1c1741..6dfe62dcf 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/boron_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/boron_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:boron", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/boron_clean_slurry_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/boron_clean_slurry_bucket.json index b310a20e7..72c721e7d 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/boron_clean_slurry_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/boron_clean_slurry_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:boron_clean_slurry", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/boron_nitride_solution_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/boron_nitride_solution_bucket.json index 7b2c1a79b..e55ab8f3b 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/boron_nitride_solution_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/boron_nitride_solution_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:boron_nitride_solution", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/boron_slurry_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/boron_slurry_bucket.json index ef981e34a..7c3e0be4c 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/boron_slurry_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/boron_slurry_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:boron_slurry", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/bronze_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/bronze_bucket.json index 5ea66c89c..88fff8ac6 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/bronze_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/bronze_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:bronze", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/caesium_137_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/caesium_137_bucket.json index bf57261cd..032bcc9bb 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/caesium_137_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/caesium_137_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:caesium_137", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/calcium_48_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/calcium_48_bucket.json index 6d09b6cb2..9dc3dc58f 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/calcium_48_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/calcium_48_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:calcium_48", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/calcium_sulfate_solution_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/calcium_sulfate_solution_bucket.json index b4da63171..f02fe385b 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/calcium_sulfate_solution_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/calcium_sulfate_solution_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:calcium_sulfate_solution", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/californium_249_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/californium_249_bucket.json index b18e2fce7..5f9caa3a1 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/californium_249_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/californium_249_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:californium_249", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/californium_249_ni_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/californium_249_ni_bucket.json index 99e5db672..2c549ecfd 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/californium_249_ni_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/californium_249_ni_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:californium_249_ni", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/californium_249_ox_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/californium_249_ox_bucket.json index 5f6727f54..0870e5763 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/californium_249_ox_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/californium_249_ox_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:californium_249_ox", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/californium_249_za_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/californium_249_za_bucket.json index a26412dee..555961b24 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/californium_249_za_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/californium_249_za_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:californium_249_za", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/californium_250_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/californium_250_bucket.json index edf19ec8e..2c2e5526a 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/californium_250_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/californium_250_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:californium_250", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/californium_250_ni_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/californium_250_ni_bucket.json index 6a0ebe100..4ee1c29b5 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/californium_250_ni_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/californium_250_ni_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:californium_250_ni", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/californium_250_ox_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/californium_250_ox_bucket.json index 1c7e5df81..f8013b9be 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/californium_250_ox_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/californium_250_ox_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:californium_250_ox", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/californium_250_za_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/californium_250_za_bucket.json index 8ef0aac56..411687892 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/californium_250_za_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/californium_250_za_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:californium_250_za", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/californium_251_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/californium_251_bucket.json index 42535d83d..54d894cfe 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/californium_251_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/californium_251_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:californium_251", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/californium_251_ni_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/californium_251_ni_bucket.json index f8d6dae9b..359775d72 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/californium_251_ni_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/californium_251_ni_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:californium_251_ni", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/californium_251_ox_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/californium_251_ox_bucket.json index 21dc0fc0f..03af4e4c8 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/californium_251_ox_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/californium_251_ox_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:californium_251_ox", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/californium_251_za_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/californium_251_za_bucket.json index 406af4bc8..d3abb0580 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/californium_251_za_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/californium_251_za_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:californium_251_za", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/californium_252_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/californium_252_bucket.json index 6146fff1e..006d0d3ed 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/californium_252_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/californium_252_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:californium_252", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/californium_252_ni_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/californium_252_ni_bucket.json index 0d7235d99..82e242014 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/californium_252_ni_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/californium_252_ni_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:californium_252_ni", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/californium_252_ox_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/californium_252_ox_bucket.json index 1cc3dc1d8..f25c26545 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/californium_252_ox_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/californium_252_ox_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:californium_252_ox", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/californium_252_za_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/californium_252_za_bucket.json index 1ada42ecf..1ce40ed86 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/californium_252_za_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/californium_252_za_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:californium_252_za", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/carbon_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/carbon_bucket.json index da6f7e5ae..1bae7c0c0 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/carbon_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/carbon_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": true, "fluid": "nuclearcraft:carbon", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/carbon_dioxide_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/carbon_dioxide_bucket.json index 58ef3861a..e49211021 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/carbon_dioxide_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/carbon_dioxide_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": true, "fluid": "nuclearcraft:carbon_dioxide", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/carbon_manganese_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/carbon_manganese_bucket.json index 07d8d79c7..97bdf15ef 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/carbon_manganese_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/carbon_manganese_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:carbon_manganese", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/carbon_monoxide_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/carbon_monoxide_bucket.json index 3e927bb87..41538be52 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/carbon_monoxide_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/carbon_monoxide_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": true, "fluid": "nuclearcraft:carbon_monoxide", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/chlorine_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/chlorine_bucket.json index 68a8708ef..865671467 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/chlorine_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/chlorine_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": true, "fluid": "nuclearcraft:chlorine", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/chocolate_liquor_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/chocolate_liquor_bucket.json index 9e0ac0a19..03e3999c1 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/chocolate_liquor_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/chocolate_liquor_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:chocolate_liquor", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/cobalt_60_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/cobalt_60_bucket.json index f7bc0f14c..221c36795 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/cobalt_60_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/cobalt_60_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:cobalt_60", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/cobalt_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/cobalt_bucket.json index c65a3a20f..7134e646f 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/cobalt_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/cobalt_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:cobalt", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/cobalt_clean_slurry_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/cobalt_clean_slurry_bucket.json index a565d4464..1cb8b3506 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/cobalt_clean_slurry_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/cobalt_clean_slurry_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:cobalt_clean_slurry", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/cobalt_slurry_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/cobalt_slurry_bucket.json index c4644841a..bed6ce192 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/cobalt_slurry_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/cobalt_slurry_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:cobalt_slurry", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/cocoa_butter_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/cocoa_butter_bucket.json index 2f82c9641..19193d08f 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/cocoa_butter_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/cocoa_butter_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:cocoa_butter", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/condensate_water_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/condensate_water_bucket.json index 9efd86576..a25e143c0 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/condensate_water_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/condensate_water_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:condensate_water", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/copernicium_291_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/copernicium_291_bucket.json index 3279967bb..ccc263b49 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/copernicium_291_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/copernicium_291_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:copernicium_291", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/copernicium_291_ni_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/copernicium_291_ni_bucket.json index 000a0aea7..c8ff6aa48 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/copernicium_291_ni_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/copernicium_291_ni_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:copernicium_291_ni", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/copernicium_291_ox_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/copernicium_291_ox_bucket.json index 661a6e42b..401177827 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/copernicium_291_ox_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/copernicium_291_ox_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:copernicium_291_ox", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/copernicium_291_za_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/copernicium_291_za_bucket.json index 066636f58..7f4ac6638 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/copernicium_291_za_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/copernicium_291_za_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:copernicium_291_za", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/copper_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/copper_bucket.json index 99a1f1e7b..184afc158 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/copper_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/copper_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:copper", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/copper_clean_slurry_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/copper_clean_slurry_bucket.json index 9b75237d5..640106812 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/copper_clean_slurry_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/copper_clean_slurry_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:copper_clean_slurry", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/copper_slurry_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/copper_slurry_bucket.json index f144c90a5..79d6743ab 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/copper_slurry_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/copper_slurry_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:copper_slurry", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/corium_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/corium_bucket.json index c59d210a7..9f8e5fac9 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/corium_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/corium_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:corium", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/cryotheum_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/cryotheum_bucket.json index 39626e53a..4fcaaff2e 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/cryotheum_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/cryotheum_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:cryotheum", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/curium_243_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/curium_243_bucket.json index 4fbf56e8d..22c0e9e49 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/curium_243_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/curium_243_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:curium_243", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/curium_243_ni_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/curium_243_ni_bucket.json index 14c3d8af0..fb18a42f8 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/curium_243_ni_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/curium_243_ni_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:curium_243_ni", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/curium_243_ox_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/curium_243_ox_bucket.json index 91ffd92fb..8f77a6a95 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/curium_243_ox_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/curium_243_ox_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:curium_243_ox", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/curium_243_za_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/curium_243_za_bucket.json index 8bc66b676..4d125ad9c 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/curium_243_za_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/curium_243_za_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:curium_243_za", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/curium_245_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/curium_245_bucket.json index 293edb789..6502d745c 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/curium_245_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/curium_245_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:curium_245", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/curium_245_ni_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/curium_245_ni_bucket.json index 2e7328454..15a8b5874 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/curium_245_ni_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/curium_245_ni_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:curium_245_ni", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/curium_245_ox_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/curium_245_ox_bucket.json index e1e2f2f16..8b372e050 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/curium_245_ox_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/curium_245_ox_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:curium_245_ox", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/curium_245_za_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/curium_245_za_bucket.json index 37ce3023d..bade8fa6b 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/curium_245_za_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/curium_245_za_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:curium_245_za", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/curium_246_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/curium_246_bucket.json index 761a3182c..3b7db9658 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/curium_246_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/curium_246_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:curium_246", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/curium_246_ni_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/curium_246_ni_bucket.json index 5a9a51c75..1ba4a12fa 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/curium_246_ni_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/curium_246_ni_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:curium_246_ni", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/curium_246_ox_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/curium_246_ox_bucket.json index 6d4096fd7..04d0498a8 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/curium_246_ox_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/curium_246_ox_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:curium_246_ox", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/curium_246_za_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/curium_246_za_bucket.json index 568a2f228..9f2ab373b 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/curium_246_za_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/curium_246_za_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:curium_246_za", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/curium_247_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/curium_247_bucket.json index 5181eb2d9..d8570df4b 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/curium_247_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/curium_247_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:curium_247", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/curium_247_ni_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/curium_247_ni_bucket.json index 789a6c67b..71e0e58a5 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/curium_247_ni_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/curium_247_ni_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:curium_247_ni", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/curium_247_ox_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/curium_247_ox_bucket.json index 810ffa527..bae24a928 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/curium_247_ox_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/curium_247_ox_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:curium_247_ox", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/curium_247_za_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/curium_247_za_bucket.json index 4a4c35ac8..1d45fa906 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/curium_247_za_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/curium_247_za_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:curium_247_za", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/dark_chocolate_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/dark_chocolate_bucket.json index 5c1d12f71..8c8cd7842 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/dark_chocolate_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/dark_chocolate_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:dark_chocolate", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_americium_hea_242_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_americium_hea_242_bucket.json index 13592ad01..c14982c07 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_americium_hea_242_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_americium_hea_242_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:depleted_fuel_americium_hea_242", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_americium_hea_242_ni_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_americium_hea_242_ni_bucket.json index d68af9a3b..9a7dd4efb 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_americium_hea_242_ni_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_americium_hea_242_ni_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:depleted_fuel_americium_hea_242_ni", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_americium_hea_242_ox_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_americium_hea_242_ox_bucket.json index 9e5a4ba9d..e5f857ed1 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_americium_hea_242_ox_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_americium_hea_242_ox_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:depleted_fuel_americium_hea_242_ox", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_americium_hea_242_za_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_americium_hea_242_za_bucket.json index de5af0c64..9a11ad4e3 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_americium_hea_242_za_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_americium_hea_242_za_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:depleted_fuel_americium_hea_242_za", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_americium_lea_242_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_americium_lea_242_bucket.json index a9e88b96c..3e2b5d921 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_americium_lea_242_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_americium_lea_242_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:depleted_fuel_americium_lea_242", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_americium_lea_242_ni_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_americium_lea_242_ni_bucket.json index 1e3e81735..d0605a928 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_americium_lea_242_ni_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_americium_lea_242_ni_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:depleted_fuel_americium_lea_242_ni", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_americium_lea_242_ox_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_americium_lea_242_ox_bucket.json index 9da2354dd..e82e7bd45 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_americium_lea_242_ox_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_americium_lea_242_ox_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:depleted_fuel_americium_lea_242_ox", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_americium_lea_242_za_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_americium_lea_242_za_bucket.json index 548fcecd8..b9a1112f5 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_americium_lea_242_za_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_americium_lea_242_za_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:depleted_fuel_americium_lea_242_za", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_berkelium_heb_248_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_berkelium_heb_248_bucket.json index 8e1276955..546dd0270 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_berkelium_heb_248_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_berkelium_heb_248_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:depleted_fuel_berkelium_heb_248", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_berkelium_heb_248_ni_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_berkelium_heb_248_ni_bucket.json index 9d2652ebd..50113123e 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_berkelium_heb_248_ni_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_berkelium_heb_248_ni_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:depleted_fuel_berkelium_heb_248_ni", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_berkelium_heb_248_ox_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_berkelium_heb_248_ox_bucket.json index 9f36e7020..defd09c39 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_berkelium_heb_248_ox_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_berkelium_heb_248_ox_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:depleted_fuel_berkelium_heb_248_ox", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_berkelium_heb_248_za_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_berkelium_heb_248_za_bucket.json index a83a81a44..24975edb4 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_berkelium_heb_248_za_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_berkelium_heb_248_za_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:depleted_fuel_berkelium_heb_248_za", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_berkelium_leb_248_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_berkelium_leb_248_bucket.json index 492830887..5529ee27b 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_berkelium_leb_248_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_berkelium_leb_248_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:depleted_fuel_berkelium_leb_248", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_berkelium_leb_248_ni_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_berkelium_leb_248_ni_bucket.json index d0d7900dd..478f9987b 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_berkelium_leb_248_ni_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_berkelium_leb_248_ni_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:depleted_fuel_berkelium_leb_248_ni", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_berkelium_leb_248_ox_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_berkelium_leb_248_ox_bucket.json index d93f5375d..e7d48e65c 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_berkelium_leb_248_ox_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_berkelium_leb_248_ox_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:depleted_fuel_berkelium_leb_248_ox", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_berkelium_leb_248_za_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_berkelium_leb_248_za_bucket.json index 88bc9773e..a45c48fd6 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_berkelium_leb_248_za_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_berkelium_leb_248_za_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:depleted_fuel_berkelium_leb_248_za", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_californium_hecf_249_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_californium_hecf_249_bucket.json index a8598b5fc..5ba0c7ba5 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_californium_hecf_249_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_californium_hecf_249_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:depleted_fuel_californium_hecf_249", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_californium_hecf_249_ni_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_californium_hecf_249_ni_bucket.json index c5f28ded1..9499ba3f3 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_californium_hecf_249_ni_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_californium_hecf_249_ni_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:depleted_fuel_californium_hecf_249_ni", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_californium_hecf_249_ox_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_californium_hecf_249_ox_bucket.json index bacd1ab93..2bbf25425 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_californium_hecf_249_ox_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_californium_hecf_249_ox_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:depleted_fuel_californium_hecf_249_ox", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_californium_hecf_249_za_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_californium_hecf_249_za_bucket.json index c7214d5b5..e9add12ac 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_californium_hecf_249_za_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_californium_hecf_249_za_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:depleted_fuel_californium_hecf_249_za", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_californium_hecf_251_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_californium_hecf_251_bucket.json index d340ab08a..361591bc9 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_californium_hecf_251_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_californium_hecf_251_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:depleted_fuel_californium_hecf_251", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_californium_hecf_251_ni_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_californium_hecf_251_ni_bucket.json index 83d74a93f..a2fd4cea2 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_californium_hecf_251_ni_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_californium_hecf_251_ni_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:depleted_fuel_californium_hecf_251_ni", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_californium_hecf_251_ox_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_californium_hecf_251_ox_bucket.json index b70d8c370..21f409344 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_californium_hecf_251_ox_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_californium_hecf_251_ox_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:depleted_fuel_californium_hecf_251_ox", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_californium_hecf_251_za_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_californium_hecf_251_za_bucket.json index ae24a7669..4c62e0310 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_californium_hecf_251_za_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_californium_hecf_251_za_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:depleted_fuel_californium_hecf_251_za", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_californium_lecf_249_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_californium_lecf_249_bucket.json index cd10ec37b..b8296cfdc 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_californium_lecf_249_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_californium_lecf_249_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:depleted_fuel_californium_lecf_249", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_californium_lecf_249_ni_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_californium_lecf_249_ni_bucket.json index 3688845fb..6a0ee07f7 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_californium_lecf_249_ni_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_californium_lecf_249_ni_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:depleted_fuel_californium_lecf_249_ni", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_californium_lecf_249_ox_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_californium_lecf_249_ox_bucket.json index 0ea8234ff..d662c9acf 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_californium_lecf_249_ox_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_californium_lecf_249_ox_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:depleted_fuel_californium_lecf_249_ox", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_californium_lecf_249_za_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_californium_lecf_249_za_bucket.json index 5a18f0c8e..8184d4c23 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_californium_lecf_249_za_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_californium_lecf_249_za_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:depleted_fuel_californium_lecf_249_za", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_californium_lecf_251_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_californium_lecf_251_bucket.json index 114f2242a..99c5a2a50 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_californium_lecf_251_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_californium_lecf_251_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:depleted_fuel_californium_lecf_251", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_californium_lecf_251_ni_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_californium_lecf_251_ni_bucket.json index 2f419e40a..9c6956fd5 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_californium_lecf_251_ni_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_californium_lecf_251_ni_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:depleted_fuel_californium_lecf_251_ni", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_californium_lecf_251_ox_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_californium_lecf_251_ox_bucket.json index 0931272cd..27f06202c 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_californium_lecf_251_ox_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_californium_lecf_251_ox_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:depleted_fuel_californium_lecf_251_ox", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_californium_lecf_251_za_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_californium_lecf_251_za_bucket.json index 9df7d23d3..0e3919388 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_californium_lecf_251_za_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_californium_lecf_251_za_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:depleted_fuel_californium_lecf_251_za", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_curium_hecm_243_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_curium_hecm_243_bucket.json index f78284acf..04039e126 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_curium_hecm_243_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_curium_hecm_243_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:depleted_fuel_curium_hecm_243", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_curium_hecm_243_ni_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_curium_hecm_243_ni_bucket.json index efa5ed616..2e55b168f 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_curium_hecm_243_ni_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_curium_hecm_243_ni_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:depleted_fuel_curium_hecm_243_ni", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_curium_hecm_243_ox_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_curium_hecm_243_ox_bucket.json index 4a9f076db..fc71c03ad 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_curium_hecm_243_ox_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_curium_hecm_243_ox_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:depleted_fuel_curium_hecm_243_ox", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_curium_hecm_243_za_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_curium_hecm_243_za_bucket.json index c523391d7..63c52149c 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_curium_hecm_243_za_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_curium_hecm_243_za_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:depleted_fuel_curium_hecm_243_za", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_curium_hecm_245_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_curium_hecm_245_bucket.json index fd2f0fea3..b2ed6c4bd 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_curium_hecm_245_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_curium_hecm_245_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:depleted_fuel_curium_hecm_245", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_curium_hecm_245_ni_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_curium_hecm_245_ni_bucket.json index 7d58afb6f..2693f23e4 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_curium_hecm_245_ni_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_curium_hecm_245_ni_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:depleted_fuel_curium_hecm_245_ni", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_curium_hecm_245_ox_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_curium_hecm_245_ox_bucket.json index 4525189b6..062cab2e7 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_curium_hecm_245_ox_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_curium_hecm_245_ox_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:depleted_fuel_curium_hecm_245_ox", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_curium_hecm_245_za_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_curium_hecm_245_za_bucket.json index 69f93a32d..379932dcc 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_curium_hecm_245_za_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_curium_hecm_245_za_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:depleted_fuel_curium_hecm_245_za", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_curium_hecm_247_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_curium_hecm_247_bucket.json index fe17cf27b..732b216e1 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_curium_hecm_247_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_curium_hecm_247_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:depleted_fuel_curium_hecm_247", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_curium_hecm_247_ni_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_curium_hecm_247_ni_bucket.json index eb7775ad4..42b6f4bd2 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_curium_hecm_247_ni_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_curium_hecm_247_ni_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:depleted_fuel_curium_hecm_247_ni", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_curium_hecm_247_ox_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_curium_hecm_247_ox_bucket.json index ae3743d6f..5fa8b58d8 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_curium_hecm_247_ox_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_curium_hecm_247_ox_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:depleted_fuel_curium_hecm_247_ox", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_curium_hecm_247_za_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_curium_hecm_247_za_bucket.json index 0f21969cf..b345eb963 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_curium_hecm_247_za_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_curium_hecm_247_za_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:depleted_fuel_curium_hecm_247_za", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_curium_lecm_243_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_curium_lecm_243_bucket.json index 154857f38..df2381d99 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_curium_lecm_243_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_curium_lecm_243_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:depleted_fuel_curium_lecm_243", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_curium_lecm_243_ni_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_curium_lecm_243_ni_bucket.json index 500d37f5b..4a1087e28 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_curium_lecm_243_ni_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_curium_lecm_243_ni_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:depleted_fuel_curium_lecm_243_ni", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_curium_lecm_243_ox_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_curium_lecm_243_ox_bucket.json index 251f73deb..d38e514cd 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_curium_lecm_243_ox_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_curium_lecm_243_ox_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:depleted_fuel_curium_lecm_243_ox", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_curium_lecm_243_za_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_curium_lecm_243_za_bucket.json index 3bdaf1dec..e96782b9f 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_curium_lecm_243_za_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_curium_lecm_243_za_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:depleted_fuel_curium_lecm_243_za", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_curium_lecm_245_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_curium_lecm_245_bucket.json index de60acbd5..3c4618978 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_curium_lecm_245_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_curium_lecm_245_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:depleted_fuel_curium_lecm_245", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_curium_lecm_245_ni_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_curium_lecm_245_ni_bucket.json index 68b0b4b5f..7f92c2e6c 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_curium_lecm_245_ni_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_curium_lecm_245_ni_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:depleted_fuel_curium_lecm_245_ni", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_curium_lecm_245_ox_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_curium_lecm_245_ox_bucket.json index eaa29d02f..6bf49ea57 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_curium_lecm_245_ox_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_curium_lecm_245_ox_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:depleted_fuel_curium_lecm_245_ox", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_curium_lecm_245_za_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_curium_lecm_245_za_bucket.json index 0ec63185e..621da1947 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_curium_lecm_245_za_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_curium_lecm_245_za_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:depleted_fuel_curium_lecm_245_za", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_curium_lecm_247_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_curium_lecm_247_bucket.json index 03e8f1343..cc4164116 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_curium_lecm_247_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_curium_lecm_247_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:depleted_fuel_curium_lecm_247", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_curium_lecm_247_ni_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_curium_lecm_247_ni_bucket.json index 4c64740e2..e5a2a6d27 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_curium_lecm_247_ni_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_curium_lecm_247_ni_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:depleted_fuel_curium_lecm_247_ni", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_curium_lecm_247_ox_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_curium_lecm_247_ox_bucket.json index 69c2ea145..a36d4dac2 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_curium_lecm_247_ox_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_curium_lecm_247_ox_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:depleted_fuel_curium_lecm_247_ox", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_curium_lecm_247_za_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_curium_lecm_247_za_bucket.json index 35ad49804..be6342164 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_curium_lecm_247_za_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_curium_lecm_247_za_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:depleted_fuel_curium_lecm_247_za", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_mixed_mix_239_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_mixed_mix_239_bucket.json index 4b263645a..95c0a7fe1 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_mixed_mix_239_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_mixed_mix_239_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:depleted_fuel_mixed_mix_239", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_mixed_mix_239_ni_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_mixed_mix_239_ni_bucket.json index b78ed1d43..8a972aadd 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_mixed_mix_239_ni_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_mixed_mix_239_ni_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:depleted_fuel_mixed_mix_239_ni", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_mixed_mix_239_ox_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_mixed_mix_239_ox_bucket.json index 68f98d34e..5fe34dade 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_mixed_mix_239_ox_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_mixed_mix_239_ox_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:depleted_fuel_mixed_mix_239_ox", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_mixed_mix_239_za_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_mixed_mix_239_za_bucket.json index 0b90f7245..9f5a65246 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_mixed_mix_239_za_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_mixed_mix_239_za_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:depleted_fuel_mixed_mix_239_za", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_mixed_mix_241_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_mixed_mix_241_bucket.json index 3403c5338..f4122aa1c 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_mixed_mix_241_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_mixed_mix_241_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:depleted_fuel_mixed_mix_241", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_mixed_mix_241_ni_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_mixed_mix_241_ni_bucket.json index 7d7bbe97e..f18154080 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_mixed_mix_241_ni_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_mixed_mix_241_ni_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:depleted_fuel_mixed_mix_241_ni", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_mixed_mix_241_ox_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_mixed_mix_241_ox_bucket.json index b8fe294df..96c0f76df 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_mixed_mix_241_ox_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_mixed_mix_241_ox_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:depleted_fuel_mixed_mix_241_ox", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_mixed_mix_241_za_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_mixed_mix_241_za_bucket.json index 110461ae7..15c388967 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_mixed_mix_241_za_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_mixed_mix_241_za_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:depleted_fuel_mixed_mix_241_za", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_neptunium_hen_236_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_neptunium_hen_236_bucket.json index ca95d7817..aabef7d2e 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_neptunium_hen_236_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_neptunium_hen_236_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:depleted_fuel_neptunium_hen_236", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_neptunium_hen_236_ni_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_neptunium_hen_236_ni_bucket.json index e39f8e9bb..2f0725fe1 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_neptunium_hen_236_ni_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_neptunium_hen_236_ni_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:depleted_fuel_neptunium_hen_236_ni", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_neptunium_hen_236_ox_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_neptunium_hen_236_ox_bucket.json index 0181c23d4..0d5af6784 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_neptunium_hen_236_ox_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_neptunium_hen_236_ox_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:depleted_fuel_neptunium_hen_236_ox", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_neptunium_hen_236_za_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_neptunium_hen_236_za_bucket.json index c5d4e431a..8ccf52711 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_neptunium_hen_236_za_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_neptunium_hen_236_za_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:depleted_fuel_neptunium_hen_236_za", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_neptunium_len_236_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_neptunium_len_236_bucket.json index dbdd52fa1..2899e3a91 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_neptunium_len_236_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_neptunium_len_236_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:depleted_fuel_neptunium_len_236", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_neptunium_len_236_ni_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_neptunium_len_236_ni_bucket.json index 229a6a0c6..024d9579d 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_neptunium_len_236_ni_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_neptunium_len_236_ni_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:depleted_fuel_neptunium_len_236_ni", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_neptunium_len_236_ox_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_neptunium_len_236_ox_bucket.json index acf722665..1a57b7a19 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_neptunium_len_236_ox_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_neptunium_len_236_ox_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:depleted_fuel_neptunium_len_236_ox", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_neptunium_len_236_za_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_neptunium_len_236_za_bucket.json index 84e016084..761ef14e9 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_neptunium_len_236_za_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_neptunium_len_236_za_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:depleted_fuel_neptunium_len_236_za", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_plutonium_hep_239_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_plutonium_hep_239_bucket.json index 345ea7e95..e0a0ef81f 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_plutonium_hep_239_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_plutonium_hep_239_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:depleted_fuel_plutonium_hep_239", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_plutonium_hep_239_ni_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_plutonium_hep_239_ni_bucket.json index 22dcebe93..0eba81dc6 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_plutonium_hep_239_ni_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_plutonium_hep_239_ni_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:depleted_fuel_plutonium_hep_239_ni", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_plutonium_hep_239_ox_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_plutonium_hep_239_ox_bucket.json index 13d25fc19..bd1a7d927 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_plutonium_hep_239_ox_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_plutonium_hep_239_ox_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:depleted_fuel_plutonium_hep_239_ox", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_plutonium_hep_239_za_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_plutonium_hep_239_za_bucket.json index 16f3ca3b0..88ca2009c 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_plutonium_hep_239_za_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_plutonium_hep_239_za_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:depleted_fuel_plutonium_hep_239_za", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_plutonium_hep_241_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_plutonium_hep_241_bucket.json index 3a65c8311..6d87fa780 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_plutonium_hep_241_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_plutonium_hep_241_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:depleted_fuel_plutonium_hep_241", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_plutonium_hep_241_ni_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_plutonium_hep_241_ni_bucket.json index 036448b70..fa9bc5ffa 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_plutonium_hep_241_ni_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_plutonium_hep_241_ni_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:depleted_fuel_plutonium_hep_241_ni", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_plutonium_hep_241_ox_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_plutonium_hep_241_ox_bucket.json index 8413c4d49..c313b5682 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_plutonium_hep_241_ox_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_plutonium_hep_241_ox_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:depleted_fuel_plutonium_hep_241_ox", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_plutonium_hep_241_za_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_plutonium_hep_241_za_bucket.json index ed5cbbda7..7cbd0263e 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_plutonium_hep_241_za_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_plutonium_hep_241_za_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:depleted_fuel_plutonium_hep_241_za", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_plutonium_lep_239_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_plutonium_lep_239_bucket.json index 4a26833be..a5c6a0de9 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_plutonium_lep_239_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_plutonium_lep_239_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:depleted_fuel_plutonium_lep_239", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_plutonium_lep_239_ni_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_plutonium_lep_239_ni_bucket.json index e2ae806f6..df39d9397 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_plutonium_lep_239_ni_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_plutonium_lep_239_ni_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:depleted_fuel_plutonium_lep_239_ni", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_plutonium_lep_239_ox_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_plutonium_lep_239_ox_bucket.json index ddb54d0b0..27541ff9c 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_plutonium_lep_239_ox_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_plutonium_lep_239_ox_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:depleted_fuel_plutonium_lep_239_ox", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_plutonium_lep_239_za_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_plutonium_lep_239_za_bucket.json index b8740d761..78da43d61 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_plutonium_lep_239_za_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_plutonium_lep_239_za_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:depleted_fuel_plutonium_lep_239_za", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_plutonium_lep_241_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_plutonium_lep_241_bucket.json index b6f7495dc..fcea7e05f 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_plutonium_lep_241_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_plutonium_lep_241_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:depleted_fuel_plutonium_lep_241", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_plutonium_lep_241_ni_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_plutonium_lep_241_ni_bucket.json index 12688d3b2..ee2b9a8ab 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_plutonium_lep_241_ni_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_plutonium_lep_241_ni_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:depleted_fuel_plutonium_lep_241_ni", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_plutonium_lep_241_ox_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_plutonium_lep_241_ox_bucket.json index 1014fb2c0..a8bb3c009 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_plutonium_lep_241_ox_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_plutonium_lep_241_ox_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:depleted_fuel_plutonium_lep_241_ox", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_plutonium_lep_241_za_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_plutonium_lep_241_za_bucket.json index 30167e7af..bf8f62ade 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_plutonium_lep_241_za_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_plutonium_lep_241_za_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:depleted_fuel_plutonium_lep_241_za", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_thorium_tbu_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_thorium_tbu_bucket.json index 792851039..75da958d4 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_thorium_tbu_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_thorium_tbu_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:depleted_fuel_thorium_tbu", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_thorium_tbu_ni_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_thorium_tbu_ni_bucket.json index e75972528..2b96e92b7 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_thorium_tbu_ni_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_thorium_tbu_ni_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:depleted_fuel_thorium_tbu_ni", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_thorium_tbu_ox_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_thorium_tbu_ox_bucket.json index c06d70416..d891a430c 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_thorium_tbu_ox_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_thorium_tbu_ox_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:depleted_fuel_thorium_tbu_ox", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_thorium_tbu_za_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_thorium_tbu_za_bucket.json index b87e87821..e7587c5eb 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_thorium_tbu_za_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_thorium_tbu_za_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:depleted_fuel_thorium_tbu_za", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_uranium_heu_233_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_uranium_heu_233_bucket.json index 80071e253..1d969352e 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_uranium_heu_233_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_uranium_heu_233_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:depleted_fuel_uranium_heu_233", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_uranium_heu_233_ni_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_uranium_heu_233_ni_bucket.json index 1bc20ad20..2a4944636 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_uranium_heu_233_ni_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_uranium_heu_233_ni_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:depleted_fuel_uranium_heu_233_ni", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_uranium_heu_233_ox_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_uranium_heu_233_ox_bucket.json index c91893fe1..fe6dbd0f1 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_uranium_heu_233_ox_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_uranium_heu_233_ox_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:depleted_fuel_uranium_heu_233_ox", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_uranium_heu_233_za_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_uranium_heu_233_za_bucket.json index 3dd0329f1..23bc861b2 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_uranium_heu_233_za_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_uranium_heu_233_za_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:depleted_fuel_uranium_heu_233_za", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_uranium_heu_235_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_uranium_heu_235_bucket.json index 04af5b886..c55853792 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_uranium_heu_235_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_uranium_heu_235_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:depleted_fuel_uranium_heu_235", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_uranium_heu_235_ni_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_uranium_heu_235_ni_bucket.json index c55885052..1de9baf57 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_uranium_heu_235_ni_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_uranium_heu_235_ni_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:depleted_fuel_uranium_heu_235_ni", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_uranium_heu_235_ox_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_uranium_heu_235_ox_bucket.json index 83177403f..71df24709 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_uranium_heu_235_ox_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_uranium_heu_235_ox_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:depleted_fuel_uranium_heu_235_ox", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_uranium_heu_235_za_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_uranium_heu_235_za_bucket.json index 28632e147..183e678f0 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_uranium_heu_235_za_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_uranium_heu_235_za_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:depleted_fuel_uranium_heu_235_za", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_uranium_leu_233_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_uranium_leu_233_bucket.json index 4d486865a..a545b8470 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_uranium_leu_233_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_uranium_leu_233_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:depleted_fuel_uranium_leu_233", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_uranium_leu_233_ni_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_uranium_leu_233_ni_bucket.json index 830e0f11e..7644cfc6f 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_uranium_leu_233_ni_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_uranium_leu_233_ni_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:depleted_fuel_uranium_leu_233_ni", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_uranium_leu_233_ox_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_uranium_leu_233_ox_bucket.json index 8f4bc5aba..a8a95e9e7 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_uranium_leu_233_ox_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_uranium_leu_233_ox_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:depleted_fuel_uranium_leu_233_ox", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_uranium_leu_233_za_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_uranium_leu_233_za_bucket.json index abb071d19..7f79e8659 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_uranium_leu_233_za_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_uranium_leu_233_za_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:depleted_fuel_uranium_leu_233_za", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_uranium_leu_235_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_uranium_leu_235_bucket.json index be32c3926..17f6fb7b7 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_uranium_leu_235_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_uranium_leu_235_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:depleted_fuel_uranium_leu_235", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_uranium_leu_235_ni_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_uranium_leu_235_ni_bucket.json index ed62de379..37f4e3006 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_uranium_leu_235_ni_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_uranium_leu_235_ni_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:depleted_fuel_uranium_leu_235_ni", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_uranium_leu_235_ox_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_uranium_leu_235_ox_bucket.json index 369667093..c258f8ffa 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_uranium_leu_235_ox_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_uranium_leu_235_ox_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:depleted_fuel_uranium_leu_235_ox", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_uranium_leu_235_za_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_uranium_leu_235_za_bucket.json index 77c2d7468..2450bdac1 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_uranium_leu_235_za_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_uranium_leu_235_za_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:depleted_fuel_uranium_leu_235_za", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_xenorium_xen_298_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_xenorium_xen_298_bucket.json index aa9b003fe..35ce299d5 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_xenorium_xen_298_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/depleted_fuel_xenorium_xen_298_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:depleted_fuel_xenorium_xen_298", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/deuterium_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/deuterium_bucket.json index 6bdd6dd77..13e146ab1 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/deuterium_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/deuterium_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": true, "fluid": "nuclearcraft:deuterium", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/diborane_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/diborane_bucket.json index 036c57486..d1746fb66 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/diborane_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/diborane_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": true, "fluid": "nuclearcraft:diborane", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/dummy_turbine_blade.json b/src/generated/resources/assets/nuclearcraft/models/item/dummy_turbine_blade.json new file mode 100644 index 000000000..4513bb40b --- /dev/null +++ b/src/generated/resources/assets/nuclearcraft/models/item/dummy_turbine_blade.json @@ -0,0 +1,3 @@ +{ + "parent": "nuclearcraft:block/multiblock/dummy_turbine_blade" +} \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/electrum_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/electrum_bucket.json index d44ccc004..eea55089c 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/electrum_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/electrum_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:electrum", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/emergency_coolant_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/emergency_coolant_bucket.json index 5f48543e1..e4a50c141 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/emergency_coolant_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/emergency_coolant_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:emergency_coolant", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/emergency_coolant_heated_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/emergency_coolant_heated_bucket.json index 59b8ba679..450d6ebb6 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/emergency_coolant_heated_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/emergency_coolant_heated_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:emergency_coolant_heated", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/enderium_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/enderium_bucket.json index 9f162a952..ece96bdf2 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/enderium_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/enderium_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:enderium", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/ethanol_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/ethanol_bucket.json index d49bc653c..f237bf145 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/ethanol_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/ethanol_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:ethanol", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/ethene_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/ethene_bucket.json index 1cb47e2a1..4d015e21e 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/ethene_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/ethene_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": true, "fluid": "nuclearcraft:ethene", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/europium_155_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/europium_155_bucket.json index a0a073d76..8c4e02186 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/europium_155_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/europium_155_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:europium_155", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/exhaust_steam_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/exhaust_steam_bucket.json index f76017255..5986da9a7 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/exhaust_steam_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/exhaust_steam_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": true, "fluid": "nuclearcraft:exhaust_steam", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/extreme_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/extreme_bucket.json index 0d14cbc98..9e7c1e888 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/extreme_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/extreme_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:extreme", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/ferroboron_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/ferroboron_bucket.json index 19ba5813e..9ae54d5bf 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/ferroboron_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/ferroboron_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:ferroboron", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/fissile_fuel_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/fissile_fuel_bucket.json index b9815248f..d6a39c649 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/fissile_fuel_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/fissile_fuel_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:fissile_fuel", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/fluorine_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/fluorine_bucket.json index c43c2ead3..3d2f3d528 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/fluorine_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/fluorine_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": true, "fluid": "nuclearcraft:fluorine", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/fluorite_water_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/fluorite_water_bucket.json index 9173bce49..8112bf9d3 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/fluorite_water_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/fluorite_water_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:fluorite_water", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/fluoromethane_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/fluoromethane_bucket.json index 649b027eb..b8cb43299 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/fluoromethane_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/fluoromethane_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": true, "fluid": "nuclearcraft:fluoromethane", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/fuel_americium_hea_242_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/fuel_americium_hea_242_bucket.json index 0af4ba670..ce8df7938 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/fuel_americium_hea_242_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/fuel_americium_hea_242_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:fuel_americium_hea_242", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/fuel_americium_hea_242_ni_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/fuel_americium_hea_242_ni_bucket.json index dd97da15e..bfee92a2b 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/fuel_americium_hea_242_ni_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/fuel_americium_hea_242_ni_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:fuel_americium_hea_242_ni", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/fuel_americium_hea_242_ox_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/fuel_americium_hea_242_ox_bucket.json index 631c4c9b1..6f1d068f1 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/fuel_americium_hea_242_ox_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/fuel_americium_hea_242_ox_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:fuel_americium_hea_242_ox", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/fuel_americium_hea_242_za_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/fuel_americium_hea_242_za_bucket.json index 23d15d5b3..e855e306d 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/fuel_americium_hea_242_za_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/fuel_americium_hea_242_za_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:fuel_americium_hea_242_za", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/fuel_americium_lea_242_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/fuel_americium_lea_242_bucket.json index b737ec7af..127c68c5f 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/fuel_americium_lea_242_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/fuel_americium_lea_242_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:fuel_americium_lea_242", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/fuel_americium_lea_242_ni_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/fuel_americium_lea_242_ni_bucket.json index 36452657b..a73e5ae30 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/fuel_americium_lea_242_ni_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/fuel_americium_lea_242_ni_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:fuel_americium_lea_242_ni", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/fuel_americium_lea_242_ox_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/fuel_americium_lea_242_ox_bucket.json index 6d2e5777c..60e767d71 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/fuel_americium_lea_242_ox_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/fuel_americium_lea_242_ox_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:fuel_americium_lea_242_ox", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/fuel_americium_lea_242_za_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/fuel_americium_lea_242_za_bucket.json index 8e4dc8c7a..910d7e701 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/fuel_americium_lea_242_za_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/fuel_americium_lea_242_za_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:fuel_americium_lea_242_za", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/fuel_berkelium_heb_248_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/fuel_berkelium_heb_248_bucket.json index 20557b0c3..d7ea01b1f 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/fuel_berkelium_heb_248_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/fuel_berkelium_heb_248_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:fuel_berkelium_heb_248", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/fuel_berkelium_heb_248_ni_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/fuel_berkelium_heb_248_ni_bucket.json index 561dd9a57..ffe46bc8a 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/fuel_berkelium_heb_248_ni_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/fuel_berkelium_heb_248_ni_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:fuel_berkelium_heb_248_ni", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/fuel_berkelium_heb_248_ox_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/fuel_berkelium_heb_248_ox_bucket.json index 665f7f9df..72a2d5480 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/fuel_berkelium_heb_248_ox_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/fuel_berkelium_heb_248_ox_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:fuel_berkelium_heb_248_ox", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/fuel_berkelium_heb_248_za_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/fuel_berkelium_heb_248_za_bucket.json index 20657f006..f42ffb7da 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/fuel_berkelium_heb_248_za_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/fuel_berkelium_heb_248_za_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:fuel_berkelium_heb_248_za", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/fuel_berkelium_leb_248_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/fuel_berkelium_leb_248_bucket.json index 073c56f51..a09cc3369 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/fuel_berkelium_leb_248_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/fuel_berkelium_leb_248_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:fuel_berkelium_leb_248", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/fuel_berkelium_leb_248_ni_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/fuel_berkelium_leb_248_ni_bucket.json index 4adf19209..7b06b9224 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/fuel_berkelium_leb_248_ni_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/fuel_berkelium_leb_248_ni_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:fuel_berkelium_leb_248_ni", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/fuel_berkelium_leb_248_ox_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/fuel_berkelium_leb_248_ox_bucket.json index b58c3c67c..36a5a4ab6 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/fuel_berkelium_leb_248_ox_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/fuel_berkelium_leb_248_ox_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:fuel_berkelium_leb_248_ox", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/fuel_berkelium_leb_248_za_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/fuel_berkelium_leb_248_za_bucket.json index 1d12904fd..59ce4799d 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/fuel_berkelium_leb_248_za_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/fuel_berkelium_leb_248_za_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:fuel_berkelium_leb_248_za", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/fuel_californium_hecf_249_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/fuel_californium_hecf_249_bucket.json index 3017d4a58..8d33db1ec 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/fuel_californium_hecf_249_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/fuel_californium_hecf_249_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:fuel_californium_hecf_249", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/fuel_californium_hecf_249_ni_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/fuel_californium_hecf_249_ni_bucket.json index 3429047ab..64237fbb1 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/fuel_californium_hecf_249_ni_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/fuel_californium_hecf_249_ni_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:fuel_californium_hecf_249_ni", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/fuel_californium_hecf_249_ox_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/fuel_californium_hecf_249_ox_bucket.json index f9f2c6916..9ec47cc7b 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/fuel_californium_hecf_249_ox_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/fuel_californium_hecf_249_ox_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:fuel_californium_hecf_249_ox", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/fuel_californium_hecf_249_za_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/fuel_californium_hecf_249_za_bucket.json index 0acfbcae0..0ad70f7bc 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/fuel_californium_hecf_249_za_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/fuel_californium_hecf_249_za_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:fuel_californium_hecf_249_za", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/fuel_californium_hecf_251_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/fuel_californium_hecf_251_bucket.json index 0795e00fa..5eca0992c 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/fuel_californium_hecf_251_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/fuel_californium_hecf_251_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:fuel_californium_hecf_251", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/fuel_californium_hecf_251_ni_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/fuel_californium_hecf_251_ni_bucket.json index cb7952bf8..5d1c8f3ce 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/fuel_californium_hecf_251_ni_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/fuel_californium_hecf_251_ni_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:fuel_californium_hecf_251_ni", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/fuel_californium_hecf_251_ox_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/fuel_californium_hecf_251_ox_bucket.json index 2690e26ab..3f811da51 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/fuel_californium_hecf_251_ox_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/fuel_californium_hecf_251_ox_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:fuel_californium_hecf_251_ox", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/fuel_californium_hecf_251_za_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/fuel_californium_hecf_251_za_bucket.json index ddb5018c3..a998021a1 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/fuel_californium_hecf_251_za_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/fuel_californium_hecf_251_za_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:fuel_californium_hecf_251_za", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/fuel_californium_lecf_249_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/fuel_californium_lecf_249_bucket.json index 1df14a57e..c8133ac1b 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/fuel_californium_lecf_249_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/fuel_californium_lecf_249_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:fuel_californium_lecf_249", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/fuel_californium_lecf_249_ni_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/fuel_californium_lecf_249_ni_bucket.json index 6d6f13f62..cbff9e87b 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/fuel_californium_lecf_249_ni_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/fuel_californium_lecf_249_ni_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:fuel_californium_lecf_249_ni", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/fuel_californium_lecf_249_ox_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/fuel_californium_lecf_249_ox_bucket.json index 186fff359..f09e3aafe 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/fuel_californium_lecf_249_ox_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/fuel_californium_lecf_249_ox_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:fuel_californium_lecf_249_ox", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/fuel_californium_lecf_249_za_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/fuel_californium_lecf_249_za_bucket.json index 1852edd50..cdecdd6ab 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/fuel_californium_lecf_249_za_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/fuel_californium_lecf_249_za_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:fuel_californium_lecf_249_za", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/fuel_californium_lecf_251_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/fuel_californium_lecf_251_bucket.json index 07f485d24..88afb7c1a 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/fuel_californium_lecf_251_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/fuel_californium_lecf_251_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:fuel_californium_lecf_251", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/fuel_californium_lecf_251_ni_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/fuel_californium_lecf_251_ni_bucket.json index 640f9965d..c29b36205 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/fuel_californium_lecf_251_ni_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/fuel_californium_lecf_251_ni_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:fuel_californium_lecf_251_ni", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/fuel_californium_lecf_251_ox_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/fuel_californium_lecf_251_ox_bucket.json index c8a843d8e..7adaa0f0e 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/fuel_californium_lecf_251_ox_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/fuel_californium_lecf_251_ox_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:fuel_californium_lecf_251_ox", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/fuel_californium_lecf_251_za_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/fuel_californium_lecf_251_za_bucket.json index 3907cbd68..d471fc3f1 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/fuel_californium_lecf_251_za_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/fuel_californium_lecf_251_za_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:fuel_californium_lecf_251_za", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/fuel_curium_hecm_243_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/fuel_curium_hecm_243_bucket.json index 4135ed791..63002894e 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/fuel_curium_hecm_243_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/fuel_curium_hecm_243_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:fuel_curium_hecm_243", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/fuel_curium_hecm_243_ni_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/fuel_curium_hecm_243_ni_bucket.json index 6bf2a924e..b00e3bd11 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/fuel_curium_hecm_243_ni_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/fuel_curium_hecm_243_ni_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:fuel_curium_hecm_243_ni", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/fuel_curium_hecm_243_ox_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/fuel_curium_hecm_243_ox_bucket.json index 9d7022a87..f02a047e4 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/fuel_curium_hecm_243_ox_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/fuel_curium_hecm_243_ox_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:fuel_curium_hecm_243_ox", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/fuel_curium_hecm_243_za_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/fuel_curium_hecm_243_za_bucket.json index 884801a3d..eb3847f79 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/fuel_curium_hecm_243_za_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/fuel_curium_hecm_243_za_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:fuel_curium_hecm_243_za", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/fuel_curium_hecm_245_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/fuel_curium_hecm_245_bucket.json index b6ddd16c1..826aac6ef 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/fuel_curium_hecm_245_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/fuel_curium_hecm_245_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:fuel_curium_hecm_245", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/fuel_curium_hecm_245_ni_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/fuel_curium_hecm_245_ni_bucket.json index e67895093..b8367f18e 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/fuel_curium_hecm_245_ni_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/fuel_curium_hecm_245_ni_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:fuel_curium_hecm_245_ni", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/fuel_curium_hecm_245_ox_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/fuel_curium_hecm_245_ox_bucket.json index a11013679..56db610d6 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/fuel_curium_hecm_245_ox_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/fuel_curium_hecm_245_ox_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:fuel_curium_hecm_245_ox", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/fuel_curium_hecm_245_za_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/fuel_curium_hecm_245_za_bucket.json index 1b37b6826..133de4e32 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/fuel_curium_hecm_245_za_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/fuel_curium_hecm_245_za_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:fuel_curium_hecm_245_za", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/fuel_curium_hecm_247_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/fuel_curium_hecm_247_bucket.json index ec4010b72..e396a7baf 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/fuel_curium_hecm_247_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/fuel_curium_hecm_247_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:fuel_curium_hecm_247", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/fuel_curium_hecm_247_ni_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/fuel_curium_hecm_247_ni_bucket.json index 60e6234b9..e29200ee1 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/fuel_curium_hecm_247_ni_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/fuel_curium_hecm_247_ni_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:fuel_curium_hecm_247_ni", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/fuel_curium_hecm_247_ox_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/fuel_curium_hecm_247_ox_bucket.json index 18733c944..1e74051ea 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/fuel_curium_hecm_247_ox_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/fuel_curium_hecm_247_ox_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:fuel_curium_hecm_247_ox", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/fuel_curium_hecm_247_za_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/fuel_curium_hecm_247_za_bucket.json index 10f52cd58..b129be4b9 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/fuel_curium_hecm_247_za_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/fuel_curium_hecm_247_za_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:fuel_curium_hecm_247_za", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/fuel_curium_lecm_243_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/fuel_curium_lecm_243_bucket.json index bd847a49f..9c4f1fd9d 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/fuel_curium_lecm_243_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/fuel_curium_lecm_243_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:fuel_curium_lecm_243", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/fuel_curium_lecm_243_ni_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/fuel_curium_lecm_243_ni_bucket.json index 0d47a3d02..e7deadb89 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/fuel_curium_lecm_243_ni_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/fuel_curium_lecm_243_ni_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:fuel_curium_lecm_243_ni", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/fuel_curium_lecm_243_ox_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/fuel_curium_lecm_243_ox_bucket.json index 782575280..44ef798f7 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/fuel_curium_lecm_243_ox_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/fuel_curium_lecm_243_ox_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:fuel_curium_lecm_243_ox", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/fuel_curium_lecm_243_za_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/fuel_curium_lecm_243_za_bucket.json index d0711659a..05567f91d 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/fuel_curium_lecm_243_za_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/fuel_curium_lecm_243_za_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:fuel_curium_lecm_243_za", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/fuel_curium_lecm_245_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/fuel_curium_lecm_245_bucket.json index 3488732e8..166f8bb86 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/fuel_curium_lecm_245_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/fuel_curium_lecm_245_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:fuel_curium_lecm_245", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/fuel_curium_lecm_245_ni_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/fuel_curium_lecm_245_ni_bucket.json index 509bcf9cd..9a3eff806 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/fuel_curium_lecm_245_ni_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/fuel_curium_lecm_245_ni_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:fuel_curium_lecm_245_ni", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/fuel_curium_lecm_245_ox_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/fuel_curium_lecm_245_ox_bucket.json index f7a1fd50a..fd4fef5a6 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/fuel_curium_lecm_245_ox_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/fuel_curium_lecm_245_ox_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:fuel_curium_lecm_245_ox", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/fuel_curium_lecm_245_za_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/fuel_curium_lecm_245_za_bucket.json index 83d6993bd..faf65bca5 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/fuel_curium_lecm_245_za_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/fuel_curium_lecm_245_za_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:fuel_curium_lecm_245_za", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/fuel_curium_lecm_247_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/fuel_curium_lecm_247_bucket.json index 0e5f4e55a..8fc17209b 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/fuel_curium_lecm_247_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/fuel_curium_lecm_247_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:fuel_curium_lecm_247", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/fuel_curium_lecm_247_ni_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/fuel_curium_lecm_247_ni_bucket.json index e8c408f18..93d37ab39 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/fuel_curium_lecm_247_ni_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/fuel_curium_lecm_247_ni_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:fuel_curium_lecm_247_ni", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/fuel_curium_lecm_247_ox_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/fuel_curium_lecm_247_ox_bucket.json index bf1db9a39..219bcaf60 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/fuel_curium_lecm_247_ox_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/fuel_curium_lecm_247_ox_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:fuel_curium_lecm_247_ox", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/fuel_curium_lecm_247_za_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/fuel_curium_lecm_247_za_bucket.json index bc9dcc2fe..522c7c68c 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/fuel_curium_lecm_247_za_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/fuel_curium_lecm_247_za_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:fuel_curium_lecm_247_za", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/fuel_mixed_mix_239_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/fuel_mixed_mix_239_bucket.json index e8c26c36a..91f16b846 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/fuel_mixed_mix_239_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/fuel_mixed_mix_239_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:fuel_mixed_mix_239", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/fuel_mixed_mix_239_ni_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/fuel_mixed_mix_239_ni_bucket.json index 8d74b04f7..e658096de 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/fuel_mixed_mix_239_ni_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/fuel_mixed_mix_239_ni_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:fuel_mixed_mix_239_ni", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/fuel_mixed_mix_239_ox_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/fuel_mixed_mix_239_ox_bucket.json index 4037602ef..c548fd6d7 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/fuel_mixed_mix_239_ox_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/fuel_mixed_mix_239_ox_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:fuel_mixed_mix_239_ox", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/fuel_mixed_mix_239_za_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/fuel_mixed_mix_239_za_bucket.json index 468f56cae..c3cfcab60 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/fuel_mixed_mix_239_za_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/fuel_mixed_mix_239_za_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:fuel_mixed_mix_239_za", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/fuel_mixed_mix_241_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/fuel_mixed_mix_241_bucket.json index 92e9f2359..b3bb8de19 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/fuel_mixed_mix_241_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/fuel_mixed_mix_241_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:fuel_mixed_mix_241", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/fuel_mixed_mix_241_ni_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/fuel_mixed_mix_241_ni_bucket.json index 6cba79559..f82dfc79d 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/fuel_mixed_mix_241_ni_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/fuel_mixed_mix_241_ni_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:fuel_mixed_mix_241_ni", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/fuel_mixed_mix_241_ox_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/fuel_mixed_mix_241_ox_bucket.json index 83b3e265c..d8ff4d6fd 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/fuel_mixed_mix_241_ox_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/fuel_mixed_mix_241_ox_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:fuel_mixed_mix_241_ox", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/fuel_mixed_mix_241_za_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/fuel_mixed_mix_241_za_bucket.json index 425628275..9d290e67d 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/fuel_mixed_mix_241_za_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/fuel_mixed_mix_241_za_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:fuel_mixed_mix_241_za", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/fuel_neptunium_hen_236_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/fuel_neptunium_hen_236_bucket.json index 2c9322525..e2b3d1cae 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/fuel_neptunium_hen_236_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/fuel_neptunium_hen_236_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:fuel_neptunium_hen_236", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/fuel_neptunium_hen_236_ni_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/fuel_neptunium_hen_236_ni_bucket.json index a6de168cf..3d4538c3c 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/fuel_neptunium_hen_236_ni_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/fuel_neptunium_hen_236_ni_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:fuel_neptunium_hen_236_ni", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/fuel_neptunium_hen_236_ox_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/fuel_neptunium_hen_236_ox_bucket.json index 2912a33cd..507d92d2a 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/fuel_neptunium_hen_236_ox_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/fuel_neptunium_hen_236_ox_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:fuel_neptunium_hen_236_ox", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/fuel_neptunium_hen_236_za_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/fuel_neptunium_hen_236_za_bucket.json index cfae77981..e41592595 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/fuel_neptunium_hen_236_za_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/fuel_neptunium_hen_236_za_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:fuel_neptunium_hen_236_za", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/fuel_neptunium_len_236_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/fuel_neptunium_len_236_bucket.json index 9f9b1365e..e5ed50c6a 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/fuel_neptunium_len_236_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/fuel_neptunium_len_236_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:fuel_neptunium_len_236", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/fuel_neptunium_len_236_ni_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/fuel_neptunium_len_236_ni_bucket.json index ffc2e2d3c..af4b9d210 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/fuel_neptunium_len_236_ni_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/fuel_neptunium_len_236_ni_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:fuel_neptunium_len_236_ni", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/fuel_neptunium_len_236_ox_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/fuel_neptunium_len_236_ox_bucket.json index 717c8fd23..f9a8f4a46 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/fuel_neptunium_len_236_ox_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/fuel_neptunium_len_236_ox_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:fuel_neptunium_len_236_ox", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/fuel_neptunium_len_236_za_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/fuel_neptunium_len_236_za_bucket.json index 100fe96f0..652a930f1 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/fuel_neptunium_len_236_za_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/fuel_neptunium_len_236_za_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:fuel_neptunium_len_236_za", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/fuel_plutonium_hep_239_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/fuel_plutonium_hep_239_bucket.json index a7fb12dc7..3aedef430 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/fuel_plutonium_hep_239_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/fuel_plutonium_hep_239_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:fuel_plutonium_hep_239", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/fuel_plutonium_hep_239_ni_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/fuel_plutonium_hep_239_ni_bucket.json index 879de31de..4fcbedf7c 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/fuel_plutonium_hep_239_ni_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/fuel_plutonium_hep_239_ni_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:fuel_plutonium_hep_239_ni", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/fuel_plutonium_hep_239_ox_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/fuel_plutonium_hep_239_ox_bucket.json index 71b4447b8..36a12b95e 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/fuel_plutonium_hep_239_ox_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/fuel_plutonium_hep_239_ox_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:fuel_plutonium_hep_239_ox", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/fuel_plutonium_hep_239_za_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/fuel_plutonium_hep_239_za_bucket.json index 5a399f7c6..573eb58c1 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/fuel_plutonium_hep_239_za_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/fuel_plutonium_hep_239_za_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:fuel_plutonium_hep_239_za", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/fuel_plutonium_hep_241_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/fuel_plutonium_hep_241_bucket.json index d69a75045..7b5d5631a 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/fuel_plutonium_hep_241_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/fuel_plutonium_hep_241_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:fuel_plutonium_hep_241", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/fuel_plutonium_hep_241_ni_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/fuel_plutonium_hep_241_ni_bucket.json index 4e7c92f8a..e4647c732 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/fuel_plutonium_hep_241_ni_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/fuel_plutonium_hep_241_ni_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:fuel_plutonium_hep_241_ni", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/fuel_plutonium_hep_241_ox_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/fuel_plutonium_hep_241_ox_bucket.json index 66e8819a1..a4c2a2528 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/fuel_plutonium_hep_241_ox_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/fuel_plutonium_hep_241_ox_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:fuel_plutonium_hep_241_ox", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/fuel_plutonium_hep_241_za_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/fuel_plutonium_hep_241_za_bucket.json index 5491626ff..7540c3393 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/fuel_plutonium_hep_241_za_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/fuel_plutonium_hep_241_za_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:fuel_plutonium_hep_241_za", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/fuel_plutonium_lep_239_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/fuel_plutonium_lep_239_bucket.json index e69c2ee05..5d6606aef 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/fuel_plutonium_lep_239_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/fuel_plutonium_lep_239_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:fuel_plutonium_lep_239", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/fuel_plutonium_lep_239_ni_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/fuel_plutonium_lep_239_ni_bucket.json index 5a3ce2f02..e27e2cb2e 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/fuel_plutonium_lep_239_ni_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/fuel_plutonium_lep_239_ni_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:fuel_plutonium_lep_239_ni", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/fuel_plutonium_lep_239_ox_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/fuel_plutonium_lep_239_ox_bucket.json index 848fa8bdd..0626d03e4 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/fuel_plutonium_lep_239_ox_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/fuel_plutonium_lep_239_ox_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:fuel_plutonium_lep_239_ox", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/fuel_plutonium_lep_239_za_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/fuel_plutonium_lep_239_za_bucket.json index 7abef9aca..100a4f1e1 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/fuel_plutonium_lep_239_za_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/fuel_plutonium_lep_239_za_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:fuel_plutonium_lep_239_za", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/fuel_plutonium_lep_241_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/fuel_plutonium_lep_241_bucket.json index c6da61f54..157d313db 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/fuel_plutonium_lep_241_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/fuel_plutonium_lep_241_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:fuel_plutonium_lep_241", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/fuel_plutonium_lep_241_ni_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/fuel_plutonium_lep_241_ni_bucket.json index 3cb652bdd..6fcc5645c 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/fuel_plutonium_lep_241_ni_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/fuel_plutonium_lep_241_ni_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:fuel_plutonium_lep_241_ni", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/fuel_plutonium_lep_241_ox_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/fuel_plutonium_lep_241_ox_bucket.json index 1d7cbac63..ecb4d3057 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/fuel_plutonium_lep_241_ox_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/fuel_plutonium_lep_241_ox_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:fuel_plutonium_lep_241_ox", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/fuel_plutonium_lep_241_za_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/fuel_plutonium_lep_241_za_bucket.json index 74549e928..13083e690 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/fuel_plutonium_lep_241_za_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/fuel_plutonium_lep_241_za_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:fuel_plutonium_lep_241_za", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/fuel_thorium_tbu_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/fuel_thorium_tbu_bucket.json index bab4ba58a..66df0c630 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/fuel_thorium_tbu_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/fuel_thorium_tbu_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:fuel_thorium_tbu", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/fuel_thorium_tbu_ni_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/fuel_thorium_tbu_ni_bucket.json index ca5ff546b..1848b4448 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/fuel_thorium_tbu_ni_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/fuel_thorium_tbu_ni_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:fuel_thorium_tbu_ni", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/fuel_thorium_tbu_ox_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/fuel_thorium_tbu_ox_bucket.json index 33920a09d..7ddb58bb1 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/fuel_thorium_tbu_ox_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/fuel_thorium_tbu_ox_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:fuel_thorium_tbu_ox", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/fuel_thorium_tbu_za_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/fuel_thorium_tbu_za_bucket.json index 3e1caa882..a01db6af8 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/fuel_thorium_tbu_za_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/fuel_thorium_tbu_za_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:fuel_thorium_tbu_za", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/fuel_uranium_heu_233_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/fuel_uranium_heu_233_bucket.json index 5c43f7379..824477b9c 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/fuel_uranium_heu_233_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/fuel_uranium_heu_233_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:fuel_uranium_heu_233", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/fuel_uranium_heu_233_ni_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/fuel_uranium_heu_233_ni_bucket.json index f63941c20..895dc07a0 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/fuel_uranium_heu_233_ni_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/fuel_uranium_heu_233_ni_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:fuel_uranium_heu_233_ni", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/fuel_uranium_heu_233_ox_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/fuel_uranium_heu_233_ox_bucket.json index cbc8fcb95..113f9905b 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/fuel_uranium_heu_233_ox_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/fuel_uranium_heu_233_ox_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:fuel_uranium_heu_233_ox", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/fuel_uranium_heu_233_za_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/fuel_uranium_heu_233_za_bucket.json index 075bdf978..9c51f11df 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/fuel_uranium_heu_233_za_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/fuel_uranium_heu_233_za_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:fuel_uranium_heu_233_za", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/fuel_uranium_heu_235_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/fuel_uranium_heu_235_bucket.json index 5ac13221f..1a68b3483 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/fuel_uranium_heu_235_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/fuel_uranium_heu_235_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:fuel_uranium_heu_235", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/fuel_uranium_heu_235_ni_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/fuel_uranium_heu_235_ni_bucket.json index 098a8a085..19abeb942 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/fuel_uranium_heu_235_ni_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/fuel_uranium_heu_235_ni_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:fuel_uranium_heu_235_ni", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/fuel_uranium_heu_235_ox_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/fuel_uranium_heu_235_ox_bucket.json index 48f15c5cb..a01c5fc0d 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/fuel_uranium_heu_235_ox_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/fuel_uranium_heu_235_ox_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:fuel_uranium_heu_235_ox", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/fuel_uranium_heu_235_za_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/fuel_uranium_heu_235_za_bucket.json index fe57c8498..af2a4e571 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/fuel_uranium_heu_235_za_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/fuel_uranium_heu_235_za_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:fuel_uranium_heu_235_za", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/fuel_uranium_leu_233_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/fuel_uranium_leu_233_bucket.json index 00c40b6b9..b60801a64 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/fuel_uranium_leu_233_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/fuel_uranium_leu_233_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:fuel_uranium_leu_233", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/fuel_uranium_leu_233_ni_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/fuel_uranium_leu_233_ni_bucket.json index f0f5bbfd7..faadca8c4 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/fuel_uranium_leu_233_ni_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/fuel_uranium_leu_233_ni_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:fuel_uranium_leu_233_ni", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/fuel_uranium_leu_233_ox_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/fuel_uranium_leu_233_ox_bucket.json index e0c0825c0..7c2394aa5 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/fuel_uranium_leu_233_ox_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/fuel_uranium_leu_233_ox_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:fuel_uranium_leu_233_ox", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/fuel_uranium_leu_233_za_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/fuel_uranium_leu_233_za_bucket.json index 371b22978..5974070d6 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/fuel_uranium_leu_233_za_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/fuel_uranium_leu_233_za_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:fuel_uranium_leu_233_za", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/fuel_uranium_leu_235_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/fuel_uranium_leu_235_bucket.json index 0ebd7b81b..a4f2ab678 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/fuel_uranium_leu_235_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/fuel_uranium_leu_235_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:fuel_uranium_leu_235", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/fuel_uranium_leu_235_ni_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/fuel_uranium_leu_235_ni_bucket.json index ef72d2256..bd852af5d 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/fuel_uranium_leu_235_ni_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/fuel_uranium_leu_235_ni_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:fuel_uranium_leu_235_ni", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/fuel_uranium_leu_235_ox_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/fuel_uranium_leu_235_ox_bucket.json index 3f42c5a4b..c2927dc7f 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/fuel_uranium_leu_235_ox_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/fuel_uranium_leu_235_ox_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:fuel_uranium_leu_235_ox", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/fuel_uranium_leu_235_za_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/fuel_uranium_leu_235_za_bucket.json index c078d8afa..3f8f8896c 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/fuel_uranium_leu_235_za_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/fuel_uranium_leu_235_za_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:fuel_uranium_leu_235_za", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/fuel_xenorium_xen_298_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/fuel_xenorium_xen_298_bucket.json index 90cf240cf..24cc693db 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/fuel_xenorium_xen_298_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/fuel_xenorium_xen_298_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:fuel_xenorium_xen_298", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/gelatin_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/gelatin_bucket.json index 05fb9585a..896ff796d 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/gelatin_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/gelatin_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:gelatin", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/glowstone_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/glowstone_bucket.json index edd3eefd7..0f7da0d5d 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/glowstone_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/glowstone_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:glowstone", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/gold_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/gold_bucket.json index b7e4d2d44..4fbc9ec44 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/gold_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/gold_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:gold", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/gold_clean_slurry_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/gold_clean_slurry_bucket.json index 487525919..403627880 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/gold_clean_slurry_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/gold_clean_slurry_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:gold_clean_slurry", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/gold_slurry_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/gold_slurry_bucket.json index 9cbbd8baa..ebc9a46db 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/gold_slurry_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/gold_slurry_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:gold_slurry", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/hard_carbon_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/hard_carbon_bucket.json index 0b26929bd..200e56d27 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/hard_carbon_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/hard_carbon_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:hard_carbon", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/heavy_water_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/heavy_water_bucket.json index 53c67d49b..ed96a991b 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/heavy_water_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/heavy_water_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:heavy_water", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/helium_3_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/helium_3_bucket.json index 6d6960c50..a9c00612e 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/helium_3_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/helium_3_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": true, "fluid": "nuclearcraft:helium_3", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/helium_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/helium_bucket.json index 8820c7872..c205c4eca 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/helium_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/helium_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": true, "fluid": "nuclearcraft:helium", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/high_pressure_steam_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/high_pressure_steam_bucket.json index 9a0cc6fb2..c2a196f24 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/high_pressure_steam_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/high_pressure_steam_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": true, "fluid": "nuclearcraft:high_pressure_steam", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/hsla_steel_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/hsla_steel_bucket.json index c280d28f8..cc0322e70 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/hsla_steel_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/hsla_steel_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:hsla_steel", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/hydrated_gelatin_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/hydrated_gelatin_bucket.json index 2b7c8ae6f..1a54454a4 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/hydrated_gelatin_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/hydrated_gelatin_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:hydrated_gelatin", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/hydrochloric_acid_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/hydrochloric_acid_bucket.json index 37a92d61d..60bcc4ca8 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/hydrochloric_acid_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/hydrochloric_acid_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:hydrochloric_acid", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/hydrofluoric_acid_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/hydrofluoric_acid_bucket.json index 77b496ba3..56e432aea 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/hydrofluoric_acid_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/hydrofluoric_acid_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:hydrofluoric_acid", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/hydrogen_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/hydrogen_bucket.json index 409ac019d..4771c3456 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/hydrogen_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/hydrogen_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": true, "fluid": "nuclearcraft:hydrogen", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/hydrogen_chloride_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/hydrogen_chloride_bucket.json index 77345e9e0..8717acb97 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/hydrogen_chloride_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/hydrogen_chloride_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:hydrogen_chloride", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/ice_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/ice_bucket.json index dd3515dec..5c22a5535 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/ice_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/ice_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:ice", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/iridium_192_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/iridium_192_bucket.json index 8f37313a8..6bcf58838 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/iridium_192_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/iridium_192_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:iridium_192", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/iron_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/iron_bucket.json index 7a80dc1db..962523f8d 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/iron_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/iron_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:iron", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/iron_clean_slurry_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/iron_clean_slurry_bucket.json index 1005f74bc..101d27b5c 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/iron_clean_slurry_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/iron_clean_slurry_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:iron_clean_slurry", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/iron_slurry_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/iron_slurry_bucket.json index 1b24a018c..e18d70842 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/iron_slurry_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/iron_slurry_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:iron_slurry", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/irradiated_borax_solution_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/irradiated_borax_solution_bucket.json index f40a9670c..d1f0ec500 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/irradiated_borax_solution_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/irradiated_borax_solution_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:irradiated_borax_solution", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/irradiated_boron_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/irradiated_boron_bucket.json index c39b3eade..a1d22d391 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/irradiated_boron_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/irradiated_boron_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:irradiated_boron", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/irradiated_lithium_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/irradiated_lithium_bucket.json index a9afbfb29..3598e8269 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/irradiated_lithium_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/irradiated_lithium_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:irradiated_lithium", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/irradiated_sodium_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/irradiated_sodium_bucket.json index 9955c6906..9665a0ef9 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/irradiated_sodium_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/irradiated_sodium_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:irradiated_sodium", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/lapis_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/lapis_bucket.json index 66db97911..13265aee4 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/lapis_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/lapis_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:lapis", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/lead_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/lead_bucket.json index 27161e0de..2390518cc 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/lead_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/lead_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:lead", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/lead_clean_slurry_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/lead_clean_slurry_bucket.json index f6a9cb222..e97188acf 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/lead_clean_slurry_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/lead_clean_slurry_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:lead_clean_slurry", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/lead_platinum_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/lead_platinum_bucket.json index 3bdaec7c8..d69c1616a 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/lead_platinum_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/lead_platinum_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:lead_platinum", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/lead_slurry_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/lead_slurry_bucket.json index dc8b7b35f..86365682c 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/lead_slurry_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/lead_slurry_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:lead_slurry", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/liquid_helium_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/liquid_helium_bucket.json index bf17ef61b..872bf0820 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/liquid_helium_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/liquid_helium_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:liquid_helium", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/liquid_hydrogen_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/liquid_hydrogen_bucket.json index 6a1ecc945..432e05fa7 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/liquid_hydrogen_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/liquid_hydrogen_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:liquid_hydrogen", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/liquid_nitrogen_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/liquid_nitrogen_bucket.json index 7680cd1bc..14ce54644 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/liquid_nitrogen_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/liquid_nitrogen_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:liquid_nitrogen", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/liquid_oxygen_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/liquid_oxygen_bucket.json index c96aa7475..3cc43bd19 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/liquid_oxygen_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/liquid_oxygen_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:liquid_oxygen", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/lithium_6_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/lithium_6_bucket.json index 95e2f6112..4137c3ece 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/lithium_6_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/lithium_6_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:lithium_6", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/lithium_6_ni_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/lithium_6_ni_bucket.json index 0874aa920..c0886cb11 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/lithium_6_ni_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/lithium_6_ni_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:lithium_6_ni", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/lithium_6_ox_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/lithium_6_ox_bucket.json index 8fa773bb9..4078d12bd 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/lithium_6_ox_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/lithium_6_ox_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:lithium_6_ox", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/lithium_6_za_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/lithium_6_za_bucket.json index 61834197a..ddd88c1ea 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/lithium_6_za_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/lithium_6_za_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:lithium_6_za", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/lithium_7_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/lithium_7_bucket.json index 3a63a22ae..9075b5db4 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/lithium_7_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/lithium_7_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:lithium_7", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/lithium_7_ni_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/lithium_7_ni_bucket.json index 7de740cfc..19aae0405 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/lithium_7_ni_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/lithium_7_ni_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:lithium_7_ni", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/lithium_7_ox_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/lithium_7_ox_bucket.json index 7d86575c1..266d145da 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/lithium_7_ox_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/lithium_7_ox_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:lithium_7_ox", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/lithium_7_za_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/lithium_7_za_bucket.json index 82b51a494..77e66ef96 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/lithium_7_za_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/lithium_7_za_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:lithium_7_za", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/lithium_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/lithium_bucket.json index c22d73ac7..c2192bbdd 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/lithium_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/lithium_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:lithium", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/lithium_clean_slurry_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/lithium_clean_slurry_bucket.json index 3d9443667..40d25155d 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/lithium_clean_slurry_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/lithium_clean_slurry_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:lithium_clean_slurry", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/lithium_fluoride_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/lithium_fluoride_bucket.json index 5347b6769..28ae948e1 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/lithium_fluoride_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/lithium_fluoride_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:lithium_fluoride", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/lithium_manganese_dioxide_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/lithium_manganese_dioxide_bucket.json index 43e389687..9af548128 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/lithium_manganese_dioxide_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/lithium_manganese_dioxide_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:lithium_manganese_dioxide", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/lithium_slurry_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/lithium_slurry_bucket.json index 2a4a5d301..c0679e0a7 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/lithium_slurry_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/lithium_slurry_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:lithium_slurry", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/low_pressure_steam_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/low_pressure_steam_bucket.json index 61ce8186d..68de2c713 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/low_pressure_steam_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/low_pressure_steam_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": true, "fluid": "nuclearcraft:low_pressure_steam", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/low_quality_steam_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/low_quality_steam_bucket.json index 996b41d8c..d66efc944 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/low_quality_steam_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/low_quality_steam_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": true, "fluid": "nuclearcraft:low_quality_steam", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/magnesium_24_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/magnesium_24_bucket.json index a80ebbc98..abbc0aa80 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/magnesium_24_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/magnesium_24_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:magnesium_24", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/magnesium_26_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/magnesium_26_bucket.json index be90f05cf..43fbd0971 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/magnesium_26_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/magnesium_26_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:magnesium_26", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/magnesium_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/magnesium_bucket.json index 81c610cf3..3ca96a61b 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/magnesium_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/magnesium_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:magnesium", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/magnesium_clean_slurry_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/magnesium_clean_slurry_bucket.json index 4591eda1e..8fe70169a 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/magnesium_clean_slurry_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/magnesium_clean_slurry_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:magnesium_clean_slurry", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/magnesium_diboride_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/magnesium_diboride_bucket.json index 492e1479c..c5948091f 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/magnesium_diboride_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/magnesium_diboride_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:magnesium_diboride", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/magnesium_slurry_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/magnesium_slurry_bucket.json index a3d3585c4..f924edfd9 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/magnesium_slurry_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/magnesium_slurry_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:magnesium_slurry", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/manganese_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/manganese_bucket.json index b89691bfb..272fca5bb 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/manganese_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/manganese_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:manganese", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/manganese_dioxide_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/manganese_dioxide_bucket.json index f5bb2f538..abb10c8be 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/manganese_dioxide_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/manganese_dioxide_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:manganese_dioxide", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/manganese_oxide_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/manganese_oxide_bucket.json index f5dc6f0dd..57c805002 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/manganese_oxide_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/manganese_oxide_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:manganese_oxide", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/marshmallow_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/marshmallow_bucket.json index b8b96c817..b4a1ca956 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/marshmallow_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/marshmallow_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:marshmallow", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/methanol_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/methanol_bucket.json index 4cf51c5e1..a8f87a0ad 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/methanol_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/methanol_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:methanol", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/milk_chocolate_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/milk_chocolate_bucket.json index c0a12484f..52405bb89 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/milk_chocolate_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/milk_chocolate_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:milk_chocolate", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/molybdenum_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/molybdenum_bucket.json index b5e5a188f..06dd59da7 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/molybdenum_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/molybdenum_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:molybdenum", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/neon_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/neon_bucket.json index d4f0f5d8a..42dc88419 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/neon_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/neon_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": true, "fluid": "nuclearcraft:neon", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/neptunium_236_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/neptunium_236_bucket.json index 06c6fc651..17baa65d0 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/neptunium_236_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/neptunium_236_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:neptunium_236", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/neptunium_236_ni_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/neptunium_236_ni_bucket.json index 65baf9d4d..d4b976c25 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/neptunium_236_ni_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/neptunium_236_ni_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:neptunium_236_ni", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/neptunium_236_ox_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/neptunium_236_ox_bucket.json index 619eead83..f76d3c7fb 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/neptunium_236_ox_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/neptunium_236_ox_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:neptunium_236_ox", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/neptunium_236_za_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/neptunium_236_za_bucket.json index a4e4a056e..ffdd23662 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/neptunium_236_za_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/neptunium_236_za_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:neptunium_236_za", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/neptunium_237_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/neptunium_237_bucket.json index 158ac4e03..460c1e6cf 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/neptunium_237_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/neptunium_237_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:neptunium_237", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/neptunium_237_ni_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/neptunium_237_ni_bucket.json index fab845ee8..99b9314bd 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/neptunium_237_ni_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/neptunium_237_ni_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:neptunium_237_ni", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/neptunium_237_ox_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/neptunium_237_ox_bucket.json index da2e5704a..b22c00d6f 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/neptunium_237_ox_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/neptunium_237_ox_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:neptunium_237_ox", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/neptunium_237_za_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/neptunium_237_za_bucket.json index aa820bd4d..4da986d57 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/neptunium_237_za_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/neptunium_237_za_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:neptunium_237_za", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/nickel_clean_slurry_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/nickel_clean_slurry_bucket.json index e8dbae765..a0a21bf65 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/nickel_clean_slurry_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/nickel_clean_slurry_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:nickel_clean_slurry", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/nickel_slurry_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/nickel_slurry_bucket.json index 2be115f91..4ebe04968 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/nickel_slurry_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/nickel_slurry_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:nickel_slurry", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/nitric_acid_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/nitric_acid_bucket.json index d93aea1e6..779aa7f43 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/nitric_acid_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/nitric_acid_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:nitric_acid", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/nitric_oxide_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/nitric_oxide_bucket.json index d3e94cd01..beaf8ba68 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/nitric_oxide_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/nitric_oxide_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": true, "fluid": "nuclearcraft:nitric_oxide", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/nitrogen_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/nitrogen_bucket.json index 4a7317b52..936a87add 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/nitrogen_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/nitrogen_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": true, "fluid": "nuclearcraft:nitrogen", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/nitrogen_dioxide_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/nitrogen_dioxide_bucket.json index f6efa81e1..40286ad53 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/nitrogen_dioxide_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/nitrogen_dioxide_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": true, "fluid": "nuclearcraft:nitrogen_dioxide", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/nuclear_waste_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/nuclear_waste_bucket.json index 6917a2779..6aa8cb3b2 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/nuclear_waste_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/nuclear_waste_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:nuclear_waste", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/obsidian_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/obsidian_bucket.json index 98eb3008a..533c394f0 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/obsidian_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/obsidian_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:obsidian", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/oxygen_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/oxygen_bucket.json index 980de2ec6..8a1cd84b9 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/oxygen_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/oxygen_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": true, "fluid": "nuclearcraft:oxygen", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/oxygen_difluoride_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/oxygen_difluoride_bucket.json index 473e6f34a..8252e9982 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/oxygen_difluoride_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/oxygen_difluoride_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": true, "fluid": "nuclearcraft:oxygen_difluoride", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/palladium_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/palladium_bucket.json index 24c4c691c..bfbfa0bc6 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/palladium_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/palladium_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:palladium", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/pasteurized_milk_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/pasteurized_milk_bucket.json index efe8267bf..aa526371f 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/pasteurized_milk_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/pasteurized_milk_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:pasteurized_milk", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/platinum_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/platinum_bucket.json index ba77c1860..f36a04b84 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/platinum_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/platinum_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:platinum", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/platinum_clean_slurry_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/platinum_clean_slurry_bucket.json index 49da0a5f9..91d602de3 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/platinum_clean_slurry_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/platinum_clean_slurry_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:platinum_clean_slurry", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/platinum_slurry_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/platinum_slurry_bucket.json index 410b1eb16..c7698a345 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/platinum_slurry_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/platinum_slurry_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:platinum_slurry", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/plutonium_238_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/plutonium_238_bucket.json index 9e41e40a1..be178da96 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/plutonium_238_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/plutonium_238_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:plutonium_238", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/plutonium_238_ni_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/plutonium_238_ni_bucket.json index c88877321..3d06a0104 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/plutonium_238_ni_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/plutonium_238_ni_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:plutonium_238_ni", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/plutonium_238_ox_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/plutonium_238_ox_bucket.json index aab25afc1..fadd285f4 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/plutonium_238_ox_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/plutonium_238_ox_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:plutonium_238_ox", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/plutonium_238_za_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/plutonium_238_za_bucket.json index b0f3767ea..439c66865 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/plutonium_238_za_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/plutonium_238_za_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:plutonium_238_za", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/plutonium_239_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/plutonium_239_bucket.json index f1d2020a4..d04d7b5fa 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/plutonium_239_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/plutonium_239_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:plutonium_239", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/plutonium_239_ni_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/plutonium_239_ni_bucket.json index 73d648b5e..6586cfb0e 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/plutonium_239_ni_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/plutonium_239_ni_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:plutonium_239_ni", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/plutonium_239_ox_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/plutonium_239_ox_bucket.json index 16b63fd1c..a7bd95e00 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/plutonium_239_ox_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/plutonium_239_ox_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:plutonium_239_ox", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/plutonium_239_za_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/plutonium_239_za_bucket.json index 536165959..e6bb32e6a 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/plutonium_239_za_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/plutonium_239_za_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:plutonium_239_za", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/plutonium_241_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/plutonium_241_bucket.json index 7f5b4425a..ea0bc3bef 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/plutonium_241_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/plutonium_241_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:plutonium_241", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/plutonium_241_ni_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/plutonium_241_ni_bucket.json index 3d286f472..3f553b182 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/plutonium_241_ni_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/plutonium_241_ni_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:plutonium_241_ni", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/plutonium_241_ox_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/plutonium_241_ox_bucket.json index 896643f05..3a97098a9 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/plutonium_241_ox_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/plutonium_241_ox_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:plutonium_241_ox", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/plutonium_241_za_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/plutonium_241_za_bucket.json index 3fb234832..d4bc1ca0e 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/plutonium_241_za_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/plutonium_241_za_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:plutonium_241_za", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/plutonium_242_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/plutonium_242_bucket.json index 168d9273f..dc7630e03 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/plutonium_242_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/plutonium_242_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:plutonium_242", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/plutonium_242_ni_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/plutonium_242_ni_bucket.json index 9445c654c..5772186a5 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/plutonium_242_ni_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/plutonium_242_ni_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:plutonium_242_ni", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/plutonium_242_ox_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/plutonium_242_ox_bucket.json index d4df663b9..5efc71b30 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/plutonium_242_ox_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/plutonium_242_ox_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:plutonium_242_ox", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/plutonium_242_za_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/plutonium_242_za_bucket.json index 184df2383..6603277e5 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/plutonium_242_za_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/plutonium_242_za_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:plutonium_242_za", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/polonium_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/polonium_bucket.json index 8d4abb708..7b938e989 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/polonium_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/polonium_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:polonium", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/potassium_fluoride_solution_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/potassium_fluoride_solution_bucket.json index 9d9b8138a..0bf1121fe 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/potassium_fluoride_solution_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/potassium_fluoride_solution_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:potassium_fluoride_solution", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/potassium_hydroxide_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/potassium_hydroxide_bucket.json index 0bf64bb40..f12e4fdf5 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/potassium_hydroxide_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/potassium_hydroxide_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:potassium_hydroxide", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/potassium_hydroxide_solution_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/potassium_hydroxide_solution_bucket.json index 7f589caa2..05264e154 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/potassium_hydroxide_solution_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/potassium_hydroxide_solution_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:potassium_hydroxide_solution", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/potassium_iodide_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/potassium_iodide_bucket.json index 05c15dd7b..497eff2df 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/potassium_iodide_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/potassium_iodide_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:potassium_iodide", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/promethium_147_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/promethium_147_bucket.json index 76215e6c5..0bc950e43 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/promethium_147_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/promethium_147_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:promethium_147", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/purpur_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/purpur_bucket.json index 185d37d0f..b9f0b999f 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/purpur_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/purpur_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:purpur", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/quantite_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/quantite_bucket.json index f92570870..dffdb0495 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/quantite_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/quantite_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:quantite", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/radaway_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/radaway_bucket.json index a80a2c6d4..e9c837a0a 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/radaway_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/radaway_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:radaway", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/radaway_slow_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/radaway_slow_bucket.json index 7b365844e..7413f6b2b 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/radaway_slow_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/radaway_slow_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:radaway_slow", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/radon_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/radon_bucket.json index 1c95a6dd2..beb7ed07b 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/radon_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/radon_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": true, "fluid": "nuclearcraft:radon", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/redstone_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/redstone_bucket.json index 0b9f7899f..f4caf41b7 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/redstone_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/redstone_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:redstone", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/redstone_ethanol_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/redstone_ethanol_bucket.json index f196dad97..75d419251 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/redstone_ethanol_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/redstone_ethanol_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:redstone_ethanol", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/ruthenium_106_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/ruthenium_106_bucket.json index 3ffea1963..9defa38f1 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/ruthenium_106_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/ruthenium_106_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:ruthenium_106", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/shibuichi_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/shibuichi_bucket.json index 9f96b2a91..67dbea933 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/shibuichi_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/shibuichi_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:shibuichi", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/sic_sic_cmc_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/sic_sic_cmc_bucket.json index eb2a06c07..1646ec502 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/sic_sic_cmc_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/sic_sic_cmc_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:sic_sic_cmc", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/silicon_carbide_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/silicon_carbide_bucket.json index cc2713739..7595192b6 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/silicon_carbide_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/silicon_carbide_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:silicon_carbide", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/silver_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/silver_bucket.json index 08e980ed5..8ecd77ede 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/silver_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/silver_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:silver", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/silver_clean_slurry_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/silver_clean_slurry_bucket.json index 2bbe69c2a..0aae310e2 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/silver_clean_slurry_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/silver_clean_slurry_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:silver_clean_slurry", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/silver_slurry_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/silver_slurry_bucket.json index e8d8e39cd..48f0c077f 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/silver_slurry_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/silver_slurry_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:silver_slurry", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/slurry_ice_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/slurry_ice_bucket.json index 297e28872..8d2399248 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/slurry_ice_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/slurry_ice_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:slurry_ice", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/sodium_22_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/sodium_22_bucket.json index 1d30bb87c..bc47def61 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/sodium_22_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/sodium_22_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:sodium_22", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/sodium_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/sodium_bucket.json index 525a2979f..a9f3178dc 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/sodium_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/sodium_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:sodium", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/sodium_fluoride_solution_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/sodium_fluoride_solution_bucket.json index 45e14b2fd..ab0a3c7de 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/sodium_fluoride_solution_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/sodium_fluoride_solution_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:sodium_fluoride_solution", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/sodium_hydroxide_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/sodium_hydroxide_bucket.json index d04bdd8b6..c32e5a788 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/sodium_hydroxide_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/sodium_hydroxide_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:sodium_hydroxide", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/sodium_hydroxide_solution_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/sodium_hydroxide_solution_bucket.json index ac7fcad65..feb301d18 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/sodium_hydroxide_solution_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/sodium_hydroxide_solution_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:sodium_hydroxide_solution", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/spent_nuclear_waste_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/spent_nuclear_waste_bucket.json index 29686fa96..53261f44f 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/spent_nuclear_waste_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/spent_nuclear_waste_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:spent_nuclear_waste", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/steam_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/steam_bucket.json index a7748ca2f..bdb0a0a8a 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/steam_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/steam_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": true, "fluid": "nuclearcraft:steam", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/steel_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/steel_bucket.json index 8c8536485..24f1f83f7 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/steel_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/steel_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:steel", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/strontium_90_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/strontium_90_bucket.json index eb83e359b..cab1fadce 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/strontium_90_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/strontium_90_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:strontium_90", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/subliquid_matter_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/subliquid_matter_bucket.json index 774f5a65a..59ba2ea91 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/subliquid_matter_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/subliquid_matter_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:subliquid_matter", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/sugar_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/sugar_bucket.json index 00292e733..8e6853331 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/sugar_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/sugar_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:sugar", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/sulfur_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/sulfur_bucket.json index a715187f3..060722c4f 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/sulfur_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/sulfur_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:sulfur", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/sulfur_dioxide_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/sulfur_dioxide_bucket.json index 3b97f374c..9b7389011 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/sulfur_dioxide_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/sulfur_dioxide_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": true, "fluid": "nuclearcraft:sulfur_dioxide", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/sulfur_trioxide_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/sulfur_trioxide_bucket.json index 550e23e90..11c276b23 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/sulfur_trioxide_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/sulfur_trioxide_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": true, "fluid": "nuclearcraft:sulfur_trioxide", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/sulfuric_acid_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/sulfuric_acid_bucket.json index 6689ac579..d4a6d7fa7 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/sulfuric_acid_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/sulfuric_acid_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:sulfuric_acid", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/technical_water_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/technical_water_bucket.json index 2fc5c70b0..355c58f6a 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/technical_water_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/technical_water_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:technical_water", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/thermoconducting_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/thermoconducting_bucket.json index 6ba9f2b81..0737b6fed 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/thermoconducting_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/thermoconducting_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:thermoconducting", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/thorium_230_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/thorium_230_bucket.json index 3754d7230..b1a9bad1c 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/thorium_230_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/thorium_230_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:thorium_230", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/thorium_230_ni_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/thorium_230_ni_bucket.json index de9518097..ecbcca91e 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/thorium_230_ni_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/thorium_230_ni_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:thorium_230_ni", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/thorium_230_ox_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/thorium_230_ox_bucket.json index cdde606bd..0409493b4 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/thorium_230_ox_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/thorium_230_ox_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:thorium_230_ox", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/thorium_230_za_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/thorium_230_za_bucket.json index d039c2eee..652a78b8d 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/thorium_230_za_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/thorium_230_za_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:thorium_230_za", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/thorium_232_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/thorium_232_bucket.json index dff1ca501..77c6b1045 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/thorium_232_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/thorium_232_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:thorium_232", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/thorium_232_ni_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/thorium_232_ni_bucket.json index df2ca6806..c8c049972 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/thorium_232_ni_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/thorium_232_ni_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:thorium_232_ni", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/thorium_232_ox_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/thorium_232_ox_bucket.json index 0bc87f9fd..c67c1cd22 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/thorium_232_ox_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/thorium_232_ox_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:thorium_232_ox", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/thorium_232_za_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/thorium_232_za_bucket.json index 95b00f8d5..d7967dcda 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/thorium_232_za_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/thorium_232_za_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:thorium_232_za", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/thorium_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/thorium_bucket.json index 2c342e96f..0ed113206 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/thorium_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/thorium_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:thorium", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/thorium_clean_slurry_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/thorium_clean_slurry_bucket.json index 7b3116bdb..d8e779609 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/thorium_clean_slurry_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/thorium_clean_slurry_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:thorium_clean_slurry", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/thorium_slurry_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/thorium_slurry_bucket.json index 53f303a74..b55643b04 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/thorium_slurry_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/thorium_slurry_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:thorium_slurry", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/tin_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/tin_bucket.json index 34af0ca4c..e35234fac 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/tin_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/tin_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:tin", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/tin_clean_slurry_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/tin_clean_slurry_bucket.json index 193ee136d..ee014a6e5 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/tin_clean_slurry_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/tin_clean_slurry_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:tin_clean_slurry", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/tin_silver_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/tin_silver_bucket.json index 4c87f6882..79c9efd25 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/tin_silver_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/tin_silver_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:tin_silver", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/tin_slurry_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/tin_slurry_bucket.json index 8a5e648ac..f48285e3e 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/tin_slurry_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/tin_slurry_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:tin_slurry", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/tough_alloy_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/tough_alloy_bucket.json index 0778cdf94..b838ef5bd 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/tough_alloy_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/tough_alloy_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:tough_alloy", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/tritium_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/tritium_bucket.json index 81f6b35cb..569255e90 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/tritium_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/tritium_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": true, "fluid": "nuclearcraft:tritium", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/unsweetened_chocolate_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/unsweetened_chocolate_bucket.json index 0e2573959..0a8fa4a9a 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/unsweetened_chocolate_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/unsweetened_chocolate_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:unsweetened_chocolate", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/uranium_233_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/uranium_233_bucket.json index 0b05bc117..dd44b96fa 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/uranium_233_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/uranium_233_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:uranium_233", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/uranium_233_ni_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/uranium_233_ni_bucket.json index 629990623..421cab03d 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/uranium_233_ni_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/uranium_233_ni_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:uranium_233_ni", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/uranium_233_ox_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/uranium_233_ox_bucket.json index 6bdeee4f8..05e310df2 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/uranium_233_ox_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/uranium_233_ox_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:uranium_233_ox", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/uranium_233_za_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/uranium_233_za_bucket.json index ffc439314..af98797bb 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/uranium_233_za_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/uranium_233_za_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:uranium_233_za", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/uranium_234_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/uranium_234_bucket.json index 6ea451d98..9b5a8c0b5 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/uranium_234_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/uranium_234_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:uranium_234", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/uranium_234_ni_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/uranium_234_ni_bucket.json index 46602c59e..08b30d50f 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/uranium_234_ni_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/uranium_234_ni_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:uranium_234_ni", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/uranium_234_ox_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/uranium_234_ox_bucket.json index f9a9651f8..a658bdfc3 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/uranium_234_ox_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/uranium_234_ox_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:uranium_234_ox", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/uranium_234_za_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/uranium_234_za_bucket.json index d3dd48586..1c5c9d0e0 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/uranium_234_za_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/uranium_234_za_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:uranium_234_za", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/uranium_235_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/uranium_235_bucket.json index ac36aeb5b..1b7bb5a5d 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/uranium_235_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/uranium_235_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:uranium_235", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/uranium_235_ni_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/uranium_235_ni_bucket.json index 8f7d9122e..411f767b2 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/uranium_235_ni_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/uranium_235_ni_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:uranium_235_ni", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/uranium_235_ox_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/uranium_235_ox_bucket.json index 4b79caba9..74ede42df 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/uranium_235_ox_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/uranium_235_ox_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:uranium_235_ox", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/uranium_235_za_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/uranium_235_za_bucket.json index b98402235..473ed9821 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/uranium_235_za_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/uranium_235_za_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:uranium_235_za", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/uranium_238_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/uranium_238_bucket.json index 16cfca1e8..ad3d041af 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/uranium_238_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/uranium_238_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:uranium_238", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/uranium_238_ni_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/uranium_238_ni_bucket.json index b3d4bddb8..72f4479f5 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/uranium_238_ni_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/uranium_238_ni_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:uranium_238_ni", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/uranium_238_ox_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/uranium_238_ox_bucket.json index a1cef2b80..d44ec1c61 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/uranium_238_ox_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/uranium_238_ox_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:uranium_238_ox", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/uranium_238_za_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/uranium_238_za_bucket.json index 06c3b1000..25c1380a7 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/uranium_238_za_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/uranium_238_za_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:uranium_238_za", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/uranium_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/uranium_bucket.json index f99281b19..5e52e8a38 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/uranium_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/uranium_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:uranium", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/uranium_clean_slurry_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/uranium_clean_slurry_bucket.json index e3e0a7b30..0c2db43cb 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/uranium_clean_slurry_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/uranium_clean_slurry_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:uranium_clean_slurry", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/uranium_oxide_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/uranium_oxide_bucket.json index 8321f3e6a..ac71be202 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/uranium_oxide_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/uranium_oxide_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:uranium_oxide", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/uranium_slurry_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/uranium_slurry_bucket.json index 6469ed09a..f624b02b0 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/uranium_slurry_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/uranium_slurry_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:uranium_slurry", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/xenorium_298_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/xenorium_298_bucket.json index 58f505a30..6ef837266 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/xenorium_298_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/xenorium_298_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:xenorium_298", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/zinc_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/zinc_bucket.json index a8e46ddff..901e2147e 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/zinc_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/zinc_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:zinc", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/zinc_clean_slurry_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/zinc_clean_slurry_bucket.json index 96eb7cd9c..2cf7c1edc 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/zinc_clean_slurry_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/zinc_clean_slurry_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:zinc_clean_slurry", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/zinc_slurry_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/zinc_slurry_bucket.json index 61918eb23..cc4ea924c 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/zinc_slurry_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/zinc_slurry_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:zinc_slurry", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/zircaloy_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/zircaloy_bucket.json index 069754d63..dcf2fc6f7 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/zircaloy_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/zircaloy_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:zircaloy", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/zirconium_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/zirconium_bucket.json index 1f8cb3c59..a382f1a9e 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/zirconium_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/zirconium_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:zirconium", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nuclearcraft/models/item/zirconium_molybdenum_bucket.json b/src/generated/resources/assets/nuclearcraft/models/item/zirconium_molybdenum_bucket.json index 1f674e9d9..2ec97b728 100644 --- a/src/generated/resources/assets/nuclearcraft/models/item/zirconium_molybdenum_bucket.json +++ b/src/generated/resources/assets/nuclearcraft/models/item/zirconium_molybdenum_bucket.json @@ -1,7 +1,7 @@ { - "parent": "forge:item/bucket", + "parent": "neoforge:item/bucket", "apply_tint": true, "flip_gas": false, "fluid": "nuclearcraft:zirconium_molybdenum", - "loader": "forge:fluid_container" + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/main/java/igentuman/api/nc/Processor.java b/src/main/java/igentuman/api/nc/Processor.java index 55e493f59..7b4c4009f 100644 --- a/src/main/java/igentuman/api/nc/Processor.java +++ b/src/main/java/igentuman/api/nc/Processor.java @@ -5,8 +5,6 @@ import igentuman.nc.handler.sided.capability.ItemCapabilityHandler; import igentuman.nc.recipes.type.NcRecipe; import net.minecraft.world.item.Item; -import net.minecraftforge.common.util.LazyOptional; -import net.minecraftforge.energy.IEnergyStorage; import java.util.List; @@ -32,8 +30,6 @@ public interface Processor { int getEnergyCapacity(); - LazyOptional getEnergy(); - List getAllowedCatalysts(); int getBaseProcessTime(); diff --git a/src/main/java/igentuman/api/platform/NCArmorMaterials.java b/src/main/java/igentuman/api/platform/NCArmorMaterials.java new file mode 100644 index 000000000..1f745d02d --- /dev/null +++ b/src/main/java/igentuman/api/platform/NCArmorMaterials.java @@ -0,0 +1,104 @@ +package igentuman.api.platform; + +import igentuman.nc.NuclearCraft; +import net.minecraft.Util; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.sounds.SoundEvents; +import net.minecraft.world.item.ArmorItem; +import net.minecraft.world.item.ArmorMaterial; +import net.minecraft.world.item.crafting.Ingredient; +import net.neoforged.bus.api.IEventBus; +import net.neoforged.neoforge.registries.DeferredHolder; +import net.neoforged.neoforge.registries.DeferredRegister; + +import java.util.EnumMap; +import java.util.List; + +import static igentuman.nc.setup.registration.NCItems.NC_PARTS; +import static igentuman.nc.setup.registration.NCItems.NC_SHIELDING; +import static igentuman.nc.setup.registration.Tags.forgeIngot; + +/** + * Platform translation layer for armor materials. + *

+ * MC 1.21 changed {@code ArmorMaterial} from an interface to a registry record. + * {@code ArmorItem} now takes {@code Holder} instead of the raw + * material. This class registers NC's three armor materials via DeferredRegister. + */ +public final class NCArmorMaterials { + + private NCArmorMaterials() {} + + public static final DeferredRegister ARMOR_MATERIALS = + DeferredRegister.create(net.minecraft.core.registries.Registries.ARMOR_MATERIAL, NuclearCraft.MODID); + + // Defense values from old enum constructor (slotProtections array): + // index order was [BOOTS, LEGGINGS, CHESTPLATE, HELMET] + + public static final DeferredHolder HAZMAT = ARMOR_MATERIALS.register( + "hazmat", + () -> new ArmorMaterial( + Util.make(new EnumMap<>(ArmorItem.Type.class), map -> { + map.put(ArmorItem.Type.BOOTS, 1); + map.put(ArmorItem.Type.LEGGINGS, 2); + map.put(ArmorItem.Type.CHESTPLATE, 3); + map.put(ArmorItem.Type.HELMET, 1); + map.put(ArmorItem.Type.BODY, 2); + }), + 15, + SoundEvents.ARMOR_EQUIP_LEATHER, + () -> Ingredient.of(NC_PARTS.get("bioplastic").get()), + List.of(new ArmorMaterial.Layer( + ResourceLocation.fromNamespaceAndPath(NuclearCraft.MODID, "hazmat") + )), + 0.0F, + 0.0F + ) + ); + + public static final DeferredHolder TOUGH = ARMOR_MATERIALS.register( + "tough", + () -> new ArmorMaterial( + Util.make(new EnumMap<>(ArmorItem.Type.class), map -> { + map.put(ArmorItem.Type.BOOTS, 3); + map.put(ArmorItem.Type.LEGGINGS, 6); + map.put(ArmorItem.Type.CHESTPLATE, 8); + map.put(ArmorItem.Type.HELMET, 3); + map.put(ArmorItem.Type.BODY, 5); + }), + 15, + SoundEvents.ARMOR_EQUIP_DIAMOND, + () -> Ingredient.of(forgeIngot("tough_alloy")), + List.of(new ArmorMaterial.Layer( + ResourceLocation.fromNamespaceAndPath(NuclearCraft.MODID, "tough") + )), + 3.5F, + 0.2F + ) + ); + + public static final DeferredHolder HEV = ARMOR_MATERIALS.register( + "hev", + () -> new ArmorMaterial( + Util.make(new EnumMap<>(ArmorItem.Type.class), map -> { + map.put(ArmorItem.Type.BOOTS, 3); + map.put(ArmorItem.Type.LEGGINGS, 5); + map.put(ArmorItem.Type.CHESTPLATE, 7); + map.put(ArmorItem.Type.HELMET, 3); + map.put(ArmorItem.Type.BODY, 4); + }), + 25, + SoundEvents.ARMOR_EQUIP_NETHERITE, + () -> Ingredient.of(NC_SHIELDING.get("dps").get()), + List.of(new ArmorMaterial.Layer( + ResourceLocation.fromNamespaceAndPath(NuclearCraft.MODID, "hev") + )), + 4.0F, + 0.3F + ) + ); + + public static void init(IEventBus bus) { + ARMOR_MATERIALS.register(bus); + } +} diff --git a/src/main/java/igentuman/api/platform/NCBlockProperties.java b/src/main/java/igentuman/api/platform/NCBlockProperties.java new file mode 100644 index 000000000..a50cf8d35 --- /dev/null +++ b/src/main/java/igentuman/api/platform/NCBlockProperties.java @@ -0,0 +1,15 @@ +package igentuman.api.platform; + +import net.minecraft.world.level.block.state.BlockBehaviour; + +/** + * Platform wrapper for BlockBehaviour.Properties factory methods. + * In 1.21.1 NeoForge: Properties.copy() → Properties.ofFullCopy() + */ +public final class NCBlockProperties { + private NCBlockProperties() {} + + public static BlockBehaviour.Properties copy(BlockBehaviour block) { + return BlockBehaviour.Properties.ofFullCopy(block); + } +} diff --git a/src/main/java/igentuman/api/platform/NCConditions.java b/src/main/java/igentuman/api/platform/NCConditions.java new file mode 100644 index 000000000..cfc6709b9 --- /dev/null +++ b/src/main/java/igentuman/api/platform/NCConditions.java @@ -0,0 +1,35 @@ +package igentuman.api.platform; + +import com.mojang.serialization.MapCodec; +import net.neoforged.neoforge.common.conditions.ICondition; +import net.neoforged.neoforge.registries.DeferredRegister; +import net.neoforged.neoforge.registries.NeoForgeRegistries; + +import java.util.function.Supplier; + +/** + * Platform wrapper for recipe/data condition registration. + * In 1.21.1: IConditionSerializer is gone, CraftingHelper.register() is gone. + * Conditions now require a MapCodec and are registered via DeferredRegister + * into NeoForgeRegistries.Keys.CONDITION_CODECS. + */ +public final class NCConditions { + private NCConditions() {} + + /** + * Creates a DeferredRegister for condition codecs. + */ + public static DeferredRegister> createRegistry(String modId) { + return DeferredRegister.create(NeoForgeRegistries.Keys.CONDITION_CODECS, modId); + } + + /** + * Registers a condition codec with the given name. + */ + public static void register( + DeferredRegister> registry, + String name, + Supplier> codecSupplier) { + registry.register(name, codecSupplier); + } +} diff --git a/src/main/java/igentuman/api/platform/NCFluidCapability.java b/src/main/java/igentuman/api/platform/NCFluidCapability.java new file mode 100644 index 000000000..0697faa1c --- /dev/null +++ b/src/main/java/igentuman/api/platform/NCFluidCapability.java @@ -0,0 +1,38 @@ +package igentuman.api.platform; + +import net.minecraft.core.component.DataComponentType; +import net.minecraft.core.registries.Registries; +import net.minecraft.resources.ResourceKey; +import net.minecraft.world.item.ItemStack; +import net.neoforged.neoforge.fluids.SimpleFluidContent; +import net.neoforged.neoforge.fluids.capability.templates.FluidHandlerItemStack; +import net.neoforged.neoforge.registries.DeferredHolder; +import net.neoforged.neoforge.registries.DeferredRegister; + +import java.util.function.Supplier; + +/** + * Platform wrapper for FluidHandlerItemStack construction. + * In 1.21.1: FluidHandlerItemStack requires Supplier<DataComponentType<SimpleFluidContent>> + * as first parameter (was just ItemStack, int in Forge). + * Registers NC's own DataComponentType for fluid content on items. + */ +public final class NCFluidCapability { + private NCFluidCapability() {} + + private static DeferredHolder, DataComponentType> FLUID_CONTENT; + + public static void init(DeferredRegister.DataComponents registry) { + FLUID_CONTENT = registry.registerComponentType("fluid_content", + builder -> builder.persistent(SimpleFluidContent.CODEC) + .networkSynchronized(SimpleFluidContent.STREAM_CODEC)); + } + + public static Supplier> fluidContentType() { + return FLUID_CONTENT; + } + + public static FluidHandlerItemStack createItemFluidHandler(ItemStack stack, int capacity) { + return new FluidHandlerItemStack(FLUID_CONTENT, stack, capacity); + } +} diff --git a/src/main/java/igentuman/api/platform/NCFluidStacks.java b/src/main/java/igentuman/api/platform/NCFluidStacks.java new file mode 100644 index 000000000..94a4b8663 --- /dev/null +++ b/src/main/java/igentuman/api/platform/NCFluidStacks.java @@ -0,0 +1,34 @@ +package igentuman.api.platform; + +import net.minecraft.core.component.DataComponents; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.world.item.component.CustomData; +import net.neoforged.neoforge.fluids.FluidStack; +import org.jetbrains.annotations.Nullable; + +/** + * Platform translation layer for FluidStack custom data. + *

+ * MC 1.21 removed {@code FluidStack.hasTag()} and {@code getTag()}. + * All custom fluid data now lives in the {@link DataComponents#CUSTOM_DATA} + * component backed by {@link CustomData}. + */ +public final class NCFluidStacks { + + private NCFluidStacks() {} + + /** Replaces {@code fluidStack.hasTag()}. */ + public static boolean hasCustomData(FluidStack stack) { + return stack.has(DataComponents.CUSTOM_DATA); + } + + /** + * Replaces {@code fluidStack.getTag()}. + * Returns a COPY, or null if no data exists. + */ + @Nullable + public static CompoundTag getTag(FluidStack stack) { + CustomData cd = stack.get(DataComponents.CUSTOM_DATA); + return cd != null ? cd.copyTag() : null; + } +} diff --git a/src/main/java/igentuman/api/platform/NCFood.java b/src/main/java/igentuman/api/platform/NCFood.java new file mode 100644 index 000000000..8f7cb28d8 --- /dev/null +++ b/src/main/java/igentuman/api/platform/NCFood.java @@ -0,0 +1,26 @@ +package igentuman.api.platform; + +import net.minecraft.world.food.FoodProperties; + +/** + * Platform wrapper for FoodProperties.Builder APIs. + * In 1.21.1: saturationMod() → saturationModifier(), alwaysEat() → alwaysEdible(). + */ +public final class NCFood { + private NCFood() {} + + public static FoodProperties simple(int nutrition, float saturation) { + return new FoodProperties.Builder() + .nutrition(nutrition) + .saturationModifier(saturation) + .build(); + } + + public static FoodProperties alwaysEdible(int nutrition, float saturation) { + return new FoodProperties.Builder() + .nutrition(nutrition) + .saturationModifier(saturation) + .alwaysEdible() + .build(); + } +} diff --git a/src/main/java/igentuman/api/platform/NCIngredients.java b/src/main/java/igentuman/api/platform/NCIngredients.java new file mode 100644 index 000000000..bad682ec6 --- /dev/null +++ b/src/main/java/igentuman/api/platform/NCIngredients.java @@ -0,0 +1,73 @@ +package igentuman.api.platform; + +import com.google.gson.JsonElement; +import com.mojang.serialization.JsonOps; +import net.minecraft.network.RegistryFriendlyByteBuf; +import net.minecraft.tags.TagKey; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.crafting.Ingredient; + +/** + * Platform translation layer for NeoForge 1.21.1 Ingredient APIs. + * + *

In NeoForge 1.21.1, {@link Ingredient} became {@code final} and its serialization + * methods were replaced with codec/stream codec patterns. This class wraps the new APIs + * so that NC code does not need to touch codec internals directly. + * + *

Ingredient serialization

+ * + * + *

Ingredient creation

+ * + */ +public final class NCIngredients { + + private NCIngredients() {} + + /** + * Parse an Ingredient from JSON. + * Replaces {@code Ingredient.fromJson(json)} (removed in 1.21.1). + */ + public static Ingredient fromJson(JsonElement json) { + return Ingredient.CODEC.parse(JsonOps.INSTANCE, json).getOrThrow(); + } + + /** + * Read an Ingredient from a network buffer. + * Replaces {@code Ingredient.fromNetwork(buf)} (removed in 1.21.1). + */ + public static Ingredient fromNetwork(RegistryFriendlyByteBuf buf) { + return Ingredient.CONTENTS_STREAM_CODEC.decode(buf); + } + + /** + * Write an Ingredient to a network buffer. + * Replaces {@code ingredient.toNetwork(buf)} (removed in 1.21.1). + */ + public static void toNetwork(RegistryFriendlyByteBuf buf, Ingredient ingredient) { + Ingredient.CONTENTS_STREAM_CODEC.encode(buf, ingredient); + } + + /** + * Serialize an Ingredient to JSON. + * Replaces {@code ingredient.toJson()} (removed in 1.21.1). + */ + public static JsonElement toJson(Ingredient ingredient) { + return Ingredient.CODEC.encodeStart(JsonOps.INSTANCE, ingredient).getOrThrow(); + } + + /** + * Create an Ingredient from a tag. + * Replaces {@code Ingredient.fromValues(Stream.of(new Ingredient.TagValue(tag)))} (removed in 1.21.1). + */ + public static Ingredient ofTag(TagKey tag) { + return Ingredient.of(tag); + } +} diff --git a/src/main/java/igentuman/api/platform/NCItemStacks.java b/src/main/java/igentuman/api/platform/NCItemStacks.java new file mode 100644 index 000000000..5583c7d10 --- /dev/null +++ b/src/main/java/igentuman/api/platform/NCItemStacks.java @@ -0,0 +1,200 @@ +package igentuman.api.platform; + +import net.minecraft.core.component.DataComponents; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.nbt.ListTag; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.component.CustomData; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +import java.util.UUID; +import java.util.function.Consumer; + +/** + * Platform translation layer for ItemStack custom data. + *

+ * MC 1.21 removed {@code ItemStack.getOrCreateTag()}, {@code getTag()}, + * {@code setTag()}, and {@code hasTag()}. All custom item data now lives in the + * {@link DataComponents#CUSTOM_DATA} component backed by {@link CustomData}. + *

+ * This class isolates all platform-specific data-component code in one place + * so that NuclearCraft's content code never touches DataComponents directly. + */ +public final class NCItemStacks { + + private NCItemStacks() {} + + // ---- Tag-level operations ---- + + /** Replaces {@code stack.hasTag()}. */ + public static boolean hasCustomData(ItemStack stack) { + return stack.has(DataComponents.CUSTOM_DATA); + } + + /** + * Replaces {@code stack.getTag()}. + * Returns a COPY, or null if no data exists. + */ + @Nullable + public static CompoundTag getTag(ItemStack stack) { + CustomData cd = stack.get(DataComponents.CUSTOM_DATA); + return cd != null ? cd.copyTag() : null; + } + + /** + * Replaces {@code stack.getOrCreateTag()} for read contexts. + * Returns a COPY — never null. + */ + @NotNull + public static CompoundTag getTagCopy(ItemStack stack) { + CustomData cd = stack.get(DataComponents.CUSTOM_DATA); + return cd != null ? cd.copyTag() : new CompoundTag(); + } + + /** + * Replaces {@code stack.setTag(tag)}. + * Passing null or an empty tag removes the component entirely. + */ + public static void setTag(ItemStack stack, @Nullable CompoundTag tag) { + if (tag == null || tag.isEmpty()) { + stack.remove(DataComponents.CUSTOM_DATA); + } else { + stack.set(DataComponents.CUSTOM_DATA, CustomData.of(tag)); + } + } + + /** + * Atomic read-modify-write. The consumer receives a mutable tag; + * changes are saved back automatically. + * Replaces the {@code stack.getOrCreateTag().putXxx(...)} pattern. + */ + public static void modifyTag(ItemStack stack, Consumer modifier) { + CustomData.update(DataComponents.CUSTOM_DATA, stack, modifier); + } + + /** Replaces {@code stack.getOrCreateTag().contains(key)}. */ + public static boolean contains(ItemStack stack, String key) { + CustomData cd = stack.get(DataComponents.CUSTOM_DATA); + return cd != null && cd.contains(key); + } + + /** Replaces {@code stack.removeTagKey(key)}. */ + public static void remove(ItemStack stack, String key) { + CustomData cd = stack.get(DataComponents.CUSTOM_DATA); + if (cd != null && cd.contains(key)) { + CompoundTag tag = cd.copyTag(); + tag.remove(key); + setTag(stack, tag); + } + } + + // ---- Typed getters (zero-copy via getUnsafe) ---- + + public static int getInt(ItemStack stack, String key) { + CustomData cd = stack.get(DataComponents.CUSTOM_DATA); + return cd != null ? cd.getUnsafe().getInt(key) : 0; + } + + public static long getLong(ItemStack stack, String key) { + CustomData cd = stack.get(DataComponents.CUSTOM_DATA); + return cd != null ? cd.getUnsafe().getLong(key) : 0L; + } + + public static boolean getBoolean(ItemStack stack, String key) { + CustomData cd = stack.get(DataComponents.CUSTOM_DATA); + return cd != null && cd.getUnsafe().getBoolean(key); + } + + public static double getDouble(ItemStack stack, String key) { + CustomData cd = stack.get(DataComponents.CUSTOM_DATA); + return cd != null ? cd.getUnsafe().getDouble(key) : 0.0; + } + + public static String getString(ItemStack stack, String key) { + CustomData cd = stack.get(DataComponents.CUSTOM_DATA); + return cd != null ? cd.getUnsafe().getString(key) : ""; + } + + public static CompoundTag getCompound(ItemStack stack, String key) { + CustomData cd = stack.get(DataComponents.CUSTOM_DATA); + return cd != null ? cd.getUnsafe().getCompound(key) : new CompoundTag(); + } + + public static ListTag getList(ItemStack stack, String key, int tagType) { + CustomData cd = stack.get(DataComponents.CUSTOM_DATA); + return cd != null ? cd.getUnsafe().getList(key, tagType) : new ListTag(); + } + + public static UUID getUUID(ItemStack stack, String key) { + CustomData cd = stack.get(DataComponents.CUSTOM_DATA); + return cd != null && cd.getUnsafe().hasUUID(key) ? cd.getUnsafe().getUUID(key) : null; + } + + public static boolean hasUUID(ItemStack stack, String key) { + CustomData cd = stack.get(DataComponents.CUSTOM_DATA); + return cd != null && cd.getUnsafe().hasUUID(key); + } + + public static long[] getLongArray(ItemStack stack, String key) { + CustomData cd = stack.get(DataComponents.CUSTOM_DATA); + return cd != null ? cd.getUnsafe().getLongArray(key) : new long[0]; + } + + // ---- Typed setters (atomic read-modify-write) ---- + + public static void putInt(ItemStack stack, String key, int value) { + CustomData.update(DataComponents.CUSTOM_DATA, stack, tag -> tag.putInt(key, value)); + } + + public static void putLong(ItemStack stack, String key, long value) { + CustomData.update(DataComponents.CUSTOM_DATA, stack, tag -> tag.putLong(key, value)); + } + + public static void putBoolean(ItemStack stack, String key, boolean value) { + CustomData.update(DataComponents.CUSTOM_DATA, stack, tag -> tag.putBoolean(key, value)); + } + + public static void putDouble(ItemStack stack, String key, double value) { + CustomData.update(DataComponents.CUSTOM_DATA, stack, tag -> tag.putDouble(key, value)); + } + + public static void putString(ItemStack stack, String key, String value) { + CustomData.update(DataComponents.CUSTOM_DATA, stack, tag -> tag.putString(key, value)); + } + + public static void putCompound(ItemStack stack, String key, CompoundTag value) { + CustomData.update(DataComponents.CUSTOM_DATA, stack, tag -> tag.put(key, value)); + } + + public static void putList(ItemStack stack, String key, ListTag value) { + CustomData.update(DataComponents.CUSTOM_DATA, stack, tag -> tag.put(key, value)); + } + + public static void putUUID(ItemStack stack, String key, UUID value) { + CustomData.update(DataComponents.CUSTOM_DATA, stack, tag -> tag.putUUID(key, value)); + } + + public static void putLongArray(ItemStack stack, String key, long[] value) { + CustomData.update(DataComponents.CUSTOM_DATA, stack, tag -> tag.putLongArray(key, value)); + } + + // ---- Stack utility methods (1.20→1.21 migration) ---- + + /** + * Create a copy of the given stack with a different count. + * Replaces {@code ItemHandlerHelper.copyStackWithSize(stack, count)}. + */ + public static ItemStack copyWithCount(ItemStack stack, int count) { + return stack.copyWithCount(count); + } + + /** + * Check if two stacks can be merged (same item + same data components). + * Replaces {@code ItemHandlerHelper.canItemStacksStack(a, b)} + * and {@code ItemStack.isSameItemSameTags(a, b)}. + */ + public static boolean canStack(ItemStack a, ItemStack b) { + return ItemStack.isSameItemSameComponents(a, b); + } +} diff --git a/src/main/java/igentuman/api/platform/NCLevels.java b/src/main/java/igentuman/api/platform/NCLevels.java new file mode 100644 index 000000000..417cf3782 --- /dev/null +++ b/src/main/java/igentuman/api/platform/NCLevels.java @@ -0,0 +1,27 @@ +package igentuman.api.platform; + +import net.minecraft.core.BlockPos; +import net.minecraft.world.level.BlockGetter; +import net.minecraft.world.level.block.entity.BlockEntity; +import org.jetbrains.annotations.Nullable; + +/** + * Platform translation layer for Level utilities. + *

+ * Forge added {@code getExistingBlockEntity} as an optimised lookup that + * only returned already-loaded block entities. NeoForge 1.21.1 removed it; + * the vanilla {@code getBlockEntity} now has the same behaviour (returns + * the cached BE or null, never forces a load). + */ +public final class NCLevels { + + private NCLevels() {} + + /** + * Replaces {@code level.getExistingBlockEntity(pos)}. + */ + @Nullable + public static BlockEntity getExistingBlockEntity(BlockGetter level, BlockPos pos) { + return level.getBlockEntity(pos); + } +} diff --git a/src/main/java/igentuman/api/platform/NCLoot.java b/src/main/java/igentuman/api/platform/NCLoot.java new file mode 100644 index 000000000..72cd508f2 --- /dev/null +++ b/src/main/java/igentuman/api/platform/NCLoot.java @@ -0,0 +1,76 @@ +package igentuman.api.platform; + +import net.minecraft.advancements.critereon.EnchantmentPredicate; +import net.minecraft.advancements.critereon.ItemPredicate; +import net.minecraft.advancements.critereon.MinMaxBounds; +import net.minecraft.core.HolderLookup; +import net.minecraft.core.registries.Registries; +import net.minecraft.resources.ResourceKey; +import net.minecraft.world.item.enchantment.Enchantment; +import net.minecraft.world.item.enchantment.Enchantments; +import net.minecraft.world.level.storage.loot.entries.DynamicLoot; +import net.minecraft.world.level.storage.loot.functions.ApplyBonusCount; +import net.minecraft.world.level.storage.loot.functions.CopyComponentsFunction; +import net.minecraft.world.level.storage.loot.functions.EnchantedCountIncreaseFunction; +import net.minecraft.world.level.storage.loot.functions.SetContainerContents; +import net.minecraft.world.level.storage.loot.predicates.LootItemCondition; +import net.minecraft.world.level.storage.loot.predicates.MatchTool; +import net.minecraft.world.level.storage.loot.providers.number.NumberProvider; + +/** + * Platform wrapper for loot table API changes in NeoForge 1.21.1. + * - CopyNbtFunction → CopyComponentsFunction + * - SetContainerContents(BlockEntityType) → SetContainerContents.setContents(...) + * - Enchantment predicates now holder-based (Enchantments fields are ResourceKey) + * - LootingEnchantFunction → EnchantedCountIncreaseFunction (holder-based) + */ +public final class NCLoot { + private NCLoot() {} + + /** + * Replaces CopyNbtFunction.copyData(ContextNbtProvider.BLOCK_ENTITY). + * In 1.21.1 NBT is stored as DataComponents, so we use CopyComponentsFunction. + */ + public static CopyComponentsFunction.Builder copyBlockEntityData() { + return CopyComponentsFunction.copyComponents(CopyComponentsFunction.Source.BLOCK_ENTITY); + } + + /** + * Replaces SetContainerContents.setContents(BlockEntityType). + * In 1.21.1 container contents use the component-based system. + */ + public static SetContainerContents.Builder setContainerContents() { + return SetContainerContents.setContents(net.minecraft.world.level.storage.loot.ContainerComponentManipulators.CONTAINER); + } + + /** + * Builds a silk touch condition for loot tables using holder-based enchantment lookup. + */ + public static LootItemCondition.Builder hasSilkTouch(HolderLookup.Provider registries) { + return MatchTool.toolMatches(ItemPredicate.Builder.item() + .withSubPredicate( + net.minecraft.advancements.critereon.ItemSubPredicates.ENCHANTMENTS, + net.minecraft.advancements.critereon.ItemEnchantmentsPredicate.enchantments( + java.util.List.of(new EnchantmentPredicate( + registries.holderOrThrow(Enchantments.SILK_TOUCH), + MinMaxBounds.Ints.atLeast(1)))))); + } + + /** + * Builds a fortune bonus count for loot tables using holder-based enchantment lookup. + */ + public static ApplyBonusCount.Builder fortuneBonus(HolderLookup.Provider registries, int bonusMultiplier) { + return ApplyBonusCount.addUniformBonusCount( + registries.holderOrThrow(Enchantments.FORTUNE), bonusMultiplier); + } + + /** + * Replaces LootingEnchantFunction.lootingMultiplier(NumberProvider). + * In 1.21.1, LootingEnchantFunction was replaced by EnchantedCountIncreaseFunction + * which requires a HolderLookup.Provider for holder-based enchantment lookup. + */ + public static EnchantedCountIncreaseFunction.Builder lootingMultiplier( + HolderLookup.Provider registries, NumberProvider count) { + return EnchantedCountIncreaseFunction.lootingMultiplier(registries, count); + } +} diff --git a/src/main/java/igentuman/api/platform/NCModels.java b/src/main/java/igentuman/api/platform/NCModels.java new file mode 100644 index 000000000..6e78cb362 --- /dev/null +++ b/src/main/java/igentuman/api/platform/NCModels.java @@ -0,0 +1,33 @@ +package igentuman.api.platform; + +import net.minecraft.resources.ResourceLocation; +import net.neoforged.neoforge.client.model.generators.BlockModelBuilder; +import net.neoforged.neoforge.client.model.generators.CustomLoaderBuilder; +import net.neoforged.neoforge.common.data.ExistingFileHelper; + +/** + * Platform wrapper for NeoForge 1.21.1 model generation API changes. + * + *

CustomLoaderBuilder constructor changed: + *

    + *
  • 1.20: {@code CustomLoaderBuilder(ResourceLocation, T, ExistingFileHelper)}
  • + *
  • 1.21: {@code CustomLoaderBuilder(ResourceLocation, T, ExistingFileHelper, boolean allowInlineElements)}
  • + *
+ */ +public final class NCModels { + private NCModels() {} + + /** + * Creates a CustomLoaderBuilder for use in BlockModelBuilder.customLoader(). + * Wraps the 4th param {@code allowInlineElements} added in NeoForge 1.21.1. + * + * @param loaderId The geometry loader ResourceLocation + * @param parent The parent BlockModelBuilder + * @param helper The ExistingFileHelper + * @return a new CustomLoaderBuilder instance + */ + public static CustomLoaderBuilder customLoader( + ResourceLocation loaderId, BlockModelBuilder parent, ExistingFileHelper helper) { + return new CustomLoaderBuilder<>(loaderId, parent, helper, false) {}; + } +} diff --git a/src/main/java/igentuman/api/platform/NCMusicDiscs.java b/src/main/java/igentuman/api/platform/NCMusicDiscs.java new file mode 100644 index 000000000..b73290e8d --- /dev/null +++ b/src/main/java/igentuman/api/platform/NCMusicDiscs.java @@ -0,0 +1,103 @@ +package igentuman.api.platform; + +import net.minecraft.core.Holder; +import net.minecraft.core.HolderGetter; +import net.minecraft.core.registries.Registries; +import net.minecraft.data.worldgen.BootstrapContext; +import net.minecraft.network.chat.Component; +import net.minecraft.resources.ResourceKey; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.sounds.SoundEvent; +import net.minecraft.tags.TagKey; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.JukeboxSong; +import net.minecraft.world.item.Rarity; + +import static igentuman.nc.NuclearCraft.MODID; +import static igentuman.nc.NuclearCraft.rl; + +/** + * Platform translation layer for music disc items. + *

+ * MC 1.21 deleted {@code RecordItem}. Music discs are now plain {@code Item}s + * with the {@code JukeboxPlayable} data component. Songs are data-driven via + * {@code Registries.JUKEBOX_SONG}. + */ +public final class NCMusicDiscs { + + private NCMusicDiscs() {} + + // ---- JukeboxSong resource keys ---- + + public static final ResourceKey WANDERER = + createKey("wanderer"); + public static final ResourceKey END_OF_THE_WORLD = + createKey("end_of_the_world"); + public static final ResourceKey MONEY_FOR_NOTHING = + createKey("money_for_nothing"); + public static final ResourceKey HYPERSPACE = + createKey("hyperspace"); + + private static ResourceKey createKey(String name) { + return ResourceKey.create(Registries.JUKEBOX_SONG, rl(name)); + } + + // ---- Tag helpers ---- + + /** + * ItemTags.MUSIC_DISCS was removed in 1.21.1 — discs are identified by + * the JukeboxPlayable data component instead. This returns a custom tag + * for NC's own music disc items so datagen can still group them. + */ + public static TagKey musicDiscsTag() { + return TagKey.create(Registries.ITEM, ResourceLocation.fromNamespaceAndPath(MODID, "music_discs")); + } + + // ---- Item factory ---- + + /** + * Creates a music disc item linked to the given jukebox song. + * Replaces {@code new MusicDiscItem(analogOutput, sound, props, length)}. + */ + public static Item createDisc(ResourceKey songKey) { + return new Item(new Item.Properties() + .stacksTo(1) + .rarity(Rarity.RARE) + .jukeboxPlayable(songKey)); + } + + // ---- Datapack bootstrap ---- + + /** + * Bootstrap-registers NC's jukebox songs into the data-driven registry. + * Wire this into your {@code RegistrySetBuilder}: + * {@code .add(Registries.JUKEBOX_SONG, NCMusicDiscs::bootstrap)} + */ + public static void bootstrap(BootstrapContext context) { + HolderGetter sounds = context.lookup(Registries.SOUND_EVENT); + + register(context, sounds, WANDERER, "music.wanderer", 3600, 15); + register(context, sounds, END_OF_THE_WORLD, "music.end_of_the_world", 3600, 15); + register(context, sounds, MONEY_FOR_NOTHING, "music.money_for_nothing", 3600, 15); + register(context, sounds, HYPERSPACE, "music.hyperspace", 3600, 15); + } + + private static void register( + BootstrapContext context, + HolderGetter sounds, + ResourceKey key, + String soundId, + int lengthInSeconds, + int comparatorOutput + ) { + ResourceKey soundKey = ResourceKey.create(Registries.SOUND_EVENT, rl(soundId)); + Holder.Reference soundHolder = sounds.getOrThrow(soundKey); + + context.register(key, new JukeboxSong( + soundHolder, + Component.translatable("item." + MODID + "." + key.location().getPath()), + (float) lengthInSeconds, + comparatorOutput + )); + } +} diff --git a/src/main/java/igentuman/api/platform/NCNames.java b/src/main/java/igentuman/api/platform/NCNames.java new file mode 100644 index 000000000..02404ed1e --- /dev/null +++ b/src/main/java/igentuman/api/platform/NCNames.java @@ -0,0 +1,24 @@ +package igentuman.api.platform; + +import net.minecraft.core.registries.BuiltInRegistries; +import net.minecraft.world.item.Item; +import net.minecraft.world.level.block.Block; + +/** + * Platform wrapper for getting registry names without namespace prefix. + * In NeoForge 1.21.1, Item.toString() returns "namespace:path" instead of just "path". + * This utility provides the path-only form needed for HashMap key lookups. + */ +public final class NCNames { + private NCNames() {} + + /** Get the registry path of an item (without namespace prefix). */ + public static String of(Item item) { + return BuiltInRegistries.ITEM.getKey(item).getPath(); + } + + /** Get the registry path of a block's item form (without namespace prefix). */ + public static String ofBlock(Block block) { + return BuiltInRegistries.BLOCK.getKey(block).getPath(); + } +} diff --git a/src/main/java/igentuman/api/platform/NCRecipeOutput.java b/src/main/java/igentuman/api/platform/NCRecipeOutput.java new file mode 100644 index 000000000..b77b1a025 --- /dev/null +++ b/src/main/java/igentuman/api/platform/NCRecipeOutput.java @@ -0,0 +1,133 @@ +package igentuman.api.platform; + +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import com.mojang.serialization.JsonOps; +import net.minecraft.advancements.Advancement; +import net.minecraft.advancements.AdvancementHolder; +import net.minecraft.core.HolderLookup; +import net.minecraft.core.registries.Registries; +import net.minecraft.data.CachedOutput; +import net.minecraft.data.DataProvider; +import net.minecraft.data.PackOutput; +import net.minecraft.data.recipes.RecipeOutput; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.item.crafting.Ingredient; +import net.minecraft.world.item.crafting.Recipe; +import net.neoforged.neoforge.common.conditions.ICondition; +import org.jetbrains.annotations.Nullable; + +import java.util.*; +import java.util.concurrent.CompletableFuture; + +/** + * Platform wrapper bridging NC's JSON-serialized custom recipes to + * NeoForge 1.21.1's RecipeOutput system. + * + * In 1.21.1, RecipeOutput.accept() expects actual Recipe objects + * that get serialized through codecs. NC's custom recipe builders + * produce JSON directly. This class provides both paths: + * - Standard accept() for vanilla recipe builders (Shaped/Shapeless/Smelting) + * - acceptJson() for NC custom JSON-based recipe builders + * + * Also provides serializeIngredient() replacing the removed Ingredient.toJson(). + */ +public class NCRecipeOutput implements RecipeOutput { + + private final CachedOutput cachedOutput; + private final HolderLookup.Provider registries; + private final PackOutput.PathProvider recipePath; + private final PackOutput.PathProvider advancementPath; + private final Set seenRecipes = new HashSet<>(); + private final List> futures = new ArrayList<>(); + + public NCRecipeOutput(CachedOutput cachedOutput, HolderLookup.Provider registries, + PackOutput.PathProvider recipePath, PackOutput.PathProvider advancementPath) { + this.cachedOutput = cachedOutput; + this.registries = registries; + this.recipePath = recipePath; + this.advancementPath = advancementPath; + } + + // --- Standard RecipeOutput interface (for vanilla builders) --- + + @Override + public void accept(ResourceLocation id, Recipe recipe, + @Nullable AdvancementHolder advancement, ICondition... conditions) { + if (!seenRecipes.add(id)) { + throw new IllegalStateException("Duplicate recipe " + id); + } + futures.add(DataProvider.saveStable(cachedOutput, registries, + Recipe.CONDITIONAL_CODEC, + Optional.of(new net.neoforged.neoforge.common.conditions.WithConditions<>(recipe, conditions)), + recipePath.json(id))); + if (advancement != null) { + futures.add(DataProvider.saveStable(cachedOutput, registries, + Advancement.CONDITIONAL_CODEC, + Optional.of(new net.neoforged.neoforge.common.conditions.WithConditions<>(advancement.value(), conditions)), + advancementPath.json(advancement.id()))); + } + } + + @Override + public Advancement.Builder advancement() { + return Advancement.Builder.recipeAdvancement() + .parent(net.minecraft.data.recipes.RecipeBuilder.ROOT_RECIPE_ADVANCEMENT); + } + + // --- JSON-based recipe saving (for NC custom builders) --- + + /** + * Saves a JSON-serialized recipe directly, bypassing the codec dispatch. + * Used by NC's custom recipe builders that produce JSON via serializeRecipeData(). + * + * @param id Recipe resource location + * @param recipeJson Full recipe JSON (including "type" field) + * @param advancement Optional advancement holder + * @param conditions NeoForge conditions to embed in the JSON + */ + public void acceptJson(ResourceLocation id, JsonObject recipeJson, + @Nullable AdvancementHolder advancement, ICondition... conditions) { + if (!seenRecipes.add(id)) { + throw new IllegalStateException("Duplicate recipe " + id); + } + // Embed NeoForge conditions into the recipe JSON + if (conditions.length > 0) { + ICondition.writeConditions(registries, recipeJson, conditions); + } + futures.add(DataProvider.saveStable(cachedOutput, recipeJson, recipePath.json(id))); + if (advancement != null) { + futures.add(DataProvider.saveStable(cachedOutput, registries, + Advancement.CONDITIONAL_CODEC, + Optional.of(new net.neoforged.neoforge.common.conditions.WithConditions<>(advancement.value(), conditions)), + advancementPath.json(advancement.id()))); + } + } + + /** + * Returns a future that completes when all recipes have been saved. + */ + public CompletableFuture getFuture() { + return CompletableFuture.allOf(futures.toArray(CompletableFuture[]::new)); + } + + // --- Static helpers replacing removed APIs --- + + /** + * Replaces the removed Ingredient.toJson(). + * Uses Ingredient.CODEC to encode to JsonElement. + */ + public static JsonElement serializeIngredient(Ingredient ingredient) { + return Ingredient.CODEC.encodeStart(JsonOps.INSTANCE, ingredient) + .getOrThrow(msg -> new IllegalStateException("Failed to serialize ingredient: " + msg)); + } + + /** + * Replaces the removed CraftingHelper.serialize(ICondition). + * Uses ICondition.CODEC to encode a single condition to JsonElement. + */ + public static JsonElement serializeCondition(ICondition condition) { + return ICondition.CODEC.encodeStart(JsonOps.INSTANCE, condition) + .getOrThrow(msg -> new IllegalStateException("Failed to serialize condition: " + msg)); + } +} diff --git a/src/main/java/igentuman/api/platform/NCRecipeSerializerFactory.java b/src/main/java/igentuman/api/platform/NCRecipeSerializerFactory.java new file mode 100644 index 000000000..af993d41a --- /dev/null +++ b/src/main/java/igentuman/api/platform/NCRecipeSerializerFactory.java @@ -0,0 +1,98 @@ +package igentuman.api.platform; + +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import com.mojang.serialization.DataResult; +import com.mojang.serialization.Dynamic; +import com.mojang.serialization.DynamicOps; +import com.mojang.serialization.JsonOps; +import com.mojang.serialization.MapCodec; +import com.mojang.serialization.MapLike; +import com.mojang.serialization.RecordBuilder; +import net.minecraft.network.RegistryFriendlyByteBuf; +import net.minecraft.network.codec.StreamCodec; +import net.minecraft.world.item.crafting.Recipe; + +import java.util.function.BiConsumer; +import java.util.function.Function; +import java.util.stream.Stream; + +/** + * Factory for bridging NC's existing JSON/network recipe parsing logic into + * NeoForge 1.21.1's {@link MapCodec}/{@link StreamCodec} interfaces. + * + *

In NeoForge 1.21.1, {@code RecipeSerializer} no longer declares + * {@code fromJson}/{@code fromNetwork}/{@code toNetwork}. Instead it must provide: + *

    + *
  • {@code MapCodec codec()} — for JSON serialization/deserialization
  • + *
  • {@code StreamCodec streamCodec()} — for network sync
  • + *
+ * + *

NC serializers keep their parsing code unchanged. This factory wraps it in the + * NeoForge interfaces they never touch directly. + */ +public final class NCRecipeSerializerFactory { + + private NCRecipeSerializerFactory() {} + + /** + * Create a {@link MapCodec} that delegates JSON parsing to the given reader function. + * + *

The codec reconstructs a {@link JsonObject} from the DFU map representation + * and passes it to the existing parsing logic. + * + * @param jsonReader function that parses a recipe from a JsonObject + * @return a MapCodec wrapping the reader + */ + public static > MapCodec createCodec( + Function jsonReader) { + return new MapCodec<>() { + @Override + public RecordBuilder encode(T recipe, DynamicOps ops, RecordBuilder prefix) { + // NC recipes don't need JSON encoding at runtime. + // Data generation uses its own serialization path. + return prefix; + } + + @Override + public DataResult decode(DynamicOps ops, MapLike input) { + // Reconstruct a JsonObject from the DFU map data. + // When loading from JSON, ops is JsonOps.INSTANCE and values are JsonElements. + JsonObject json = new JsonObject(); + input.entries().forEach(pair -> { + String key = ops.getStringValue(pair.getFirst()) + .result().orElse(""); + JsonElement element = new Dynamic<>(ops, pair.getSecond()) + .convert(JsonOps.INSTANCE).getValue(); + json.add(key, element); + }); + try { + return DataResult.success(jsonReader.apply(json)); + } catch (Exception e) { + return DataResult.error(() -> "Failed to parse NC recipe: " + e.getMessage()); + } + } + + @Override + public Stream keys(DynamicOps ops) { + return Stream.empty(); + } + }; + } + + /** + * Create a {@link StreamCodec} wrapping existing network read/write functions. + * + * @param networkReader function that reads a recipe from a buffer + * @param networkWriter function that writes a recipe to a buffer + * @return a StreamCodec wrapping the reader/writer + */ + public static > StreamCodec createStreamCodec( + Function networkReader, + BiConsumer networkWriter) { + return StreamCodec.of( + (buf, recipe) -> networkWriter.accept(buf, recipe), + buf -> networkReader.apply(buf) + ); + } +} diff --git a/src/main/java/igentuman/api/platform/NCRecipes.java b/src/main/java/igentuman/api/platform/NCRecipes.java new file mode 100644 index 000000000..14ab85437 --- /dev/null +++ b/src/main/java/igentuman/api/platform/NCRecipes.java @@ -0,0 +1,70 @@ +package igentuman.api.platform; + +import igentuman.nc.recipes.AbstractRecipe; +import igentuman.nc.recipes.type.NcRecipe; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.item.crafting.Recipe; +import net.minecraft.world.item.crafting.RecipeHolder; +import net.minecraft.world.item.crafting.RecipeInput; +import net.minecraft.world.item.crafting.RecipeManager; +import net.minecraft.world.item.crafting.RecipeType; + +import java.util.List; +import java.util.Optional; +import java.util.stream.Collectors; + +/** + * Platform translation layer for NeoForge 1.21.1 recipe APIs. + * + *

NeoForge 1.21.1 wraps all recipes in {@link RecipeHolder}, moving the recipe ID + * from the recipe object to the holder. This class handles the unwrapping and ID injection + * so that NC's internal code can continue working with bare recipe objects. + * + *

RecipeManager queries

+ *
    + *
  • {@code recipeManager.getAllRecipesFor(type)} → {@link #getAllRecipesFor(RecipeManager, RecipeType)}
  • + *
  • {@code recipeManager.byKey(id)} → {@link #byKey(RecipeManager, ResourceLocation)}
  • + *
+ */ +public final class NCRecipes { + + private NCRecipes() {} + + /** + * Get all recipes of a type, unwrapping RecipeHolder and injecting IDs into AbstractRecipe. + * + *

Replaces {@code recipeManager.getAllRecipesFor(type)} which now returns + * {@code List>} instead of {@code List}. + */ + public static List getAllRecipesFor(RecipeManager manager, RecipeType type) { + return manager.getAllRecipesFor(type).stream() + .map(holder -> { + T recipe = holder.value(); + if (recipe instanceof AbstractRecipe ar) { + ar.setId(holder.id()); + } + return recipe; + }) + .collect(Collectors.toList()); + } + + /** + * Get all vanilla recipes of a type, returning raw holders. + * + *

Used for vanilla recipe types (e.g., smelting) where recipes don't extend AbstractRecipe. + */ + public static > List> getVanillaRecipes( + RecipeManager manager, RecipeType type) { + return manager.getAllRecipesFor(type); + } + + /** + * Find a recipe by its ID, unwrapping the RecipeHolder. + * + *

Wraps {@code recipeManager.byKey(id)} which in 1.21.1 returns + * {@code Optional>} instead of {@code Optional>}. + */ + public static Optional> byKey(RecipeManager manager, ResourceLocation id) { + return manager.byKey(id); + } +} diff --git a/src/main/java/igentuman/api/platform/NCRegistration.java b/src/main/java/igentuman/api/platform/NCRegistration.java new file mode 100644 index 000000000..4c66b07dd --- /dev/null +++ b/src/main/java/igentuman/api/platform/NCRegistration.java @@ -0,0 +1,82 @@ +package igentuman.api.platform; + +import java.util.Arrays; +import java.util.function.Supplier; + +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.EntityType; +import net.minecraft.world.inventory.AbstractContainerMenu; +import net.minecraft.world.inventory.MenuType; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.entity.BlockEntity; +import net.minecraft.world.level.block.entity.BlockEntityType; +import net.minecraft.world.level.levelgen.feature.Feature; +import net.minecraft.world.level.material.Fluid; +import net.neoforged.neoforge.common.extensions.IMenuTypeExtension; +import net.neoforged.neoforge.network.IContainerFactory; +import net.neoforged.neoforge.registries.DeferredHolder; +import net.neoforged.neoforge.registries.DeferredRegister; + +/** + * Typed registration factory methods that bridge DeferredRegister's wildcard-based + * return types to concrete generic types. + * + * NeoForge's DeferredHolder has two type parameters with a strict bound (T extends R). + * DeferredRegister>.register() returns DeferredHolder, MenuType>, + * but callers need DeferredHolder, MenuType>. Java generics are + * invariant, so a direct assignment fails. These factory methods perform a single + * unchecked cast that is safe because generics are erased at runtime. + */ +public final class NCRegistration { + + private NCRegistration() {} + + // === MenuType === + + @SuppressWarnings("unchecked") + public static DeferredHolder, MenuType> + registerMenu(DeferredRegister> registry, String name, IContainerFactory factory) { + return (DeferredHolder, MenuType>) (DeferredHolder) + registry.register(name, () -> IMenuTypeExtension.create(factory)); + } + + // === BlockEntityType === + + @SafeVarargs + @SuppressWarnings("unchecked") + public static DeferredHolder, BlockEntityType> + registerBlockEntity(DeferredRegister> registry, String name, + BlockEntityType.BlockEntitySupplier supplier, Supplier... blocks) { + return (DeferredHolder, BlockEntityType>) (DeferredHolder) + registry.register(name, () -> BlockEntityType.Builder.of(supplier, + Arrays.stream(blocks).map(Supplier::get).toArray(Block[]::new)).build(null)); + } + + // === Fluid === + + @SuppressWarnings("unchecked") + public static DeferredHolder + registerFluid(DeferredRegister registry, String name, Supplier supplier) { + return (DeferredHolder) (DeferredHolder) + registry.register(name, supplier); + } + + // === EntityType === + + @SuppressWarnings("unchecked") + public static DeferredHolder, EntityType> + registerEntity(DeferredRegister> registry, String name, + Supplier> supplier) { + return (DeferredHolder, EntityType>) (DeferredHolder) + registry.register(name, supplier); + } + + // === Feature === + + @SuppressWarnings("unchecked") + public static > DeferredHolder, T> + registerFeature(DeferredRegister> registry, String name, Supplier supplier) { + return (DeferredHolder, T>) (DeferredHolder) + registry.register(name, supplier); + } +} diff --git a/src/main/java/igentuman/api/platform/NCRendering.java b/src/main/java/igentuman/api/platform/NCRendering.java new file mode 100644 index 000000000..bbbf31d2b --- /dev/null +++ b/src/main/java/igentuman/api/platform/NCRendering.java @@ -0,0 +1,42 @@ +package igentuman.api.platform; + +import com.mojang.blaze3d.vertex.BufferBuilder; +import com.mojang.blaze3d.vertex.BufferUploader; +import com.mojang.blaze3d.vertex.Tesselator; +import com.mojang.blaze3d.vertex.VertexFormat; + +import java.util.function.Consumer; + +/** + * Platform translation layer for NeoForge 1.21.1 rendering APIs. + * + *

Wraps the Tesselator/BufferBuilder/BufferUploader pipeline that changed + * between 1.20→1.21. NC code calls {@link #draw} instead of touching + * Tesselator directly. + * + *

Tesselator pipeline

+ *
    + *
  • 1.20: {@code tesselator.getBuilder()} + {@code builder.begin(mode, fmt)} + ... + {@code tesselator.end()}
  • + *
  • 1.21: {@code tesselator.begin(mode, fmt)} returns BufferBuilder + ... + {@code BufferUploader.drawWithShader(builder.buildOrThrow())}
  • + *
+ */ +public final class NCRendering { + + private NCRendering() {} + + /** + * Draw primitives using Tesselator. Wraps the begin/build/upload pipeline. + * Caller provides vertex data via the consumer. + * + * @param mode the vertex format mode (e.g. QUADS, TRIANGLES) + * @param format the vertex format (e.g. POSITION_COLOR, POSITION_TEX) + * @param vertexBuilder consumer that receives a BufferBuilder and adds vertices + */ + public static void draw(VertexFormat.Mode mode, VertexFormat format, + Consumer vertexBuilder) { + Tesselator tesselator = Tesselator.getInstance(); + BufferBuilder buffer = tesselator.begin(mode, format); + vertexBuilder.accept(buffer); + BufferUploader.drawWithShader(buffer.buildOrThrow()); + } +} diff --git a/src/main/java/igentuman/api/platform/NCSerialization.java b/src/main/java/igentuman/api/platform/NCSerialization.java new file mode 100644 index 000000000..9b4f9b11b --- /dev/null +++ b/src/main/java/igentuman/api/platform/NCSerialization.java @@ -0,0 +1,136 @@ +package igentuman.api.platform; + +import net.minecraft.core.HolderLookup; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.nbt.Tag; +import net.minecraft.network.RegistryFriendlyByteBuf; +import net.minecraft.world.item.ItemStack; +import net.neoforged.neoforge.common.util.INBTSerializable; +import net.neoforged.neoforge.fluids.FluidStack; +import net.neoforged.neoforge.fluids.capability.templates.FluidTank; + +/** + * Platform translation layer for NeoForge 1.21.1 serialization APIs. + * + *

All NC code that serializes or deserializes NBT data should go through + * this class rather than calling NeoForge APIs directly. If the underlying + * API changes in a future version, only this file needs to be updated. + * + *

INBTSerializable (handler serialize/deserialize)

+ *
    + *
  • {@code handler.serializeNBT()} → {@link #serialize(INBTSerializable, HolderLookup.Provider)}
  • + *
  • {@code handler.deserializeNBT(tag)} → {@link #deserialize(INBTSerializable, HolderLookup.Provider, Tag)}
  • + *
+ * + *

ItemStack

+ *
    + *
  • {@code ItemStack.of(tag)} → {@link #loadItemStack(HolderLookup.Provider, CompoundTag)}
  • + *
  • {@code stack.save(tag)} → {@link #saveItemStack(ItemStack, HolderLookup.Provider)}
  • + *
+ * + *

FluidStack

+ *
    + *
  • {@code FluidStack.loadFluidStackFromNBT(tag)} → {@link #loadFluidStack(HolderLookup.Provider, CompoundTag)}
  • + *
  • {@code fluid.writeToNBT(tag)} → {@link #saveFluidStack(FluidStack, HolderLookup.Provider)}
  • + *
+ * + *

FluidTank

+ *
    + *
  • {@code tank.readFromNBT(tag)} → {@link #readFluidTank(FluidTank, HolderLookup.Provider, CompoundTag)}
  • + *
  • {@code tank.writeToNBT(tag)} → {@link #writeFluidTank(FluidTank, HolderLookup.Provider, CompoundTag)}
  • + *
+ */ +public final class NCSerialization { + + private NCSerialization() {} + + // --- INBTSerializable --- + + /** + * Serialize a handler to NBT. + * Wraps {@code handler.serializeNBT(provider)}. + */ + public static T serialize(INBTSerializable handler, HolderLookup.Provider provider) { + return handler.serializeNBT(provider); + } + + /** + * Deserialize a handler from NBT. + * Wraps {@code handler.deserializeNBT(provider, tag)}. + */ + public static void deserialize(INBTSerializable handler, HolderLookup.Provider provider, T tag) { + handler.deserializeNBT(provider, tag); + } + + // --- ItemStack --- + + /** + * Load an ItemStack from NBT. + * Replaces {@code ItemStack.of(tag)} (1.20.1) / {@code ItemStack.parseOptional(provider, tag)} (1.21.1). + */ + public static ItemStack loadItemStack(HolderLookup.Provider provider, CompoundTag tag) { + return ItemStack.parseOptional(provider, tag); + } + + /** + * Save an ItemStack to NBT. + * Replaces {@code stack.save(tag)} (1.20.1) / {@code stack.save(provider)} (1.21.1). + */ + public static Tag saveItemStack(ItemStack stack, HolderLookup.Provider provider) { + return stack.save(provider); + } + + // --- FluidStack --- + + /** + * Load a FluidStack from NBT. + * Replaces {@code FluidStack.loadFluidStackFromNBT(tag)} (1.20.1) / {@code FluidStack.parseOptional(provider, tag)} (1.21.1). + */ + public static FluidStack loadFluidStack(HolderLookup.Provider provider, CompoundTag tag) { + return FluidStack.parseOptional(provider, tag); + } + + /** + * Save a FluidStack to NBT. + * Replaces {@code fluid.writeToNBT(tag)} (1.20.1) / {@code fluid.save(provider)} (1.21.1). + */ + public static Tag saveFluidStack(FluidStack fluid, HolderLookup.Provider provider) { + return fluid.save(provider); + } + + // --- FluidTank --- + + /** + * Read a FluidTank's contents from NBT. + * Replaces {@code tank.readFromNBT(tag)} (1.20.1) / {@code tank.readFromNBT(provider, tag)} (1.21.1). + */ + public static FluidTank readFluidTank(FluidTank tank, HolderLookup.Provider provider, CompoundTag tag) { + return tank.readFromNBT(provider, tag); + } + + /** + * Write a FluidTank's contents to NBT. + * Replaces {@code tank.writeToNBT(tag)} (1.20.1) / {@code tank.writeToNBT(provider, tag)} (1.21.1). + */ + public static CompoundTag writeFluidTank(FluidTank tank, HolderLookup.Provider provider, CompoundTag tag) { + return tank.writeToNBT(provider, tag); + } + + // --- FluidStack Network I/O --- + + /** + * Read a FluidStack from a network buffer. + * Replaces {@code FluidStack.readFromPacket(buf)} (removed in 1.21.1). + */ + public static FluidStack readFluidFromNetwork(RegistryFriendlyByteBuf buf) { + return FluidStack.OPTIONAL_STREAM_CODEC.decode(buf); + } + + /** + * Write a FluidStack to a network buffer. + * Replaces {@code fluid.writeToPacket(buf)} (removed in 1.21.1). + */ + public static void writeFluidToNetwork(RegistryFriendlyByteBuf buf, FluidStack fluid) { + FluidStack.OPTIONAL_STREAM_CODEC.encode(buf, fluid); + } +} diff --git a/src/main/java/igentuman/api/platform/NCSpawning.java b/src/main/java/igentuman/api/platform/NCSpawning.java new file mode 100644 index 000000000..a2ba5eff4 --- /dev/null +++ b/src/main/java/igentuman/api/platform/NCSpawning.java @@ -0,0 +1,29 @@ +package igentuman.api.platform; + +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.EntityType; +import net.minecraft.world.entity.SpawnPlacementType; +import net.minecraft.world.entity.SpawnPlacementTypes; +import net.minecraft.world.entity.SpawnPlacements; +import net.minecraft.world.level.levelgen.Heightmap; +import net.neoforged.neoforge.event.entity.RegisterSpawnPlacementsEvent; + +/** + * Platform wrapper for spawn placement APIs. + * In 1.21.1: SpawnPlacements.Type enum → SpawnPlacementTypes constants, + * and registration moved to RegisterSpawnPlacementsEvent (SpawnPlacements.register is private). + */ +public final class NCSpawning { + private NCSpawning() {} + + public static final SpawnPlacementType NO_RESTRICTIONS = SpawnPlacementTypes.NO_RESTRICTIONS; + public static final SpawnPlacementType ON_GROUND = SpawnPlacementTypes.ON_GROUND; + public static final SpawnPlacementType IN_WATER = SpawnPlacementTypes.IN_WATER; + + public static void register(RegisterSpawnPlacementsEvent event, + EntityType entityType, SpawnPlacementType type, + Heightmap.Types heightmap, + SpawnPlacements.SpawnPredicate predicate) { + event.register(entityType, type, heightmap, predicate, RegisterSpawnPlacementsEvent.Operation.OR); + } +} diff --git a/src/main/java/igentuman/api/platform/NCTagFactory.java b/src/main/java/igentuman/api/platform/NCTagFactory.java new file mode 100644 index 000000000..cf87a22bf --- /dev/null +++ b/src/main/java/igentuman/api/platform/NCTagFactory.java @@ -0,0 +1,82 @@ +package igentuman.api.platform; + +import net.minecraft.core.Registry; +import net.minecraft.core.registries.BuiltInRegistries; +import net.minecraft.resources.ResourceKey; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.tags.TagKey; +import net.minecraft.world.item.Item; +import net.minecraft.world.level.biome.Biome; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.material.Fluid; +import net.neoforged.neoforge.common.Tags; + +/** + * Platform wrapper for TagKey creation. + * Encapsulates registry key access (getRegistryKey() → key() in 1.21.1) + * and provides typed convenience methods per registry. + * + * Also wraps NeoForge Tags.Items renames: + * - Tags.Items.GLASS → Tags.Items.GLASS_BLOCKS (1.21.1) + * - Tags.Items.GLASS_PANES → Tags.Items.GLASS_PANES (unchanged) + */ +public final class NCTagFactory { + private NCTagFactory() {} + + public static TagKey create(ResourceKey> registryKey, ResourceLocation id) { + return TagKey.create(registryKey, id); + } + + public static TagKey fluidTag(ResourceLocation id) { + return TagKey.create(BuiltInRegistries.FLUID.key(), id); + } + + public static TagKey blockTag(ResourceLocation id) { + return TagKey.create(BuiltInRegistries.BLOCK.key(), id); + } + + public static TagKey itemTag(ResourceLocation id) { + return TagKey.create(BuiltInRegistries.ITEM.key(), id); + } + + public static TagKey biomeTag(ResourceLocation id) { + return TagKey.create(net.minecraft.core.registries.Registries.BIOME, id); + } + + // --- NeoForge Tags.Items renames (Forge → NeoForge 1.21.1) --- + + /** + * Tags.Items.GLASS → Tags.Items.GLASS_BLOCKS in NeoForge 1.21.1. + */ + public static TagKey glass() { + return Tags.Items.GLASS_BLOCKS; + } + + /** + * Tags.Items.GLASS_PANES (unchanged in 1.21.1). + */ + public static TagKey glassPanes() { + return Tags.Items.GLASS_PANES; + } + + /** + * Tags.Items.INGOTS_BRICK → Tags.Items.BRICKS_NORMAL in NeoForge 1.21.1. + */ + public static TagKey bricksNormal() { + return Tags.Items.BRICKS_NORMAL; + } + + /** + * Tags.Items.INGOTS_NETHER_BRICK → Tags.Items.BRICKS_NETHER in NeoForge 1.21.1. + */ + public static TagKey bricksNether() { + return Tags.Items.BRICKS_NETHER; + } + + /** + * Tags.Items.SAND → Tags.Items.SANDS in NeoForge 1.21.1. + */ + public static TagKey sands() { + return Tags.Items.SANDS; + } +} diff --git a/src/main/java/igentuman/api/platform/NCTrading.java b/src/main/java/igentuman/api/platform/NCTrading.java new file mode 100644 index 000000000..ff9b5e562 --- /dev/null +++ b/src/main/java/igentuman/api/platform/NCTrading.java @@ -0,0 +1,35 @@ +package igentuman.api.platform; + +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.trading.ItemCost; +import net.minecraft.world.item.trading.MerchantOffer; +import net.minecraft.world.level.ItemLike; + +import java.util.Optional; + +/** + * Platform wrapper for villager trading APIs. + * In 1.21.1: MerchantOffer cost parameters changed from ItemStack to ItemCost, + * and dual-cost offers use Optional<ItemCost>. + */ +public final class NCTrading { + private NCTrading() {} + + public static ItemCost cost(ItemLike item, int count) { + return new ItemCost(item, count); + } + + public static ItemCost cost(ItemStack stack) { + return new ItemCost(stack.getItem(), stack.getCount()); + } + + public static MerchantOffer offer(ItemCost cost, ItemStack result, + int maxUses, int xp, float priceMultiplier) { + return new MerchantOffer(cost, result, maxUses, xp, priceMultiplier); + } + + public static MerchantOffer offer(ItemCost costA, ItemCost costB, ItemStack result, + int maxUses, int xp, float priceMultiplier) { + return new MerchantOffer(costA, Optional.of(costB), result, maxUses, xp, priceMultiplier); + } +} diff --git a/src/main/java/igentuman/api/platform/NCVibrations.java b/src/main/java/igentuman/api/platform/NCVibrations.java new file mode 100644 index 000000000..d334eac1a --- /dev/null +++ b/src/main/java/igentuman/api/platform/NCVibrations.java @@ -0,0 +1,23 @@ +package igentuman.api.platform; + +import it.unimi.dsi.fastutil.objects.Reference2IntOpenHashMap; +import net.minecraft.resources.ResourceKey; +import net.minecraft.world.level.gameevent.GameEvent; +import net.minecraft.world.level.gameevent.vibrations.VibrationSystem; +import net.neoforged.neoforge.registries.DeferredHolder; + +/** + * Platform wrapper for VibrationSystem APIs. + * In 1.21.1: VIBRATION_FREQUENCY_FOR_EVENT is Reference2IntOpenHashMap<ResourceKey<GameEvent>> + * (was Object2IntOpenHashMap<GameEvent> in Forge). + */ +public final class NCVibrations { + private NCVibrations() {} + + @SuppressWarnings("unchecked") + public static void registerFrequency(DeferredHolder event, int frequency) { + if (VibrationSystem.VIBRATION_FREQUENCY_FOR_EVENT instanceof Reference2IntOpenHashMap map) { + ((Reference2IntOpenHashMap>) map).put(event.getKey(), frequency); + } + } +} diff --git a/src/main/java/igentuman/api/platform/NCWidgets.java b/src/main/java/igentuman/api/platform/NCWidgets.java new file mode 100644 index 000000000..94886812c --- /dev/null +++ b/src/main/java/igentuman/api/platform/NCWidgets.java @@ -0,0 +1,78 @@ +package igentuman.api.platform; + +import igentuman.nc.client.gui.element.button.NCImageButton; +import net.minecraft.client.gui.components.Button; +import net.minecraft.network.chat.Component; +import net.minecraft.resources.ResourceLocation; + +/** + * Platform translation layer for NeoForge 1.21.1 GUI widget APIs. + * + *

ImageButton changes (1.20 to 1.21)

+ *
    + *
  • Old: {@code new ImageButton(x, y, w, h, u, v, yDiffTex, texture, onPress)}
  • + *
  • Old: {@code new ImageButton(x, y, w, h, u, v, yDiffTex, texture, texW, texH, onPress)}
  • + *
  • New: Uses {@code WidgetSprites} with separate enabled/disabled sprite ResourceLocations
  • + *
  • New: {@code ImageButton.renderWidget()} uses {@code blitSprite()} (atlas-based), not {@code blit()} (UV-based)
  • + *
+ * + *

Since the NC codebase uses UV-coordinate sprite sheets (not the atlas system), + * all factory methods return {@link NCImageButton}, which preserves the old UV-based + * {@code blit()} rendering.

+ */ +public final class NCWidgets { + + private NCWidgets() {} + + /** + * Create a UV-based image button on a 256x256 texture sheet. + * + *

Replaces the removed {@code ImageButton(x, y, w, h, u, v, yDiffTex, texture, onPress)} + * constructor.

+ * + * @param x button x position + * @param y button y position + * @param width button width + * @param height button height + * @param u sprite U offset on the texture sheet + * @param v sprite V offset on the texture sheet + * @param yDiffTex Y offset between normal/hovered/disabled states + * @param texture the 256x256 texture ResourceLocation + * @param onPress click handler + * @return a button that renders via UV-based blit on the texture sheet + */ + public static NCImageButton imageButton(int x, int y, int width, int height, + int u, int v, int yDiffTex, + ResourceLocation texture, + Button.OnPress onPress) { + return new NCImageButton(x, y, width, height, u, v, yDiffTex, texture, onPress); + } + + /** + * Create a UV-based image button with explicit texture dimensions. + * + *

Replaces the removed + * {@code ImageButton(x, y, w, h, u, v, yDiffTex, texture, texW, texH, onPress)} + * constructor.

+ * + * @param x button x position + * @param y button y position + * @param width button width + * @param height button height + * @param u sprite U offset on the texture sheet + * @param v sprite V offset on the texture sheet + * @param yDiffTex Y offset between normal/hovered/disabled states + * @param texture the texture ResourceLocation + * @param textureWidth texture sheet width in pixels + * @param textureHeight texture sheet height in pixels + * @param onPress click handler + * @return a button that renders via UV-based blit on the texture sheet + */ + public static NCImageButton imageButton(int x, int y, int width, int height, + int u, int v, int yDiffTex, + ResourceLocation texture, + int textureWidth, int textureHeight, + Button.OnPress onPress) { + return new NCImageButton(x, y, width, height, u, v, yDiffTex, texture, textureWidth, textureHeight, onPress); + } +} diff --git a/src/main/java/igentuman/nc/NuclearCraft.java b/src/main/java/igentuman/nc/NuclearCraft.java index 7f8effb4c..7b0d38504 100644 --- a/src/main/java/igentuman/nc/NuclearCraft.java +++ b/src/main/java/igentuman/nc/NuclearCraft.java @@ -1,40 +1,30 @@ package igentuman.nc; -import igentuman.nc.content.particles.CapabilityParticleStackHandler; import igentuman.nc.handler.command.*; import igentuman.nc.handler.config.*; -import igentuman.nc.handler.event.server.WorldEvents; import igentuman.nc.multiblock.MultiblockHandler; import igentuman.nc.network.PacketHandler; -import igentuman.nc.radiation.data.PlayerRadiation; import igentuman.nc.radiation.data.RadiationEvents; import igentuman.nc.radiation.data.RadiationManager; -import igentuman.nc.radiation.data.WorldRadiation; import igentuman.nc.setup.ClientSetup; import igentuman.nc.setup.ModSetup; import igentuman.nc.setup.Registration; -import igentuman.nc.util.insitu_leaching.WorldVeinOres; -import igentuman.nc.util.insitu_leaching.WorldVeinsProvider; import net.minecraft.resources.ResourceLocation; import net.minecraft.server.level.ServerLevel; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.common.MinecraftForge; -import net.minecraftforge.common.capabilities.RegisterCapabilitiesEvent; -import net.minecraftforge.event.GameShuttingDownEvent; -import net.minecraftforge.event.RegisterCommandsEvent; -import net.minecraftforge.event.server.ServerStartedEvent; -import net.minecraftforge.event.server.ServerStoppedEvent; -import net.minecraftforge.eventbus.api.IEventBus; -import net.minecraftforge.eventbus.api.SubscribeEvent; -import net.minecraftforge.fml.DistExecutor; -import net.minecraftforge.fml.ModContainer; -import net.minecraftforge.fml.ModList; -import net.minecraftforge.fml.ModLoadingContext; -import net.minecraftforge.fml.common.Mod; -import net.minecraftforge.fml.config.ModConfig; -import net.minecraftforge.fml.event.config.ModConfigEvent; -import net.minecraftforge.fml.event.lifecycle.FMLClientSetupEvent; -import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext; +import net.neoforged.api.distmarker.Dist; +import net.neoforged.neoforge.common.NeoForge; +import net.neoforged.neoforge.event.GameShuttingDownEvent; +import net.neoforged.neoforge.event.RegisterCommandsEvent; +import net.neoforged.neoforge.event.server.ServerStartedEvent; +import net.neoforged.neoforge.event.server.ServerStoppedEvent; +import net.neoforged.bus.api.IEventBus; +import net.neoforged.bus.api.SubscribeEvent; +import net.neoforged.fml.ModContainer; +import net.neoforged.fml.ModList; +import net.neoforged.fml.common.Mod; +import net.neoforged.fml.config.ModConfig; +import net.neoforged.fml.event.config.ModConfigEvent; +import net.neoforged.fml.loading.FMLEnvironment; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; @@ -47,54 +37,48 @@ public class NuclearCraft { public static final Logger LOGGER = LogManager.getLogger(); public boolean isNcBeStopped = false; - public static final WorldEvents worldTickHandler = new WorldEvents(); public static final String MODID = "nuclearcraft"; public static NuclearCraft instance; private final PacketHandler packetHandler; private static boolean isBetaBuild = false; public static long currentTick = 0; - public static void registerConfigs(FMLJavaModLoadingContext context) - { + public static void registerConfigs(ModContainer container) { preFetchProcessorsConfig(); unpackFilesFromFolderToConfig("data/nuclearcraft/fission_fuel", "NuclearCraft/fission_fuel"); unpackFilesFromFolderToConfig("data/nuclearcraft/heat_sinks", "NuclearCraft/heat_sinks"); unpackFilesFromFolderToConfig("data/nuclearcraft/accelerator_coolers", "NuclearCraft/accelerator_coolers"); - ModContainer container = ModLoadingContext.get().getActiveContainer(); - container.addConfig(new ModConfig(ModConfig.Type.CLIENT, ClientConfig.spec, container,"NuclearCraft/client.toml")); - container.addConfig(new ModConfig(ModConfig.Type.COMMON, MaterialsConfig.spec, container,"NuclearCraft/materials.toml")); - container.addConfig(new ModConfig(ModConfig.Type.COMMON, OreGenConfig.spec, container,"NuclearCraft/ore_generation.toml")); - container.addConfig(new ModConfig(ModConfig.Type.COMMON, CommonConfig.spec, container,"NuclearCraft/common.toml")); - container.addConfig(new ModConfig(ModConfig.Type.COMMON, KugelblitzConfig.spec, container,"NuclearCraft/kugelblitz.toml")); - container.addConfig(new ModConfig(ModConfig.Type.COMMON, AcceleratorConfig.spec, container,"NuclearCraft/accelerator.toml")); - container.addConfig(new ModConfig(ModConfig.Type.COMMON, ProcessorsConfig.spec, container,"NuclearCraft/processors.toml")); - container.addConfig(new ModConfig(ModConfig.Type.COMMON, FissionConfig.spec, container,"NuclearCraft/fission.toml")); - container.addConfig(new ModConfig(ModConfig.Type.COMMON, FusionConfig.spec, container,"NuclearCraft/fusion.toml")); - container.addConfig(new ModConfig(ModConfig.Type.COMMON, TurbineConfig.spec, container,"NuclearCraft/turbine.toml")); - container.addConfig(new ModConfig(ModConfig.Type.COMMON, RadiationConfig.spec, container,"NuclearCraft/radiation.toml")); - container.addConfig(new ModConfig(ModConfig.Type.COMMON, WorldConfig.spec, container,"NuclearCraft/world.toml")); + container.registerConfig(ModConfig.Type.CLIENT, ClientConfig.spec, "NuclearCraft/client.toml"); + container.registerConfig(ModConfig.Type.COMMON, MaterialsConfig.spec, "NuclearCraft/materials.toml"); + container.registerConfig(ModConfig.Type.COMMON, OreGenConfig.spec, "NuclearCraft/ore_generation.toml"); + container.registerConfig(ModConfig.Type.COMMON, CommonConfig.spec, "NuclearCraft/common.toml"); + container.registerConfig(ModConfig.Type.COMMON, KugelblitzConfig.spec, "NuclearCraft/kugelblitz.toml"); + container.registerConfig(ModConfig.Type.COMMON, AcceleratorConfig.spec, "NuclearCraft/accelerator.toml"); + container.registerConfig(ModConfig.Type.COMMON, ProcessorsConfig.spec, "NuclearCraft/processors.toml"); + container.registerConfig(ModConfig.Type.COMMON, FissionConfig.spec, "NuclearCraft/fission.toml"); + container.registerConfig(ModConfig.Type.COMMON, FusionConfig.spec, "NuclearCraft/fusion.toml"); + container.registerConfig(ModConfig.Type.COMMON, TurbineConfig.spec, "NuclearCraft/turbine.toml"); + container.registerConfig(ModConfig.Type.COMMON, RadiationConfig.spec, "NuclearCraft/radiation.toml"); + container.registerConfig(ModConfig.Type.COMMON, WorldConfig.spec, "NuclearCraft/world.toml"); } - @Deprecated - public NuclearCraft() { - this(FMLJavaModLoadingContext.get()); - } - - public NuclearCraft(FMLJavaModLoadingContext context) { + public NuclearCraft(IEventBus modbus, ModContainer container) { instance = this; - IEventBus modbus = context.getModEventBus(); - registerConfigs(context); + registerConfigs(container); packetHandler = new PacketHandler(); - MinecraftForge.EVENT_BUS.addListener(this::serverStopped); - MinecraftForge.EVENT_BUS.addListener(this::serverStarted); - MinecraftForge.EVENT_BUS.addListener(this::gameShuttingDownEvent); + NeoForge.EVENT_BUS.addListener(this::serverStopped); + NeoForge.EVENT_BUS.addListener(this::serverStarted); + NeoForge.EVENT_BUS.addListener(this::gameShuttingDownEvent); ModSetup.setup(); - Registration.init(context); - MinecraftForge.EVENT_BUS.addListener(this::registerCommands); + Registration.init(modbus); + NeoForge.EVENT_BUS.addListener(this::registerCommands); modbus.addListener(ModSetup::init); - DistExecutor.unsafeRunWhenOn(Dist.CLIENT, () -> () -> modbus.addListener(ClientSetup::init)); - DistExecutor.unsafeRunWhenOn(Dist.CLIENT, () -> () -> modbus.addListener(this::registerClientEventHandlers)); + if (FMLEnvironment.dist == Dist.CLIENT) { + modbus.addListener(ClientSetup::init); + modbus.addListener(ClientSetup::registerEventHandlers); + } + modbus.addListener(this::onModConfigEvent); try { isBetaBuild = ModList.get().getModFileById("nuclearcraft").getMods().get(0).getVersion().getQualifier().contains("beta"); } catch (Exception e) { @@ -106,8 +90,7 @@ public static PacketHandler packetHandler() { return instance.packetHandler; } - @SubscribeEvent - public static void onModConfigEvent(final ModConfigEvent event) { + public void onModConfigEvent(final ModConfigEvent event) { if (event.getConfig().getType() == ModConfig.Type.COMMON) CommonConfig.setLoaded(); } @@ -121,35 +104,27 @@ private void registerCommands(RegisterCommandsEvent event) { FuelModelsCommand.register(event.getDispatcher()); } - private void registerClientEventHandlers(FMLClientSetupEvent event) { - ClientSetup.registerEventHandlers(event); - } - - public static ResourceLocation rl(String path) - { - return ResourceLocation.tryBuild(MODID, path); + public static ResourceLocation rl(String path) { + return ResourceLocation.fromNamespaceAndPath(MODID, path); } - public static ResourceLocation forgeRl(String path) - { - return ResourceLocation.tryBuild("forge", path); + public static ResourceLocation neoforgeRl(String path) { + return ResourceLocation.fromNamespaceAndPath("neoforge", path); } - public static ResourceLocation resourceLoc(String path) - { - return ResourceLocation.tryBuild("c", path); + public static ResourceLocation resourceLoc(String path) { + return ResourceLocation.fromNamespaceAndPath("c", path); } private void serverStopped(ServerStoppedEvent event) { NuclearCraft.instance.isNcBeStopped = true; - //stop capability tracking RadiationEvents.stopTracking(); - WorldVeinsProvider.stopTracking(); - for(ServerLevel level: event.getServer().getAllLevels()) { + for (ServerLevel level : event.getServer().getAllLevels()) { MultiblockHandler.get(level.dimension()).clear(); RadiationManager.clear(level); } } + private void gameShuttingDownEvent(GameShuttingDownEvent event) { NuclearCraft.instance.isNcBeStopped = true; } @@ -158,15 +133,6 @@ private void serverStarted(ServerStartedEvent event) { NuclearCraft.instance.isNcBeStopped = false; currentTick = 0; RadiationEvents.startTracking(); - WorldVeinsProvider.startTracking(); - } - - @SubscribeEvent - public void registerCaps(RegisterCapabilitiesEvent event) { - event.register(WorldRadiation.class); - event.register(PlayerRadiation.class); - event.register(WorldVeinOres.class); - event.register(CapabilityParticleStackHandler.class); } public static void debugLog(String message) { diff --git a/src/main/java/igentuman/nc/block/DecayGeneratorBlock.java b/src/main/java/igentuman/nc/block/DecayGeneratorBlock.java index 04fb59cd7..2d9ae7715 100644 --- a/src/main/java/igentuman/nc/block/DecayGeneratorBlock.java +++ b/src/main/java/igentuman/nc/block/DecayGeneratorBlock.java @@ -1,5 +1,6 @@ package igentuman.nc.block; +import igentuman.api.platform.NCNames; import igentuman.nc.block.entity.energy.NCEnergy; import igentuman.nc.content.energy.RTGs; import igentuman.nc.setup.registration.NCEnergyBlocks; @@ -7,10 +8,10 @@ import net.minecraft.ChatFormatting; import net.minecraft.core.BlockPos; import net.minecraft.network.chat.Component; +import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.TooltipFlag; import net.minecraft.world.item.context.BlockPlaceContext; -import net.minecraft.world.level.BlockGetter; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.EntityBlock; @@ -54,7 +55,7 @@ public BlockEntity newBlockEntity(BlockPos pPos, BlockState pState) { public String code() { - return asItem().toString(); + return NCNames.of(asItem()); } @javax.annotation.Nullable @@ -74,7 +75,7 @@ public BlockEntityTicker getTicker(Level level, Block }; } - public void appendHoverText(ItemStack pStack, @javax.annotation.Nullable BlockGetter pLevel, List list, TooltipFlag pFlag) + public void appendHoverText(ItemStack pStack, Item.TooltipContext pContext, List list, TooltipFlag pFlag) { if(isGtLoaded() && isGTEUCapEnabled()) { list.add(__("tooltip.nc.energy_eu_tier", formatEUTier(ENERGY_GENERATION.DECAY_GENERATOR.get())).withStyle(ChatFormatting.GOLD)); diff --git a/src/main/java/igentuman/nc/block/ElectromagnetBlock.java b/src/main/java/igentuman/nc/block/ElectromagnetBlock.java index 11de77ed2..06b118172 100644 --- a/src/main/java/igentuman/nc/block/ElectromagnetBlock.java +++ b/src/main/java/igentuman/nc/block/ElectromagnetBlock.java @@ -1,12 +1,13 @@ package igentuman.nc.block; +import igentuman.api.platform.NCNames; import igentuman.nc.content.Electromagnets; import igentuman.nc.util.TextUtils; import net.minecraft.ChatFormatting; import net.minecraft.network.chat.Component; +import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.TooltipFlag; -import net.minecraft.world.level.BlockGetter; import net.minecraft.world.level.block.*; import java.util.List; @@ -21,7 +22,7 @@ public ElectromagnetBlock(Properties pProperties) { public String name() { - return asItem().toString().replace("_slope", ""); + return NCNames.of(asItem()).replace("_slope", ""); } public Electromagnets.MagnetPrefab prefab() @@ -41,7 +42,7 @@ public int getMaxTemperature() { return prefab().getMaxTemp(); } - public void appendHoverText(ItemStack pStack, @javax.annotation.Nullable BlockGetter pLevel, List list, TooltipFlag pFlag) + public void appendHoverText(ItemStack pStack, Item.TooltipContext pContext, List list, TooltipFlag pFlag) { list.add(TextUtils.applyFormat( translatable("tooltip.nc.rf_amplifier.power", numberFormat(prefab().getPower())), @@ -61,6 +62,6 @@ public void appendHoverText(ItemStack pStack, @javax.annotation.Nullable BlockGe } public int getHeatRate() { - return prefab().getHeatRate(); + return prefab().getHeat(); } } diff --git a/src/main/java/igentuman/nc/block/GlowingMushroomBlock.java b/src/main/java/igentuman/nc/block/GlowingMushroomBlock.java index d1b31a1b8..bfa053017 100644 --- a/src/main/java/igentuman/nc/block/GlowingMushroomBlock.java +++ b/src/main/java/igentuman/nc/block/GlowingMushroomBlock.java @@ -1,21 +1,27 @@ package igentuman.nc.block; import net.minecraft.core.BlockPos; -import net.minecraft.core.Direction; import net.minecraft.server.level.ServerLevel; -import net.minecraft.tags.BlockTags; import net.minecraft.util.RandomSource; import net.minecraft.world.level.BlockGetter; -import net.minecraft.world.level.Level; import net.minecraft.world.level.LevelReader; -import net.minecraft.world.level.block.MushroomBlock; +import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.state.BlockBehaviour; import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.phys.shapes.CollisionContext; +import net.minecraft.world.phys.shapes.VoxelShape; -public class GlowingMushroomBlock extends MushroomBlock { +public class GlowingMushroomBlock extends Block { + + protected static final VoxelShape SHAPE = Block.box(5.0D, 0.0D, 5.0D, 11.0D, 6.0D, 11.0D); public GlowingMushroomBlock(BlockBehaviour.Properties pProperties) { - super(pProperties, null); + super(pProperties); + } + + @Override + public VoxelShape getShape(BlockState pState, BlockGetter pLevel, BlockPos pPos, CollisionContext pContext) { + return SHAPE; } public boolean propagatesSkylightDown(BlockState pState, BlockGetter pLevel, BlockPos pPos) { @@ -28,28 +34,16 @@ public int getLightEmission(BlockState state, BlockGetter level, BlockPos pos) { } @Override - public boolean isValidBonemealTarget(LevelReader pLevel, BlockPos pPos, BlockState pState, boolean pIsClient) { - return false; - } - - public boolean isBonemealSuccess(Level pLevel, RandomSource pRandom, BlockPos pPos, BlockState pState) { - return false; - } - - @Override - public void performBonemeal(ServerLevel pLevel, RandomSource pRandom, BlockPos pPos, BlockState pState) { - } - public boolean canSurvive(BlockState pState, LevelReader pLevel, BlockPos pPos) { BlockPos blockpos = pPos.below(); BlockState blockstate = pLevel.getBlockState(blockpos); - return blockstate.isSolidRender(pLevel, pPos); + return blockstate.isSolidRender(pLevel, blockpos); } + @Override public void randomTick(BlockState pState, ServerLevel pLevel, BlockPos pPos, RandomSource pRandom) { if (pRandom.nextInt(50) == 0) { int i = 5; - int j = 4; for(BlockPos blockpos : BlockPos.betweenClosed(pPos.offset(-4, -1, -4), pPos.offset(4, 1, 4))) { if (pLevel.getBlockState(blockpos).is(this)) { @@ -74,6 +68,5 @@ public void randomTick(BlockState pState, ServerLevel pLevel, BlockPos pPos, Ran pLevel.setBlock(blockpos1, pState, 2); } } - } } diff --git a/src/main/java/igentuman/nc/block/MultiblockBlock.java b/src/main/java/igentuman/nc/block/MultiblockBlock.java index 56fa1cdf7..b877fcd45 100644 --- a/src/main/java/igentuman/nc/block/MultiblockBlock.java +++ b/src/main/java/igentuman/nc/block/MultiblockBlock.java @@ -1,5 +1,6 @@ package igentuman.nc.block; +import igentuman.api.platform.NCNames; import igentuman.nc.multiblock.MultiblockHandler; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; @@ -10,7 +11,8 @@ import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.SoundType; import net.minecraft.world.level.block.state.BlockState; -import net.minecraftforge.registries.ForgeRegistries; +import net.minecraft.core.registries.BuiltInRegistries; +import net.neoforged.neoforge.registries.NeoForgeRegistries; import org.jetbrains.annotations.NotNull; import static igentuman.nc.multiblock.fission.FissionReactorRegistration.TRANSPARENT_BLOCKS; @@ -28,18 +30,18 @@ public BlockState getStateForPlacement(BlockPlaceContext context) { public String getCode() { - return ForgeRegistries.BLOCKS.getKey(this).getPath(); + return BuiltInRegistries.BLOCK.getKey(this).getPath(); } @Override @Deprecated public boolean skipRendering(@NotNull BlockState state, @NotNull BlockState adjacentBlockState, @NotNull Direction side) { - return adjacentBlockState.getBlock().equals(this) && TRANSPARENT_BLOCKS.matcher(asItem().toString()).matches(); + return adjacentBlockState.getBlock().equals(this) && TRANSPARENT_BLOCKS.matcher(NCNames.of(asItem())).matches(); } @Override public float getShadeBrightness(BlockState pState, BlockGetter pLevel, BlockPos pPos) { - return TRANSPARENT_BLOCKS.matcher(asItem().toString()).matches() ? 1.0F : super.getShadeBrightness(pState, pLevel, pPos); + return TRANSPARENT_BLOCKS.matcher(NCNames.of(asItem())).matches() ? 1.0F : super.getShadeBrightness(pState, pLevel, pPos); } @Override @@ -64,6 +66,6 @@ public void onRemove(BlockState state, Level level, BlockPos pos, BlockState new @Override public boolean propagatesSkylightDown(BlockState pState, BlockGetter pLevel, BlockPos pPos) { - return TRANSPARENT_BLOCKS.matcher(asItem().toString()).matches(); + return TRANSPARENT_BLOCKS.matcher(NCNames.of(asItem())).matches(); } } diff --git a/src/main/java/igentuman/nc/block/MultiblockBuilderBlock.java b/src/main/java/igentuman/nc/block/MultiblockBuilderBlock.java index 186c87b20..9fb84c3cb 100644 --- a/src/main/java/igentuman/nc/block/MultiblockBuilderBlock.java +++ b/src/main/java/igentuman/nc/block/MultiblockBuilderBlock.java @@ -1,5 +1,6 @@ package igentuman.nc.block; +import igentuman.api.platform.NCNames; import igentuman.nc.block.entity.MultiblockBuilderBE; import igentuman.nc.container.MultiblockBuilderContainer; import igentuman.nc.util.TextUtils; @@ -8,18 +9,19 @@ import net.minecraft.core.Direction; import net.minecraft.network.chat.Component; import net.minecraft.server.level.ServerPlayer; -import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResult; import net.minecraft.world.MenuProvider; import net.minecraft.world.entity.player.Inventory; import net.minecraft.world.entity.player.Player; import net.minecraft.world.inventory.AbstractContainerMenu; +import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.Items; import net.minecraft.world.item.TooltipFlag; import net.minecraft.world.item.context.BlockPlaceContext; import net.minecraft.world.level.BlockGetter; import net.minecraft.world.level.Level; +import com.mojang.serialization.MapCodec; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.EntityBlock; import net.minecraft.world.level.block.HorizontalDirectionalBlock; @@ -33,7 +35,7 @@ import net.minecraft.world.level.block.state.properties.DirectionProperty; import net.minecraft.world.level.block.state.properties.IntegerProperty; import net.minecraft.world.phys.BlockHitResult; -import net.minecraftforge.network.NetworkHooks; + import org.jetbrains.annotations.Nullable; import java.util.List; @@ -61,6 +63,11 @@ public MultiblockBuilderBlock(Properties pProperties) { ); } + @Override + protected MapCodec codec() { + return simpleCodec(MultiblockBuilderBlock::new); + } + @Override public boolean isSignalSource(BlockState state) { return true; @@ -83,8 +90,7 @@ public BlockEntity newBlockEntity(BlockPos pPos, BlockState pState) { } @Override - public InteractionResult use(BlockState state, Level level, BlockPos pos, Player player, InteractionHand hand, BlockHitResult result) { - + protected InteractionResult useWithoutItem(BlockState state, Level level, BlockPos pos, Player player, BlockHitResult result) { if (!level.isClientSide()) { BlockEntity be = level.getBlockEntity(pos); if (be instanceof MultiblockBuilderBE) { @@ -99,7 +105,7 @@ public AbstractContainerMenu createMenu(int windowId, Inventory playerInventory, return new MultiblockBuilderContainer(windowId, pos, playerInventory); } }; - NetworkHooks.openScreen((ServerPlayer) player, containerProvider, be.getBlockPos()); + ((ServerPlayer) player).openMenu(containerProvider, be.getBlockPos()); } } return InteractionResult.SUCCESS; @@ -129,8 +135,8 @@ public boolean canConnectRedstone(BlockState state, BlockGetter world, BlockPos @Override - public void appendHoverText(ItemStack pStack, @javax.annotation.Nullable BlockGetter pLevel, List list, TooltipFlag pFlag) { - if(asItem().toString().contains("empty") || this.asItem().equals(Items.AIR)) return; + public void appendHoverText(ItemStack pStack, Item.TooltipContext pContext, List list, TooltipFlag pFlag) { + if(NCNames.of(asItem()).contains("empty") || this.asItem().equals(Items.AIR)) return; list.add(TextUtils.applyFormat(__("nc.multiblock_builder.description"), ChatFormatting.AQUA)); } diff --git a/src/main/java/igentuman/nc/block/MultiblockControllerBlock.java b/src/main/java/igentuman/nc/block/MultiblockControllerBlock.java index f7c40a38d..ea023f64d 100644 --- a/src/main/java/igentuman/nc/block/MultiblockControllerBlock.java +++ b/src/main/java/igentuman/nc/block/MultiblockControllerBlock.java @@ -1,9 +1,10 @@ package igentuman.nc.block; +import igentuman.api.platform.NCItemStacks; +import igentuman.api.platform.NCLevels; import igentuman.nc.block.entity.MultiblockControllerBE; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; -import net.minecraft.nbt.CompoundTag; import net.minecraft.stats.Stats; import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.entity.item.ItemEntity; @@ -11,6 +12,7 @@ import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.context.BlockPlaceContext; import net.minecraft.world.level.Level; +import com.mojang.serialization.MapCodec; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.HorizontalDirectionalBlock; import net.minecraft.world.level.block.entity.BlockEntity; @@ -32,6 +34,11 @@ protected MultiblockControllerBlock(Properties pProperties) { ); } + @Override + protected MapCodec codec() { + return simpleCodec(MultiblockControllerBlock::new); + } + @Override public BlockState getStateForPlacement(BlockPlaceContext context) { return this.defaultBlockState().setValue(FACING, context.getHorizontalDirection().getOpposite()); @@ -47,10 +54,9 @@ protected void createBlockStateDefinition(StateDefinition.Builder effect; private int duration; private int level; public NCFluidBlock(NCFluids.FluidEntry entry, Properties props) { - super(entry.getStillGetter(), Util.make(props, $ -> entryStatic = entry).noOcclusion().noCollission().noLootTable()); + super(entry.getStill(), Util.make(props, $ -> entryStatic = entry).noOcclusion().noCollission().noLootTable()); this.entry = entry; entryStatic = null; @@ -46,14 +46,14 @@ public NCFluidBlock(NCFluids.FluidEntry entry, Properties props) @Override public boolean isFireSource(BlockState state, LevelReader level, BlockPos pos, Direction direction) { - return getFluid().getFluidType().getTemperature() > 600; + return entry.getStill().getFluidType().getTemperature() > 600; } @Override public int getLightEmission(BlockState state, BlockGetter level, BlockPos pos) { - if(getFluid().getFluidType().getTemperature() > 600) { + if(entry.getStill().getFluidType().getTemperature() > 600) { return 5; } return 0; @@ -84,7 +84,7 @@ T withCopiedValue(Property prop, T oldState, StateHolder copyFrom) return oldState.setValue(prop, copyFrom.getValue(prop)); } - public void setEffect(@Nonnull MobEffect effect, int duration, int level) + public void setEffect(@Nonnull Holder effect, int duration, int level) { this.effect = effect; this.duration = duration; @@ -97,10 +97,10 @@ public void entityInside(@Nonnull BlockState state, @Nonnull Level worldIn, @Non super.entityInside(state, worldIn, pos, entityIn); if(effect!=null&&entityIn instanceof LivingEntity) ((LivingEntity)entityIn).addEffect(new MobEffectInstance(effect, duration, level)); - if(getFluid().getFluidType().getTemperature() > 600) { - entityIn.setSecondsOnFire(1); + if(entry.getStill().getFluidType().getTemperature() > 600) { + entityIn.igniteForSeconds(1); } - if(getFluid().getFluidType().toString().contains("acid")) { + if(entry.getStill().getFluidType().toString().contains("acid")) { entityIn.hurt(NCDamageSources.ACID, 1.0F); } } diff --git a/src/main/java/igentuman/nc/block/PortalBlock.java b/src/main/java/igentuman/nc/block/PortalBlock.java index f47a9ad61..451618f04 100644 --- a/src/main/java/igentuman/nc/block/PortalBlock.java +++ b/src/main/java/igentuman/nc/block/PortalBlock.java @@ -10,6 +10,7 @@ import net.minecraft.server.level.ServerLevel; import net.minecraft.server.level.ServerPlayer; import net.minecraft.world.entity.Entity; +import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.TooltipFlag; import net.minecraft.world.level.BlockGetter; @@ -65,16 +66,13 @@ private void teleportTo(Entity player, BlockPos pPos) { ServerLevel portalDimension = minecraftserver.getLevel(resourcekey); if (portalDimension != null && !player.isPassenger()) { - if(resourcekey == Dimensions.WASTELAND) { - player.changeDimension(portalDimension, new ModTeleporter(pPos)); - } else { - player.changeDimension(portalDimension, new ModTeleporter(pPos)); - } + ModTeleporter teleporter = new ModTeleporter(pPos); + player.changeDimension(teleporter.createTransition(player, portalDimension)); } } } - public void appendHoverText(ItemStack pStack, @javax.annotation.Nullable BlockGetter pLevel, List list, TooltipFlag pFlag) + public void appendHoverText(ItemStack pStack, Item.TooltipContext pContext, List list, TooltipFlag pFlag) { if(!DIMENSION_CONFIG.registerWasteland.get()) { list.add(__("tooltip.nc.wasteland.disabled").withStyle(ChatFormatting.RED)); diff --git a/src/main/java/igentuman/nc/block/ProcessorBlock.java b/src/main/java/igentuman/nc/block/ProcessorBlock.java index acc5af6f5..06381bdff 100644 --- a/src/main/java/igentuman/nc/block/ProcessorBlock.java +++ b/src/main/java/igentuman/nc/block/ProcessorBlock.java @@ -1,5 +1,8 @@ package igentuman.nc.block; +import igentuman.api.platform.NCItemStacks; +import igentuman.api.platform.NCLevels; +import igentuman.api.platform.NCNames; import igentuman.nc.block.entity.processor.NCProcessorBE; import igentuman.nc.content.processors.Processors; import igentuman.nc.setup.registration.NCProcessors; @@ -11,7 +14,6 @@ import net.minecraft.network.chat.Component; import net.minecraft.server.level.ServerPlayer; import net.minecraft.stats.Stats; -import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResult; import net.minecraft.world.MenuProvider; import net.minecraft.world.entity.LivingEntity; @@ -25,6 +27,7 @@ import net.minecraft.world.item.context.BlockPlaceContext; import net.minecraft.world.level.BlockGetter; import net.minecraft.world.level.Level; +import com.mojang.serialization.MapCodec; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.EntityBlock; import net.minecraft.world.level.block.HorizontalDirectionalBlock; @@ -38,7 +41,7 @@ import net.minecraft.world.level.block.state.properties.BooleanProperty; import net.minecraft.world.level.block.state.properties.DirectionProperty; import net.minecraft.world.phys.BlockHitResult; -import net.minecraftforge.network.NetworkHooks; + import org.jetbrains.annotations.Nullable; import java.lang.reflect.InvocationTargetException; @@ -52,8 +55,14 @@ import static igentuman.nc.util.TextUtils.__; public class ProcessorBlock extends HorizontalDirectionalBlock implements EntityBlock { + public static final MapCodec CODEC = simpleCodec(ProcessorBlock::new); public static final DirectionProperty HORIZONTAL_FACING = FACING; public static final BooleanProperty ACTIVE = BlockStateProperties.POWERED; + + @Override + protected MapCodec codec() { + return CODEC; + } public ProcessorBlock() { this(Properties.of() .sound(SoundType.METAL) @@ -87,16 +96,16 @@ public BlockEntity newBlockEntity(BlockPos pPos, BlockState pState) { public String processorCode() { - return asItem().toString(); + return NCNames.of(asItem()); } @Override public void setPlacedBy(Level world, BlockPos pos, BlockState state, LivingEntity placer, ItemStack stack) { super.setPlacedBy(world, pos, state, placer, stack); - NCProcessorBE tileEntity = (NCProcessorBE) world.getExistingBlockEntity(pos); - if (stack.hasTag()) { - CompoundTag nbtData = stack.getTag(); - tileEntity.load(nbtData); + NCProcessorBE tileEntity = (NCProcessorBE) NCLevels.getExistingBlockEntity(world, pos); + if (NCItemStacks.hasCustomData(stack)) { + CompoundTag nbtData = NCItemStacks.getTag(stack); + tileEntity.loadCustomOnly(nbtData, world.registryAccess()); } if(placer instanceof ServerPlayer player) { tileEntity.setPlayer(player); @@ -111,7 +120,7 @@ public void playerDestroy(Level pLevel, Player pPlayer, BlockPos pPos, BlockStat CompoundTag data = processorBe.getTagForStack(); ItemStack drop = new ItemStack(this); - drop.setTag(data); + NCItemStacks.setTag(drop, data); if (!pLevel.isClientSide()) { ItemEntity itemEntity = new ItemEntity(pLevel, pPos.getX(), pPos.getY(), pPos.getZ(), drop, pLevel.random.nextDouble() * 0.1D - 0.05D, 0.15D, pLevel.random.nextDouble() * 0.1D - 0.05D); itemEntity.setDefaultPickUpDelay(); @@ -120,9 +129,9 @@ public void playerDestroy(Level pLevel, Player pPlayer, BlockPos pPos, BlockStat } @Override - public InteractionResult use(BlockState state, Level level, BlockPos pos, Player player, InteractionHand hand, BlockHitResult result) { + protected InteractionResult useWithoutItem(BlockState state, Level level, BlockPos pos, Player player, BlockHitResult result) { if (!level.isClientSide()) { - BlockEntity be = level.getExistingBlockEntity(pos); + BlockEntity be = NCLevels.getExistingBlockEntity(level, pos); if (be instanceof NCProcessorBE) { MenuProvider containerProvider = new MenuProvider() { @Override @@ -140,7 +149,7 @@ public AbstractContainerMenu createMenu(int windowId, Inventory playerInventory, return null; } }; - NetworkHooks.openScreen((ServerPlayer) player, containerProvider, be.getBlockPos()); + ((ServerPlayer) player).openMenu(containerProvider, be.getBlockPos()); } } return InteractionResult.SUCCESS; diff --git a/src/main/java/igentuman/nc/block/RFAmplifierBlock.java b/src/main/java/igentuman/nc/block/RFAmplifierBlock.java index 9ad6def9b..bda967a76 100644 --- a/src/main/java/igentuman/nc/block/RFAmplifierBlock.java +++ b/src/main/java/igentuman/nc/block/RFAmplifierBlock.java @@ -1,12 +1,13 @@ package igentuman.nc.block; +import igentuman.api.platform.NCNames; import igentuman.nc.content.RFAmplifier; import igentuman.nc.util.TextUtils; import net.minecraft.ChatFormatting; import net.minecraft.network.chat.Component; +import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.TooltipFlag; -import net.minecraft.world.level.BlockGetter; import net.minecraft.world.level.block.Block; import java.util.List; @@ -24,7 +25,7 @@ public RFAmplifierBlock(Properties pProperties) { public String name() { - return asItem().toString(); + return NCNames.of(asItem()); } public RFAmplifier.RFAmplifierPrefab prefab() @@ -44,7 +45,7 @@ public double getEfficiency() { public int getMaxTemperature() { return prefab().getMaxTemp(); } - public void appendHoverText(ItemStack pStack, @javax.annotation.Nullable BlockGetter pLevel, List list, TooltipFlag pFlag) + public void appendHoverText(ItemStack pStack, Item.TooltipContext pContext, List list, TooltipFlag pFlag) { if(isGtLoaded() && isGTEUCapEnabled()) { list.add(__("tooltip.nc.eu_amplifier.power", formatEUEnergy(prefab().getPower())).withStyle(ChatFormatting.GOLD)); diff --git a/src/main/java/igentuman/nc/block/RTGBlock.java b/src/main/java/igentuman/nc/block/RTGBlock.java index 5eeeefd8d..0af7ae182 100644 --- a/src/main/java/igentuman/nc/block/RTGBlock.java +++ b/src/main/java/igentuman/nc/block/RTGBlock.java @@ -1,5 +1,6 @@ package igentuman.nc.block; +import igentuman.api.platform.NCNames; import igentuman.nc.block.entity.energy.NCEnergy; import igentuman.nc.content.energy.RTGs; import igentuman.nc.content.energy.SolarPanels; @@ -8,10 +9,10 @@ import net.minecraft.ChatFormatting; import net.minecraft.core.BlockPos; import net.minecraft.network.chat.Component; +import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.TooltipFlag; import net.minecraft.world.item.context.BlockPlaceContext; -import net.minecraft.world.level.BlockGetter; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.EntityBlock; @@ -53,7 +54,7 @@ public BlockEntity newBlockEntity(BlockPos pPos, BlockState pState) { public String code() { - return asItem().toString(); + return NCNames.of(asItem()); } @javax.annotation.Nullable @@ -74,7 +75,7 @@ public BlockEntityTicker getTicker(Level level, Block } - public void appendHoverText(ItemStack pStack, @javax.annotation.Nullable BlockGetter pLevel, List list, TooltipFlag pFlag) + public void appendHoverText(ItemStack pStack, Item.TooltipContext pContext, List list, TooltipFlag pFlag) { int generation = RTGs.all().get(code()).config().getActualGeneration(); if(isGtLoaded() && isGTEUCapEnabled()) { diff --git a/src/main/java/igentuman/nc/block/RedstoneDimmerBlock.java b/src/main/java/igentuman/nc/block/RedstoneDimmerBlock.java index 0ff098dba..7df09bf0d 100644 --- a/src/main/java/igentuman/nc/block/RedstoneDimmerBlock.java +++ b/src/main/java/igentuman/nc/block/RedstoneDimmerBlock.java @@ -1,5 +1,7 @@ package igentuman.nc.block; +import igentuman.api.platform.NCLevels; +import igentuman.api.platform.NCNames; import igentuman.nc.block.entity.RedstoneDimmerBE; import igentuman.nc.container.RedstoneDImmerContainer; import igentuman.nc.util.TextUtils; @@ -8,18 +10,19 @@ import net.minecraft.core.Direction; import net.minecraft.network.chat.Component; import net.minecraft.server.level.ServerPlayer; -import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResult; import net.minecraft.world.MenuProvider; import net.minecraft.world.entity.player.Inventory; import net.minecraft.world.entity.player.Player; import net.minecraft.world.inventory.AbstractContainerMenu; +import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.Items; import net.minecraft.world.item.TooltipFlag; import net.minecraft.world.item.context.BlockPlaceContext; import net.minecraft.world.level.BlockGetter; import net.minecraft.world.level.Level; +import com.mojang.serialization.MapCodec; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.EntityBlock; import net.minecraft.world.level.block.HorizontalDirectionalBlock; @@ -33,7 +36,7 @@ import net.minecraft.world.level.block.state.properties.DirectionProperty; import net.minecraft.world.level.block.state.properties.IntegerProperty; import net.minecraft.world.phys.BlockHitResult; -import net.minecraftforge.network.NetworkHooks; + import org.jetbrains.annotations.Nullable; import java.util.List; @@ -62,6 +65,11 @@ public RedstoneDimmerBlock(Properties pProperties) { ); } + @Override + protected MapCodec codec() { + return simpleCodec(RedstoneDimmerBlock::new); + } + @Override public boolean isSignalSource(BlockState state) { return true; @@ -85,8 +93,7 @@ public BlockEntity newBlockEntity(BlockPos pPos, BlockState pState) { } @Override - public InteractionResult use(BlockState state, Level level, BlockPos pos, Player player, InteractionHand hand, BlockHitResult result) { - + protected InteractionResult useWithoutItem(BlockState state, Level level, BlockPos pos, Player player, BlockHitResult result) { /*if (!level.isClientSide()) { BlockEntity be = level.getBlockEntity(pos); if (be instanceof RedstoneDimmerBE) { @@ -101,7 +108,7 @@ public AbstractContainerMenu createMenu(int windowId, Inventory playerInventory, return new RedstoneDImmerContainer(windowId, pos, playerInventory); } }; - NetworkHooks.openScreen((ServerPlayer) player, containerProvider, be.getBlockPos()); + ((ServerPlayer) player).openMenu(containerProvider, be.getBlockPos()); } }*/ return InteractionResult.SUCCESS; @@ -132,7 +139,7 @@ public boolean canConnectRedstone(BlockState state, BlockGetter world, BlockPos @Override public int getSignal(BlockState state, BlockGetter world, BlockPos pos, Direction direction) { - BlockEntity be = world.getExistingBlockEntity(pos); + BlockEntity be = NCLevels.getExistingBlockEntity(world, pos); if (be instanceof RedstoneDimmerBE) { return ((RedstoneDimmerBE) be).output; } @@ -145,8 +152,8 @@ public int getDirectSignal(BlockState state, BlockGetter world, BlockPos pos, Di } @Override - public void appendHoverText(ItemStack pStack, @javax.annotation.Nullable BlockGetter pLevel, List list, TooltipFlag pFlag) { - if(asItem().toString().contains("empty") || this.asItem().equals(Items.AIR)) return; + public void appendHoverText(ItemStack pStack, Item.TooltipContext pContext, List list, TooltipFlag pFlag) { + if(NCNames.of(asItem()).contains("empty") || this.asItem().equals(Items.AIR)) return; list.add(TextUtils.applyFormat(__("nc.redstone_dimmer.description"), ChatFormatting.AQUA)); } diff --git a/src/main/java/igentuman/nc/block/SolarPanelBlock.java b/src/main/java/igentuman/nc/block/SolarPanelBlock.java index 54591a6a9..94e31c08b 100644 --- a/src/main/java/igentuman/nc/block/SolarPanelBlock.java +++ b/src/main/java/igentuman/nc/block/SolarPanelBlock.java @@ -1,5 +1,6 @@ package igentuman.nc.block; +import igentuman.api.platform.NCNames; import igentuman.nc.block.entity.energy.NCEnergy; import igentuman.nc.content.energy.SolarPanels; import igentuman.nc.setup.registration.NCEnergyBlocks; @@ -7,10 +8,10 @@ import net.minecraft.ChatFormatting; import net.minecraft.core.BlockPos; import net.minecraft.network.chat.Component; +import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.TooltipFlag; import net.minecraft.world.item.context.BlockPlaceContext; -import net.minecraft.world.level.BlockGetter; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.EntityBlock; @@ -60,7 +61,7 @@ public BlockEntity newBlockEntity(BlockPos pPos, BlockState pState) { public String code() { - return SolarPanels.getCode(asItem().toString()); + return SolarPanels.getCode(NCNames.of(asItem())); } @javax.annotation.Nullable @@ -80,12 +81,12 @@ public BlockEntityTicker getTicker(Level level, Block }; } - public void appendHoverText(ItemStack pStack, @javax.annotation.Nullable BlockGetter pLevel, List list, TooltipFlag pFlag) + public void appendHoverText(ItemStack pStack, Item.TooltipContext pContext, List list, TooltipFlag pFlag) { - int generation = SolarPanels.all().get(asItem().toString().replace("solar_panel_","")).getActualGeneration(); + int generation = SolarPanels.all().get(NCNames.of(asItem()).replace("solar_panel_","")).getActualGeneration(); if(isGtLoaded() && isGTEUCapEnabled()) { list.add(__("tooltip.nc.energy_eu_generation", formatEUEnergy(generation)).withStyle(ChatFormatting.GOLD)); - list.add(__("tooltip.nc.energy_eu_tier", SolarPanels.all().get(asItem().toString().replace("solar_panel_","")).getEnergyTier()).withStyle(ChatFormatting.GOLD)); + list.add(__("tooltip.nc.energy_eu_tier", SolarPanels.all().get(NCNames.of(asItem()).replace("solar_panel_","")).getEnergyTier()).withStyle(ChatFormatting.GOLD)); } if(!isGtLoaded() || !isOnlyGTCEUCapEnabled()) { list.add(TextUtils.applyFormat(__("solar_panel.fe_generation", TextUtils.numberFormat(generation)), ChatFormatting.BLUE)); diff --git a/src/main/java/igentuman/nc/block/accelerator/AcceleratorBeamPortBlock.java b/src/main/java/igentuman/nc/block/accelerator/AcceleratorBeamPortBlock.java index 955b493d0..57de32c75 100644 --- a/src/main/java/igentuman/nc/block/accelerator/AcceleratorBeamPortBlock.java +++ b/src/main/java/igentuman/nc/block/accelerator/AcceleratorBeamPortBlock.java @@ -6,10 +6,12 @@ import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.world.InteractionHand; -import net.minecraft.world.InteractionResult; +import net.minecraft.world.ItemInteractionResult; import net.minecraft.world.entity.player.Player; +import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.context.BlockPlaceContext; import net.minecraft.world.level.Level; +import com.mojang.serialization.MapCodec; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.EntityBlock; import net.minecraft.world.level.block.HorizontalDirectionalBlock; @@ -51,18 +53,23 @@ public AcceleratorBeamPortBlock(Properties pProperties) { } @Override - public @NotNull InteractionResult use(BlockState state, Level level, BlockPos pos, Player player, InteractionHand hand, BlockHitResult result) { + protected MapCodec codec() { + return simpleCodec(AcceleratorBeamPortBlock::new); + } + + @Override + protected @NotNull ItemInteractionResult useItemOn(ItemStack stack, BlockState state, Level level, BlockPos pos, Player player, InteractionHand hand, BlockHitResult result) { if (!level.isClientSide()) { - if(isMultiTool(player.getItemInHand(hand))) { + if(isMultiTool(stack)) { PortMode.Mode mode = state.getValue(PORT_MODE); PortMode.Mode newMode = mode.next(); MultiblockHandler.get(level.dimension()).addIgnoreToUpdate(pos); level.setBlockAndUpdate(pos, state.setValue(PORT_MODE, newMode)); player.sendSystemMessage(__("message.nc.switch_side.mode", newMode)); - return InteractionResult.SUCCESS; + return ItemInteractionResult.SUCCESS; } } - return InteractionResult.SUCCESS; + return ItemInteractionResult.PASS_TO_DEFAULT_BLOCK_INTERACTION; } @Override diff --git a/src/main/java/igentuman/nc/block/accelerator/AcceleratorBlock.java b/src/main/java/igentuman/nc/block/accelerator/AcceleratorBlock.java index 1c748c18d..ae0ad348a 100644 --- a/src/main/java/igentuman/nc/block/accelerator/AcceleratorBlock.java +++ b/src/main/java/igentuman/nc/block/accelerator/AcceleratorBlock.java @@ -1,10 +1,12 @@ package igentuman.nc.block.accelerator; +import igentuman.api.platform.NCNames; import igentuman.nc.block.MultiblockBlock; import net.minecraft.ChatFormatting; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.network.chat.Component; +import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.TooltipFlag; import net.minecraft.world.level.BlockGetter; @@ -12,7 +14,6 @@ import net.minecraft.world.level.block.state.BlockState; import org.jetbrains.annotations.NotNull; -import javax.annotation.Nullable; import java.util.List; import static igentuman.nc.multiblock.accelerator.AcceleratorRegistration.ACCELERATOR_BLOCKS; @@ -29,12 +30,12 @@ public AcceleratorBlock(Properties pProperties) { @Override public boolean propagatesSkylightDown(BlockState pState, BlockGetter pLevel, BlockPos pPos) { - return asItem().toString().matches(".*glass.*"); + return NCNames.of(asItem()).matches(".*glass.*"); } @Override public float getShadeBrightness(BlockState pState, BlockGetter pLevel, BlockPos pPos) { - return asItem().toString().matches(".*glass.*") ? 1.0F : 0.2F; + return NCNames.of(asItem()).matches(".*glass.*") ? 1.0F : 0.2F; } @Override @@ -44,7 +45,7 @@ public boolean skipRendering(@NotNull BlockState state, @NotNull BlockState adja } @Override - public void appendHoverText(ItemStack pStack, @Nullable BlockGetter pLevel, List list, TooltipFlag pFlag) { + public void appendHoverText(ItemStack pStack, Item.TooltipContext pContext, List list, TooltipFlag pFlag) { if(pStack.is(ACCELERATOR_BLOCKS.get("particle_beam").get().asItem())) { list.add(applyFormat(__("tooltip.nc.particle_beam.desc"), ChatFormatting.GOLD)); } diff --git a/src/main/java/igentuman/nc/block/accelerator/AcceleratorIonSourcePortBlock.java b/src/main/java/igentuman/nc/block/accelerator/AcceleratorIonSourcePortBlock.java index 779099d11..0dd23e9d1 100644 --- a/src/main/java/igentuman/nc/block/accelerator/AcceleratorIonSourcePortBlock.java +++ b/src/main/java/igentuman/nc/block/accelerator/AcceleratorIonSourcePortBlock.java @@ -1,12 +1,13 @@ package igentuman.nc.block.accelerator; +import igentuman.api.platform.NCLevels; import igentuman.nc.block.accelerator.entity.AcceleratorIonSourcePortBE; import igentuman.nc.container.AcceleratorIonSourcePortContainer; +import igentuman.nc.multiblock.MultiblockHandler; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.network.chat.Component; import net.minecraft.server.level.ServerPlayer; -import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResult; import net.minecraft.world.MenuProvider; import net.minecraft.world.entity.player.Inventory; @@ -14,6 +15,7 @@ import net.minecraft.world.inventory.AbstractContainerMenu; import net.minecraft.world.item.context.BlockPlaceContext; import net.minecraft.world.level.Level; +import com.mojang.serialization.MapCodec; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.EntityBlock; import net.minecraft.world.level.block.HorizontalDirectionalBlock; @@ -27,7 +29,7 @@ import net.minecraft.world.level.block.state.properties.BooleanProperty; import net.minecraft.world.level.block.state.properties.DirectionProperty; import net.minecraft.world.phys.BlockHitResult; -import net.minecraftforge.network.NetworkHooks; + import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -53,6 +55,12 @@ public AcceleratorIonSourcePortBlock(Properties pProperties) { .setValue(POWERED, false) ); } + + @Override + protected MapCodec codec() { + return simpleCodec(AcceleratorIonSourcePortBlock::new); + } + @Override public BlockState getStateForPlacement(BlockPlaceContext context) { return this.defaultBlockState().setValue(FACING, context.getHorizontalDirection().getOpposite()); @@ -71,10 +79,23 @@ public BlockEntity newBlockEntity(@NotNull BlockPos pPos, @NotNull BlockState pS } @Override - public InteractionResult use(@NotNull BlockState state, Level level, @NotNull BlockPos pos, @NotNull Player player, InteractionHand hand, BlockHitResult result) { + public void onPlace(BlockState pState, Level pLevel, BlockPos pPos, BlockState pOldState, boolean pMovedByPiston) { + super.onPlace(pState, pLevel, pPos, pOldState, pMovedByPiston); + MultiblockHandler.get(pLevel.dimension()).trackBlockChange(pPos, true); + } + + @Override + public void onRemove(BlockState state, Level level, BlockPos pos, BlockState newState, boolean isMoving) { + super.onRemove(state, level, pos, newState, isMoving); + if(level.isClientSide()) return; + MultiblockHandler.get(level.dimension()).trackBlockChange(pos, true); + } + + @Override + protected InteractionResult useWithoutItem(BlockState state, Level level, BlockPos pos, Player player, BlockHitResult result) { if (!level.isClientSide()) { - BlockEntity be = level.getExistingBlockEntity(pos); + BlockEntity be = NCLevels.getExistingBlockEntity(level, pos); if (be instanceof AcceleratorIonSourcePortBE) { MenuProvider containerProvider = new MenuProvider() { @@ -88,7 +109,7 @@ public AbstractContainerMenu createMenu(int windowId, @NotNull Inventory playerI return new AcceleratorIonSourcePortContainer(windowId, pos, playerInventory); } }; - NetworkHooks.openScreen((ServerPlayer) player, containerProvider, be.getBlockPos()); + ((ServerPlayer) player).openMenu(containerProvider, be.getBlockPos()); } } return InteractionResult.SUCCESS; diff --git a/src/main/java/igentuman/nc/block/accelerator/AcceleratorOrientedBlock.java b/src/main/java/igentuman/nc/block/accelerator/AcceleratorOrientedBlock.java index 1bed6611d..b68f1eb14 100644 --- a/src/main/java/igentuman/nc/block/accelerator/AcceleratorOrientedBlock.java +++ b/src/main/java/igentuman/nc/block/accelerator/AcceleratorOrientedBlock.java @@ -2,10 +2,10 @@ import net.minecraft.core.Direction; import net.minecraft.network.chat.Component; +import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.TooltipFlag; import net.minecraft.world.item.context.BlockPlaceContext; -import net.minecraft.world.level.BlockGetter; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.HorizontalDirectionalBlock; import net.minecraft.world.level.block.state.BlockState; @@ -14,7 +14,6 @@ import net.minecraft.world.level.block.state.properties.BooleanProperty; import net.minecraft.world.level.block.state.properties.DirectionProperty; -import javax.annotation.Nullable; import java.util.List; public class AcceleratorOrientedBlock extends AcceleratorBlock { @@ -41,7 +40,7 @@ protected void createBlockStateDefinition(StateDefinition.Builder list, TooltipFlag pFlag) { + public void appendHoverText(ItemStack pStack, Item.TooltipContext pContext, List list, TooltipFlag pFlag) { //list.add(__("tooltip.kugelblitz.block_" + pStack.getItem()).withStyle(ChatFormatting.AQUA)); //list.add(__("multiblock.build_in_chunk.advise").withStyle(ChatFormatting.GREEN)); } diff --git a/src/main/java/igentuman/nc/block/accelerator/AcceleratorPortBlock.java b/src/main/java/igentuman/nc/block/accelerator/AcceleratorPortBlock.java index f0a6b1a69..52308e002 100644 --- a/src/main/java/igentuman/nc/block/accelerator/AcceleratorPortBlock.java +++ b/src/main/java/igentuman/nc/block/accelerator/AcceleratorPortBlock.java @@ -1,23 +1,25 @@ package igentuman.nc.block.accelerator; +import igentuman.api.platform.NCLevels; import igentuman.nc.block.accelerator.entity.AcceleratorPortBE; import igentuman.nc.container.AcceleratorPortContainer; +import igentuman.nc.multiblock.MultiblockHandler; import net.minecraft.ChatFormatting; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.network.chat.Component; import net.minecraft.server.level.ServerPlayer; -import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResult; import net.minecraft.world.MenuProvider; import net.minecraft.world.entity.player.Inventory; import net.minecraft.world.entity.player.Player; import net.minecraft.world.inventory.AbstractContainerMenu; +import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.TooltipFlag; import net.minecraft.world.item.context.BlockPlaceContext; -import net.minecraft.world.level.BlockGetter; import net.minecraft.world.level.Level; +import com.mojang.serialization.MapCodec; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.EntityBlock; import net.minecraft.world.level.block.HorizontalDirectionalBlock; @@ -31,7 +33,7 @@ import net.minecraft.world.level.block.state.properties.BooleanProperty; import net.minecraft.world.level.block.state.properties.DirectionProperty; import net.minecraft.world.phys.BlockHitResult; -import net.minecraftforge.network.NetworkHooks; + import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -63,6 +65,12 @@ public AcceleratorPortBlock(Properties pProperties) { .setValue(POWERED, false) ); } + + @Override + protected MapCodec codec() { + return simpleCodec(AcceleratorPortBlock::new); + } + @Override public BlockState getStateForPlacement(BlockPlaceContext context) { return this.defaultBlockState().setValue(FACING, context.getHorizontalDirection().getOpposite()); @@ -81,10 +89,23 @@ public BlockEntity newBlockEntity(@NotNull BlockPos pPos, @NotNull BlockState pS } @Override - public InteractionResult use(@NotNull BlockState state, Level level, @NotNull BlockPos pos, @NotNull Player player, InteractionHand hand, BlockHitResult result) { + public void onPlace(BlockState pState, Level pLevel, BlockPos pPos, BlockState pOldState, boolean pMovedByPiston) { + super.onPlace(pState, pLevel, pPos, pOldState, pMovedByPiston); + MultiblockHandler.get(pLevel.dimension()).trackBlockChange(pPos, true); + } + + @Override + public void onRemove(BlockState state, Level level, BlockPos pos, BlockState newState, boolean isMoving) { + super.onRemove(state, level, pos, newState, isMoving); + if(level.isClientSide()) return; + MultiblockHandler.get(level.dimension()).trackBlockChange(pos, true); + } + + @Override + protected InteractionResult useWithoutItem(BlockState state, Level level, BlockPos pos, Player player, BlockHitResult result) { if (!level.isClientSide()) { - BlockEntity be = level.getExistingBlockEntity(pos); + BlockEntity be = NCLevels.getExistingBlockEntity(level, pos); if (be instanceof AcceleratorPortBE) { MenuProvider containerProvider = new MenuProvider() { @@ -98,13 +119,13 @@ public AbstractContainerMenu createMenu(int windowId, @NotNull Inventory playerI return new AcceleratorPortContainer(windowId, pos, playerInventory); } }; - NetworkHooks.openScreen((ServerPlayer) player, containerProvider, be.getBlockPos()); + ((ServerPlayer) player).openMenu(containerProvider, be.getBlockPos()); } } return InteractionResult.SUCCESS; } - public void appendHoverText(ItemStack pStack, @javax.annotation.Nullable BlockGetter pLevel, List list, TooltipFlag pFlag) + public void appendHoverText(ItemStack pStack, Item.TooltipContext pContext, List list, TooltipFlag pFlag) { if(isGtLoaded() && isGTEUCapEnabled()) { list.add(__("tooltip.nc.energy_eu_tier.depends_on_controller").withStyle(ChatFormatting.GOLD)); diff --git a/src/main/java/igentuman/nc/block/accelerator/CoolerBlock.java b/src/main/java/igentuman/nc/block/accelerator/CoolerBlock.java index 6898857ba..8e6e99452 100644 --- a/src/main/java/igentuman/nc/block/accelerator/CoolerBlock.java +++ b/src/main/java/igentuman/nc/block/accelerator/CoolerBlock.java @@ -1,5 +1,6 @@ package igentuman.nc.block.accelerator; +import igentuman.api.platform.NCNames; import igentuman.nc.block.MultiblockBlock; import igentuman.nc.multiblock.AbstractMultiblock; import igentuman.nc.multiblock.accelerator.CoolerDef; @@ -9,18 +10,18 @@ import net.minecraft.network.chat.Component; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.InteractionHand; -import net.minecraft.world.InteractionResult; +import net.minecraft.world.ItemInteractionResult; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.TooltipFlag; -import net.minecraft.world.level.BlockGetter; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.SoundType; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.phys.BlockHitResult; -import net.minecraftforge.registries.ForgeRegistries; +import net.minecraft.core.registries.BuiltInRegistries; +import net.neoforged.neoforge.registries.NeoForgeRegistries; import java.util.ArrayList; import java.util.List; @@ -106,7 +107,7 @@ private List getBlockNames(String rawLine) { String id = code; if(!id.contains(":")) { ResourceLocation res = rl(id); - Block block = ForgeRegistries.BLOCKS.getValue(res); + Block block = BuiltInRegistries.BLOCK.get(res); names.add(block.getName().getString()); } else { names.add(convertToName(id.split(":")[1])); @@ -117,16 +118,17 @@ private List getBlockNames(String rawLine) { private void initParams() { Item item = Item.byBlock(this); - if(item.toString().isEmpty()) return; - if(item.toString().contains("empty")) return; - type = item.toString().replace("_cooler", ""); + String name = NCNames.of(item); + if(name.isEmpty()) return; + if(name.contains("empty")) return; + type = name.replace("_cooler", ""); def = COOLERS.get(type); heat = def.getHeat(); } @Override - public InteractionResult use(BlockState state, Level level, BlockPos pos, Player player, InteractionHand hand, BlockHitResult result) { - if(!player.getItemInHand(hand).isEmpty()) return InteractionResult.FAIL; + protected ItemInteractionResult useItemOn(ItemStack stack, BlockState state, Level level, BlockPos pos, Player player, InteractionHand hand, BlockHitResult result) { + if(!stack.isEmpty()) return ItemInteractionResult.PASS_TO_DEFAULT_BLOCK_INTERACTION; if (!level.isClientSide()) { Block block = level.getBlockState(pos).getBlock(); if(block instanceof CoolerBlock) { @@ -138,12 +140,12 @@ public InteractionResult use(BlockState state, Level level, BlockPos pos, Player } } } - return InteractionResult.SUCCESS; + return ItemInteractionResult.SUCCESS; } @Override - public void appendHoverText(ItemStack pStack, @javax.annotation.Nullable BlockGetter pLevel, List list, TooltipFlag pFlag) { - if(asItem().toString().contains("empty")) return; + public void appendHoverText(ItemStack pStack, Item.TooltipContext pContext, List list, TooltipFlag pFlag) { + if(NCNames.of(asItem()).contains("empty")) return; initParams(); list.add(TextUtils.applyFormat(__("heat_sink.heat.descr", TextUtils.numberFormat(heat)), ChatFormatting.GOLD)); if(DESCRIPTIONS_SHOW) { diff --git a/src/main/java/igentuman/nc/block/accelerator/LinearAcceleratorControllerBlock.java b/src/main/java/igentuman/nc/block/accelerator/LinearAcceleratorControllerBlock.java index cf240f587..b04983f92 100644 --- a/src/main/java/igentuman/nc/block/accelerator/LinearAcceleratorControllerBlock.java +++ b/src/main/java/igentuman/nc/block/accelerator/LinearAcceleratorControllerBlock.java @@ -1,5 +1,7 @@ package igentuman.nc.block.accelerator; +import igentuman.api.platform.NCItemStacks; +import igentuman.api.platform.NCLevels; import igentuman.nc.block.MultiblockControllerBlock; import igentuman.nc.block.accelerator.entity.LinearAcceleratorControllerBE; import igentuman.nc.container.LinearAcceleratorContainer; @@ -9,15 +11,14 @@ import net.minecraft.core.Direction; import net.minecraft.network.chat.Component; import net.minecraft.server.level.ServerPlayer; -import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResult; import net.minecraft.world.MenuProvider; import net.minecraft.world.entity.player.Inventory; import net.minecraft.world.entity.player.Player; import net.minecraft.world.inventory.AbstractContainerMenu; +import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.TooltipFlag; -import net.minecraft.world.level.BlockGetter; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.EntityBlock; import net.minecraft.world.level.block.SoundType; @@ -26,7 +27,7 @@ import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.phys.BlockHitResult; -import net.minecraftforge.network.NetworkHooks; + import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -64,10 +65,10 @@ public BlockEntity newBlockEntity(@NotNull BlockPos pPos, @NotNull BlockState pS } @Override - public InteractionResult use(@NotNull BlockState state, Level level, @NotNull BlockPos pos, @NotNull Player player, InteractionHand hand, BlockHitResult result) { + protected InteractionResult useWithoutItem(BlockState state, Level level, BlockPos pos, Player player, BlockHitResult result) { if (!level.isClientSide()) { - BlockEntity be = level.getExistingBlockEntity(pos); + BlockEntity be = NCLevels.getExistingBlockEntity(level, pos); if (be instanceof LinearAcceleratorControllerBE) { MenuProvider containerProvider = new MenuProvider() { @@ -81,7 +82,7 @@ public AbstractContainerMenu createMenu(int windowId, @NotNull Inventory playerI return new LinearAcceleratorContainer(windowId, pos, playerInventory); } }; - NetworkHooks.openScreen((ServerPlayer) player, containerProvider, be.getBlockPos()); + ((ServerPlayer) player).openMenu(containerProvider, be.getBlockPos()); } } return InteractionResult.SUCCESS; @@ -121,7 +122,7 @@ public int minDepth() { } @Override - public void appendHoverText(ItemStack pStack, @javax.annotation.Nullable BlockGetter pLevel, List list, TooltipFlag pFlag) { + public void appendHoverText(ItemStack pStack, Item.TooltipContext pContext, List list, TooltipFlag pFlag) { if(isGtLoaded() && isGTEUCapEnabled()) { list.add(__("tooltip.nc.energy_eu_tier", getTier(pStack)).withStyle(ChatFormatting.GOLD)); } @@ -129,6 +130,6 @@ public void appendHoverText(ItemStack pStack, @javax.annotation.Nullable BlockGe } private CommonConfig.GTCEUCompatibilityConfig.GTCEUTier getTier(ItemStack pStack) { - return CommonConfig.GTCEUCompatibilityConfig.GTCEUTier.byId(GTCEU_CONFIG.ACCELERATORS_ENERGY_TIER.get().ordinal()+pStack.getOrCreateTag().getInt("upgrade_tier")); + return CommonConfig.GTCEUCompatibilityConfig.GTCEUTier.byId(GTCEU_CONFIG.ACCELERATORS_ENERGY_TIER.get().ordinal()+NCItemStacks.getInt(pStack, "upgrade_tier")); } } diff --git a/src/main/java/igentuman/nc/block/accelerator/RingAcceleratorControllerBlock.java b/src/main/java/igentuman/nc/block/accelerator/RingAcceleratorControllerBlock.java index 19d04f840..573b7bb04 100644 --- a/src/main/java/igentuman/nc/block/accelerator/RingAcceleratorControllerBlock.java +++ b/src/main/java/igentuman/nc/block/accelerator/RingAcceleratorControllerBlock.java @@ -1,5 +1,7 @@ package igentuman.nc.block.accelerator; +import igentuman.api.platform.NCItemStacks; +import igentuman.api.platform.NCLevels; import igentuman.nc.block.accelerator.entity.RingAcceleratorControllerBE; import igentuman.nc.container.RingAcceleratorContainer; import igentuman.nc.handler.config.CommonConfig; @@ -8,17 +10,17 @@ import net.minecraft.core.Direction; import net.minecraft.network.chat.Component; import net.minecraft.server.level.ServerPlayer; -import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResult; import net.minecraft.world.MenuProvider; import net.minecraft.world.entity.player.Inventory; import net.minecraft.world.entity.player.Player; import net.minecraft.world.inventory.AbstractContainerMenu; +import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.TooltipFlag; import net.minecraft.world.item.context.BlockPlaceContext; -import net.minecraft.world.level.BlockGetter; import net.minecraft.world.level.Level; +import com.mojang.serialization.MapCodec; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.EntityBlock; import net.minecraft.world.level.block.HorizontalDirectionalBlock; @@ -32,7 +34,7 @@ import net.minecraft.world.level.block.state.properties.BooleanProperty; import net.minecraft.world.level.block.state.properties.DirectionProperty; import net.minecraft.world.phys.BlockHitResult; -import net.minecraftforge.network.NetworkHooks; + import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -63,6 +65,12 @@ public RingAcceleratorControllerBlock(Properties pProperties) { .setValue(POWERED, false) ); } + + @Override + protected MapCodec codec() { + return simpleCodec(RingAcceleratorControllerBlock::new); + } + @Override public BlockState getStateForPlacement(BlockPlaceContext context) { return this.defaultBlockState().setValue(FACING, context.getHorizontalDirection().getOpposite()); @@ -81,10 +89,10 @@ public BlockEntity newBlockEntity(@NotNull BlockPos pPos, @NotNull BlockState pS } @Override - public InteractionResult use(@NotNull BlockState state, Level level, @NotNull BlockPos pos, @NotNull Player player, InteractionHand hand, BlockHitResult result) { + protected InteractionResult useWithoutItem(BlockState state, Level level, BlockPos pos, Player player, BlockHitResult result) { if (!level.isClientSide()) { - BlockEntity be = level.getExistingBlockEntity(pos); + BlockEntity be = NCLevels.getExistingBlockEntity(level, pos); if (be instanceof RingAcceleratorControllerBE) { MenuProvider containerProvider = new MenuProvider() { @@ -98,7 +106,7 @@ public AbstractContainerMenu createMenu(int windowId, @NotNull Inventory playerI return new RingAcceleratorContainer(windowId, pos, playerInventory); } }; - NetworkHooks.openScreen((ServerPlayer) player, containerProvider, be.getBlockPos()); + ((ServerPlayer) player).openMenu(containerProvider, be.getBlockPos()); } } return InteractionResult.SUCCESS; @@ -138,7 +146,7 @@ public int minDepth() { } @Override - public void appendHoverText(ItemStack pStack, @javax.annotation.Nullable BlockGetter pLevel, List list, TooltipFlag pFlag) { + public void appendHoverText(ItemStack pStack, Item.TooltipContext pContext, List list, TooltipFlag pFlag) { if(isGtLoaded() && isGTEUCapEnabled()) { list.add(__("tooltip.nc.energy_eu_tier", getTier(pStack)).withStyle(ChatFormatting.GOLD)); } @@ -147,6 +155,6 @@ public void appendHoverText(ItemStack pStack, @javax.annotation.Nullable BlockGe } private CommonConfig.GTCEUCompatibilityConfig.GTCEUTier getTier(ItemStack pStack) { - return CommonConfig.GTCEUCompatibilityConfig.GTCEUTier.byId(GTCEU_CONFIG.ACCELERATORS_ENERGY_TIER.get().ordinal()+pStack.getOrCreateTag().getInt("upgrade_tier")); + return CommonConfig.GTCEUCompatibilityConfig.GTCEUTier.byId(GTCEU_CONFIG.ACCELERATORS_ENERGY_TIER.get().ordinal()+NCItemStacks.getInt(pStack, "upgrade_tier")); } } diff --git a/src/main/java/igentuman/nc/block/accelerator/entity/AbstractAcceleratorControllerBE.java b/src/main/java/igentuman/nc/block/accelerator/entity/AbstractAcceleratorControllerBE.java index 210fd3287..e88d28957 100644 --- a/src/main/java/igentuman/nc/block/accelerator/entity/AbstractAcceleratorControllerBE.java +++ b/src/main/java/igentuman/nc/block/accelerator/entity/AbstractAcceleratorControllerBE.java @@ -12,27 +12,23 @@ import igentuman.nc.util.annotation.NBTField; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; +import net.minecraft.core.HolderLookup; import net.minecraft.nbt.CompoundTag; import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraft.world.level.block.state.BlockState; -import net.minecraftforge.common.capabilities.Capability; -import net.minecraftforge.common.util.LazyOptional; -import net.minecraftforge.energy.IEnergyStorage; -import net.minecraftforge.fluids.FluidStack; -import net.minecraftforge.fluids.capability.templates.FluidTank; -import net.minecraftforge.registries.RegistryObject; - -import javax.annotation.Nonnull; -import javax.annotation.Nullable; +import net.neoforged.neoforge.fluids.FluidStack; +import net.neoforged.neoforge.fluids.capability.templates.FluidTank; +import net.neoforged.neoforge.registries.DeferredHolder; + import java.util.ArrayList; import java.util.List; import java.util.Objects; import static igentuman.nc.handler.config.CommonConfig.GTCEU_CONFIG; import static igentuman.nc.setup.registration.NCItems.ION_SOURCES; -import static net.minecraftforge.fluids.capability.IFluidHandler.FluidAction.EXECUTE; +import static net.neoforged.neoforge.fluids.capability.IFluidHandler.FluidAction.EXECUTE; public class AbstractAcceleratorControllerBE extends MultiblockControllerBE { @@ -77,9 +73,7 @@ public class AbstractAcceleratorControllerBE extends MultiblockControllerBE { @NBTField public double redstoneLevel = 0; - protected final LazyOptional particleHandler; protected final ParticleStorage particleStorage; - protected final LazyOptional energy; public final SidedContentHandler contentHandler; public final CustomEnergyStorage energyStorage; private List allowedInputs; @@ -97,7 +91,6 @@ protected AbstractAcceleratorControllerBE(BlockEntityType pType, BlockPos pos .setOutputEnergyTier(0) .setInputAmperage(16) .setOutputAmperage(0); - energy = LazyOptional.of(() -> energyStorage); contentHandler = new SidedContentHandler( 1, 1, 1, 3, 1000); @@ -120,13 +113,16 @@ protected AbstractAcceleratorControllerBE(BlockEntityType pType, BlockPos pos contentHandler().fluidHandler.tanks.get(3).setCapacity(100000); particleStorage = new ParticleStorage(); particleStorage.setTileEntity(this); - particleHandler = CapabilityParticleStackHandler.createHandler(particleStorage); } public ParticleStack getParticleStack() { return particleStorage.getParticle(); } + public ParticleStorage getParticleStorage() { + return particleStorage; + } + public CommonConfig.GTCEUCompatibilityConfig.GTCEUTier getTier() { return GTCEU_CONFIG.ACCELERATORS_ENERGY_TIER.get(); } @@ -178,7 +174,7 @@ public List getAllowedInputItems() { if(allowedInputs == null) { allowedInputs = new ArrayList<>(); - for(RegistryObject item: ION_SOURCES.values()) { + for(DeferredHolder item: ION_SOURCES.values()) { allowedInputs.add(new ItemStack(item.get())); } } @@ -190,10 +186,6 @@ public int getMinEnergy() { return 0; } - @Override - public LazyOptional getEnergy() { - return energy; - } private CustomEnergyStorage createEnergy() { return new CustomEnergyStorage(100000000, 100000000, 0) { @@ -206,8 +198,8 @@ protected void onEnergyChanged() { @Override - public void load(CompoundTag tag) { - super.load(tag); + protected void loadAdditional(CompoundTag tag, HolderLookup.Provider registries) { + super.loadAdditional(tag, registries); if (tag.contains("Info")) { CompoundTag infoTag = tag.getCompound("Info"); particleStorage.readFromNBT(infoTag.getCompound("particle_storage")); @@ -215,8 +207,8 @@ public void load(CompoundTag tag) { } @Override - public void saveAdditional(CompoundTag tag) { - super.saveAdditional(tag); + protected void saveAdditional(CompoundTag tag, HolderLookup.Provider registries) { + super.saveAdditional(tag, registries); if (tag.contains("Info")) { CompoundTag infoTag = tag.getCompound("Info"); infoTag.put("particle_storage", particleStorage.writeToNBT(new CompoundTag())); @@ -225,16 +217,16 @@ public void saveAdditional(CompoundTag tag) { } @Override - public void loadClientData(CompoundTag tag) { - super.loadClientData(tag); + public void loadClientData(CompoundTag tag, HolderLookup.Provider registries) { + super.loadClientData(tag, registries); if (tag.contains("Info")) { CompoundTag infoTag = tag.getCompound("Info"); particleStorage.readFromNBT(infoTag.getCompound("particle_storage")); } } @Override - protected void saveClientData(CompoundTag tag) { - super.saveClientData(tag); + protected void saveClientData(CompoundTag tag, HolderLookup.Provider registries) { + super.saveClientData(tag, registries); if (tag.contains("Info")) { CompoundTag infoTag = tag.getCompound("Info"); infoTag.put("particle_storage", particleStorage.writeToNBT(new CompoundTag())); @@ -347,11 +339,8 @@ public boolean canInvalidateCache() { return false; } - public LazyOptional getPeripheral(@Nonnull Capability cap, @Nullable Direction side) { - return LazyOptional.empty(); - } - public LazyOptional getOCDevice(Capability cap, Direction side) { - return LazyOptional.empty(); + public boolean isAcceleratorTooHot() { + return (heatRate - coolingRate) > maxTemperature; } } diff --git a/src/main/java/igentuman/nc/block/accelerator/entity/AcceleratorBeamPortBE.java b/src/main/java/igentuman/nc/block/accelerator/entity/AcceleratorBeamPortBE.java index 08d9dba65..2eecf850b 100644 --- a/src/main/java/igentuman/nc/block/accelerator/entity/AcceleratorBeamPortBE.java +++ b/src/main/java/igentuman/nc/block/accelerator/entity/AcceleratorBeamPortBE.java @@ -1,8 +1,10 @@ package igentuman.nc.block.accelerator.entity; +import igentuman.api.platform.NCLevels; import igentuman.nc.NuclearCraft; import igentuman.nc.block.MultiblockPortBE; import igentuman.nc.block.target_chamber.entity.TargetChamberBeamPortBE; +import igentuman.nc.content.particles.IParticleStackHandler; import igentuman.nc.content.particles.ParticleStack; import igentuman.nc.handler.sided.capability.FluidCapabilityHandler; import igentuman.nc.multiblock.AbstractMultiblock; @@ -15,21 +17,12 @@ import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.properties.BlockStateProperties; -import net.minecraftforge.common.capabilities.Capability; -import net.minecraftforge.common.capabilities.ForgeCapabilities; -import net.minecraftforge.common.util.LazyOptional; -import net.minecraftforge.fluids.capability.templates.FluidTank; +import net.neoforged.neoforge.fluids.capability.templates.FluidTank; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; import java.util.Objects; -import static igentuman.nc.compat.oc2.FusionReactorDevice.DEVICE_CAPABILITY; -import static igentuman.nc.content.particles.CapabilityParticleStackHandler.PARTICLE_HANDLER_CAPABILITY; import static igentuman.nc.multiblock.accelerator.AcceleratorRegistration.ACCELERATOR_BE; import static igentuman.nc.multiblock.accelerator.AcceleratorRegistration.ACCELERATOR_BLOCKS; -import static igentuman.nc.util.ModUtil.isCcLoaded; -import static igentuman.nc.util.ModUtil.isOC2Loaded; public class AcceleratorBeamPortBE extends MultiblockPortBE { @@ -147,52 +140,19 @@ protected FluidCapabilityHandler fluidHandler() return controller().contentHandler().fluidHandler; } - protected LazyOptional fluidHandler(@Nullable Direction side) - { - return controller().contentHandler().getFluidCapability(side); - } - @Nonnull - @Override - public LazyOptional getCapability(@Nonnull Capability cap, @Nullable Direction side) { - if(controller() == null) return super.getCapability(cap, side); - if (cap == PARTICLE_HANDLER_CAPABILITY) { - return controller().getCapability(cap, side); - } - if (cap == ForgeCapabilities.ITEM_HANDLER) { - return LazyOptional.empty(); - } - if (cap == ForgeCapabilities.FLUID_HANDLER) { - return LazyOptional.empty(); - } - if (cap == ForgeCapabilities.ENERGY) { - return LazyOptional.empty(); - } - if(isCcLoaded()) { - if(cap == dan200.computercraft.shared.Capabilities.CAPABILITY_PERIPHERAL) { - return LazyOptional.empty(); - } - } - - if(isOC2Loaded()) { - if(cap == DEVICE_CAPABILITY) { - return LazyOptional.empty(); - } - } - return super.getCapability(cap, side); - } @Override public AbstractAcceleratorControllerBE controller() { if(NuclearCraft.instance.isNcBeStopped || (!getLevel().isClientSide() && getLevel().getServer() != null && !getLevel().getServer().isRunning())) return null; if(getLevel().isClientSide && controllerPos != null) { - return (AbstractAcceleratorControllerBE) getLevel().getExistingBlockEntity(controllerPos); + return (AbstractAcceleratorControllerBE) NCLevels.getExistingBlockEntity(getLevel(), controllerPos); } try { return (AbstractAcceleratorControllerBE) getMultiblock().controller().controllerBE(); } catch (NullPointerException e) { if(controllerPos != null) { - return (AbstractAcceleratorControllerBE) getLevel().getExistingBlockEntity(controllerPos); + return (AbstractAcceleratorControllerBE) NCLevels.getExistingBlockEntity(getLevel(), controllerPos); } return null; } @@ -252,10 +212,10 @@ public void extractParticle(ParticleStack particleStack) { if (targetPort.getFacing() == facing.getOpposite()) { if (targetPort.controller() != null) { particleStack.addFocus(-Equations.focusLoss(distance-1, particleStack)); - targetPort.controller().getCapability(PARTICLE_HANDLER_CAPABILITY, facing.getOpposite()) - .ifPresent(handler -> { - handler.reciveParticle(facing.getOpposite(), particleStack); - }); + IParticleStackHandler handler = targetPort.controller().particleStorage; + if (handler != null) { + handler.reciveParticle(facing.getOpposite(), particleStack); + } } } break; @@ -263,10 +223,10 @@ public void extractParticle(ParticleStack particleStack) { if (targetPort.getFacing() == facing.getOpposite()) { if (targetPort.controller() != null) { particleStack.addFocus(-Equations.focusLoss(distance-1, particleStack)); - targetPort.getCapability(PARTICLE_HANDLER_CAPABILITY, facing.getOpposite()) - .ifPresent(handler -> { - handler.reciveParticle(facing.getOpposite(), particleStack); - }); + IParticleStackHandler tcHandler = targetPort.controller().particleStorage; + if (tcHandler != null) { + tcHandler.reciveParticle(facing.getOpposite(), particleStack); + } } } break; diff --git a/src/main/java/igentuman/nc/block/accelerator/entity/AcceleratorIonSourcePortBE.java b/src/main/java/igentuman/nc/block/accelerator/entity/AcceleratorIonSourcePortBE.java index 5c0acc9ae..2e82fc391 100644 --- a/src/main/java/igentuman/nc/block/accelerator/entity/AcceleratorIonSourcePortBE.java +++ b/src/main/java/igentuman/nc/block/accelerator/entity/AcceleratorIonSourcePortBE.java @@ -1,5 +1,6 @@ package igentuman.nc.block.accelerator.entity; +import igentuman.api.platform.NCLevels; import igentuman.nc.NuclearCraft; import igentuman.nc.block.MultiblockPortBE; import igentuman.nc.handler.config.CommonConfig; @@ -13,22 +14,13 @@ import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.properties.BlockStateProperties; -import net.minecraftforge.common.capabilities.Capability; -import net.minecraftforge.common.capabilities.ForgeCapabilities; -import net.minecraftforge.common.util.LazyOptional; -import net.minecraftforge.fluids.capability.templates.FluidTank; +import net.neoforged.neoforge.fluids.capability.templates.FluidTank; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; import java.util.Objects; import static igentuman.nc.NuclearCraft.currentTick; -import static igentuman.nc.compat.oc2.FusionReactorDevice.DEVICE_CAPABILITY; -import static igentuman.nc.content.particles.CapabilityParticleStackHandler.PARTICLE_HANDLER_CAPABILITY; import static igentuman.nc.handler.config.CommonConfig.GTCEU_CONFIG; import static igentuman.nc.multiblock.accelerator.AcceleratorRegistration.ACCELERATOR_BE; -import static igentuman.nc.util.ModUtil.isCcLoaded; -import static igentuman.nc.util.ModUtil.isOC2Loaded; public class AcceleratorIonSourcePortBE extends MultiblockPortBE { @@ -154,52 +146,19 @@ protected FluidCapabilityHandler fluidHandler() return controller().contentHandler().fluidHandler; } - protected LazyOptional fluidHandler(@Nullable Direction side) - { - return controller().contentHandler().getFluidCapability(side); - } - @Nonnull - @Override - public LazyOptional getCapability(@Nonnull Capability cap, @Nullable Direction side) { - if(controller() == null) return super.getCapability(cap, side); - if (cap == PARTICLE_HANDLER_CAPABILITY) { - return LazyOptional.empty(); - } - if (cap == ForgeCapabilities.ITEM_HANDLER) { - return controller().getCapability(cap, side); - } - if (cap == ForgeCapabilities.FLUID_HANDLER) { - return controller().getCapability(cap, side); - } - if (cap == ForgeCapabilities.ENERGY) { - return LazyOptional.empty(); - } - if(isCcLoaded()) { - if(cap == dan200.computercraft.shared.Capabilities.CAPABILITY_PERIPHERAL) { - return LazyOptional.empty(); - } - } - - if(isOC2Loaded()) { - if(cap == DEVICE_CAPABILITY) { - return LazyOptional.empty(); - } - } - return super.getCapability(cap, side); - } @Override public LinearAcceleratorControllerBE controller() { if(NuclearCraft.instance.isNcBeStopped || (!getLevel().isClientSide() && getLevel().getServer() != null && !getLevel().getServer().isRunning())) return null; if(getLevel().isClientSide && controllerPos != null) { - return (LinearAcceleratorControllerBE) getLevel().getExistingBlockEntity(controllerPos); + return (LinearAcceleratorControllerBE) NCLevels.getExistingBlockEntity(getLevel(), controllerPos); } try { return (LinearAcceleratorControllerBE) getMultiblock().controller().controllerBE(); } catch (NullPointerException e) { if(controllerPos != null) { - return (LinearAcceleratorControllerBE) getLevel().getExistingBlockEntity(controllerPos); + return (LinearAcceleratorControllerBE) NCLevels.getExistingBlockEntity(getLevel(), controllerPos); } return null; } diff --git a/src/main/java/igentuman/nc/block/accelerator/entity/AcceleratorPortBE.java b/src/main/java/igentuman/nc/block/accelerator/entity/AcceleratorPortBE.java index c2e5f8bbb..360fbe419 100644 --- a/src/main/java/igentuman/nc/block/accelerator/entity/AcceleratorPortBE.java +++ b/src/main/java/igentuman/nc/block/accelerator/entity/AcceleratorPortBE.java @@ -1,9 +1,8 @@ package igentuman.nc.block.accelerator.entity; -import igentuman.api.nc.multiblock.MultiblockAttachable; +import igentuman.api.platform.NCLevels; import igentuman.nc.NuclearCraft; import igentuman.nc.block.MultiblockPortBE; -import igentuman.nc.block.entity.NuclearCraftBE; import igentuman.nc.handler.config.CommonConfig; import igentuman.nc.handler.sided.capability.FluidCapabilityHandler; import igentuman.nc.multiblock.AbstractMultiblock; @@ -15,21 +14,13 @@ import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.properties.BlockStateProperties; -import net.minecraftforge.common.capabilities.Capability; -import net.minecraftforge.common.capabilities.ForgeCapabilities; -import net.minecraftforge.common.util.LazyOptional; -import net.minecraftforge.fluids.capability.templates.FluidTank; +import net.neoforged.neoforge.fluids.capability.templates.FluidTank; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; import java.util.Objects; import static igentuman.nc.NuclearCraft.currentTick; -import static igentuman.nc.compat.oc2.FusionReactorDevice.DEVICE_CAPABILITY; import static igentuman.nc.handler.config.CommonConfig.GTCEU_CONFIG; import static igentuman.nc.multiblock.accelerator.AcceleratorRegistration.ACCELERATOR_BE; -import static igentuman.nc.util.ModUtil.isCcLoaded; -import static igentuman.nc.util.ModUtil.isOC2Loaded; public class AcceleratorPortBE extends MultiblockPortBE { @@ -156,50 +147,19 @@ protected FluidCapabilityHandler fluidHandler() return controller().contentHandler().fluidHandler; } - protected LazyOptional fluidHandler(@Nullable Direction side) - { - return controller().contentHandler().getFluidCapability(side); - } - - @Nonnull - @Override - public LazyOptional getCapability(@Nonnull Capability cap, @Nullable Direction side) { - if(controller() == null) return super.getCapability(cap, side); - if (cap == ForgeCapabilities.ITEM_HANDLER) { - return controller().getCapability(cap, side); - } - if (cap == ForgeCapabilities.FLUID_HANDLER) { - return controller().getCapability(cap, side); - } - if (cap == ForgeCapabilities.ENERGY) { - return controller().getCapability(cap, side); - } - if(isCcLoaded()) { - if(cap == dan200.computercraft.shared.Capabilities.CAPABILITY_PERIPHERAL) { - return controller().getPeripheral(cap, side); - } - } - - if(isOC2Loaded()) { - if(cap == DEVICE_CAPABILITY) { - return controller().getOCDevice(cap, side); - } - } - return super.getCapability(cap, side); - } @Override public AbstractAcceleratorControllerBE controller() { if(NuclearCraft.instance.isNcBeStopped || (!getLevel().isClientSide() && getLevel().getServer() != null && !getLevel().getServer().isRunning())) return null; if(getLevel().isClientSide && controllerPos != null) { - return (AbstractAcceleratorControllerBE) getLevel().getExistingBlockEntity(controllerPos); + return (AbstractAcceleratorControllerBE) NCLevels.getExistingBlockEntity(getLevel(), controllerPos); } try { return (AbstractAcceleratorControllerBE) getMultiblock().controller().controllerBE(); } catch (NullPointerException e) { if(controllerPos != null) { - return (AbstractAcceleratorControllerBE) getLevel().getExistingBlockEntity(controllerPos); + return (AbstractAcceleratorControllerBE) NCLevels.getExistingBlockEntity(getLevel(), controllerPos); } return null; } diff --git a/src/main/java/igentuman/nc/block/accelerator/entity/LinearAcceleratorControllerBE.java b/src/main/java/igentuman/nc/block/accelerator/entity/LinearAcceleratorControllerBE.java index fb486bf62..fc0a332e9 100644 --- a/src/main/java/igentuman/nc/block/accelerator/entity/LinearAcceleratorControllerBE.java +++ b/src/main/java/igentuman/nc/block/accelerator/entity/LinearAcceleratorControllerBE.java @@ -1,8 +1,6 @@ package igentuman.nc.block.accelerator.entity; import igentuman.nc.NuclearCraft; -import igentuman.nc.compat.cc.LinearAcceleratorPeripheral; -import igentuman.nc.compat.oc2.LinearAcceleratorDevice; import igentuman.nc.content.particles.*; import igentuman.nc.item.ParticleSourceItem; import igentuman.nc.multiblock.accelerator.LinearAcceleratorMultiblock; @@ -17,34 +15,24 @@ import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.properties.BlockStateProperties; -import net.minecraftforge.common.capabilities.Capability; -import net.minecraftforge.common.capabilities.ForgeCapabilities; -import net.minecraftforge.common.util.LazyOptional; -import net.minecraftforge.fluids.FluidStack; -import net.minecraftforge.fluids.capability.IFluidHandler; +import net.neoforged.neoforge.fluids.FluidStack; +import net.neoforged.neoforge.fluids.capability.IFluidHandler; import org.jetbrains.annotations.NotNull; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; import java.util.*; import static igentuman.nc.NuclearCraft.currentTick; import static igentuman.nc.NuclearCraft.debugLog; import static igentuman.nc.block.accelerator.AcceleratorPortBlock.POWERED; import static igentuman.nc.compat.GlobalVars.CATALYSTS; -import static igentuman.nc.compat.oc2.LinearAcceleratorDevice.DEVICE_CAPABILITY; -import static igentuman.nc.content.particles.CapabilityParticleStackHandler.PARTICLE_HANDLER_CAPABILITY; import static igentuman.nc.multiblock.accelerator.AcceleratorRegistration.ACCELERATOR_BE; import static igentuman.nc.multiblock.accelerator.AcceleratorRegistration.ACCELERATOR_BLOCKS; import static igentuman.nc.util.Equations.*; -import static igentuman.nc.util.ModUtil.isCcLoaded; -import static igentuman.nc.util.ModUtil.isOC2Loaded; public class LinearAcceleratorControllerBE extends AbstractAcceleratorControllerBE { public static String NAME = "linear_accelerator_controller"; - private LazyOptional peripheralCap; @@ -80,37 +68,7 @@ public Recipe getRecipe() { return null; } - public LazyOptional getPeripheral(@Nonnull Capability cap, @Nullable Direction side) { - if(peripheralCap == null) { - peripheralCap = LazyOptional.of(() -> new LinearAcceleratorPeripheral(this)); - } - return peripheralCap.cast(); - } - @Nonnull - @Override - public LazyOptional getCapability(@Nonnull Capability cap, @Nullable Direction side) { - if (cap == ForgeCapabilities.FLUID_HANDLER) { - return contentHandler().getFluidCapability(side); - } - if (cap == PARTICLE_HANDLER_CAPABILITY) { - return particleHandler.cast(); - } - if (cap == ForgeCapabilities.ENERGY) { - return getEnergy().cast(); - } - if(isCcLoaded()) { - if(cap == dan200.computercraft.shared.Capabilities.CAPABILITY_PERIPHERAL) { - return getPeripheral(cap, side); - } - } - if(isOC2Loaded()) { - if(cap == DEVICE_CAPABILITY) { - return getOCDevice(cap, side); - } - } - return super.getCapability(cap, side); - } public void tickClient() { @@ -186,6 +144,9 @@ public HashMap getAnalyzeReport() { } private boolean accelerateParticle() { + if (isAcceleratorTooHot()) { + return false; + } hasParticle = false; if(energyStorage().getEnergyStored() < energyRequired) { return false; @@ -258,15 +219,12 @@ public int getHeight() { } - public LazyOptional getOCDevice(Capability cap, Direction side) { - return LazyOptional.of(() -> LinearAcceleratorDevice.createDevice(this)).cast(); - } public static class Recipe extends NcRecipe { - public Recipe(ResourceLocation id, ItemStackIngredient[] input, ItemStackIngredient[] output, FluidStackIngredient[] inputFluids, FluidStackIngredient[] outputFluids, double timeModifier, double powerModifier, double heatModifier, double rarity) { - super(id, input, output, inputFluids, outputFluids, timeModifier, powerModifier, heatModifier, rarity); + public Recipe(String codeId, ItemStackIngredient[] input, ItemStackIngredient[] output, FluidStackIngredient[] inputFluids, FluidStackIngredient[] outputFluids, double timeModifier, double powerModifier, double heatModifier, double rarity) { + super(codeId, input, output, inputFluids, outputFluids, timeModifier, powerModifier, heatModifier, rarity); CATALYSTS.put(NAME, List.of(getToastSymbol())); } @@ -295,8 +253,8 @@ public int getBaseTime() { public static class CoolantRecipe extends NcRecipe { protected double coolingRate; - public CoolantRecipe(ResourceLocation id, ItemStackIngredient[] input, ItemStackIngredient[] output, FluidStackIngredient[] inputFluids, FluidStackIngredient[] outputFluids, double temperature, double powerModifier, double radiation, double rar) { - super(id, input, output, inputFluids, outputFluids, temperature, powerModifier, radiation, rar); + public CoolantRecipe(String codeId, ItemStackIngredient[] input, ItemStackIngredient[] output, FluidStackIngredient[] inputFluids, FluidStackIngredient[] outputFluids, double temperature, double powerModifier, double radiation, double rar) { + super(codeId, input, output, inputFluids, outputFluids, temperature, powerModifier, radiation, rar); coolingRate = temperature; } diff --git a/src/main/java/igentuman/nc/block/accelerator/entity/RingAcceleratorControllerBE.java b/src/main/java/igentuman/nc/block/accelerator/entity/RingAcceleratorControllerBE.java index 4fa3529e6..7a9a1b68e 100644 --- a/src/main/java/igentuman/nc/block/accelerator/entity/RingAcceleratorControllerBE.java +++ b/src/main/java/igentuman/nc/block/accelerator/entity/RingAcceleratorControllerBE.java @@ -2,8 +2,6 @@ import igentuman.nc.NuclearCraft; import igentuman.nc.block.accelerator.AcceleratorPortBlock; -import igentuman.nc.compat.cc.RingAcceleratorPeripheral; -import igentuman.nc.compat.oc2.RingAcceleratorDevice; import igentuman.nc.content.particles.*; import igentuman.nc.handler.sided.SidedContentHandler; import igentuman.nc.handler.sided.capability.ItemCapabilityHandler; @@ -15,27 +13,18 @@ import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.properties.BlockStateProperties; -import net.minecraftforge.common.capabilities.Capability; -import net.minecraftforge.common.capabilities.ForgeCapabilities; -import net.minecraftforge.common.util.LazyOptional; -import net.minecraftforge.fluids.capability.templates.FluidTank; +import net.neoforged.neoforge.fluids.capability.templates.FluidTank; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; import java.util.*; import static igentuman.nc.NuclearCraft.currentTick; import static igentuman.nc.NuclearCraft.debugLog; -import static igentuman.nc.compat.oc2.RingAcceleratorDevice.DEVICE_CAPABILITY; import static igentuman.nc.multiblock.accelerator.AcceleratorRegistration.ACCELERATOR_BE; import static igentuman.nc.util.Equations.*; -import static igentuman.nc.util.ModUtil.isCcLoaded; -import static igentuman.nc.util.ModUtil.isOC2Loaded; public class RingAcceleratorControllerBE extends AbstractAcceleratorControllerBE { public static String NAME = "ring_accelerator_controller"; - private LazyOptional peripheralCap; protected Direction facing; @@ -58,34 +47,7 @@ public String getName() { } - public LazyOptional getPeripheral(@Nonnull Capability cap, @Nullable Direction side) { - if(peripheralCap == null) { - peripheralCap = LazyOptional.of(() -> new RingAcceleratorPeripheral(this)); - } - return peripheralCap.cast(); - } - @Nonnull - @Override - public LazyOptional getCapability(@Nonnull Capability cap, @Nullable Direction side) { - if (cap == ForgeCapabilities.FLUID_HANDLER) { - return contentHandler().getFluidCapability(null); - } - if (cap == ForgeCapabilities.ENERGY) { - return getEnergy().cast(); - } - if(isCcLoaded()) { - if(cap == dan200.computercraft.shared.Capabilities.CAPABILITY_PERIPHERAL) { - return getPeripheral(cap, side); - } - } - if(isOC2Loaded()) { - if(cap == DEVICE_CAPABILITY) { - return getOCDevice(cap, side); - } - } - return super.getCapability(cap, side); - } public void tickClient() { @@ -213,9 +175,6 @@ public CustomEnergyStorage energyStorage() { return energyStorage; } - public LazyOptional getOCDevice(Capability cap, Direction side) { - return LazyOptional.of(() -> RingAcceleratorDevice.createDevice(this)).cast(); - } public FluidTank getFluidTank(int i) { return contentHandler().fluidHandler.tanks.get(i); diff --git a/src/main/java/igentuman/nc/block/entity/MultiblockControllerBE.java b/src/main/java/igentuman/nc/block/entity/MultiblockControllerBE.java index 1c61bfb6c..ca32c2bca 100644 --- a/src/main/java/igentuman/nc/block/entity/MultiblockControllerBE.java +++ b/src/main/java/igentuman/nc/block/entity/MultiblockControllerBE.java @@ -11,12 +11,11 @@ import igentuman.nc.util.BlockPosInstance; import igentuman.nc.util.annotation.NBTField; import net.minecraft.core.BlockPos; +import net.minecraft.core.HolderLookup; import net.minecraft.nbt.CompoundTag; import net.minecraft.server.level.ServerLevel; import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraft.world.level.block.state.BlockState; -import net.minecraftforge.common.util.LazyOptional; -import net.minecraftforge.energy.IEnergyStorage; import java.util.HashMap; import java.util.Objects; @@ -118,9 +117,6 @@ public ItemCapabilityHandler getItemInventory() return contentHandler().itemHandler; } - public LazyOptional getEnergy() { - return energy; - } @Override public SidedContentHandler contentHandler() { @@ -152,8 +148,8 @@ public void tickClient() { } @Override - public void load(CompoundTag tag) { - super.load(tag); + protected void loadAdditional(CompoundTag tag, HolderLookup.Provider registries) { + super.loadAdditional(tag, registries); if (tag.contains("Info")) { CompoundTag infoTag = tag.getCompound("Info"); if(infoTag.contains("erroredBlock")) { @@ -193,8 +189,8 @@ public void setChanged() { } @Override - public void saveAdditional(CompoundTag tag) { - super.saveAdditional(tag); + protected void saveAdditional(CompoundTag tag, HolderLookup.Provider registries) { + super.saveAdditional(tag, registries); if (tag.contains("Info")) { CompoundTag infoTag = tag.getCompound("Info"); infoTag.putInt("validationId", validationResult.id); @@ -208,8 +204,8 @@ public void saveAdditional(CompoundTag tag) { } @Override - public void loadClientData(CompoundTag tag) { - super.loadClientData(tag); + public void loadClientData(CompoundTag tag, HolderLookup.Provider registries) { + super.loadClientData(tag, registries); if (tag.contains("Info")) { CompoundTag infoTag = tag.getCompound("Info"); BlockPos tmp = BlockPos.ZERO; @@ -225,8 +221,8 @@ public void loadClientData(CompoundTag tag) { } @Override - protected void saveClientData(CompoundTag tag) { - super.saveClientData(tag); + protected void saveClientData(CompoundTag tag, HolderLookup.Provider registries) { + super.saveClientData(tag, registries); if (tag.contains("Info")) { CompoundTag infoTag = tag.getCompound("Info"); infoTag.putInt("validationId", validationResult.id); diff --git a/src/main/java/igentuman/nc/block/entity/NuclearCraftBE.java b/src/main/java/igentuman/nc/block/entity/NuclearCraftBE.java index ed66e8cd1..6b6ff6aac 100644 --- a/src/main/java/igentuman/nc/block/entity/NuclearCraftBE.java +++ b/src/main/java/igentuman/nc/block/entity/NuclearCraftBE.java @@ -1,5 +1,8 @@ package igentuman.nc.block.entity; +import igentuman.api.platform.NCLevels; +import igentuman.api.platform.NCNames; +import igentuman.api.platform.NCSerialization; import igentuman.api.nc.SideModeToggleable; import igentuman.nc.client.sound.SoundHandler; import igentuman.nc.handler.CatalystHandler; @@ -16,6 +19,7 @@ import net.minecraft.client.resources.sounds.SoundInstance; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; +import net.minecraft.core.HolderLookup; import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.ListTag; import net.minecraft.nbt.StringTag; @@ -27,15 +31,12 @@ import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraft.world.level.block.state.BlockState; -import net.minecraftforge.common.capabilities.Capability; -import net.minecraftforge.common.capabilities.ForgeCapabilities; -import net.minecraftforge.common.util.LazyOptional; -import net.minecraftforge.energy.IEnergyStorage; -import net.minecraftforge.fluids.capability.templates.FluidTank; -import net.minecraftforge.registries.RegistryObject; +import net.neoforged.neoforge.capabilities.Capabilities; +import net.neoforged.neoforge.energy.IEnergyStorage; +import net.neoforged.neoforge.fluids.capability.templates.FluidTank; +import net.neoforged.neoforge.registries.DeferredHolder; import org.jetbrains.annotations.NotNull; -import javax.annotation.Nonnull; import javax.annotation.Nullable; import java.lang.reflect.Field; import java.util.*; @@ -45,8 +46,6 @@ import static igentuman.nc.handler.config.CommonConfig.GTCEUCompatibilityConfig.GTCEUCompatibility.ONLY_GTCEU; import static igentuman.nc.handler.config.CommonConfig.GTCEU_CONFIG; import static igentuman.nc.util.ModUtil.isGtLoaded; -import static igentuman.nc.util.ModUtil.isMekanismLoaded; -import static net.minecraftforge.common.capabilities.ForgeCapabilities.ENERGY; public class NuclearCraftBE extends BlockEntity { @@ -66,7 +65,6 @@ public class NuclearCraftBE extends BlockEntity { protected boolean saveSideMapFlag = true; public boolean wasUpdated = true; public HashMap cachedRecipes = new HashMap<>(); - protected LazyOptional energy; protected long lastTickTime = 0; //all fields private final List booleanFields; @@ -132,26 +130,22 @@ protected void sendOutPower() { } protected void pullEnergyFromSide(Direction direction) { - BlockEntity be = level.getExistingBlockEntity(worldPosition.relative(direction)); - if (be == null) { + if(isGtLoaded() && isOnlyGTCEUCapEnabled()) { return; } - if(isGtLoaded() && isOnlyGTCEUCapEnabled()) { + BlockPos neighborPos = worldPosition.relative(direction); + IEnergyStorage handler = level.getCapability(Capabilities.EnergyStorage.BLOCK, neighborPos, direction.getOpposite()); + if (handler == null) { return; } - be.getCapability(ForgeCapabilities.ENERGY, direction.getOpposite()).map(handler -> { - if (handler.canExtract()) { - int canReceive = energyStorage().receiveEnergy(handler.getEnergyStored(), true); - if (canReceive > 0) { - int received = energyStorage().receiveEnergy(canReceive, false); - handler.extractEnergy(received, false); - } - setChanged(); - return true; - } - return true; - } - ); + if (handler.canExtract()) { + int canReceive = energyStorage().receiveEnergy(handler.getEnergyStored(), true); + if (canReceive > 0) { + int received = energyStorage().receiveEnergy(canReceive, false); + handler.extractEnergy(received, false); + } + setChanged(); + } } protected void transferEnergyToSide(Direction direction) { @@ -159,7 +153,7 @@ protected void transferEnergyToSide(Direction direction) { return; // No energy to transfer } int wasEnergy = energyStorage().getEnergyStored(); - BlockEntity be = level.getExistingBlockEntity(worldPosition.relative(direction)); + BlockEntity be = NCLevels.getExistingBlockEntity(level, worldPosition.relative(direction)); if (be == null) { return; } @@ -174,17 +168,13 @@ protected void transferEnergyToSide(Direction direction) { return; } int canExtract = energyStorage().getMaxExtract() - extracted; - be.getCapability(ForgeCapabilities.ENERGY, direction.getOpposite()).map(handler -> { - if (handler.canReceive()) { - int received = handler.receiveEnergy(Math.min(canExtract, energyStorage().getEnergyStored()), false); - energyStorage().consumeEnergy(received); - setChanged(); - return energyStorage().getEnergyStored() > 0; - } else { - return true; - } - } - ); + BlockPos neighborPos = worldPosition.relative(direction); + IEnergyStorage handler = level.getCapability(Capabilities.EnergyStorage.BLOCK, neighborPos, direction.getOpposite()); + if (handler != null && handler.canReceive()) { + int received = handler.receiveEnergy(Math.min(canExtract, energyStorage().getEnergyStored()), false); + energyStorage().consumeEnergy(received); + setChanged(); + } } //for the moment input and output energy tiers are the same @@ -213,7 +203,7 @@ public CustomEnergyStorage energyStorage() { } public BlockEntity blockEntity(BlockPos pos) { - BlockEntity blockEntity = level.getExistingBlockEntity(pos); + BlockEntity blockEntity = NCLevels.getExistingBlockEntity(level, pos); if(blockEntity == null) { blockEntity = level.getBlockEntity(pos); } @@ -247,10 +237,6 @@ public NcRecipe getCachedRecipe() { return null; } - public LazyOptional getEnergy() { - return energy; - } - protected void addToCache(NcRecipe recipe) { String key = contentHandler().getCacheKey(); if(cachedRecipes.containsKey(key)) { @@ -260,7 +246,7 @@ protected void addToCache(NcRecipe recipe) { } } - protected void playSound(RegistryObject sound, float volume) { + protected void playSound(DeferredHolder sound, float volume) { if(isRemoved() || (currentSound != null && !currentSound.getLocation().equals(sound.get().getLocation()))) { SoundHandler.stopTileSound(getBlockPos()); currentSound = null; @@ -279,7 +265,7 @@ protected void playSound(RegistryObject sound, float volume) { } public static String getName(BlockState pBlockState) { - return pBlockState.getBlock().asItem().toString(); + return NCNames.of(pBlockState.getBlock().asItem()); } protected void trackChanges(boolean was, boolean now) @@ -478,125 +464,82 @@ public static boolean isGTEUCapEnabled() { - @Nonnull @Override - public LazyOptional getCapability(@Nonnull Capability cap, @Nullable Direction side) { - if(isGtLoaded()) { - if (cap == com.gregtechceu.gtceu.api.capability.forge.GTCapability.CAPABILITY_ENERGY_CONTAINER && energyStorage() != null) { - if (isGTEUCapEnabled()) { - if (side != null && sideConfig.get(side.ordinal()) != SideModeToggleable.SideMode.DISABLED) - return getGTEnergy(this, side).cast(); - } else { - return LazyOptional.empty(); - } - } - } - if (cap == ENERGY && energyStorage() != null) { - if(GTCEU_CONFIG.COMPATIBILITY.get() != ONLY_GTCEU) { - return getEnergy().cast(); - } else { - return LazyOptional.empty(); - } - } - if (cap == ForgeCapabilities.ITEM_HANDLER && contentHandler() != null) { - return contentHandler().getItemCapability(side); - } - if (cap == ForgeCapabilities.FLUID_HANDLER && contentHandler() != null) { - return contentHandler().getFluidCapability(side); - } - - if(isMekanismLoaded() && contentHandler() != null) { - if(cap == mekanism.common.capabilities.Capabilities.GAS_HANDLER) { - if(contentHandler().hasFluidCapability(side)) { - return LazyOptional.of(() -> contentHandler().gasConverter(side)); - } - return LazyOptional.empty(); - } - if(cap == mekanism.common.capabilities.Capabilities.SLURRY_HANDLER) { - if(contentHandler().hasFluidCapability(side)) { - return LazyOptional.of(() -> contentHandler().getSlurryConverter(side)); - } - return LazyOptional.empty(); - } - } - return super.getCapability(cap, side); - } - - @Override - public void load(CompoundTag tag) { + protected void loadAdditional(CompoundTag tag, HolderLookup.Provider registries) { + super.loadAdditional(tag, registries); if (tag.contains("Info")) { CompoundTag infoTag = tag.getCompound("Info"); readTagData(infoTag); if (infoTag.contains("recipeInfo") && recipeInfo() != null) { - recipeInfo().deserializeNBT(infoTag.getCompound("recipeInfo")); + NCSerialization.deserialize(recipeInfo(), registries, infoTag.getCompound("recipeInfo")); } if(infoTag.contains("upgrades") && upgradesHandler() != null) { - upgradesHandler().deserializeNBT((CompoundTag) (infoTag).get("upgrades")); + NCSerialization.deserialize(upgradesHandler(), registries, (CompoundTag) (infoTag).get("upgrades")); } if(infoTag.contains("catalyst") && catalystHandler() != null) { - catalystHandler().deserializeNBT((CompoundTag) (infoTag).get("catalyst")); + NCSerialization.deserialize(catalystHandler(), registries, (CompoundTag) (infoTag).get("catalyst")); } } if (tag.contains("Energy") && energyStorage() != null) { - energyStorage().deserializeNBT(tag.get("Energy")); + NCSerialization.deserialize(energyStorage(), registries, tag.get("Energy")); } if (tag.contains("Content") && contentHandler() != null) { - contentHandler().deserializeNBT(tag.getCompound("Content")); + NCSerialization.deserialize(contentHandler(), registries, tag.getCompound("Content")); } if (tag.contains("energy")) { energyStorage().setEnergy(tag.getInt("energy")); } - super.load(tag); updateRecipeAfterLoad(); } - public void loadClientData(CompoundTag tag) { + public void loadClientData(CompoundTag tag, HolderLookup.Provider registries) { if (tag.contains("Info")) { CompoundTag infoTag = tag.getCompound("Info"); readTagData(infoTag); if (infoTag.contains("recipeInfo") && recipeInfo() != null) { - recipeInfo().deserializeNBT(infoTag.getCompound("recipeInfo")); + NCSerialization.deserialize(recipeInfo(), registries, infoTag.getCompound("recipeInfo")); } if (tag.contains("Energy") && energyStorage() != null) { - energyStorage().deserializeNBT(tag.get("Energy")); + NCSerialization.deserialize(energyStorage(), registries, tag.get("Energy")); } if(infoTag.contains("energy") && energyStorage() != null) { energyStorage().setEnergy(infoTag.getInt("energy")); } if(infoTag.contains("upgrades") && upgradesHandler() != null) { - upgradesHandler().deserializeNBT((CompoundTag) (infoTag).get("upgrades")); + NCSerialization.deserialize(upgradesHandler(), registries, (CompoundTag) (infoTag).get("upgrades")); } if(infoTag.contains("catalyst") && catalystHandler() != null) { - catalystHandler().deserializeNBT((CompoundTag) (infoTag).get("catalyst")); + NCSerialization.deserialize(catalystHandler(), registries, (CompoundTag) (infoTag).get("catalyst")); } } if (tag.contains("Content") && contentHandler() != null) { - contentHandler().deserializeNBT(tag.getCompound("Content")); + NCSerialization.deserialize(contentHandler(), registries, tag.getCompound("Content")); } } @Override - public void saveAdditional(CompoundTag tag) { + protected void saveAdditional(CompoundTag tag, HolderLookup.Provider registries) { + super.saveAdditional(tag, registries); if (contentHandler() != null) { contentHandler().saveSideMap(); } if(!tag.contains("Content") && contentHandler() != null) { - tag.put("Content", contentHandler().serializeNBT()); + tag.put("Content", NCSerialization.serialize(contentHandler(), registries)); } if(!tag.contains("Energy") && energyStorage() != null && energyStorage().wasUpdated) { - tag.put("Energy", energyStorage().serializeNBT()); + tag.put("Energy", NCSerialization.serialize(energyStorage(), registries)); } CompoundTag infoTag = new CompoundTag(); if (upgradesHandler() != null) { - infoTag.put("upgrades", upgradesHandler().serializeNBT()); + infoTag.put("upgrades", NCSerialization.serialize(upgradesHandler(), registries)); } if (catalystHandler() != null) { - infoTag.put("catalyst", catalystHandler().serializeNBT()); + infoTag.put("catalyst", NCSerialization.serialize(catalystHandler(), registries)); } if (recipeInfo() != null) { - infoTag.put("recipeInfo", recipeInfo().serializeNBT()); + infoTag.put("recipeInfo", NCSerialization.serialize(recipeInfo(), registries)); } if(playerUID != null) { tag.putUUID("playerUID", playerUID); @@ -605,28 +548,28 @@ public void saveAdditional(CompoundTag tag) { tag.put("Info", infoTag); } - protected void saveClientData(CompoundTag tag) { + protected void saveClientData(CompoundTag tag, HolderLookup.Provider registries) { CompoundTag infoTag = new CompoundTag(); if(upgradesHandler() != null && upgradesHandler().wasUpdated) { - infoTag.put("upgrades", upgradesHandler().serializeNBT()); + infoTag.put("upgrades", NCSerialization.serialize(upgradesHandler(), registries)); upgradesHandler().wasUpdated = false; } if(catalystHandler() != null && catalystHandler().wasUpdated) { - infoTag.put("catalyst", catalystHandler().serializeNBT()); + infoTag.put("catalyst", NCSerialization.serialize(catalystHandler(), registries)); catalystHandler().wasUpdated = false; } if (recipeInfo() != null) { - infoTag.put("recipeInfo", recipeInfo().serializeNBT()); + infoTag.put("recipeInfo", NCSerialization.serialize(recipeInfo(), registries)); } if (contentHandler() != null) { if(saveSideMapFlag) { contentHandler().saveSideMap(); saveSideMapFlag = false; } - tag.put("Content", contentHandler().serializeNBT()); + tag.put("Content", NCSerialization.serialize(contentHandler(), registries)); } if(!tag.contains("Energy") && energyStorage() != null && energyStorage().wasUpdated) { - tag.put("Energy", energyStorage().serializeNBT()); + tag.put("Energy", NCSerialization.serialize(energyStorage(), registries)); } if (energyStorage() != null) { infoTag.putInt("energy", energyStorage().getEnergyStored()); @@ -636,9 +579,9 @@ protected void saveClientData(CompoundTag tag) { } @Override - public @NotNull CompoundTag getUpdateTag() { - CompoundTag tag = super.getUpdateTag(); - saveClientData(tag); + public @NotNull CompoundTag getUpdateTag(HolderLookup.Provider registries) { + CompoundTag tag = super.getUpdateTag(registries); + saveClientData(tag, registries); if(playerUID != null) { tag.putUUID("playerUID", playerUID); } @@ -646,9 +589,9 @@ protected void saveClientData(CompoundTag tag) { } @Override - public void handleUpdateTag(CompoundTag tag) { + public void handleUpdateTag(CompoundTag tag, HolderLookup.Provider registries) { if (tag != null) { - loadClientData(tag); + loadClientData(tag, registries); if (tag.contains("playerUID")) { playerUID = tag.getUUID("playerUID"); } @@ -662,8 +605,11 @@ public ClientboundBlockEntityDataPacket getUpdatePacket() { } @Override - public void onDataPacket(Connection net, ClientboundBlockEntityDataPacket pkt) { - handleUpdateTag(pkt.getTag()); + public void onDataPacket(Connection net, ClientboundBlockEntityDataPacket pkt, HolderLookup.Provider registries) { + CompoundTag tag = pkt.getTag(); + if (tag != null) { + handleUpdateTag(tag, registries); + } } public void setPlayer(ServerPlayer player) { diff --git a/src/main/java/igentuman/nc/block/entity/energy/DecayGeneratorBE.java b/src/main/java/igentuman/nc/block/entity/energy/DecayGeneratorBE.java index 00a1e02be..dc37eb99d 100644 --- a/src/main/java/igentuman/nc/block/entity/energy/DecayGeneratorBE.java +++ b/src/main/java/igentuman/nc/block/entity/energy/DecayGeneratorBE.java @@ -1,5 +1,6 @@ package igentuman.nc.block.entity.energy; +import igentuman.api.platform.NCNames; import igentuman.nc.NuclearCraft; import igentuman.nc.content.energy.RTGs; import igentuman.nc.radiation.ItemRadiation; @@ -31,12 +32,12 @@ public DecayGeneratorBE(BlockPos pPos, BlockState pBlockState) { } public static String getName(BlockState pBlockState) { - return pBlockState.getBlock().asItem().toString(); + return NCNames.of(pBlockState.getBlock().asItem()); } @Override public String getName() { - return getBlockState().getBlock().asItem().toString(); + return NCNames.of(getBlockState().getBlock().asItem()); } private List allowedBlocks = new ArrayList<>(); @@ -54,7 +55,7 @@ private List getAllowedBlocks() { */ private Block getLeadBlock() { if(leadBlock == null) { - leadBlock = getSingleBlockByTagKey("forge:storage_blocks/lead"); + leadBlock = getSingleBlockByTagKey("c:storage_blocks/lead"); } return leadBlock; } diff --git a/src/main/java/igentuman/nc/block/entity/energy/NCEnergy.java b/src/main/java/igentuman/nc/block/entity/energy/NCEnergy.java index b99fb38d4..c070fa47d 100644 --- a/src/main/java/igentuman/nc/block/entity/energy/NCEnergy.java +++ b/src/main/java/igentuman/nc/block/entity/energy/NCEnergy.java @@ -6,24 +6,14 @@ import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.world.level.block.state.BlockState; -import net.minecraftforge.common.capabilities.Capability; -import net.minecraftforge.common.util.LazyOptional; -import net.minecraftforge.energy.IEnergyStorage; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; -import static igentuman.nc.compat.gregtech.GTUtils.getGTEnergy; -import static igentuman.nc.compat.gregtech.GTUtils.isOnlyGTCEUCapEnabled; -import static igentuman.nc.util.ModUtil.isGtLoaded; -import static net.minecraftforge.common.capabilities.ForgeCapabilities.ENERGY; public class NCEnergy extends NuclearCraftBE { protected String name; public static String NAME; public final CustomEnergyStorage energyStorage; - protected final LazyOptional energy; public NCEnergy(BlockPos pPos, BlockState pBlockState, String name) { super(NCEnergyBlocks.ENERGY_BE.get(name).get(), pPos, pBlockState); @@ -31,7 +21,6 @@ public NCEnergy(BlockPos pPos, BlockState pBlockState, String name) { energyStorage = createEnergy(); energyStorage.setOutputEnergyTier(getOutputEnergyTier()) .setInputEnergyTier(getInputEnergyTier()); - energy = LazyOptional.of(() -> energyStorage); } @Override @@ -39,11 +28,6 @@ public CustomEnergyStorage energyStorage() { return energyStorage; } - @Override - public LazyOptional getEnergy() { - return energy; - } - protected int getEnergyMaxStorage() { return 100; } @@ -65,25 +49,6 @@ public int getMaxTransfer() { return 0; } - @Nonnull - @Override - public LazyOptional getCapability(@Nonnull Capability cap, @Nullable Direction side) { - if(isGtLoaded()) { - if (cap == com.gregtechceu.gtceu.api.capability.forge.GTCapability.CAPABILITY_ENERGY_CONTAINER) { - if (isGTEUCapEnabled()) { - return getGTEnergy(this, side).cast(); - } - } - } - if (cap == ENERGY) { - if(!isOnlyGTCEUCapEnabled()) { - return getEnergy().cast(); - } else { - return LazyOptional.empty(); - } - } - return super.getCapability(cap, side); - } public String getName() { return name; @@ -92,6 +57,5 @@ public String getName() { @Override public void setRemoved() { super.setRemoved(); - getEnergy().invalidate(); } } diff --git a/src/main/java/igentuman/nc/block/entity/energy/RTGBE.java b/src/main/java/igentuman/nc/block/entity/energy/RTGBE.java index 8bcb6cdcc..f0b209eae 100644 --- a/src/main/java/igentuman/nc/block/entity/energy/RTGBE.java +++ b/src/main/java/igentuman/nc/block/entity/energy/RTGBE.java @@ -1,5 +1,6 @@ package igentuman.nc.block.entity.energy; +import igentuman.api.platform.NCNames; import igentuman.nc.NuclearCraft; import igentuman.nc.radiation.data.RadiationManager; import igentuman.nc.content.energy.RTGs; @@ -15,12 +16,12 @@ public RTGBE(BlockPos pPos, BlockState pBlockState) { } public static String getName(BlockState pBlockState) { - return pBlockState.getBlock().asItem().toString(); + return NCNames.of(pBlockState.getBlock().asItem()); } @Override public String getName() { - return getBlockState().getBlock().asItem().toString(); + return NCNames.of(getBlockState().getBlock().asItem()); } @Override diff --git a/src/main/java/igentuman/nc/block/entity/processor/AlloySmelterBE.java b/src/main/java/igentuman/nc/block/entity/processor/AlloySmelterBE.java index 6ba8d4f3a..0a7d7c9f2 100644 --- a/src/main/java/igentuman/nc/block/entity/processor/AlloySmelterBE.java +++ b/src/main/java/igentuman/nc/block/entity/processor/AlloySmelterBE.java @@ -17,11 +17,11 @@ public AlloySmelterBE(BlockPos pPos, BlockState pBlockState) { @NothingNullByDefault public static class Recipe extends NcRecipe { - public Recipe(ResourceLocation id, + public Recipe(String codeId, ItemStackIngredient[] input, ItemStackIngredient[] output, FluidStackIngredient[] inputFluids, FluidStackIngredient[] outputFluids, double timeModifier, double powerModifier, double heatModifier, double rarity) { - super(id, input, output, timeModifier, powerModifier, heatModifier, 1); + super(codeId, input, output, timeModifier, powerModifier, heatModifier, 1); } @Override diff --git a/src/main/java/igentuman/nc/block/entity/processor/AnalyzerBE.java b/src/main/java/igentuman/nc/block/entity/processor/AnalyzerBE.java index 729a5e20f..737a9be73 100644 --- a/src/main/java/igentuman/nc/block/entity/processor/AnalyzerBE.java +++ b/src/main/java/igentuman/nc/block/entity/processor/AnalyzerBE.java @@ -1,5 +1,6 @@ package igentuman.nc.block.entity.processor; +import igentuman.api.platform.NCItemStacks; import igentuman.nc.content.processors.Processors; import igentuman.nc.util.insitu_leaching.OreVeinProvider; import igentuman.nc.recipes.ingredient.FluidStackIngredient; @@ -31,11 +32,11 @@ public AnalyzerBE(BlockPos pPos, BlockState pBlockState) { @NothingNullByDefault public static class Recipe extends NcRecipe { - public Recipe(ResourceLocation id, + public Recipe(String codeId, ItemStackIngredient[] input, ItemStackIngredient[] output, FluidStackIngredient[] inputFluids, FluidStackIngredient[] outputFluids, double timeModifier, double powerModifier, double heatModifier, double rarity) { - super(id, input, output, timeModifier, powerModifier, heatModifier,1); + super(codeId, input, output, timeModifier, powerModifier, heatModifier,1); } @Override @@ -68,8 +69,8 @@ public void handleRecipeOutput() { private void handleMapAnalyze() { if(recipe.getInputIngredient(0).test(new ItemStack(FILLED_MAP))) { for (ItemStack output : recipe.getResultItems()) { - output.setTag(contentHandler.itemHandler.holdedInputs.get(0).getOrCreateTag()); - output.getOrCreateTag().putBoolean("is_nc_analyzed", true); + NCItemStacks.setTag(output, NCItemStacks.getTag(contentHandler.itemHandler.holdedInputs.get(0))); + NCItemStacks.putBoolean(output, "is_nc_analyzed", true); } } } @@ -80,16 +81,16 @@ private void handleChunkAnalyzeWithPaper() { alreadySearched = worldPosition; if (vein == null) { for (ItemStack output : recipe.getResultItems()) { - output.getOrCreateTag().putString("vein", "nc.ore_vein.none"); + NCItemStacks.putString(output, "vein", "nc.ore_vein.none"); } } else { for (ItemStack output : recipe.getResultItems()) { - output.getOrCreateTag().putString("vein", "nc.ore_vein." + vein.getId().getPath().replace("nc_ore_veins/", "")); + NCItemStacks.putString(output, "vein", "nc.ore_vein." + vein.getId().getPath().replace("nc_ore_veins/", "")); } } for (ItemStack output : recipe.getResultItems()) { - output.getOrCreateTag().putLong("pos", worldPosition.asLong()); - output.getOrCreateTag().putBoolean("is_nc_analyzed", true); + NCItemStacks.putLong(output, "pos", worldPosition.asLong()); + NCItemStacks.putBoolean(output, "is_nc_analyzed", true); } } } diff --git a/src/main/java/igentuman/nc/block/entity/processor/AssemblerBE.java b/src/main/java/igentuman/nc/block/entity/processor/AssemblerBE.java index c95a161b6..7ffc7c31a 100644 --- a/src/main/java/igentuman/nc/block/entity/processor/AssemblerBE.java +++ b/src/main/java/igentuman/nc/block/entity/processor/AssemblerBE.java @@ -10,7 +10,7 @@ import net.minecraft.resources.ResourceLocation; import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.block.state.BlockState; -import net.minecraftforge.fluids.FluidStack; +import net.neoforged.neoforge.fluids.FluidStack; import java.util.List; @@ -26,11 +26,11 @@ public AssemblerBE(BlockPos pPos, BlockState pBlockState) { @NothingNullByDefault public static class Recipe extends NcRecipe { - public Recipe(ResourceLocation id, + public Recipe(String codeId, ItemStackIngredient[] input, ItemStackIngredient[] output, FluidStackIngredient[] inputFluids, FluidStackIngredient[] outputFluids, double timeModifier, double powerModifier, double heatModifier, double rarity) { - super(id, input, output, timeModifier, powerModifier, heatModifier, 1); + super(codeId, input, output, timeModifier, powerModifier, heatModifier, 1); } @Override diff --git a/src/main/java/igentuman/nc/block/entity/processor/CentrifugeBE.java b/src/main/java/igentuman/nc/block/entity/processor/CentrifugeBE.java index e60a7ea6a..6c8db28aa 100644 --- a/src/main/java/igentuman/nc/block/entity/processor/CentrifugeBE.java +++ b/src/main/java/igentuman/nc/block/entity/processor/CentrifugeBE.java @@ -19,11 +19,11 @@ public CentrifugeBE(BlockPos pPos, BlockState pBlockState) { @NothingNullByDefault public static class Recipe extends NcRecipe { - public Recipe(ResourceLocation id, + public Recipe(String codeId, ItemStackIngredient[] input, ItemStackIngredient[] output, FluidStackIngredient[] inputFluids, FluidStackIngredient[] outputFluids, double timeModifier, double powerModifier, double heatModifier, double rarity) { - super(id, input, output, inputFluids, outputFluids, timeModifier, powerModifier, heatModifier, 1); + super(codeId, input, output, inputFluids, outputFluids, timeModifier, powerModifier, heatModifier, 1); } @Override diff --git a/src/main/java/igentuman/nc/block/entity/processor/ChemicalReactorBE.java b/src/main/java/igentuman/nc/block/entity/processor/ChemicalReactorBE.java index 71c6b9380..c18330668 100644 --- a/src/main/java/igentuman/nc/block/entity/processor/ChemicalReactorBE.java +++ b/src/main/java/igentuman/nc/block/entity/processor/ChemicalReactorBE.java @@ -19,11 +19,11 @@ public ChemicalReactorBE(BlockPos pPos, BlockState pBlockState) { @NothingNullByDefault public static class Recipe extends NcRecipe { - public Recipe(ResourceLocation id, + public Recipe(String codeId, ItemStackIngredient[] input, ItemStackIngredient[] output, FluidStackIngredient[] inputFluids, FluidStackIngredient[] outputFluids, double timeModifier, double powerModifier, double heatModifier, double rarity) { - super(id, input, output, inputFluids, outputFluids, timeModifier, powerModifier, heatModifier, 1); + super(codeId, input, output, inputFluids, outputFluids, timeModifier, powerModifier, heatModifier, 1); } @Override public String getCodeId() { diff --git a/src/main/java/igentuman/nc/block/entity/processor/CrystalizerBE.java b/src/main/java/igentuman/nc/block/entity/processor/CrystalizerBE.java index 357a1016d..ff1921de6 100644 --- a/src/main/java/igentuman/nc/block/entity/processor/CrystalizerBE.java +++ b/src/main/java/igentuman/nc/block/entity/processor/CrystalizerBE.java @@ -16,11 +16,11 @@ public CrystalizerBE(BlockPos pPos, BlockState pBlockState) { @NothingNullByDefault public static class Recipe extends NcRecipe { - public Recipe(ResourceLocation id, + public Recipe(String codeId, ItemStackIngredient[] input, ItemStackIngredient[] output, FluidStackIngredient[] inputFluids, FluidStackIngredient[] outputFluids, double timeModifier, double powerModifier, double heatModifier, double rarity) { - super(id, input, output, inputFluids, outputFluids, timeModifier, powerModifier, heatModifier, 1); + super(codeId, input, output, inputFluids, outputFluids, timeModifier, powerModifier, heatModifier, 1); } @Override public String getCodeId() { diff --git a/src/main/java/igentuman/nc/block/entity/processor/DecayHastenerBE.java b/src/main/java/igentuman/nc/block/entity/processor/DecayHastenerBE.java index b85f441ad..4a53ed4ca 100644 --- a/src/main/java/igentuman/nc/block/entity/processor/DecayHastenerBE.java +++ b/src/main/java/igentuman/nc/block/entity/processor/DecayHastenerBE.java @@ -18,11 +18,11 @@ public DecayHastenerBE(BlockPos pPos, BlockState pBlockState) { @NothingNullByDefault public static class Recipe extends NcRecipe { - public Recipe(ResourceLocation id, + public Recipe(String codeId, ItemStackIngredient[] input, ItemStackIngredient[] output, FluidStackIngredient[] inputFluids, FluidStackIngredient[] outputFluids, double timeModifier, double powerModifier, double heatModifier, double rarity) { - super(id, input, output, timeModifier, powerModifier, heatModifier, 1); + super(codeId, input, output, timeModifier, powerModifier, heatModifier, 1); } @Override diff --git a/src/main/java/igentuman/nc/block/entity/processor/ElectrolyzerBE.java b/src/main/java/igentuman/nc/block/entity/processor/ElectrolyzerBE.java index 1703d5554..6d2733c29 100644 --- a/src/main/java/igentuman/nc/block/entity/processor/ElectrolyzerBE.java +++ b/src/main/java/igentuman/nc/block/entity/processor/ElectrolyzerBE.java @@ -19,11 +19,11 @@ public ElectrolyzerBE(BlockPos pPos, BlockState pBlockState) { @NothingNullByDefault public static class Recipe extends NcRecipe { - public Recipe(ResourceLocation id, + public Recipe(String codeId, ItemStackIngredient[] input, ItemStackIngredient[] output, FluidStackIngredient[] inputFluids, FluidStackIngredient[] outputFluids, double timeModifier, double powerModifier, double heatModifier, double rarity) { - super(id, input, output, inputFluids, outputFluids, timeModifier, powerModifier, heatModifier,1); + super(codeId, input, output, inputFluids, outputFluids, timeModifier, powerModifier, heatModifier,1); } @Override diff --git a/src/main/java/igentuman/nc/block/entity/processor/ExtractorBE.java b/src/main/java/igentuman/nc/block/entity/processor/ExtractorBE.java index 11ecab725..607a675bd 100644 --- a/src/main/java/igentuman/nc/block/entity/processor/ExtractorBE.java +++ b/src/main/java/igentuman/nc/block/entity/processor/ExtractorBE.java @@ -17,11 +17,11 @@ public ExtractorBE(BlockPos pPos, BlockState pBlockState) { @NothingNullByDefault public static class Recipe extends NcRecipe { - public Recipe(ResourceLocation id, + public Recipe(String codeId, ItemStackIngredient[] input, ItemStackIngredient[] output, FluidStackIngredient[] inputFluids, FluidStackIngredient[] outputFluids, double timeModifier, double powerModifier, double heatModifier, double rarity) { - super(id, input, output, inputFluids, outputFluids, timeModifier, powerModifier, heatModifier, 1); + super(codeId, input, output, inputFluids, outputFluids, timeModifier, powerModifier, heatModifier, 1); } @Override diff --git a/src/main/java/igentuman/nc/block/entity/processor/FluidEnricherBE.java b/src/main/java/igentuman/nc/block/entity/processor/FluidEnricherBE.java index 63f6cf859..8ac10f80f 100644 --- a/src/main/java/igentuman/nc/block/entity/processor/FluidEnricherBE.java +++ b/src/main/java/igentuman/nc/block/entity/processor/FluidEnricherBE.java @@ -17,11 +17,11 @@ public FluidEnricherBE(BlockPos pPos, BlockState pBlockState) { @NothingNullByDefault public static class Recipe extends NcRecipe { - public Recipe(ResourceLocation id, + public Recipe(String codeId, ItemStackIngredient[] input, ItemStackIngredient[] output, FluidStackIngredient[] inputFluids, FluidStackIngredient[] outputFluids, double timeModifier, double powerModifier, double heatModifier, double rarity) { - super(id, input, output, inputFluids, outputFluids, timeModifier, powerModifier, heatModifier, 1); + super(codeId, input, output, inputFluids, outputFluids, timeModifier, powerModifier, heatModifier, 1); } @Override diff --git a/src/main/java/igentuman/nc/block/entity/processor/FluidInfuserBE.java b/src/main/java/igentuman/nc/block/entity/processor/FluidInfuserBE.java index fd7890aef..4e6544a6e 100644 --- a/src/main/java/igentuman/nc/block/entity/processor/FluidInfuserBE.java +++ b/src/main/java/igentuman/nc/block/entity/processor/FluidInfuserBE.java @@ -17,11 +17,11 @@ public FluidInfuserBE(BlockPos pPos, BlockState pBlockState) { @NothingNullByDefault public static class Recipe extends NcRecipe { - public Recipe(ResourceLocation id, + public Recipe(String codeId, ItemStackIngredient[] input, ItemStackIngredient[] output, FluidStackIngredient[] inputFluids, FluidStackIngredient[] outputFluids, double timeModifier, double powerModifier, double heatModifier, double rarity) { - super(id, input, output, inputFluids, outputFluids, timeModifier, powerModifier, heatModifier, 1); + super(codeId, input, output, inputFluids, outputFluids, timeModifier, powerModifier, heatModifier, 1); } @Override diff --git a/src/main/java/igentuman/nc/block/entity/processor/FuelReprocessorBE.java b/src/main/java/igentuman/nc/block/entity/processor/FuelReprocessorBE.java index 07484229f..f37852940 100644 --- a/src/main/java/igentuman/nc/block/entity/processor/FuelReprocessorBE.java +++ b/src/main/java/igentuman/nc/block/entity/processor/FuelReprocessorBE.java @@ -19,11 +19,11 @@ public FuelReprocessorBE(BlockPos pPos, BlockState pBlockState) { @NothingNullByDefault public static class Recipe extends NcRecipe { - public Recipe(ResourceLocation id, + public Recipe(String codeId, ItemStackIngredient[] input, ItemStackIngredient[] output, FluidStackIngredient[] inputFluids, FluidStackIngredient[] outputFluids, double timeModifier, double powerModifier, double heatModifier, double rarity) { - super(id, input, output, timeModifier, powerModifier, heatModifier, 1); + super(codeId, input, output, timeModifier, powerModifier, heatModifier, 1); } @Override diff --git a/src/main/java/igentuman/nc/block/entity/processor/GasScrubberBE.java b/src/main/java/igentuman/nc/block/entity/processor/GasScrubberBE.java index e4b8f201b..dcdd1413c 100644 --- a/src/main/java/igentuman/nc/block/entity/processor/GasScrubberBE.java +++ b/src/main/java/igentuman/nc/block/entity/processor/GasScrubberBE.java @@ -49,11 +49,11 @@ public void processRecipe() { @NothingNullByDefault public static class Recipe extends NcRecipe { - public Recipe(ResourceLocation id, + public Recipe(String codeId, ItemStackIngredient[] input, ItemStackIngredient[] output, FluidStackIngredient[] inputFluids, FluidStackIngredient[] outputFluids, double timeModifier, double powerModifier, double heatModifier, double rarity) { - super(id, input, output, inputFluids, outputFluids, timeModifier, powerModifier, heatModifier, 1); + super(codeId, input, output, inputFluids, outputFluids, timeModifier, powerModifier, heatModifier, 1); } @Override diff --git a/src/main/java/igentuman/nc/block/entity/processor/IngotFormerBE.java b/src/main/java/igentuman/nc/block/entity/processor/IngotFormerBE.java index 3fa757b58..a2fe54bc9 100644 --- a/src/main/java/igentuman/nc/block/entity/processor/IngotFormerBE.java +++ b/src/main/java/igentuman/nc/block/entity/processor/IngotFormerBE.java @@ -17,11 +17,11 @@ public IngotFormerBE(BlockPos pPos, BlockState pBlockState) { @NothingNullByDefault public static class Recipe extends NcRecipe { - public Recipe(ResourceLocation id, + public Recipe(String codeId, ItemStackIngredient[] input, ItemStackIngredient[] output, FluidStackIngredient[] inputFluids, FluidStackIngredient[] outputFluids, double timeModifier, double powerModifier, double heatModifier, double rarity) { - super(id, input, output, inputFluids, outputFluids, timeModifier, powerModifier, heatModifier, 1); + super(codeId, input, output, inputFluids, outputFluids, timeModifier, powerModifier, heatModifier, 1); } @Override diff --git a/src/main/java/igentuman/nc/block/entity/processor/IrradiatorBE.java b/src/main/java/igentuman/nc/block/entity/processor/IrradiatorBE.java index e893af2c9..d3bce1d58 100644 --- a/src/main/java/igentuman/nc/block/entity/processor/IrradiatorBE.java +++ b/src/main/java/igentuman/nc/block/entity/processor/IrradiatorBE.java @@ -136,11 +136,11 @@ public void upadteMultiblockConnection() @NothingNullByDefault public static class Recipe extends NcRecipe { - public Recipe(ResourceLocation id, + public Recipe(String codeId, ItemStackIngredient[] input, ItemStackIngredient[] output, FluidStackIngredient[] inputFluids, FluidStackIngredient[] outputFluids, double timeModifier, double powerModifier, double heatModifier, double rarity) { - super(id, input, output,inputFluids, outputFluids, timeModifier, powerModifier, heatModifier, 1); + super(codeId, input, output,inputFluids, outputFluids, timeModifier, powerModifier, heatModifier, 1); } @Override diff --git a/src/main/java/igentuman/nc/block/entity/processor/IsotopeSeparatorBE.java b/src/main/java/igentuman/nc/block/entity/processor/IsotopeSeparatorBE.java index eff56fbaf..d349a2510 100644 --- a/src/main/java/igentuman/nc/block/entity/processor/IsotopeSeparatorBE.java +++ b/src/main/java/igentuman/nc/block/entity/processor/IsotopeSeparatorBE.java @@ -19,11 +19,11 @@ public IsotopeSeparatorBE(BlockPos pPos, BlockState pBlockState) { @NothingNullByDefault public static class Recipe extends NcRecipe { - public Recipe(ResourceLocation id, + public Recipe(String codeId, ItemStackIngredient[] input, ItemStackIngredient[] output, FluidStackIngredient[] inputFluids, FluidStackIngredient[] outputFluids, double timeModifier, double powerModifier, double heatModifier, double rarity) { - super(id, input, output, timeModifier, powerModifier, heatModifier, 1); + super(codeId, input, output, timeModifier, powerModifier, heatModifier, 1); } @Override diff --git a/src/main/java/igentuman/nc/block/entity/processor/LeacherBE.java b/src/main/java/igentuman/nc/block/entity/processor/LeacherBE.java index e195d19ab..8914f37fc 100644 --- a/src/main/java/igentuman/nc/block/entity/processor/LeacherBE.java +++ b/src/main/java/igentuman/nc/block/entity/processor/LeacherBE.java @@ -1,6 +1,8 @@ package igentuman.nc.block.entity.processor; import com.mojang.authlib.GameProfile; +import igentuman.api.platform.NCItemStacks; +import igentuman.api.platform.NCLevels; import igentuman.nc.NuclearCraft; import igentuman.nc.content.processors.Processors; import igentuman.nc.handler.event.client.BlockOverlayHandler; @@ -16,7 +18,6 @@ import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.particles.ParticleTypes; -import net.minecraft.nbt.CompoundTag; import net.minecraft.resources.ResourceLocation; import net.minecraft.server.level.ServerLevel; import net.minecraft.world.entity.player.Player; @@ -29,14 +30,9 @@ import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.saveddata.maps.MapItemSavedData; -import net.minecraftforge.common.Tags; -import net.minecraftforge.common.capabilities.Capability; -import net.minecraftforge.common.capabilities.ForgeCapabilities; -import net.minecraftforge.common.util.FakePlayerFactory; -import net.minecraftforge.common.util.LazyOptional; - -import javax.annotation.Nonnull; -import javax.annotation.Nullable; +import net.neoforged.neoforge.common.Tags; +import net.neoforged.neoforge.common.util.FakePlayerFactory; + import java.util.*; import static igentuman.nc.block.ProcessorBlock.ACTIVE; @@ -138,11 +134,11 @@ public PumpBE[] getPumpsForClient() { @NothingNullByDefault public static class Recipe extends NcRecipe { - public Recipe(ResourceLocation id, + public Recipe(String codeId, ItemStackIngredient[] input, ItemStackIngredient[] output, FluidStackIngredient[] inputFluids, FluidStackIngredient[] outputFluids, double timeModifier, double powerModifier, double heatModifier, double rarity) { - super(id, input, output, inputFluids, outputFluids, timeModifier, powerModifier, heatModifier, 1); + super(codeId, input, output, inputFluids, outputFluids, timeModifier, powerModifier, heatModifier, 1); } @Override @@ -157,7 +153,7 @@ public void tickClient() { public boolean isPumpValid(BlockPosInstance pos, int id) { for (int y = 0; y < 2; y++) { - BlockEntity be = getLevel().getExistingBlockEntity(pos.below()); + BlockEntity be = NCLevels.getExistingBlockEntity(getLevel(), pos.below()); if (be instanceof PumpBE) { pumps[id] = (PumpBE) be; return pumps[id].isInSituValid(); @@ -263,12 +259,11 @@ protected ItemStack useIECoreSample() { protected ItemStack useResearchPaper() { - CompoundTag tagData = catalyst.getOrCreateTag(); - if(!tagData.contains("pos") || !tagData.contains("vein")) { + if(!NCItemStacks.contains(catalyst, "pos") || !NCItemStacks.contains(catalyst, "vein")) { leacherState = NO_SOURCE; return ItemStack.EMPTY; } - BlockPos mapPos = BlockPos.of(tagData.getLong("pos")); + BlockPos mapPos = BlockPos.of(NCItemStacks.getLong(catalyst, "pos")); ChunkPos chunkPos = new ChunkPos(mapPos); if(!chunkPos.equals(new ChunkPos(getBlockPos()))) { leacherState = WRONG_POSITION; @@ -365,19 +360,12 @@ protected boolean mineFirstMinableBlock() private boolean isMinable(ItemStack toMine) { for(ItemStack stack: allMinableOres()) { - if(stack.equals(toMine, false)) return true; + if(ItemStack.isSameItem(stack, toMine)) return true; } return false; } - @Nonnull - @Override - public final LazyOptional getCapability(@Nonnull Capability cap, @Nullable Direction side) { - if (cap == ForgeCapabilities.ITEM_HANDLER) { //not letting to access item handler from outside - return LazyOptional.empty(); - } - return super.getCapability(cap, side); - } + @Override public List getAllowedCatalysts() { diff --git a/src/main/java/igentuman/nc/block/entity/processor/ManufactoryBE.java b/src/main/java/igentuman/nc/block/entity/processor/ManufactoryBE.java index 2eb17593a..858f49e06 100644 --- a/src/main/java/igentuman/nc/block/entity/processor/ManufactoryBE.java +++ b/src/main/java/igentuman/nc/block/entity/processor/ManufactoryBE.java @@ -19,11 +19,11 @@ public ManufactoryBE(BlockPos pPos, BlockState pBlockState) { @NothingNullByDefault public static class Recipe extends NcRecipe { - public Recipe(ResourceLocation id, + public Recipe(String codeId, ItemStackIngredient[] input, ItemStackIngredient[] output, FluidStackIngredient[] inputFluids, FluidStackIngredient[] outputFluids, double timeModifier, double powerModifier, double heatModifier, double rarity) { - super(id, input, output, timeModifier, powerModifier, heatModifier, 1); + super(codeId, input, output, timeModifier, powerModifier, heatModifier, 1); } @Override diff --git a/src/main/java/igentuman/nc/block/entity/processor/MelterBE.java b/src/main/java/igentuman/nc/block/entity/processor/MelterBE.java index c7fa24fa7..340ab6c70 100644 --- a/src/main/java/igentuman/nc/block/entity/processor/MelterBE.java +++ b/src/main/java/igentuman/nc/block/entity/processor/MelterBE.java @@ -17,11 +17,11 @@ public MelterBE(BlockPos pPos, BlockState pBlockState) { @NothingNullByDefault public static class Recipe extends NcRecipe { - public Recipe(ResourceLocation id, + public Recipe(String codeId, ItemStackIngredient[] input, ItemStackIngredient[] output, FluidStackIngredient[] inputFluids, FluidStackIngredient[] outputFluids, double timeModifier, double powerModifier, double heatModifier, double rarity) { - super(id, input, output, inputFluids, outputFluids, timeModifier, powerModifier, heatModifier, 1); + super(codeId, input, output, inputFluids, outputFluids, timeModifier, powerModifier, heatModifier, 1); } @Override diff --git a/src/main/java/igentuman/nc/block/entity/processor/NCProcessorBE.java b/src/main/java/igentuman/nc/block/entity/processor/NCProcessorBE.java index e052bcb55..b8d17d482 100644 --- a/src/main/java/igentuman/nc/block/entity/processor/NCProcessorBE.java +++ b/src/main/java/igentuman/nc/block/entity/processor/NCProcessorBE.java @@ -1,10 +1,9 @@ package igentuman.nc.block.entity.processor; import igentuman.api.nc.Processor; +import igentuman.api.platform.NCSerialization; import igentuman.nc.NuclearCraft; import igentuman.nc.block.entity.NuclearCraftBE; -import igentuman.nc.compat.cc.ProcessorPeripheral; -import igentuman.nc.compat.oc2.ProcessorDevice; import igentuman.nc.handler.CatalystHandler; import igentuman.nc.handler.UpgradesHandler; import igentuman.nc.handler.sided.capability.ItemCapabilityHandler; @@ -34,27 +33,20 @@ import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.properties.BlockStateProperties; -import net.minecraftforge.common.capabilities.Capability; -import net.minecraftforge.common.capabilities.ForgeCapabilities; -import net.minecraftforge.common.util.LazyOptional; -import net.minecraftforge.energy.IEnergyStorage; -import net.minecraftforge.fluids.FluidStack; -import net.minecraftforge.fluids.capability.templates.FluidTank; -import net.minecraftforge.items.IItemHandler; - -import javax.annotation.Nonnull; -import javax.annotation.Nullable; +import net.neoforged.neoforge.fluids.FluidStack; +import net.neoforged.neoforge.fluids.capability.templates.FluidTank; + import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Objects; import static igentuman.nc.block.ProcessorBlock.ACTIVE; -import static igentuman.nc.compat.oc2.ProcessorDevice.DEVICE_CAPABILITY; import static igentuman.nc.handler.config.CommonConfig.GTCEU_CONFIG; import static igentuman.nc.handler.config.ProcessorsConfig.PROCESSOR_CONFIG; import static igentuman.nc.setup.registration.NCItems.NC_ITEMS; -import static igentuman.nc.util.ModUtil.*; +import static igentuman.nc.util.ModUtil.isCcLoaded; +import static igentuman.nc.util.ModUtil.isOC2Loaded; public class NCProcessorBE extends NuclearCraftBE implements Processor { @@ -63,12 +55,9 @@ public class NCProcessorBE extends NuclearCraftBE implements Processor { protected final CustomEnergyStorage energyStorage; public final HashMap cachedRecipes = new HashMap<>(); public final UpgradesHandler upgradesHandler; - protected final LazyOptional handler; public final CatalystHandler catalystHandler; public int manualUpdateCounter = 40; protected int skippedTicks = 1; - protected LazyOptional peripheralCap; - protected final LazyOptional energy; protected long lastTickTime = 0; @NBTField @@ -88,10 +77,6 @@ public class NCProcessorBE extends NuclearCraftBE implements Processor { protected ParticleOptions particle1 = ParticleTypes.SMOKE; protected ProcessorPrefab prefab; - public LazyOptional getEnergy() { - return energy; - } - public NCProcessorBE(BlockPos pPos, BlockState pBlockState, String name) { super(NCProcessors.PROCESSORS_BE.get(name).get(), pPos, pBlockState); NAME = name; @@ -103,9 +88,7 @@ public NCProcessorBE(BlockPos pPos, BlockState pBlockState, String name) { energyStorage = createEnergy(); energyStorage.setInputEnergyTier(GTCEU_CONFIG.PROCESSOR_ENERGY_TIER.get().ordinal()); energyStorage.setOutputEnergyTier(GTCEU_CONFIG.PROCESSOR_ENERGY_TIER.get().ordinal()); - energy = LazyOptional.of(() -> energyStorage); upgradesHandler = createUpgradesHandler(); - handler = LazyOptional.of(() -> upgradesHandler); catalystHandler = createCatalystHandler(); contentHandler().setAllowedInputItems(this::getAllowedInputItems); for(int i = 0; i < prefab().getSlotsConfig().getInputFluids(); i++) { @@ -152,13 +135,6 @@ public ProcessorPrefab prefab() { return prefab; } - public LazyOptional getPeripheral(@Nonnull Capability cap, @Nullable Direction side) { - if(peripheralCap == null) { - peripheralCap = LazyOptional.of(() -> new ProcessorPeripheral(this)); - } - return peripheralCap.cast(); - } - @Override public ItemCapabilityHandler getItemInventory() { return contentHandler().itemHandler; @@ -318,35 +294,6 @@ protected boolean gtEUSupported() return PROCESSOR_CONFIG.GT_SUPPORT.get() == 2 || PROCESSOR_CONFIG.GT_SUPPORT.get() == 1; } - @Nonnull - @Override - public LazyOptional getCapability(@Nonnull Capability cap, @Nullable Direction side) { - if (cap == ForgeCapabilities.ENERGY && PROCESSOR_CONFIG.GT_SUPPORT.get() != 2) { - if(prefab().config().getPower() > 0) { - return getEnergy().cast(); - } - return LazyOptional.empty(); - } - - if(isCcLoaded()) { - if(cap == dan200.computercraft.shared.Capabilities.CAPABILITY_PERIPHERAL) { - return getPeripheral(cap, side); - } - } - - if(isOC2Loaded()) { - if(cap == DEVICE_CAPABILITY) { - return getOCDevice(cap, side); - } - } - - return super.getCapability(cap, side); - } - - private LazyOptional getOCDevice(Capability cap, Direction side) { - return LazyOptional.of(() -> ProcessorDevice.createDevice(this)).cast(); - } - public void tickClient() { if(isActive && level.getRandom().nextInt(50) < 5) { BlockPos pos = worldPosition; @@ -512,8 +459,6 @@ public int energyMultiplier() { @Override public void setRemoved() { super.setRemoved(); - contentHandler().invalidate(); - energy.invalidate(); } public double getProgress() { @@ -548,14 +493,15 @@ public void toggleRedstoneMode() { public CompoundTag getTagForStack() { CompoundTag data = new CompoundTag(); + var registries = level.registryAccess(); contentHandler().saveSideMap(); - data.put("Content", contentHandler().serializeNBT()); - data.put("Energy", energyStorage().serializeNBT()); + data.put("Content", NCSerialization.serialize(contentHandler(), registries)); + data.put("Energy", NCSerialization.serialize(energyStorage(), registries)); CompoundTag infoTag = new CompoundTag(); saveFullTagData(infoTag); - infoTag.put("upgrades", upgradesHandler().serializeNBT()); - infoTag.put("catalyst", catalystHandler().serializeNBT()); - infoTag.put("recipeInfo", recipeInfo().serializeNBT()); + infoTag.put("upgrades", NCSerialization.serialize(upgradesHandler(), registries)); + infoTag.put("catalyst", NCSerialization.serialize(catalystHandler(), registries)); + infoTag.put("recipeInfo", NCSerialization.serialize(recipeInfo(), registries)); infoTag.putInt("energy", energyStorage().getEnergyStored()); data.put("Info", infoTag); return data; diff --git a/src/main/java/igentuman/nc/block/entity/processor/NuclearFurnaceBE.java b/src/main/java/igentuman/nc/block/entity/processor/NuclearFurnaceBE.java index 65cdbb347..404e8e0ec 100644 --- a/src/main/java/igentuman/nc/block/entity/processor/NuclearFurnaceBE.java +++ b/src/main/java/igentuman/nc/block/entity/processor/NuclearFurnaceBE.java @@ -27,7 +27,7 @@ public NuclearFurnaceBE(BlockPos pPos, BlockState pBlockState) { private List getFuelItems() { if (ingots == null) { - ingots = getItemsByTagKey("forge:ingots/uranium"); + ingots = getItemsByTagKey("c:ingots/uranium"); } return ingots; } @@ -54,11 +54,11 @@ public boolean canProcessRecipe() { @NothingNullByDefault public static class Recipe extends NcRecipe { - public Recipe(ResourceLocation id, + public Recipe(String codeId, ItemStackIngredient[] input, ItemStackIngredient[] output, FluidStackIngredient[] inputFluids, FluidStackIngredient[] outputFluids, double timeModifier, double powerModifier, double heatModifier, double rarity) { - super(id, input, output, timeModifier, powerModifier, heatModifier, 1); + super(codeId, input, output, timeModifier, powerModifier, heatModifier, 1); } @Override diff --git a/src/main/java/igentuman/nc/block/entity/processor/PressurizerBE.java b/src/main/java/igentuman/nc/block/entity/processor/PressurizerBE.java index 8eeda7767..2b39918a7 100644 --- a/src/main/java/igentuman/nc/block/entity/processor/PressurizerBE.java +++ b/src/main/java/igentuman/nc/block/entity/processor/PressurizerBE.java @@ -17,11 +17,11 @@ public PressurizerBE(BlockPos pPos, BlockState pBlockState) { @NothingNullByDefault public static class Recipe extends NcRecipe { - public Recipe(ResourceLocation id, + public Recipe(String codeId, ItemStackIngredient[] input, ItemStackIngredient[] output, FluidStackIngredient[] inputFluids, FluidStackIngredient[] outputFluids, double timeModifier, double powerModifier, double heatModifier, double rarity) { - super(id, input, output, timeModifier, powerModifier, heatModifier, 1); + super(codeId, input, output, timeModifier, powerModifier, heatModifier, 1); } @Override public String getCodeId() { diff --git a/src/main/java/igentuman/nc/block/entity/processor/PumpBE.java b/src/main/java/igentuman/nc/block/entity/processor/PumpBE.java index 11b8ff651..9aa15df8a 100644 --- a/src/main/java/igentuman/nc/block/entity/processor/PumpBE.java +++ b/src/main/java/igentuman/nc/block/entity/processor/PumpBE.java @@ -48,11 +48,11 @@ public boolean hasRecipe() { @NothingNullByDefault public static class Recipe extends NcRecipe { - public Recipe(ResourceLocation id, + public Recipe(String codeId, ItemStackIngredient[] input, ItemStackIngredient[] output, FluidStackIngredient[] inputFluids, FluidStackIngredient[] outputFluids, double timeModifier, double powerModifier, double heatModifier, double rarity) { - super(id, input, output, inputFluids, outputFluids, timeModifier, powerModifier, heatModifier, 1); + super(codeId, input, output, inputFluids, outputFluids, timeModifier, powerModifier, heatModifier, 1); } @Override diff --git a/src/main/java/igentuman/nc/block/entity/processor/QuantumTransformerBE.java b/src/main/java/igentuman/nc/block/entity/processor/QuantumTransformerBE.java index 31862869f..5c99f524b 100644 --- a/src/main/java/igentuman/nc/block/entity/processor/QuantumTransformerBE.java +++ b/src/main/java/igentuman/nc/block/entity/processor/QuantumTransformerBE.java @@ -15,11 +15,11 @@ public class QuantumTransformerBE extends NCProcessorBE { @NothingNullByDefault public static class Recipe extends NcRecipe { - public Recipe(ResourceLocation id, + public Recipe(String codeId, ItemStackIngredient[] input, ItemStackIngredient[] output, FluidStackIngredient[] inputFluids, FluidStackIngredient[] outputFluids, double timeModifier, double powerModifier, double heatModifier, double rarity) { - super(id, input, output, timeModifier, powerModifier, heatModifier, 1); + super(codeId, input, output, timeModifier, powerModifier, heatModifier, 1); } @Override diff --git a/src/main/java/igentuman/nc/block/entity/processor/RockCrusherBE.java b/src/main/java/igentuman/nc/block/entity/processor/RockCrusherBE.java index f28801182..2ed9bfc70 100644 --- a/src/main/java/igentuman/nc/block/entity/processor/RockCrusherBE.java +++ b/src/main/java/igentuman/nc/block/entity/processor/RockCrusherBE.java @@ -19,11 +19,11 @@ public RockCrusherBE(BlockPos pPos, BlockState pBlockState) { @NothingNullByDefault public static class Recipe extends NcRecipe { - public Recipe(ResourceLocation id, + public Recipe(String codeId, ItemStackIngredient[] input, ItemStackIngredient[] output, FluidStackIngredient[] inputFluids, FluidStackIngredient[] outputFluids, double timeModifier, double powerModifier, double heatModifier, double rarity) { - super(id, input, output, timeModifier, powerModifier, heatModifier, 1); + super(codeId, input, output, timeModifier, powerModifier, heatModifier, 1); } @Override diff --git a/src/main/java/igentuman/nc/block/entity/processor/SteamTurbineBE.java b/src/main/java/igentuman/nc/block/entity/processor/SteamTurbineBE.java index 43b7f01b8..c367cbc0c 100644 --- a/src/main/java/igentuman/nc/block/entity/processor/SteamTurbineBE.java +++ b/src/main/java/igentuman/nc/block/entity/processor/SteamTurbineBE.java @@ -76,11 +76,11 @@ protected int getEnergyTransferPerTick() { @NothingNullByDefault public static class Recipe extends NcRecipe { - public Recipe(ResourceLocation id, + public Recipe(String codeId, ItemStackIngredient[] input, ItemStackIngredient[] output, FluidStackIngredient[] inputFluids, FluidStackIngredient[] outputFluids, double timeModifier, double powerModifier, double heatModifier, double rarity) { - super(id, input, output, inputFluids, outputFluids, timeModifier, powerModifier, heatModifier, 1); + super(codeId, input, output, inputFluids, outputFluids, timeModifier, powerModifier, heatModifier, 1); } @Override diff --git a/src/main/java/igentuman/nc/block/entity/processor/SubatomicLiquifierBE.java b/src/main/java/igentuman/nc/block/entity/processor/SubatomicLiquifierBE.java index 7730751b9..b1d39dbc7 100644 --- a/src/main/java/igentuman/nc/block/entity/processor/SubatomicLiquifierBE.java +++ b/src/main/java/igentuman/nc/block/entity/processor/SubatomicLiquifierBE.java @@ -19,11 +19,11 @@ public SubatomicLiquifierBE(BlockPos pPos, BlockState pBlockState) { @NothingNullByDefault public static class Recipe extends NcRecipe { - public Recipe(ResourceLocation id, + public Recipe(String codeId, ItemStackIngredient[] input, ItemStackIngredient[] output, FluidStackIngredient[] inputFluids, FluidStackIngredient[] outputFluids, double timeModifier, double powerModifier, double heatModifier, double rarity) { - super(id, input, output, inputFluids, outputFluids, timeModifier, powerModifier, heatModifier, 1); + super(codeId, input, output, inputFluids, outputFluids, timeModifier, powerModifier, heatModifier, 1); } @Override diff --git a/src/main/java/igentuman/nc/block/entity/processor/SuperCoolerBE.java b/src/main/java/igentuman/nc/block/entity/processor/SuperCoolerBE.java index 00d609f22..03c33f8a2 100644 --- a/src/main/java/igentuman/nc/block/entity/processor/SuperCoolerBE.java +++ b/src/main/java/igentuman/nc/block/entity/processor/SuperCoolerBE.java @@ -19,11 +19,11 @@ public SuperCoolerBE(BlockPos pPos, BlockState pBlockState) { @NothingNullByDefault public static class Recipe extends NcRecipe { - public Recipe(ResourceLocation id, + public Recipe(String codeId, ItemStackIngredient[] input, ItemStackIngredient[] output, FluidStackIngredient[] inputFluids, FluidStackIngredient[] outputFluids, double timeModifier, double powerModifier, double heatModifier, double rarity) { - super(id, input, output, inputFluids, outputFluids, timeModifier, powerModifier, heatModifier, 1); + super(codeId, input, output, inputFluids, outputFluids, timeModifier, powerModifier, heatModifier, 1); } @Override diff --git a/src/main/java/igentuman/nc/block/fission/FissionCasingBlock.java b/src/main/java/igentuman/nc/block/fission/FissionCasingBlock.java index 977f773f0..ec98b1fc1 100644 --- a/src/main/java/igentuman/nc/block/fission/FissionCasingBlock.java +++ b/src/main/java/igentuman/nc/block/fission/FissionCasingBlock.java @@ -6,10 +6,10 @@ import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.network.chat.Component; +import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.TooltipFlag; import net.minecraft.world.item.context.BlockPlaceContext; -import net.minecraft.world.level.BlockGetter; import net.minecraft.world.level.LevelReader; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.SoundType; @@ -27,7 +27,7 @@ public FissionCasingBlock(Properties pProperties) { } @Override - public void appendHoverText(ItemStack pStack, @javax.annotation.Nullable BlockGetter pLevel, List list, TooltipFlag pFlag) { + public void appendHoverText(ItemStack pStack, Item.TooltipContext pContext, List list, TooltipFlag pFlag) { list.add(__("multiblock.build_in_chunk.advise").withStyle(ChatFormatting.GREEN)); } } diff --git a/src/main/java/igentuman/nc/block/fission/FissionControllerBlock.java b/src/main/java/igentuman/nc/block/fission/FissionControllerBlock.java index 53bf5948c..d052750bf 100644 --- a/src/main/java/igentuman/nc/block/fission/FissionControllerBlock.java +++ b/src/main/java/igentuman/nc/block/fission/FissionControllerBlock.java @@ -1,5 +1,7 @@ package igentuman.nc.block.fission; +import igentuman.api.platform.NCItemStacks; +import igentuman.api.platform.NCLevels; import igentuman.nc.block.MultiblockControllerBlock; import igentuman.nc.block.fission.entity.FissionControllerBE; import igentuman.nc.compat.gregtech.GTUtils; @@ -12,15 +14,14 @@ import net.minecraft.core.Direction; import net.minecraft.network.chat.Component; import net.minecraft.server.level.ServerPlayer; -import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResult; import net.minecraft.world.MenuProvider; import net.minecraft.world.entity.player.Inventory; import net.minecraft.world.entity.player.Player; import net.minecraft.world.inventory.AbstractContainerMenu; +import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.TooltipFlag; -import net.minecraft.world.level.BlockGetter; import net.minecraft.world.level.Level; import net.minecraft.world.level.LevelReader; import net.minecraft.world.level.block.EntityBlock; @@ -30,7 +31,7 @@ import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.phys.BlockHitResult; -import net.minecraftforge.network.NetworkHooks; + import org.jetbrains.annotations.Nullable; import java.util.List; @@ -66,10 +67,9 @@ public BlockEntity newBlockEntity(BlockPos pPos, BlockState pState) { } @Override - public InteractionResult use(BlockState state, Level level, BlockPos pos, Player player, InteractionHand hand, BlockHitResult result) { - + protected InteractionResult useWithoutItem(BlockState state, Level level, BlockPos pos, Player player, BlockHitResult result) { if (!level.isClientSide()) { - BlockEntity be = level.getExistingBlockEntity(pos); + BlockEntity be = NCLevels.getExistingBlockEntity(level, pos); if (be instanceof FissionControllerBE) { MenuProvider containerProvider = new MenuProvider() { @@ -83,7 +83,7 @@ public AbstractContainerMenu createMenu(int windowId, Inventory playerInventory, return new FissionControllerContainer(windowId, pos, playerInventory); } }; - NetworkHooks.openScreen((ServerPlayer) player, containerProvider, be.getBlockPos()); + ((ServerPlayer) player).openMenu(containerProvider, be.getBlockPos()); } } return InteractionResult.SUCCESS; @@ -111,11 +111,11 @@ public void onNeighborChange(BlockState state, LevelReader level, BlockPos pos, if(level.isClientSide()) return; Level world = (Level) level; MultiblockHandler.get(world.dimension()).trackBlockChange(pos); - BlockEntity be = world.getExistingBlockEntity(pos); + BlockEntity be = NCLevels.getExistingBlockEntity(world, pos); } @Override - public void appendHoverText(ItemStack pStack, @javax.annotation.Nullable BlockGetter pLevel, List list, TooltipFlag pFlag) { + public void appendHoverText(ItemStack pStack, Item.TooltipContext pContext, List list, TooltipFlag pFlag) { if(isGtLoaded() && isGTEUCapEnabled()) { list.add(__("tooltip.nc.energy_eu_tier", getTier(pStack)).withStyle(ChatFormatting.GOLD)); } @@ -129,6 +129,6 @@ public void appendHoverText(ItemStack pStack, @javax.annotation.Nullable BlockGe } private CommonConfig.GTCEUCompatibilityConfig.GTCEUTier getTier(ItemStack pStack) { - return CommonConfig.GTCEUCompatibilityConfig.GTCEUTier.byId(GTCEU_CONFIG.FISSION_REACTOR_TIER.get().ordinal()+pStack.getOrCreateTag().getInt("upgrade_tier")); + return CommonConfig.GTCEUCompatibilityConfig.GTCEUTier.byId(GTCEU_CONFIG.FISSION_REACTOR_TIER.get().ordinal()+NCItemStacks.getInt(pStack, "upgrade_tier")); } } diff --git a/src/main/java/igentuman/nc/block/fission/FissionPortBlock.java b/src/main/java/igentuman/nc/block/fission/FissionPortBlock.java index d7c31a7e6..4a3fd4647 100644 --- a/src/main/java/igentuman/nc/block/fission/FissionPortBlock.java +++ b/src/main/java/igentuman/nc/block/fission/FissionPortBlock.java @@ -1,5 +1,6 @@ package igentuman.nc.block.fission; +import igentuman.api.platform.NCLevels; import igentuman.nc.block.fission.entity.FissionPortBE; import igentuman.nc.container.FissionPortContainer; import igentuman.nc.multiblock.MultiblockHandler; @@ -8,18 +9,18 @@ import net.minecraft.core.Direction; import net.minecraft.network.chat.Component; import net.minecraft.server.level.ServerPlayer; -import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResult; import net.minecraft.world.MenuProvider; import net.minecraft.world.entity.player.Inventory; import net.minecraft.world.entity.player.Player; import net.minecraft.world.inventory.AbstractContainerMenu; +import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.TooltipFlag; import net.minecraft.world.item.context.BlockPlaceContext; -import net.minecraft.world.level.BlockGetter; import net.minecraft.world.level.Level; import net.minecraft.world.level.LevelReader; +import com.mojang.serialization.MapCodec; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.EntityBlock; import net.minecraft.world.level.block.HorizontalDirectionalBlock; @@ -32,7 +33,7 @@ import net.minecraft.world.level.block.state.properties.BlockStateProperties; import net.minecraft.world.level.block.state.properties.DirectionProperty; import net.minecraft.world.phys.BlockHitResult; -import net.minecraftforge.network.NetworkHooks; + import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -59,6 +60,12 @@ public FissionPortBlock(Properties pProperties) { .setValue(HORIZONTAL_FACING, Direction.NORTH) ); } + + @Override + protected MapCodec codec() { + return simpleCodec(FissionPortBlock::new); + } + @Override public BlockState getStateForPlacement(BlockPlaceContext context) { return this.defaultBlockState().setValue(FACING, context.getHorizontalDirection().getOpposite()); @@ -76,10 +83,9 @@ public BlockEntity newBlockEntity(BlockPos pPos, BlockState pState) { } @Override - public @NotNull InteractionResult use(BlockState state, Level level, BlockPos pos, Player player, InteractionHand hand, BlockHitResult result) { - + protected @NotNull InteractionResult useWithoutItem(BlockState state, Level level, BlockPos pos, Player player, BlockHitResult result) { if (!level.isClientSide()) { - BlockEntity be = level.getExistingBlockEntity(pos); + BlockEntity be = NCLevels.getExistingBlockEntity(level, pos); if (be instanceof FissionPortBE port) { MenuProvider containerProvider = new MenuProvider() { @@ -93,7 +99,7 @@ public AbstractContainerMenu createMenu(int windowId, Inventory playerInventory, return new FissionPortContainer(windowId, pos, playerInventory); } }; - NetworkHooks.openScreen((ServerPlayer) player, containerProvider, be.getBlockPos()); + ((ServerPlayer) player).openMenu(containerProvider, be.getBlockPos()); } } return InteractionResult.SUCCESS; @@ -116,7 +122,7 @@ public BlockEntityTicker getTicker(Level level, Block }; } - public void appendHoverText(ItemStack pStack, @javax.annotation.Nullable BlockGetter pLevel, List list, TooltipFlag pFlag) + public void appendHoverText(ItemStack pStack, Item.TooltipContext pContext, List list, TooltipFlag pFlag) { if(isGtLoaded() && isGTEUCapEnabled()) { list.add(__("tooltip.nc.energy_eu_tier.depends_on_controller").withStyle(ChatFormatting.GOLD)); @@ -132,7 +138,7 @@ public boolean hasAnalogOutputSignal(BlockState pState) { @Override public int getAnalogOutputSignal(BlockState pBlockState, Level pLevel, BlockPos pPos) { - return pLevel.getExistingBlockEntity(pPos) instanceof FissionPortBE be ? be.analogSignal : 0; + return NCLevels.getExistingBlockEntity(pLevel, pPos) instanceof FissionPortBE be ? be.analogSignal : 0; } @Override diff --git a/src/main/java/igentuman/nc/block/fission/HeatSinkBlock.java b/src/main/java/igentuman/nc/block/fission/HeatSinkBlock.java index a71442db9..59c48562e 100644 --- a/src/main/java/igentuman/nc/block/fission/HeatSinkBlock.java +++ b/src/main/java/igentuman/nc/block/fission/HeatSinkBlock.java @@ -1,5 +1,6 @@ package igentuman.nc.block.fission; +import igentuman.api.platform.NCNames; import igentuman.nc.block.MultiblockBlock; import igentuman.nc.multiblock.AbstractMultiblock; import igentuman.nc.multiblock.MultiblockHandler; @@ -11,18 +12,18 @@ import net.minecraft.network.chat.Component; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.InteractionHand; -import net.minecraft.world.InteractionResult; +import net.minecraft.world.ItemInteractionResult; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.TooltipFlag; -import net.minecraft.world.level.BlockGetter; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.SoundType; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.phys.BlockHitResult; -import net.minecraftforge.registries.ForgeRegistries; +import net.minecraft.core.registries.BuiltInRegistries; +import net.neoforged.neoforge.registries.NeoForgeRegistries; import java.util.ArrayList; import java.util.List; @@ -108,7 +109,7 @@ private List getBlockNames(String rawLine) { String id = code; if(!id.contains(":")) { ResourceLocation res = rl(id); - Block block = ForgeRegistries.BLOCKS.getValue(res); + Block block = BuiltInRegistries.BLOCK.get(res); names.add(block.getName().getString()); } else { names.add(convertToName(id.split(":")[1])); @@ -119,16 +120,17 @@ private List getBlockNames(String rawLine) { private void initParams() { Item item = Item.byBlock(this); - if(item.toString().isEmpty()) return; - if(item.toString().contains("empty")) return; - type = item.toString().replace("_heat_sink", ""); + String name = NCNames.of(item); + if(name.isEmpty()) return; + if(name.contains("empty")) return; + type = name.replace("_heat_sink", ""); def = heatsinks.get(type); heat = def.getHeat(); } @Override - public InteractionResult use(BlockState state, Level level, BlockPos pos, Player player, InteractionHand hand, BlockHitResult result) { - if(!player.getItemInHand(hand).isEmpty()) return InteractionResult.FAIL; + protected ItemInteractionResult useItemOn(ItemStack stack, BlockState state, Level level, BlockPos pos, Player player, InteractionHand hand, BlockHitResult result) { + if(!stack.isEmpty()) return ItemInteractionResult.PASS_TO_DEFAULT_BLOCK_INTERACTION; if (!level.isClientSide()) { Block block = level.getBlockState(pos).getBlock(); if(block instanceof HeatSinkBlock) { @@ -146,12 +148,12 @@ public InteractionResult use(BlockState state, Level level, BlockPos pos, Player } } } - return InteractionResult.SUCCESS; + return ItemInteractionResult.SUCCESS; } @Override - public void appendHoverText(ItemStack pStack, @javax.annotation.Nullable BlockGetter pLevel, List list, TooltipFlag pFlag) { - if(asItem().toString().contains("empty")) return; + public void appendHoverText(ItemStack pStack, Item.TooltipContext pContext, List list, TooltipFlag pFlag) { + if(NCNames.of(asItem()).contains("empty")) return; initParams(); list.add(TextUtils.applyFormat(__("heat_sink.heat.descr", TextUtils.numberFormat(heat)), ChatFormatting.GOLD)); diff --git a/src/main/java/igentuman/nc/block/fission/IrradiationChamberBlock.java b/src/main/java/igentuman/nc/block/fission/IrradiationChamberBlock.java index a9bfcbbad..b49813c43 100644 --- a/src/main/java/igentuman/nc/block/fission/IrradiationChamberBlock.java +++ b/src/main/java/igentuman/nc/block/fission/IrradiationChamberBlock.java @@ -4,9 +4,9 @@ import igentuman.nc.util.TextUtils; import net.minecraft.ChatFormatting; import net.minecraft.network.chat.Component; +import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.TooltipFlag; -import net.minecraft.world.level.BlockGetter; import net.minecraft.world.level.block.SoundType; import java.util.List; @@ -27,7 +27,7 @@ public IrradiationChamberBlock(Properties pProperties) { } @Override - public void appendHoverText(ItemStack pStack, @javax.annotation.Nullable BlockGetter pLevel, List list, TooltipFlag pFlag) { + public void appendHoverText(ItemStack pStack, Item.TooltipContext pContext, List list, TooltipFlag pFlag) { list.add(TextUtils.applyFormat(__("irradiation_chamber.descr"), ChatFormatting.AQUA)); } } diff --git a/src/main/java/igentuman/nc/block/fission/MSRControllerBlock.java b/src/main/java/igentuman/nc/block/fission/MSRControllerBlock.java index 4999f4c4e..245141c81 100644 --- a/src/main/java/igentuman/nc/block/fission/MSRControllerBlock.java +++ b/src/main/java/igentuman/nc/block/fission/MSRControllerBlock.java @@ -1,5 +1,6 @@ package igentuman.nc.block.fission; +import igentuman.api.platform.NCLevels; import igentuman.nc.block.MultiblockControllerBlock; import igentuman.nc.block.fission.entity.MSRControllerBE; import igentuman.nc.compat.gregtech.GTUtils; @@ -11,15 +12,14 @@ import net.minecraft.core.Direction; import net.minecraft.network.chat.Component; import net.minecraft.server.level.ServerPlayer; -import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResult; import net.minecraft.world.MenuProvider; import net.minecraft.world.entity.player.Inventory; import net.minecraft.world.entity.player.Player; import net.minecraft.world.inventory.AbstractContainerMenu; +import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.TooltipFlag; -import net.minecraft.world.level.BlockGetter; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.EntityBlock; import net.minecraft.world.level.block.SoundType; @@ -28,7 +28,7 @@ import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.phys.BlockHitResult; -import net.minecraftforge.network.NetworkHooks; + import java.util.List; @@ -65,9 +65,9 @@ public BlockEntity newBlockEntity(BlockPos pPos, BlockState pState) { } @Override - public InteractionResult use(BlockState state, Level level, BlockPos pos, Player player, InteractionHand hand, BlockHitResult result) { + protected InteractionResult useWithoutItem(BlockState state, Level level, BlockPos pos, Player player, BlockHitResult result) { if (!level.isClientSide()) { - BlockEntity be = level.getExistingBlockEntity(pos); + BlockEntity be = NCLevels.getExistingBlockEntity(level, pos); if (be instanceof MSRControllerBE) { MenuProvider containerProvider = new MenuProvider() { @@ -81,7 +81,7 @@ public AbstractContainerMenu createMenu(int windowId, Inventory playerInventory, return new MSRControllerContainer(windowId, pos, playerInventory); } }; - NetworkHooks.openScreen((ServerPlayer) player, containerProvider, be.getBlockPos()); + ((ServerPlayer) player).openMenu(containerProvider, be.getBlockPos()); } } return InteractionResult.SUCCESS; @@ -105,7 +105,7 @@ public BlockEntityTicker getTicker(Level level, Block } @Override - public void appendHoverText(ItemStack pStack, @javax.annotation.Nullable BlockGetter pLevel, List list, TooltipFlag pFlag) { + public void appendHoverText(ItemStack pStack, Item.TooltipContext pContext, List list, TooltipFlag pFlag) { list.add(__("multiblock.build_in_chunk.advise").withStyle(ChatFormatting.GREEN)); int max = FISSION_CONFIG.MAX_SIZE.get(); int min = FISSION_CONFIG.MIN_SIZE.get() + 2; diff --git a/src/main/java/igentuman/nc/block/fission/entity/FissionControllerBE.java b/src/main/java/igentuman/nc/block/fission/entity/FissionControllerBE.java index c89d5f6fa..76906582d 100644 --- a/src/main/java/igentuman/nc/block/fission/entity/FissionControllerBE.java +++ b/src/main/java/igentuman/nc/block/fission/entity/FissionControllerBE.java @@ -3,8 +3,6 @@ import igentuman.nc.NuclearCraft; import igentuman.nc.block.MultiblockPortBE; import igentuman.nc.block.entity.MultiblockControllerBE; -import igentuman.nc.compat.cc.SolidFissionReactorPeripheral; -import igentuman.nc.compat.oc2.FissionReactorDevice; import igentuman.nc.handler.event.client.BlockOverlayHandler; import igentuman.nc.handler.sided.SidedContentHandler; import igentuman.nc.handler.sided.SlotModePair; @@ -33,16 +31,12 @@ import net.minecraft.world.level.block.state.properties.BlockStateProperties; import net.minecraft.world.phys.AABB; import net.minecraft.world.phys.Vec3; -import net.minecraftforge.common.capabilities.Capability; -import net.minecraftforge.common.util.LazyOptional; -import net.minecraftforge.energy.IEnergyStorage; -import net.minecraftforge.fluids.FluidStack; -import net.minecraftforge.fluids.capability.IFluidHandler; -import net.minecraftforge.registries.ForgeRegistries; +import net.neoforged.neoforge.fluids.FluidStack; +import net.neoforged.neoforge.fluids.capability.IFluidHandler; +import net.minecraft.core.registries.BuiltInRegistries; +import net.neoforged.neoforge.registries.NeoForgeRegistries; import org.jetbrains.annotations.NotNull; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; import java.math.BigDecimal; import java.math.RoundingMode; import java.util.*; @@ -51,9 +45,6 @@ import static igentuman.nc.NuclearCraft.debugLog; import static igentuman.nc.block.fission.FissionControllerBlock.POWERED; import static igentuman.nc.compat.GlobalVars.CATALYSTS; -import static igentuman.nc.compat.gregtech.GTUtils.getGTEnergy; -import static igentuman.nc.compat.gregtech.GTUtils.isOnlyGTCEUCapEnabled; -import static igentuman.nc.compat.oc2.FissionReactorDevice.DEVICE_CAPABILITY; import static igentuman.nc.handler.config.CommonConfig.ENERGY_GENERATION; import static igentuman.nc.handler.config.CommonConfig.GTCEU_CONFIG; import static igentuman.nc.handler.config.FissionConfig.FISSION_CONFIG; @@ -62,17 +53,14 @@ import static igentuman.nc.setup.registration.FissionFuel.ITEM_PROPERTIES; import static igentuman.nc.setup.registration.NCSounds.FISSION_REACTOR; import static igentuman.nc.setup.registration.NcParticleTypes.RADIATION; -import static igentuman.nc.util.ModUtil.*; import static net.minecraft.core.Direction.UP; import static net.minecraft.world.item.Items.AIR; -import static net.minecraftforge.common.capabilities.ForgeCapabilities.*; public class FissionControllerBE extends MultiblockControllerBE { public static final String NAME = "fission_reactor_controller"; public final SidedContentHandler contentHandler; public final CustomEnergyStorage energyStorage; - protected final LazyOptional energy; @NBTField public double maxHeat = FISSION_CONFIG.HEAT_CAPACITY.getDefault(); @@ -189,7 +177,6 @@ public FissionControllerBE(BlockPos pPos, BlockState pBlockState) { .setOutputEnergyTier(getBaseGTEnergyTier()) .setInputAmperage(0) .setOutputAmperage(16); - energy = LazyOptional.of(() -> energyStorage); } public void initializePorts() @@ -261,9 +248,6 @@ public ItemCapabilityHandler getItemInventory() return contentHandler().itemHandler; } - public LazyOptional getEnergy() { - return energy; - } private CustomEnergyStorage createEnergy() { return new CustomEnergyStorage(100000000, 0, 100000000) { @@ -346,72 +330,9 @@ public void toggleMode() { toggleModeTimer = 200; } - private LazyOptional peripheralCap; - public LazyOptional getPeripheral(@Nonnull Capability cap, @Nullable Direction side) { - if(peripheralCap == null) { - peripheralCap = LazyOptional.of(() -> new SolidFissionReactorPeripheral(this)); - } - return peripheralCap.cast(); - } - public LazyOptional getOCDevice(Capability cap, Direction side) { - return LazyOptional.of(() -> FissionReactorDevice.createDevice(this)).cast(); - } - - @Nonnull - @Override - public LazyOptional getCapability(@Nonnull Capability cap, @Nullable Direction side) { - if (cap == ITEM_HANDLER) { - return contentHandler().getItemCapability(side); - } - if (cap == FLUID_HANDLER && canAcceptFluid()) { - return contentHandler().getFluidCapability(side); - } - if(isGtLoaded()) { - if (cap == com.gregtechceu.gtceu.api.capability.forge.GTCapability.CAPABILITY_ENERGY_CONTAINER) { - if (isGTEUCapEnabled() && !isSteamMode && side == null) { - return getGTEnergy(this, side).cast(); - } - } - } - if (cap == ENERGY && !isSteamMode && side == null) { - if(!isOnlyGTCEUCapEnabled()) { - return getEnergy().cast(); - } else { - return LazyOptional.empty(); - } - } - - - if(isOC2Loaded()) { - if(cap == DEVICE_CAPABILITY) { - return getOCDevice(cap, side); - } - } - if(isMekanismLoaded() && isSteamMode) { - if(cap == mekanism.common.capabilities.Capabilities.GAS_HANDLER) { - if(contentHandler().hasFluidCapability(side)) { - return LazyOptional.of(() -> contentHandler().gasConverter(side)); - } - return LazyOptional.empty(); - } - if(cap == mekanism.common.capabilities.Capabilities.SLURRY_HANDLER) { - if(contentHandler().hasFluidCapability(side)) { - return LazyOptional.of(() -> contentHandler().getSlurryConverter(side)); - } - return LazyOptional.empty(); - } - } - - if(isCcLoaded()) { - if(cap == dan200.computercraft.shared.Capabilities.CAPABILITY_PERIPHERAL) { - return getPeripheral(cap, side); - } - } - return super.getCapability(cap, side); - } public void tickClient() { super.tickClient(); @@ -708,7 +629,7 @@ public double coolingPerTick() { public double environmentCooling() { if(envCooling == 0.0D) { - envCooling = 1 / Math.max(getLevel().getBiome(getBlockPos()).get().getBaseTemperature(), 0.01); + envCooling = 1 / Math.max(getLevel().getBiome(getBlockPos()).value().getBaseTemperature(), 0.01); } return envCooling; } @@ -947,7 +868,7 @@ public boolean canAcceptFluid() { public boolean hasEnoughCoolant(String coolant, int amount) { for(int i = 2; i < contentHandler().fluidHandler.tanks.size(); i++) { FluidStack stack = contentHandler().fluidHandler.tanks.get(i).getFluid(); - if(ForgeRegistries.FLUIDS.getKey(stack.getFluid()).getPath().equals(coolant) && stack.getAmount() >= amount) { + if(BuiltInRegistries.FLUID.getKey(stack.getFluid()).getPath().equals(coolant) && stack.getAmount() >= amount) { return true; } } @@ -957,7 +878,7 @@ public boolean hasEnoughCoolant(String coolant, int amount) { public void drainCoolant(String coolant, int amount) { for(int i = 2; i < contentHandler().fluidHandler.tanks.size(); i++) { FluidStack stack = contentHandler().fluidHandler.tanks.get(i).getFluid(); - if(ForgeRegistries.FLUIDS.getKey(stack.getFluid()).getPath().equals(coolant) && stack.getAmount() >= amount) { + if(BuiltInRegistries.FLUID.getKey(stack.getFluid()).getPath().equals(coolant) && stack.getAmount() >= amount) { contentHandler().fluidHandler.tanks.get(i).drain(amount, IFluidHandler.FluidAction.EXECUTE); return; } @@ -987,8 +908,8 @@ public void refresh() { public static class Recipe extends NcRecipe { - public Recipe(ResourceLocation id, ItemStackIngredient[] input, ItemStackIngredient[] output, FluidStackIngredient[] inputFluids, FluidStackIngredient[] outputFluids, double timeModifier, double powerModifier, double heatModifier, double rarity) { - super(id, input, output, timeModifier, powerModifier, heatModifier, rarity); + public Recipe(String codeId, ItemStackIngredient[] input, ItemStackIngredient[] output, FluidStackIngredient[] inputFluids, FluidStackIngredient[] outputFluids, double timeModifier, double powerModifier, double heatModifier, double rarity) { + super(codeId, input, output, timeModifier, powerModifier, heatModifier, rarity); CATALYSTS.put(codeId, List.of(getToastSymbol())); } @@ -1050,10 +971,10 @@ public double getRadiation() { public static class FissionBoilingRecipe extends NcRecipe { protected double conversionRate; - public FissionBoilingRecipe(ResourceLocation id, ItemStackIngredient[] input, ItemStackIngredient[] output, + public FissionBoilingRecipe(String codeId, ItemStackIngredient[] input, ItemStackIngredient[] output, FluidStackIngredient[] inputFluids, FluidStackIngredient[] outputFluids, double conversionRate, double powerModifier, double radiation, double rar) { - super(id, input, output, inputFluids, outputFluids, conversionRate, powerModifier, radiation, rar); + super(codeId, input, output, inputFluids, outputFluids, conversionRate, powerModifier, radiation, rar); this.conversionRate = conversionRate; } diff --git a/src/main/java/igentuman/nc/block/fission/entity/FissionPortBE.java b/src/main/java/igentuman/nc/block/fission/entity/FissionPortBE.java index 87e94a099..4478ba1d3 100644 --- a/src/main/java/igentuman/nc/block/fission/entity/FissionPortBE.java +++ b/src/main/java/igentuman/nc/block/fission/entity/FissionPortBE.java @@ -1,5 +1,6 @@ package igentuman.nc.block.fission.entity; +import igentuman.api.platform.NCLevels; import igentuman.nc.NuclearCraft; import igentuman.nc.block.MultiblockPortBE; import igentuman.nc.handler.sided.capability.FluidCapabilityHandler; @@ -13,22 +14,19 @@ import net.minecraft.core.Direction; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.entity.BlockEntity; +import net.neoforged.neoforge.capabilities.Capabilities; +import net.neoforged.neoforge.energy.IEnergyStorage; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.properties.BlockStateProperties; -import net.minecraftforge.common.capabilities.Capability; -import net.minecraftforge.common.capabilities.ForgeCapabilities; -import net.minecraftforge.common.util.LazyOptional; -import net.minecraftforge.fluids.capability.templates.FluidTank; +import net.neoforged.neoforge.fluids.capability.templates.FluidTank; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; import java.util.Objects; import static igentuman.nc.NuclearCraft.currentTick; -import static igentuman.nc.compat.gregtech.GTUtils.*; -import static igentuman.nc.compat.oc2.FissionReactorDevice.DEVICE_CAPABILITY; -import static igentuman.nc.util.ModUtil.*; -import static net.minecraftforge.common.capabilities.ForgeCapabilities.ENERGY; +import static igentuman.nc.block.entity.NuclearCraftBE.isGTEUCapEnabled; +import static igentuman.nc.compat.gregtech.GTUtils.isOnlyGTCEUCapEnabled; +import static igentuman.nc.compat.gregtech.GTUtils.transferEU; +import static igentuman.nc.util.ModUtil.isGtLoaded; public class FissionPortBE extends MultiblockPortBE { @@ -173,7 +171,7 @@ protected void transferEnergyToSide(Direction direction) { return; // No energy to transfer } int wasEnergy = getEnergyStored(); - BlockEntity be = level.getExistingBlockEntity(worldPosition.relative(direction)); + BlockEntity be = NCLevels.getExistingBlockEntity(level, worldPosition.relative(direction)); if (be == null || be instanceof FissionPortBE || be instanceof FissionControllerBE) { return; } @@ -191,17 +189,12 @@ protected void transferEnergyToSide(Direction direction) { return; } int canExtract = Math.min(controller().energyStorage().getMaxExtract() - extracted, getEnergyStored()); - be.getCapability(ForgeCapabilities.ENERGY, direction.getOpposite()).map(handler -> { - if (handler.canReceive()) { - int received = handler.receiveEnergy(canExtract, false); - controller().energyStorage().consumeEnergy(received); - controller().setChanged(); - return getEnergyStored() > 0; - } else { - return true; - } - } - ); + IEnergyStorage handler = level.getCapability(Capabilities.EnergyStorage.BLOCK, worldPosition.relative(direction), direction.getOpposite()); + if (handler != null && handler.canReceive()) { + int received = handler.receiveEnergy(canExtract, false); + controller().energyStorage().consumeEnergy(received); + controller().setChanged(); + } } protected ItemCapabilityHandler itemHandler() @@ -214,59 +207,6 @@ protected FluidCapabilityHandler fluidHandler() return controller().contentHandler().fluidHandler; } - @Nonnull - @Override - public LazyOptional getCapability(@Nonnull Capability cap, @Nullable Direction side) { - if (controller() == null) return super.getCapability(cap, side); - if (cap == ForgeCapabilities.ITEM_HANDLER) { - return controller().getCapability(cap, side); - } - if (cap == ForgeCapabilities.FLUID_HANDLER && controller().canAcceptFluid()) { - return controller().getCapability(cap, side); - } - if(isGtLoaded()) { - if (cap == com.gregtechceu.gtceu.api.capability.forge.GTCapability.CAPABILITY_ENERGY_CONTAINER) { - if (isGTEUCapEnabled() && !isSteamMode) { - return getGTEnergy(controller(), side).cast(); - } - } - } - if (cap == ENERGY && !isSteamMode) { - if(!isOnlyGTCEUCapEnabled()) { - return controller().getEnergy().cast(); - } else { - return LazyOptional.empty(); - } - } - - if (isMekanismLoaded() && isSteamMode) { - if (cap == mekanism.common.capabilities.Capabilities.GAS_HANDLER) { - if (controller().contentHandler().hasFluidCapability(side)) { - return LazyOptional.of(() -> controller().contentHandler().gasConverter(side)); - } - return LazyOptional.empty(); - } - if (cap == mekanism.common.capabilities.Capabilities.SLURRY_HANDLER) { - if (controller().contentHandler().hasFluidCapability(side)) { - return LazyOptional.of(() -> controller().contentHandler().getSlurryConverter(side)); - } - return LazyOptional.empty(); - } - } - - if (isOC2Loaded()) { - if (cap == DEVICE_CAPABILITY) { - return controller().getOCDevice(cap, side); - } - } - - if (isCcLoaded()) { - if (cap == dan200.computercraft.shared.Capabilities.CAPABILITY_PERIPHERAL) { - return controller().getPeripheral(cap, side); - } - } - return super.getCapability(cap, side); - } @Override public boolean canInvalidateCache() { @@ -292,7 +232,7 @@ public void setMultiblock(AbstractMultiblock multiblock) { public FissionControllerBE controller() { if (NuclearCraft.instance.isNcBeStopped || (!getLevel().isClientSide() && getLevel().getServer() != null && !getLevel().getServer().isRunning())) return null; if (controller == null && getLevel().isClientSide && controllerPos != null) { - BlockEntity be = getLevel().getExistingBlockEntity(controllerPos); + BlockEntity be = NCLevels.getExistingBlockEntity(getLevel(), controllerPos); if (be instanceof FissionControllerBE controllerBe) { controller = controllerBe; return controller; @@ -306,7 +246,7 @@ public FissionControllerBE controller() { } } catch (NullPointerException e) { if (controllerPos != null) { - BlockEntity be = getLevel().getExistingBlockEntity(controllerPos); + BlockEntity be = NCLevels.getExistingBlockEntity(getLevel(), controllerPos); if (be instanceof FissionControllerBE controllerBe) { controller = controllerBe; } diff --git a/src/main/java/igentuman/nc/block/fission/entity/MSRControllerBE.java b/src/main/java/igentuman/nc/block/fission/entity/MSRControllerBE.java index 2638d13d2..bcc01cea2 100644 --- a/src/main/java/igentuman/nc/block/fission/entity/MSRControllerBE.java +++ b/src/main/java/igentuman/nc/block/fission/entity/MSRControllerBE.java @@ -24,8 +24,8 @@ import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.properties.BlockStateProperties; -import net.minecraftforge.fluids.FluidStack; -import net.minecraftforge.fluids.capability.IFluidHandler; +import net.neoforged.neoforge.fluids.FluidStack; +import net.neoforged.neoforge.fluids.capability.IFluidHandler; import org.jetbrains.annotations.NotNull; import java.util.HashSet; @@ -389,8 +389,8 @@ public Direction getFacing() { public static class Recipe extends NcRecipe { - public Recipe(ResourceLocation id, ItemStackIngredient[] input, ItemStackIngredient[] output, FluidStackIngredient[] inputFluids, FluidStackIngredient[] outputFluids, double timeModifier, double powerModifier, double heatModifier, double rarity) { - super(id, input, output, timeModifier, powerModifier, heatModifier, rarity); + public Recipe(String codeId, ItemStackIngredient[] input, ItemStackIngredient[] output, FluidStackIngredient[] inputFluids, FluidStackIngredient[] outputFluids, double timeModifier, double powerModifier, double heatModifier, double rarity) { + super(codeId, input, output, timeModifier, powerModifier, heatModifier, rarity); CATALYSTS.put(codeId, List.of(getToastSymbol())); } diff --git a/src/main/java/igentuman/nc/block/fusion/FusionBeBlock.java b/src/main/java/igentuman/nc/block/fusion/FusionBeBlock.java index e8e6208ca..3a6e7392f 100644 --- a/src/main/java/igentuman/nc/block/fusion/FusionBeBlock.java +++ b/src/main/java/igentuman/nc/block/fusion/FusionBeBlock.java @@ -1,5 +1,6 @@ package igentuman.nc.block.fusion; +import igentuman.api.platform.NCLevels; import igentuman.api.nc.multiblock.MultiblockAttachable; import igentuman.nc.block.fusion.entity.FusionCoreProxyBE; import igentuman.nc.multiblock.fusion.FusionReactorRegistration; @@ -7,6 +8,7 @@ import net.minecraft.core.BlockPos; import net.minecraft.network.chat.Component; import net.minecraft.world.entity.player.Player; +import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.TooltipFlag; import net.minecraft.world.item.context.BlockPlaceContext; @@ -20,7 +22,8 @@ import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.material.FluidState; -import net.minecraftforge.registries.ForgeRegistries; +import net.minecraft.core.registries.BuiltInRegistries; +import net.neoforged.neoforge.registries.NeoForgeRegistries; import org.jetbrains.annotations.Nullable; import java.util.List; @@ -58,7 +61,7 @@ public BlockEntity newBlockEntity(BlockPos pPos, BlockState pState) { public String getCode() { - return ForgeRegistries.BLOCKS.getKey(this).getPath(); + return BuiltInRegistries.BLOCK.getKey(this).getPath(); } @javax.annotation.Nullable @@ -80,7 +83,7 @@ public BlockEntityTicker getTicker(Level level, Block @Override public void onNeighborChange(BlockState state, LevelReader level, BlockPos pos, BlockPos neighbor){ - BlockEntity be = level.getExistingBlockEntity(pos); + BlockEntity be = NCLevels.getExistingBlockEntity(level, pos); if(be instanceof MultiblockAttachable mbAttachableBe) { mbAttachableBe.onNeighborChange(state, pos, neighbor); } @@ -90,7 +93,7 @@ public void onNeighborChange(BlockState state, LevelReader level, BlockPos pos, public void onBlockExploded(BlockState state, Level level, BlockPos pos, Explosion explosion) { if(!level.isClientSide) { - BlockEntity be = level.getExistingBlockEntity(pos); + BlockEntity be = NCLevels.getExistingBlockEntity(level, pos); if(be instanceof MultiblockAttachable mbAttachableBe) { mbAttachableBe.onBlockDestroyed(state, level, pos, explosion); } @@ -102,7 +105,7 @@ public void onBlockExploded(BlockState state, Level level, BlockPos pos, Explosi public boolean onDestroyedByPlayer(BlockState state, Level level, BlockPos pos, Player player, boolean willHarvest, FluidState fluid) { if(!level.isClientSide) { - BlockEntity be = level.getExistingBlockEntity(pos); + BlockEntity be = NCLevels.getExistingBlockEntity(level, pos); if(be instanceof MultiblockAttachable mbAttachableBe) { mbAttachableBe.onBlockDestroyed(state, level, pos, null); } @@ -111,7 +114,7 @@ public boolean onDestroyedByPlayer(BlockState state, Level level, BlockPos pos, } @Override - public void appendHoverText(ItemStack stack, @javax.annotation.Nullable BlockGetter world, List list, TooltipFlag flag) + public void appendHoverText(ItemStack stack, Item.TooltipContext pContext, List list, TooltipFlag flag) { if (getCode().equals("fusion_reactor_connector")) { list.add(__("tooltip.nc.fusion_connector.descr").withStyle(ChatFormatting.YELLOW)); diff --git a/src/main/java/igentuman/nc/block/fusion/FusionCasingBlock.java b/src/main/java/igentuman/nc/block/fusion/FusionCasingBlock.java index 60968b59b..80fd51285 100644 --- a/src/main/java/igentuman/nc/block/fusion/FusionCasingBlock.java +++ b/src/main/java/igentuman/nc/block/fusion/FusionCasingBlock.java @@ -4,14 +4,13 @@ import net.minecraft.ChatFormatting; import net.minecraft.core.BlockPos; import net.minecraft.network.chat.Component; +import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.TooltipFlag; -import net.minecraft.world.item.context.BlockPlaceContext; -import net.minecraft.world.level.BlockGetter; -import net.minecraft.world.level.block.GlassBlock; import net.minecraft.world.level.block.SoundType; import net.minecraft.world.level.block.state.BlockState; -import net.minecraftforge.registries.ForgeRegistries; +import net.minecraft.core.registries.BuiltInRegistries; +import net.neoforged.neoforge.registries.NeoForgeRegistries; import java.util.List; @@ -38,7 +37,7 @@ public FusionCasingBlock(Properties pProperties) { } @Override - public void appendHoverText(ItemStack stack, @javax.annotation.Nullable BlockGetter world, List list, TooltipFlag flag) + public void appendHoverText(ItemStack stack, Item.TooltipContext context, List list, TooltipFlag flag) { list.add(__("tooltip.nc.fusion_casing.descr").withStyle(ChatFormatting.YELLOW)); list.add(__("multiblock.build_in_chunk.advise").withStyle(ChatFormatting.GREEN)); diff --git a/src/main/java/igentuman/nc/block/fusion/FusionConnectorBlock.java b/src/main/java/igentuman/nc/block/fusion/FusionConnectorBlock.java index b9bc180f2..f6a903f1e 100644 --- a/src/main/java/igentuman/nc/block/fusion/FusionConnectorBlock.java +++ b/src/main/java/igentuman/nc/block/fusion/FusionConnectorBlock.java @@ -3,13 +3,14 @@ import igentuman.nc.block.MultiblockBlock; import net.minecraft.ChatFormatting; import net.minecraft.network.chat.Component; +import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.TooltipFlag; import net.minecraft.world.item.context.BlockPlaceContext; -import net.minecraft.world.level.BlockGetter; import net.minecraft.world.level.block.SoundType; import net.minecraft.world.level.block.state.BlockState; -import net.minecraftforge.registries.ForgeRegistries; +import net.minecraft.core.registries.BuiltInRegistries; +import net.neoforged.neoforge.registries.NeoForgeRegistries; import java.util.List; @@ -37,11 +38,11 @@ public BlockState getStateForPlacement(BlockPlaceContext context) { public String getCode() { - return ForgeRegistries.BLOCKS.getKey(this).getPath(); + return BuiltInRegistries.BLOCK.getKey(this).getPath(); } @Override - public void appendHoverText(ItemStack stack, @javax.annotation.Nullable BlockGetter world, List list, TooltipFlag flag) + public void appendHoverText(ItemStack stack, Item.TooltipContext pContext, List list, TooltipFlag flag) { list.add(__("tooltip.nc.fusion_connector.descr").withStyle(ChatFormatting.YELLOW)); list.add(__("multiblock.build_in_chunk.advise").withStyle(ChatFormatting.GREEN)); diff --git a/src/main/java/igentuman/nc/block/fusion/FusionCoreBlock.java b/src/main/java/igentuman/nc/block/fusion/FusionCoreBlock.java index 63deca817..ae684430d 100644 --- a/src/main/java/igentuman/nc/block/fusion/FusionCoreBlock.java +++ b/src/main/java/igentuman/nc/block/fusion/FusionCoreBlock.java @@ -1,5 +1,8 @@ package igentuman.nc.block.fusion; +import igentuman.api.platform.NCItemStacks; +import igentuman.api.platform.NCLevels; +import igentuman.api.platform.NCNames; import igentuman.nc.block.entity.MultiblockControllerBE; import igentuman.nc.block.fusion.entity.FusionCoreBE; import igentuman.nc.block.fusion.entity.FusionCoreProxyBE; @@ -12,13 +15,13 @@ import net.minecraft.network.chat.Component; import net.minecraft.server.level.ServerPlayer; import net.minecraft.stats.Stats; -import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResult; import net.minecraft.world.MenuProvider; import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.entity.player.Inventory; import net.minecraft.world.entity.player.Player; import net.minecraft.world.inventory.AbstractContainerMenu; +import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.Items; import net.minecraft.world.item.TooltipFlag; @@ -38,7 +41,7 @@ import net.minecraft.world.phys.shapes.CollisionContext; import net.minecraft.world.phys.shapes.Shapes; import net.minecraft.world.phys.shapes.VoxelShape; -import net.minecraftforge.network.NetworkHooks; + import org.jetbrains.annotations.Nullable; import java.util.List; @@ -137,9 +140,9 @@ public void playerDestroy(Level pLevel, Player pPlayer, BlockPos pPos, BlockStat } @Override - public InteractionResult use(BlockState state, Level level, BlockPos pos, Player player, InteractionHand hand, BlockHitResult result) { + protected InteractionResult useWithoutItem(BlockState state, Level level, BlockPos pos, Player player, BlockHitResult result) { if (!level.isClientSide()) { - BlockEntity be = level.getExistingBlockEntity(pos); + BlockEntity be = NCLevels.getExistingBlockEntity(level, pos); if (be instanceof FusionCoreBE) { MenuProvider containerProvider = new MenuProvider() { @Override @@ -152,7 +155,7 @@ public AbstractContainerMenu createMenu(int windowId, Inventory playerInventory, return new FusionCoreContainer(windowId, pos, playerInventory); } }; - NetworkHooks.openScreen((ServerPlayer) player, containerProvider, be.getBlockPos()); + ((ServerPlayer) player).openMenu(containerProvider, be.getBlockPos()); } } return InteractionResult.SUCCESS; @@ -177,8 +180,8 @@ public BlockEntityTicker getTicker(Level level, Block } @Override - public void appendHoverText(ItemStack pStack, @javax.annotation.Nullable BlockGetter pLevel, List list, TooltipFlag pFlag) { - if(asItem().toString().contains("empty") || this.asItem().equals(Items.AIR)) return; + public void appendHoverText(ItemStack pStack, Item.TooltipContext pContext, List list, TooltipFlag pFlag) { + if(NCNames.of(asItem()).contains("empty") || this.asItem().equals(Items.AIR)) return; if(isGtLoaded() && isGTEUCapEnabled()) { list.add(__("tooltip.nc.energy_eu_tier", getTier(pStack)).withStyle(ChatFormatting.GOLD)); } @@ -192,19 +195,19 @@ public void appendHoverText(ItemStack pStack, @javax.annotation.Nullable BlockGe } private CommonConfig.GTCEUCompatibilityConfig.GTCEUTier getTier(ItemStack pStack) { - return CommonConfig.GTCEUCompatibilityConfig.GTCEUTier.byId(GTCEU_CONFIG.FUSION_REACTOR_ENERGY_TIER.get().ordinal()+pStack.getOrCreateTag().getInt("upgrade_tier")); + return CommonConfig.GTCEUCompatibilityConfig.GTCEUTier.byId(GTCEU_CONFIG.FUSION_REACTOR_ENERGY_TIER.get().ordinal()+NCItemStacks.getInt(pStack, "upgrade_tier")); } @Override public void setPlacedBy(Level world, BlockPos pos, BlockState state, LivingEntity placer, ItemStack stack) { super.setPlacedBy(world, pos, state, placer, stack); - if (stack.hasTag()) { - MultiblockControllerBE tileEntity = (MultiblockControllerBE) world.getExistingBlockEntity(pos); - CompoundTag nbtData = stack.getTag(); + if (NCItemStacks.hasCustomData(stack)) { + MultiblockControllerBE tileEntity = (MultiblockControllerBE) NCLevels.getExistingBlockEntity(world, pos); + CompoundTag nbtData = NCItemStacks.getTag(stack); CompoundTag tag = new CompoundTag(); tag.put("Info", nbtData); - tileEntity.load(tag); + tileEntity.loadCustomOnly(tag, world.registryAccess()); } } } diff --git a/src/main/java/igentuman/nc/block/fusion/FusionCoreProxyBlock.java b/src/main/java/igentuman/nc/block/fusion/FusionCoreProxyBlock.java index 2bb1d833f..1ff747ec3 100644 --- a/src/main/java/igentuman/nc/block/fusion/FusionCoreProxyBlock.java +++ b/src/main/java/igentuman/nc/block/fusion/FusionCoreProxyBlock.java @@ -1,5 +1,6 @@ package igentuman.nc.block.fusion; +import igentuman.api.platform.NCLevels; import igentuman.nc.block.fusion.entity.FusionCoreBE; import igentuman.nc.block.fusion.entity.FusionCoreProxyBE; import igentuman.nc.container.FusionCoreContainer; @@ -7,7 +8,6 @@ import net.minecraft.network.chat.Component; import net.minecraft.server.level.ServerPlayer; import net.minecraft.stats.Stats; -import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResult; import net.minecraft.world.MenuProvider; import net.minecraft.world.entity.player.Inventory; @@ -22,8 +22,9 @@ import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.phys.BlockHitResult; -import net.minecraftforge.network.NetworkHooks; -import net.minecraftforge.registries.ForgeRegistries; + +import net.minecraft.core.registries.BuiltInRegistries; +import net.neoforged.neoforge.registries.NeoForgeRegistries; import org.jetbrains.annotations.Nullable; import static igentuman.nc.multiblock.fusion.FusionReactorRegistration.FUSION_CORE_PROXY_BE; @@ -51,7 +52,7 @@ public BlockEntity newBlockEntity(BlockPos pPos, BlockState pState) { public String getCode() { - return ForgeRegistries.BLOCKS.getKey(this).getPath(); + return BuiltInRegistries.BLOCK.getKey(this).getPath(); } @Override @@ -63,9 +64,9 @@ public void onRemove(BlockState pState, Level pLevel, BlockPos pPos, BlockState } @Override - public InteractionResult use(BlockState state, Level level, BlockPos pos, Player player, InteractionHand hand, BlockHitResult result) { + protected InteractionResult useWithoutItem(BlockState state, Level level, BlockPos pos, Player player, BlockHitResult result) { if (!level.isClientSide()) { - BlockEntity be = level.getExistingBlockEntity(pos); + BlockEntity be = NCLevels.getExistingBlockEntity(level, pos); FusionCoreProxyBE proxy = (FusionCoreProxyBE) be; if (proxy.getCoreBE() instanceof FusionCoreBE) { @@ -80,7 +81,7 @@ public AbstractContainerMenu createMenu(int windowId, Inventory playerInventory, return new FusionCoreContainer(windowId, proxy.getCorePos(), playerInventory); } }; - NetworkHooks.openScreen((ServerPlayer) player, containerProvider, proxy.getCorePos()); + ((ServerPlayer) player).openMenu(containerProvider, proxy.getCorePos()); } } return InteractionResult.SUCCESS; @@ -116,6 +117,6 @@ public boolean hasAnalogOutputSignal(BlockState pState) { @Override public int getAnalogOutputSignal(BlockState pBlockState, Level pLevel, BlockPos pPos) { - return pLevel.getExistingBlockEntity(pPos) instanceof FusionCoreProxyBE be ? be.getAnalogSignal() : 0; + return NCLevels.getExistingBlockEntity(pLevel, pPos) instanceof FusionCoreProxyBE be ? be.getAnalogSignal() : 0; } } diff --git a/src/main/java/igentuman/nc/block/fusion/entity/FusionCoreBE.java b/src/main/java/igentuman/nc/block/fusion/entity/FusionCoreBE.java index 7f4c28cdb..74e2cb052 100644 --- a/src/main/java/igentuman/nc/block/fusion/entity/FusionCoreBE.java +++ b/src/main/java/igentuman/nc/block/fusion/entity/FusionCoreBE.java @@ -5,8 +5,6 @@ import igentuman.nc.block.fusion.FusionCoreBlock; import igentuman.nc.client.particle.FusionBeamParticleData; import igentuman.nc.client.sound.SoundHandler; -import igentuman.nc.compat.cc.FusionReactorPeripheral; -import igentuman.nc.compat.oc2.FusionReactorDevice; import igentuman.nc.handler.sided.SidedContentHandler; import igentuman.nc.handler.sided.SlotModePair; import igentuman.nc.multiblock.MultiblockHandler; @@ -22,7 +20,7 @@ import igentuman.nc.util.annotation.NBTField; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; -import net.minecraft.network.FriendlyByteBuf; +import net.minecraft.network.RegistryFriendlyByteBuf; import net.minecraft.resources.ResourceLocation; import net.minecraft.server.level.ServerLevel; import net.minecraft.server.level.ServerPlayer; @@ -33,29 +31,21 @@ import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.phys.Vec3; -import net.minecraftforge.common.capabilities.Capability; -import net.minecraftforge.common.capabilities.ForgeCapabilities; -import net.minecraftforge.common.util.LazyOptional; -import net.minecraftforge.energy.IEnergyStorage; -import net.minecraftforge.fluids.FluidStack; +import net.neoforged.neoforge.capabilities.Capabilities; +import net.neoforged.neoforge.energy.IEnergyStorage; +import net.neoforged.neoforge.fluids.FluidStack; import org.jetbrains.annotations.NotNull; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; import java.util.*; import static igentuman.nc.NuclearCraft.currentTick; import static igentuman.nc.NuclearCraft.debugLog; import static igentuman.nc.block.fission.FissionControllerBlock.POWERED; -import static igentuman.nc.compat.gregtech.GTUtils.getGTEnergy; -import static igentuman.nc.compat.gregtech.GTUtils.isOnlyGTCEUCapEnabled; -import static igentuman.nc.compat.oc2.FusionReactorDevice.DEVICE_CAPABILITY; import static igentuman.nc.handler.config.CommonConfig.GTCEU_CONFIG; import static igentuman.nc.handler.config.FusionConfig.FUSION_CONFIG; import static igentuman.nc.multiblock.fusion.FusionReactorRegistration.FUSION_BE; import static igentuman.nc.setup.registration.NCSounds.*; -import static igentuman.nc.util.ModUtil.*; -import static net.minecraftforge.fluids.capability.IFluidHandler.FluidAction.EXECUTE; +import static net.neoforged.neoforge.fluids.capability.IFluidHandler.FluidAction.EXECUTE; public class FusionCoreBE extends MultiblockControllerBE { @@ -117,10 +107,8 @@ public class FusionCoreBE extends MultiblockControllerBE { protected double lastKnownOptimalTemp = 1000000; protected FusionCoolantRecipe coolantRecipe; - protected final LazyOptional energy; public final SidedContentHandler contentHandler; public final CustomEnergyStorage energyStorage; - protected LazyOptional peripheralCap; protected List coolantRecipes; public boolean controllerEnabled = false; public Recipe recipe; @@ -137,7 +125,6 @@ public FusionCoreBE(BlockPos pPos, BlockState pBlockState) { .setOutputEnergyTier(getBaseGTEnergyTier()) .setInputAmperage(4) .setOutputAmperage(16); - energy = LazyOptional.of(() -> energyStorage); contentHandler = new SidedContentHandler( 0, 0, 3, 5, 10, 50); @@ -187,10 +174,6 @@ public CustomEnergyStorage energyStorage() { return energyStorage; } - @Override - public LazyOptional getEnergy() { - return energy; - } private void initMultiblock() { if(multiblock == null) { @@ -215,47 +198,8 @@ public List getCoolantRecipes() { return coolantRecipes; } - public LazyOptional getPeripheral(@Nonnull Capability cap, @Nullable Direction side) { - if(peripheralCap == null) { - peripheralCap = LazyOptional.of(() -> new FusionReactorPeripheral(this)); - } - return peripheralCap.cast(); - } - - @Nonnull - @Override - public LazyOptional getCapability(@Nonnull Capability cap, @Nullable Direction side) { - if(isGtLoaded()) { - if (cap == com.gregtechceu.gtceu.api.capability.forge.GTCapability.CAPABILITY_ENERGY_CONTAINER) { - if (isGTEUCapEnabled()) { - return getGTEnergy(this, side).cast(); - } - } - } - if (cap == ForgeCapabilities.ENERGY) { - if(isGtLoaded() && isOnlyGTCEUCapEnabled()) { - return LazyOptional.empty(); - } - return getEnergy().cast(); - } - - if(isOC2Loaded()) { - if(cap == DEVICE_CAPABILITY) { - return getOCDevice(cap, side); - } - } - if(isCcLoaded()) { - if(cap == dan200.computercraft.shared.Capabilities.CAPABILITY_PERIPHERAL) { - return getPeripheral(cap, side); - } - } - return super.getCapability(cap, side); - } - public LazyOptional getOCDevice(Capability cap, Direction side) { - return LazyOptional.of(() -> FusionReactorDevice.createDevice(this)).cast(); - } public void updateAnalogSignal() { switch (redstoneMode) { @@ -504,7 +448,7 @@ protected void sendOutPower() { } BlockEntity be = Objects.requireNonNull(getLevel()).getBlockEntity(getBlockPos().relative(Direction.DOWN)); if(be instanceof BlockEntity && !(be instanceof FusionCoreProxyBE) && !(be instanceof FusionCoreBE)) { - IEnergyStorage r = be.getCapability(ForgeCapabilities.ENERGY, Direction.UP).orElse(null); + IEnergyStorage r = level.getCapability(Capabilities.EnergyStorage.BLOCK, getBlockPos().relative(Direction.DOWN), Direction.UP); if(r == null) return; if(r.canReceive()) { int received = r.receiveEnergy(energyStorage().getEnergyStored() - rfAmplifiersPower - magnetsPower, false); @@ -915,8 +859,8 @@ public void voidFluidSlot(int slotId) { } public static class Recipe extends NcRecipe { - public Recipe(ResourceLocation id, ItemStackIngredient[] input, ItemStackIngredient[] output, FluidStackIngredient[] inputFluids, FluidStackIngredient[] outputFluids, double timeModifier, double powerModifier, double radiation, double temperature) { - super(id, input, output, inputFluids, outputFluids, timeModifier, powerModifier, radiation, temperature); + public Recipe(String codeId, ItemStackIngredient[] input, ItemStackIngredient[] output, FluidStackIngredient[] inputFluids, FluidStackIngredient[] outputFluids, double timeModifier, double powerModifier, double radiation, double temperature) { + super(codeId, input, output, inputFluids, outputFluids, timeModifier, powerModifier, radiation, temperature); } @Override @@ -942,7 +886,7 @@ public double getRadiation() { } @Override - public void write(FriendlyByteBuf buffer) { + public void write(RegistryFriendlyByteBuf buffer) { super.write(buffer); buffer.writeDouble(getOptimalTemperature()); } @@ -960,8 +904,8 @@ public String getCodeId() { public static class FusionCoolantRecipe extends NcRecipe { protected double coolingRate; - public FusionCoolantRecipe(ResourceLocation id, ItemStackIngredient[] input, ItemStackIngredient[] output, FluidStackIngredient[] inputFluids, FluidStackIngredient[] outputFluids, double temperature, double powerModifier, double radiation, double rar) { - super(id, input, output, inputFluids, outputFluids, temperature, powerModifier, radiation, rar); + public FusionCoolantRecipe(String codeId, ItemStackIngredient[] input, ItemStackIngredient[] output, FluidStackIngredient[] inputFluids, FluidStackIngredient[] outputFluids, double temperature, double powerModifier, double radiation, double rar) { + super(codeId, input, output, inputFluids, outputFluids, temperature, powerModifier, radiation, rar); coolingRate = temperature; } diff --git a/src/main/java/igentuman/nc/block/fusion/entity/FusionCoreProxyBE.java b/src/main/java/igentuman/nc/block/fusion/entity/FusionCoreProxyBE.java index 01b4afa91..5cf1720f2 100644 --- a/src/main/java/igentuman/nc/block/fusion/entity/FusionCoreProxyBE.java +++ b/src/main/java/igentuman/nc/block/fusion/entity/FusionCoreProxyBE.java @@ -1,5 +1,7 @@ package igentuman.nc.block.fusion.entity; +import igentuman.api.platform.NCItemStacks; +import igentuman.api.platform.NCLevels; import igentuman.api.nc.multiblock.MultiblockAttachable; import igentuman.nc.NuclearCraft; import igentuman.nc.block.entity.NuclearCraftBE; @@ -13,23 +15,19 @@ import net.minecraft.world.level.block.Blocks; import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.state.BlockState; -import net.minecraftforge.common.capabilities.Capability; -import net.minecraftforge.common.capabilities.ForgeCapabilities; -import net.minecraftforge.common.util.LazyOptional; -import net.minecraftforge.energy.IEnergyStorage; +import net.neoforged.neoforge.capabilities.Capabilities; +import net.neoforged.neoforge.energy.IEnergyStorage; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; import java.util.List; import java.util.Objects; import static igentuman.nc.NuclearCraft.currentTick; import static igentuman.nc.NuclearCraft.debugLog; -import static igentuman.nc.compat.gregtech.GTUtils.*; -import static igentuman.nc.compat.oc2.FusionReactorDevice.DEVICE_CAPABILITY; +import static igentuman.nc.compat.gregtech.GTUtils.isOnlyGTCEUCapEnabled; +import static igentuman.nc.compat.gregtech.GTUtils.transferEU; +import static igentuman.nc.util.ModUtil.isGtLoaded; import static igentuman.nc.multiblock.fusion.FusionReactorRegistration.FUSION_CORE_PROXY_BE; -import static igentuman.nc.util.ModUtil.*; public class FusionCoreProxyBE extends NuclearCraftBE implements MultiblockAttachable { @@ -65,14 +63,14 @@ protected void validateCore() if(!level.isLoaded(core.getBlockPos())) { return; } - core = (FusionCoreBE) level.getExistingBlockEntity(core.getBlockPos()); + core = (FusionCoreBE) NCLevels.getExistingBlockEntity(level, core.getBlockPos()); if(core == null) { core = (FusionCoreBE) level.getBlockEntity(core.getBlockPos()); } corePos = core.getBlockPos(); } else { if(corePos == null) return; - core = (FusionCoreBE) level.getExistingBlockEntity(corePos); + core = (FusionCoreBE) NCLevels.getExistingBlockEntity(level, corePos); if(core == null) { core = (FusionCoreBE) level.getBlockEntity(corePos); } @@ -112,10 +110,10 @@ public FusionCoreBE controller() { ) return null; if(getLevel().isClientSide() && corePos != null) { - return (FusionCoreBE) getLevel().getExistingBlockEntity(corePos); + return (FusionCoreBE) NCLevels.getExistingBlockEntity(getLevel(), corePos); } if(core == null && corePos != null) { - core = (FusionCoreBE) getLevel().getExistingBlockEntity(corePos); + core = (FusionCoreBE) NCLevels.getExistingBlockEntity(getLevel(), corePos); } return core; } @@ -147,7 +145,7 @@ public void destroyCore() { if(st.equals(Blocks.AIR.defaultBlockState())) return; ItemStack core = new ItemStack(st.getBlock().asItem()); - core.getOrCreateTag().putInt("upgrade_tier", getCoreBE().upgrade_tier); + NCItemStacks.putInt(core, "upgrade_tier", getCoreBE().upgrade_tier); level.removeBlock(corePos, false); Block.popResource(level, corePos, core); @@ -162,60 +160,6 @@ public BlockPos getCorePos() { return corePos; } - @Nonnull - @Override - public LazyOptional getCapability(@Nonnull Capability cap, @Nullable Direction side) { - if(controller() == null) return super.getCapability(cap, side); - if(side == null || side.getAxis().isHorizontal()) { - return LazyOptional.empty(); - } - if (cap == ForgeCapabilities.ITEM_HANDLER) { - return LazyOptional.empty(); - } - if (cap == ForgeCapabilities.FLUID_HANDLER) { - return controller().getCapability(cap, side); - } - if(isGtLoaded()) { - if (cap == com.gregtechceu.gtceu.api.capability.forge.GTCapability.CAPABILITY_ENERGY_CONTAINER) { - if (isGTEUCapEnabled()) { - return getGTEnergy(controller(), side).cast(); - } - } - } - if (cap == ForgeCapabilities.ENERGY) { - if(isGtLoaded() && isOnlyGTCEUCapEnabled()) { - return LazyOptional.empty(); - } - return controller().getCapability(cap, side); - } - if(isCcLoaded()) { - if(cap == dan200.computercraft.shared.Capabilities.CAPABILITY_PERIPHERAL) { - return controller().getPeripheral(cap, side); - } - } - - if(isOC2Loaded()) { - if(cap == DEVICE_CAPABILITY) { - return controller().getOCDevice(cap, side); - } - } - - if(isMekanismLoaded()) { - if(cap == mekanism.common.capabilities.Capabilities.GAS_HANDLER) { - if(controller().contentHandler().hasFluidCapability(side)) { - return LazyOptional.of(() -> controller().contentHandler().gasConverter(side)); - } - return LazyOptional.empty(); - } - if(cap == mekanism.common.capabilities.Capabilities.SLURRY_HANDLER) { - if(controller().contentHandler().hasFluidCapability(side)) { - return LazyOptional.of(() -> controller().contentHandler().getSlurryConverter(side)); - } - return LazyOptional.empty(); - } - } - return super.getCapability(cap, side); - } @Override public boolean canInvalidateCache() @@ -227,7 +171,7 @@ public void sendOutEnergy() { int required = getCoreBE().rfAmplifiersPower + getCoreBE().magnetsPower; for(Direction side: List.of(Direction.UP, Direction.DOWN)) { if(getCoreBE().energyStorage().getEnergyStored() > required) { - BlockEntity be = getLevel().getExistingBlockEntity(getBlockPos().relative(side)); + BlockEntity be = NCLevels.getExistingBlockEntity(getLevel(), getBlockPos().relative(side)); if(!(be instanceof BlockEntity) || (be instanceof FusionCoreProxyBE) || (be instanceof FusionCoreBE)) { continue; } @@ -240,7 +184,7 @@ public void sendOutEnergy() { return; } - IEnergyStorage r = be.getCapability(ForgeCapabilities.ENERGY, side.getOpposite()).orElse(null); + IEnergyStorage r = level.getCapability(Capabilities.EnergyStorage.BLOCK, getBlockPos().relative(side), side.getOpposite()); if(r == null || getCoreBE() == null) continue; int extracted = wasEnergy - getCoreBE().energyStorage().getEnergyStored(); if(extracted >= controller().energyStorage().getMaxExtract()) { diff --git a/src/main/java/igentuman/nc/block/kugelblitz/BlackHoleBlock.java b/src/main/java/igentuman/nc/block/kugelblitz/BlackHoleBlock.java index f6e507674..4b8185ad8 100644 --- a/src/main/java/igentuman/nc/block/kugelblitz/BlackHoleBlock.java +++ b/src/main/java/igentuman/nc/block/kugelblitz/BlackHoleBlock.java @@ -36,8 +36,9 @@ import net.minecraft.world.phys.shapes.CollisionContext; import net.minecraft.world.phys.shapes.Shapes; import net.minecraft.world.phys.shapes.VoxelShape; -import net.minecraftforge.common.ForgeHooks; -import net.minecraftforge.registries.ForgeRegistries; +import net.neoforged.neoforge.common.CommonHooks; +import net.minecraft.core.registries.BuiltInRegistries; +import net.neoforged.neoforge.registries.NeoForgeRegistries; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -152,7 +153,7 @@ public boolean skipRendering(@NotNull BlockState state, @NotNull BlockState adja private String codeID() { - return ForgeRegistries.BLOCKS.getKey(this).getPath(); + return BuiltInRegistries.BLOCK.getKey(this).getPath(); } @Nullable diff --git a/src/main/java/igentuman/nc/block/kugelblitz/ChamberBlock.java b/src/main/java/igentuman/nc/block/kugelblitz/ChamberBlock.java index 1799e4b38..9de12837c 100644 --- a/src/main/java/igentuman/nc/block/kugelblitz/ChamberBlock.java +++ b/src/main/java/igentuman/nc/block/kugelblitz/ChamberBlock.java @@ -1,10 +1,12 @@ package igentuman.nc.block.kugelblitz; +import igentuman.api.platform.NCNames; import igentuman.nc.block.MultiblockBlock; import net.minecraft.ChatFormatting; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.network.chat.Component; +import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.TooltipFlag; import net.minecraft.world.level.BlockGetter; @@ -12,7 +14,6 @@ import net.minecraft.world.level.block.state.BlockState; import org.jetbrains.annotations.NotNull; -import javax.annotation.Nullable; import java.util.List; import java.util.Properties; @@ -27,12 +28,12 @@ public ChamberBlock(Properties pProperties) { @Override public boolean propagatesSkylightDown(BlockState pState, BlockGetter pLevel, BlockPos pPos) { - return asItem().toString().matches(".*photon.*"); + return NCNames.of(asItem()).matches(".*photon.*"); } @Override public float getShadeBrightness(BlockState pState, BlockGetter pLevel, BlockPos pPos) { - return asItem().toString().matches(".*photon.*") ? 1.0F : 0.2F; + return NCNames.of(asItem()).matches(".*photon.*") ? 1.0F : 0.2F; } @Override @@ -42,7 +43,7 @@ public boolean skipRendering(@NotNull BlockState state, @NotNull BlockState adja } @Override - public void appendHoverText(ItemStack pStack, @Nullable BlockGetter pLevel, List list, TooltipFlag pFlag) { + public void appendHoverText(ItemStack pStack, Item.TooltipContext pContext, List list, TooltipFlag pFlag) { list.add(__("tooltip.kugelblitz.block_" + pStack.getItem()).withStyle(ChatFormatting.AQUA)); list.add(__("multiblock.build_in_chunk.advise").withStyle(ChatFormatting.GREEN)); } diff --git a/src/main/java/igentuman/nc/block/kugelblitz/ChamberPortBlock.java b/src/main/java/igentuman/nc/block/kugelblitz/ChamberPortBlock.java index 265f1f905..21e3e8c7d 100644 --- a/src/main/java/igentuman/nc/block/kugelblitz/ChamberPortBlock.java +++ b/src/main/java/igentuman/nc/block/kugelblitz/ChamberPortBlock.java @@ -1,5 +1,6 @@ package igentuman.nc.block.kugelblitz; +import igentuman.api.platform.NCLevels; import igentuman.nc.block.kugelblitz.entity.ChamberPortBE; import igentuman.nc.container.ChamberPortContainer; import igentuman.nc.multiblock.MultiblockHandler; @@ -8,18 +9,18 @@ import net.minecraft.core.Direction; import net.minecraft.network.chat.Component; import net.minecraft.server.level.ServerPlayer; -import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResult; import net.minecraft.world.MenuProvider; import net.minecraft.world.entity.player.Inventory; import net.minecraft.world.entity.player.Player; import net.minecraft.world.inventory.AbstractContainerMenu; +import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.TooltipFlag; import net.minecraft.world.item.context.BlockPlaceContext; -import net.minecraft.world.level.BlockGetter; import net.minecraft.world.level.Level; import net.minecraft.world.level.LevelReader; +import com.mojang.serialization.MapCodec; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.EntityBlock; import net.minecraft.world.level.block.HorizontalDirectionalBlock; @@ -33,7 +34,7 @@ import net.minecraft.world.level.block.state.properties.BooleanProperty; import net.minecraft.world.level.block.state.properties.DirectionProperty; import net.minecraft.world.phys.BlockHitResult; -import net.minecraftforge.network.NetworkHooks; + import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -64,6 +65,12 @@ public ChamberPortBlock(Properties pProperties) { .setValue(POWERED, false) ); } + + @Override + protected MapCodec codec() { + return simpleCodec(ChamberPortBlock::new); + } + @Override public BlockState getStateForPlacement(BlockPlaceContext context) { return this.defaultBlockState().setValue(FACING, context.getHorizontalDirection().getOpposite()); @@ -82,10 +89,10 @@ public BlockEntity newBlockEntity(@NotNull BlockPos pPos, @NotNull BlockState pS } @Override - public InteractionResult use(@NotNull BlockState state, Level level, @NotNull BlockPos pos, @NotNull Player player, InteractionHand hand, BlockHitResult result) { + protected InteractionResult useWithoutItem(BlockState state, Level level, BlockPos pos, Player player, BlockHitResult result) { if (!level.isClientSide()) { - BlockEntity be = level.getExistingBlockEntity(pos); + BlockEntity be = NCLevels.getExistingBlockEntity(level, pos); if (be instanceof ChamberPortBE) { MenuProvider containerProvider = new MenuProvider() { @@ -99,7 +106,7 @@ public AbstractContainerMenu createMenu(int windowId, @NotNull Inventory playerI return new ChamberPortContainer(windowId, pos, playerInventory); } }; - NetworkHooks.openScreen((ServerPlayer) player, containerProvider, be.getBlockPos()); + ((ServerPlayer) player).openMenu(containerProvider, be.getBlockPos()); } } return InteractionResult.SUCCESS; @@ -143,7 +150,7 @@ public void onRemove(BlockState state, Level level, BlockPos pos, BlockState new } @Override - public void appendHoverText(ItemStack pStack, @javax.annotation.Nullable BlockGetter pLevel, List list, TooltipFlag pFlag) { + public void appendHoverText(ItemStack pStack, Item.TooltipContext pContext, List list, TooltipFlag pFlag) { if(isGtLoaded() && isGTEUCapEnabled()) { list.add(__("tooltip.nc.energy_eu_tier.depends_on_terminal").withStyle(ChatFormatting.GOLD)); } diff --git a/src/main/java/igentuman/nc/block/kugelblitz/ChamberTerminalBlock.java b/src/main/java/igentuman/nc/block/kugelblitz/ChamberTerminalBlock.java index d830a9ca4..a3e1b31e5 100644 --- a/src/main/java/igentuman/nc/block/kugelblitz/ChamberTerminalBlock.java +++ b/src/main/java/igentuman/nc/block/kugelblitz/ChamberTerminalBlock.java @@ -1,5 +1,7 @@ package igentuman.nc.block.kugelblitz; +import igentuman.api.platform.NCItemStacks; +import igentuman.api.platform.NCLevels; import igentuman.nc.block.MultiblockControllerBlock; import igentuman.nc.block.kugelblitz.entity.ChamberTerminalBE; import igentuman.nc.compat.gregtech.GTUtils; @@ -11,16 +13,15 @@ import net.minecraft.core.Direction; import net.minecraft.network.chat.Component; import net.minecraft.server.level.ServerPlayer; -import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResult; import net.minecraft.world.MenuProvider; import net.minecraft.world.entity.player.Inventory; import net.minecraft.world.entity.player.Player; import net.minecraft.world.inventory.AbstractContainerMenu; +import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.TooltipFlag; import net.minecraft.world.item.context.BlockPlaceContext; -import net.minecraft.world.level.BlockGetter; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.EntityBlock; @@ -32,7 +33,7 @@ import net.minecraft.world.level.block.state.StateDefinition; import net.minecraft.world.level.block.state.properties.BlockStateProperties; import net.minecraft.world.phys.BlockHitResult; -import net.minecraftforge.network.NetworkHooks; + import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -80,10 +81,10 @@ public BlockEntity newBlockEntity(@NotNull BlockPos pPos, @NotNull BlockState pS } @Override - public InteractionResult use(@NotNull BlockState state, Level level, @NotNull BlockPos pos, @NotNull Player player, InteractionHand hand, BlockHitResult result) { + protected InteractionResult useWithoutItem(BlockState state, Level level, BlockPos pos, Player player, BlockHitResult result) { if (!level.isClientSide()) { - BlockEntity be = level.getExistingBlockEntity(pos); + BlockEntity be = NCLevels.getExistingBlockEntity(level, pos); if (be instanceof ChamberTerminalBE) { MenuProvider containerProvider = new MenuProvider() { @@ -97,7 +98,7 @@ public AbstractContainerMenu createMenu(int windowId, @NotNull Inventory playerI return new ChamberTerminalContainer(windowId, pos, playerInventory); } }; - NetworkHooks.openScreen((ServerPlayer) player, containerProvider, be.getBlockPos()); + ((ServerPlayer) player).openMenu(containerProvider, be.getBlockPos()); } } return InteractionResult.SUCCESS; @@ -129,7 +130,7 @@ public void onRemove(BlockState state, Level level, BlockPos pos, BlockState new } @Override - public void appendHoverText(ItemStack pStack, @javax.annotation.Nullable BlockGetter pLevel, List list, TooltipFlag pFlag) { + public void appendHoverText(ItemStack pStack, Item.TooltipContext pContext, List list, TooltipFlag pFlag) { if(isGtLoaded() && isGTEUCapEnabled()) { list.add(__("tooltip.nc.energy_eu_tier", getTier(pStack)).withStyle(ChatFormatting.GOLD)); } @@ -141,6 +142,6 @@ public void appendHoverText(ItemStack pStack, @javax.annotation.Nullable BlockGe } private CommonConfig.GTCEUCompatibilityConfig.GTCEUTier getTier(ItemStack pStack) { - return CommonConfig.GTCEUCompatibilityConfig.GTCEUTier.byId(GTCEU_CONFIG.KUGELBLITZ_ENERGY_TIER.get().ordinal()+pStack.getOrCreateTag().getInt("upgrade_tier")); + return CommonConfig.GTCEUCompatibilityConfig.GTCEUTier.byId(GTCEU_CONFIG.KUGELBLITZ_ENERGY_TIER.get().ordinal()+NCItemStacks.getInt(pStack, "upgrade_tier")); } } diff --git a/src/main/java/igentuman/nc/block/kugelblitz/EXPLBlock.java b/src/main/java/igentuman/nc/block/kugelblitz/EXPLBlock.java index 2cd3e4cd1..8db038fad 100644 --- a/src/main/java/igentuman/nc/block/kugelblitz/EXPLBlock.java +++ b/src/main/java/igentuman/nc/block/kugelblitz/EXPLBlock.java @@ -1,5 +1,7 @@ package igentuman.nc.block.kugelblitz; +import igentuman.api.platform.NCLevels; +import igentuman.api.platform.NCNames; import igentuman.nc.block.kugelblitz.entity.EXPLBE; import igentuman.nc.block.kugelblitz.entity.EXPLProxyBE; import igentuman.nc.container.EXPLContainer; @@ -10,18 +12,19 @@ import net.minecraft.server.level.ServerLevel; import net.minecraft.server.level.ServerPlayer; import net.minecraft.stats.Stats; -import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResult; import net.minecraft.world.MenuProvider; import net.minecraft.world.entity.player.Inventory; import net.minecraft.world.entity.player.Player; import net.minecraft.world.inventory.AbstractContainerMenu; +import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.Items; import net.minecraft.world.item.TooltipFlag; import net.minecraft.world.item.context.BlockPlaceContext; import net.minecraft.world.level.BlockGetter; import net.minecraft.world.level.Level; +import com.mojang.serialization.MapCodec; import net.minecraft.world.level.block.*; import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.entity.BlockEntityTicker; @@ -35,7 +38,7 @@ import net.minecraft.world.phys.shapes.CollisionContext; import net.minecraft.world.phys.shapes.Shapes; import net.minecraft.world.phys.shapes.VoxelShape; -import net.minecraftforge.network.NetworkHooks; + import org.jetbrains.annotations.Nullable; import java.util.List; @@ -59,6 +62,11 @@ public EXPLBlock(Properties pProperties) { ); } + @Override + protected MapCodec codec() { + return simpleCodec(EXPLBlock::new); + } + @Override public RenderShape getRenderShape(BlockState pState) { return RenderShape.INVISIBLE; @@ -240,9 +248,9 @@ public void playerDestroy(Level pLevel, Player pPlayer, BlockPos pPos, BlockStat } @Override - public InteractionResult use(BlockState state, Level level, BlockPos pos, Player player, InteractionHand hand, BlockHitResult result) { + protected InteractionResult useWithoutItem(BlockState state, Level level, BlockPos pos, Player player, BlockHitResult result) { if (!level.isClientSide()) { - BlockEntity be = level.getExistingBlockEntity(pos); + BlockEntity be = NCLevels.getExistingBlockEntity(level, pos); if (be instanceof EXPLProxyBE) { MenuProvider containerProvider = new MenuProvider() { @Override @@ -255,7 +263,7 @@ public AbstractContainerMenu createMenu(int windowId, Inventory playerInventory, return new EXPLContainer(windowId, pos, playerInventory); } }; - NetworkHooks.openScreen((ServerPlayer) player, containerProvider, be.getBlockPos()); + ((ServerPlayer) player).openMenu(containerProvider, be.getBlockPos()); } } return InteractionResult.SUCCESS; @@ -280,8 +288,8 @@ public BlockEntityTicker getTicker(Level level, Block } @Override - public void appendHoverText(ItemStack pStack, @javax.annotation.Nullable BlockGetter pLevel, List list, TooltipFlag pFlag) { - if(asItem().toString().contains("empty") || this.asItem().equals(Items.AIR)) return; + public void appendHoverText(ItemStack pStack, Item.TooltipContext pContext, List list, TooltipFlag pFlag) { + if(NCNames.of(asItem()).contains("empty") || this.asItem().equals(Items.AIR)) return; if(isGtLoaded() && isGTEUCapEnabled()) { list.add(__("tooltip.nc.energy_eu_tier", GTCEU_CONFIG.KUGELBLITZ_ENERGY_TIER.get()).withStyle(ChatFormatting.GOLD)); } diff --git a/src/main/java/igentuman/nc/block/kugelblitz/EXPLProxyBlock.java b/src/main/java/igentuman/nc/block/kugelblitz/EXPLProxyBlock.java index ad7b3c220..8431a35f3 100644 --- a/src/main/java/igentuman/nc/block/kugelblitz/EXPLProxyBlock.java +++ b/src/main/java/igentuman/nc/block/kugelblitz/EXPLProxyBlock.java @@ -7,7 +7,6 @@ import net.minecraft.network.chat.Component; import net.minecraft.server.level.ServerPlayer; import net.minecraft.stats.Stats; -import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResult; import net.minecraft.world.MenuProvider; import net.minecraft.world.entity.player.Inventory; @@ -24,8 +23,9 @@ import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.phys.BlockHitResult; -import net.minecraftforge.network.NetworkHooks; -import net.minecraftforge.registries.ForgeRegistries; + +import net.minecraft.core.registries.BuiltInRegistries; +import net.neoforged.neoforge.registries.NeoForgeRegistries; import org.jetbrains.annotations.Nullable; import static igentuman.nc.multiblock.kugelblitz.KugelblitzRegistration.EXPL_PROXY_BE; import static igentuman.nc.util.TextUtils.__; @@ -52,7 +52,7 @@ public BlockEntity newBlockEntity(BlockPos pPos, BlockState pState) { public String getCode() { - return ForgeRegistries.BLOCKS.getKey(this).getPath(); + return BuiltInRegistries.BLOCK.getKey(this).getPath(); } @Override @@ -63,7 +63,7 @@ public void onRemove(BlockState pState, Level pLevel, BlockPos pPos, BlockState } @Override - public InteractionResult use(BlockState state, Level level, BlockPos pos, Player player, InteractionHand hand, BlockHitResult result) { + protected InteractionResult useWithoutItem(BlockState state, Level level, BlockPos pos, Player player, BlockHitResult result) { if (!level.isClientSide()) { BlockEntity be = level.getBlockEntity(pos); EXPLProxyBE proxy = (EXPLProxyBE) be; @@ -79,7 +79,7 @@ public AbstractContainerMenu createMenu(int windowId, Inventory playerInventory, return new EXPLContainer(windowId, proxy.getCorePos(), playerInventory); } }; - NetworkHooks.openScreen((ServerPlayer) player, containerProvider, proxy.getCorePos()); + ((ServerPlayer) player).openMenu(containerProvider, proxy.getCorePos()); } } return InteractionResult.SUCCESS; diff --git a/src/main/java/igentuman/nc/block/kugelblitz/PhotonConcentratorBlock.java b/src/main/java/igentuman/nc/block/kugelblitz/PhotonConcentratorBlock.java index 6765c32ea..d2c73fdcc 100644 --- a/src/main/java/igentuman/nc/block/kugelblitz/PhotonConcentratorBlock.java +++ b/src/main/java/igentuman/nc/block/kugelblitz/PhotonConcentratorBlock.java @@ -1,10 +1,12 @@ package igentuman.nc.block.kugelblitz; +import igentuman.api.platform.NCNames; import igentuman.nc.block.MultiblockBlock; import net.minecraft.ChatFormatting; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.network.chat.Component; +import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.TooltipFlag; import net.minecraft.world.level.BlockGetter; @@ -15,7 +17,6 @@ import net.minecraft.world.level.block.state.BlockState; import org.jetbrains.annotations.NotNull; -import javax.annotation.Nullable; import java.util.List; import static igentuman.nc.multiblock.kugelblitz.KugelblitzRegistration.KUGELBLITZ_BE; @@ -30,12 +31,12 @@ public PhotonConcentratorBlock(Properties pProperties) { @Override public boolean propagatesSkylightDown(BlockState pState, BlockGetter pLevel, BlockPos pPos) { - return asItem().toString().matches(".*photon.*"); + return NCNames.of(asItem()).matches(".*photon.*"); } @Override public float getShadeBrightness(BlockState pState, BlockGetter pLevel, BlockPos pPos) { - return asItem().toString().matches(".*photon.*") ? 1.0F : 0.2F; + return NCNames.of(asItem()).matches(".*photon.*") ? 1.0F : 0.2F; } @org.jetbrains.annotations.Nullable @@ -51,7 +52,7 @@ public boolean skipRendering(@NotNull BlockState state, @NotNull BlockState adja } @Override - public void appendHoverText(ItemStack pStack, @Nullable BlockGetter pLevel, List list, TooltipFlag pFlag) { + public void appendHoverText(ItemStack pStack, Item.TooltipContext pContext, List list, TooltipFlag pFlag) { list.add(__("tooltip.kugelblitz.photon_concentrator").withStyle(ChatFormatting.AQUA)); list.add(__("multiblock.build_in_chunk.advise").withStyle(ChatFormatting.GREEN)); } diff --git a/src/main/java/igentuman/nc/block/kugelblitz/entity/BlackHoleBE.java b/src/main/java/igentuman/nc/block/kugelblitz/entity/BlackHoleBE.java index e504d4e69..8d1ed4091 100644 --- a/src/main/java/igentuman/nc/block/kugelblitz/entity/BlackHoleBE.java +++ b/src/main/java/igentuman/nc/block/kugelblitz/entity/BlackHoleBE.java @@ -1,7 +1,7 @@ package igentuman.nc.block.kugelblitz.entity; import igentuman.nc.block.entity.NuclearCraftBE; -import igentuman.nc.compat.kubejs.NCKubeJsEvents; + import igentuman.nc.multiblock.kugelblitz.KugelblitzRegistration; import igentuman.nc.util.annotation.NBTField; import net.minecraft.core.BlockPos; @@ -17,8 +17,8 @@ import net.minecraft.world.level.block.Blocks; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.phys.AABB; -import net.minecraftforge.common.MinecraftForge; -import net.minecraftforge.eventbus.api.Event; +import net.neoforged.neoforge.common.NeoForge; +import net.neoforged.bus.api.Event; import java.util.List; @@ -28,7 +28,7 @@ import static igentuman.nc.multiblock.kugelblitz.KugelblitzRegistration.KUGELBLITZ_BLOCKS; import static igentuman.nc.setup.registration.NCSounds.BLACKHOLE_IDLE; import static igentuman.nc.setup.registration.NCSounds.BLACKHOLE_SPAWN; -import static igentuman.nc.util.ModUtil.isKubeJsLoaded; + import static net.minecraft.world.level.block.Blocks.AIR; public class BlackHoleBE extends NuclearCraftBE { @@ -226,10 +226,8 @@ private void consumeEntity(Entity entity) { } else if (entity instanceof LivingEntity livingEntity) { if (livingEntity instanceof ServerPlayer) { PlayerEnterBlackholeEvent event = new PlayerEnterBlackholeEvent((ServerPlayer) livingEntity, getBlockPos(), getLevel()); - MinecraftForge.EVENT_BUS.post(event); - if(isKubeJsLoaded()) { - NCKubeJsEvents.onPlayerEnterBlackhole(event); - } + NeoForge.EVENT_BUS.post(event); + // TODO: KubeJS integration removed — waiting on KubeJS to port to NeoForge 1.21.1. Re-enable NCKubeJsEvents.onPlayerEnterBlackhole(event) when available. if(event.isCanceled()) return; entity.kill(); @@ -255,12 +253,7 @@ public void evaporate() { } - public class PlayerEnterBlackholeEvent extends Event { - - @Override - public boolean isCancelable() { - return true; - } + public class PlayerEnterBlackholeEvent extends Event implements net.neoforged.bus.api.ICancellableEvent { public ServerPlayer getPlayer() { return player; diff --git a/src/main/java/igentuman/nc/block/kugelblitz/entity/ChamberPortBE.java b/src/main/java/igentuman/nc/block/kugelblitz/entity/ChamberPortBE.java index 9cc6818c2..345af79be 100644 --- a/src/main/java/igentuman/nc/block/kugelblitz/entity/ChamberPortBE.java +++ b/src/main/java/igentuman/nc/block/kugelblitz/entity/ChamberPortBE.java @@ -1,5 +1,6 @@ package igentuman.nc.block.kugelblitz.entity; +import igentuman.api.platform.NCLevels; import igentuman.api.nc.multiblock.MultiblockAttachable; import igentuman.nc.NuclearCraft; import igentuman.nc.block.MultiblockPortBE; @@ -15,22 +16,20 @@ import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.properties.BlockStateProperties; -import net.minecraftforge.common.capabilities.Capability; -import net.minecraftforge.common.capabilities.ForgeCapabilities; -import net.minecraftforge.common.util.LazyOptional; -import net.minecraftforge.fluids.capability.templates.FluidTank; +import net.neoforged.neoforge.capabilities.Capabilities; +import net.neoforged.neoforge.energy.IEnergyStorage; +import net.neoforged.neoforge.fluids.capability.templates.FluidTank; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; import java.util.Objects; import static igentuman.nc.NuclearCraft.currentTick; -import static igentuman.nc.compat.gregtech.GTUtils.*; -import static igentuman.nc.compat.oc2.FusionReactorDevice.DEVICE_CAPABILITY; +import static igentuman.nc.block.entity.NuclearCraftBE.isGTEUCapEnabled; +import static igentuman.nc.compat.gregtech.GTUtils.isOnlyGTCEUCapEnabled; +import static igentuman.nc.compat.gregtech.GTUtils.transferEU; + import static igentuman.nc.multiblock.kugelblitz.KugelblitzRegistration.KUGELBLITZ_BE; import static igentuman.nc.util.ModUtil.*; import static igentuman.nc.util.ModUtil.isGtLoaded; -import static net.minecraftforge.common.capabilities.ForgeCapabilities.ENERGY; public class ChamberPortBE extends MultiblockPortBE { @@ -146,7 +145,7 @@ protected void transferEnergyToSide(Direction direction) { return; // No energy to transfer } int wasEnergy = getEnergyStored(); - BlockEntity be = level.getExistingBlockEntity(worldPosition.relative(direction)); + BlockEntity be = NCLevels.getExistingBlockEntity(level, worldPosition.relative(direction)); if (be == null || be instanceof ChamberPortBE || be instanceof ChamberTerminalBE) { return; } @@ -164,17 +163,12 @@ protected void transferEnergyToSide(Direction direction) { return; } int canExtract = Math.min(controller().energyStorage().getMaxExtract() - extracted, getEnergyStored()); - be.getCapability(ForgeCapabilities.ENERGY, direction.getOpposite()).map(handler -> { - if (handler.canReceive()) { - int received = handler.receiveEnergy(canExtract, false); - controller().energyStorage().consumeEnergy(received); - controller().setChanged(); - return getEnergyStored() > 0; - } else { - return true; - } - } - ); + IEnergyStorage handler = level.getCapability(Capabilities.EnergyStorage.BLOCK, worldPosition.relative(direction), direction.getOpposite()); + if (handler != null && handler.canReceive()) { + int received = handler.receiveEnergy(canExtract, false); + controller().energyStorage().consumeEnergy(received); + controller().setChanged(); + } } private void updateAnalogSignal() { @@ -213,61 +207,19 @@ protected FluidCapabilityHandler fluidHandler() return controller().contentHandler().fluidHandler; } - protected LazyOptional fluidHandler(@Nullable Direction side) - { - return controller().contentHandler().getFluidCapability(side); - } - - @Nonnull - @Override - public LazyOptional getCapability(@Nonnull Capability cap, @Nullable Direction side) { - if(controller() == null) return super.getCapability(cap, side); - - if (cap == ForgeCapabilities.ITEM_HANDLER) { - return controller().getCapability(cap, side); - } - if (cap == ForgeCapabilities.FLUID_HANDLER) { - return controller().getCapability(cap, side); - } - if(isGtLoaded()) { - if (cap == com.gregtechceu.gtceu.api.capability.forge.GTCapability.CAPABILITY_ENERGY_CONTAINER) { - if (isGTEUCapEnabled()) { - return getGTEnergy(controller(), side).cast(); - } - } - } - if (cap == ENERGY) { - if(!isOnlyGTCEUCapEnabled()) { - return controller().getEnergy().cast(); - } else { - return LazyOptional.empty(); - } - } - if(isCcLoaded()) { - if(cap == dan200.computercraft.shared.Capabilities.CAPABILITY_PERIPHERAL) { - return controller().getPeripheral(cap, side); - } - } - if(isOC2Loaded()) { - if(cap == DEVICE_CAPABILITY) { - return controller().getOCDevice(cap, side); - } - } - return super.getCapability(cap, side); - } @Override public ChamberTerminalBE controller() { if(NuclearCraft.instance.isNcBeStopped || (!getLevel().isClientSide() && getLevel().getServer() != null && !getLevel().getServer().isRunning())) return null; if(getLevel().isClientSide && controllerPos != null) { - return (ChamberTerminalBE) getLevel().getExistingBlockEntity(controllerPos); + return (ChamberTerminalBE) NCLevels.getExistingBlockEntity(getLevel(), controllerPos); } try { return (ChamberTerminalBE) getMultiblock().controller().controllerBE(); } catch (NullPointerException e) { if(controllerPos != null) { - return (ChamberTerminalBE) getLevel().getExistingBlockEntity(controllerPos); + return (ChamberTerminalBE) NCLevels.getExistingBlockEntity(getLevel(), controllerPos); } return null; } diff --git a/src/main/java/igentuman/nc/block/kugelblitz/entity/ChamberTerminalBE.java b/src/main/java/igentuman/nc/block/kugelblitz/entity/ChamberTerminalBE.java index aad326411..9811be941 100644 --- a/src/main/java/igentuman/nc/block/kugelblitz/entity/ChamberTerminalBE.java +++ b/src/main/java/igentuman/nc/block/kugelblitz/entity/ChamberTerminalBE.java @@ -3,7 +3,7 @@ import igentuman.nc.NuclearCraft; import igentuman.nc.block.entity.MultiblockControllerBE; import igentuman.nc.compat.cc.KugelblitzPeripheral; -import igentuman.nc.compat.oc2.KugelblitzDevice; + import igentuman.nc.handler.sided.SidedContentHandler; import igentuman.nc.handler.sided.SlotModePair; import igentuman.nc.handler.sided.capability.ItemCapabilityHandler; @@ -18,6 +18,7 @@ import igentuman.nc.util.annotation.NBTField; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; +import net.minecraft.core.HolderLookup; import net.minecraft.nbt.CompoundTag; import net.minecraft.resources.ResourceLocation; import net.minecraft.server.level.ServerLevel; @@ -27,16 +28,11 @@ import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.properties.BlockStateProperties; -import net.minecraftforge.common.capabilities.Capability; -import net.minecraftforge.common.capabilities.ForgeCapabilities; -import net.minecraftforge.common.util.LazyOptional; -import net.minecraftforge.energy.IEnergyStorage; -import net.minecraftforge.fluids.FluidStack; -import net.minecraftforge.fluids.capability.templates.FluidTank; +import net.minecraft.world.level.gameevent.GameEvent; +import net.neoforged.neoforge.fluids.FluidStack; +import net.neoforged.neoforge.fluids.capability.templates.FluidTank; import org.jetbrains.annotations.NotNull; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; import java.util.*; import static igentuman.nc.NuclearCraft.currentTick; @@ -46,7 +42,7 @@ import static igentuman.nc.block.kugelblitz.entity.BlackHoleBE.MIN_MASS; import static igentuman.nc.compat.GlobalVars.CATALYSTS; import static igentuman.nc.compat.gregtech.GTUtils.getGTEnergy; -import static igentuman.nc.compat.oc2.KugelblitzDevice.DEVICE_CAPABILITY; + import static igentuman.nc.content.materials.Materials.subliquid_matter; import static igentuman.nc.handler.config.CommonConfig.ENERGY_GENERATION; import static igentuman.nc.handler.config.CommonConfig.GTCEU_CONFIG; @@ -63,8 +59,6 @@ public class ChamberTerminalBE extends MultiblockControllerBE { public static String NAME = "chamber_terminal"; public final SidedContentHandler contentHandler; public final CustomEnergyStorage energyStorage; - private LazyOptional peripheralCap; - protected final LazyOptional energy; @NBTField public long feeding = 0; @@ -110,7 +104,6 @@ public ChamberTerminalBE(BlockPos pPos, BlockState pBlockState) { .setOutputEnergyTier(getBaseGTEnergyTier()) .setInputAmperage(0) .setOutputAmperage(16); - energy = LazyOptional.of(() -> energyStorage); contentHandler = new SidedContentHandler( 1, 1, 1, 0, 1000); @@ -141,8 +134,8 @@ public List getAllowedInputItems() } @Override - public void load(CompoundTag tag) { - super.load(tag); + protected void loadAdditional(CompoundTag tag, HolderLookup.Provider registries) { + super.loadAdditional(tag, registries); } @Override @@ -150,10 +143,6 @@ public String getName() { return NAME; } - @Override - public LazyOptional getEnergy() { - return energy; - } private CustomEnergyStorage createEnergy() { return new CustomEnergyStorage(100000000, 0, 100000000) { @@ -187,42 +176,7 @@ public Recipe getRecipe() { return null; } - public LazyOptional getPeripheral(@Nonnull Capability cap, @Nullable Direction side) { - if(peripheralCap == null) { - peripheralCap = LazyOptional.of(() -> new KugelblitzPeripheral(this)); - } - return peripheralCap.cast(); - } - - @Nonnull - @Override - public LazyOptional getCapability(@Nonnull Capability cap, @Nullable Direction side) { - if (cap == ForgeCapabilities.FLUID_HANDLER) { - return contentHandler().getFluidCapability(null); - } - if(isGtLoaded()) { - if (cap == com.gregtechceu.gtceu.api.capability.forge.GTCapability.CAPABILITY_ENERGY_CONTAINER) { - if (isGTEUCapEnabled()) { - return getGTEnergy(this, side).cast(); - } - } - } - if (cap == ForgeCapabilities.ENERGY) { - return getEnergy().cast(); - } - if(isCcLoaded()) { - if(cap == dan200.computercraft.shared.Capabilities.CAPABILITY_PERIPHERAL) { - return getPeripheral(cap, side); - } - } - if(isOC2Loaded()) { - if(cap == DEVICE_CAPABILITY) { - return getOCDevice(cap, side); - } - } - return super.getCapability(cap, side); - } @Override public void handleSliderUpdate(int buttonId, int ratio) { @@ -285,7 +239,7 @@ public void tickServer() { trackChanges(processRecipe()); handleRecipeOutput(); if(!isBlackHoleStable()) { - getLevel().gameEvent(null, BLACKHOLE_VIBRATION.get(), getMultiblock().getCenter()); + getLevel().gameEvent(BLACKHOLE_VIBRATION, getMultiblock().getCenter().getCenter(), GameEvent.Context.of(null, null)); } } else if(mass > 0) { mass = 0; @@ -637,9 +591,6 @@ public CustomEnergyStorage energyStorage() { return energyStorage; } - public LazyOptional getOCDevice(Capability cap, Direction side) { - return LazyOptional.of(() -> KugelblitzDevice.createDevice(this)).cast(); - } public FluidTank getFluidTank(int i) { return contentHandler().fluidHandler.tanks.get(i); @@ -703,8 +654,8 @@ public boolean canAnalyze() { public static class Recipe extends NcRecipe { - public Recipe(ResourceLocation id, ItemStackIngredient[] input, ItemStackIngredient[] output, FluidStackIngredient[] inputFluids, FluidStackIngredient[] outputFluids, double timeModifier, double powerModifier, double heatModifier, double rarity) { - super(id, input, output, inputFluids, outputFluids, timeModifier, powerModifier, heatModifier, rarity); + public Recipe(String codeId, ItemStackIngredient[] input, ItemStackIngredient[] output, FluidStackIngredient[] inputFluids, FluidStackIngredient[] outputFluids, double timeModifier, double powerModifier, double heatModifier, double rarity) { + super(codeId, input, output, inputFluids, outputFluids, timeModifier, powerModifier, heatModifier, rarity); CATALYSTS.put(NAME, List.of(getToastSymbol())); } diff --git a/src/main/java/igentuman/nc/block/kugelblitz/entity/EXPLBE.java b/src/main/java/igentuman/nc/block/kugelblitz/entity/EXPLBE.java index 06f54df77..d01562364 100644 --- a/src/main/java/igentuman/nc/block/kugelblitz/entity/EXPLBE.java +++ b/src/main/java/igentuman/nc/block/kugelblitz/entity/EXPLBE.java @@ -1,12 +1,13 @@ package igentuman.nc.block.kugelblitz.entity; +import igentuman.api.platform.NCLevels; import igentuman.nc.block.entity.NuclearCraftBE; import igentuman.nc.client.particle.FusionBeamParticleData; import igentuman.nc.multiblock.AbstractMultiblock; import igentuman.nc.multiblock.kugelblitz.KugelblitzMultiblock; import igentuman.nc.util.capability.CustomEnergyStorage; import igentuman.nc.util.annotation.NBTField; -import mekanism.api.math.FloatingLong; + import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.server.level.ServerLevel; @@ -16,8 +17,6 @@ import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.phys.Vec3; -import net.minecraftforge.common.util.LazyOptional; -import net.minecraftforge.energy.IEnergyStorage; import static igentuman.nc.handler.config.CommonConfig.GTCEU_CONFIG; import static igentuman.nc.handler.config.KugelblitzConfig.KUGELBLITZ_CONFIG; @@ -40,7 +39,6 @@ public class EXPLBE extends NuclearCraftBE { public boolean activatedByOther = false; KugelblitzMultiblock chamber = null; - protected final LazyOptional energy; public final CustomEnergyStorage energyStorage; private EXPLProxyBE[] proxyBES; private boolean energyTransfered = false; @@ -51,7 +49,6 @@ public EXPLBE(BlockPos pPos, BlockState pBlockState) { energyStorage = createEnergy(); energyStorage.setInputEnergyTier(GTCEU_CONFIG.KUGELBLITZ_ENERGY_TIER.get().ordinal()); energyStorage.setOutputEnergyTier(GTCEU_CONFIG.KUGELBLITZ_ENERGY_TIER.get().ordinal()); - energy = LazyOptional.of(() -> energyStorage); } public EXPLBE(BlockEntityType pType, BlockPos pPos, BlockState pBlockState) { @@ -192,7 +189,7 @@ private void findAndPulseOtherLasers() { int activatedLasers = 1; for (int i = 4; i <= KUGELBLITZ_CONFIG.LASER_DISTANCE.get()+4; i++) { BlockPos pos = getBlockPos().relative(getFacing(), i); - BlockEntity be = level.getExistingBlockEntity(pos); + BlockEntity be = NCLevels.getExistingBlockEntity(level, pos); if (be instanceof PhotonConcentratorBE photonConcentrator) { AbstractMultiblock multiblock = photonConcentrator.getMultiblock(); if (multiblock instanceof KugelblitzMultiblock kugelblitzMultiblock) { @@ -206,7 +203,7 @@ private void findAndPulseOtherLasers() { continue; } for(int j = 10; j < KUGELBLITZ_CONFIG.LASER_DISTANCE.get() + 20; j++) { - BlockEntity be2 = level.getExistingBlockEntity(center.relative(direction, j)); + BlockEntity be2 = NCLevels.getExistingBlockEntity(level, center.relative(direction, j)); if(be2 instanceof EXPLBE expl) { expl.activate(true); activatedLasers++; @@ -237,16 +234,17 @@ public void activate(boolean activatedByOther) { private int getActualLaserDistance() { for (int i = 4; i <= KUGELBLITZ_CONFIG.LASER_DISTANCE.get()+4; i++) { BlockPos pos = getBlockPos().relative(getFacing(), i); - BlockEntity be = level.getExistingBlockEntity(pos); + BlockEntity be = NCLevels.getExistingBlockEntity(level, pos); if (be instanceof PhotonConcentratorBE) { return i; } if (isMekanismGeneratorsLoaded() && be instanceof mekanism.generators.common.tile.fusion.TileEntityLaserFocusMatrix) { return i; } - if (isBfrLoaded() && be instanceof igentuman.bfr.common.tile.fusion.TileEntityLaserFocusMatrix) { - return i; - } + // TODO: BFR (Better Fusion Reactor) has no 1.21.1 port — re-enable when available + // if (isBfrLoaded() && be instanceof igentuman.bfr.common.tile.fusion.TileEntityLaserFocusMatrix) { + // return i; + // } } return KUGELBLITZ_CONFIG.LASER_DISTANCE.get(); } @@ -256,7 +254,7 @@ private void transferEnergy() { killEntitiesInBeam(); energyTransfered = true; BlockPos pos = getBlockPos().relative(getFacing(), getActualLaserDistance()); - BlockEntity be = level.getExistingBlockEntity(pos); + BlockEntity be = NCLevels.getExistingBlockEntity(level, pos); if(allLasersBurst) { chamber.gotLaserBurst(); allLasersBurst = false; @@ -265,11 +263,12 @@ private void transferEnergy() { photonConcentratorBE.gotEnergy(getFacing()); } if (isMekanismGeneratorsLoaded() && be instanceof mekanism.generators.common.tile.fusion.TileEntityLaserFocusMatrix matrixBe) { - matrixBe.receiveLaserEnergy(FloatingLong.create(aggregatedEnergy*5)); - } - if (isBfrLoaded() && be instanceof igentuman.bfr.common.tile.fusion.TileEntityLaserFocusMatrix matrixBe) { - matrixBe.receiveLaserEnergy(FloatingLong.create(aggregatedEnergy*5)); + matrixBe.receiveLaserEnergy((long)(aggregatedEnergy*5)); } + // TODO: BFR (Better Fusion Reactor) has no 1.21.1 port — re-enable when available + // if (isBfrLoaded() && be instanceof igentuman.bfr.common.tile.fusion.TileEntityLaserFocusMatrix matrixBe) { + // matrixBe.receiveLaserEnergy((long)(aggregatedEnergy*5)); + // } } private void killEntitiesInBeam() { @@ -302,10 +301,6 @@ public CustomEnergyStorage energyStorage() { return energyStorage; } - @Override - public LazyOptional getEnergy() { - return energy; - } public boolean hasEnoughEnergy() { return aggregatedEnergy >= KUGELBLITZ_CONFIG.EXPL_CHARGE.get(); diff --git a/src/main/java/igentuman/nc/block/kugelblitz/entity/EXPLProxyBE.java b/src/main/java/igentuman/nc/block/kugelblitz/entity/EXPLProxyBE.java index bb95e5b8c..774aac5dd 100644 --- a/src/main/java/igentuman/nc/block/kugelblitz/entity/EXPLProxyBE.java +++ b/src/main/java/igentuman/nc/block/kugelblitz/entity/EXPLProxyBE.java @@ -10,11 +10,7 @@ import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraft.world.level.block.state.BlockState; -import net.minecraftforge.common.capabilities.Capability; -import net.minecraftforge.common.util.LazyOptional; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; import static igentuman.nc.multiblock.kugelblitz.KugelblitzRegistration.EXPL_PROXY_BE; @@ -71,12 +67,6 @@ public void destroyCore() { } } - @Nonnull - @Override - public LazyOptional getCapability(@Nonnull Capability cap, @Nullable Direction side) { - if(getCoreBE() == null) return super.getCapability(cap, side); - return getCoreBE().getCapability(cap, side); - } public void forceTickServer(EXPLBE core) { //Disallow boosters like torcherino diff --git a/src/main/java/igentuman/nc/block/kugelblitz/entity/PhotonConcentratorBE.java b/src/main/java/igentuman/nc/block/kugelblitz/entity/PhotonConcentratorBE.java index fcaca13b7..91c3c8d10 100644 --- a/src/main/java/igentuman/nc/block/kugelblitz/entity/PhotonConcentratorBE.java +++ b/src/main/java/igentuman/nc/block/kugelblitz/entity/PhotonConcentratorBE.java @@ -1,5 +1,6 @@ package igentuman.nc.block.kugelblitz.entity; +import igentuman.api.platform.NCLevels; import igentuman.api.nc.multiblock.MultiblockAttachable; import igentuman.nc.NuclearCraft; import igentuman.nc.block.entity.NuclearCraftBE; @@ -46,7 +47,7 @@ public boolean canInvalidateCache() { public ChamberTerminalBE controller() { if(NuclearCraft.instance.isNcBeStopped || (!getLevel().isClientSide() && getLevel().getServer() != null && !getLevel().getServer().isRunning())) return null; if(getLevel().isClientSide && controllerPos != null) { - return (ChamberTerminalBE) getLevel().getExistingBlockEntity(controllerPos); + return (ChamberTerminalBE) NCLevels.getExistingBlockEntity(getLevel(), controllerPos); } if (controller != null && !controller.isRemoved()) { return controller; @@ -59,7 +60,7 @@ public ChamberTerminalBE controller() { } } catch (NullPointerException e) { if(controllerPos != null) { - controller = (ChamberTerminalBE) getLevel().getExistingBlockEntity(controllerPos); + controller = (ChamberTerminalBE) NCLevels.getExistingBlockEntity(getLevel(), controllerPos); } } if(controller == null) { diff --git a/src/main/java/igentuman/nc/block/storage/BarrelBlock.java b/src/main/java/igentuman/nc/block/storage/BarrelBlock.java index 9e167ed40..79cd64eb4 100644 --- a/src/main/java/igentuman/nc/block/storage/BarrelBlock.java +++ b/src/main/java/igentuman/nc/block/storage/BarrelBlock.java @@ -1,5 +1,8 @@ package igentuman.nc.block.storage; +import igentuman.api.platform.NCItemStacks; +import igentuman.api.platform.NCLevels; +import igentuman.api.platform.NCNames; import igentuman.api.nc.SideModeToggleable; import igentuman.nc.block.storage.entity.BarrelBE; import igentuman.nc.setup.registration.NCStorageBlocks; @@ -11,15 +14,15 @@ import net.minecraft.network.chat.Component; import net.minecraft.stats.Stats; import net.minecraft.world.InteractionHand; -import net.minecraft.world.InteractionResult; +import net.minecraft.world.ItemInteractionResult; import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.entity.item.ItemEntity; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.BucketItem; +import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.TooltipFlag; import net.minecraft.world.item.context.BlockPlaceContext; -import net.minecraft.world.level.BlockGetter; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.EntityBlock; @@ -30,10 +33,10 @@ import net.minecraft.world.level.block.state.StateDefinition; import net.minecraft.world.level.material.Fluid; import net.minecraft.world.phys.BlockHitResult; -import net.minecraftforge.common.capabilities.ForgeCapabilities; -import net.minecraftforge.fluids.FluidStack; -import net.minecraftforge.fluids.capability.IFluidHandler; -import net.minecraftforge.fluids.capability.IFluidHandlerItem; +import net.neoforged.neoforge.capabilities.Capabilities; +import net.neoforged.neoforge.fluids.FluidStack; +import net.neoforged.neoforge.fluids.capability.IFluidHandler; +import net.neoforged.neoforge.fluids.capability.IFluidHandlerItem; import org.jetbrains.annotations.Nullable; import java.util.List; @@ -62,7 +65,7 @@ public boolean hasAnalogOutputSignal(BlockState pState) { } public int getAnalogOutputSignal(BlockState pBlockState, Level pLevel, BlockPos pPos) { - BlockEntity blockEntity = pLevel.getExistingBlockEntity(pPos); + BlockEntity blockEntity = NCLevels.getExistingBlockEntity(pLevel, pPos); if (blockEntity instanceof BarrelBE barrelBE) { return (int) ((barrelBE.fluidTank.getFluid().getAmount()/(double)barrelBE.fluidTank.getCapacity())*15); } @@ -70,12 +73,11 @@ public int getAnalogOutputSignal(BlockState pBlockState, Level pLevel, BlockPos } @Override - public InteractionResult use(BlockState state, Level level, BlockPos pos, Player player, InteractionHand hand, BlockHitResult result) { + protected ItemInteractionResult useItemOn(ItemStack stack, BlockState state, Level level, BlockPos pos, Player player, InteractionHand hand, BlockHitResult result) { if (!level.isClientSide()) { - BarrelBE be = (BarrelBE)level.getExistingBlockEntity(pos); - ItemStack handStack = player.getItemInHand(hand); - IFluidHandler barrel = be.getFluidHandler().orElse(null); - if(isMultiTool(handStack)) { + BarrelBE be = (BarrelBE)NCLevels.getExistingBlockEntity(level, pos); + IFluidHandler barrel = be.fluidTank; + if(isMultiTool(stack)) { Direction dirToChange = result.getDirection(); if(player.isShiftKeyDown()) { dirToChange = dirToChange.getOpposite(); @@ -83,17 +85,17 @@ public InteractionResult use(BlockState state, Level level, BlockPos pos, Player SideModeToggleable.SideMode mode = be.toggleSideConfig(dirToChange.ordinal()); player.sendSystemMessage(__("message.nc.switch_side.mode", mode.name())); } else - if(!handStack.equals(ItemStack.EMPTY)) { - if(handStack.getItem() instanceof BucketItem) { - Fluid to = ((BucketItem) handStack.getItem()).getFluid(); + if(!stack.equals(ItemStack.EMPTY)) { + if(stack.getItem() instanceof BucketItem) { + Fluid to = ((BucketItem) stack.getItem()).content; if(to == null || to == FluidStack.EMPTY.getFluid()) { if(!barrel.getFluidInTank(0).isEmpty() && barrel.getFluidInTank(0).getAmount() >= 1000) { ItemStack bucket = new ItemStack(barrel.getFluidInTank(0).getFluid().getBucket()); barrel.drain(1000, IFluidHandler.FluidAction.EXECUTE); - if(handStack.getCount() == 1) { + if(stack.getCount() == 1) { player.setItemInHand(hand, bucket); } else { - handStack.shrink(1); + stack.shrink(1); if(!player.getInventory().add(bucket)) { player.drop(bucket, false); } @@ -103,11 +105,11 @@ public InteractionResult use(BlockState state, Level level, BlockPos pos, Player int filled = barrel.fill(new FluidStack(to, 1000), IFluidHandler.FluidAction.SIMULATE); if(filled == 1000) { barrel.fill(new FluidStack(to, 1000), IFluidHandler.FluidAction.EXECUTE); - if(player.isCreative()) return InteractionResult.SUCCESS; - if(handStack.getCount() == 1) { + if(player.isCreative()) return ItemInteractionResult.SUCCESS; + if(stack.getCount() == 1) { player.setItemInHand(hand, new ItemStack(BUCKET)); } else { - handStack.shrink(1); + stack.shrink(1); if(!player.getInventory().add(new ItemStack(to.getBucket()))) { player.drop(new ItemStack(to.getBucket()), false); } @@ -115,11 +117,11 @@ public InteractionResult use(BlockState state, Level level, BlockPos pos, Player } } - return InteractionResult.SUCCESS; + return ItemInteractionResult.SUCCESS; } - IFluidHandlerItem fluidCap = handStack.getCapability(ForgeCapabilities.FLUID_HANDLER_ITEM).orElse(null); + IFluidHandlerItem fluidCap = stack.getCapability(Capabilities.FluidHandler.ITEM); if(fluidCap == null) { - return InteractionResult.SUCCESS; + return ItemInteractionResult.SUCCESS; } FluidStack inhandFluid = fluidCap.getFluidInTank(0); if(inhandFluid == null || inhandFluid.isEmpty()) { @@ -130,7 +132,7 @@ public InteractionResult use(BlockState state, Level level, BlockPos pos, Player } } else { FluidStack fluid = FluidStack.EMPTY; - fluid = be.getFluidHandler().orElseGet(null).getFluidInTank(0); + fluid = be.fluidTank.getFluidInTank(0); int storage = BarrelBlocks.all().get(code()).getCapacity(); if(fluid == null || fluid.isEmpty()) { player.sendSystemMessage(__("tooltip.nc.liquid_empty", formatLiquid(storage)).withStyle(ChatFormatting.BLUE)); @@ -139,13 +141,13 @@ public InteractionResult use(BlockState state, Level level, BlockPos pos, Player } } } - return InteractionResult.SUCCESS; + return ItemInteractionResult.SUCCESS; } @Override public void onRemove(BlockState pState, Level pLevel, BlockPos pPos, BlockState pNewState, boolean pIsMoving) { if (pState.getBlock() != pNewState.getBlock()) { - BlockEntity blockEntity = pLevel.getExistingBlockEntity(pPos); + BlockEntity blockEntity = NCLevels.getExistingBlockEntity(pLevel, pPos); } super.onRemove(pState, pLevel, pPos, pNewState, pIsMoving); @@ -159,7 +161,7 @@ public BlockEntity newBlockEntity(BlockPos pPos, BlockState pState) { public String code() { - return asItem().toString(); + return NCNames.of(asItem()); } @javax.annotation.Nullable @@ -183,10 +185,10 @@ public BlockEntityTicker getTicker(Level level, Block public void setPlacedBy(Level world, BlockPos pos, BlockState state, LivingEntity placer, ItemStack stack) { super.setPlacedBy(world, pos, state, placer, stack); - if (stack.hasTag()) { - BarrelBE tileEntity = (BarrelBE) world.getExistingBlockEntity(pos); - CompoundTag nbtData = stack.getTag(); - tileEntity.load(nbtData); + if (NCItemStacks.hasCustomData(stack)) { + BarrelBE tileEntity = (BarrelBE) NCLevels.getExistingBlockEntity(world, pos); + CompoundTag nbtData = NCItemStacks.getTag(stack); + tileEntity.loadCustomOnly(nbtData, world.registryAccess()); } } @@ -195,10 +197,10 @@ public void playerDestroy(Level pLevel, Player pPlayer, BlockPos pPos, BlockStat pPlayer.awardStat(Stats.BLOCK_MINED.get(this)); pPlayer.causeFoodExhaustion(0.005F); BarrelBE BarrelBE = (BarrelBE) pBlockEntity; - CompoundTag data = BarrelBE.getUpdateTag(); + CompoundTag data = BarrelBE.getUpdateTag(pLevel.registryAccess()); ItemStack drop = new ItemStack(this); - drop.setTag(data); + NCItemStacks.setTag(drop, data); if (!pLevel.isClientSide()) { ItemEntity itemEntity = new ItemEntity(pLevel, pPos.getX(), pPos.getY(), pPos.getZ(), drop); itemEntity.setDefaultPickUpDelay(); @@ -208,7 +210,7 @@ public void playerDestroy(Level pLevel, Player pPlayer, BlockPos pPos, BlockStat @Override - public void appendHoverText(ItemStack stack, @javax.annotation.Nullable BlockGetter world, List list, TooltipFlag flag) + public void appendHoverText(ItemStack stack, Item.TooltipContext pContext, List list, TooltipFlag flag) { int storage = BarrelBlocks.all().get(code()).config().getCapacity() * 1000; diff --git a/src/main/java/igentuman/nc/block/storage/BatteryBlock.java b/src/main/java/igentuman/nc/block/storage/BatteryBlock.java index b2f250cd4..b5c8994da 100644 --- a/src/main/java/igentuman/nc/block/storage/BatteryBlock.java +++ b/src/main/java/igentuman/nc/block/storage/BatteryBlock.java @@ -1,5 +1,8 @@ package igentuman.nc.block.storage; +import igentuman.api.platform.NCItemStacks; +import igentuman.api.platform.NCLevels; +import igentuman.api.platform.NCNames; import igentuman.api.nc.SideModeToggleable; import igentuman.nc.block.storage.entity.BatteryBE; import igentuman.nc.block.entity.energy.NCEnergy; @@ -11,7 +14,7 @@ import net.minecraft.nbt.CompoundTag; import net.minecraft.stats.Stats; import net.minecraft.world.InteractionHand; -import net.minecraft.world.InteractionResult; +import net.minecraft.world.ItemInteractionResult; import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.entity.item.ItemEntity; import net.minecraft.world.entity.player.Player; @@ -40,7 +43,7 @@ public boolean hasAnalogOutputSignal(BlockState pState) { } public int getAnalogOutputSignal(BlockState pBlockState, Level pLevel, BlockPos pPos) { - BlockEntity blockEntity = pLevel.getExistingBlockEntity(pPos); + BlockEntity blockEntity = NCLevels.getExistingBlockEntity(pLevel, pPos); if (blockEntity instanceof BatteryBE batteryBE) { return (int) ((batteryBE.energyStorage.getEnergyStored()/(double)batteryBE.energyStorage.getMaxEnergyStored())*15); } @@ -48,11 +51,11 @@ public int getAnalogOutputSignal(BlockState pBlockState, Level pLevel, BlockPos } @Override - public InteractionResult use(BlockState state, Level level, BlockPos pos, Player player, InteractionHand hand, BlockHitResult result) { + protected ItemInteractionResult useItemOn(ItemStack stack, BlockState state, Level level, BlockPos pos, Player player, InteractionHand hand, BlockHitResult result) { if (!level.isClientSide()) { - BlockEntity be = level.getExistingBlockEntity(pos); + BlockEntity be = NCLevels.getExistingBlockEntity(level, pos); if (be instanceof BatteryBE batteryBE) { - if(isMultiTool(player.getItemInHand(hand))) { + if(isMultiTool(stack)) { Direction dirToChange = result.getDirection(); if(player.isShiftKeyDown()) { dirToChange = dirToChange.getOpposite(); @@ -64,13 +67,13 @@ public InteractionResult use(BlockState state, Level level, BlockPos pos, Player } } } - return InteractionResult.SUCCESS; + return ItemInteractionResult.SUCCESS; } @Override public void onRemove(BlockState pState, Level pLevel, BlockPos pPos, BlockState pNewState, boolean pIsMoving) { if (pState.getBlock() != pNewState.getBlock()) { - BlockEntity blockEntity = pLevel.getExistingBlockEntity(pPos); + BlockEntity blockEntity = NCLevels.getExistingBlockEntity(pLevel, pPos); if (blockEntity instanceof BatteryBE) { } @@ -86,7 +89,7 @@ public BlockEntity newBlockEntity(BlockPos pPos, BlockState pState) { public String code() { - return asItem().toString(); + return NCNames.of(asItem()); } @javax.annotation.Nullable @@ -110,10 +113,10 @@ public BlockEntityTicker getTicker(Level level, Block public void setPlacedBy(Level world, BlockPos pos, BlockState state, LivingEntity placer, ItemStack stack) { super.setPlacedBy(world, pos, state, placer, stack); - if (stack.hasTag()) { - BatteryBE tileEntity = (BatteryBE) world.getExistingBlockEntity(pos); - CompoundTag nbtData = stack.getTag(); - tileEntity.load(nbtData); + if (NCItemStacks.hasCustomData(stack)) { + BatteryBE tileEntity = (BatteryBE) NCLevels.getExistingBlockEntity(world, pos); + CompoundTag nbtData = NCItemStacks.getTag(stack); + tileEntity.loadCustomOnly(nbtData, world.registryAccess()); } } @@ -122,10 +125,10 @@ public void playerDestroy(Level pLevel, Player pPlayer, BlockPos pPos, BlockStat pPlayer.awardStat(Stats.BLOCK_MINED.get(this)); pPlayer.causeFoodExhaustion(0.005F); BatteryBE batteryBE = (BatteryBE) pBlockEntity; - CompoundTag data = batteryBE.getUpdateTag(); + CompoundTag data = batteryBE.getUpdateTag(pLevel.registryAccess()); ItemStack drop = new ItemStack(this); - drop.setTag(data); + NCItemStacks.setTag(drop, data); if (!pLevel.isClientSide()) { ItemEntity itemEntity = new ItemEntity(pLevel, pPos.getX(), pPos.getY(), pPos.getZ(), drop); itemEntity.setDefaultPickUpDelay(); diff --git a/src/main/java/igentuman/nc/block/storage/ContainerBlock.java b/src/main/java/igentuman/nc/block/storage/ContainerBlock.java index 42247ca25..3172c46c6 100644 --- a/src/main/java/igentuman/nc/block/storage/ContainerBlock.java +++ b/src/main/java/igentuman/nc/block/storage/ContainerBlock.java @@ -1,5 +1,8 @@ package igentuman.nc.block.storage; +import igentuman.api.platform.NCItemStacks; +import igentuman.api.platform.NCLevels; +import igentuman.api.platform.NCNames; import igentuman.api.nc.SideModeToggleable; import igentuman.nc.block.storage.entity.ContainerBE; import igentuman.nc.container.StorageContainerContainer; @@ -14,17 +17,17 @@ import net.minecraft.server.level.ServerPlayer; import net.minecraft.stats.Stats; import net.minecraft.world.InteractionHand; -import net.minecraft.world.InteractionResult; +import net.minecraft.world.ItemInteractionResult; import net.minecraft.world.MenuProvider; import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.entity.item.ItemEntity; import net.minecraft.world.entity.player.Inventory; import net.minecraft.world.entity.player.Player; import net.minecraft.world.inventory.AbstractContainerMenu; +import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.TooltipFlag; import net.minecraft.world.item.context.BlockPlaceContext; -import net.minecraft.world.level.BlockGetter; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.EntityBlock; @@ -34,7 +37,7 @@ import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.StateDefinition; import net.minecraft.world.phys.BlockHitResult; -import net.minecraftforge.network.NetworkHooks; + import org.jetbrains.annotations.Nullable; import java.util.List; @@ -62,7 +65,7 @@ public boolean hasAnalogOutputSignal(BlockState pState) { } public int getAnalogOutputSignal(BlockState pBlockState, Level pLevel, BlockPos pPos) { - BlockEntity blockEntity = pLevel.getExistingBlockEntity(pPos); + BlockEntity blockEntity = NCLevels.getExistingBlockEntity(pLevel, pPos); if (blockEntity instanceof ContainerBE containerBE) { return (int) ((containerBE.getLoadRate())*15); } @@ -70,11 +73,10 @@ public int getAnalogOutputSignal(BlockState pBlockState, Level pLevel, BlockPos } @Override - public InteractionResult use(BlockState state, Level level, BlockPos pos, Player player, InteractionHand hand, BlockHitResult result) { + protected ItemInteractionResult useItemOn(ItemStack stack, BlockState state, Level level, BlockPos pos, Player player, InteractionHand hand, BlockHitResult result) { if (!level.isClientSide()) { - ContainerBE be = (ContainerBE)level.getExistingBlockEntity(pos); - ItemStack handStack = player.getItemInHand(hand); - if(isMultiTool(handStack)) { + ContainerBE be = (ContainerBE)NCLevels.getExistingBlockEntity(level, pos); + if(isMultiTool(stack)) { Direction dirToChange = result.getDirection(); if(player.isShiftKeyDown()) { dirToChange = dirToChange.getOpposite(); @@ -93,10 +95,10 @@ public AbstractContainerMenu createMenu(int windowId, Inventory playerInventory, return new StorageContainerContainer<>(windowId, pos, playerInventory); } }; - NetworkHooks.openScreen((ServerPlayer) player, containerProvider, be.getBlockPos()); + ((ServerPlayer) player).openMenu(containerProvider, be.getBlockPos()); } } - return InteractionResult.SUCCESS; + return ItemInteractionResult.SUCCESS; } @Override @@ -116,7 +118,7 @@ public BlockEntity newBlockEntity(BlockPos pPos, BlockState pState) { public String code() { - return asItem().toString(); + return NCNames.of(asItem()); } @javax.annotation.Nullable @@ -140,10 +142,10 @@ public BlockEntityTicker getTicker(Level level, Block public void setPlacedBy(Level world, BlockPos pos, BlockState state, LivingEntity placer, ItemStack stack) { super.setPlacedBy(world, pos, state, placer, stack); - if (stack.hasTag()) { + if (NCItemStacks.hasCustomData(stack)) { ContainerBE tileEntity = (ContainerBE) world.getBlockEntity(pos); - CompoundTag nbtData = stack.getTag(); - tileEntity.load(nbtData); + CompoundTag nbtData = NCItemStacks.getTag(stack); + tileEntity.loadCustomOnly(nbtData, world.registryAccess()); } } @@ -152,9 +154,9 @@ public void playerDestroy(Level pLevel, Player pPlayer, BlockPos pPos, BlockStat pPlayer.awardStat(Stats.BLOCK_MINED.get(this)); pPlayer.causeFoodExhaustion(0.005F); ContainerBE ContainerBE = (ContainerBE) pBlockEntity; - CompoundTag data = ContainerBE.getUpdateTag(); + CompoundTag data = ContainerBE.getUpdateTag(pLevel.registryAccess()); ItemStack drop = new ItemStack(this); - drop.setTag(data); + NCItemStacks.setTag(drop, data); if (!pLevel.isClientSide()) { ItemEntity itemEntity = new ItemEntity(pLevel, pPos.getX(), pPos.getY(), pPos.getZ(), drop); itemEntity.setDefaultPickUpDelay(); @@ -163,7 +165,7 @@ public void playerDestroy(Level pLevel, Player pPlayer, BlockPos pPos, BlockStat } @Override - public void appendHoverText(ItemStack stack, @javax.annotation.Nullable BlockGetter world, List list, TooltipFlag flag) + public void appendHoverText(ItemStack stack, Item.TooltipContext pContext, List list, TooltipFlag flag) { list.add(__("tooltip.nc.use_multitool").withStyle(ChatFormatting.YELLOW)); } diff --git a/src/main/java/igentuman/nc/block/storage/entity/BarrelBE.java b/src/main/java/igentuman/nc/block/storage/entity/BarrelBE.java index 1f0426a3e..d34ce3704 100644 --- a/src/main/java/igentuman/nc/block/storage/entity/BarrelBE.java +++ b/src/main/java/igentuman/nc/block/storage/entity/BarrelBE.java @@ -1,26 +1,25 @@ package igentuman.nc.block.storage.entity; +import igentuman.api.platform.NCLevels; +import igentuman.api.platform.NCSerialization; import igentuman.api.nc.SideModeToggleable; import igentuman.nc.block.entity.NuclearCraftBE; import igentuman.nc.content.storage.BarrelBlocks; import igentuman.nc.handler.sided.capability.NcFluidTank; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; +import net.minecraft.core.HolderLookup; import net.minecraft.nbt.CompoundTag; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.state.BlockState; -import net.minecraftforge.client.model.data.ModelData; -import net.minecraftforge.client.model.data.ModelProperty; -import net.minecraftforge.common.capabilities.Capability; -import net.minecraftforge.common.capabilities.ForgeCapabilities; -import net.minecraftforge.common.util.LazyOptional; -import net.minecraftforge.fluids.FluidStack; -import net.minecraftforge.fluids.capability.IFluidHandler; +import net.neoforged.neoforge.capabilities.Capabilities; +import net.neoforged.neoforge.client.model.data.ModelData; +import net.neoforged.neoforge.client.model.data.ModelProperty; +import net.neoforged.neoforge.fluids.FluidStack; +import net.neoforged.neoforge.fluids.capability.IFluidHandler; import org.jetbrains.annotations.NotNull; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; import java.util.HashMap; import java.util.concurrent.atomic.AtomicInteger; @@ -29,7 +28,6 @@ public class BarrelBE extends NuclearCraftBE implements SideModeToggleable { public final NcFluidTank fluidTank; - protected final LazyOptional fluidHandler; public static final ModelProperty> SIDE_CONFIG = new ModelProperty<>(); public BarrelBE(BlockPos pPos, BlockState pBlockState) { @@ -38,7 +36,6 @@ public BarrelBE(BlockPos pPos, BlockState pBlockState) { sideConfig.put(direction.ordinal(), SideMode.DEFAULT); } fluidTank = createTank(); - fluidHandler = LazyOptional.of(() -> fluidTank); } private NcFluidTank createTank() { @@ -51,11 +48,7 @@ public void setFluid(FluidStack fluid) { }; } - public LazyOptional getFluidHandler() { - return fluidHandler; - } - @Nonnull @Override public @NotNull ModelData getModelData() { return ModelData.builder() @@ -82,9 +75,9 @@ protected void transferFluid() { sideConfig.get(direction.ordinal()) == SideMode.DISABLED || sideConfig.get(direction.ordinal()) == SideMode.DEFAULT ) continue; - BlockEntity be = level.getExistingBlockEntity(worldPosition.relative(direction)); + BlockEntity be = NCLevels.getExistingBlockEntity(level, worldPosition.relative(direction)); if (be != null) { - IFluidHandler sideHandler = be.getCapability(ForgeCapabilities.FLUID_HANDLER, direction.getOpposite()).orElse(null); + IFluidHandler sideHandler = level.getCapability(Capabilities.FluidHandler.BLOCK, worldPosition.relative(direction), direction.getOpposite()); if(sideHandler == null) continue; if (currentAmount.get() > 0 && sideConfig.get(direction.ordinal()) == SideMode.OUT) { int accepted = sideHandler.fill(fluidTank.getFluidInTank(0), IFluidHandler.FluidAction.EXECUTE); @@ -119,34 +112,29 @@ private int getTankCapacity() { return BarrelBlocks.all().get(getName()).config().getCapacity(); } - @Nonnull + @Override - public LazyOptional getCapability(@Nonnull Capability cap, @Nullable Direction side) { - if (cap == ForgeCapabilities.FLUID_HANDLER && (side != null && sideConfig.get(side.ordinal()) != SideMode.DISABLED)) { - return getFluidHandler().cast(); + protected void saveClientData(CompoundTag tag, HolderLookup.Provider registries) { + if (!fluidTank.getFluid().isEmpty()) { + tag.put("Fluid", NCSerialization.saveFluidStack(fluidTank.getFluid(), registries)); } - return super.getCapability(cap, side); - } - - protected void saveClientData(CompoundTag tag) { - CompoundTag tank = new CompoundTag(); - tag.put("Fluid", fluidTank.getFluid().writeToNBT(tank)); tag.putIntArray("sideConfig", sideConfig.values().stream().mapToInt(Enum::ordinal).toArray()); } - public void loadClientData(CompoundTag tag) { + @Override + public void loadClientData(CompoundTag tag, HolderLookup.Provider registries) { if(tag.contains("Fluid")) { - fluidTank.setFluid(FluidStack.loadFluidStackFromNBT(tag.getCompound("Fluid"))); + fluidTank.setFluid(NCSerialization.loadFluidStack(registries, tag.getCompound("Fluid"))); } if (!tag.contains("sideConfig")) return; loadSideConfig(tag.getIntArray("sideConfig")); } @Override - public void load(CompoundTag tag) { - super.load(tag); + protected void loadAdditional(CompoundTag tag, HolderLookup.Provider registries) { + super.loadAdditional(tag, registries); if(tag.contains("Fluid")) { - fluidTank.setFluid(FluidStack.loadFluidStackFromNBT(tag.getCompound("Fluid"))); + fluidTank.setFluid(NCSerialization.loadFluidStack(registries, tag.getCompound("Fluid"))); } if(!tag.contains("sideConfig")) return; loadSideConfig(tag.getIntArray("sideConfig")); @@ -172,10 +160,11 @@ private void loadSideConfig(int[] tagData) { } @Override - public void saveAdditional(CompoundTag tag) { - super.saveAdditional(tag); - CompoundTag tank = new CompoundTag(); - tag.put("Fluid", fluidTank.getFluid().writeToNBT(tank)); + protected void saveAdditional(CompoundTag tag, HolderLookup.Provider registries) { + super.saveAdditional(tag, registries); + if (!fluidTank.getFluid().isEmpty()) { + tag.put("Fluid", NCSerialization.saveFluidStack(fluidTank.getFluid(), registries)); + } tag.putIntArray("sideConfig", sideConfig.values().stream().mapToInt(Enum::ordinal).toArray()); } diff --git a/src/main/java/igentuman/nc/block/storage/entity/BatteryBE.java b/src/main/java/igentuman/nc/block/storage/entity/BatteryBE.java index b90cbd493..44bb7e244 100644 --- a/src/main/java/igentuman/nc/block/storage/entity/BatteryBE.java +++ b/src/main/java/igentuman/nc/block/storage/entity/BatteryBE.java @@ -1,30 +1,27 @@ package igentuman.nc.block.storage.entity; +import igentuman.api.platform.NCNames; import igentuman.api.nc.SideModeToggleable; import igentuman.nc.NuclearCraft; import igentuman.nc.block.entity.energy.NCEnergy; import igentuman.nc.content.energy.BatteryBlocks; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; +import net.minecraft.core.HolderLookup; import net.minecraft.core.particles.DustParticleOptions; import net.minecraft.nbt.CompoundTag; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.state.BlockState; -import net.minecraftforge.client.model.data.ModelData; -import net.minecraftforge.client.model.data.ModelProperty; -import net.minecraftforge.common.capabilities.Capability; -import net.minecraftforge.common.util.LazyOptional; +import net.neoforged.neoforge.client.model.data.ModelData; +import net.neoforged.neoforge.client.model.data.ModelProperty; import org.jetbrains.annotations.NotNull; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; import java.util.HashMap; import static igentuman.nc.compat.gregtech.GTUtils.getGTEnergy; import static igentuman.nc.compat.gregtech.GTUtils.isOnlyGTCEUCapEnabled; import static igentuman.nc.handler.config.CommonConfig.ENERGY_STORAGE; import static igentuman.nc.util.ModUtil.isGtLoaded; -import static net.minecraftforge.common.capabilities.ForgeCapabilities.ENERGY; public class BatteryBE extends NCEnergy { @@ -39,10 +36,9 @@ public BatteryBE(BlockPos pPos, BlockState pBlockState) { } public static String getName(BlockState pBlockState) { - return pBlockState.getBlock().asItem().toString(); + return NCNames.of(pBlockState.getBlock().asItem()); } - @Nonnull @Override public @NotNull ModelData getModelData() { return ModelData.builder() @@ -72,31 +68,6 @@ protected void transferEnergy() { - @Nonnull - @Override - public LazyOptional getCapability(@Nonnull Capability cap, @Nullable Direction side) { - if(isGtLoaded()) { - if (cap == com.gregtechceu.gtceu.api.capability.forge.GTCapability.CAPABILITY_ENERGY_CONTAINER) { - if (isGTEUCapEnabled()) { - if (side != null && sideConfig.get(side.ordinal()) != SideModeToggleable.SideMode.DISABLED) { - return getGTEnergy(this, side).cast(); - } - } - } - } - - if (cap == ENERGY) { - if (side != null && sideConfig.get(side.ordinal()) != SideModeToggleable.SideMode.DISABLED) { - if (!isOnlyGTCEUCapEnabled()) { - return getEnergy().cast(); - - } else { - return LazyOptional.empty(); - } - } - } - return super.getCapability(cap, side); - } @Override protected int getEnergyTransferPerTick() { @@ -109,35 +80,35 @@ public int getMaxTransfer() { @Override public long getInputEnergyTier() { - return BatteryBlocks.all().get(getBlockState().getBlock().asItem().toString()).getEnergyTier().ordinal(); + return BatteryBlocks.all().get(NCNames.of(getBlockState().getBlock().asItem())).getEnergyTier().ordinal(); } @Override public long getOutputEnergyTier() { - return BatteryBlocks.all().get(getBlockState().getBlock().asItem().toString()).getEnergyTier().ordinal(); + return BatteryBlocks.all().get(NCNames.of(getBlockState().getBlock().asItem())).getEnergyTier().ordinal(); } protected int getEnergyMaxStorage() { - return BatteryBlocks.all().get(getBlockState().getBlock().asItem().toString()).getStorage(); + return BatteryBlocks.all().get(NCNames.of(getBlockState().getBlock().asItem())).getStorage(); } @Override - protected void saveClientData(CompoundTag tag) { - super.saveClientData(tag); + protected void saveClientData(CompoundTag tag, HolderLookup.Provider registries) { + super.saveClientData(tag, registries); tag.putIntArray("sideConfig", sideConfig.values().stream().mapToInt(Enum::ordinal).toArray()); } @Override - public void loadClientData(CompoundTag tag) { - super.loadClientData(tag); + public void loadClientData(CompoundTag tag, HolderLookup.Provider registries) { + super.loadClientData(tag, registries); if (!tag.contains("sideConfig")) return; loadSideConfig(tag.getIntArray("sideConfig")); } @Override - public void load(CompoundTag tag) { - super.load(tag); + protected void loadAdditional(CompoundTag tag, HolderLookup.Provider registries) { + super.loadAdditional(tag, registries); if(!tag.contains("sideConfig")) return; loadSideConfig(tag.getIntArray("sideConfig")); } @@ -159,8 +130,8 @@ private void loadSideConfig(int[] tagData) { } @Override - public void saveAdditional(CompoundTag tag) { - super.saveAdditional(tag); + protected void saveAdditional(CompoundTag tag, HolderLookup.Provider registries) { + super.saveAdditional(tag, registries); tag.putIntArray("sideConfig", sideConfig.values().stream().mapToInt(Enum::ordinal).toArray()); } diff --git a/src/main/java/igentuman/nc/block/storage/entity/ContainerBE.java b/src/main/java/igentuman/nc/block/storage/entity/ContainerBE.java index fd226edfe..049457cac 100644 --- a/src/main/java/igentuman/nc/block/storage/entity/ContainerBE.java +++ b/src/main/java/igentuman/nc/block/storage/entity/ContainerBE.java @@ -1,25 +1,24 @@ package igentuman.nc.block.storage.entity; import igentuman.api.nc.SideModeToggleable; +import igentuman.api.platform.NCSerialization; import igentuman.nc.block.entity.NuclearCraftBE; import igentuman.nc.handler.ItemStorageCapabilityHandler; import igentuman.nc.content.storage.ContainerBlocks; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; +import net.minecraft.core.HolderLookup; import net.minecraft.nbt.CompoundTag; import net.minecraft.world.item.ItemStack; +import javax.annotation.Nonnull; +import net.neoforged.neoforge.items.IItemHandler; import net.minecraft.world.level.block.Block; -import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.state.BlockState; -import net.minecraftforge.client.model.data.ModelData; -import net.minecraftforge.client.model.data.ModelProperty; -import net.minecraftforge.common.capabilities.Capability; -import net.minecraftforge.common.capabilities.ForgeCapabilities; -import net.minecraftforge.common.util.LazyOptional; +import net.neoforged.neoforge.capabilities.Capabilities; +import net.neoforged.neoforge.client.model.data.ModelData; +import net.neoforged.neoforge.client.model.data.ModelProperty; import org.jetbrains.annotations.NotNull; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; import java.util.HashMap; import static igentuman.nc.setup.registration.NCStorageBlocks.STORAGE_BE; @@ -33,11 +32,7 @@ private ItemStorageCapabilityHandler createInventory() { return new ItemStorageCapabilityHandler(ContainerBlocks.all().get(getName()).getCapacity(), 64); } - public LazyOptional getItemHandler() { - return itemHandler; - } - protected final LazyOptional itemHandler; public static final ModelProperty> SIDE_CONFIG = new ModelProperty<>(); @@ -47,7 +42,6 @@ public ContainerBE(BlockPos pPos, BlockState pBlockState) { sideConfig.put(direction.ordinal(), SideMode.DEFAULT); } inventory = createInventory(); - itemHandler = LazyOptional.of(() -> inventory); } @Nonnull @@ -85,10 +79,8 @@ private void transferItems() { for (Direction direction : Direction.values()) { if (sideConfig.get(direction.ordinal()) == SideMode.DISABLED) continue; if (level == null) continue; - BlockEntity be = level.getExistingBlockEntity(worldPosition.relative(direction)); - if(be == null) continue; - if (be.getCapability(ForgeCapabilities.ITEM_HANDLER, direction.getOpposite()).isPresent()) { - be.getCapability(ForgeCapabilities.ITEM_HANDLER, direction.getOpposite()).ifPresent(cap -> { + IItemHandler cap = level.getCapability(Capabilities.ItemHandler.BLOCK, worldPosition.relative(direction), direction.getOpposite()); + if (cap != null) { boolean transactionDone = false; switch (sideConfig.get(direction.ordinal())) { case OUT -> { @@ -126,39 +118,31 @@ private void transferItems() { } } } - }); } } } - @Nonnull - @Override - public LazyOptional getCapability(@Nonnull Capability cap, @Nullable Direction side) { - if (cap == ForgeCapabilities.ITEM_HANDLER && (side != null && sideConfig.get(side.ordinal()) != SideMode.DISABLED)) { - return getItemHandler().cast(); - } - return super.getCapability(cap, side); - } - protected void saveClientData(CompoundTag tag) { - CompoundTag tank = new CompoundTag(); - tag.put("Inventory", inventory.serializeNBT()); + @Override + protected void saveClientData(CompoundTag tag, HolderLookup.Provider registries) { + tag.put("Inventory", NCSerialization.serialize(inventory, registries)); tag.putIntArray("sideConfig", sideConfig.values().stream().mapToInt(Enum::ordinal).toArray()); } - public void loadClientData(CompoundTag tag) { + @Override + public void loadClientData(CompoundTag tag, HolderLookup.Provider registries) { if(tag.contains("Inventory")) { - inventory.deserializeNBT(tag.getCompound("Inventory")); + NCSerialization.deserialize(inventory, registries, tag.getCompound("Inventory")); } if (!tag.contains("sideConfig")) return; loadSideConfig(tag.getIntArray("sideConfig")); } @Override - public void load(CompoundTag tag) { - super.load(tag); + protected void loadAdditional(CompoundTag tag, HolderLookup.Provider registries) { + super.loadAdditional(tag, registries); if(tag.contains("Inventory")) { - inventory.deserializeNBT(tag.getCompound("Inventory")); + NCSerialization.deserialize(inventory, registries, tag.getCompound("Inventory")); } if(!tag.contains("sideConfig")) return; loadSideConfig(tag.getIntArray("sideConfig")); @@ -184,9 +168,9 @@ private void loadSideConfig(int[] tagData) { } @Override - public void saveAdditional(CompoundTag tag) { - super.saveAdditional(tag); - tag.put("Inventory", inventory.serializeNBT()); + protected void saveAdditional(CompoundTag tag, HolderLookup.Provider registries) { + super.saveAdditional(tag, registries); + tag.put("Inventory", NCSerialization.serialize(inventory, registries)); tag.putIntArray("sideConfig", sideConfig.values().stream().mapToInt(Enum::ordinal).toArray()); } diff --git a/src/main/java/igentuman/nc/block/target_chamber/DetectorBlock.java b/src/main/java/igentuman/nc/block/target_chamber/DetectorBlock.java index eccfe614c..438438f10 100644 --- a/src/main/java/igentuman/nc/block/target_chamber/DetectorBlock.java +++ b/src/main/java/igentuman/nc/block/target_chamber/DetectorBlock.java @@ -1,5 +1,6 @@ package igentuman.nc.block.target_chamber; +import igentuman.api.platform.NCNames; import igentuman.nc.block.MultiblockBlock; import igentuman.nc.multiblock.AbstractMultiblock; import igentuman.nc.multiblock.particle_chamber.DetectorDef; @@ -7,9 +8,9 @@ import net.minecraft.ChatFormatting; import net.minecraft.core.BlockPos; import net.minecraft.network.chat.Component; +import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.TooltipFlag; -import net.minecraft.world.level.BlockGetter; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.SoundType; @@ -49,7 +50,7 @@ public DetectorBlock(Properties reactorBlocksProperties, DetectorDef def) { } private void initParams() { - type = asItem().toString(); + type = NCNames.of(asItem()); def = TARGET_CHAMBER_DETECTORS.get(type); power = def.power; efficiency = def.efficiency; @@ -57,8 +58,8 @@ private void initParams() { } @Override - public void appendHoverText(ItemStack pStack, @javax.annotation.Nullable BlockGetter pLevel, List list, TooltipFlag pFlag) { - if(asItem().toString().contains("empty")) return; + public void appendHoverText(ItemStack pStack, Item.TooltipContext pContext, List list, TooltipFlag pFlag) { + if(NCNames.of(asItem()).contains("empty")) return; initParams(); list.add(TextUtils.applyFormat(__("tooltip.detector.distance", distance), ChatFormatting.GOLD)); list.add(TextUtils.applyFormat(__("tooltip.detector.power", power), ChatFormatting.GOLD)); diff --git a/src/main/java/igentuman/nc/block/target_chamber/TargetChamberBeamPortBlock.java b/src/main/java/igentuman/nc/block/target_chamber/TargetChamberBeamPortBlock.java index 373805079..98d1fce88 100644 --- a/src/main/java/igentuman/nc/block/target_chamber/TargetChamberBeamPortBlock.java +++ b/src/main/java/igentuman/nc/block/target_chamber/TargetChamberBeamPortBlock.java @@ -1,5 +1,6 @@ package igentuman.nc.block.target_chamber; +import igentuman.api.platform.NCLevels; import igentuman.nc.block.entity.MultiblockControllerBE; import igentuman.nc.block.target_chamber.entity.TargetChamberBeamPortBE; import igentuman.nc.multiblock.MultiblockHandler; @@ -9,14 +10,15 @@ import net.minecraft.core.Direction; import net.minecraft.network.chat.Component; import net.minecraft.world.InteractionHand; -import net.minecraft.world.InteractionResult; +import net.minecraft.world.ItemInteractionResult; import net.minecraft.world.entity.player.Player; +import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.TooltipFlag; import net.minecraft.world.item.context.BlockPlaceContext; -import net.minecraft.world.level.BlockGetter; import net.minecraft.world.level.Level; import net.minecraft.world.level.LevelReader; +import com.mojang.serialization.MapCodec; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.EntityBlock; import net.minecraft.world.level.block.HorizontalDirectionalBlock; @@ -56,6 +58,12 @@ public TargetChamberBeamPortBlock(Properties pProperties) { .setValue(PORT_MODE, PortMode.Mode.INPUT) ); } + + @Override + protected MapCodec codec() { + return simpleCodec(TargetChamberBeamPortBlock::new); + } + @Override public BlockState getStateForPlacement(BlockPlaceContext context) { return this.defaultBlockState().setValue(FACING, context.getHorizontalDirection().getOpposite()); @@ -74,18 +82,18 @@ public BlockEntity newBlockEntity(BlockPos pPos, BlockState pState) { } @Override - public @NotNull InteractionResult use(BlockState state, Level level, BlockPos pos, Player player, InteractionHand hand, BlockHitResult result) { + protected @NotNull ItemInteractionResult useItemOn(ItemStack stack, BlockState state, Level level, BlockPos pos, Player player, InteractionHand hand, BlockHitResult result) { if (!level.isClientSide()) { - if(isMultiTool(player.getItemInHand(hand))) { + if(isMultiTool(stack)) { PortMode.Mode mode = state.getValue(PORT_MODE); PortMode.Mode newMode = mode.next(); level.setBlockAndUpdate(pos, state.setValue(PORT_MODE, newMode)); MultiblockHandler.get(level.dimension()).addIgnoreToUpdate(pos); player.sendSystemMessage(__("message.nc.switch_side.mode", newMode)); - return InteractionResult.SUCCESS; + return ItemInteractionResult.SUCCESS; } } - return InteractionResult.SUCCESS; + return ItemInteractionResult.PASS_TO_DEFAULT_BLOCK_INTERACTION; } @javax.annotation.Nullable @@ -105,7 +113,7 @@ public BlockEntityTicker getTicker(Level level, Block }; } - public void appendHoverText(ItemStack pStack, @javax.annotation.Nullable BlockGetter pLevel, List list, TooltipFlag pFlag) + public void appendHoverText(ItemStack pStack, Item.TooltipContext pContext, List list, TooltipFlag pFlag) { list.add(__("multiblock.build_in_chunk.advise").withStyle(ChatFormatting.GREEN)); } @@ -114,7 +122,7 @@ public void appendHoverText(ItemStack pStack, @javax.annotation.Nullable BlockGe public void onNeighborChange(BlockState state, LevelReader level, BlockPos pos, BlockPos neighbor) { super.onNeighborChange(state, level, pos, neighbor); if(level.isClientSide()) return; - if(level.getExistingBlockEntity(neighbor) instanceof MultiblockControllerBE) { + if(NCLevels.getExistingBlockEntity(level, neighbor) instanceof MultiblockControllerBE) { return; } MultiblockHandler.get(((Level)level).dimension()).trackBlockChange(pos); diff --git a/src/main/java/igentuman/nc/block/target_chamber/TargetChamberBlock.java b/src/main/java/igentuman/nc/block/target_chamber/TargetChamberBlock.java index 1a849d1bc..f4bbed8f0 100644 --- a/src/main/java/igentuman/nc/block/target_chamber/TargetChamberBlock.java +++ b/src/main/java/igentuman/nc/block/target_chamber/TargetChamberBlock.java @@ -1,17 +1,18 @@ package igentuman.nc.block.target_chamber; +import igentuman.api.platform.NCNames; import igentuman.nc.block.MultiblockBlock; import net.minecraft.ChatFormatting; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.network.chat.Component; +import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.TooltipFlag; import net.minecraft.world.level.BlockGetter; import net.minecraft.world.level.block.state.BlockState; import org.jetbrains.annotations.NotNull; -import javax.annotation.Nullable; import java.util.List; import static igentuman.nc.multiblock.accelerator.AcceleratorRegistration.TRANSPARENT_BLOCKS_PATTERN; @@ -25,12 +26,12 @@ public TargetChamberBlock(Properties pProperties) { @Override public boolean propagatesSkylightDown(BlockState pState, BlockGetter pLevel, BlockPos pPos) { - return asItem().toString().matches(".*glass.*"); + return NCNames.of(asItem()).matches(".*glass.*"); } @Override public float getShadeBrightness(BlockState pState, BlockGetter pLevel, BlockPos pPos) { - return asItem().toString().matches(".*glass.*") ? 1.0F : 0.2F; + return NCNames.of(asItem()).matches(".*glass.*") ? 1.0F : 0.2F; } @Override @@ -40,7 +41,7 @@ public boolean skipRendering(@NotNull BlockState state, @NotNull BlockState adja } @Override - public void appendHoverText(ItemStack pStack, @Nullable BlockGetter pLevel, List list, TooltipFlag pFlag) { + public void appendHoverText(ItemStack pStack, Item.TooltipContext pContext, List list, TooltipFlag pFlag) { //list.add(__("tooltip.kugelblitz.block_" + pStack.getItem()).withStyle(ChatFormatting.AQUA)); list.add(__("multiblock.build_in_chunk.advise").withStyle(ChatFormatting.GREEN)); } diff --git a/src/main/java/igentuman/nc/block/target_chamber/TargetChamberCameraBlock.java b/src/main/java/igentuman/nc/block/target_chamber/TargetChamberCameraBlock.java index d8fe11fda..c80149e7b 100644 --- a/src/main/java/igentuman/nc/block/target_chamber/TargetChamberCameraBlock.java +++ b/src/main/java/igentuman/nc/block/target_chamber/TargetChamberCameraBlock.java @@ -3,11 +3,10 @@ import igentuman.nc.block.MultiblockBlock; import net.minecraft.ChatFormatting; import net.minecraft.network.chat.Component; +import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.TooltipFlag; -import net.minecraft.world.level.BlockGetter; -import javax.annotation.Nullable; import java.util.List; import static igentuman.nc.util.TextUtils.__; @@ -19,7 +18,7 @@ public TargetChamberCameraBlock(Properties pProperties) { } @Override - public void appendHoverText(ItemStack pStack, @Nullable BlockGetter pLevel, List list, TooltipFlag pFlag) { + public void appendHoverText(ItemStack pStack, Item.TooltipContext pContext, List list, TooltipFlag pFlag) { //list.add(__("tooltip.kugelblitz.block_" + pStack.getItem()).withStyle(ChatFormatting.AQUA)); list.add(__("tooltip.nc.target_chamber.camera").withStyle(ChatFormatting.GREEN)); } diff --git a/src/main/java/igentuman/nc/block/target_chamber/TargetChamberControllerBlock.java b/src/main/java/igentuman/nc/block/target_chamber/TargetChamberControllerBlock.java index 69b32b085..03c399161 100644 --- a/src/main/java/igentuman/nc/block/target_chamber/TargetChamberControllerBlock.java +++ b/src/main/java/igentuman/nc/block/target_chamber/TargetChamberControllerBlock.java @@ -1,5 +1,7 @@ package igentuman.nc.block.target_chamber; +import igentuman.api.platform.NCItemStacks; +import igentuman.api.platform.NCLevels; import igentuman.nc.block.MultiblockControllerBlock; import igentuman.nc.block.target_chamber.entity.TargetChamberControllerBE; import igentuman.nc.container.TargetChamberControllerContainer; @@ -9,15 +11,14 @@ import net.minecraft.core.Direction; import net.minecraft.network.chat.Component; import net.minecraft.server.level.ServerPlayer; -import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResult; import net.minecraft.world.MenuProvider; import net.minecraft.world.entity.player.Inventory; import net.minecraft.world.entity.player.Player; import net.minecraft.world.inventory.AbstractContainerMenu; +import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.TooltipFlag; -import net.minecraft.world.level.BlockGetter; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.EntityBlock; import net.minecraft.world.level.block.SoundType; @@ -26,7 +27,7 @@ import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.phys.BlockHitResult; -import net.minecraftforge.network.NetworkHooks; + import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -64,10 +65,10 @@ public BlockEntity newBlockEntity(@NotNull BlockPos pPos, @NotNull BlockState pS } @Override - public InteractionResult use(@NotNull BlockState state, Level level, @NotNull BlockPos pos, @NotNull Player player, InteractionHand hand, BlockHitResult result) { + protected InteractionResult useWithoutItem(BlockState state, Level level, BlockPos pos, Player player, BlockHitResult result) { if (!level.isClientSide()) { - BlockEntity be = level.getExistingBlockEntity(pos); + BlockEntity be = NCLevels.getExistingBlockEntity(level, pos); if (be instanceof TargetChamberControllerBE) { MenuProvider containerProvider = new MenuProvider() { @@ -81,7 +82,7 @@ public AbstractContainerMenu createMenu(int windowId, @NotNull Inventory playerI return new TargetChamberControllerContainer(windowId, pos, playerInventory); } }; - NetworkHooks.openScreen((ServerPlayer) player, containerProvider, be.getBlockPos()); + ((ServerPlayer) player).openMenu(containerProvider, be.getBlockPos()); } } return InteractionResult.SUCCESS; @@ -113,7 +114,7 @@ public int minSize() { } @Override - public void appendHoverText(ItemStack pStack, @javax.annotation.Nullable BlockGetter pLevel, List list, TooltipFlag pFlag) { + public void appendHoverText(ItemStack pStack, Item.TooltipContext pContext, List list, TooltipFlag pFlag) { if(isGtLoaded() && isGTEUCapEnabled()) { list.add(__("tooltip.nc.energy_eu_tier", getTier(pStack)).withStyle(ChatFormatting.GOLD)); } @@ -122,6 +123,6 @@ public void appendHoverText(ItemStack pStack, @javax.annotation.Nullable BlockGe private CommonConfig.GTCEUCompatibilityConfig.GTCEUTier getTier(ItemStack pStack) { - return CommonConfig.GTCEUCompatibilityConfig.GTCEUTier.byId(GTCEU_CONFIG.ACCELERATORS_ENERGY_TIER.get().ordinal()+pStack.getOrCreateTag().getInt("upgrade_tier")); + return CommonConfig.GTCEUCompatibilityConfig.GTCEUTier.byId(GTCEU_CONFIG.ACCELERATORS_ENERGY_TIER.get().ordinal()+NCItemStacks.getInt(pStack, "upgrade_tier")); } } diff --git a/src/main/java/igentuman/nc/block/target_chamber/TargetChamberPortBlock.java b/src/main/java/igentuman/nc/block/target_chamber/TargetChamberPortBlock.java index 04530bee7..c61b8c7e4 100644 --- a/src/main/java/igentuman/nc/block/target_chamber/TargetChamberPortBlock.java +++ b/src/main/java/igentuman/nc/block/target_chamber/TargetChamberPortBlock.java @@ -1,5 +1,6 @@ package igentuman.nc.block.target_chamber; +import igentuman.api.platform.NCLevels; import igentuman.nc.block.target_chamber.entity.TargetChamberPortBE; import igentuman.nc.container.TargetChamberPortContainer; import igentuman.nc.multiblock.MultiblockHandler; @@ -8,18 +9,18 @@ import net.minecraft.core.Direction; import net.minecraft.network.chat.Component; import net.minecraft.server.level.ServerPlayer; -import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResult; import net.minecraft.world.MenuProvider; import net.minecraft.world.entity.player.Inventory; import net.minecraft.world.entity.player.Player; import net.minecraft.world.inventory.AbstractContainerMenu; +import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.TooltipFlag; import net.minecraft.world.item.context.BlockPlaceContext; -import net.minecraft.world.level.BlockGetter; import net.minecraft.world.level.Level; import net.minecraft.world.level.LevelReader; +import com.mojang.serialization.MapCodec; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.EntityBlock; import net.minecraft.world.level.block.HorizontalDirectionalBlock; @@ -32,7 +33,7 @@ import net.minecraft.world.level.block.state.properties.BlockStateProperties; import net.minecraft.world.level.block.state.properties.DirectionProperty; import net.minecraft.world.phys.BlockHitResult; -import net.minecraftforge.network.NetworkHooks; + import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -59,6 +60,12 @@ public TargetChamberPortBlock(Properties pProperties) { .setValue(HORIZONTAL_FACING, Direction.NORTH) ); } + + @Override + protected MapCodec codec() { + return simpleCodec(TargetChamberPortBlock::new); + } + @Override public BlockState getStateForPlacement(BlockPlaceContext context) { return this.defaultBlockState().setValue(FACING, context.getHorizontalDirection().getOpposite()); @@ -76,10 +83,9 @@ public BlockEntity newBlockEntity(BlockPos pPos, BlockState pState) { } @Override - public @NotNull InteractionResult use(BlockState state, Level level, BlockPos pos, Player player, InteractionHand hand, BlockHitResult result) { - + protected @NotNull InteractionResult useWithoutItem(BlockState state, Level level, BlockPos pos, Player player, BlockHitResult result) { if (!level.isClientSide()) { - BlockEntity be = level.getExistingBlockEntity(pos); + BlockEntity be = NCLevels.getExistingBlockEntity(level, pos); if (be instanceof TargetChamberPortBE port) { MenuProvider containerProvider = new MenuProvider() { @@ -93,7 +99,7 @@ public AbstractContainerMenu createMenu(int windowId, Inventory playerInventory, return new TargetChamberPortContainer(windowId, pos, playerInventory); } }; - NetworkHooks.openScreen((ServerPlayer) player, containerProvider, be.getBlockPos()); + ((ServerPlayer) player).openMenu(containerProvider, be.getBlockPos()); } } return InteractionResult.SUCCESS; @@ -116,7 +122,7 @@ public BlockEntityTicker getTicker(Level level, Block }; } - public void appendHoverText(ItemStack pStack, @javax.annotation.Nullable BlockGetter pLevel, List list, TooltipFlag pFlag) + public void appendHoverText(ItemStack pStack, Item.TooltipContext pContext, List list, TooltipFlag pFlag) { if(isGtLoaded() && isGTEUCapEnabled()) { list.add(__("tooltip.nc.energy_eu_tier.depends_on_controller").withStyle(ChatFormatting.GOLD)); @@ -132,7 +138,7 @@ public boolean hasAnalogOutputSignal(BlockState pState) { @Override public int getAnalogOutputSignal(BlockState pBlockState, Level pLevel, BlockPos pPos) { - return pLevel.getExistingBlockEntity(pPos) instanceof TargetChamberPortBE be ? be.analogSignal : 0; + return NCLevels.getExistingBlockEntity(pLevel, pPos) instanceof TargetChamberPortBE be ? be.analogSignal : 0; } @Override diff --git a/src/main/java/igentuman/nc/block/target_chamber/entity/TargetChamberBeamPortBE.java b/src/main/java/igentuman/nc/block/target_chamber/entity/TargetChamberBeamPortBE.java index 7fec48c79..c689f3736 100644 --- a/src/main/java/igentuman/nc/block/target_chamber/entity/TargetChamberBeamPortBE.java +++ b/src/main/java/igentuman/nc/block/target_chamber/entity/TargetChamberBeamPortBE.java @@ -1,8 +1,10 @@ package igentuman.nc.block.target_chamber.entity; +import igentuman.api.platform.NCLevels; import igentuman.nc.NuclearCraft; import igentuman.nc.block.MultiblockPortBE; import igentuman.nc.block.accelerator.entity.AcceleratorBeamPortBE; +import igentuman.nc.content.particles.IParticleStackHandler; import igentuman.nc.content.particles.ParticleStack; import igentuman.nc.handler.sided.capability.FluidCapabilityHandler; import igentuman.nc.multiblock.AbstractMultiblock; @@ -16,21 +18,12 @@ import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.properties.BlockStateProperties; -import net.minecraftforge.common.capabilities.Capability; -import net.minecraftforge.common.capabilities.ForgeCapabilities; -import net.minecraftforge.common.util.LazyOptional; -import net.minecraftforge.fluids.capability.templates.FluidTank; +import net.neoforged.neoforge.fluids.capability.templates.FluidTank; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; import java.util.Objects; -import static igentuman.nc.compat.oc2.FusionReactorDevice.DEVICE_CAPABILITY; -import static igentuman.nc.content.particles.CapabilityParticleStackHandler.PARTICLE_HANDLER_CAPABILITY; import static igentuman.nc.multiblock.accelerator.AcceleratorRegistration.ACCELERATOR_BLOCKS; import static igentuman.nc.multiblock.particle_chamber.TargetChamberRegistration.TARGET_CHAMBER_BE; -import static igentuman.nc.util.ModUtil.isCcLoaded; -import static igentuman.nc.util.ModUtil.isOC2Loaded; import static igentuman.nc.util.PortMode.PORT_MODE; public class TargetChamberBeamPortBE extends MultiblockPortBE { @@ -145,53 +138,19 @@ protected FluidCapabilityHandler fluidHandler() return controller().contentHandler().fluidHandler; } - protected LazyOptional fluidHandler(@Nullable Direction side) - { - return controller().contentHandler().getFluidCapability(side); - } - - @Nonnull - @Override - public LazyOptional getCapability(@Nonnull Capability cap, @Nullable Direction side) { - if(controller() == null) return super.getCapability(cap, side); - if(isCcLoaded()) { - if(cap == dan200.computercraft.shared.Capabilities.CAPABILITY_PERIPHERAL) { - return LazyOptional.empty(); - } - } - if (cap == ForgeCapabilities.ITEM_HANDLER) { - return LazyOptional.empty(); - } - if (cap == ForgeCapabilities.FLUID_HANDLER) { - return LazyOptional.empty(); - } - if (cap == ForgeCapabilities.ENERGY) { - return LazyOptional.empty(); - } - if (cap == PARTICLE_HANDLER_CAPABILITY) { - return controller().getCapability(cap, side); - } - - if(isOC2Loaded()) { - if(cap == DEVICE_CAPABILITY) { - return LazyOptional.empty(); - } - } - return super.getCapability(cap, side); - } @Override public TargetChamberControllerBE controller() { if(NuclearCraft.instance.isNcBeStopped || (!getLevel().isClientSide() && getLevel().getServer() != null && !getLevel().getServer().isRunning())) return null; if(getLevel().isClientSide && controllerPos != null) { - return (TargetChamberControllerBE) getLevel().getExistingBlockEntity(controllerPos); + return (TargetChamberControllerBE) NCLevels.getExistingBlockEntity(getLevel(), controllerPos); } try { return (TargetChamberControllerBE) getMultiblock().controller().controllerBE(); } catch (NullPointerException e) { if(controllerPos != null) { - return (TargetChamberControllerBE) getLevel().getExistingBlockEntity(controllerPos); + return (TargetChamberControllerBE) NCLevels.getExistingBlockEntity(getLevel(), controllerPos); } return null; } @@ -249,10 +208,10 @@ public void extractParticle(ParticleStack particleStack) { if (targetPort.getFacing() == facing.getOpposite() && targetPort.getBlockState().getValue(PORT_MODE) == PortMode.Mode.INPUT) { if (targetPort.controller() != null) { particleStack.addFocus(-Equations.focusLoss(distance-1, particleStack)); - targetPort.controller().getCapability(PARTICLE_HANDLER_CAPABILITY, facing.getOpposite()) - .ifPresent(handler -> { - handler.reciveParticle(facing.getOpposite(), particleStack); - }); + IParticleStackHandler handler = targetPort.controller().getParticleStorage(); + if (handler != null) { + handler.reciveParticle(facing.getOpposite(), particleStack); + } } } break; @@ -260,10 +219,10 @@ public void extractParticle(ParticleStack particleStack) { if (targetPort.getFacing() == facing.getOpposite() && targetPort.getBlockState().getValue(PORT_MODE) == PortMode.Mode.INPUT) { if (targetPort.controller() != null) { particleStack.addFocus(-Equations.focusLoss(distance-1, particleStack)); - targetPort.getCapability(PARTICLE_HANDLER_CAPABILITY, facing.getOpposite()) - .ifPresent(handler -> { - handler.reciveParticle(facing.getOpposite(), particleStack); - }); + IParticleStackHandler tcHandler = targetPort.controller().particleStorage; + if (tcHandler != null) { + tcHandler.reciveParticle(facing.getOpposite(), particleStack); + } } } break; diff --git a/src/main/java/igentuman/nc/block/target_chamber/entity/TargetChamberControllerBE.java b/src/main/java/igentuman/nc/block/target_chamber/entity/TargetChamberControllerBE.java index 82dedf3af..558df3f02 100644 --- a/src/main/java/igentuman/nc/block/target_chamber/entity/TargetChamberControllerBE.java +++ b/src/main/java/igentuman/nc/block/target_chamber/entity/TargetChamberControllerBE.java @@ -2,9 +2,6 @@ import igentuman.nc.NuclearCraft; import igentuman.nc.block.entity.MultiblockControllerBE; -import igentuman.nc.compat.cc.TargetChamberPeripheral; -import igentuman.nc.compat.oc2.TargetChamberDevice; -import igentuman.nc.content.particles.CapabilityParticleStackHandler; import igentuman.nc.content.particles.IParticleStackHandler; import igentuman.nc.content.particles.ParticleStack; import igentuman.nc.content.particles.ParticleStorage; @@ -21,6 +18,7 @@ import igentuman.nc.util.capability.CustomEnergyStorage; import igentuman.nc.util.annotation.NBTField; import net.minecraft.core.BlockPos; +import net.minecraft.core.HolderLookup; import net.minecraft.core.Direction; import net.minecraft.nbt.CompoundTag; import net.minecraft.resources.ResourceLocation; @@ -29,13 +27,8 @@ import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.properties.BlockStateProperties; -import net.minecraftforge.common.capabilities.Capability; -import net.minecraftforge.common.util.LazyOptional; -import net.minecraftforge.energy.IEnergyStorage; import org.jetbrains.annotations.NotNull; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; import java.util.ArrayList; import java.util.HashMap; import java.util.List; @@ -45,23 +38,15 @@ import static igentuman.nc.NuclearCraft.debugLog; import static igentuman.nc.block.target_chamber.TargetChamberControllerBlock.POWERED; import static igentuman.nc.compat.GlobalVars.CATALYSTS; -import static igentuman.nc.compat.gregtech.GTUtils.getGTEnergy; -import static igentuman.nc.compat.gregtech.GTUtils.isOnlyGTCEUCapEnabled; -import static igentuman.nc.compat.oc2.TargetChamberDevice.DEVICE_CAPABILITY; -import static igentuman.nc.content.particles.CapabilityParticleStackHandler.PARTICLE_HANDLER_CAPABILITY; import static igentuman.nc.handler.config.CommonConfig.GTCEU_CONFIG; import static igentuman.nc.multiblock.particle_chamber.TargetChamberRegistration.TARGET_CHAMBER_BE; import static igentuman.nc.multiblock.particle_chamber.TargetChamberRegistration.TARGET_CHAMBER_BLOCKS; -import static igentuman.nc.util.ModUtil.*; -import static net.minecraftforge.common.capabilities.ForgeCapabilities.*; public class TargetChamberControllerBE extends MultiblockControllerBE { public static final String NAME = "target_chamber_controller"; public final SidedContentHandler contentHandler; public final CustomEnergyStorage energyStorage; - protected final LazyOptional energy; - protected final LazyOptional particleHandler; public final ParticleStorage particleStorage; @NBTField @@ -103,10 +88,8 @@ public TargetChamberControllerBE(BlockPos pPos, BlockState pBlockState) { .setOutputEnergyTier(0) .setInputAmperage(16) .setOutputAmperage(0); - energy = LazyOptional.of(() -> energyStorage); particleStorage = new ParticleStorage(); particleStorage.setTileEntity(this); - particleHandler = CapabilityParticleStackHandler.createHandler(particleStorage); } @Override @@ -133,8 +116,8 @@ public List getAllowedInputItems() } @Override - public void load(CompoundTag tag) { - super.load(tag); + protected void loadAdditional(CompoundTag tag, HolderLookup.Provider registries) { + super.loadAdditional(tag, registries); if (tag.contains("Info")) { CompoundTag infoTag = tag.getCompound("Info"); particleStorage.readFromNBT(infoTag.getCompound("particle_storage")); @@ -142,8 +125,8 @@ public void load(CompoundTag tag) { } @Override - public void saveAdditional(CompoundTag tag) { - super.saveAdditional(tag); + protected void saveAdditional(CompoundTag tag, HolderLookup.Provider registries) { + super.saveAdditional(tag, registries); if (tag.contains("Info")) { CompoundTag infoTag = tag.getCompound("Info"); infoTag.put("particle_storage", particleStorage.writeToNBT(new CompoundTag())); @@ -151,16 +134,16 @@ public void saveAdditional(CompoundTag tag) { } @Override - public void loadClientData(CompoundTag tag) { - super.loadClientData(tag); + public void loadClientData(CompoundTag tag, HolderLookup.Provider registries) { + super.loadClientData(tag, registries); if (tag.contains("Info")) { CompoundTag infoTag = tag.getCompound("Info"); particleStorage.readFromNBT(infoTag.getCompound("particle_storage")); } } @Override - protected void saveClientData(CompoundTag tag) { - super.saveClientData(tag); + protected void saveClientData(CompoundTag tag, HolderLookup.Provider registries) { + super.saveClientData(tag, registries); if (tag.contains("Info")) { CompoundTag infoTag = tag.getCompound("Info"); infoTag.put("particle_storage", particleStorage.writeToNBT(new CompoundTag())); @@ -173,9 +156,6 @@ public ItemCapabilityHandler getItemInventory() return contentHandler().itemHandler; } - public LazyOptional getEnergy() { - return energy; - } private CustomEnergyStorage createEnergy() { return new CustomEnergyStorage(100000000, 100000000, 0) { @@ -197,65 +177,9 @@ public CustomEnergyStorage energyStorage() { } - private LazyOptional peripheralCap; - - public LazyOptional getPeripheral(@Nonnull Capability cap, @Nullable Direction side) { - if(peripheralCap == null) { - peripheralCap = LazyOptional.of(() -> new TargetChamberPeripheral(this)); - } - return peripheralCap.cast(); - } - - public LazyOptional getOCDevice(Capability cap, Direction side) { - return LazyOptional.of(() -> TargetChamberDevice.createDevice(this)).cast(); - } - - @Nonnull - @Override - public LazyOptional getCapability(@Nonnull Capability cap, @Nullable Direction side) { - - if (cap == PARTICLE_HANDLER_CAPABILITY) { - return particleHandler.cast(); - } - if (cap == FLUID_HANDLER) { - return contentHandler().getFluidCapability(side); - } - if (cap == ITEM_HANDLER) { - return contentHandler().getItemCapability(side); - } - if(isGtLoaded()) { - if (cap == com.gregtechceu.gtceu.api.capability.forge.GTCapability.CAPABILITY_ENERGY_CONTAINER) { - if (isGTEUCapEnabled()) { - return getGTEnergy(this, side).cast(); - } - } - } - if (cap == ENERGY) { - if(!isOnlyGTCEUCapEnabled()) { - return getEnergy().cast(); - } else { - return LazyOptional.empty(); - } - } - - - if(isOC2Loaded()) { - if(cap == DEVICE_CAPABILITY) { - return getOCDevice(cap, side); - } - } - - - if(isCcLoaded()) { - if(cap == dan200.computercraft.shared.Capabilities.CAPABILITY_PERIPHERAL) { - return getPeripheral(cap, side); - } - } - return super.getCapability(cap, side); - } public void tickServer() { @@ -545,8 +469,8 @@ public ParticleStack getOutputParticle(int i) { public static class Recipe extends TargetChamberRecipe { - public Recipe(ResourceLocation id, ItemStackIngredient[] input, ItemStackIngredient[] output, FluidStackIngredient[] inputFluids, FluidStackIngredient[] outputFluids, ParticleStack[] inputParticles, ParticleStack[] outputParticles, long maxEnergy, double crossSection) { - super(id, input, output, inputFluids, outputFluids, inputParticles, outputParticles, maxEnergy, crossSection); + public Recipe(String codeId, ItemStackIngredient[] input, ItemStackIngredient[] output, FluidStackIngredient[] inputFluids, FluidStackIngredient[] outputFluids, ParticleStack[] inputParticles, ParticleStack[] outputParticles, long maxEnergy, double crossSection) { + super(codeId, input, output, inputFluids, outputFluids, inputParticles, outputParticles, maxEnergy, crossSection); CATALYSTS.put(NAME, List.of(getToastSymbol())); } diff --git a/src/main/java/igentuman/nc/block/target_chamber/entity/TargetChamberPortBE.java b/src/main/java/igentuman/nc/block/target_chamber/entity/TargetChamberPortBE.java index c0b3e68ff..661923b55 100644 --- a/src/main/java/igentuman/nc/block/target_chamber/entity/TargetChamberPortBE.java +++ b/src/main/java/igentuman/nc/block/target_chamber/entity/TargetChamberPortBE.java @@ -1,5 +1,6 @@ package igentuman.nc.block.target_chamber.entity; +import igentuman.api.platform.NCLevels; import igentuman.api.nc.multiblock.MultiblockAttachable; import igentuman.nc.NuclearCraft; import igentuman.nc.block.MultiblockPortBE; @@ -17,22 +18,12 @@ import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.properties.BlockStateProperties; -import net.minecraftforge.common.capabilities.Capability; -import net.minecraftforge.common.capabilities.ForgeCapabilities; -import net.minecraftforge.common.util.LazyOptional; -import net.minecraftforge.fluids.capability.templates.FluidTank; +import net.neoforged.neoforge.fluids.capability.templates.FluidTank; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; import java.util.Objects; import static igentuman.nc.NuclearCraft.currentTick; -import static igentuman.nc.compat.gregtech.GTUtils.getGTEnergy; -import static igentuman.nc.compat.gregtech.GTUtils.isOnlyGTCEUCapEnabled; -import static igentuman.nc.compat.oc2.TargetChamberDevice.DEVICE_CAPABILITY; import static igentuman.nc.multiblock.particle_chamber.TargetChamberRegistration.TARGET_CHAMBER_BE; -import static igentuman.nc.util.ModUtil.*; -import static net.minecraftforge.common.capabilities.ForgeCapabilities.ENERGY; public class TargetChamberPortBE extends MultiblockPortBE { @@ -162,41 +153,6 @@ protected FluidCapabilityHandler fluidHandler() return controller().contentHandler().fluidHandler; } - @Nonnull - @Override - public LazyOptional getCapability(@Nonnull Capability cap, @Nullable Direction side) { - if (controller() == null) return super.getCapability(cap, side); - if (cap == ForgeCapabilities.ITEM_HANDLER) { - return controller().getCapability(cap, side); - } - if(isGtLoaded()) { - if (cap == com.gregtechceu.gtceu.api.capability.forge.GTCapability.CAPABILITY_ENERGY_CONTAINER) { - if (isGTEUCapEnabled()) { - return getGTEnergy(controller(), side).cast(); - } - } - } - if (cap == ENERGY) { - if(!isOnlyGTCEUCapEnabled()) { - return controller().getEnergy().cast(); - } else { - return LazyOptional.empty(); - } - } - - if (isOC2Loaded()) { - if (cap == DEVICE_CAPABILITY) { - return controller().getOCDevice(cap, side); - } - } - - if (isCcLoaded()) { - if (cap == dan200.computercraft.shared.Capabilities.CAPABILITY_PERIPHERAL) { - return controller().getPeripheral(cap, side); - } - } - return super.getCapability(cap, side); - } @Override public boolean canInvalidateCache() { @@ -220,7 +176,7 @@ public void setMultiblock(AbstractMultiblock multiblock) { public TargetChamberControllerBE controller() { if (NuclearCraft.instance.isNcBeStopped || (!getLevel().isClientSide() && getLevel().getServer() != null && !getLevel().getServer().isRunning())) return null; if (controller == null && getLevel().isClientSide && controllerPos != null) { - BlockEntity be = getLevel().getExistingBlockEntity(controllerPos); + BlockEntity be = NCLevels.getExistingBlockEntity(getLevel(), controllerPos); if (be instanceof TargetChamberControllerBE controllerBe) { controller = controllerBe; return controller; @@ -234,7 +190,7 @@ public TargetChamberControllerBE controller() { } } catch (NullPointerException e) { if (controllerPos != null) { - BlockEntity be = getLevel().getExistingBlockEntity(controllerPos); + BlockEntity be = NCLevels.getExistingBlockEntity(getLevel(), controllerPos); if (be instanceof TargetChamberControllerBE controllerBe) { controller = controllerBe; } diff --git a/src/main/java/igentuman/nc/block/turbine/TurbineBearingBlock.java b/src/main/java/igentuman/nc/block/turbine/TurbineBearingBlock.java index 8f27ed282..a621979fc 100644 --- a/src/main/java/igentuman/nc/block/turbine/TurbineBearingBlock.java +++ b/src/main/java/igentuman/nc/block/turbine/TurbineBearingBlock.java @@ -4,9 +4,9 @@ import igentuman.nc.util.TextUtils; import net.minecraft.ChatFormatting; import net.minecraft.network.chat.Component; +import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.TooltipFlag; -import net.minecraft.world.level.BlockGetter; import java.util.List; @@ -19,7 +19,7 @@ public TurbineBearingBlock(Properties pProperties) { } @Override - public void appendHoverText(ItemStack pStack, @javax.annotation.Nullable BlockGetter pLevel, List list, TooltipFlag pFlag) { + public void appendHoverText(ItemStack pStack, Item.TooltipContext pContext, List list, TooltipFlag pFlag) { list.add(TextUtils.applyFormat(__("tooltip.nc.bearing.desc"), ChatFormatting.BLUE)); } } diff --git a/src/main/java/igentuman/nc/block/turbine/TurbineBladeBlock.java b/src/main/java/igentuman/nc/block/turbine/TurbineBladeBlock.java index 4f18d1600..d03148604 100644 --- a/src/main/java/igentuman/nc/block/turbine/TurbineBladeBlock.java +++ b/src/main/java/igentuman/nc/block/turbine/TurbineBladeBlock.java @@ -1,5 +1,8 @@ package igentuman.nc.block.turbine; +import igentuman.api.platform.NCBlockProperties; +import igentuman.api.platform.NCLevels; +import igentuman.api.platform.NCNames; import igentuman.nc.block.turbine.entity.TurbineBE; import igentuman.nc.block.turbine.entity.TurbineBladeBE; import igentuman.nc.multiblock.turbine.BladeDef; @@ -17,6 +20,7 @@ import net.minecraft.world.level.Level; import net.minecraft.world.level.LevelAccessor; import net.minecraft.world.level.LevelReader; +import com.mojang.serialization.MapCodec; import net.minecraft.world.level.block.*; import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.entity.BlockEntityTicker; @@ -42,7 +46,12 @@ public class TurbineBladeBlock extends DirectionalBlock implements EntityBlock { public static final BooleanProperty HIDDEN = BlockStateProperties.POWERED; public TurbineBladeBlock(Properties pProperties) { - super(Properties.copy(IRON_BARS).noCollission().forceSolidOff()); + super(NCBlockProperties.copy(IRON_BARS).noCollission().forceSolidOff()); + } + + @Override + protected MapCodec codec() { + return simpleCodec(TurbineBladeBlock::new); } @Override @@ -68,8 +77,9 @@ public VoxelShape getCollisionShape(BlockState pState, BlockGetter pLevel, Block private void initParams() { Item item = Item.byBlock(this); - if(item.toString().isEmpty()) return; - type = item.toString().replaceAll("turbine_", ""); + String name = NCNames.of(item); + if(name.isEmpty()) return; + type = name.replaceAll("turbine_", ""); def = TurbineRegistration.blades().get(type); efficiency = def.getEfficiency(); expansion = def.getExpansion(); @@ -152,7 +162,7 @@ protected void createBlockStateDefinition(StateDefinition.Builder BlockEntityTicker getTicker(Level level, @NotN @Override public void onNeighborChange(BlockState state, LevelReader level, BlockPos pos, BlockPos neighbor){ - ((TurbineBE) Objects.requireNonNull(level.getExistingBlockEntity(pos))).onNeighborChange(state, pos, neighbor); + ((TurbineBE) Objects.requireNonNull(NCLevels.getExistingBlockEntity(level, pos))).onNeighborChange(state, pos, neighbor); } @Override - public void appendHoverText(@NotNull ItemStack pStack, @javax.annotation.Nullable BlockGetter pLevel, List list, TooltipFlag pFlag) { + public void appendHoverText(@NotNull ItemStack pStack, Item.TooltipContext pContext, List list, TooltipFlag pFlag) { initParams(); if(DESCRIPTIONS_SHOW) { diff --git a/src/main/java/igentuman/nc/block/turbine/TurbineBlock.java b/src/main/java/igentuman/nc/block/turbine/TurbineBlock.java index ab9bd53bd..3807d5c0c 100644 --- a/src/main/java/igentuman/nc/block/turbine/TurbineBlock.java +++ b/src/main/java/igentuman/nc/block/turbine/TurbineBlock.java @@ -3,9 +3,9 @@ import igentuman.nc.block.MultiblockBlock; import net.minecraft.ChatFormatting; import net.minecraft.network.chat.Component; +import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.TooltipFlag; -import net.minecraft.world.level.BlockGetter; import java.util.List; @@ -18,7 +18,7 @@ public TurbineBlock(Properties pProperties) { } @Override - public void appendHoverText(ItemStack pStack, @javax.annotation.Nullable BlockGetter pLevel, List list, TooltipFlag pFlag) { + public void appendHoverText(ItemStack pStack, Item.TooltipContext pContext, List list, TooltipFlag pFlag) { list.add(__("multiblock.build_in_chunk.advise").withStyle(ChatFormatting.GREEN)); } } diff --git a/src/main/java/igentuman/nc/block/turbine/TurbineCoilBlock.java b/src/main/java/igentuman/nc/block/turbine/TurbineCoilBlock.java index 959ae4b09..5a7916381 100644 --- a/src/main/java/igentuman/nc/block/turbine/TurbineCoilBlock.java +++ b/src/main/java/igentuman/nc/block/turbine/TurbineCoilBlock.java @@ -11,7 +11,6 @@ import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.TooltipFlag; -import net.minecraft.world.level.BlockGetter; import net.minecraft.world.level.Level; import net.minecraft.world.level.LevelReader; import net.minecraft.world.level.block.Block; @@ -21,7 +20,8 @@ import net.minecraft.world.level.block.entity.BlockEntityTicker; import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraft.world.level.block.state.BlockState; -import net.minecraftforge.registries.ForgeRegistries; +import net.minecraft.core.registries.BuiltInRegistries; +import net.neoforged.neoforge.registries.NeoForgeRegistries; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -52,8 +52,11 @@ public TurbineCoilBlock(Properties pProperties) { private void initParams() { Item item = Item.byBlock(this); if(item.toString().isEmpty()) return; - type = item.toString().replaceAll("_coil|turbine_", ""); + String name = item.toString(); + if(name.contains(":")) name = name.substring(name.indexOf(':') + 1); + type = name.replaceAll("_coil|turbine_", ""); def = TurbineRegistration.coils.get(type); + if(def == null) return; efficiency = def.getEfficiency(); } @@ -79,7 +82,7 @@ private List getBlockNames(String rawLine) { String id = code; if(!id.contains(":")) { id = MODID+":"+id; - Block block = ForgeRegistries.BLOCKS.getValue(rlFromString(id)); + Block block = BuiltInRegistries.BLOCK.get(rlFromString(id)); names.add(block.getName().getString()); } else { names.add(convertToName(id.split(":")[1])); @@ -165,8 +168,9 @@ public void onRemove(BlockState state, Level level, BlockPos pos, BlockState new @Override - public void appendHoverText(ItemStack pStack, @javax.annotation.Nullable BlockGetter pLevel, List list, TooltipFlag pFlag) { + public void appendHoverText(ItemStack pStack, Item.TooltipContext pContext, List list, TooltipFlag pFlag) { initParams(); + if(def == null) return; if(DESCRIPTIONS_SHOW) { list.add(TextUtils.applyFormat(getPlacementRule(), ChatFormatting.AQUA)); list.add(TextUtils.applyFormat( diff --git a/src/main/java/igentuman/nc/block/turbine/TurbineControllerBlock.java b/src/main/java/igentuman/nc/block/turbine/TurbineControllerBlock.java index 3846b38c7..7d03a4ca6 100644 --- a/src/main/java/igentuman/nc/block/turbine/TurbineControllerBlock.java +++ b/src/main/java/igentuman/nc/block/turbine/TurbineControllerBlock.java @@ -1,5 +1,7 @@ package igentuman.nc.block.turbine; +import igentuman.api.platform.NCItemStacks; +import igentuman.api.platform.NCLevels; import igentuman.nc.block.MultiblockControllerBlock; import igentuman.nc.block.turbine.entity.TurbineControllerBE; import igentuman.nc.compat.gregtech.GTUtils; @@ -11,15 +13,14 @@ import net.minecraft.core.Direction; import net.minecraft.network.chat.Component; import net.minecraft.server.level.ServerPlayer; -import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResult; import net.minecraft.world.MenuProvider; import net.minecraft.world.entity.player.Inventory; import net.minecraft.world.entity.player.Player; import net.minecraft.world.inventory.AbstractContainerMenu; +import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.TooltipFlag; -import net.minecraft.world.level.BlockGetter; import net.minecraft.world.level.Level; import net.minecraft.world.level.LevelReader; import net.minecraft.world.level.block.EntityBlock; @@ -29,7 +30,7 @@ import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.phys.BlockHitResult; -import net.minecraftforge.network.NetworkHooks; + import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -68,10 +69,10 @@ public BlockEntity newBlockEntity(@NotNull BlockPos pPos, @NotNull BlockState pS } @Override - public InteractionResult use(@NotNull BlockState state, Level level, @NotNull BlockPos pos, @NotNull Player player, InteractionHand hand, BlockHitResult result) { + protected InteractionResult useWithoutItem(BlockState state, Level level, BlockPos pos, Player player, BlockHitResult result) { if (!level.isClientSide()) { - BlockEntity be = level.getExistingBlockEntity(pos); + BlockEntity be = NCLevels.getExistingBlockEntity(level, pos); if (be instanceof TurbineControllerBE) { MenuProvider containerProvider = new MenuProvider() { @@ -85,7 +86,7 @@ public AbstractContainerMenu createMenu(int windowId, @NotNull Inventory playerI return new TurbineControllerContainer(windowId, pos, playerInventory); } }; - NetworkHooks.openScreen((ServerPlayer) player, containerProvider, be.getBlockPos()); + ((ServerPlayer) player).openMenu(containerProvider, be.getBlockPos()); } } return InteractionResult.SUCCESS; @@ -110,7 +111,7 @@ public BlockEntityTicker getTicker(Level level, @NotN } @Override - public void appendHoverText(ItemStack pStack, @javax.annotation.Nullable BlockGetter pLevel, List list, TooltipFlag pFlag) { + public void appendHoverText(ItemStack pStack, Item.TooltipContext pContext, List list, TooltipFlag pFlag) { if(isGtLoaded() && isGTEUCapEnabled()) { list.add(__("tooltip.nc.energy_eu_tier", getTier(pStack)).withStyle(ChatFormatting.GOLD)); } @@ -144,6 +145,6 @@ public void onRemove(BlockState state, Level level, BlockPos pos, BlockState new } private CommonConfig.GTCEUCompatibilityConfig.GTCEUTier getTier(ItemStack pStack) { - return CommonConfig.GTCEUCompatibilityConfig.GTCEUTier.byId(GTCEU_CONFIG.TURBINE_ENERGY_TIER.get().ordinal()+pStack.getOrCreateTag().getInt("upgrade_tier")); + return CommonConfig.GTCEUCompatibilityConfig.GTCEUTier.byId(GTCEU_CONFIG.TURBINE_ENERGY_TIER.get().ordinal()+NCItemStacks.getInt(pStack, "upgrade_tier")); } } diff --git a/src/main/java/igentuman/nc/block/turbine/TurbineDummyBladeBlock.java b/src/main/java/igentuman/nc/block/turbine/TurbineDummyBladeBlock.java index 0a03111cb..cd94ed4b3 100644 --- a/src/main/java/igentuman/nc/block/turbine/TurbineDummyBladeBlock.java +++ b/src/main/java/igentuman/nc/block/turbine/TurbineDummyBladeBlock.java @@ -1,7 +1,9 @@ package igentuman.nc.block.turbine; +import igentuman.api.platform.NCBlockProperties; import net.minecraft.core.Direction; import net.minecraft.world.item.context.BlockPlaceContext; +import com.mojang.serialization.MapCodec; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.DirectionalBlock; import net.minecraft.world.level.block.state.BlockState; @@ -12,13 +14,18 @@ public class TurbineDummyBladeBlock extends DirectionalBlock { public TurbineDummyBladeBlock(Properties pProperties) { - super(Properties.copy(IRON_BARS).noCollission().forceSolidOff()); + super(NCBlockProperties.copy(IRON_BARS).noCollission().forceSolidOff()); this.registerDefaultState( this.stateDefinition.any() .setValue(FACING, Direction.NORTH) ); } + @Override + protected MapCodec codec() { + return simpleCodec(TurbineDummyBladeBlock::new); + } + @Override public BlockState getStateForPlacement(BlockPlaceContext context) { return this.defaultBlockState().setValue(FACING, context.getHorizontalDirection().getOpposite()); diff --git a/src/main/java/igentuman/nc/block/turbine/TurbinePortBlock.java b/src/main/java/igentuman/nc/block/turbine/TurbinePortBlock.java index 6a5a1c0f8..c90e4f9af 100644 --- a/src/main/java/igentuman/nc/block/turbine/TurbinePortBlock.java +++ b/src/main/java/igentuman/nc/block/turbine/TurbinePortBlock.java @@ -8,18 +8,18 @@ import net.minecraft.core.Direction; import net.minecraft.network.chat.Component; import net.minecraft.server.level.ServerPlayer; -import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResult; import net.minecraft.world.MenuProvider; import net.minecraft.world.entity.player.Inventory; import net.minecraft.world.entity.player.Player; import net.minecraft.world.inventory.AbstractContainerMenu; +import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.TooltipFlag; import net.minecraft.world.item.context.BlockPlaceContext; -import net.minecraft.world.level.BlockGetter; import net.minecraft.world.level.Level; import net.minecraft.world.level.LevelReader; +import com.mojang.serialization.MapCodec; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.EntityBlock; import net.minecraft.world.level.block.HorizontalDirectionalBlock; @@ -33,7 +33,7 @@ import net.minecraft.world.level.block.state.properties.BooleanProperty; import net.minecraft.world.level.block.state.properties.DirectionProperty; import net.minecraft.world.phys.BlockHitResult; -import net.minecraftforge.network.NetworkHooks; + import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -63,6 +63,12 @@ public TurbinePortBlock(Properties pProperties) { .setValue(POWERED, false) ); } + + @Override + protected MapCodec codec() { + return simpleCodec(TurbinePortBlock::new); + } + @Override public BlockState getStateForPlacement(BlockPlaceContext context) { return this.defaultBlockState().setValue(FACING, context.getHorizontalDirection().getOpposite()); @@ -81,7 +87,7 @@ public BlockEntity newBlockEntity(@NotNull BlockPos pPos, @NotNull BlockState pS } @Override - public InteractionResult use(@NotNull BlockState state, Level level, @NotNull BlockPos pos, @NotNull Player player, InteractionHand hand, BlockHitResult result) { + protected InteractionResult useWithoutItem(BlockState state, Level level, BlockPos pos, Player player, BlockHitResult result) { if (!level.isClientSide()) { BlockEntity be = level.getBlockEntity(pos); @@ -98,7 +104,7 @@ public AbstractContainerMenu createMenu(int windowId, @NotNull Inventory playerI return new TurbinePortContainer(windowId, pos, playerInventory); } }; - NetworkHooks.openScreen((ServerPlayer) player, containerProvider, be.getBlockPos()); + ((ServerPlayer) player).openMenu(containerProvider, be.getBlockPos()); } } return InteractionResult.SUCCESS; @@ -142,7 +148,7 @@ public void onRemove(BlockState state, Level level, BlockPos pos, BlockState new } @Override - public void appendHoverText(ItemStack pStack, @javax.annotation.Nullable BlockGetter pLevel, List list, TooltipFlag pFlag) { + public void appendHoverText(ItemStack pStack, Item.TooltipContext pContext, List list, TooltipFlag pFlag) { if(isGtLoaded() && isGTEUCapEnabled()) { list.add(__("tooltip.nc.energy_eu_tier.depends_on_controller").withStyle(ChatFormatting.GOLD)); } diff --git a/src/main/java/igentuman/nc/block/turbine/TurbineRotorBlock.java b/src/main/java/igentuman/nc/block/turbine/TurbineRotorBlock.java index 0e0f5ffe1..fd019b1ce 100644 --- a/src/main/java/igentuman/nc/block/turbine/TurbineRotorBlock.java +++ b/src/main/java/igentuman/nc/block/turbine/TurbineRotorBlock.java @@ -8,12 +8,14 @@ import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.network.chat.Component; +import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.TooltipFlag; import net.minecraft.world.item.context.BlockPlaceContext; import net.minecraft.world.level.BlockGetter; import net.minecraft.world.level.Level; import net.minecraft.world.level.LevelReader; +import com.mojang.serialization.MapCodec; import net.minecraft.world.level.block.*; import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.entity.BlockEntityTicker; @@ -24,7 +26,8 @@ import net.minecraft.world.level.block.state.properties.BooleanProperty; import net.minecraft.world.phys.shapes.CollisionContext; import net.minecraft.world.phys.shapes.VoxelShape; -import net.minecraftforge.registries.ForgeRegistries; +import net.minecraft.core.registries.BuiltInRegistries; +import net.neoforged.neoforge.registries.NeoForgeRegistries; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -38,6 +41,12 @@ public class TurbineRotorBlock extends DirectionalBlock implements EntityBlock { public TurbineRotorBlock(Properties pProperties) { super(pProperties.sound(SoundType.METAL).noOcclusion()); } + + @Override + protected MapCodec codec() { + return simpleCodec(TurbineRotorBlock::new); + } + public static final BooleanProperty ACTIVE = BlockStateProperties.POWERED; @Override @@ -84,7 +93,7 @@ public boolean skipRendering(@NotNull BlockState state, @NotNull BlockState adja private String codeID() { - return ForgeRegistries.BLOCKS.getKey(this).getPath(); + return BuiltInRegistries.BLOCK.getKey(this).getPath(); } @Nullable @@ -132,7 +141,7 @@ public void onRemove(BlockState state, Level level, BlockPos pos, BlockState new } @Override - public void appendHoverText(ItemStack pStack, @javax.annotation.Nullable BlockGetter pLevel, List list, TooltipFlag pFlag) { + public void appendHoverText(ItemStack pStack, Item.TooltipContext pContext, List list, TooltipFlag pFlag) { list.add(TextUtils.applyFormat(__("tooltip.nc.rotor_shaft.desc"), ChatFormatting.BLUE)); } } diff --git a/src/main/java/igentuman/nc/block/turbine/entity/TurbineBladeBE.java b/src/main/java/igentuman/nc/block/turbine/entity/TurbineBladeBE.java index a2895bc18..1330a8c18 100644 --- a/src/main/java/igentuman/nc/block/turbine/entity/TurbineBladeBE.java +++ b/src/main/java/igentuman/nc/block/turbine/entity/TurbineBladeBE.java @@ -1,5 +1,6 @@ package igentuman.nc.block.turbine.entity; +import igentuman.api.platform.NCLevels; import igentuman.nc.NuclearCraft; import igentuman.nc.block.turbine.TurbineBladeBlock; import igentuman.nc.multiblock.turbine.BladeDef; @@ -42,7 +43,9 @@ private BladeDef def() { Item item = getBlockState().getBlock().asItem(); if(item.equals(AIR)) return null; if(def == null) { - setBladeDef(TurbineRegistration.blades().get(item.toString().replaceAll("turbine_", ""))); + String name = item.toString(); + if(name.contains(":")) name = name.substring(name.indexOf(':') + 1); + setBladeDef(TurbineRegistration.blades().get(name.replaceAll("turbine_", ""))); } return def; } @@ -56,7 +59,7 @@ public float getFlow() { } public boolean isValid() { - BlockEntity be = getLevel().getExistingBlockEntity(getBlockPos().relative(getFacing())); + BlockEntity be = NCLevels.getExistingBlockEntity(getLevel(), getBlockPos().relative(getFacing())); if(be instanceof TurbineRotorBE rotor) { return rotor.connectedToBearing; } diff --git a/src/main/java/igentuman/nc/block/turbine/entity/TurbineCoilBE.java b/src/main/java/igentuman/nc/block/turbine/entity/TurbineCoilBE.java index eee92471b..6bfc21062 100644 --- a/src/main/java/igentuman/nc/block/turbine/entity/TurbineCoilBE.java +++ b/src/main/java/igentuman/nc/block/turbine/entity/TurbineCoilBE.java @@ -1,5 +1,6 @@ package igentuman.nc.block.turbine.entity; +import igentuman.api.platform.NCLevels; import igentuman.nc.block.turbine.TurbineBearingBlock; import igentuman.nc.multiblock.turbine.CoilDef; import igentuman.nc.multiblock.turbine.TurbineRegistration; @@ -44,7 +45,9 @@ private CoilDef def() { Item item = getBlockState().getBlock().asItem(); if(item.equals(AIR)) return null; if(def == null) { - setCoilDef(TurbineRegistration.coils().get(item.toString().replaceAll("turbine_|_coil", ""))); + String name = item.toString(); + if(name.contains(":")) name = name.substring(name.indexOf(':') + 1); + setCoilDef(TurbineRegistration.coils().get(name.replaceAll("turbine_|_coil", ""))); } return def; } @@ -74,7 +77,7 @@ public void validatePlacement() { if(getMultiblock() != null) { if (!isValid) { for (Direction dir : Direction.values()) { - BlockEntity be = Objects.requireNonNull(getLevel()).getExistingBlockEntity(getBlockPos().relative(dir)); + BlockEntity be = NCLevels.getExistingBlockEntity(Objects.requireNonNull(getLevel()), getBlockPos().relative(dir)); BlockState bs = getLevel().getBlockState(getBlockPos().relative(dir)); if (bs.getBlock() instanceof TurbineBearingBlock) { hasBearingConnection = getMultiblock().bearingPositions.contains(getBlockPos().relative(dir)); diff --git a/src/main/java/igentuman/nc/block/turbine/entity/TurbineControllerBE.java b/src/main/java/igentuman/nc/block/turbine/entity/TurbineControllerBE.java index 7fc0cd155..d1cf58242 100644 --- a/src/main/java/igentuman/nc/block/turbine/entity/TurbineControllerBE.java +++ b/src/main/java/igentuman/nc/block/turbine/entity/TurbineControllerBE.java @@ -21,15 +21,10 @@ import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.properties.BlockStateProperties; -import net.minecraftforge.common.capabilities.Capability; -import net.minecraftforge.common.capabilities.ForgeCapabilities; -import net.minecraftforge.common.util.LazyOptional; -import net.minecraftforge.energy.IEnergyStorage; -import net.minecraftforge.fluids.FluidStack; +import net.neoforged.neoforge.energy.IEnergyStorage; +import net.neoforged.neoforge.fluids.FluidStack; import org.jetbrains.annotations.NotNull; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; import java.util.ArrayList; import java.util.HashMap; import java.util.List; @@ -47,14 +42,13 @@ import static igentuman.nc.util.ModUtil.isCcLoaded; import static net.minecraft.core.particles.ParticleTypes.CLOUD; import static net.minecraft.world.level.block.Blocks.AIR; -import static net.minecraftforge.fluids.capability.IFluidHandler.FluidAction.EXECUTE; +import static net.neoforged.neoforge.fluids.capability.IFluidHandler.FluidAction.EXECUTE; public class TurbineControllerBE extends MultiblockControllerBE { public static String NAME = "turbine_controller"; public final SidedContentHandler contentHandler; public final CustomEnergyStorage energyStorage; - protected final LazyOptional energy; @NBTField public BlockPos bearingPos = BlockPos.ZERO; @@ -105,7 +99,6 @@ public TurbineControllerBE(BlockPos pPos, BlockState pBlockState) { .setOutputEnergyTier(getBaseGTEnergyTier()) .setInputAmperage(0) .setOutputAmperage(16); - energy = LazyOptional.of(() -> energyStorage); } @Override @@ -128,10 +121,6 @@ public CustomEnergyStorage energyStorage() { return energyStorage; } - @Override - public LazyOptional getEnergy() { - return energy; - } private CustomEnergyStorage createEnergy() { return new CustomEnergyStorage(100000000, 0, 100000000) { @@ -172,31 +161,7 @@ public Recipe getRecipe() { } - private LazyOptional peripheralCap; - - public LazyOptional getPeripheral(@Nonnull Capability cap, @Nullable Direction side) { - if(peripheralCap == null) { - peripheralCap = LazyOptional.of(() -> new TurbinePeripheral(this)); - } - return peripheralCap.cast(); - } - @Nonnull - @Override - public LazyOptional getCapability(@Nonnull Capability cap, @Nullable Direction side) { - if (cap == ForgeCapabilities.FLUID_HANDLER) { - return contentHandler().getFluidCapability(side); - } - if (cap == ForgeCapabilities.ENERGY) { - return energy.cast(); - } - if(isCcLoaded()) { - if(cap == dan200.computercraft.shared.Capabilities.CAPABILITY_PERIPHERAL) { - return getPeripheral(cap, side); - } - } - return super.getCapability(cap, side); - } protected void playRunningSound() { if(isRemoved() || (currentSound != null && !currentSound.getLocation().equals(TURBINE.get().getLocation()))) { @@ -540,8 +505,8 @@ public void refresh() { public static class Recipe extends NcRecipe { - public Recipe(ResourceLocation id, ItemStackIngredient[] input, ItemStackIngredient[] output, FluidStackIngredient[] inputFluids, FluidStackIngredient[] outputFluids, double timeModifier, double powerModifier, double heatModifier, double rarity) { - super(id, input, output, inputFluids, outputFluids, timeModifier, powerModifier, heatModifier, rarity); + public Recipe(String codeId, ItemStackIngredient[] input, ItemStackIngredient[] output, FluidStackIngredient[] inputFluids, FluidStackIngredient[] outputFluids, double timeModifier, double powerModifier, double heatModifier, double rarity) { + super(codeId, input, output, inputFluids, outputFluids, timeModifier, powerModifier, heatModifier, rarity); CATALYSTS.put(TurbineControllerBE.NAME, List.of(getToastSymbol())); } diff --git a/src/main/java/igentuman/nc/block/turbine/entity/TurbinePortBE.java b/src/main/java/igentuman/nc/block/turbine/entity/TurbinePortBE.java index 7bc64b4ee..3793f343d 100644 --- a/src/main/java/igentuman/nc/block/turbine/entity/TurbinePortBE.java +++ b/src/main/java/igentuman/nc/block/turbine/entity/TurbinePortBE.java @@ -1,5 +1,6 @@ package igentuman.nc.block.turbine.entity; +import igentuman.api.platform.NCLevels; import igentuman.nc.NuclearCraft; import igentuman.nc.block.MultiblockPortBE; import igentuman.nc.handler.sided.capability.FluidCapabilityHandler; @@ -10,25 +11,24 @@ import igentuman.nc.util.annotation.NBTField; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; +import net.minecraft.core.HolderLookup; import net.minecraft.nbt.CompoundTag; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.properties.BlockStateProperties; -import net.minecraftforge.common.capabilities.Capability; -import net.minecraftforge.common.capabilities.ForgeCapabilities; -import net.minecraftforge.common.util.LazyOptional; -import net.minecraftforge.fluids.capability.templates.FluidTank; +import net.neoforged.neoforge.capabilities.Capabilities; +import net.neoforged.neoforge.energy.IEnergyStorage; +import net.neoforged.neoforge.fluids.capability.templates.FluidTank; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; import java.util.Objects; import static igentuman.nc.NuclearCraft.currentTick; -import static igentuman.nc.compat.gregtech.GTUtils.*; +import static igentuman.nc.block.entity.NuclearCraftBE.isGTEUCapEnabled; +import static igentuman.nc.compat.gregtech.GTUtils.isOnlyGTCEUCapEnabled; +import static igentuman.nc.compat.gregtech.GTUtils.transferEU; import static igentuman.nc.util.ModUtil.isCcLoaded; import static igentuman.nc.util.ModUtil.isGtLoaded; -import static net.minecraftforge.common.capabilities.ForgeCapabilities.ENERGY; public class TurbinePortBE extends MultiblockPortBE { public static String NAME = "turbine_port"; @@ -125,7 +125,7 @@ protected void transferEnergyToSide(Direction direction) { return; // No energy to transfer } int wasEnergy = getEnergyStored(); - BlockEntity be = level.getExistingBlockEntity(worldPosition.relative(direction)); + BlockEntity be = NCLevels.getExistingBlockEntity(level, worldPosition.relative(direction)); if (be == null || be instanceof TurbinePortBE || be instanceof TurbineControllerBE) { return; } @@ -143,17 +143,12 @@ protected void transferEnergyToSide(Direction direction) { return; } int canExtract = Math.min(controller().energyStorage().getMaxExtract() - extracted, getEnergyStored()); - be.getCapability(ForgeCapabilities.ENERGY, direction.getOpposite()).map(handler -> { - if (handler.canReceive()) { - int received = handler.receiveEnergy(canExtract, false); - controller().energyStorage().consumeEnergy(received); - controller().setChanged(); - return getEnergyStored() > 0; - } else { - return true; - } - } - ); + IEnergyStorage handler = level.getCapability(Capabilities.EnergyStorage.BLOCK, worldPosition.relative(direction), direction.getOpposite()); + if (handler != null && handler.canReceive()) { + int received = handler.receiveEnergy(canExtract, false); + controller().energyStorage().consumeEnergy(received); + controller().setChanged(); + } } private void updateAnalogSignal() { if(controller() == null) { @@ -186,35 +181,6 @@ protected FluidCapabilityHandler fluidHandler() return controller().contentHandler().fluidHandler; } - @Nonnull - @Override - public LazyOptional getCapability(@Nonnull Capability cap, @Nullable Direction side) { - if(controller() == null) return super.getCapability(cap, side); - - if (cap == ForgeCapabilities.FLUID_HANDLER) { - return controller().getCapability(cap, side); - } - if(isGtLoaded()) { - if (cap == com.gregtechceu.gtceu.api.capability.forge.GTCapability.CAPABILITY_ENERGY_CONTAINER) { - if (isGTEUCapEnabled()) { - return getGTEnergy(controller(), side).cast(); - } - } - } - if (cap == ENERGY) { - if(!isOnlyGTCEUCapEnabled()) { - return controller().getEnergy().cast(); - } else { - return LazyOptional.empty(); - } - } - if(isCcLoaded()) { - if(cap == dan200.computercraft.shared.Capabilities.CAPABILITY_PERIPHERAL) { - return controller().getPeripheral(cap, side); - } - } - return super.getCapability(cap, side); - } @Override @@ -226,7 +192,7 @@ public boolean canInvalidateCache() { public TurbineControllerBE controller() { if(NuclearCraft.instance.isNcBeStopped || (!getLevel().isClientSide() && getLevel().getServer() != null && !getLevel().getServer().isRunning())) return null; if(getLevel().isClientSide && controller == null && controllerPos != null) { - BlockEntity be = getLevel().getExistingBlockEntity(controllerPos); + BlockEntity be = NCLevels.getExistingBlockEntity(getLevel(), controllerPos); if(be instanceof TurbineControllerBE controllerBE) { controller = controllerBE; return controller; @@ -237,30 +203,30 @@ public TurbineControllerBE controller() { return getMultiblock().controller().controllerBE(); } catch (NullPointerException e) { if(controllerPos != null) { - return (TurbineControllerBE) getLevel().getExistingBlockEntity(controllerPos); + return (TurbineControllerBE) NCLevels.getExistingBlockEntity(getLevel(), controllerPos); } return null; } } @Override - public void load(CompoundTag tag) { + protected void loadAdditional(CompoundTag tag, HolderLookup.Provider registries) { if (tag.contains("Info")) { CompoundTag infoTag = tag.getCompound("Info"); readTagData(infoTag); } - super.load(tag); + super.loadAdditional(tag, registries); } @Override - public void saveAdditional(CompoundTag tag) { + protected void saveAdditional(CompoundTag tag, HolderLookup.Provider registries) { CompoundTag infoTag = new CompoundTag(); saveFullTagData(infoTag); tag.put("Info", infoTag); } @Override - public void loadClientData(CompoundTag tag) { + public void loadClientData(CompoundTag tag, HolderLookup.Provider registries) { if (tag.contains("Info")) { CompoundTag infoTag = tag.getCompound("Info"); readTagData(infoTag); @@ -268,7 +234,7 @@ public void loadClientData(CompoundTag tag) { } @Override - protected void saveClientData(CompoundTag tag) { + protected void saveClientData(CompoundTag tag, HolderLookup.Provider registries) { CompoundTag infoTag = new CompoundTag(); tag.put("Info", infoTag); saveFullTagData(infoTag); diff --git a/src/main/java/igentuman/nc/block/turbine/entity/TurbineRotorBE.java b/src/main/java/igentuman/nc/block/turbine/entity/TurbineRotorBE.java index 649604000..5bc341481 100644 --- a/src/main/java/igentuman/nc/block/turbine/entity/TurbineRotorBE.java +++ b/src/main/java/igentuman/nc/block/turbine/entity/TurbineRotorBE.java @@ -1,11 +1,13 @@ package igentuman.nc.block.turbine.entity; +import igentuman.api.platform.NCLevels; import igentuman.nc.block.turbine.TurbineBearingBlock; import igentuman.nc.block.turbine.TurbineRotorBlock; import igentuman.nc.multiblock.MultiblockHandler; import igentuman.nc.util.annotation.NBTField; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; +import net.minecraft.core.HolderLookup; import net.minecraft.nbt.CompoundTag; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.entity.BlockEntity; @@ -30,7 +32,7 @@ public void updateBearingConnection() { connectedToBearing = false; Direction facing = getBlockState().getValue(TurbineRotorBlock.FACING); for(Direction dir: List.of(facing, facing.getOpposite())) { - BlockEntity be = getLevel().getExistingBlockEntity(getBlockPos().relative(dir)); + BlockEntity be = NCLevels.getExistingBlockEntity(getLevel(), getBlockPos().relative(dir)); BlockState bs = getLevel().getBlockState(getBlockPos().relative(dir)); if(be instanceof TurbineRotorBE rotor) { connectedToBearing = rotor.hasBearingConnection(dir); @@ -44,12 +46,12 @@ public void updateBearingConnection() { } @Override - protected void saveClientData(CompoundTag tag) { + protected void saveClientData(CompoundTag tag, HolderLookup.Provider registries) { saveFullTagData(tag); } @Override - public void loadClientData(CompoundTag tag) { + public void loadClientData(CompoundTag tag, HolderLookup.Provider registries) { readTagData(tag); } @@ -79,7 +81,7 @@ private BlockPos getControllerPos() { private boolean hasBearingConnection(Direction dir) { if(connectedToBearing) return true; - BlockEntity be = getLevel().getExistingBlockEntity(getBlockPos().relative(dir)); + BlockEntity be = NCLevels.getExistingBlockEntity(getLevel(), getBlockPos().relative(dir)); BlockState bs = getLevel().getBlockState(getBlockPos().relative(dir)); if(be instanceof TurbineRotorBE rotor) { connectedToBearing = rotor.hasBearingConnection(dir); @@ -92,7 +94,7 @@ private boolean hasBearingConnection(Direction dir) { public TurbineControllerBE getController() { if(controllerPos == BlockPos.ZERO) return controller(); - BlockEntity be = getLevel().getExistingBlockEntity(controllerPos); + BlockEntity be = NCLevels.getExistingBlockEntity(getLevel(), controllerPos); if(be instanceof TurbineControllerBE controller) { return controller; } diff --git a/src/main/java/igentuman/nc/client/RuntimeFuelModelGenerator.java b/src/main/java/igentuman/nc/client/RuntimeFuelModelGenerator.java index 20b71719c..61847442c 100644 --- a/src/main/java/igentuman/nc/client/RuntimeFuelModelGenerator.java +++ b/src/main/java/igentuman/nc/client/RuntimeFuelModelGenerator.java @@ -5,9 +5,9 @@ import com.google.gson.JsonObject; import com.mojang.blaze3d.platform.NativeImage; import igentuman.nc.setup.registration.FissionFuel; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.api.distmarker.OnlyIn; -import net.minecraftforge.fml.loading.FMLPaths; +import net.neoforged.api.distmarker.Dist; +import net.neoforged.api.distmarker.OnlyIn; +import net.neoforged.fml.loading.FMLPaths; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -449,7 +449,8 @@ private static void createTextureReadme() { try { Path gameDir = FMLPaths.GAMEDIR.get(); Path readmePath = gameDir.resolve(TEXTURES_PATH).resolve("readme.txt"); - + Files.createDirectories(readmePath.getParent()); + StringBuilder content = new StringBuilder(); content.append("NuclearCraft Custom Fuel Textures\n"); content.append("=".repeat(50)).append("\n\n"); diff --git a/src/main/java/igentuman/nc/client/block/BatteryBlockBakedModel.java b/src/main/java/igentuman/nc/client/block/BatteryBlockBakedModel.java index feed551fa..e0995570e 100644 --- a/src/main/java/igentuman/nc/client/block/BatteryBlockBakedModel.java +++ b/src/main/java/igentuman/nc/client/block/BatteryBlockBakedModel.java @@ -14,8 +14,8 @@ import net.minecraft.core.Direction; import net.minecraft.util.RandomSource; import net.minecraft.world.level.block.state.BlockState; -import net.minecraftforge.client.model.IDynamicBakedModel; -import net.minecraftforge.client.model.data.ModelData; +import net.neoforged.neoforge.client.model.IDynamicBakedModel; +import net.neoforged.neoforge.client.model.data.ModelData; import org.jetbrains.annotations.NotNull; import javax.annotation.Nonnull; diff --git a/src/main/java/igentuman/nc/client/block/BatteryBlockItemDecorator.java b/src/main/java/igentuman/nc/client/block/BatteryBlockItemDecorator.java index aed144e6d..e65891ce4 100644 --- a/src/main/java/igentuman/nc/client/block/BatteryBlockItemDecorator.java +++ b/src/main/java/igentuman/nc/client/block/BatteryBlockItemDecorator.java @@ -4,7 +4,7 @@ import net.minecraft.client.gui.Font; import net.minecraft.client.gui.GuiGraphics; import net.minecraft.world.item.ItemStack; -import net.minecraftforge.client.IItemDecorator; +import net.neoforged.neoforge.client.IItemDecorator; public class BatteryBlockItemDecorator implements IItemDecorator { public static final BatteryBlockItemDecorator INSTANCE = new BatteryBlockItemDecorator(); diff --git a/src/main/java/igentuman/nc/client/block/BatteryBlockLoader.java b/src/main/java/igentuman/nc/client/block/BatteryBlockLoader.java index e2aa8f5d6..691956335 100644 --- a/src/main/java/igentuman/nc/client/block/BatteryBlockLoader.java +++ b/src/main/java/igentuman/nc/client/block/BatteryBlockLoader.java @@ -8,10 +8,10 @@ import net.minecraft.client.renderer.texture.TextureAtlasSprite; import net.minecraft.client.resources.model.*; import net.minecraft.resources.ResourceLocation; -import net.minecraftforge.client.ForgeHooksClient; -import net.minecraftforge.client.model.geometry.IGeometryBakingContext; -import net.minecraftforge.client.model.geometry.IGeometryLoader; -import net.minecraftforge.client.model.geometry.IUnbakedGeometry; +import net.neoforged.neoforge.client.ClientHooks; +import net.neoforged.neoforge.client.model.geometry.IGeometryBakingContext; +import net.neoforged.neoforge.client.model.geometry.IGeometryLoader; +import net.neoforged.neoforge.client.model.geometry.IUnbakedGeometry; import java.util.Collection; import java.util.List; @@ -31,15 +31,15 @@ public BatteryModelGeometry read(JsonObject jsonObject, JsonDeserializationConte String side = jsonObject.get("textures").getAsJsonObject().get("down").getAsString(); String up = jsonObject.get("textures").getAsJsonObject().get("up").getAsString(); - Material sideDefault = ForgeHooksClient.getBlockMaterial(rlFromString(side)); - Material sideIn = ForgeHooksClient.getBlockMaterial(rlFromString(side+ "_in")); - Material sideOut = ForgeHooksClient.getBlockMaterial(rlFromString(side+ "_out")); - Material sideNone = ForgeHooksClient.getBlockMaterial(rlFromString(side+ "_non")); + Material sideDefault = ClientHooks.getBlockMaterial(rlFromString(side)); + Material sideIn = ClientHooks.getBlockMaterial(rlFromString(side+ "_in")); + Material sideOut = ClientHooks.getBlockMaterial(rlFromString(side+ "_out")); + Material sideNone = ClientHooks.getBlockMaterial(rlFromString(side+ "_non")); - Material topDefault = ForgeHooksClient.getBlockMaterial(rlFromString(up)); - Material topIn = ForgeHooksClient.getBlockMaterial(rlFromString(up+ "_in")); - Material topOut = ForgeHooksClient.getBlockMaterial(rlFromString(up+ "_out")); - Material topNone = ForgeHooksClient.getBlockMaterial(rlFromString(up+ "_non")); + Material topDefault = ClientHooks.getBlockMaterial(rlFromString(up)); + Material topIn = ClientHooks.getBlockMaterial(rlFromString(up+ "_in")); + Material topOut = ClientHooks.getBlockMaterial(rlFromString(up+ "_out")); + Material topNone = ClientHooks.getBlockMaterial(rlFromString(up+ "_non")); return new BatteryModelGeometry(sideDefault, sideIn, sideOut, sideNone, topDefault, topIn, topOut, topNone); } @@ -67,7 +67,7 @@ public BatteryModelGeometry(Material side, Material sideIn, Material sideOut, Ma } @Override - public BakedModel bake(IGeometryBakingContext iGeometryBakingContext, ModelBaker modelBaker, Function function, ModelState modelState, ItemOverrides itemOverrides, ResourceLocation resourceLocation) { + public BakedModel bake(IGeometryBakingContext iGeometryBakingContext, ModelBaker modelBaker, Function function, ModelState modelState, ItemOverrides itemOverrides) { return new BatteryBlockBakedModel(modelState, function, itemOverrides, iGeometryBakingContext.getTransforms(), this); } } diff --git a/src/main/java/igentuman/nc/client/block/fusion/FusionCoreRenderer.java b/src/main/java/igentuman/nc/client/block/fusion/FusionCoreRenderer.java index fa1c7bcce..2f66f9c2d 100644 --- a/src/main/java/igentuman/nc/client/block/fusion/FusionCoreRenderer.java +++ b/src/main/java/igentuman/nc/client/block/fusion/FusionCoreRenderer.java @@ -44,7 +44,7 @@ public void render(BlockEntity pBlockEntity, float pPartialTick, PoseStack pPose ItemRenderer itemRenderer = Minecraft.getInstance().getItemRenderer(); ItemStack core = new ItemStack(blockstate.getBlock().asItem()); BakedModel center = blockRenderer.getBlockModel(blockstate.setValue(FusionCoreBlock.ACTIVE, true)); - pPoseStack.clear(); + pPoseStack.pushPose(); long time = Util.getMillis(); float step = -0.08f; @@ -65,7 +65,7 @@ public void render(BlockEntity pBlockEntity, float pPartialTick, PoseStack pPose pPoseStack.popPose(); BakedModel base = itemRenderer.getModel(core, pBlockEntity.getLevel(), null, 0); - pPoseStack.clear(); + pPoseStack.pushPose(); pPoseStack.translate(0.5, 1.35, 0.5); pPoseStack.scale(3.80F, 3.80F, 3.80F); diff --git a/src/main/java/igentuman/nc/client/block/kugelblitz/EXPLRenderer.java b/src/main/java/igentuman/nc/client/block/kugelblitz/EXPLRenderer.java index a096b3096..4fa961bbf 100644 --- a/src/main/java/igentuman/nc/client/block/kugelblitz/EXPLRenderer.java +++ b/src/main/java/igentuman/nc/client/block/kugelblitz/EXPLRenderer.java @@ -37,7 +37,6 @@ public void render(BlockEntity pBlockEntity, float pPartialTick, PoseStack pPose BlockState blockstate = pBlockEntity.getBlockState(); EXPLBE expl = (EXPLBE) pBlockEntity; BakedModel center = blockRenderer.getBlockModel(blockstate); - pPoseStack.clear(); pPoseStack.pushPose(); pPoseStack.translate(0.5D, 0.5D, 0.5D); diff --git a/src/main/java/igentuman/nc/client/block/turbine/TurbineRotorRenderer.java b/src/main/java/igentuman/nc/client/block/turbine/TurbineRotorRenderer.java index 39fe33516..69da64512 100644 --- a/src/main/java/igentuman/nc/client/block/turbine/TurbineRotorRenderer.java +++ b/src/main/java/igentuman/nc/client/block/turbine/TurbineRotorRenderer.java @@ -72,7 +72,6 @@ public void render(BlockEntity pBlockEntity, float pPartialTick, PoseStack pPose BakedModel center = blockRenderer.getBlockModel(blockstate.setValue(TurbineRotorBlock.ACTIVE, true)); - pPoseStack.clear(); pPoseStack.pushPose(); long time = Util.getMillis(); diff --git a/src/main/java/igentuman/nc/client/gui/FusionCoreScreen.java b/src/main/java/igentuman/nc/client/gui/FusionCoreScreen.java index ebc227555..9d41375ff 100644 --- a/src/main/java/igentuman/nc/client/gui/FusionCoreScreen.java +++ b/src/main/java/igentuman/nc/client/gui/FusionCoreScreen.java @@ -1,6 +1,5 @@ package igentuman.nc.client.gui; -import com.mojang.blaze3d.systems.RenderSystem; import igentuman.nc.client.gui.element.NCGuiElement; import igentuman.nc.client.gui.element.bar.VerticalBar; import igentuman.nc.client.gui.element.button.Button; @@ -16,7 +15,7 @@ import net.minecraft.network.chat.Component; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.entity.player.Inventory; -import net.minecraftforge.fluids.capability.templates.FluidTank; +import net.neoforged.neoforge.fluids.capability.templates.FluidTank; import org.jetbrains.annotations.NotNull; import java.util.ArrayList; @@ -106,7 +105,7 @@ private boolean isCasingValid() { @Override public void render(@NotNull GuiGraphics graphics, int mouseX, int mouseY, float partialTicks) { xCenter = getGuiLeft()-imageWidth/2; - this.renderBackground(graphics); + this.renderBackground(graphics, mouseX, mouseY, partialTicks); super.render(graphics, mouseX, mouseY, partialTicks); this.renderTooltip(graphics, mouseX, mouseY); } @@ -232,7 +231,6 @@ private String getValidationResultKey() { @Override protected void renderBg(@NotNull GuiGraphics graphics, float partialTicks, int mouseX, int mouseY) { - RenderSystem.setShaderTexture(0, GUI); updateRelativeCords(); graphics.blit(GUI, relX, relY, 0, 0, this.imageWidth, this.imageHeight); renderWidgets(graphics, partialTicks, mouseX, mouseY); diff --git a/src/main/java/igentuman/nc/client/gui/MultiblockAnalyzeReportScreen.java b/src/main/java/igentuman/nc/client/gui/MultiblockAnalyzeReportScreen.java index edd461097..e2c5fe39c 100644 --- a/src/main/java/igentuman/nc/client/gui/MultiblockAnalyzeReportScreen.java +++ b/src/main/java/igentuman/nc/client/gui/MultiblockAnalyzeReportScreen.java @@ -1,7 +1,6 @@ package igentuman.nc.client.gui; import com.mojang.blaze3d.systems.RenderSystem; -import com.mojang.blaze3d.vertex.PoseStack; import igentuman.nc.client.NcClient; import igentuman.nc.client.gui.element.NCGuiElement; import igentuman.nc.client.gui.element.button.Button; @@ -14,7 +13,7 @@ import net.minecraft.network.chat.Component; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.entity.player.Inventory; -import net.minecraftforge.client.event.ContainerScreenEvent.Render.Background; +import net.neoforged.neoforge.client.event.ContainerScreenEvent.Render.Background; import java.util.*; @@ -72,25 +71,22 @@ public MultiblockAnalyzeReportScreen(AbstractContainerScreen parentScreen, T con @Override public void render(GuiGraphics graphics, int mouseX, int mouseY, float partialTicks) { - this.renderBackground(graphics); + this.renderBackground(graphics, mouseX, mouseY, partialTicks); int i = this.leftPos; int j = this.topPos; this.renderBg(graphics, partialTicks, mouseX, mouseY); - net.minecraftforge.common.MinecraftForge.EVENT_BUS.post(new Background(this, graphics, mouseX, mouseY)); + net.neoforged.neoforge.common.NeoForge.EVENT_BUS.post(new Background(this, graphics, mouseX, mouseY)); RenderSystem.disableDepthTest(); for(Renderable widget : this.renderables) { widget.render(graphics, mouseX, mouseY, partialTicks); } - PoseStack posestack = RenderSystem.getModelViewStack(); - posestack.pushPose(); - posestack.translate((double)i, (double)j, 0.0D); - RenderSystem.applyModelViewMatrix(); + graphics.pose().pushPose(); + graphics.pose().translate((float)i, (float)j, 0.0F); RenderSystem.setShaderColor(1.0F, 1.0F, 1.0F, 1.0F); this.hoveredSlot = null; RenderSystem.setShaderColor(1.0F, 1.0F, 1.0F, 1.0F); this.renderLabels(graphics, mouseX, mouseY); - posestack.popPose(); - RenderSystem.applyModelViewMatrix(); + graphics.pose().popPose(); RenderSystem.enableDepthTest(); this.renderTooltip(graphics, mouseX, mouseY); } @@ -132,7 +128,6 @@ private MultiblockControllerContainer container() { @Override protected void renderBg(GuiGraphics graphics, float partialTicks, int mouseX, int mouseY) { - RenderSystem.setShaderTexture(0, GUI); updateRelativeCords(); graphics.blit(GUI, relX, relY, 0, 0, this.imageWidth, this.imageHeight); renderWidgets(graphics, partialTicks, mouseX, mouseY); diff --git a/src/main/java/igentuman/nc/client/gui/MultiblockBuilderScreen.java b/src/main/java/igentuman/nc/client/gui/MultiblockBuilderScreen.java index e0af78f98..0069c38e4 100644 --- a/src/main/java/igentuman/nc/client/gui/MultiblockBuilderScreen.java +++ b/src/main/java/igentuman/nc/client/gui/MultiblockBuilderScreen.java @@ -1,6 +1,5 @@ package igentuman.nc.client.gui; -import com.mojang.blaze3d.systems.RenderSystem; import igentuman.nc.client.gui.element.NCGuiElement; import igentuman.nc.client.gui.element.button.Button; import igentuman.nc.container.MultiblockBuilderContainer; @@ -73,7 +72,7 @@ protected void init() { } @Override public void render(GuiGraphics graphics, int mouseX, int mouseY, float partialTicks) { - this.renderBackground(graphics); + this.renderBackground(graphics, mouseX, mouseY, partialTicks); super.render(graphics, mouseX, mouseY, partialTicks); this.renderTooltip(graphics, mouseX, mouseY); } @@ -107,7 +106,6 @@ public boolean mouseClicked(double pMouseX, double pMouseY, int pButton) { @Override protected void renderBg(GuiGraphics graphics, float partialTicks, int mouseX, int mouseY) { - RenderSystem.setShaderTexture(0, GUI); int relX = (this.width - this.imageWidth) / 2; int relY = (this.height - this.imageHeight) / 2; graphics.blit(GUI, relX, relY, 0, 0, this.imageWidth, this.imageHeight); diff --git a/src/main/java/igentuman/nc/client/gui/RedstoneDimmerScreen.java b/src/main/java/igentuman/nc/client/gui/RedstoneDimmerScreen.java index f4b2f6c29..34bf8c08c 100644 --- a/src/main/java/igentuman/nc/client/gui/RedstoneDimmerScreen.java +++ b/src/main/java/igentuman/nc/client/gui/RedstoneDimmerScreen.java @@ -1,6 +1,5 @@ package igentuman.nc.client.gui; -import com.mojang.blaze3d.systems.RenderSystem; import igentuman.nc.container.RedstoneDImmerContainer; import igentuman.nc.container.StorageContainerContainer; import igentuman.nc.util.annotation.NothingNullByDefault; @@ -24,7 +23,7 @@ public RedstoneDimmerScreen(RedstoneDImmerContainer container, Inventory inv, Co @Override public void render(GuiGraphics graphics, int mouseX, int mouseY, float partialTicks) { - this.renderBackground(graphics); + this.renderBackground(graphics, mouseX, mouseY, partialTicks); super.render(graphics, mouseX, mouseY, partialTicks); this.renderTooltip(graphics, mouseX, mouseY); } @@ -35,7 +34,6 @@ protected void renderLabels(GuiGraphics matrixStack, int mouseX, int mouseY) { @Override protected void renderBg(GuiGraphics graphics, float partialTicks, int mouseX, int mouseY) { - RenderSystem.setShaderTexture(0, GUI); int relX = (this.width - this.imageWidth) / 2; int relY = (this.height - this.imageHeight) / 2; graphics.blit(GUI, relX, relY, 0, 0, this.imageWidth, this.imageHeight); diff --git a/src/main/java/igentuman/nc/client/gui/StorageContainerItemScreen.java b/src/main/java/igentuman/nc/client/gui/StorageContainerItemScreen.java index 7bc3d6afa..87657034b 100644 --- a/src/main/java/igentuman/nc/client/gui/StorageContainerItemScreen.java +++ b/src/main/java/igentuman/nc/client/gui/StorageContainerItemScreen.java @@ -1,6 +1,5 @@ package igentuman.nc.client.gui; -import com.mojang.blaze3d.systems.RenderSystem; import igentuman.nc.client.gui.element.NCGuiElement; import igentuman.nc.client.gui.element.button.Button; import igentuman.nc.container.StorageContainerContainer; @@ -99,7 +98,7 @@ private int getColls() { @Override public void render(GuiGraphics graphics, int mouseX, int mouseY, float partialTicks) { - this.renderBackground(graphics); + this.renderBackground(graphics, mouseX, mouseY, partialTicks); super.render(graphics, mouseX, mouseY, partialTicks); this.renderTooltip(graphics, mouseX, mouseY); } @@ -111,7 +110,6 @@ protected void renderLabels(GuiGraphics matrixStack, int mouseX, int mouseY) { @Override protected void renderBg(GuiGraphics graphics, float partialTicks, int mouseX, int mouseY) { - RenderSystem.setShaderTexture(0, GUI); updateRelativeCords(); graphics.blit(GUI, relX, relY, 0, 0, this.imageWidth, this.imageHeight); renderWidgets(graphics, partialTicks, mouseX, mouseY); diff --git a/src/main/java/igentuman/nc/client/gui/StorageContainerScreen.java b/src/main/java/igentuman/nc/client/gui/StorageContainerScreen.java index e1228ba53..1783ec14b 100644 --- a/src/main/java/igentuman/nc/client/gui/StorageContainerScreen.java +++ b/src/main/java/igentuman/nc/client/gui/StorageContainerScreen.java @@ -1,6 +1,5 @@ package igentuman.nc.client.gui; -import com.mojang.blaze3d.systems.RenderSystem; import igentuman.nc.container.StorageContainerContainer; import igentuman.nc.util.annotation.NothingNullByDefault; import net.minecraft.client.gui.GuiGraphics; @@ -33,7 +32,7 @@ private int getColls() { @Override public void render(GuiGraphics graphics, int mouseX, int mouseY, float partialTicks) { - this.renderBackground(graphics); + this.renderBackground(graphics, mouseX, mouseY, partialTicks); super.render(graphics, mouseX, mouseY, partialTicks); this.renderTooltip(graphics, mouseX, mouseY); } @@ -44,7 +43,6 @@ protected void renderLabels(GuiGraphics matrixStack, int mouseX, int mouseY) { @Override protected void renderBg(GuiGraphics graphics, float partialTicks, int mouseX, int mouseY) { - RenderSystem.setShaderTexture(0, GUI); int relX = (this.width - this.imageWidth) / 2; int relY = (this.height - this.imageHeight) / 2; graphics.blit(GUI, relX, relY, 0, 0, this.imageWidth, this.imageHeight); diff --git a/src/main/java/igentuman/nc/client/gui/accelerator/AcceleratorIonSourcePortScreen.java b/src/main/java/igentuman/nc/client/gui/accelerator/AcceleratorIonSourcePortScreen.java index 23c21db7c..9a48973c2 100644 --- a/src/main/java/igentuman/nc/client/gui/accelerator/AcceleratorIonSourcePortScreen.java +++ b/src/main/java/igentuman/nc/client/gui/accelerator/AcceleratorIonSourcePortScreen.java @@ -1,6 +1,5 @@ package igentuman.nc.client.gui.accelerator; -import com.mojang.blaze3d.systems.RenderSystem; import igentuman.nc.client.gui.IProgressScreen; import igentuman.nc.client.gui.IVerticalBarScreen; import igentuman.nc.client.gui.element.NCGuiElement; @@ -17,7 +16,7 @@ import net.minecraft.network.chat.Component; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.entity.player.Inventory; -import net.minecraftforge.fluids.capability.templates.FluidTank; +import net.neoforged.neoforge.fluids.capability.templates.FluidTank; import org.jetbrains.annotations.NotNull; import java.util.ArrayList; @@ -80,7 +79,7 @@ protected FluidTank getFluidTank(int i) { @Override public void render(@NotNull GuiGraphics graphics, int mouseX, int mouseY, float partialTicks) { xCenter = getGuiLeft()-imageWidth/2; - this.renderBackground(graphics); + this.renderBackground(graphics, mouseX, mouseY, partialTicks); super.render(graphics, mouseX, mouseY, partialTicks); this.renderTooltip(graphics, mouseX, mouseY); } @@ -111,7 +110,6 @@ public boolean mouseClicked(double pMouseX, double pMouseY, int pButton) { @Override protected void renderBg(@NotNull GuiGraphics graphics, float partialTicks, int mouseX, int mouseY) { - RenderSystem.setShaderTexture(0, GUI); updateRelativeCords(); graphics.blit(GUI, relX, relY, 0, 0, this.imageWidth, this.imageHeight); renderWidgets(graphics, partialTicks, mouseX, mouseY); diff --git a/src/main/java/igentuman/nc/client/gui/accelerator/AcceleratorPortScreen.java b/src/main/java/igentuman/nc/client/gui/accelerator/AcceleratorPortScreen.java index dc9dd366b..1b1f8853f 100644 --- a/src/main/java/igentuman/nc/client/gui/accelerator/AcceleratorPortScreen.java +++ b/src/main/java/igentuman/nc/client/gui/accelerator/AcceleratorPortScreen.java @@ -1,6 +1,5 @@ package igentuman.nc.client.gui.accelerator; -import com.mojang.blaze3d.systems.RenderSystem; import igentuman.nc.client.gui.IProgressScreen; import igentuman.nc.client.gui.IVerticalBarScreen; import igentuman.nc.client.gui.element.NCGuiElement; @@ -17,7 +16,7 @@ import net.minecraft.network.chat.Component; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.entity.player.Inventory; -import net.minecraftforge.fluids.capability.templates.FluidTank; +import net.neoforged.neoforge.fluids.capability.templates.FluidTank; import org.jetbrains.annotations.NotNull; import java.util.ArrayList; @@ -83,7 +82,7 @@ protected FluidTank getFluidTank(int i) { @Override public void render(@NotNull GuiGraphics graphics, int mouseX, int mouseY, float partialTicks) { xCenter = getGuiLeft()-imageWidth/2; - this.renderBackground(graphics); + this.renderBackground(graphics, mouseX, mouseY, partialTicks); super.render(graphics, mouseX, mouseY, partialTicks); this.renderTooltip(graphics, mouseX, mouseY); } @@ -116,7 +115,6 @@ public boolean mouseClicked(double pMouseX, double pMouseY, int pButton) { @Override protected void renderBg(@NotNull GuiGraphics graphics, float partialTicks, int mouseX, int mouseY) { - RenderSystem.setShaderTexture(0, GUI); updateRelativeCords(); graphics.blit(GUI, relX, relY, 0, 0, this.imageWidth, this.imageHeight); renderWidgets(graphics, partialTicks, mouseX, mouseY); diff --git a/src/main/java/igentuman/nc/client/gui/accelerator/LinearAcceleratorControllerScreen.java b/src/main/java/igentuman/nc/client/gui/accelerator/LinearAcceleratorControllerScreen.java index 8886556c2..ae724893a 100644 --- a/src/main/java/igentuman/nc/client/gui/accelerator/LinearAcceleratorControllerScreen.java +++ b/src/main/java/igentuman/nc/client/gui/accelerator/LinearAcceleratorControllerScreen.java @@ -1,6 +1,5 @@ package igentuman.nc.client.gui.accelerator; -import com.mojang.blaze3d.systems.RenderSystem; import igentuman.nc.client.gui.IProgressScreen; import igentuman.nc.client.gui.IVerticalBarScreen; import igentuman.nc.client.gui.element.GuiParticle; @@ -18,7 +17,7 @@ import net.minecraft.network.chat.Component; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.entity.player.Inventory; -import net.minecraftforge.fluids.capability.templates.FluidTank; +import net.neoforged.neoforge.fluids.capability.templates.FluidTank; import org.jetbrains.annotations.NotNull; import java.util.ArrayList; @@ -107,7 +106,7 @@ private boolean isCasingValid() { @Override public void render(@NotNull GuiGraphics graphics, int mouseX, int mouseY, float partialTicks) { xCenter = getGuiLeft()-imageWidth/2; - this.renderBackground(graphics); + this.renderBackground(graphics, mouseX, mouseY, partialTicks); super.render(graphics, mouseX, mouseY, partialTicks); this.renderTooltip(graphics, mouseX, mouseY); } @@ -157,9 +156,12 @@ protected void renderLabels(@NotNull GuiGraphics graphics, int mouseX, int mouse if(isCasingValid()) { if (isInteriorValid()) { - graphics.drawString(font, __("tooltip.nc.accelerator.voltage", container().getVoltage()), 37, 50, 0xffffff); - graphics.drawString(font, __("tooltip.nc.accelerator.efficiency", numberFormat(container().getEfficiency())+"%"), 37, 60, 0xffffff); - graphics.drawString(font, __("tooltip.nc.accelerator.strength", numberFormat(container().getStrength())), 37, 70, 0xffffff); + graphics.drawString(font, __("tooltip.nc.accelerator.voltage", container().getVoltage()), 37, 50, 0xffffff); + graphics.drawString(font, __("tooltip.nc.accelerator.efficiency", numberFormat(container().getEfficiency()) + "%"), 37, 60, 0xffffff); + graphics.drawString(font, __("tooltip.nc.accelerator.strength", numberFormat(container().getStrength())), 37, 70, 0xffffff); + if (isAcceleratorTooHot()) { + graphics.drawString(font, __("tooltip.nc.accelerator.too_hot"), 37, 80, ChatFormatting.RED.getColor()); + } } else { interiorTootip = applyFormat(__(getValidationResultKey(), getValidationResultData()), ChatFormatting.RED); } @@ -168,6 +170,10 @@ protected void renderLabels(@NotNull GuiGraphics graphics, int mouseX, int mouse renderTooltips(graphics, mouseX-relX, mouseY-relY); } + private boolean isAcceleratorTooHot() { + return container().isAcceleratorTooHot(); + } + private Object getValidationResultData() { return container().getValidationResultData().toShortString(); } @@ -190,7 +196,6 @@ private int getMultiblockDepth() { @Override protected void renderBg(@NotNull GuiGraphics graphics, float partialTicks, int mouseX, int mouseY) { - RenderSystem.setShaderTexture(0, GUI); updateRelativeCords(); graphics.blit(GUI, relX, relY, 0, 0, this.imageWidth, this.imageHeight); renderWidgets(graphics, partialTicks, mouseX, mouseY); diff --git a/src/main/java/igentuman/nc/client/gui/accelerator/RingAcceleratorControllerScreen.java b/src/main/java/igentuman/nc/client/gui/accelerator/RingAcceleratorControllerScreen.java index 190a2d8e6..85f6b7e36 100644 --- a/src/main/java/igentuman/nc/client/gui/accelerator/RingAcceleratorControllerScreen.java +++ b/src/main/java/igentuman/nc/client/gui/accelerator/RingAcceleratorControllerScreen.java @@ -1,6 +1,5 @@ package igentuman.nc.client.gui.accelerator; -import com.mojang.blaze3d.systems.RenderSystem; import igentuman.nc.client.gui.IProgressScreen; import igentuman.nc.client.gui.IVerticalBarScreen; import igentuman.nc.client.gui.element.GuiParticle; @@ -18,7 +17,7 @@ import net.minecraft.network.chat.Component; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.entity.player.Inventory; -import net.minecraftforge.fluids.capability.templates.FluidTank; +import net.neoforged.neoforge.fluids.capability.templates.FluidTank; import org.jetbrains.annotations.NotNull; import java.util.ArrayList; @@ -106,7 +105,7 @@ private boolean isCasingValid() { @Override public void render(@NotNull GuiGraphics graphics, int mouseX, int mouseY, float partialTicks) { xCenter = getGuiLeft()-imageWidth/2; - this.renderBackground(graphics); + this.renderBackground(graphics, mouseX, mouseY, partialTicks); super.render(graphics, mouseX, mouseY, partialTicks); this.renderTooltip(graphics, mouseX, mouseY); } @@ -194,7 +193,6 @@ private int getMultiblockDepth() { @Override protected void renderBg(@NotNull GuiGraphics graphics, float partialTicks, int mouseX, int mouseY) { - RenderSystem.setShaderTexture(0, GUI); updateRelativeCords(); graphics.blit(GUI, relX, relY, 0, 0, this.imageWidth, this.imageHeight); renderWidgets(graphics, partialTicks, mouseX, mouseY); diff --git a/src/main/java/igentuman/nc/client/gui/accelerator/TargetChamberControllerScreen.java b/src/main/java/igentuman/nc/client/gui/accelerator/TargetChamberControllerScreen.java index b5443ea61..529fd8c3e 100644 --- a/src/main/java/igentuman/nc/client/gui/accelerator/TargetChamberControllerScreen.java +++ b/src/main/java/igentuman/nc/client/gui/accelerator/TargetChamberControllerScreen.java @@ -1,6 +1,5 @@ package igentuman.nc.client.gui.accelerator; -import com.mojang.blaze3d.systems.RenderSystem; import igentuman.nc.client.gui.IProgressScreen; import igentuman.nc.client.gui.IVerticalBarScreen; import igentuman.nc.client.gui.element.GuiParticle; @@ -18,7 +17,7 @@ import net.minecraft.network.chat.Component; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.entity.player.Inventory; -import net.minecraftforge.fluids.capability.templates.FluidTank; +import net.neoforged.neoforge.fluids.capability.templates.FluidTank; import java.util.ArrayList; import java.util.List; @@ -117,7 +116,7 @@ private boolean isCasingValid() { @Override public void render(GuiGraphics graphics, int mouseX, int mouseY, float partialTicks) { xCenter = getGuiLeft()-imageWidth/2; - this.renderBackground(graphics); + this.renderBackground(graphics, mouseX, mouseY, partialTicks); super.render(graphics, mouseX, mouseY, partialTicks); this.renderTooltip(graphics, mouseX, mouseY); } @@ -218,7 +217,6 @@ private int getMultiblockDepth() { @Override protected void renderBg(GuiGraphics graphics, float partialTicks, int mouseX, int mouseY) { - RenderSystem.setShaderTexture(0, GUI); updateRelativeCords(); graphics.blit(GUI, relX, relY, 0, 0, this.imageWidth, this.imageHeight); renderWidgets(graphics, partialTicks, mouseX, mouseY); diff --git a/src/main/java/igentuman/nc/client/gui/accelerator/TargetChamberPortScreen.java b/src/main/java/igentuman/nc/client/gui/accelerator/TargetChamberPortScreen.java index 8dfb240ff..b9be2e018 100644 --- a/src/main/java/igentuman/nc/client/gui/accelerator/TargetChamberPortScreen.java +++ b/src/main/java/igentuman/nc/client/gui/accelerator/TargetChamberPortScreen.java @@ -1,6 +1,5 @@ package igentuman.nc.client.gui.accelerator; -import com.mojang.blaze3d.systems.RenderSystem; import igentuman.nc.client.gui.IProgressScreen; import igentuman.nc.client.gui.IVerticalBarScreen; import igentuman.nc.client.gui.element.GuiParticle; @@ -19,7 +18,7 @@ import net.minecraft.network.chat.Component; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.entity.player.Inventory; -import net.minecraftforge.fluids.capability.templates.FluidTank; +import net.neoforged.neoforge.fluids.capability.templates.FluidTank; import java.util.ArrayList; import java.util.List; @@ -90,7 +89,7 @@ protected FluidTank getFluidTank(int i) { @Override public void render(GuiGraphics graphics, int mouseX, int mouseY, float partialTicks) { xCenter = getGuiLeft()-imageWidth/2; - this.renderBackground(graphics); + this.renderBackground(graphics, mouseX, mouseY, partialTicks); super.render(graphics, mouseX, mouseY, partialTicks); this.renderTooltip(graphics, mouseX, mouseY); } @@ -126,7 +125,6 @@ protected void renderLabels(GuiGraphics graphics, int mouseX, int mouseY) { @Override protected void renderBg(GuiGraphics graphics, float partialTicks, int mouseX, int mouseY) { - RenderSystem.setShaderTexture(0, GUI); updateRelativeCords(); graphics.blit(GUI, relX, relY, 0, 0, this.imageWidth, this.imageHeight); renderWidgets(graphics, partialTicks, mouseX, mouseY); diff --git a/src/main/java/igentuman/nc/client/gui/element/GuiParticle.java b/src/main/java/igentuman/nc/client/gui/element/GuiParticle.java index 15e648182..d7f59388e 100644 --- a/src/main/java/igentuman/nc/client/gui/element/GuiParticle.java +++ b/src/main/java/igentuman/nc/client/gui/element/GuiParticle.java @@ -1,7 +1,6 @@ package igentuman.nc.client.gui.element; -import com.mojang.blaze3d.systems.RenderSystem; import igentuman.nc.content.particles.ParticleStack; import igentuman.nc.util.Units; import net.minecraft.ChatFormatting; @@ -36,7 +35,6 @@ public void drawParticleStack(@NotNull GuiGraphics graphics, ParticleStack parti return; } - RenderSystem.setShaderTexture(0,particleStack.getParticle().getTexture()); graphics.pose().pushPose(); graphics.pose().translate(RELATIVE_X, RELATIVE_Y, 0); graphics.blit(particleStack.getParticle().getTexture(), x, y, 0, 0, 16, 16, 16, 16); diff --git a/src/main/java/igentuman/nc/client/gui/element/NCGuiElement.java b/src/main/java/igentuman/nc/client/gui/element/NCGuiElement.java index 96507a461..894d8d562 100644 --- a/src/main/java/igentuman/nc/client/gui/element/NCGuiElement.java +++ b/src/main/java/igentuman/nc/client/gui/element/NCGuiElement.java @@ -16,7 +16,6 @@ import net.minecraft.client.gui.narration.NarratableEntry; import net.minecraft.client.gui.narration.NarrationElementOutput; import net.minecraft.client.gui.screens.inventory.AbstractContainerScreen; -import net.minecraft.client.renderer.GameRenderer; import net.minecraft.client.resources.sounds.SimpleSoundInstance; import net.minecraft.client.sounds.SoundManager; import net.minecraft.core.BlockPos; @@ -94,16 +93,9 @@ protected BlockPos getPosition() { } @Override - public void render(GuiGraphics graphics, int pMouseX, int pMouseY, float pPartialTick) { - if (this.visible) { - this.isHovered = pMouseX >= this.x && pMouseY >= this.y && pMouseX < this.x + this.width && pMouseY < this.y + this.height; - this.renderButton(graphics, pMouseX, pMouseY, pPartialTick); - } - } - - @Override - protected void renderWidget(GuiGraphics guiGraphics, int i, int i1, float v) { - + protected void renderWidget(GuiGraphics graphics, int pMouseX, int pMouseY, float pPartialTick) { + this.isHovered = pMouseX >= this.x && pMouseY >= this.y && pMouseX < this.x + this.width && pMouseY < this.y + this.height; + this.renderButton(graphics, pMouseX, pMouseY, pPartialTick); } protected void onFocusedChanged(boolean pFocused) { @@ -142,8 +134,6 @@ public boolean changeFocus(boolean pFocus) { public void renderButton(GuiGraphics graphics, int pMouseX, int pMouseY, float pPartialTick) { Minecraft minecraft = Minecraft.getInstance(); Font font = minecraft.font; - RenderSystem.setShader(GameRenderer::getPositionTexShader); - RenderSystem.setShaderTexture(0, TEXTURE); RenderSystem.setShaderColor(1.0F, 1.0F, 1.0F, this.alpha); int i = this.getYImage(this.isHoveredOrFocused()); RenderSystem.enableBlend(); @@ -222,7 +212,6 @@ protected void updateWidgetNarration(NarrationElementOutput narrationElementOutp } public void draw(GuiGraphics graphics, int mX, int mY, float pTicks) { - RenderSystem.setShaderTexture(0, TEXTURE); } public List getTooltips() { diff --git a/src/main/java/igentuman/nc/client/gui/element/bar/EnergyBar.java b/src/main/java/igentuman/nc/client/gui/element/bar/EnergyBar.java index a1f9aba7c..e6f3457a9 100644 --- a/src/main/java/igentuman/nc/client/gui/element/bar/EnergyBar.java +++ b/src/main/java/igentuman/nc/client/gui/element/bar/EnergyBar.java @@ -3,7 +3,7 @@ import igentuman.nc.client.gui.element.NCGuiElement; import net.minecraft.client.gui.GuiGraphics; import net.minecraft.network.chat.Component; -import net.minecraftforge.energy.IEnergyStorage; +import net.neoforged.neoforge.energy.IEnergyStorage; import java.util.List; diff --git a/src/main/java/igentuman/nc/client/gui/element/bar/ProgressBar.java b/src/main/java/igentuman/nc/client/gui/element/bar/ProgressBar.java index 4aa826e4d..ac9bfe146 100644 --- a/src/main/java/igentuman/nc/client/gui/element/bar/ProgressBar.java +++ b/src/main/java/igentuman/nc/client/gui/element/bar/ProgressBar.java @@ -1,6 +1,5 @@ package igentuman.nc.client.gui.element.bar; -import com.mojang.blaze3d.systems.RenderSystem; import igentuman.nc.client.gui.IProgressScreen; import igentuman.nc.client.gui.element.NCGuiElement; import net.minecraft.client.gui.GuiGraphics; @@ -66,7 +65,6 @@ public List getTooltips() { @Override public void draw(GuiGraphics graphics, int mX, int mY, float pTicks) { super.draw(graphics, mX, mY, pTicks); - RenderSystem.setShaderTexture(0, ATLAS); int texOffset = bars.get(bar)[0]; int teyOffset = bars.get(bar)[1]; graphics.blit(ATLAS, X(), Y(), texOffset, teyOffset, width, height); diff --git a/src/main/java/igentuman/nc/client/gui/element/button/Button.java b/src/main/java/igentuman/nc/client/gui/element/button/Button.java index f09332b21..157e26cfa 100644 --- a/src/main/java/igentuman/nc/client/gui/element/button/Button.java +++ b/src/main/java/igentuman/nc/client/gui/element/button/Button.java @@ -14,7 +14,7 @@ import net.minecraft.client.Minecraft; import net.minecraft.client.gui.GuiGraphics; import net.minecraft.client.gui.components.Button.Builder; -import net.minecraft.client.gui.components.ImageButton; +import igentuman.api.platform.NCWidgets; import net.minecraft.client.gui.screens.inventory.AbstractContainerScreen; import net.minecraft.core.BlockPos; import net.minecraft.network.chat.Component; @@ -152,7 +152,7 @@ public SideConfig(int xPos, int yPos, AbstractContainerScreen screen) { super(xPos, yPos, screen, 69);//nice height = 18; width = 18; - btn = new ImageButton(X(), Y(), width, height, 220, 220, 18, TEXTURE, pButton -> { + btn = NCWidgets.imageButton(X(), Y(), width, height, 220, 220, 18, TEXTURE, pButton -> { Minecraft.getInstance().forceSetScreen(new SideConfigSlotSelectionScreen<>(screen)); }); tooltipKey = __("gui.nc.side_config.tooltip"); @@ -178,7 +178,7 @@ public List getTooltips() { public void setMode(int redstoneMode) { mode = redstoneMode; - btn = new ImageButton(X(), Y(), width, height, 184, 220 - redstoneMode * 36, 18, TEXTURE, pButton -> { + btn = NCWidgets.imageButton(X(), Y(), width, height, 184, 220 - redstoneMode * 36, 18, TEXTURE, pButton -> { NuclearCraft.packetHandler().sendToServer(new PacketGuiButtonPress(pos, BTN_ID)); }); } @@ -192,7 +192,7 @@ public ShowRecipes(int xPos, int yPos, AbstractContainerScreen screen) { super(xPos, yPos, screen, 70); height = 18; width = 18; - btn = new ImageButton(X(), Y(), width, height, 220, 76, 18, TEXTURE, pButton -> { + btn = NCWidgets.imageButton(X(), Y(), width, height, 220, 76, 18, TEXTURE, pButton -> { if(isEMILoaded()) { EMIPlugin.displayRecipes(screen); } @@ -209,7 +209,7 @@ public CloseConfig(int xPos, int yPos, Abstrac super(xPos, yPos, screen, 71); height = 18; width = 18; - btn = new ImageButton(X(), Y(), width, height, 202, 220, 18, TEXTURE, pButton -> { + btn = NCWidgets.imageButton(X(), Y(), width, height, 202, 220, 18, TEXTURE, pButton -> { this.screen.onClose(); }); } @@ -224,7 +224,7 @@ public Magnet(int xPos, int yPos, AbstractContainerScreen screen) { super(xPos, yPos, screen, BTN_ID); height = 18; width = 18; - btn = new ImageButton(X(), Y(), width, height, 184, 112, 18, TEXTURE, pButton -> { + btn = NCWidgets.imageButton(X(), Y(), width, height, 184, 112, 18, TEXTURE, pButton -> { NuclearCraft.packetHandler().sendToServer(new PacketGuiButtonPress(NcClient.tryGetClientPlayer(), BTN_ID)); }); } @@ -241,7 +241,7 @@ public List getTooltips() { public void setEnabled(boolean flag) { enabled = flag; int y = flag ? 1 : 0; - btn = new ImageButton(X(), Y(), width, height, 184, 112 - (y+1) * 36, 18, TEXTURE, pButton -> { + btn = NCWidgets.imageButton(X(), Y(), width, height, 184, 112 - (y+1) * 36, 18, TEXTURE, pButton -> { NuclearCraft.packetHandler().sendToServer(new PacketGuiButtonPress(NcClient.tryGetClientPlayer(), BTN_ID)); }); } @@ -263,7 +263,7 @@ public ReactorMode(int xPos, int yPos, AbstractContainerScreen screen, BlockP this.pos = pos; height = 18; width = 18; - btn = new ImageButton(X(), Y(), width, height, 220, 184, 18, TEXTURE, pButton -> { + btn = NCWidgets.imageButton(X(), Y(), width, height, 220, 184, 18, TEXTURE, pButton -> { NuclearCraft.packetHandler().sendToServer(new PacketGuiButtonPress(pos, BTN_ID)); }); } @@ -283,7 +283,7 @@ public List getTooltips() { public void setMode(boolean reactorMode) { mode = reactorMode; int y = reactorMode ? 1 : 0; - btn = new ImageButton(X(), Y(), width, height, 220, 184 - (y+1) * 36, 18, TEXTURE, pButton -> { + btn = NCWidgets.imageButton(X(), Y(), width, height, 220, 184 - (y+1) * 36, 18, TEXTURE, pButton -> { NuclearCraft.packetHandler().sendToServer(new PacketGuiButtonPress(pos, BTN_ID)); }); } @@ -305,7 +305,7 @@ public MultiblockAnalyze(int xPos, int yPos, AbstractContainerScreen screen, this.pos = pos; height = 18; width = 18; - btn = new ImageButton(X(), Y(), width, height, 184, 112, 18, TEXTURE, pButton -> { + btn = NCWidgets.imageButton(X(), Y(), width, height, 184, 112, 18, TEXTURE, pButton -> { NuclearCraft.packetHandler().sendToServer(new PacketGuiButtonPress(pos, BTN_ID)); Minecraft.getInstance().forceSetScreen(new MultiblockAnalyzeReportScreen<>(screen, container)); }); @@ -341,7 +341,7 @@ public ReportIssue(int xPos, int yPos, AbstractContainerScreen screen, BlockP height = 8; width = 8; String link = "https://github.com/igentuman/NuclearCraft-Neoteric/issues/new?template=bug_report.md"; - btn = new ImageButton(X(), Y(), width, height, 0, 0, 8, BTN_TEXTURE, 8, 16, pButton -> { + btn = NCWidgets.imageButton(X(), Y(), width, height, 0, 0, 8, BTN_TEXTURE, 8, 16, pButton -> { if (!copyToBuffer(link)) { //debugLog("Failed to open link: " + link); } @@ -387,7 +387,7 @@ public InsertJson(int xPos, int yPos, MultiblockBuilderScreen screen, BlockPos p this.pos = pos; height = 18; width = 18; - btn = new ImageButton(X(), Y(), width, height, 144, 220, 18, TEXTURE, pButton -> { + btn = NCWidgets.imageButton(X(), Y(), width, height, 144, 220, 18, TEXTURE, pButton -> { try { String jsonText = Minecraft.getInstance().keyboardHandler.getClipboard(); if (jsonText != null && !jsonText.isEmpty()) { @@ -432,7 +432,7 @@ public Build(int xPos, int yPos, MultiblockBuilderScreen screen, BlockPos pos) { this.pos = pos; height = 18; width = 18; - btn = new ImageButton(X(), Y(), width, height, 162, 220, 18, TEXTURE, pButton -> { + btn = NCWidgets.imageButton(X(), Y(), width, height, 162, 220, 18, TEXTURE, pButton -> { NuclearCraft.packetHandler().sendToServer(new PacketBuildMultiblock(pos, screen.blockMap)); }); } @@ -472,7 +472,7 @@ public Link(int xPos, int yPos, AbstractContainerScreen screen, BlockPos pos, this.tooltips = tooltips; height = 18; width = 18; - btn = new ImageButton(X(), Y(), width, height, 126, 220, 18, TEXTURE, pButton -> { + btn = NCWidgets.imageButton(X(), Y(), width, height, 126, 220, 18, TEXTURE, pButton -> { if (!openUrl(link)) { debugLog("Failed to open link: " + link); } @@ -493,7 +493,7 @@ public FusionReactorRedstoneModeButton(int xPos, int yPos, AbstractContainerScre @Override public void setMode(byte redstoneMode) { mode = redstoneMode; - btn = new ImageButton(X(), Y(), width, height, 238, 256 - (redstoneMode-10) * 36, 18, TEXTURE, pButton -> { + btn = NCWidgets.imageButton(X(), Y(), width, height, 238, 256 - (redstoneMode-10) * 36, 18, TEXTURE, pButton -> { NuclearCraft.packetHandler().sendToServer(new PacketGuiButtonPress(pos, BTN_ID)); }); } @@ -510,7 +510,7 @@ public ReactorPortRedstoneModeButton(int btId, int xPos, int yPos, AbstractConta this.pos = pos; height = 18; width = 18; - btn = new ImageButton(X(), Y(), width, height, 238, 256, 18, TEXTURE, pButton -> { + btn = NCWidgets.imageButton(X(), Y(), width, height, 238, 256, 18, TEXTURE, pButton -> { NuclearCraft.packetHandler().sendToServer(new PacketGuiButtonPress(pos, bId)); }); } @@ -520,7 +520,7 @@ public ReactorPortRedstoneModeButton(int xPos, int yPos, AbstractContainerScreen this.pos = pos; height = 18; width = 18; - btn = new ImageButton(X(), Y(), width, height, 238, 256, 18, TEXTURE, pButton -> { + btn = NCWidgets.imageButton(X(), Y(), width, height, 238, 256, 18, TEXTURE, pButton -> { NuclearCraft.packetHandler().sendToServer(new PacketGuiButtonPress(pos, bId)); }); } @@ -534,7 +534,7 @@ public List getTooltips() { public void setMode(byte redstoneMode) { mode = redstoneMode; - btn = new ImageButton(X(), Y(), width, height, 238, 256 - (redstoneMode) * 36, 18, TEXTURE, pButton -> { + btn = NCWidgets.imageButton(X(), Y(), width, height, 238, 256 - (redstoneMode) * 36, 18, TEXTURE, pButton -> { NuclearCraft.packetHandler().sendToServer(new PacketGuiButtonPress(pos, BTN_ID)); }); } @@ -550,7 +550,7 @@ public TurbinePortRedstoneModeButton(int xPos, int yPos, AbstractContainerScreen this.pos = pos; height = 18; width = 18; - btn = new ImageButton(X(), Y(), width, height, 238, 256, 18, TEXTURE, pButton -> { + btn = NCWidgets.imageButton(X(), Y(), width, height, 238, 256, 18, TEXTURE, pButton -> { NuclearCraft.packetHandler().sendToServer(new PacketGuiButtonPress(pos, bId)); }); } @@ -564,7 +564,7 @@ public List getTooltips() { public void setMode(byte redstoneMode) { mode = redstoneMode; - btn = new ImageButton(X(), Y(), width, height, 238, 256 - (redstoneMode+1) * 36, 18, TEXTURE, pButton -> { + btn = NCWidgets.imageButton(X(), Y(), width, height, 238, 256 - (redstoneMode+1) * 36, 18, TEXTURE, pButton -> { NuclearCraft.packetHandler().sendToServer(new PacketGuiButtonPress(pos, BTN_ID)); }); } @@ -581,7 +581,7 @@ public Kugelblitz(int xPos, int yPos, AbstractContainerScreen screen, BlockPo this.pos = pos; height = 18; width = 18; - btn = new ImageButton(X(), Y(), width, height, 202, 256, 18, TEXTURE, pButton -> { + btn = NCWidgets.imageButton(X(), Y(), width, height, 202, 256, 18, TEXTURE, pButton -> { NuclearCraft.packetHandler().sendToServer(new PacketGuiButtonPress(pos, bId)); }); } @@ -595,7 +595,7 @@ public List getTooltips() { public void setMode(byte redstoneMode) { mode = redstoneMode; - btn = new ImageButton(X(), Y(), width, height, 202, 256 - (redstoneMode+1) * 36, 18, TEXTURE, pButton -> { + btn = NCWidgets.imageButton(X(), Y(), width, height, 202, 256 - (redstoneMode+1) * 36, 18, TEXTURE, pButton -> { NuclearCraft.packetHandler().sendToServer(new PacketGuiButtonPress(pos, BTN_ID)); }); } diff --git a/src/main/java/igentuman/nc/client/gui/element/button/NCImageButton.java b/src/main/java/igentuman/nc/client/gui/element/button/NCImageButton.java index 9fdedc87b..70bd72218 100644 --- a/src/main/java/igentuman/nc/client/gui/element/button/NCImageButton.java +++ b/src/main/java/igentuman/nc/client/gui/element/button/NCImageButton.java @@ -4,12 +4,11 @@ import com.mojang.blaze3d.vertex.PoseStack; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.GuiGraphics; -import net.minecraft.client.renderer.GameRenderer; import net.minecraft.network.chat.CommonComponents; import net.minecraft.network.chat.Component; import net.minecraft.resources.ResourceLocation; -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 net.minecraft.client.gui.components.Button; @OnlyIn(Dist.CLIENT) public class NCImageButton extends Button { @@ -53,8 +52,6 @@ public void setPosition(int pX, int pY) { @Override public void renderWidget(GuiGraphics graphics, int pMouseX, int pMouseY, float pPartialTick) { - RenderSystem.setShader(GameRenderer::getPositionTexShader); - RenderSystem.setShaderTexture(0, this.resourceLocation); int i = this.yTexStart; if (!this.isActive()) { i += this.yDiffTex * 2; diff --git a/src/main/java/igentuman/nc/client/gui/element/button/SideConfig.java b/src/main/java/igentuman/nc/client/gui/element/button/SideConfig.java index 17f909686..5c9d5c199 100644 --- a/src/main/java/igentuman/nc/client/gui/element/button/SideConfig.java +++ b/src/main/java/igentuman/nc/client/gui/element/button/SideConfig.java @@ -8,7 +8,6 @@ import igentuman.nc.network.toServer.PacketSideConfigToggle; import igentuman.nc.handler.sided.SidedContentHandler; import net.minecraft.client.gui.GuiGraphics; -import net.minecraft.client.gui.components.ImageButton; import net.minecraft.network.chat.Component; import net.minecraft.resources.ResourceLocation; @@ -78,8 +77,8 @@ public void renderButton(GuiGraphics graphics, int pMouseX, int pMouseY, float p } } - public static class SideBtn extends ImageButton { - public SideBtn(int x, int y, ResourceLocation btnTexture, OnPress onPress) { + public static class SideBtn extends NCImageButton { + public SideBtn(int x, int y, ResourceLocation btnTexture, net.minecraft.client.gui.components.Button.OnPress onPress) { super(x, y, 16, 16, 0, 0, 0, btnTexture, 16, 16, onPress); } } diff --git a/src/main/java/igentuman/nc/client/gui/element/button/SliderHorizontal.java b/src/main/java/igentuman/nc/client/gui/element/button/SliderHorizontal.java index 32840e946..d529a613a 100644 --- a/src/main/java/igentuman/nc/client/gui/element/button/SliderHorizontal.java +++ b/src/main/java/igentuman/nc/client/gui/element/button/SliderHorizontal.java @@ -82,7 +82,6 @@ public void mouseMove(int x, int y) { } public void drawSlide(GuiGraphics graphics) { - RenderSystem.setShaderTexture(0, TEXTURE); graphics.blit(TEXTURE, this.x+ screen.getGuiLeft(), this.y+2+screen.getGuiTop(), 5, 175, this.width, 3, this.textureWidth, this.textureHeight); } diff --git a/src/main/java/igentuman/nc/client/gui/element/fluid/FluidTankRenderer.java b/src/main/java/igentuman/nc/client/gui/element/fluid/FluidTankRenderer.java index 73c387878..417b717ca 100644 --- a/src/main/java/igentuman/nc/client/gui/element/fluid/FluidTankRenderer.java +++ b/src/main/java/igentuman/nc/client/gui/element/fluid/FluidTankRenderer.java @@ -2,6 +2,7 @@ import com.mojang.blaze3d.systems.RenderSystem; import com.mojang.blaze3d.vertex.*; +import igentuman.api.platform.NCRendering; import igentuman.nc.NuclearCraft; import igentuman.nc.client.gui.element.NCGuiElement; import igentuman.nc.network.toServer.PacketFlushSlotContent; @@ -9,7 +10,6 @@ import net.minecraft.ChatFormatting; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.GuiGraphics; -import net.minecraft.client.renderer.GameRenderer; import net.minecraft.client.renderer.texture.TextureAtlasSprite; import net.minecraft.network.chat.Component; import net.minecraft.network.chat.MutableComponent; @@ -18,10 +18,10 @@ import net.minecraft.world.inventory.InventoryMenu; import net.minecraft.world.level.material.Fluid; import net.minecraft.world.level.material.Fluids; -import net.minecraftforge.client.extensions.common.IClientFluidTypeExtensions; -import net.minecraftforge.fluids.FluidStack; -import net.minecraftforge.fluids.FluidType; -import net.minecraftforge.fluids.capability.templates.FluidTank; +import net.neoforged.neoforge.client.extensions.common.IClientFluidTypeExtensions; +import net.neoforged.neoforge.fluids.FluidStack; +import net.neoforged.neoforge.fluids.FluidType; +import net.neoforged.neoforge.fluids.capability.templates.FluidTank; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.joml.Matrix4f; @@ -32,7 +32,7 @@ import static igentuman.nc.handler.event.client.InputEvents.SHIFT_PRESSED; import static igentuman.nc.util.TextUtils.__; -import static net.minecraftforge.common.capabilities.ForgeCapabilities.FLUID_HANDLER_ITEM; +import net.neoforged.neoforge.capabilities.Capabilities; // CREDIT: https://github.com/mezz/JustEnoughItems by mezz // Under MIT-License: https://github.com/mezz/JustEnoughItems/blob/1.19/LICENSE.txt @@ -114,7 +114,7 @@ public boolean mouseClicked(double pMouseX, double pMouseY, int pButton) { } private boolean draggingFluidItem(Player player) { - return player.containerMenu.getCarried().getCapability(FLUID_HANDLER_ITEM).isPresent(); + return player.containerMenu.getCarried().getCapability(Capabilities.FluidHandler.ITEM) != null; } public FluidTankRenderer(FluidTank tank, int width, int height, int x, int y) { @@ -193,7 +193,6 @@ private int getColorTint(FluidStack ingredient) { } private static void drawTiledSprite(GuiGraphics graphics, final int tiledWidth, final int tiledHeight, int color, long scaledAmount, TextureAtlasSprite sprite) { - RenderSystem.setShaderTexture(0, InventoryMenu.BLOCK_ATLAS); Matrix4f matrix = graphics.pose().last().pose(); setGLColorFromInt(color); @@ -237,16 +236,14 @@ private static void drawTextureWithMasking(Matrix4f matrix, float xCoord, float uMax = uMax - (maskRight / 16F * (uMax - uMin)); vMax = vMax - (maskTop / 16F * (vMax - vMin)); - RenderSystem.setShader(GameRenderer::getPositionTexShader); - - Tesselator tessellator = Tesselator.getInstance(); - BufferBuilder bufferBuilder = tessellator.getBuilder(); - bufferBuilder.begin(VertexFormat.Mode.QUADS, DefaultVertexFormat.POSITION_TEX); - bufferBuilder.vertex(matrix, xCoord, yCoord + 16, zLevel).uv(uMin, vMax).endVertex(); - bufferBuilder.vertex(matrix, xCoord + 16 - maskRight, yCoord + 16, zLevel).uv(uMax, vMax).endVertex(); - bufferBuilder.vertex(matrix, xCoord + 16 - maskRight, yCoord + maskTop, zLevel).uv(uMax, vMin).endVertex(); - bufferBuilder.vertex(matrix, xCoord, yCoord + maskTop, zLevel).uv(uMin, vMin).endVertex(); - tessellator.end(); + final float uMaxFinal = uMax; + final float vMaxFinal = vMax; + NCRendering.draw(VertexFormat.Mode.QUADS, DefaultVertexFormat.POSITION_TEX, buffer -> { + buffer.addVertex(matrix, xCoord, yCoord + 16, zLevel).setUv(uMin, vMaxFinal); + buffer.addVertex(matrix, xCoord + 16 - maskRight, yCoord + 16, zLevel).setUv(uMaxFinal, vMaxFinal); + buffer.addVertex(matrix, xCoord + 16 - maskRight, yCoord + maskTop, zLevel).setUv(uMaxFinal, vMin); + buffer.addVertex(matrix, xCoord, yCoord + maskTop, zLevel).setUv(uMin, vMin); + }); } public List getTooltips() { diff --git a/src/main/java/igentuman/nc/client/gui/fission/FissionControllerScreen.java b/src/main/java/igentuman/nc/client/gui/fission/FissionControllerScreen.java index 8c64351e6..6d457b05d 100644 --- a/src/main/java/igentuman/nc/client/gui/fission/FissionControllerScreen.java +++ b/src/main/java/igentuman/nc/client/gui/fission/FissionControllerScreen.java @@ -1,6 +1,5 @@ package igentuman.nc.client.gui.fission; -import com.mojang.blaze3d.systems.RenderSystem; import igentuman.nc.client.gui.IVerticalBarScreen; import igentuman.nc.client.gui.element.bar.ProgressBar; import igentuman.nc.client.gui.element.bar.VerticalBar; @@ -17,7 +16,7 @@ import net.minecraft.network.chat.Component; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.entity.player.Inventory; -import net.minecraftforge.fluids.capability.templates.FluidTank; +import net.neoforged.neoforge.fluids.capability.templates.FluidTank; import java.util.ArrayList; import java.util.List; @@ -122,7 +121,7 @@ private boolean isCasingValid() { @Override public void render(GuiGraphics graphics, int mouseX, int mouseY, float partialTicks) { xCenter = getGuiLeft()-imageWidth/2; - this.renderBackground(graphics); + this.renderBackground(graphics, mouseX, mouseY, partialTicks); super.render(graphics, mouseX, mouseY, partialTicks); this.renderTooltip(graphics, mouseX, mouseY); graphics.renderItem(container().getInputStack(), relX+82, relY+20); @@ -226,7 +225,6 @@ private int getMultiblockDepth() { @Override protected void renderBg(GuiGraphics graphics, float partialTicks, int mouseX, int mouseY) { - RenderSystem.setShaderTexture(0, GUI); updateRelativeCords(); graphics.blit(GUI, relX, relY, 0, 0, this.imageWidth, this.imageHeight); renderWidgets(graphics, partialTicks, mouseX, mouseY); diff --git a/src/main/java/igentuman/nc/client/gui/fission/FissionPortScreen.java b/src/main/java/igentuman/nc/client/gui/fission/FissionPortScreen.java index 68235b6e8..225f144eb 100644 --- a/src/main/java/igentuman/nc/client/gui/fission/FissionPortScreen.java +++ b/src/main/java/igentuman/nc/client/gui/fission/FissionPortScreen.java @@ -1,6 +1,5 @@ package igentuman.nc.client.gui.fission; -import com.mojang.blaze3d.systems.RenderSystem; import igentuman.nc.client.gui.IProgressScreen; import igentuman.nc.client.gui.IVerticalBarScreen; import igentuman.nc.client.gui.element.NCGuiElement; @@ -15,7 +14,7 @@ import net.minecraft.network.chat.Component; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.entity.player.Inventory; -import net.minecraftforge.fluids.capability.templates.FluidTank; +import net.neoforged.neoforge.fluids.capability.templates.FluidTank; import java.util.ArrayList; import java.util.List; @@ -84,7 +83,7 @@ protected FluidTank getFluidTank(int i) { @Override public void render(GuiGraphics graphics, int mouseX, int mouseY, float partialTicks) { xCenter = getGuiLeft()-imageWidth/2; - this.renderBackground(graphics); + this.renderBackground(graphics, mouseX, mouseY, partialTicks); super.render(graphics, mouseX, mouseY, partialTicks); this.renderTooltip(graphics, mouseX, mouseY); } @@ -122,7 +121,6 @@ public boolean mouseClicked(double pMouseX, double pMouseY, int pButton) { @Override protected void renderBg(GuiGraphics graphics, float partialTicks, int mouseX, int mouseY) { - RenderSystem.setShaderTexture(0, GUI); updateRelativeCords(); graphics.blit(GUI, relX, relY, 0, 0, this.imageWidth, this.imageHeight); renderWidgets(graphics, partialTicks, mouseX, mouseY); diff --git a/src/main/java/igentuman/nc/client/gui/fission/MSRControllerScreen.java b/src/main/java/igentuman/nc/client/gui/fission/MSRControllerScreen.java index de0afadbe..749683255 100644 --- a/src/main/java/igentuman/nc/client/gui/fission/MSRControllerScreen.java +++ b/src/main/java/igentuman/nc/client/gui/fission/MSRControllerScreen.java @@ -1,6 +1,5 @@ package igentuman.nc.client.gui.fission; -import com.mojang.blaze3d.systems.RenderSystem; import igentuman.nc.client.gui.IProgressScreen; import igentuman.nc.client.gui.IVerticalBarScreen; import igentuman.nc.client.gui.element.NCGuiElement; @@ -84,9 +83,8 @@ protected void renderLabels(GuiGraphics graphics, int mouseX, int mouseY) { @Override protected void renderBg(GuiGraphics graphics, float partialTick, int mouseX, int mouseY) { - RenderSystem.setShaderTexture(0, GUI); updateRelativeCords(); - renderBackground(graphics); + renderBackground(graphics, mouseX, mouseY, partialTick); graphics.blit(GUI, relX, relY, 0, 0, imageWidth, imageHeight); for (NCGuiElement widget : widgets) { @@ -106,7 +104,7 @@ private void renderBarTooltips(GuiGraphics graphics, int pMouseX, int pMouseY) { @Override public void render(GuiGraphics graphics, int mouseX, int mouseY, float partialTicks) { - this.renderBackground(graphics); + this.renderBackground(graphics, mouseX, mouseY, partialTicks); super.render(graphics, mouseX, mouseY, partialTicks); this.renderTooltip(graphics, mouseX, mouseY); } diff --git a/src/main/java/igentuman/nc/client/gui/kugelblitz/ChamberPortScreen.java b/src/main/java/igentuman/nc/client/gui/kugelblitz/ChamberPortScreen.java index c96c89f62..8c36aa031 100644 --- a/src/main/java/igentuman/nc/client/gui/kugelblitz/ChamberPortScreen.java +++ b/src/main/java/igentuman/nc/client/gui/kugelblitz/ChamberPortScreen.java @@ -1,6 +1,5 @@ package igentuman.nc.client.gui.kugelblitz; -import com.mojang.blaze3d.systems.RenderSystem; import igentuman.nc.client.gui.IProgressScreen; import igentuman.nc.client.gui.IVerticalBarScreen; import igentuman.nc.client.gui.element.NCGuiElement; @@ -14,7 +13,7 @@ import net.minecraft.network.chat.Component; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.entity.player.Inventory; -import net.minecraftforge.fluids.capability.templates.FluidTank; +import net.neoforged.neoforge.fluids.capability.templates.FluidTank; import java.util.ArrayList; import java.util.List; @@ -73,7 +72,7 @@ protected FluidTank getFluidTank(int i) { @Override public void render(GuiGraphics graphics, int mouseX, int mouseY, float partialTicks) { xCenter = getGuiLeft()-imageWidth/2; - this.renderBackground(graphics); + this.renderBackground(graphics, mouseX, mouseY, partialTicks); super.render(graphics, mouseX, mouseY, partialTicks); this.renderTooltip(graphics, mouseX, mouseY); } @@ -104,7 +103,6 @@ public boolean mouseClicked(double pMouseX, double pMouseY, int pButton) { @Override protected void renderBg(GuiGraphics graphics, float partialTicks, int mouseX, int mouseY) { - RenderSystem.setShaderTexture(0, GUI); updateRelativeCords(); graphics.blit(GUI, relX, relY, 0, 0, this.imageWidth, this.imageHeight); renderWidgets(graphics, partialTicks, mouseX, mouseY); diff --git a/src/main/java/igentuman/nc/client/gui/kugelblitz/ChamberTerminalScreen.java b/src/main/java/igentuman/nc/client/gui/kugelblitz/ChamberTerminalScreen.java index de6b36551..52519b63e 100644 --- a/src/main/java/igentuman/nc/client/gui/kugelblitz/ChamberTerminalScreen.java +++ b/src/main/java/igentuman/nc/client/gui/kugelblitz/ChamberTerminalScreen.java @@ -1,7 +1,6 @@ package igentuman.nc.client.gui.kugelblitz; import igentuman.nc.client.gui.element.TooltipArea; -import com.mojang.blaze3d.systems.RenderSystem; import igentuman.nc.client.gui.IProgressScreen; import igentuman.nc.client.gui.IVerticalBarScreen; import igentuman.nc.client.gui.element.NCGuiElement; @@ -18,7 +17,7 @@ import net.minecraft.network.chat.Component; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.entity.player.Inventory; -import net.minecraftforge.fluids.capability.templates.FluidTank; +import net.neoforged.neoforge.fluids.capability.templates.FluidTank; import java.util.ArrayList; import java.util.List; @@ -122,7 +121,7 @@ private boolean isCasingValid() { @Override public void render(GuiGraphics graphics, int mouseX, int mouseY, float partialTicks) { - this.renderBackground(graphics); + this.renderBackground(graphics, mouseX, mouseY, partialTicks); super.render(graphics, mouseX, mouseY, partialTicks); this.renderTooltip(graphics, mouseX, mouseY); } @@ -211,7 +210,6 @@ private String getValidationResultKey() { @Override protected void renderBg(GuiGraphics graphics, float partialTicks, int mouseX, int mouseY) { - RenderSystem.setShaderTexture(0, GUI); updateRelativeCords(); graphics.blit(GUI, relX, relY, 0, 0, this.imageWidth, this.imageHeight); renderWidgets(graphics, partialTicks, mouseX, mouseY); diff --git a/src/main/java/igentuman/nc/client/gui/kugelblitz/EXPLScreen.java b/src/main/java/igentuman/nc/client/gui/kugelblitz/EXPLScreen.java index 3c8c8b28c..f4baae9e8 100644 --- a/src/main/java/igentuman/nc/client/gui/kugelblitz/EXPLScreen.java +++ b/src/main/java/igentuman/nc/client/gui/kugelblitz/EXPLScreen.java @@ -1,6 +1,5 @@ package igentuman.nc.client.gui.kugelblitz; -import com.mojang.blaze3d.systems.RenderSystem; import igentuman.nc.client.gui.IProgressScreen; import igentuman.nc.client.gui.IVerticalBarScreen; import igentuman.nc.client.gui.element.NCGuiElement; @@ -15,7 +14,7 @@ import net.minecraft.network.chat.Component; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.entity.player.Inventory; -import net.minecraftforge.fluids.capability.templates.FluidTank; +import net.neoforged.neoforge.fluids.capability.templates.FluidTank; import java.util.ArrayList; import java.util.List; @@ -72,7 +71,7 @@ protected void init() { @Override public void render(GuiGraphics graphics, int mouseX, int mouseY, float partialTicks) { xCenter = getGuiLeft()-imageWidth/2; - this.renderBackground(graphics); + this.renderBackground(graphics, mouseX, mouseY, partialTicks); super.render(graphics, mouseX, mouseY, partialTicks); this.renderTooltip(graphics, mouseX, mouseY); } @@ -107,7 +106,6 @@ public boolean mouseClicked(double pMouseX, double pMouseY, int pButton) { @Override protected void renderBg(GuiGraphics graphics, float partialTicks, int mouseX, int mouseY) { - RenderSystem.setShaderTexture(0, GUI); updateRelativeCords(); graphics.blit(GUI, relX, relY, 0, 0, this.imageWidth, this.imageHeight); renderWidgets(graphics, partialTicks, mouseX, mouseY); diff --git a/src/main/java/igentuman/nc/client/gui/processor/NCProcessorScreen.java b/src/main/java/igentuman/nc/client/gui/processor/NCProcessorScreen.java index 4b8d40707..72b4fc461 100644 --- a/src/main/java/igentuman/nc/client/gui/processor/NCProcessorScreen.java +++ b/src/main/java/igentuman/nc/client/gui/processor/NCProcessorScreen.java @@ -1,6 +1,5 @@ package igentuman.nc.client.gui.processor; -import com.mojang.blaze3d.systems.RenderSystem; import com.mojang.blaze3d.vertex.PoseStack; import igentuman.nc.client.gui.IProgressScreen; import igentuman.nc.client.gui.element.NCGuiElement; @@ -20,7 +19,7 @@ import net.minecraft.resources.ResourceLocation; import net.minecraft.world.entity.player.Inventory; import net.minecraft.world.inventory.AbstractContainerMenu; -import net.minecraftforge.fluids.capability.templates.FluidTank; +import net.neoforged.neoforge.fluids.capability.templates.FluidTank; import org.jetbrains.annotations.NotNull; import java.util.ArrayList; @@ -153,7 +152,7 @@ public NCProcessorScreen(AbstractContainerMenu abstractContainerMenu, Inventory @Override public void render(GuiGraphics graphics, int mouseX, int mouseY, float partialTicks) { xCenter = getGuiLeft()-imageWidth/2; - this.renderBackground(graphics); + this.renderBackground(graphics, mouseX, mouseY, partialTicks); super.render(graphics, mouseX, mouseY, partialTicks); this.renderTooltip(graphics, mouseX, mouseY); } @@ -173,7 +172,6 @@ protected void renderLabels(GuiGraphics graphics, int mouseX, int mouseY) { @Override protected void renderBg(GuiGraphics graphics, float partialTicks, int mouseX, int mouseY) { - RenderSystem.setShaderTexture(0, GUI); updateRelativeCords(); graphics.blit(GUI, relX, relY, 0, 0, this.imageWidth, this.imageHeight); renderWidgets(graphics, partialTicks, mouseX, mouseY); diff --git a/src/main/java/igentuman/nc/client/gui/processor/side/SideConfigScreen.java b/src/main/java/igentuman/nc/client/gui/processor/side/SideConfigScreen.java index a3d5dec3a..c389c2057 100644 --- a/src/main/java/igentuman/nc/client/gui/processor/side/SideConfigScreen.java +++ b/src/main/java/igentuman/nc/client/gui/processor/side/SideConfigScreen.java @@ -1,7 +1,6 @@ package igentuman.nc.client.gui.processor.side; import com.mojang.blaze3d.systems.RenderSystem; -import com.mojang.blaze3d.vertex.PoseStack; import igentuman.nc.client.NcClient; import igentuman.nc.client.gui.element.NCGuiElement; import igentuman.nc.client.gui.element.button.Button; @@ -88,27 +87,25 @@ public SideConfigScreen(AbstractContainerScreen parentScreen, int slotId) { @Override public void render(GuiGraphics graphics, int mouseX, int mouseY, float partialTicks) { - this.renderBackground(graphics); + this.renderBackground(graphics, mouseX, mouseY, partialTicks); int i = this.leftPos; int j = this.topPos; this.renderBg(graphics, partialTicks, mouseX, mouseY); - net.minecraftforge.common.MinecraftForge.EVENT_BUS - .post(new net.minecraftforge.client.event.ContainerScreenEvent.Render.Background(this, graphics, mouseX, mouseY)); + net.neoforged.neoforge.common.NeoForge.EVENT_BUS + .post(new net.neoforged.neoforge.client.event.ContainerScreenEvent.Render.Background(this, graphics, mouseX, mouseY)); RenderSystem.disableDepthTest(); for(Renderable widget : this.renderables) { widget.render(graphics, mouseX, mouseY, partialTicks); } graphics.pose().pushPose(); - graphics.pose().translate((double)i, (double)j, 0.0D); - RenderSystem.applyModelViewMatrix(); + graphics.pose().translate((float)i, (float)j, 0.0F); RenderSystem.setShaderColor(1.0F, 1.0F, 1.0F, 1.0F); this.hoveredSlot = null; RenderSystem.setShaderColor(1.0F, 1.0F, 1.0F, 1.0F); this.renderLabels(graphics, mouseX, mouseY); renderTooltips(graphics, mouseX-relX, mouseY-relY); graphics.pose().popPose(); - RenderSystem.applyModelViewMatrix(); RenderSystem.enableDepthTest(); // this.renderTooltip(graphics, mouseX-relX, mouseY-relY); } @@ -134,7 +131,6 @@ protected void renderLabels(GuiGraphics graphics, int mouseX, int mouseY) { @Override protected void renderBg(GuiGraphics graphics, float partialTicks, int mouseX, int mouseY) { - RenderSystem.setShaderTexture(0, GUI); updateRelativeCords(); graphics.blit(GUI, relX, relY, 0, 0, this.imageWidth, this.imageHeight); renderWidgets(graphics, partialTicks, mouseX, mouseY); diff --git a/src/main/java/igentuman/nc/client/gui/processor/side/SideConfigSlotSelectionScreen.java b/src/main/java/igentuman/nc/client/gui/processor/side/SideConfigSlotSelectionScreen.java index 77e360b69..ee9f5227c 100644 --- a/src/main/java/igentuman/nc/client/gui/processor/side/SideConfigSlotSelectionScreen.java +++ b/src/main/java/igentuman/nc/client/gui/processor/side/SideConfigSlotSelectionScreen.java @@ -1,7 +1,6 @@ package igentuman.nc.client.gui.processor.side; import com.mojang.blaze3d.systems.RenderSystem; -import com.mojang.blaze3d.vertex.PoseStack; import igentuman.nc.client.NcClient; import igentuman.nc.client.gui.IProgressScreen; import igentuman.nc.client.gui.element.NCGuiElement; @@ -99,25 +98,22 @@ public SideConfigSlotSelectionScreen(AbstractContainerScreen parentScreen) { @Override public void render(GuiGraphics graphics, int mouseX, int mouseY, float partialTicks) { - this.renderBackground(graphics); + this.renderBackground(graphics, mouseX, mouseY, partialTicks); int i = this.leftPos; int j = this.topPos; this.renderBg(graphics, partialTicks, mouseX, mouseY); - net.minecraftforge.common.MinecraftForge.EVENT_BUS.post(new net.minecraftforge.client.event.ContainerScreenEvent.Render.Background(this, graphics, mouseX, mouseY)); + net.neoforged.neoforge.common.NeoForge.EVENT_BUS.post(new net.neoforged.neoforge.client.event.ContainerScreenEvent.Render.Background(this, graphics, mouseX, mouseY)); RenderSystem.disableDepthTest(); for(Renderable widget : this.renderables) { widget.render(graphics, mouseX, mouseY, partialTicks); } - PoseStack posestack = RenderSystem.getModelViewStack(); - posestack.pushPose(); - posestack.translate((double)i, (double)j, 0.0D); - RenderSystem.applyModelViewMatrix(); + graphics.pose().pushPose(); + graphics.pose().translate((float)i, (float)j, 0.0F); RenderSystem.setShaderColor(1.0F, 1.0F, 1.0F, 1.0F); this.hoveredSlot = null; RenderSystem.setShaderColor(1.0F, 1.0F, 1.0F, 1.0F); this.renderLabels(graphics, mouseX, mouseY); - posestack.popPose(); - RenderSystem.applyModelViewMatrix(); + graphics.pose().popPose(); RenderSystem.enableDepthTest(); this.renderTooltip(graphics, mouseX, mouseY); } @@ -135,7 +131,6 @@ protected void renderLabels(GuiGraphics graphics, int mouseX, int mouseY) { @Override protected void renderBg(GuiGraphics graphics, float partialTicks, int mouseX, int mouseY) { - RenderSystem.setShaderTexture(0, GUI); updateRelativeCords(); graphics.blit(GUI, relX, relY, 0, 0, this.imageWidth, this.imageHeight); renderWidgets(graphics, partialTicks, mouseX, mouseY); diff --git a/src/main/java/igentuman/nc/client/gui/turbine/TurbineControllerScreen.java b/src/main/java/igentuman/nc/client/gui/turbine/TurbineControllerScreen.java index 25d478f14..7da6959a9 100644 --- a/src/main/java/igentuman/nc/client/gui/turbine/TurbineControllerScreen.java +++ b/src/main/java/igentuman/nc/client/gui/turbine/TurbineControllerScreen.java @@ -1,6 +1,5 @@ package igentuman.nc.client.gui.turbine; -import com.mojang.blaze3d.systems.RenderSystem; import com.mojang.blaze3d.vertex.PoseStack; import igentuman.nc.client.gui.IProgressScreen; import igentuman.nc.client.gui.IVerticalBarScreen; @@ -18,7 +17,7 @@ import net.minecraft.network.chat.Component; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.entity.player.Inventory; -import net.minecraftforge.fluids.capability.templates.FluidTank; +import net.neoforged.neoforge.fluids.capability.templates.FluidTank; import org.jetbrains.annotations.NotNull; import java.util.ArrayList; @@ -100,7 +99,7 @@ private boolean isCasingValid() { @Override public void render(@NotNull GuiGraphics graphics, int mouseX, int mouseY, float partialTicks) { xCenter = getGuiLeft()-imageWidth/2; - this.renderBackground(graphics); + this.renderBackground(graphics, mouseX, mouseY, partialTicks); super.render(graphics, mouseX, mouseY, partialTicks); this.renderTooltip(graphics, mouseX, mouseY); } @@ -182,7 +181,6 @@ private int getMultiblockDepth() { @Override protected void renderBg(@NotNull GuiGraphics graphics, float partialTicks, int mouseX, int mouseY) { - RenderSystem.setShaderTexture(0, GUI); updateRelativeCords(); graphics.blit(GUI, relX, relY, 0, 0, this.imageWidth, this.imageHeight); renderWidgets(graphics, partialTicks, mouseX, mouseY); diff --git a/src/main/java/igentuman/nc/client/gui/turbine/TurbinePortScreen.java b/src/main/java/igentuman/nc/client/gui/turbine/TurbinePortScreen.java index 9af94a0a6..684155207 100644 --- a/src/main/java/igentuman/nc/client/gui/turbine/TurbinePortScreen.java +++ b/src/main/java/igentuman/nc/client/gui/turbine/TurbinePortScreen.java @@ -1,6 +1,5 @@ package igentuman.nc.client.gui.turbine; -import com.mojang.blaze3d.systems.RenderSystem; import igentuman.nc.client.gui.IProgressScreen; import igentuman.nc.client.gui.IVerticalBarScreen; import igentuman.nc.client.gui.element.NCGuiElement; @@ -15,7 +14,7 @@ import net.minecraft.network.chat.Component; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.entity.player.Inventory; -import net.minecraftforge.fluids.capability.templates.FluidTank; +import net.neoforged.neoforge.fluids.capability.templates.FluidTank; import org.jetbrains.annotations.NotNull; import java.util.ArrayList; @@ -83,7 +82,7 @@ protected FluidTank getFluidTank(int i) { @Override public void render(@NotNull GuiGraphics graphics, int mouseX, int mouseY, float partialTicks) { xCenter = getGuiLeft()-imageWidth/2; - this.renderBackground(graphics); + this.renderBackground(graphics, mouseX, mouseY, partialTicks); super.render(graphics, mouseX, mouseY, partialTicks); this.renderTooltip(graphics, mouseX, mouseY); } @@ -116,7 +115,6 @@ public boolean mouseClicked(double pMouseX, double pMouseY, int pButton) { @Override protected void renderBg(@NotNull GuiGraphics graphics, float partialTicks, int mouseX, int mouseY) { - RenderSystem.setShaderTexture(0, GUI); updateRelativeCords(); graphics.blit(GUI, relX, relY, 0, 0, this.imageWidth, this.imageHeight); renderWidgets(graphics, partialTicks, mouseX, mouseY); diff --git a/src/main/java/igentuman/nc/client/model/ModelFeralGhoul.java b/src/main/java/igentuman/nc/client/model/ModelFeralGhoul.java index f2934af3c..0d9f31060 100644 --- a/src/main/java/igentuman/nc/client/model/ModelFeralGhoul.java +++ b/src/main/java/igentuman/nc/client/model/ModelFeralGhoul.java @@ -132,7 +132,7 @@ protected Iterable bodyParts() { } @Override - public void renderToBuffer(PoseStack poseStack, VertexConsumer buffer, int packedLight, int packedOverlay, float red, float green, float blue, float alpha) { - super.renderToBuffer(poseStack, buffer, packedLight, packedOverlay, red, green, blue, alpha); + public void renderToBuffer(PoseStack poseStack, VertexConsumer buffer, int packedLight, int packedOverlay, int color) { + super.renderToBuffer(poseStack, buffer, packedLight, packedOverlay, color); } } \ No newline at end of file diff --git a/src/main/java/igentuman/nc/client/particle/FusionBeamParticle.java b/src/main/java/igentuman/nc/client/particle/FusionBeamParticle.java index 7411cce7e..c4dc5af16 100644 --- a/src/main/java/igentuman/nc/client/particle/FusionBeamParticle.java +++ b/src/main/java/igentuman/nc/client/particle/FusionBeamParticle.java @@ -84,7 +84,7 @@ private void drawComponent(VertexConsumer vertexBuilder, Vector3f[] resultVector } private void addVertex(VertexConsumer vertexBuilder, Vector3f pos, float u, float v) { - vertexBuilder.vertex(pos.x(), pos.y(), pos.z()).uv(u, v).color(rCol, gCol, bCol, alpha).uv2(240, 240).endVertex(); + vertexBuilder.addVertex(pos.x(), pos.y(), pos.z()).setUv(u, v).setColor(rCol, gCol, bCol, alpha).setUv2(240, 240); } @NotNull diff --git a/src/main/java/igentuman/nc/client/particle/FusionBeamParticleData.java b/src/main/java/igentuman/nc/client/particle/FusionBeamParticleData.java index c6955e297..18f4670ea 100644 --- a/src/main/java/igentuman/nc/client/particle/FusionBeamParticleData.java +++ b/src/main/java/igentuman/nc/client/particle/FusionBeamParticleData.java @@ -1,61 +1,33 @@ package igentuman.nc.client.particle; -import com.mojang.brigadier.StringReader; -import com.mojang.brigadier.exceptions.CommandSyntaxException; import com.mojang.serialization.Codec; +import com.mojang.serialization.MapCodec; import com.mojang.serialization.codecs.RecordCodecBuilder; import igentuman.nc.setup.registration.NcParticleTypes; import net.minecraft.core.Direction; import net.minecraft.core.particles.ParticleOptions; import net.minecraft.core.particles.ParticleType; -import net.minecraft.network.FriendlyByteBuf; +import net.minecraft.network.RegistryFriendlyByteBuf; +import net.minecraft.network.codec.StreamCodec; import org.jetbrains.annotations.NotNull; -import java.util.Locale; - public record FusionBeamParticleData(Direction direction, double distance, float energyScale) implements ParticleOptions { - public static final Deserializer DESERIALIZER = new Deserializer<>() { - @NotNull - @Override - public FusionBeamParticleData fromCommand(@NotNull ParticleType type, @NotNull StringReader reader) throws CommandSyntaxException { - reader.expect(' '); - Direction direction = Direction.from3DDataValue(reader.readInt()); - reader.expect(' '); - double distance = reader.readDouble(); - reader.expect(' '); - float energyScale = reader.readFloat(); - return new FusionBeamParticleData(direction, distance, energyScale); - } - - @NotNull - @Override - public FusionBeamParticleData fromNetwork(@NotNull ParticleType type, FriendlyByteBuf buf) { - return new FusionBeamParticleData(buf.readEnum(Direction.class), buf.readDouble(), buf.readFloat()); - } - }; - public static final Codec CODEC = RecordCodecBuilder.create(val -> val.group( - Direction.CODEC.fieldOf("direction").forGetter(data -> data.direction), - Codec.DOUBLE.fieldOf("distance").forGetter(data -> data.distance), - Codec.FLOAT.fieldOf("energyScale").forGetter(data -> data.energyScale) + public static final MapCodec CODEC = RecordCodecBuilder.mapCodec(val -> val.group( + Direction.CODEC.fieldOf("direction").forGetter(data -> data.direction()), + Codec.DOUBLE.fieldOf("distance").forGetter(data -> data.distance()), + Codec.FLOAT.fieldOf("energyScale").forGetter(data -> data.energyScale()) ).apply(val, FusionBeamParticleData::new)); + public static final StreamCodec STREAM_CODEC = + StreamCodec.of( + (buf, data) -> { buf.writeEnum(data.direction()); buf.writeDouble(data.distance()); buf.writeFloat(data.energyScale()); }, + buf -> new FusionBeamParticleData(buf.readEnum(Direction.class), buf.readDouble(), buf.readFloat()) + ); + @NotNull @Override public ParticleType getType() { return NcParticleTypes.FUSION_BEAM.get(); } - - @Override - public void writeToNetwork(@NotNull FriendlyByteBuf buffer) { - buffer.writeEnum(direction); - buffer.writeDouble(distance); - buffer.writeFloat(energyScale); - } - - @NotNull - @Override - public String writeToString() { - return String.format(Locale.ROOT, "%s %d %.2f %.2f", getType().toString(), direction.ordinal(), distance, energyScale); - } -} \ No newline at end of file +} diff --git a/src/main/java/igentuman/nc/client/particle/FusionBeamParticleType.java b/src/main/java/igentuman/nc/client/particle/FusionBeamParticleType.java index 27b795017..407c4abc3 100644 --- a/src/main/java/igentuman/nc/client/particle/FusionBeamParticleType.java +++ b/src/main/java/igentuman/nc/client/particle/FusionBeamParticleType.java @@ -1,18 +1,26 @@ package igentuman.nc.client.particle; -import com.mojang.serialization.Codec; +import com.mojang.serialization.MapCodec; import net.minecraft.core.particles.ParticleType; +import net.minecraft.network.RegistryFriendlyByteBuf; +import net.minecraft.network.codec.StreamCodec; import org.jetbrains.annotations.NotNull; public class FusionBeamParticleType extends ParticleType { public FusionBeamParticleType() { - super(false, FusionBeamParticleData.DESERIALIZER); + super(false); } @NotNull @Override - public Codec codec() { + public MapCodec codec() { return FusionBeamParticleData.CODEC; } -} \ No newline at end of file + + @NotNull + @Override + public StreamCodec streamCodec() { + return FusionBeamParticleData.STREAM_CODEC; + } +} diff --git a/src/main/java/igentuman/nc/client/renderer/BillboardingEffectRenderer.java b/src/main/java/igentuman/nc/client/renderer/BillboardingEffectRenderer.java index bd0a3d6df..852512945 100644 --- a/src/main/java/igentuman/nc/client/renderer/BillboardingEffectRenderer.java +++ b/src/main/java/igentuman/nc/client/renderer/BillboardingEffectRenderer.java @@ -68,10 +68,10 @@ private static void render(Camera camera, VertexConsumer buffer, PoseStack poseS poseStack.pushPose(); Matrix4f matrix = poseStack.last().pose(); - buffer.vertex(matrix, vertexPos[0].x(), vertexPos[0].y(), vertexPos[0].z()).color(color[0], color[1], color[2], color[3]).uv(minU, maxV).endVertex(); - buffer.vertex(matrix, vertexPos[1].x(), vertexPos[1].y(), vertexPos[1].z()).color(color[0], color[1], color[2], color[3]).uv(maxU, maxV).endVertex(); - buffer.vertex(matrix, vertexPos[2].x(), vertexPos[2].y(), vertexPos[2].z()).color(color[0], color[1], color[2], color[3]).uv(maxU, minV).endVertex(); - buffer.vertex(matrix, vertexPos[3].x(), vertexPos[3].y(), vertexPos[3].z()).color(color[0], color[1], color[2], color[3]).uv(minU, minV).endVertex(); + buffer.addVertex(matrix, vertexPos[0].x(), vertexPos[0].y(), vertexPos[0].z()).setColor(color[0], color[1], color[2], color[3]).setUv(minU, maxV); + buffer.addVertex(matrix, vertexPos[1].x(), vertexPos[1].y(), vertexPos[1].z()).setColor(color[0], color[1], color[2], color[3]).setUv(maxU, maxV); + buffer.addVertex(matrix, vertexPos[2].x(), vertexPos[2].y(), vertexPos[2].z()).setColor(color[0], color[1], color[2], color[3]).setUv(maxU, minV); + buffer.addVertex(matrix, vertexPos[3].x(), vertexPos[3].y(), vertexPos[3].z()).setColor(color[0], color[1], color[2], color[3]).setUv(minU, minV); poseStack.popPose(); } } \ No newline at end of file diff --git a/src/main/java/igentuman/nc/client/renderer/DistortShader.java b/src/main/java/igentuman/nc/client/renderer/DistortShader.java index 3bcc2eb46..99e4ee7ad 100644 --- a/src/main/java/igentuman/nc/client/renderer/DistortShader.java +++ b/src/main/java/igentuman/nc/client/renderer/DistortShader.java @@ -1,21 +1,22 @@ package igentuman.nc.client.renderer; +import igentuman.api.platform.NCLevels; +import igentuman.api.platform.NCRendering; import com.mojang.blaze3d.platform.GlStateManager; import com.mojang.blaze3d.systems.RenderSystem; -import com.mojang.blaze3d.vertex.BufferBuilder; import com.mojang.blaze3d.vertex.DefaultVertexFormat; -import com.mojang.blaze3d.vertex.Tesselator; import com.mojang.blaze3d.vertex.VertexFormat; import igentuman.nc.block.kugelblitz.entity.BlackHoleBE; import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.EffectInstance; import net.minecraft.core.BlockPos; import net.minecraft.world.level.block.entity.BlockEntity; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.client.event.RenderLevelStageEvent; -import net.minecraftforge.common.MinecraftForge; -import net.minecraftforge.eventbus.api.SubscribeEvent; -import net.minecraftforge.fml.common.Mod; +import net.neoforged.api.distmarker.Dist; +import net.neoforged.neoforge.client.event.RenderLevelStageEvent; +import net.neoforged.neoforge.common.NeoForge; +import net.neoforged.bus.api.SubscribeEvent; +import net.neoforged.fml.common.EventBusSubscriber; +import net.neoforged.fml.common.Mod; import org.joml.Matrix4f; import java.util.Collections; @@ -27,12 +28,12 @@ import static igentuman.nc.handler.config.KugelblitzConfig.KUGELBLITZ_CONFIG; import static igentuman.nc.multiblock.kugelblitz.KugelblitzRegistration.KUGELBLITZ_BLOCKS; -@Mod.EventBusSubscriber(modid = MODID, value = Dist.CLIENT) +@EventBusSubscriber(modid = MODID, value = Dist.CLIENT) public class DistortShader { private static int currentSize = 0; public static void register() { - MinecraftForge.EVENT_BUS.register(DistortShader.class); + NeoForge.EVENT_BUS.register(DistortShader.class); } public static final BlackholeRegistry blackhole = new BlackholeRegistry(); @@ -65,7 +66,7 @@ private static boolean processBlackHole(Minecraft mc, RenderLevelStageEvent even if(distance > 64) { return false; } - BlockEntity be = mc.level.getExistingBlockEntity(pos); + BlockEntity be = NCLevels.getExistingBlockEntity(mc.level, pos); float scaleMult = 1; if(be instanceof BlackHoleBE blackHoleBE) { scaleMult = 0.3f / blackHoleBE.scale; @@ -158,7 +159,7 @@ public static void onRenderTick(RenderLevelStageEvent event) { for (BlockPos pos : blackhole.getPositions()) { if(processBlackHole(mc, event, effect, pos)) { - blackholePostEffect.process(mc.getFrameTime()); + blackholePostEffect.process(mc.getTimer().getGameTimeDeltaPartialTick(true)); } } @@ -178,14 +179,14 @@ public static void onRenderTick(RenderLevelStageEvent event) { ); // Draw a fullscreen quad with the processed shader result - Tesselator tesselator = Tesselator.getInstance(); - BufferBuilder bufferbuilder = tesselator.getBuilder(); - bufferbuilder.begin(VertexFormat.Mode.QUADS, DefaultVertexFormat.POSITION_TEX); - bufferbuilder.vertex(0, mc.getMainRenderTarget().height, 0).uv(0, 0).endVertex(); - bufferbuilder.vertex(mc.getMainRenderTarget().width, mc.getMainRenderTarget().height, 0).uv(1, 0).endVertex(); - bufferbuilder.vertex(mc.getMainRenderTarget().width, 0, 0).uv(1, 1).endVertex(); - bufferbuilder.vertex(0, 0, 0).uv(0, 1).endVertex(); - tesselator.end(); + int rtWidth = mc.getMainRenderTarget().width; + int rtHeight = mc.getMainRenderTarget().height; + NCRendering.draw(VertexFormat.Mode.QUADS, DefaultVertexFormat.POSITION_TEX, buffer -> { + buffer.addVertex(0, rtHeight, 0).setUv(0, 0); + buffer.addVertex(rtWidth, rtHeight, 0).setUv(1, 0); + buffer.addVertex(rtWidth, 0, 0).setUv(1, 1); + buffer.addVertex(0, 0, 0).setUv(0, 1); + }); // Restore render state RenderSystem.depthFunc(515); diff --git a/src/main/java/igentuman/nc/client/renderer/NCRenderType.java b/src/main/java/igentuman/nc/client/renderer/NCRenderType.java index a53c8dca7..cce5c7cfa 100644 --- a/src/main/java/igentuman/nc/client/renderer/NCRenderType.java +++ b/src/main/java/igentuman/nc/client/renderer/NCRenderType.java @@ -24,7 +24,7 @@ private NCRenderType(String name, VertexFormat format, VertexFormat.Mode mode, i .setLightmapState(NO_LIGHTMAP) .setOverlayState(NO_OVERLAY) .createCompositeState(true); - return create("nc_blackhole", DefaultVertexFormat.POSITION_COLOR_TEX, VertexFormat.Mode.QUADS, 256, true, true, state); + return create("nc_blackhole", DefaultVertexFormat.POSITION_TEX_COLOR, VertexFormat.Mode.QUADS, 256, true, true, state); }); } diff --git a/src/main/java/igentuman/nc/client/renderer/NCShaders.java b/src/main/java/igentuman/nc/client/renderer/NCShaders.java index f31041b85..256c9e5ee 100644 --- a/src/main/java/igentuman/nc/client/renderer/NCShaders.java +++ b/src/main/java/igentuman/nc/client/renderer/NCShaders.java @@ -7,10 +7,11 @@ import net.minecraft.client.renderer.RenderStateShard; import net.minecraft.client.renderer.ShaderInstance; import net.minecraft.resources.ResourceLocation; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.client.event.RegisterShadersEvent; -import net.minecraftforge.eventbus.api.SubscribeEvent; -import net.minecraftforge.fml.common.Mod; +import net.neoforged.api.distmarker.Dist; +import net.neoforged.neoforge.client.event.RegisterShadersEvent; +import net.neoforged.bus.api.SubscribeEvent; +import net.neoforged.fml.common.EventBusSubscriber; +import net.neoforged.fml.common.Mod; import java.io.IOException; import java.util.function.Supplier; @@ -18,7 +19,7 @@ import static igentuman.nc.NuclearCraft.MODID; import static igentuman.nc.NuclearCraft.rl; -@Mod.EventBusSubscriber(modid = MODID, value = Dist.CLIENT, bus = Mod.EventBusSubscriber.Bus.MOD) +@EventBusSubscriber(modid = MODID, value = Dist.CLIENT, bus = EventBusSubscriber.Bus.MOD) public class NCShaders { public static final ShaderTracker BLACKHOLE_COLOR = new ShaderTracker(); @@ -27,7 +28,7 @@ public class NCShaders { @SubscribeEvent public static void shaderRegistry(RegisterShadersEvent event) throws IOException { - registerShader(event, rl("rendertype_blackhole"), DefaultVertexFormat.POSITION_COLOR_TEX, BLACKHOLE_COLOR); + registerShader(event, rl("rendertype_blackhole"), DefaultVertexFormat.POSITION_TEX_COLOR, BLACKHOLE_COLOR); Minecraft mc = Minecraft.getInstance(); blackholePostEffect = new PostChain(mc.getTextureManager(), mc.getResourceManager(), diff --git a/src/main/java/igentuman/nc/client/renderer/WastelandBossRenderer.java b/src/main/java/igentuman/nc/client/renderer/WastelandBossRenderer.java index 35cff756d..2fe82e34b 100644 --- a/src/main/java/igentuman/nc/client/renderer/WastelandBossRenderer.java +++ b/src/main/java/igentuman/nc/client/renderer/WastelandBossRenderer.java @@ -9,6 +9,7 @@ import net.minecraft.client.renderer.entity.MobRenderer; import net.minecraft.client.renderer.entity.layers.RenderLayer; import net.minecraft.resources.ResourceLocation; +import net.minecraft.util.FastColor; import net.minecraft.util.RandomSource; import static igentuman.nc.NuclearCraft.rl; @@ -59,15 +60,13 @@ public void render(PoseStack matrixStackIn, MultiBufferSource bufferIn, int pack float glowIntensity = 0.5F + 0.5F * (float) Math.sin((entitylivingbaseIn.tickCount + partialTicks) * 0.1F); int glowLight = 15728880; // Full bright (15 << 20 | 15 << 4) + int color = FastColor.ARGB32.color(255, (int)(1.0F * 255), (int)(glowIntensity * 255), (int)(glowIntensity * 255)); model.renderToBuffer( matrixStackIn, bufferIn.getBuffer(RenderType.eyes(BOSS_GLOW_TEXTURE)), // Use eyes render type for glow effect glowLight, packedLightIn, - 1.0F, - glowIntensity, - glowIntensity, - 1.0F + color ); } } diff --git a/src/main/java/igentuman/nc/client/setup/EntityRenderHandler.java b/src/main/java/igentuman/nc/client/setup/EntityRenderHandler.java index 9eb10085a..633782837 100644 --- a/src/main/java/igentuman/nc/client/setup/EntityRenderHandler.java +++ b/src/main/java/igentuman/nc/client/setup/EntityRenderHandler.java @@ -4,16 +4,17 @@ import igentuman.nc.client.model.ModelWastelandBoss; import igentuman.nc.client.renderer.FeralGhoulRenderer; import igentuman.nc.client.renderer.WastelandBossRenderer; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.client.event.EntityRenderersEvent; -import net.minecraftforge.eventbus.api.SubscribeEvent; -import net.minecraftforge.fml.common.Mod; +import net.neoforged.api.distmarker.Dist; +import net.neoforged.neoforge.client.event.EntityRenderersEvent; +import net.neoforged.bus.api.SubscribeEvent; +import net.neoforged.fml.common.EventBusSubscriber; +import net.neoforged.fml.common.Mod; import static igentuman.nc.NuclearCraft.MODID; import static igentuman.nc.setup.registration.Entities.FERAL_GHOUL; import static igentuman.nc.setup.registration.Entities.FERAL_GHOUL_BOSS; -@Mod.EventBusSubscriber(modid = MODID, bus = Mod.EventBusSubscriber.Bus.MOD, value = Dist.CLIENT) +@EventBusSubscriber(modid = MODID, bus = EventBusSubscriber.Bus.MOD, value = Dist.CLIENT) public class EntityRenderHandler { @SubscribeEvent diff --git a/src/main/java/igentuman/nc/client/sound/SoundHandler.java b/src/main/java/igentuman/nc/client/sound/SoundHandler.java index 23d37194f..c0b46e384 100644 --- a/src/main/java/igentuman/nc/client/sound/SoundHandler.java +++ b/src/main/java/igentuman/nc/client/sound/SoundHandler.java @@ -16,12 +16,13 @@ import net.minecraft.util.RandomSource; import net.minecraft.world.entity.player.Player; import net.minecraft.world.level.LevelAccessor; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.client.ForgeHooksClient; -import net.minecraftforge.client.event.sound.PlaySoundEvent; -import net.minecraftforge.client.event.sound.SoundEngineLoadEvent; -import net.minecraftforge.eventbus.api.SubscribeEvent; -import net.minecraftforge.fml.common.Mod; +import net.neoforged.api.distmarker.Dist; +import net.neoforged.neoforge.client.ClientHooks; +import net.neoforged.neoforge.client.event.sound.PlaySoundEvent; +import net.neoforged.neoforge.client.event.sound.SoundEngineLoadEvent; +import net.neoforged.bus.api.SubscribeEvent; +import net.neoforged.fml.common.EventBusSubscriber; +import net.neoforged.fml.common.Mod; import java.util.Map; import java.util.UUID; @@ -31,7 +32,7 @@ import static igentuman.nc.NuclearCraft.MODID; import static igentuman.nc.NuclearCraft.currentTick; -@Mod.EventBusSubscriber(modid = MODID, value = Dist.CLIENT, bus = Mod.EventBusSubscriber.Bus.MOD) +@EventBusSubscriber(modid = MODID, value = Dist.CLIENT, bus = EventBusSubscriber.Bus.MOD) public class SoundHandler { private SoundHandler() { @@ -147,7 +148,7 @@ public void tick() { return; } volume = originalVolume; - SoundInstance s = ForgeHooksClient.playSound(soundEngine, this); + SoundInstance s = ClientHooks.playSound(soundEngine, this); if (s == this) { volume = originalVolume; diff --git a/src/main/java/igentuman/nc/compat/ae2/ProcessorEmiRecipeHandlerAE2.java b/src/main/java/igentuman/nc/compat/ae2/ProcessorEmiRecipeHandlerAE2.java index 3c5d57dc7..3c2028d0e 100644 --- a/src/main/java/igentuman/nc/compat/ae2/ProcessorEmiRecipeHandlerAE2.java +++ b/src/main/java/igentuman/nc/compat/ae2/ProcessorEmiRecipeHandlerAE2.java @@ -13,7 +13,7 @@ import net.minecraft.world.inventory.AbstractContainerMenu; import net.minecraft.world.inventory.Slot; import net.minecraft.world.item.ItemStack; -import net.minecraftforge.fluids.FluidStack; +import net.neoforged.neoforge.fluids.FluidStack; import java.util.ArrayList; import java.util.List; diff --git a/src/main/java/igentuman/nc/compat/emi/AcceleratorCoolantEmiCategory.java b/src/main/java/igentuman/nc/compat/emi/AcceleratorCoolantEmiCategory.java index 38c43dd23..b01416dcc 100644 --- a/src/main/java/igentuman/nc/compat/emi/AcceleratorCoolantEmiCategory.java +++ b/src/main/java/igentuman/nc/compat/emi/AcceleratorCoolantEmiCategory.java @@ -8,7 +8,7 @@ import igentuman.nc.block.accelerator.entity.LinearAcceleratorControllerBE; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.item.ItemStack; -import net.minecraftforge.fluids.FluidStack; +import net.neoforged.neoforge.fluids.FluidStack; import java.util.List; diff --git a/src/main/java/igentuman/nc/compat/emi/CoolerPlacementEmiRecipe.java b/src/main/java/igentuman/nc/compat/emi/CoolerPlacementEmiRecipe.java index ef54c5c57..72d12960a 100644 --- a/src/main/java/igentuman/nc/compat/emi/CoolerPlacementEmiRecipe.java +++ b/src/main/java/igentuman/nc/compat/emi/CoolerPlacementEmiRecipe.java @@ -4,7 +4,8 @@ import net.minecraft.resources.ResourceLocation; import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.block.Block; -import net.minecraftforge.registries.ForgeRegistries; +import net.minecraft.core.registries.BuiltInRegistries; + import java.util.ArrayList; import java.util.HashMap; @@ -50,7 +51,7 @@ private List parseConditionGroups() { if (!blockName.contains(":")) { blockName = MODID + ":" + blockName; } - Block block = ForgeRegistries.BLOCKS.getValue(rlFromString(blockName)); + Block block = BuiltInRegistries.BLOCK.get(rlFromString(blockName)); if (block != null) { blockItems.add(new ItemStack(block)); } @@ -75,7 +76,7 @@ private String formatConditionText(String[] condition, List blockNames) for (String blockName : blockNames) { if (!blockName.contains(":")) { ResourceLocation res = rl(blockName); - Block block = ForgeRegistries.BLOCKS.getValue(res); + Block block = BuiltInRegistries.BLOCK.get(res); if (block != null) { displayNames.add(block.getName().getString()); } diff --git a/src/main/java/igentuman/nc/compat/emi/EMIPlugin.java b/src/main/java/igentuman/nc/compat/emi/EMIPlugin.java index a0128ff04..07480dec4 100644 --- a/src/main/java/igentuman/nc/compat/emi/EMIPlugin.java +++ b/src/main/java/igentuman/nc/compat/emi/EMIPlugin.java @@ -15,9 +15,9 @@ import igentuman.nc.block.turbine.entity.TurbineControllerBE; import igentuman.nc.client.NcClient; import igentuman.nc.client.gui.processor.NCProcessorScreen; -import igentuman.nc.compat.ae2.ProcessorEmiRecipeHandlerAE2; + import igentuman.nc.compat.emi.ingredient.ParticleEmiStack; -import igentuman.nc.compat.refined_storage.ProcessorEmiRecipeHandlerRS; + import igentuman.nc.handler.config.ClientConfig; import igentuman.nc.compat.jei.ParticleRecipe; import igentuman.nc.compat.jei.ParticleSourceRecipe; @@ -38,7 +38,7 @@ import net.minecraft.client.gui.screens.inventory.AbstractContainerScreen; import net.minecraft.world.inventory.MenuType; import net.minecraft.world.item.ItemStack; -import net.minecraftforge.fluids.FluidStack; +import net.neoforged.neoforge.fluids.FluidStack; import java.util.ArrayList; import java.util.HashMap; @@ -455,13 +455,14 @@ private void registerRecipeHandlers(EmiRegistry registry) { var menuType = NCProcessors.PROCESSORS_CONTAINERS.get(name).get(); registry.addRecipeHandler((MenuType) menuType, new ProcessorEmiRecipeHandler<>()); } - if(ModUtil.isRefinedStorageLoaded()) { - registry.addRecipeHandler(com.refinedmods.refinedstorage.RSContainerMenus.GRID.get(), new ProcessorEmiRecipeHandlerRS<>()); - } - if(ModUtil.isAE2Loaded()) { - registry.addRecipeHandler(appeng.menu.me.items.PatternEncodingTermMenu.TYPE, new ProcessorEmiRecipeHandlerAE2<>()); - registry.addRecipeHandler(appeng.menu.me.items.PatternEncodingTermMenu.WIRELESS_TYPE, new ProcessorEmiRecipeHandlerAE2<>()); + // AE2 pattern encoding terminal handler + if (ModUtil.isAE2Loaded()) { + try { + registry.addRecipeHandler(appeng.menu.me.items.PatternEncodingTermMenu.TYPE, + new igentuman.nc.compat.ae2.ProcessorEmiRecipeHandlerAE2<>()); + } catch (NoClassDefFoundError ignored) {} } + // TODO: Refined Storage EMI recipe handler — waiting on RS to port to NeoForge 1.21.1. } private List particleInfoRecipes() { diff --git a/src/main/java/igentuman/nc/compat/emi/FissionBoilingEmiCategory.java b/src/main/java/igentuman/nc/compat/emi/FissionBoilingEmiCategory.java index 90da4d50f..43691fbb8 100644 --- a/src/main/java/igentuman/nc/compat/emi/FissionBoilingEmiCategory.java +++ b/src/main/java/igentuman/nc/compat/emi/FissionBoilingEmiCategory.java @@ -8,7 +8,7 @@ import igentuman.nc.block.fission.entity.FissionControllerBE; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.item.ItemStack; -import net.minecraftforge.fluids.FluidStack; +import net.neoforged.neoforge.fluids.FluidStack; import java.util.List; diff --git a/src/main/java/igentuman/nc/compat/emi/FusionCoolantEmiCategory.java b/src/main/java/igentuman/nc/compat/emi/FusionCoolantEmiCategory.java index 1eec4d521..057c4053a 100644 --- a/src/main/java/igentuman/nc/compat/emi/FusionCoolantEmiCategory.java +++ b/src/main/java/igentuman/nc/compat/emi/FusionCoolantEmiCategory.java @@ -8,7 +8,7 @@ import igentuman.nc.block.fusion.entity.FusionCoreBE; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.item.ItemStack; -import net.minecraftforge.fluids.FluidStack; +import net.neoforged.neoforge.fluids.FluidStack; import java.util.List; diff --git a/src/main/java/igentuman/nc/compat/emi/FusionEmiCategory.java b/src/main/java/igentuman/nc/compat/emi/FusionEmiCategory.java index d4e746e02..94d1293b6 100644 --- a/src/main/java/igentuman/nc/compat/emi/FusionEmiCategory.java +++ b/src/main/java/igentuman/nc/compat/emi/FusionEmiCategory.java @@ -8,7 +8,7 @@ import igentuman.nc.block.fusion.entity.FusionCoreBE; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.item.ItemStack; -import net.minecraftforge.fluids.FluidStack; +import net.neoforged.neoforge.fluids.FluidStack; import java.util.List; diff --git a/src/main/java/igentuman/nc/compat/emi/HeatSinkPlacementEmiRecipe.java b/src/main/java/igentuman/nc/compat/emi/HeatSinkPlacementEmiRecipe.java index 5b8b10929..df787c0e9 100644 --- a/src/main/java/igentuman/nc/compat/emi/HeatSinkPlacementEmiRecipe.java +++ b/src/main/java/igentuman/nc/compat/emi/HeatSinkPlacementEmiRecipe.java @@ -4,7 +4,8 @@ import net.minecraft.resources.ResourceLocation; import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.block.Block; -import net.minecraftforge.registries.ForgeRegistries; +import net.minecraft.core.registries.BuiltInRegistries; + import java.util.ArrayList; import java.util.HashMap; @@ -50,7 +51,7 @@ private List parseConditionGroups() { if (!blockName.contains(":")) { blockName = MODID + ":" + blockName; } - Block block = ForgeRegistries.BLOCKS.getValue(rlFromString(blockName)); + Block block = BuiltInRegistries.BLOCK.get(rlFromString(blockName)); if (block != null) { blockItems.add(new ItemStack(block)); } @@ -75,7 +76,7 @@ private String formatConditionText(String[] condition, List blockNames) for (String blockName : blockNames) { if (!blockName.contains(":")) { ResourceLocation res = rl(blockName); - Block block = ForgeRegistries.BLOCKS.getValue(res); + Block block = BuiltInRegistries.BLOCK.get(res); if (block != null) { displayNames.add(block.getName().getString()); } diff --git a/src/main/java/igentuman/nc/compat/emi/ProcessorEmiCategory.java b/src/main/java/igentuman/nc/compat/emi/ProcessorEmiCategory.java index 401f761be..1bb11a150 100644 --- a/src/main/java/igentuman/nc/compat/emi/ProcessorEmiCategory.java +++ b/src/main/java/igentuman/nc/compat/emi/ProcessorEmiCategory.java @@ -10,7 +10,7 @@ import igentuman.nc.recipes.type.NcRecipe; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.item.ItemStack; -import net.minecraftforge.fluids.FluidStack; +import net.neoforged.neoforge.fluids.FluidStack; import java.util.Arrays; import java.util.List; diff --git a/src/main/java/igentuman/nc/compat/emi/TurbineControllerEmiCategory.java b/src/main/java/igentuman/nc/compat/emi/TurbineControllerEmiCategory.java index 3a23e607f..0cba48d2f 100644 --- a/src/main/java/igentuman/nc/compat/emi/TurbineControllerEmiCategory.java +++ b/src/main/java/igentuman/nc/compat/emi/TurbineControllerEmiCategory.java @@ -8,7 +8,7 @@ import igentuman.nc.block.turbine.entity.TurbineControllerBE; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.item.ItemStack; -import net.minecraftforge.fluids.FluidStack; +import net.neoforged.neoforge.fluids.FluidStack; import java.util.List; diff --git a/src/main/java/igentuman/nc/compat/emi/ingredient/ParticleEmiStack.java b/src/main/java/igentuman/nc/compat/emi/ingredient/ParticleEmiStack.java index 9a04ed08e..1509ec3df 100644 --- a/src/main/java/igentuman/nc/compat/emi/ingredient/ParticleEmiStack.java +++ b/src/main/java/igentuman/nc/compat/emi/ingredient/ParticleEmiStack.java @@ -61,8 +61,8 @@ public ResourceLocation getId() { } @Override - public net.minecraft.nbt.CompoundTag getNbt() { - return null; // ParticleStack doesn't use NBT data + public net.minecraft.core.component.DataComponentPatch getComponentChanges() { + return net.minecraft.core.component.DataComponentPatch.EMPTY; } @Override diff --git a/src/main/java/igentuman/nc/compat/emi/ingredient/ParticleEmiStackRenderer.java b/src/main/java/igentuman/nc/compat/emi/ingredient/ParticleEmiStackRenderer.java index f4947e059..84f1b3c08 100644 --- a/src/main/java/igentuman/nc/compat/emi/ingredient/ParticleEmiStackRenderer.java +++ b/src/main/java/igentuman/nc/compat/emi/ingredient/ParticleEmiStackRenderer.java @@ -32,7 +32,6 @@ private static void renderParticle(GuiGraphics graphics, int x, int y, ParticleS } // Set up proper rendering state - RenderSystem.setShaderTexture(0, particle.getTexture()); RenderSystem.enableBlend(); RenderSystem.defaultBlendFunc(); diff --git a/src/main/java/igentuman/nc/compat/gregtech/GTEnergyContainer.java b/src/main/java/igentuman/nc/compat/gregtech/GTEnergyContainer.java index f1621a40c..d8bfe9170 100644 --- a/src/main/java/igentuman/nc/compat/gregtech/GTEnergyContainer.java +++ b/src/main/java/igentuman/nc/compat/gregtech/GTEnergyContainer.java @@ -6,7 +6,6 @@ import igentuman.nc.block.entity.NuclearCraftBE; import igentuman.nc.util.capability.CustomEnergyStorage; import net.minecraft.core.Direction; -import net.minecraftforge.common.util.LazyOptional; public class GTEnergyContainer implements IEnergyContainer { @@ -21,8 +20,8 @@ public GTEnergyContainer(CustomEnergyStorage feStorage, Direction side, NuclearC this.owner = tile; } - public static LazyOptional wrapped(CustomEnergyStorage feStorage, Direction side, NuclearCraftBE tile) { - return LazyOptional.of(() -> new GTEnergyContainer(feStorage, side, tile)); + public static GTEnergyContainer wrapped(CustomEnergyStorage feStorage, Direction side, NuclearCraftBE tile) { + return new GTEnergyContainer(feStorage, side, tile); } @Override diff --git a/src/main/java/igentuman/nc/compat/gregtech/GTUtils.java b/src/main/java/igentuman/nc/compat/gregtech/GTUtils.java index c733c4960..9abdcb86d 100644 --- a/src/main/java/igentuman/nc/compat/gregtech/GTUtils.java +++ b/src/main/java/igentuman/nc/compat/gregtech/GTUtils.java @@ -2,14 +2,13 @@ import com.gregtechceu.gtceu.api.capability.IEnergyContainer; import com.gregtechceu.gtceu.api.capability.compat.FeCompat; -import com.gregtechceu.gtceu.api.capability.forge.GTCapability; +import com.gregtechceu.gtceu.api.capability.GTCapability; import igentuman.nc.block.entity.NuclearCraftBE; import igentuman.nc.handler.config.CommonConfig.GTCEUCompatibilityConfig.GTCEUTier; import igentuman.nc.util.capability.CustomEnergyStorage; import igentuman.nc.util.TextUtils; import net.minecraft.core.Direction; import net.minecraft.world.level.block.entity.BlockEntity; -import net.minecraftforge.common.util.LazyOptional; import javax.annotation.Nullable; @@ -49,8 +48,10 @@ public static long tierByFe(int fe) { return tier; } - public static LazyOptional getGTEnergy(NuclearCraftBE energyHolder, @Nullable Direction side) { - return GTEnergyContainer.wrapped(energyHolder.energyStorage(), side, energyHolder).cast(); + // TODO: LazyOptional removed in NeoForge 1.21.1. GTCapability API may also have changed. + // Verify GTCapability usage with the NeoForge 1.21.1 version of GregTech. + public static IEnergyContainer getGTEnergy(NuclearCraftBE energyHolder, @Nullable Direction side) { + return GTEnergyContainer.wrapped(energyHolder.energyStorage(), side, energyHolder); } public static int convert2FE(long eu) { @@ -75,14 +76,27 @@ public static int EU2FERatio() { return FeCompat.ratio(false); } + // TODO: GTCapability.CAPABILITY_ENERGY_CONTAINER lookup needs updating for NeoForge 1.21.1. + // In NeoForge 1.21.1, use level.getCapability(GTCapability.CAPABILITY_ENERGY_CONTAINER, pos, side) + // or the GregTech NeoForge equivalent. Verify with GregTech NeoForge 1.21.1 API. public static void transferEU(NuclearCraftBE nuclearCraftBE, BlockEntity be, CustomEnergyStorage energyStorage, Direction direction) { int amps = (int) (energyStorage.getEnergyStored() / (energyStorage.getGTOuputVoltage() * EU2FERatio())); amps = (int) Math.min(amps, energyStorage.getGTOutputAmperage()); if(amps < 1) { return; } - if (be.getCapability(GTCapability.CAPABILITY_ENERGY_CONTAINER, direction.getOpposite()).isPresent()) { - IEnergyContainer gtEnergyContainer = be.getCapability(GTCapability.CAPABILITY_ENERGY_CONTAINER, direction.getOpposite()).orElse(null); + if (be.getLevel() != null) { + // TODO: Update GTCapability lookup for NeoForge 1.21.1 block capability API + IEnergyContainer gtEnergyContainer = null; + try { + gtEnergyContainer = be.getLevel().getCapability( + GTCapability.CAPABILITY_ENERGY_CONTAINER, + be.getBlockPos(), + direction.getOpposite() + ); + } catch (Exception ignored) { + // GT capability lookup may not match this signature yet + } if (gtEnergyContainer != null) { long outAmps = gtEnergyContainer.acceptEnergyFromNetwork(direction.getOpposite(), energyStorage.getGTOuputVoltage(), amps); long received = outAmps * energyStorage.getGTOuputVoltage(); diff --git a/src/main/java/igentuman/nc/compat/jei/AcceleratorCoolantCategoryWrapper.java b/src/main/java/igentuman/nc/compat/jei/AcceleratorCoolantCategoryWrapper.java index 2acfc06fb..7982de059 100644 --- a/src/main/java/igentuman/nc/compat/jei/AcceleratorCoolantCategoryWrapper.java +++ b/src/main/java/igentuman/nc/compat/jei/AcceleratorCoolantCategoryWrapper.java @@ -3,7 +3,7 @@ import igentuman.nc.block.accelerator.entity.LinearAcceleratorControllerBE; import igentuman.nc.compat.jei.util.TickTimer; import mezz.jei.api.constants.VanillaTypes; -import mezz.jei.api.forge.ForgeTypes; +import mezz.jei.api.neoforge.NeoForgeTypes; import mezz.jei.api.gui.builder.IRecipeLayoutBuilder; import mezz.jei.api.gui.drawable.IDrawable; import mezz.jei.api.gui.drawable.IDrawableAnimated; @@ -33,7 +33,7 @@ @SuppressWarnings("removal") public class AcceleratorCoolantCategoryWrapper implements IRecipeCategory { public final static ResourceLocation TEXTURE = - new ResourceLocation(MODID, "textures/gui/processor_jei.png"); + ResourceLocation.fromNamespaceAndPath(MODID, "textures/gui/processor_jei.png"); private final IDrawable background; private final IDrawable icon; @@ -99,13 +99,13 @@ public void setRecipe(@NotNull IRecipeLayoutBuilder builder, T recipe, @NotNull .buildAnimated(new TickTimer(100, 36, true), IDrawableAnimated.StartDirection.LEFT); builder.addSlot(RecipeIngredientRole.INPUT, 12, 6) - .addIngredients(ForgeTypes.FLUID_STACK, recipe.getInputFluids(0)) + .addIngredients(NeoForgeTypes.FLUID_STACK, recipe.getInputFluids(0)) .setFluidRenderer(recipe.getInputFluids()[0].getAmount(), false, 16, 16); slots[0] = guiHelper.createDrawable(rl("textures/gui/widgets.png"), 18, 0, 18, 18); builder.addSlot(RecipeIngredientRole.OUTPUT, 75, 6) - .addIngredients(ForgeTypes.FLUID_STACK, recipe.getOutputFluids(0)) + .addIngredients(NeoForgeTypes.FLUID_STACK, recipe.getOutputFluids(0)) .setFluidRenderer(recipe.getOutputFluids().get(0).getAmount(), false, 16, 16); slots[1] = guiHelper.createDrawable(rl("textures/gui/widgets.png"), 18, 0, 18, 18); diff --git a/src/main/java/igentuman/nc/compat/jei/CoolerPlacementRecipe.java b/src/main/java/igentuman/nc/compat/jei/CoolerPlacementRecipe.java index db09b92ea..b7cf1c56d 100644 --- a/src/main/java/igentuman/nc/compat/jei/CoolerPlacementRecipe.java +++ b/src/main/java/igentuman/nc/compat/jei/CoolerPlacementRecipe.java @@ -4,7 +4,8 @@ import net.minecraft.resources.ResourceLocation; import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.block.Block; -import net.minecraftforge.registries.ForgeRegistries; +import net.minecraft.core.registries.BuiltInRegistries; + import java.util.ArrayList; import java.util.HashMap; @@ -50,7 +51,7 @@ private List parseConditionGroups() { if (!blockName.contains(":")) { blockName = MODID + ":" + blockName; } - Block block = ForgeRegistries.BLOCKS.getValue(rlFromString(blockName)); + Block block = BuiltInRegistries.BLOCK.get(rlFromString(blockName)); if (block != null) { blockItems.add(new ItemStack(block)); } @@ -75,7 +76,7 @@ private String formatConditionText(String[] condition, List blockNames) for (String blockName : blockNames) { if (!blockName.contains(":")) { ResourceLocation res = rl(blockName); - Block block = ForgeRegistries.BLOCKS.getValue(res); + Block block = BuiltInRegistries.BLOCK.get(res); if (block != null) { displayNames.add(block.getName().getString()); } diff --git a/src/main/java/igentuman/nc/compat/jei/FissionBoilingCategoryWrapper.java b/src/main/java/igentuman/nc/compat/jei/FissionBoilingCategoryWrapper.java index 662683182..a32a4190d 100644 --- a/src/main/java/igentuman/nc/compat/jei/FissionBoilingCategoryWrapper.java +++ b/src/main/java/igentuman/nc/compat/jei/FissionBoilingCategoryWrapper.java @@ -3,7 +3,7 @@ import igentuman.nc.block.fission.entity.FissionControllerBE; import igentuman.nc.compat.jei.util.TickTimer; import mezz.jei.api.constants.VanillaTypes; -import mezz.jei.api.forge.ForgeTypes; +import mezz.jei.api.neoforge.NeoForgeTypes; import mezz.jei.api.gui.builder.IRecipeLayoutBuilder; import mezz.jei.api.gui.drawable.IDrawable; import mezz.jei.api.gui.drawable.IDrawableAnimated; @@ -32,7 +32,7 @@ @SuppressWarnings("removal") public class FissionBoilingCategoryWrapper implements IRecipeCategory { public final static ResourceLocation TEXTURE = - new ResourceLocation(MODID, "textures/gui/processor_jei.png"); + ResourceLocation.fromNamespaceAndPath(MODID, "textures/gui/processor_jei.png"); private final IDrawable background; private final IDrawable icon; @@ -98,13 +98,13 @@ public void setRecipe(@NotNull IRecipeLayoutBuilder builder, T recipe, @NotNull .buildAnimated(new TickTimer(100, 36, true), IDrawableAnimated.StartDirection.LEFT); builder.addSlot(RecipeIngredientRole.INPUT, 12, 6) - .addIngredients(ForgeTypes.FLUID_STACK, recipe.getInputFluids(0)) + .addIngredients(NeoForgeTypes.FLUID_STACK, recipe.getInputFluids(0)) .setFluidRenderer(recipe.getInputFluids()[0].getAmount(), false, 16, 16); slots[0] = guiHelper.createDrawable(rl("textures/gui/widgets.png"), 18, 0, 18, 18); builder.addSlot(RecipeIngredientRole.OUTPUT, 75, 6) - .addIngredients(ForgeTypes.FLUID_STACK, recipe.getOutputFluids(0)) + .addIngredients(NeoForgeTypes.FLUID_STACK, recipe.getOutputFluids(0)) .setFluidRenderer(recipe.getOutputFluids().get(0).getAmount(), false, 16, 16); slots[1] = guiHelper.createDrawable(rl("textures/gui/widgets.png"), 18, 0, 18, 18); diff --git a/src/main/java/igentuman/nc/compat/jei/FissionCategoryWrapper.java b/src/main/java/igentuman/nc/compat/jei/FissionCategoryWrapper.java index 716e14f21..02f1e0d39 100644 --- a/src/main/java/igentuman/nc/compat/jei/FissionCategoryWrapper.java +++ b/src/main/java/igentuman/nc/compat/jei/FissionCategoryWrapper.java @@ -33,7 +33,7 @@ @SuppressWarnings("removal") public class FissionCategoryWrapper implements IRecipeCategory { public final static ResourceLocation TEXTURE = - new ResourceLocation(MODID, "textures/gui/fission/jei.png"); + ResourceLocation.fromNamespaceAndPath(MODID, "textures/gui/fission/jei.png"); private final IDrawable background; private final IDrawable icon; diff --git a/src/main/java/igentuman/nc/compat/jei/FusionCategoryWrapper.java b/src/main/java/igentuman/nc/compat/jei/FusionCategoryWrapper.java index b00368be0..014be9152 100644 --- a/src/main/java/igentuman/nc/compat/jei/FusionCategoryWrapper.java +++ b/src/main/java/igentuman/nc/compat/jei/FusionCategoryWrapper.java @@ -3,7 +3,7 @@ import igentuman.nc.block.fusion.entity.FusionCoreBE; import igentuman.nc.compat.jei.util.TickTimer; import mezz.jei.api.constants.VanillaTypes; -import mezz.jei.api.forge.ForgeTypes; +import mezz.jei.api.neoforge.NeoForgeTypes; import mezz.jei.api.gui.builder.IRecipeLayoutBuilder; import mezz.jei.api.gui.drawable.IDrawable; import mezz.jei.api.gui.drawable.IDrawableAnimated; @@ -34,7 +34,7 @@ @SuppressWarnings("removal") public class FusionCategoryWrapper implements IRecipeCategory { public final static ResourceLocation TEXTURE = - new ResourceLocation(MODID, "textures/gui/processor_jei.png"); + ResourceLocation.fromNamespaceAndPath(MODID, "textures/gui/processor_jei.png"); private final IDrawable background; private final IDrawable icon; @@ -118,7 +118,7 @@ public void setRecipe(IRecipeLayoutBuilder builder, T recipe, IFocusGroup focuse int idx = 0; for(int i = 0; i < 2; i++) { builder.addSlot(RecipeIngredientRole.INPUT, 12+10*i, 6) - .addIngredients(ForgeTypes.FLUID_STACK, recipe.getInputFluids(i)) + .addIngredients(NeoForgeTypes.FLUID_STACK, recipe.getInputFluids(i)) .setFluidRenderer((recipe.getInputFluids()[i].getAmount())/2, false, 6, 34); slots[idx] = guiHelper.createDrawable(rl("textures/gui/widgets.png"), 34, 90, 8, 36); idx++; @@ -127,7 +127,7 @@ public void setRecipe(IRecipeLayoutBuilder builder, T recipe, IFocusGroup focuse for(int i = 0; i < 4; i++) { if(recipe.getOutputFluids().size() > i) { builder.addSlot(RecipeIngredientRole.OUTPUT, 75 + 10 * i, 6) - .addIngredients(ForgeTypes.FLUID_STACK, recipe.getOutputFluids(i)) + .addIngredients(NeoForgeTypes.FLUID_STACK, recipe.getOutputFluids(i)) .setFluidRenderer((recipe.getOutputFluids().get(i).getAmount()) / 2, false, 6, 34); } slots[idx] = guiHelper.createDrawable(rl("textures/gui/widgets.png"), 34, 90, 8, 38); diff --git a/src/main/java/igentuman/nc/compat/jei/FusionCoolantCategoryWrapper.java b/src/main/java/igentuman/nc/compat/jei/FusionCoolantCategoryWrapper.java index 3867f5ed3..1fb7265e0 100644 --- a/src/main/java/igentuman/nc/compat/jei/FusionCoolantCategoryWrapper.java +++ b/src/main/java/igentuman/nc/compat/jei/FusionCoolantCategoryWrapper.java @@ -3,7 +3,7 @@ import igentuman.nc.block.fusion.entity.FusionCoreBE; import igentuman.nc.compat.jei.util.TickTimer; import mezz.jei.api.constants.VanillaTypes; -import mezz.jei.api.forge.ForgeTypes; +import mezz.jei.api.neoforge.NeoForgeTypes; import mezz.jei.api.gui.builder.IRecipeLayoutBuilder; import mezz.jei.api.gui.drawable.IDrawable; import mezz.jei.api.gui.drawable.IDrawableAnimated; @@ -33,7 +33,7 @@ @SuppressWarnings("removal") public class FusionCoolantCategoryWrapper implements IRecipeCategory { public final static ResourceLocation TEXTURE = - new ResourceLocation(MODID, "textures/gui/processor_jei.png"); + ResourceLocation.fromNamespaceAndPath(MODID, "textures/gui/processor_jei.png"); private final IDrawable background; private final IDrawable icon; @@ -99,13 +99,13 @@ public void setRecipe(@NotNull IRecipeLayoutBuilder builder, T recipe, @NotNull .buildAnimated(new TickTimer(100, 36, true), IDrawableAnimated.StartDirection.LEFT); builder.addSlot(RecipeIngredientRole.INPUT, 12, 6) - .addIngredients(ForgeTypes.FLUID_STACK, recipe.getInputFluids(0)) + .addIngredients(NeoForgeTypes.FLUID_STACK, recipe.getInputFluids(0)) .setFluidRenderer(recipe.getInputFluids()[0].getAmount(), false, 16, 16); slots[0] = guiHelper.createDrawable(rl("textures/gui/widgets.png"), 18, 0, 18, 18); builder.addSlot(RecipeIngredientRole.OUTPUT, 75, 6) - .addIngredients(ForgeTypes.FLUID_STACK, recipe.getOutputFluids(0)) + .addIngredients(NeoForgeTypes.FLUID_STACK, recipe.getOutputFluids(0)) .setFluidRenderer(recipe.getOutputFluids().get(0).getAmount(), false, 16, 16); slots[1] = guiHelper.createDrawable(rl("textures/gui/widgets.png"), 18, 0, 18, 18); diff --git a/src/main/java/igentuman/nc/compat/jei/HeatSinkPlacementRecipe.java b/src/main/java/igentuman/nc/compat/jei/HeatSinkPlacementRecipe.java index a1061b4b6..342371b30 100644 --- a/src/main/java/igentuman/nc/compat/jei/HeatSinkPlacementRecipe.java +++ b/src/main/java/igentuman/nc/compat/jei/HeatSinkPlacementRecipe.java @@ -4,7 +4,8 @@ import net.minecraft.resources.ResourceLocation; import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.block.Block; -import net.minecraftforge.registries.ForgeRegistries; +import net.minecraft.core.registries.BuiltInRegistries; + import java.util.ArrayList; import java.util.HashMap; @@ -46,7 +47,7 @@ private List parseConditionGroups() { if (!blockName.contains(":")) { blockName = MODID + ":" + blockName; } - Block block = ForgeRegistries.BLOCKS.getValue(rlFromString(blockName)); + Block block = BuiltInRegistries.BLOCK.get(rlFromString(blockName)); if (block != null) { blockItems.add(new ItemStack(block)); } @@ -71,7 +72,7 @@ private String formatConditionText(String[] condition, List blockNames) for (String blockName : blockNames) { if (!blockName.contains(":")) { ResourceLocation res = rl(blockName); - Block block = ForgeRegistries.BLOCKS.getValue(res); + Block block = BuiltInRegistries.BLOCK.get(res); if (block != null) { displayNames.add(block.getName().getString()); } diff --git a/src/main/java/igentuman/nc/compat/jei/JEIPlugin.java b/src/main/java/igentuman/nc/compat/jei/JEIPlugin.java index 90b816968..81182b597 100644 --- a/src/main/java/igentuman/nc/compat/jei/JEIPlugin.java +++ b/src/main/java/igentuman/nc/compat/jei/JEIPlugin.java @@ -329,7 +329,7 @@ private List loadMultiblockStructures() { Optional structure = resourceManager.getResource(rl("structures/" + file)); CompoundTag nbt = null; try { - nbt = NbtIo.readCompressed(structure.get().open()); + nbt = NbtIo.readCompressed(structure.get().open(), net.minecraft.nbt.NbtAccounter.unlimitedHeap()); } catch (IOException e) { continue; } diff --git a/src/main/java/igentuman/nc/compat/jei/KugelblitzCategoryWrapper.java b/src/main/java/igentuman/nc/compat/jei/KugelblitzCategoryWrapper.java index b12a8d3d7..aba4a44b0 100644 --- a/src/main/java/igentuman/nc/compat/jei/KugelblitzCategoryWrapper.java +++ b/src/main/java/igentuman/nc/compat/jei/KugelblitzCategoryWrapper.java @@ -36,7 +36,7 @@ @SuppressWarnings("removal") public class KugelblitzCategoryWrapper implements IRecipeCategory { public final static ResourceLocation TEXTURE = - new ResourceLocation(MODID, "textures/gui/fission/jei.png"); + ResourceLocation.fromNamespaceAndPath(MODID, "textures/gui/fission/jei.png"); private final IDrawable background; private final IDrawable icon; @@ -106,7 +106,7 @@ public void setRecipe(IRecipeLayoutBuilder builder, T recipe, IFocusGroup focuse } for(int i = 0; i < recipe.getItemIngredients().size(); i++) { if(recipe.getResultItem().is(resolveStackByModPriority(recipe.getItemIngredients().get(i).getItems()).getItem())) { - builder.addSlot(RecipeIngredientRole.INPUT, 11+18*i, 7).addIngredients(NcIngredient.of(UNKNOWN_INGREDIENT.get())); + builder.addSlot(RecipeIngredientRole.INPUT, 11+18*i, 7).addIngredients(NcIngredient.of(UNKNOWN_INGREDIENT.get()).asIngredient()); } else { builder.addSlot(RecipeIngredientRole.INPUT, 11+18*i, 7).addIngredients(recipe.getItemIngredients().get(i)); } diff --git a/src/main/java/igentuman/nc/compat/jei/MSRCategoryWrapper.java b/src/main/java/igentuman/nc/compat/jei/MSRCategoryWrapper.java index cd91d2904..37b3259af 100644 --- a/src/main/java/igentuman/nc/compat/jei/MSRCategoryWrapper.java +++ b/src/main/java/igentuman/nc/compat/jei/MSRCategoryWrapper.java @@ -34,7 +34,7 @@ @SuppressWarnings("removal") public class MSRCategoryWrapper implements IRecipeCategory { public final static ResourceLocation TEXTURE = - new ResourceLocation(MODID, "textures/gui/fission/jei.png"); + ResourceLocation.fromNamespaceAndPath(MODID, "textures/gui/fission/jei.png"); private final IDrawable background; private final IDrawable icon; diff --git a/src/main/java/igentuman/nc/compat/jei/MekChemicalConversionCategoryWrapper.java b/src/main/java/igentuman/nc/compat/jei/MekChemicalConversionCategoryWrapper.java index 693000678..be6bd5584 100644 --- a/src/main/java/igentuman/nc/compat/jei/MekChemicalConversionCategoryWrapper.java +++ b/src/main/java/igentuman/nc/compat/jei/MekChemicalConversionCategoryWrapper.java @@ -2,11 +2,10 @@ import igentuman.nc.compat.jei.util.TickTimer; import igentuman.nc.recipes.type.MekChemicalConversionRecipe; -import mekanism.api.chemical.gas.GasStack; -import mekanism.api.chemical.slurry.SlurryStack; -import mekanism.client.jei.MekanismJEI; +import mekanism.api.chemical.ChemicalStack; +import mekanism.client.recipe_viewer.jei.MekanismJEI; import mezz.jei.api.constants.VanillaTypes; -import mezz.jei.api.forge.ForgeTypes; +import mezz.jei.api.neoforge.NeoForgeTypes; import mezz.jei.api.gui.builder.IRecipeLayoutBuilder; import mezz.jei.api.gui.drawable.IDrawable; import mezz.jei.api.gui.drawable.IDrawableAnimated; @@ -35,7 +34,7 @@ @SuppressWarnings("removal") public class MekChemicalConversionCategoryWrapper implements IRecipeCategory { public final static ResourceLocation TEXTURE = - new ResourceLocation(MODID, "textures/gui/processor_jei.png"); + ResourceLocation.fromNamespaceAndPath(MODID, "textures/gui/processor_jei.png"); private final IDrawable background; private final IDrawable icon; @@ -98,18 +97,12 @@ public void setRecipe(@NotNull IRecipeLayoutBuilder builder, T recipe, @NotNull arrow = guiHelper.drawableBuilder(rl("textures/gui/progress.png"), 0, 0, 36, 15) .buildAnimated(new TickTimer(100, 36, true), IDrawableAnimated.StartDirection.LEFT); - if(recipe.inputChemical instanceof GasStack) { - builder.addSlot(RecipeIngredientRole.INPUT, 12, 6) - .addIngredients(MekanismJEI.TYPE_GAS, List.of((GasStack) recipe.inputChemical)); - } - if(recipe.inputChemical instanceof SlurryStack) { - builder.addSlot(RecipeIngredientRole.INPUT, 12, 6) - .addIngredients(MekanismJEI.TYPE_SLURRY, List.of((SlurryStack) recipe.inputChemical)); - } + builder.addSlot(RecipeIngredientRole.INPUT, 12, 6) + .addIngredients(MekanismJEI.TYPE_CHEMICAL, List.of(recipe.inputChemical)); slots[0] = guiHelper.createDrawable(rl("textures/gui/widgets.png"), 18, 0, 18, 18); builder.addSlot(RecipeIngredientRole.OUTPUT, 75, 6) - .addIngredients(ForgeTypes.FLUID_STACK, List.of(recipe.outputFluid)) + .addIngredients(NeoForgeTypes.FLUID_STACK, List.of(recipe.outputFluid)) .setFluidRenderer(1000, false, 16, 16); slots[1] = guiHelper.createDrawable(rl("textures/gui/widgets.png"), 18, 0, 18, 18); } diff --git a/src/main/java/igentuman/nc/compat/jei/MultiblockStructure.java b/src/main/java/igentuman/nc/compat/jei/MultiblockStructure.java index 2cc51fa77..74ecf3796 100644 --- a/src/main/java/igentuman/nc/compat/jei/MultiblockStructure.java +++ b/src/main/java/igentuman/nc/compat/jei/MultiblockStructure.java @@ -7,14 +7,14 @@ import net.minecraft.resources.ResourceLocation; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.state.BlockState; -import net.minecraftforge.registries.ForgeRegistries; +import net.minecraft.core.registries.BuiltInRegistries; + import java.util.HashMap; import java.util.Map; import java.util.Optional; import static igentuman.nc.util.NcUtils.rlFromString; -import static net.minecraft.world.level.block.state.StateHolder.PROPERTIES_TAG; public class MultiblockStructure { private final Map blocks = new HashMap<>(); @@ -38,13 +38,13 @@ public MultiblockStructure(CompoundTag nbt) { BlockPos pos = new BlockPos(x, y, z); String blockId = state.getString("Name"); - Block block = ForgeRegistries.BLOCKS.getValue(rlFromString(blockId)); + Block block = BuiltInRegistries.BLOCK.get(rlFromString(blockId)); if (block != null) { BlockState bs = block.defaultBlockState(); // Handle block state properties if they exist - if (state.contains(PROPERTIES_TAG, Tag.TAG_COMPOUND)) { + if (state.contains("Properties", Tag.TAG_COMPOUND)) { CompoundTag properties = state.getCompound("Properties"); for(String pKey: state.getCompound("Properties").getAllKeys()) { for (net.minecraft.world.level.block.state.properties.Property property : bs.getProperties()) { diff --git a/src/main/java/igentuman/nc/compat/jei/MultiblockStructureCategory.java b/src/main/java/igentuman/nc/compat/jei/MultiblockStructureCategory.java index f12facd5c..1fa41ff2b 100644 --- a/src/main/java/igentuman/nc/compat/jei/MultiblockStructureCategory.java +++ b/src/main/java/igentuman/nc/compat/jei/MultiblockStructureCategory.java @@ -26,7 +26,7 @@ import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.BlockAndTintGetter; import net.minecraft.world.level.block.state.BlockState; -import net.minecraftforge.client.model.data.ModelData; +import net.neoforged.neoforge.client.model.data.ModelData; import org.joml.Matrix4f; import org.joml.Quaternionf; import org.lwjgl.glfw.GLFW; @@ -40,7 +40,7 @@ @SuppressWarnings("removal") public class MultiblockStructureCategory implements IRecipeCategory { - public static final ResourceLocation UID = new ResourceLocation(MODID, "multiblock_structure"); + public static final ResourceLocation UID = ResourceLocation.fromNamespaceAndPath(MODID, "multiblock_structure"); public static final RecipeType TYPE = RecipeType.create(MODID, "multiblock_structure", MultiblockStructureRecipe.class); private boolean isMouseDragging = false; private double lastMouseX = 0; diff --git a/src/main/java/igentuman/nc/compat/jei/OreVeinCategoryWrapper.java b/src/main/java/igentuman/nc/compat/jei/OreVeinCategoryWrapper.java index fe30000ca..521e1dea9 100644 --- a/src/main/java/igentuman/nc/compat/jei/OreVeinCategoryWrapper.java +++ b/src/main/java/igentuman/nc/compat/jei/OreVeinCategoryWrapper.java @@ -26,7 +26,7 @@ @SuppressWarnings("removal") public class OreVeinCategoryWrapper implements IRecipeCategory { public final static ResourceLocation TEXTURE = - new ResourceLocation(MODID, "textures/gui/ore_veins_jei.png"); + ResourceLocation.fromNamespaceAndPath(MODID, "textures/gui/ore_veins_jei.png"); private final IDrawable background; private final IDrawable icon; diff --git a/src/main/java/igentuman/nc/compat/jei/ParticleSourceCategory.java b/src/main/java/igentuman/nc/compat/jei/ParticleSourceCategory.java index 4a2729fe2..836686557 100644 --- a/src/main/java/igentuman/nc/compat/jei/ParticleSourceCategory.java +++ b/src/main/java/igentuman/nc/compat/jei/ParticleSourceCategory.java @@ -3,7 +3,6 @@ import igentuman.nc.compat.jei.ingredient.ParticleType; import igentuman.nc.content.particles.ParticleStack; import igentuman.nc.content.particles.Particles; -import mezz.jei.api.forge.ForgeTypes; import mezz.jei.api.gui.builder.IRecipeLayoutBuilder; import mezz.jei.api.gui.drawable.IDrawable; import mezz.jei.api.helpers.IGuiHelper; @@ -24,7 +23,7 @@ @SuppressWarnings("removal") public class ParticleSourceCategory implements IRecipeCategory { public final static ResourceLocation TEXTURE = - new ResourceLocation(MODID, "textures/gui/small_window.png"); + ResourceLocation.fromNamespaceAndPath(MODID, "textures/gui/small_window.png"); public static final RecipeType TYPE = RecipeType.create(MODID, "particle_source_info", ParticleSourceRecipe.class); private final IDrawable background; private final IDrawable icon; diff --git a/src/main/java/igentuman/nc/compat/jei/ParticleSourceRecipe.java b/src/main/java/igentuman/nc/compat/jei/ParticleSourceRecipe.java index b8a070748..665cb1cd5 100644 --- a/src/main/java/igentuman/nc/compat/jei/ParticleSourceRecipe.java +++ b/src/main/java/igentuman/nc/compat/jei/ParticleSourceRecipe.java @@ -4,7 +4,7 @@ import igentuman.nc.content.particles.ParticleStack; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.item.ItemStack; -import net.minecraftforge.fluids.FluidStack; +import net.neoforged.neoforge.fluids.FluidStack; import static igentuman.nc.NuclearCraft.rl; diff --git a/src/main/java/igentuman/nc/compat/jei/ProcessorCategoryWrapper.java b/src/main/java/igentuman/nc/compat/jei/ProcessorCategoryWrapper.java index 130fe5094..04d2d68ac 100644 --- a/src/main/java/igentuman/nc/compat/jei/ProcessorCategoryWrapper.java +++ b/src/main/java/igentuman/nc/compat/jei/ProcessorCategoryWrapper.java @@ -6,7 +6,7 @@ import igentuman.nc.recipes.ingredient.FluidStackIngredient; import igentuman.nc.recipes.type.NcRecipe; import mezz.jei.api.constants.VanillaTypes; -import mezz.jei.api.forge.ForgeTypes; +import mezz.jei.api.neoforge.NeoForgeTypes; import mezz.jei.api.gui.builder.IRecipeLayoutBuilder; import mezz.jei.api.gui.drawable.IDrawable; import mezz.jei.api.gui.drawable.IDrawableAnimated; @@ -21,7 +21,7 @@ import net.minecraft.network.chat.Component; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.item.ItemStack; -import net.minecraftforge.fluids.FluidStack; +import net.neoforged.neoforge.fluids.FluidStack; import org.jetbrains.annotations.NotNull; import java.util.ArrayList; @@ -195,7 +195,7 @@ public void setRecipe(@NotNull IRecipeLayoutBuilder builder, T recipe, @NotNull } else if(processor.getSlotsConfig().getSlotType(itemIdx).contains("fluid_in")) { if(!recipe.getInputFluids(inputFluidCounter).get(0).equals(FluidStack.EMPTY)) { builder.addSlot(RecipeIngredientRole.INPUT, pos[0]+xShift+barXshift, pos[1]+yShift) - .addIngredients(ForgeTypes.FLUID_STACK, recipe.getInputFluids(inputFluidCounter)) + .addIngredients(NeoForgeTypes.FLUID_STACK, recipe.getInputFluids(inputFluidCounter)) .setFluidRenderer((fluidTankCapacity+recipe.getInputFluids()[inputFluidCounter].getAmount())/2, false, 16, 16);; } slots[itemIdx] = guiHelper.createDrawable(rl("textures/gui/widgets.png"), 18, 0, 18, 18); @@ -204,7 +204,7 @@ public void setRecipe(@NotNull IRecipeLayoutBuilder builder, T recipe, @NotNull } else if(processor.getSlotsConfig().getSlotType(itemIdx).contains("fluid_out")) { if (!recipe.getOutputFluids(putFluidCounter).get(0).equals(FluidStack.EMPTY)) { builder.addSlot(RecipeIngredientRole.OUTPUT, pos[0] + xShift + barXshift, pos[1] + yShift) - .addIngredients(ForgeTypes.FLUID_STACK, recipe.getOutputFluids(putFluidCounter)) + .addIngredients(NeoForgeTypes.FLUID_STACK, recipe.getOutputFluids(putFluidCounter)) .setFluidRenderer((fluidTankCapacity+recipe.getOutputFluids().get(putFluidCounter).getAmount())/2, false, 16, 16); } slots[itemIdx] = guiHelper.createDrawable(rl("textures/gui/widgets.png"), 18, 36, 18, 18); diff --git a/src/main/java/igentuman/nc/compat/jei/ProcessorRecipeTransferHandler.java b/src/main/java/igentuman/nc/compat/jei/ProcessorRecipeTransferHandler.java index 5a6c53945..6a06dcd5d 100644 --- a/src/main/java/igentuman/nc/compat/jei/ProcessorRecipeTransferHandler.java +++ b/src/main/java/igentuman/nc/compat/jei/ProcessorRecipeTransferHandler.java @@ -92,7 +92,7 @@ public RecipeType getRecipeType() { private boolean hasItemInInventory(Player player, ItemStack required) { for (int i = 0; i < player.getInventory().getContainerSize(); i++) { ItemStack stack = player.getInventory().getItem(i); - if (ItemStack.isSameItemSameTags(stack, required) && stack.getCount() >= required.getCount()) { + if (ItemStack.isSameItemSameComponents(stack, required) && stack.getCount() >= required.getCount()) { return true; } } diff --git a/src/main/java/igentuman/nc/compat/jei/TargetChamberCategoryWrapper.java b/src/main/java/igentuman/nc/compat/jei/TargetChamberCategoryWrapper.java index 07ef7744d..21abd8af4 100644 --- a/src/main/java/igentuman/nc/compat/jei/TargetChamberCategoryWrapper.java +++ b/src/main/java/igentuman/nc/compat/jei/TargetChamberCategoryWrapper.java @@ -4,7 +4,7 @@ import igentuman.nc.compat.jei.ingredient.ParticleType; import igentuman.nc.util.Units; import mezz.jei.api.constants.VanillaTypes; -import mezz.jei.api.forge.ForgeTypes; +import mezz.jei.api.neoforge.NeoForgeTypes; import mezz.jei.api.gui.builder.IRecipeLayoutBuilder; import mezz.jei.api.gui.drawable.IDrawable; import mezz.jei.api.gui.ingredient.IRecipeSlotsView; @@ -33,7 +33,7 @@ @SuppressWarnings("removal") public class TargetChamberCategoryWrapper implements IRecipeCategory { public final static ResourceLocation TEXTURE = - new ResourceLocation(MODID, "textures/gui/accelerators/target_chamber_controller.png"); + ResourceLocation.fromNamespaceAndPath(MODID, "textures/gui/accelerators/target_chamber_controller.png"); private final IDrawable background; private final IDrawable icon; @@ -92,14 +92,14 @@ public void setRecipe(IRecipeLayoutBuilder builder, T recipe, IFocusGroup focuse if(recipe.getInputFluids().length > 0) { builder.addSlot(RecipeIngredientRole.INPUT, 43, 45) - .addIngredients(ForgeTypes.FLUID_STACK, recipe.getInputFluids(0)) + .addIngredients(NeoForgeTypes.FLUID_STACK, recipe.getInputFluids(0)) .setFluidRenderer(recipe.getInputFluids()[0].getAmount(), false, 16, 16); guiHelper.createDrawable(rl("textures/gui/widgets.png"), 18, 0, 18, 18); } if(!recipe.getOutputFluids().isEmpty()) { builder.addSlot(RecipeIngredientRole.OUTPUT, 101, 45) - .addIngredients(ForgeTypes.FLUID_STACK, recipe.getOutputFluids(0)) + .addIngredients(NeoForgeTypes.FLUID_STACK, recipe.getOutputFluids(0)) .setFluidRenderer(recipe.getOutputFluids().get(0).getAmount(), false, 16, 16); guiHelper.createDrawable(rl("textures/gui/widgets.png"), 18, 0, 18, 18); } diff --git a/src/main/java/igentuman/nc/compat/jei/TurbineControllerCategoryWrapper.java b/src/main/java/igentuman/nc/compat/jei/TurbineControllerCategoryWrapper.java index 23d9b1be1..938f0efa4 100644 --- a/src/main/java/igentuman/nc/compat/jei/TurbineControllerCategoryWrapper.java +++ b/src/main/java/igentuman/nc/compat/jei/TurbineControllerCategoryWrapper.java @@ -3,7 +3,7 @@ import igentuman.nc.block.turbine.entity.TurbineControllerBE; import igentuman.nc.compat.jei.util.TickTimer; import mezz.jei.api.constants.VanillaTypes; -import mezz.jei.api.forge.ForgeTypes; +import mezz.jei.api.neoforge.NeoForgeTypes; import mezz.jei.api.gui.builder.IRecipeLayoutBuilder; import mezz.jei.api.gui.drawable.IDrawable; import mezz.jei.api.gui.drawable.IDrawableAnimated; @@ -32,7 +32,7 @@ @SuppressWarnings("removal") public class TurbineControllerCategoryWrapper implements IRecipeCategory { public final static ResourceLocation TEXTURE = - new ResourceLocation(MODID, "textures/gui/processor_jei.png"); + ResourceLocation.fromNamespaceAndPath(MODID, "textures/gui/processor_jei.png"); private final IDrawable background; private final IDrawable icon; @@ -98,13 +98,13 @@ public void setRecipe(@NotNull IRecipeLayoutBuilder builder, T recipe, @NotNull .buildAnimated(new TickTimer(100, 36, true), IDrawableAnimated.StartDirection.LEFT); builder.addSlot(RecipeIngredientRole.INPUT, 12, 6) - .addIngredients(ForgeTypes.FLUID_STACK, recipe.getInputFluids(0)) + .addIngredients(NeoForgeTypes.FLUID_STACK, recipe.getInputFluids(0)) .setFluidRenderer(recipe.getInputFluids()[0].getAmount(), false, 16, 16); slots[0] = guiHelper.createDrawable(rl("textures/gui/widgets.png"), 18, 0, 18, 18); builder.addSlot(RecipeIngredientRole.OUTPUT, 75, 6) - .addIngredients(ForgeTypes.FLUID_STACK, recipe.getOutputFluids(0)) + .addIngredients(NeoForgeTypes.FLUID_STACK, recipe.getOutputFluids(0)) .setFluidRenderer(recipe.getOutputFluids().get(0).getAmount(), false, 16, 16); slots[1] = guiHelper.createDrawable(rl("textures/gui/widgets.png"), 18, 0, 18, 18); diff --git a/src/main/java/igentuman/nc/compat/jei/ingredient/ParticleStackRenderer.java b/src/main/java/igentuman/nc/compat/jei/ingredient/ParticleStackRenderer.java index 20bb02b84..716b92ad9 100644 --- a/src/main/java/igentuman/nc/compat/jei/ingredient/ParticleStackRenderer.java +++ b/src/main/java/igentuman/nc/compat/jei/ingredient/ParticleStackRenderer.java @@ -110,7 +110,6 @@ private void drawParticle(GuiGraphics graphics, final int xPosition, final int y } // Set up proper rendering state - RenderSystem.setShaderTexture(0, particleStack.getParticle().getTexture()); RenderSystem.enableBlend(); RenderSystem.defaultBlendFunc(); diff --git a/src/main/java/igentuman/nc/compat/kubejs/NCKubeJsEvents.java b/src/main/java/igentuman/nc/compat/kubejs/NCKubeJsEvents.java index ffd694120..26795e474 100644 --- a/src/main/java/igentuman/nc/compat/kubejs/NCKubeJsEvents.java +++ b/src/main/java/igentuman/nc/compat/kubejs/NCKubeJsEvents.java @@ -16,9 +16,9 @@ import net.minecraft.resources.ResourceLocation; import net.minecraft.server.level.ServerPlayer; import net.minecraft.world.level.Level; -import net.minecraftforge.client.event.RecipesUpdatedEvent; -import net.minecraftforge.eventbus.api.SubscribeEvent; -import net.minecraftforge.fml.common.Mod; +import net.neoforged.neoforge.client.event.RecipesUpdatedEvent; +import net.neoforged.bus.api.SubscribeEvent; +import net.neoforged.fml.common.Mod; import java.util.ArrayList; import java.util.List; diff --git a/src/main/java/igentuman/nc/compat/kubejs/ParticleComponents.java b/src/main/java/igentuman/nc/compat/kubejs/ParticleComponents.java index bae290afe..d120d392b 100644 --- a/src/main/java/igentuman/nc/compat/kubejs/ParticleComponents.java +++ b/src/main/java/igentuman/nc/compat/kubejs/ParticleComponents.java @@ -8,7 +8,6 @@ import dev.latvian.mods.kubejs.recipe.ReplacementMatch; import dev.latvian.mods.kubejs.recipe.component.*; import dev.latvian.mods.kubejs.util.TinyMap; -import com.google.gson.JsonObject; import java.util.Map; diff --git a/src/main/java/igentuman/nc/compat/mekanism/MekInteractions.java b/src/main/java/igentuman/nc/compat/mekanism/MekInteractions.java index 8fa45014a..974674d9a 100644 --- a/src/main/java/igentuman/nc/compat/mekanism/MekInteractions.java +++ b/src/main/java/igentuman/nc/compat/mekanism/MekInteractions.java @@ -2,7 +2,7 @@ import mekanism.api.IConfigurable; import mekanism.api.RelativeSide; -import mekanism.api.security.ISecurityUtils; +import mekanism.api.security.IBlockSecurityUtils; import mekanism.api.text.EnumColor; import mekanism.common.MekanismLang; import mekanism.common.capabilities.Capabilities; @@ -10,14 +10,11 @@ import mekanism.common.tile.component.config.ConfigInfo; import mekanism.common.tile.component.config.DataType; import mekanism.common.tile.interfaces.ISideConfiguration; -import mekanism.common.util.CapabilityUtils; import net.minecraft.core.Direction; import net.minecraft.world.InteractionResult; import net.minecraft.world.entity.player.Player; import net.minecraft.world.level.block.entity.BlockEntity; -import java.util.Optional; - public class MekInteractions { public static boolean handleMultitoolInteractionWithMek(BlockEntity be, Player player, Direction side) { @@ -33,7 +30,7 @@ public static boolean handleMultitoolInteractionWithMek(BlockEntity be, Player p if (!player.isShiftKeyDown()) { player.displayClientMessage(MekanismLang.CONFIGURATOR_VIEW_MODE.translateColored(EnumColor.GRAY, transmissionType, dataType.getColor(), dataType, dataType.getColor().getColoredName()), true); - } else if (!ISecurityUtils.INSTANCE.canAccessOrDisplayError(player, be)) { + } else if (!IBlockSecurityUtils.INSTANCE.canAccessOrDisplayError(player, be.getLevel(), be.getBlockPos(), be)) { return false; } else { DataType old = dataType; @@ -48,9 +45,11 @@ public static boolean handleMultitoolInteractionWithMek(BlockEntity be, Player p return true; } } - Optional capability = CapabilityUtils.getCapability(be, Capabilities.CONFIGURABLE, side).resolve(); - if (capability.isPresent()) { - IConfigurable config = capability.get(); + // Verified: Capabilities.CONFIGURABLE is a BlockCapability in Mekanism 10.7.18 for NeoForge 1.21.1 + IConfigurable config = be.getLevel() != null + ? be.getLevel().getCapability(Capabilities.CONFIGURABLE, be.getBlockPos(), side) + : null; + if (config != null) { if (player.isShiftKeyDown()) { return config.onSneakRightClick(player) == InteractionResult.SUCCESS; } diff --git a/src/main/java/igentuman/nc/compat/mekanism/MekanismRadiation.java b/src/main/java/igentuman/nc/compat/mekanism/MekanismRadiation.java index e3bddb4ef..d1843fea2 100644 --- a/src/main/java/igentuman/nc/compat/mekanism/MekanismRadiation.java +++ b/src/main/java/igentuman/nc/compat/mekanism/MekanismRadiation.java @@ -1,18 +1,19 @@ package igentuman.nc.compat.mekanism; -import mekanism.api.Coord4D; + import mekanism.common.lib.radiation.RadiationManager; +import net.minecraft.core.BlockPos; import net.minecraft.world.entity.player.Player; import net.minecraft.world.level.Level; public class MekanismRadiation { //radiation in mRads //rads to Sv conversion 1/10 - public static void radiate(int x, int y, int z, int radiation, Level level) { + public static void radiate(int x, int y, int z, int radiation, Level level) { if(radiation == 0) return; - RadiationManager.INSTANCE.radiate(new Coord4D(x, y, z, level.dimension()), ((double)radiation)/10000000); + RadiationManager.get().radiate(level, new BlockPos(x, y, z), ((double)radiation)/10000000); } public static void addEntityRadiation(Player entity, double i) { - RadiationManager.INSTANCE.radiate(entity, i); + RadiationManager.get().radiate(entity, i); } } diff --git a/src/main/java/igentuman/nc/compat/oc2/FissionReactorDevice.java b/src/main/java/igentuman/nc/compat/oc2/FissionReactorDevice.java index 6e98482c5..462926323 100644 --- a/src/main/java/igentuman/nc/compat/oc2/FissionReactorDevice.java +++ b/src/main/java/igentuman/nc/compat/oc2/FissionReactorDevice.java @@ -6,9 +6,9 @@ import li.cil.oc2.api.bus.device.object.NamedDevice; import li.cil.oc2.api.bus.device.object.ObjectDevice; import li.cil.oc2.api.bus.device.rpc.RPCDevice; -import net.minecraftforge.common.capabilities.Capability; -import net.minecraftforge.common.capabilities.CapabilityManager; -import net.minecraftforge.common.capabilities.CapabilityToken; +import net.neoforged.neoforge.common.capabilities.Capability; +import net.neoforged.neoforge.common.capabilities.CapabilityManager; +import net.neoforged.neoforge.common.capabilities.CapabilityToken; import org.jetbrains.annotations.NotNull; import java.util.Collection; diff --git a/src/main/java/igentuman/nc/compat/oc2/FusionReactorDevice.java b/src/main/java/igentuman/nc/compat/oc2/FusionReactorDevice.java index 360b40d38..40ee75f86 100644 --- a/src/main/java/igentuman/nc/compat/oc2/FusionReactorDevice.java +++ b/src/main/java/igentuman/nc/compat/oc2/FusionReactorDevice.java @@ -6,9 +6,9 @@ import li.cil.oc2.api.bus.device.object.NamedDevice; import li.cil.oc2.api.bus.device.object.ObjectDevice; import li.cil.oc2.api.bus.device.rpc.RPCDevice; -import net.minecraftforge.common.capabilities.Capability; -import net.minecraftforge.common.capabilities.CapabilityManager; -import net.minecraftforge.common.capabilities.CapabilityToken; +import net.neoforged.neoforge.common.capabilities.Capability; +import net.neoforged.neoforge.common.capabilities.CapabilityManager; +import net.neoforged.neoforge.common.capabilities.CapabilityToken; import org.jetbrains.annotations.NotNull; import java.util.Collection; diff --git a/src/main/java/igentuman/nc/compat/oc2/KugelblitzDevice.java b/src/main/java/igentuman/nc/compat/oc2/KugelblitzDevice.java index 6c4ebe487..0c7b6aa90 100644 --- a/src/main/java/igentuman/nc/compat/oc2/KugelblitzDevice.java +++ b/src/main/java/igentuman/nc/compat/oc2/KugelblitzDevice.java @@ -7,9 +7,9 @@ import li.cil.oc2.api.bus.device.object.NamedDevice; import li.cil.oc2.api.bus.device.object.ObjectDevice; import li.cil.oc2.api.bus.device.rpc.RPCDevice; -import net.minecraftforge.common.capabilities.Capability; -import net.minecraftforge.common.capabilities.CapabilityManager; -import net.minecraftforge.common.capabilities.CapabilityToken; +import net.neoforged.neoforge.common.capabilities.Capability; +import net.neoforged.neoforge.common.capabilities.CapabilityManager; +import net.neoforged.neoforge.common.capabilities.CapabilityToken; import org.jetbrains.annotations.NotNull; import java.util.Collection; diff --git a/src/main/java/igentuman/nc/compat/oc2/LinearAcceleratorDevice.java b/src/main/java/igentuman/nc/compat/oc2/LinearAcceleratorDevice.java index bb94c6ff0..a36a58a3c 100644 --- a/src/main/java/igentuman/nc/compat/oc2/LinearAcceleratorDevice.java +++ b/src/main/java/igentuman/nc/compat/oc2/LinearAcceleratorDevice.java @@ -6,9 +6,9 @@ import li.cil.oc2.api.bus.device.object.NamedDevice; import li.cil.oc2.api.bus.device.object.ObjectDevice; import li.cil.oc2.api.bus.device.rpc.RPCDevice; -import net.minecraftforge.common.capabilities.Capability; -import net.minecraftforge.common.capabilities.CapabilityManager; -import net.minecraftforge.common.capabilities.CapabilityToken; +import net.neoforged.neoforge.common.capabilities.Capability; +import net.neoforged.neoforge.common.capabilities.CapabilityManager; +import net.neoforged.neoforge.common.capabilities.CapabilityToken; import org.jetbrains.annotations.NotNull; import java.util.Collection; diff --git a/src/main/java/igentuman/nc/compat/oc2/ProcessorDevice.java b/src/main/java/igentuman/nc/compat/oc2/ProcessorDevice.java index 373c16580..f4379ca9d 100644 --- a/src/main/java/igentuman/nc/compat/oc2/ProcessorDevice.java +++ b/src/main/java/igentuman/nc/compat/oc2/ProcessorDevice.java @@ -6,9 +6,9 @@ import li.cil.oc2.api.bus.device.object.NamedDevice; import li.cil.oc2.api.bus.device.object.ObjectDevice; import li.cil.oc2.api.bus.device.rpc.RPCDevice; -import net.minecraftforge.common.capabilities.Capability; -import net.minecraftforge.common.capabilities.CapabilityManager; -import net.minecraftforge.common.capabilities.CapabilityToken; +import net.neoforged.neoforge.common.capabilities.Capability; +import net.neoforged.neoforge.common.capabilities.CapabilityManager; +import net.neoforged.neoforge.common.capabilities.CapabilityToken; import org.jetbrains.annotations.NotNull; import java.util.Collection; diff --git a/src/main/java/igentuman/nc/compat/oc2/RingAcceleratorDevice.java b/src/main/java/igentuman/nc/compat/oc2/RingAcceleratorDevice.java index 746795126..ffc7f5842 100644 --- a/src/main/java/igentuman/nc/compat/oc2/RingAcceleratorDevice.java +++ b/src/main/java/igentuman/nc/compat/oc2/RingAcceleratorDevice.java @@ -6,9 +6,9 @@ import li.cil.oc2.api.bus.device.object.NamedDevice; import li.cil.oc2.api.bus.device.object.ObjectDevice; import li.cil.oc2.api.bus.device.rpc.RPCDevice; -import net.minecraftforge.common.capabilities.Capability; -import net.minecraftforge.common.capabilities.CapabilityManager; -import net.minecraftforge.common.capabilities.CapabilityToken; +import net.neoforged.neoforge.common.capabilities.Capability; +import net.neoforged.neoforge.common.capabilities.CapabilityManager; +import net.neoforged.neoforge.common.capabilities.CapabilityToken; import org.jetbrains.annotations.NotNull; import java.util.Collection; diff --git a/src/main/java/igentuman/nc/compat/oc2/TargetChamberDevice.java b/src/main/java/igentuman/nc/compat/oc2/TargetChamberDevice.java index 140a77b13..baaa938b2 100644 --- a/src/main/java/igentuman/nc/compat/oc2/TargetChamberDevice.java +++ b/src/main/java/igentuman/nc/compat/oc2/TargetChamberDevice.java @@ -6,9 +6,9 @@ import li.cil.oc2.api.bus.device.object.NamedDevice; import li.cil.oc2.api.bus.device.object.ObjectDevice; import li.cil.oc2.api.bus.device.rpc.RPCDevice; -import net.minecraftforge.common.capabilities.Capability; -import net.minecraftforge.common.capabilities.CapabilityManager; -import net.minecraftforge.common.capabilities.CapabilityToken; +import net.neoforged.neoforge.common.capabilities.Capability; +import net.neoforged.neoforge.common.capabilities.CapabilityManager; +import net.neoforged.neoforge.common.capabilities.CapabilityToken; import org.jetbrains.annotations.NotNull; import java.util.Collection; diff --git a/src/main/java/igentuman/nc/compat/oc2/TurbineDevice.java b/src/main/java/igentuman/nc/compat/oc2/TurbineDevice.java index a9475eefa..2ca98934c 100644 --- a/src/main/java/igentuman/nc/compat/oc2/TurbineDevice.java +++ b/src/main/java/igentuman/nc/compat/oc2/TurbineDevice.java @@ -6,9 +6,9 @@ import li.cil.oc2.api.bus.device.object.NamedDevice; import li.cil.oc2.api.bus.device.object.ObjectDevice; import li.cil.oc2.api.bus.device.rpc.RPCDevice; -import net.minecraftforge.common.capabilities.Capability; -import net.minecraftforge.common.capabilities.CapabilityManager; -import net.minecraftforge.common.capabilities.CapabilityToken; +import net.neoforged.neoforge.common.capabilities.Capability; +import net.neoforged.neoforge.common.capabilities.CapabilityManager; +import net.neoforged.neoforge.common.capabilities.CapabilityToken; import org.jetbrains.annotations.NotNull; import java.util.Collection; diff --git a/src/main/java/igentuman/nc/compat/refined_storage/ProcessorEmiRecipeHandlerRS.java b/src/main/java/igentuman/nc/compat/refined_storage/ProcessorEmiRecipeHandlerRS.java index cc0760538..e3a503447 100644 --- a/src/main/java/igentuman/nc/compat/refined_storage/ProcessorEmiRecipeHandlerRS.java +++ b/src/main/java/igentuman/nc/compat/refined_storage/ProcessorEmiRecipeHandlerRS.java @@ -14,7 +14,7 @@ import net.minecraft.world.inventory.AbstractContainerMenu; import net.minecraft.world.inventory.Slot; import net.minecraft.world.item.ItemStack; -import net.minecraftforge.fluids.FluidStack; +import net.neoforged.neoforge.fluids.FluidStack; import java.util.ArrayList; import java.util.Collection; diff --git a/src/main/java/igentuman/nc/container/AcceleratorIonSourcePortContainer.java b/src/main/java/igentuman/nc/container/AcceleratorIonSourcePortContainer.java index 1a33b5813..220918877 100644 --- a/src/main/java/igentuman/nc/container/AcceleratorIonSourcePortContainer.java +++ b/src/main/java/igentuman/nc/container/AcceleratorIonSourcePortContainer.java @@ -12,12 +12,10 @@ import net.minecraft.world.inventory.Slot; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.crafting.RecipeType; -import net.minecraftforge.common.ForgeHooks; -import net.minecraftforge.common.capabilities.ForgeCapabilities; -import net.minecraftforge.fluids.capability.templates.FluidTank; -import net.minecraftforge.items.IItemHandler; -import net.minecraftforge.items.SlotItemHandler; -import net.minecraftforge.items.wrapper.InvWrapper; +import net.neoforged.neoforge.fluids.capability.templates.FluidTank; +import net.neoforged.neoforge.items.IItemHandler; +import net.neoforged.neoforge.items.SlotItemHandler; +import net.neoforged.neoforge.items.wrapper.InvWrapper; import org.jetbrains.annotations.NotNull; import java.util.Objects; @@ -41,10 +39,13 @@ public AcceleratorIonSourcePortContainer(int pContainerId, BlockPos pos, Invento this.playerInventory = new InvWrapper(playerInventory); portBE = (AcceleratorIonSourcePortBE) playerEntity.getCommandSenderWorld().getBlockEntity(pos); layoutPlayerInventorySlots(); - portBE.getCapability(ForgeCapabilities.ITEM_HANDLER).ifPresent(h -> { - addSlot(new NCSlotItemHandler.Input(h, 0, 71, 26)); - addSlot(new NCSlotItemHandler.Output(h, 1, 89, 26)); - }); + if (portBE.controller() != null && portBE.controller().contentHandler() != null) { + IItemHandler h = portBE.controller().contentHandler().itemHandler; + if (h != null) { + addSlot(new NCSlotItemHandler.Input(h, 0, 71, 26)); + addSlot(new NCSlotItemHandler.Output(h, 1, 89, 26)); + } + } } public BlockPos getPosition() { @@ -64,7 +65,7 @@ public ItemStack quickMoveStack(Player pPlayer, int index) { } slot.onQuickCraft(stack, itemstack); } else { - if (ForgeHooks.getBurnTime(stack, RecipeType.SMELTING) > 0) { + if (stack.getBurnTime(RecipeType.SMELTING) > 0) { if (!this.moveItemStackTo(stack, 0, 1, false)) { return ItemStack.EMPTY; } diff --git a/src/main/java/igentuman/nc/container/AcceleratorPortContainer.java b/src/main/java/igentuman/nc/container/AcceleratorPortContainer.java index 3f81da4a2..52db35871 100644 --- a/src/main/java/igentuman/nc/container/AcceleratorPortContainer.java +++ b/src/main/java/igentuman/nc/container/AcceleratorPortContainer.java @@ -12,12 +12,10 @@ import net.minecraft.world.inventory.Slot; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.crafting.RecipeType; -import net.minecraftforge.common.ForgeHooks; -import net.minecraftforge.common.capabilities.ForgeCapabilities; -import net.minecraftforge.fluids.capability.templates.FluidTank; -import net.minecraftforge.items.IItemHandler; -import net.minecraftforge.items.SlotItemHandler; -import net.minecraftforge.items.wrapper.InvWrapper; +import net.neoforged.neoforge.fluids.capability.templates.FluidTank; +import net.neoforged.neoforge.items.IItemHandler; +import net.neoforged.neoforge.items.SlotItemHandler; +import net.neoforged.neoforge.items.wrapper.InvWrapper; import org.jetbrains.annotations.NotNull; import java.util.Objects; @@ -42,10 +40,13 @@ public AcceleratorPortContainer(int pContainerId, BlockPos pos, Inventory player this.playerInventory = new InvWrapper(playerInventory); portBE = (AcceleratorPortBE) playerEntity.getCommandSenderWorld().getBlockEntity(pos); layoutPlayerInventorySlots(); - portBE.getCapability(ForgeCapabilities.ITEM_HANDLER).ifPresent(h -> { - addSlot(new NCSlotItemHandler.Input(h, 0, 71, 26)); - addSlot(new NCSlotItemHandler.Output(h, 1, 89, 26)); - }); + if (portBE.controller() != null && portBE.controller().contentHandler() != null) { + IItemHandler h = portBE.controller().contentHandler().itemHandler; + if (h != null) { + addSlot(new NCSlotItemHandler.Input(h, 0, 71, 26)); + addSlot(new NCSlotItemHandler.Output(h, 1, 89, 26)); + } + } } public BlockPos getPosition() { @@ -65,7 +66,7 @@ public ItemStack quickMoveStack(Player pPlayer, int index) { } slot.onQuickCraft(stack, itemstack); } else { - if (ForgeHooks.getBurnTime(stack, RecipeType.SMELTING) > 0) { + if (stack.getBurnTime(RecipeType.SMELTING) > 0) { if (!this.moveItemStackTo(stack, 0, 1, false)) { return ItemStack.EMPTY; } diff --git a/src/main/java/igentuman/nc/container/ChamberPortContainer.java b/src/main/java/igentuman/nc/container/ChamberPortContainer.java index 7600fd3ab..4d2c6412d 100644 --- a/src/main/java/igentuman/nc/container/ChamberPortContainer.java +++ b/src/main/java/igentuman/nc/container/ChamberPortContainer.java @@ -1,5 +1,6 @@ package igentuman.nc.container; +import igentuman.api.platform.NCLevels; import igentuman.nc.block.kugelblitz.entity.ChamberPortBE; import igentuman.nc.container.elements.NCSlotItemHandler; import igentuman.nc.multiblock.kugelblitz.KugelblitzRegistration; @@ -10,11 +11,10 @@ import net.minecraft.world.inventory.AbstractContainerMenu; import net.minecraft.world.inventory.ContainerLevelAccess; import net.minecraft.world.item.ItemStack; -import net.minecraftforge.common.capabilities.ForgeCapabilities; -import net.minecraftforge.fluids.capability.templates.FluidTank; -import net.minecraftforge.items.IItemHandler; -import net.minecraftforge.items.SlotItemHandler; -import net.minecraftforge.items.wrapper.InvWrapper; +import net.neoforged.neoforge.fluids.capability.templates.FluidTank; +import net.neoforged.neoforge.items.IItemHandler; +import net.neoforged.neoforge.items.SlotItemHandler; +import net.neoforged.neoforge.items.wrapper.InvWrapper; import org.jetbrains.annotations.NotNull; import java.util.Objects; @@ -34,12 +34,15 @@ public ChamberPortContainer(int pContainerId, BlockPos pos, Inventory playerInve super(CHAMBER_PORT_CONTAINER.get(), pContainerId); this.playerEntity = playerInventory.player; this.playerInventory = new InvWrapper(playerInventory); - blockEntity = (ChamberPortBE) playerEntity.getCommandSenderWorld().getExistingBlockEntity(pos); + blockEntity = (ChamberPortBE) NCLevels.getExistingBlockEntity(playerEntity.getCommandSenderWorld(), pos); layoutPlayerInventorySlots(); - blockEntity.getCapability(ForgeCapabilities.ITEM_HANDLER).ifPresent(h -> { - addSlot(new NCSlotItemHandler.Input(h, 0, 56, 35)); - addSlot(new NCSlotItemHandler.Output(h, 1, 116, 35)); - }); + if (blockEntity.controller() != null && blockEntity.controller().contentHandler() != null) { + IItemHandler h = blockEntity.controller().contentHandler().itemHandler; + if (h != null) { + addSlot(new NCSlotItemHandler.Input(h, 0, 56, 35)); + addSlot(new NCSlotItemHandler.Output(h, 1, 116, 35)); + } + } } @Override diff --git a/src/main/java/igentuman/nc/container/ChamberTerminalContainer.java b/src/main/java/igentuman/nc/container/ChamberTerminalContainer.java index 90b96133c..095ea9468 100644 --- a/src/main/java/igentuman/nc/container/ChamberTerminalContainer.java +++ b/src/main/java/igentuman/nc/container/ChamberTerminalContainer.java @@ -10,11 +10,10 @@ import net.minecraft.world.inventory.ContainerLevelAccess; import net.minecraft.world.inventory.Slot; import net.minecraft.world.item.ItemStack; -import net.minecraftforge.common.capabilities.ForgeCapabilities; -import net.minecraftforge.fluids.capability.templates.FluidTank; -import net.minecraftforge.items.IItemHandler; -import net.minecraftforge.items.SlotItemHandler; -import net.minecraftforge.items.wrapper.InvWrapper; +import net.neoforged.neoforge.fluids.capability.templates.FluidTank; +import net.neoforged.neoforge.items.IItemHandler; +import net.neoforged.neoforge.items.SlotItemHandler; +import net.neoforged.neoforge.items.wrapper.InvWrapper; import static igentuman.nc.NuclearCraft.MODID; import static igentuman.nc.multiblock.kugelblitz.KugelblitzRegistration.CHAMBER_TERMINAL_CONTAINER; @@ -35,10 +34,11 @@ public ChamberTerminalContainer(int pContainerId, BlockPos pos, Inventory player this.playerInventory = new InvWrapper(playerInventory); blockEntity = (ChamberTerminalBE) playerEntity.getCommandSenderWorld().getBlockEntity(pos); layoutPlayerInventorySlots(); - blockEntity.getCapability(ForgeCapabilities.ITEM_HANDLER).ifPresent(h -> { + IItemHandler h = blockEntity.contentHandler().itemHandler; + if (h != null) { addSlot(new NCSlotItemHandler.Input(h, 0, 135, 80)); addSlot(new NCSlotItemHandler.Output(h, 1, 189, 80)); - }); + } } @Override diff --git a/src/main/java/igentuman/nc/container/EXPLContainer.java b/src/main/java/igentuman/nc/container/EXPLContainer.java index dec75f88f..6f4c2a66f 100644 --- a/src/main/java/igentuman/nc/container/EXPLContainer.java +++ b/src/main/java/igentuman/nc/container/EXPLContainer.java @@ -1,5 +1,6 @@ package igentuman.nc.container; +import igentuman.api.platform.NCLevels; import igentuman.nc.NuclearCraft; import igentuman.nc.block.kugelblitz.entity.EXPLBE; import igentuman.nc.network.toServer.PacketGuiButtonPress; @@ -10,7 +11,7 @@ import net.minecraft.world.inventory.AbstractContainerMenu; import net.minecraft.world.inventory.ContainerLevelAccess; import net.minecraft.world.item.ItemStack; -import net.minecraftforge.items.IItemHandler; +import net.neoforged.neoforge.items.IItemHandler; import org.jetbrains.annotations.NotNull; import static igentuman.nc.NuclearCraft.MODID; @@ -28,7 +29,7 @@ public class EXPLContainer extends AbstractContainerMenu { public EXPLContainer(int pContainerId, BlockPos pos, Inventory playerInventory) { super(EXPL_CONTAINER.get(), pContainerId); this.playerEntity = playerInventory.player; - blockEntity = (EXPLBE) playerEntity.getCommandSenderWorld().getExistingBlockEntity(pos); + blockEntity = (EXPLBE) NCLevels.getExistingBlockEntity(playerEntity.getCommandSenderWorld(), pos); } @Override diff --git a/src/main/java/igentuman/nc/container/FissionControllerContainer.java b/src/main/java/igentuman/nc/container/FissionControllerContainer.java index 905370886..47be79b29 100644 --- a/src/main/java/igentuman/nc/container/FissionControllerContainer.java +++ b/src/main/java/igentuman/nc/container/FissionControllerContainer.java @@ -11,11 +11,10 @@ import net.minecraft.world.inventory.ContainerLevelAccess; import net.minecraft.world.inventory.Slot; import net.minecraft.world.item.ItemStack; -import net.minecraftforge.common.capabilities.ForgeCapabilities; -import net.minecraftforge.fluids.capability.templates.FluidTank; -import net.minecraftforge.items.IItemHandler; -import net.minecraftforge.items.SlotItemHandler; -import net.minecraftforge.items.wrapper.InvWrapper; +import net.neoforged.neoforge.fluids.capability.templates.FluidTank; +import net.neoforged.neoforge.items.IItemHandler; +import net.neoforged.neoforge.items.SlotItemHandler; +import net.neoforged.neoforge.items.wrapper.InvWrapper; import static igentuman.nc.NuclearCraft.MODID; import static igentuman.nc.handler.config.FissionConfig.FISSION_CONFIG; @@ -35,10 +34,11 @@ public FissionControllerContainer(int pContainerId, BlockPos pos, Inventory play this.playerInventory = new InvWrapper(playerInventory); blockEntity = (FissionControllerBE) playerEntity.getCommandSenderWorld().getBlockEntity(pos); layoutPlayerInventorySlots(); - blockEntity.getCapability(ForgeCapabilities.ITEM_HANDLER).ifPresent(h -> { + IItemHandler h = blockEntity.contentHandler().itemHandler; + if (h != null) { addSlot(new NCSlotItemHandler.Input(h, 0, 56, 35)); addSlot(new NCSlotItemHandler.Output(h, 1, 116, 35)); - }); + } } @Override diff --git a/src/main/java/igentuman/nc/container/FissionPortContainer.java b/src/main/java/igentuman/nc/container/FissionPortContainer.java index d50f04431..45a5c68e3 100644 --- a/src/main/java/igentuman/nc/container/FissionPortContainer.java +++ b/src/main/java/igentuman/nc/container/FissionPortContainer.java @@ -1,5 +1,6 @@ package igentuman.nc.container; +import igentuman.api.platform.NCLevels; import igentuman.nc.block.fission.entity.FissionPortBE; import igentuman.nc.container.elements.NCSlotItemHandler; import igentuman.nc.multiblock.fission.FissionReactorRegistration; @@ -11,11 +12,10 @@ import net.minecraft.world.inventory.ContainerLevelAccess; import net.minecraft.world.inventory.Slot; import net.minecraft.world.item.ItemStack; -import net.minecraftforge.common.capabilities.ForgeCapabilities; -import net.minecraftforge.fluids.capability.templates.FluidTank; -import net.minecraftforge.items.IItemHandler; -import net.minecraftforge.items.SlotItemHandler; -import net.minecraftforge.items.wrapper.InvWrapper; +import net.neoforged.neoforge.fluids.capability.templates.FluidTank; +import net.neoforged.neoforge.items.IItemHandler; +import net.neoforged.neoforge.items.SlotItemHandler; +import net.neoforged.neoforge.items.wrapper.InvWrapper; import static igentuman.nc.NuclearCraft.MODID; import static igentuman.nc.util.TextUtils.__; @@ -32,13 +32,16 @@ public FissionPortContainer(int pContainerId, BlockPos pos, Inventory playerInve super(FissionReactorRegistration.FISSION_PORT_CONTAINER.get(), pContainerId); this.playerEntity = playerInventory.player; this.playerInventory = new InvWrapper(playerInventory); - portBE = (FissionPortBE) playerEntity.getCommandSenderWorld().getExistingBlockEntity(pos); + portBE = (FissionPortBE) NCLevels.getExistingBlockEntity(playerEntity.getCommandSenderWorld(), pos); slotIndex = 0; layoutPlayerInventorySlots(); - portBE.getCapability(ForgeCapabilities.ITEM_HANDLER).ifPresent(h -> { - addSlot(new NCSlotItemHandler.Input(h, 0, 56, 35)); - addSlot(new NCSlotItemHandler.Output(h, 1, 116, 35)); - }); + if (portBE.controller() != null && portBE.controller().contentHandler() != null) { + IItemHandler h = portBE.controller().contentHandler().itemHandler; + if (h != null) { + addSlot(new NCSlotItemHandler.Input(h, 0, 56, 35)); + addSlot(new NCSlotItemHandler.Output(h, 1, 116, 35)); + } + } } public BlockPos getPosition() { diff --git a/src/main/java/igentuman/nc/container/FusionCoreContainer.java b/src/main/java/igentuman/nc/container/FusionCoreContainer.java index 4bddd99ff..866db4c7c 100644 --- a/src/main/java/igentuman/nc/container/FusionCoreContainer.java +++ b/src/main/java/igentuman/nc/container/FusionCoreContainer.java @@ -1,5 +1,6 @@ package igentuman.nc.container; +import igentuman.api.platform.NCLevels; import igentuman.nc.block.fusion.entity.FusionCoreBE; import igentuman.nc.multiblock.fusion.FusionReactorRegistration; import net.minecraft.core.BlockPos; @@ -9,10 +10,10 @@ import net.minecraft.world.inventory.AbstractContainerMenu; import net.minecraft.world.inventory.ContainerLevelAccess; import net.minecraft.world.item.ItemStack; -import net.minecraftforge.fluids.capability.templates.FluidTank; -import net.minecraftforge.items.IItemHandler; -import net.minecraftforge.items.SlotItemHandler; -import net.minecraftforge.items.wrapper.InvWrapper; +import net.neoforged.neoforge.fluids.capability.templates.FluidTank; +import net.neoforged.neoforge.items.IItemHandler; +import net.neoforged.neoforge.items.SlotItemHandler; +import net.neoforged.neoforge.items.wrapper.InvWrapper; import org.jetbrains.annotations.NotNull; import static igentuman.nc.NuclearCraft.MODID; @@ -32,7 +33,7 @@ public FusionCoreContainer(int pContainerId, BlockPos pos, Inventory playerInven super(FusionReactorRegistration.FUSION_CORE_CONTAINER.get(), pContainerId); this.playerEntity = playerInventory.player; this.playerInventory = new InvWrapper(playerInventory); - blockEntity = (FusionCoreBE) playerEntity.getCommandSenderWorld().getExistingBlockEntity(pos); + blockEntity = (FusionCoreBE) NCLevels.getExistingBlockEntity(playerEntity.getCommandSenderWorld(), pos); layoutPlayerInventorySlots(); } diff --git a/src/main/java/igentuman/nc/container/LinearAcceleratorContainer.java b/src/main/java/igentuman/nc/container/LinearAcceleratorContainer.java index 023dd240d..960eeaef7 100644 --- a/src/main/java/igentuman/nc/container/LinearAcceleratorContainer.java +++ b/src/main/java/igentuman/nc/container/LinearAcceleratorContainer.java @@ -9,9 +9,9 @@ import net.minecraft.world.inventory.AbstractContainerMenu; import net.minecraft.world.inventory.ContainerLevelAccess; import net.minecraft.world.item.ItemStack; -import net.minecraftforge.fluids.capability.templates.FluidTank; -import net.minecraftforge.items.IItemHandler; -import net.minecraftforge.items.wrapper.InvWrapper; +import net.neoforged.neoforge.fluids.capability.templates.FluidTank; +import net.neoforged.neoforge.items.IItemHandler; +import net.neoforged.neoforge.items.wrapper.InvWrapper; import static igentuman.nc.NuclearCraft.MODID; import static igentuman.nc.multiblock.accelerator.AcceleratorRegistration.ACCELERATOR_BLOCKS; @@ -113,7 +113,7 @@ public double getProgress() { } public int getMaxHeat() { - return blockEntity.maxTemperature; + return blockEntity.heatMax; } public double getFocus() { @@ -179,4 +179,8 @@ public int getHeating() { public int getNetHeat() { return blockEntity.heatRate - blockEntity.coolingRate; } + + public boolean isAcceleratorTooHot() { + return blockEntity.isAcceleratorTooHot(); + } } diff --git a/src/main/java/igentuman/nc/container/MSRControllerContainer.java b/src/main/java/igentuman/nc/container/MSRControllerContainer.java index 6640aa1f9..ff97495d1 100644 --- a/src/main/java/igentuman/nc/container/MSRControllerContainer.java +++ b/src/main/java/igentuman/nc/container/MSRControllerContainer.java @@ -11,9 +11,8 @@ import net.minecraft.world.inventory.ContainerLevelAccess; import net.minecraft.world.inventory.Slot; import net.minecraft.world.item.ItemStack; -import net.minecraftforge.common.capabilities.ForgeCapabilities; -import net.minecraftforge.items.IItemHandler; -import net.minecraftforge.items.wrapper.InvWrapper; +import net.neoforged.neoforge.items.IItemHandler; +import net.neoforged.neoforge.items.wrapper.InvWrapper; import static igentuman.nc.NuclearCraft.MODID; import static igentuman.nc.util.TextUtils.*; @@ -124,7 +123,7 @@ public boolean isLocked() { private void addSlotRange(IItemHandler handler, int x, int y, int amount, int dx) { for (int i = 0 ; i < amount ; i++) { - addSlot(new net.minecraftforge.items.SlotItemHandler(handler, slotIndex, x, y)); + addSlot(new net.neoforged.neoforge.items.SlotItemHandler(handler, slotIndex, x, y)); x += dx; slotIndex++; } diff --git a/src/main/java/igentuman/nc/container/MultiblockBuilderContainer.java b/src/main/java/igentuman/nc/container/MultiblockBuilderContainer.java index e9debe37f..872eff0d8 100644 --- a/src/main/java/igentuman/nc/container/MultiblockBuilderContainer.java +++ b/src/main/java/igentuman/nc/container/MultiblockBuilderContainer.java @@ -9,9 +9,9 @@ import net.minecraft.world.inventory.ContainerLevelAccess; import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.block.Block; -import net.minecraftforge.items.IItemHandler; -import net.minecraftforge.items.SlotItemHandler; -import net.minecraftforge.items.wrapper.InvWrapper; +import net.neoforged.neoforge.items.IItemHandler; +import net.neoforged.neoforge.items.SlotItemHandler; +import net.neoforged.neoforge.items.wrapper.InvWrapper; import org.jetbrains.annotations.NotNull; import java.util.HashMap; diff --git a/src/main/java/igentuman/nc/container/NCEnergyContainer.java b/src/main/java/igentuman/nc/container/NCEnergyContainer.java index 6f663bbcf..5edc9a79b 100644 --- a/src/main/java/igentuman/nc/container/NCEnergyContainer.java +++ b/src/main/java/igentuman/nc/container/NCEnergyContainer.java @@ -1,5 +1,6 @@ package igentuman.nc.container; +import igentuman.api.platform.NCLevels; import igentuman.nc.block.entity.processor.NCProcessorBE; import igentuman.nc.content.processors.ProcessorPrefab; import igentuman.nc.content.processors.Processors; @@ -14,12 +15,10 @@ import net.minecraft.world.inventory.Slot; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.crafting.RecipeType; -import net.minecraftforge.common.ForgeHooks; -import net.minecraftforge.common.capabilities.ForgeCapabilities; -import net.minecraftforge.energy.IEnergyStorage; -import net.minecraftforge.items.IItemHandler; -import net.minecraftforge.items.SlotItemHandler; -import net.minecraftforge.items.wrapper.InvWrapper; +import net.neoforged.neoforge.energy.IEnergyStorage; +import net.neoforged.neoforge.items.IItemHandler; +import net.neoforged.neoforge.items.SlotItemHandler; +import net.neoforged.neoforge.items.wrapper.InvWrapper; import org.jetbrains.annotations.Nullable; import static igentuman.nc.NuclearCraft.MODID; @@ -40,7 +39,7 @@ public NCEnergyContainer(@Nullable MenuType pMenuType, int pContainerId) { public NCEnergyContainer(int windowId, BlockPos pos, Inventory playerInventory, Player player, String name) { this(NCProcessors.PROCESSORS_CONTAINERS.get(name).get(), windowId); - blockEntity = (NCProcessorBE) player.getCommandSenderWorld().getExistingBlockEntity(pos); + blockEntity = (NCProcessorBE) NCLevels.getExistingBlockEntity(player.getCommandSenderWorld(), pos); this.playerEntity = player; this.playerInventory = new InvWrapper(playerInventory); this.name = name; @@ -54,32 +53,26 @@ public ProcessorPrefab getProcessor() { } private void processorSlots() { + IItemHandler h = blockEntity.contentHandler().itemHandler; + if (h == null) return; int itemIdx = 0; for(int[] pos: processor.getSlotsConfig().getSlotPositions()) { if(processor.getSlotsConfig().getSlotType(itemIdx).contains("item")) { int idx = itemIdx; - blockEntity.getCapability(ForgeCapabilities.ITEM_HANDLER).ifPresent(h -> { - addSlot(new SlotItemHandler(h, idx, pos[0], pos[1])); - }); + addSlot(new SlotItemHandler(h, idx, pos[0], pos[1])); itemIdx++; } } int ux = 154; if(getProcessor().supportSpeedUpgrade) { int idx = itemIdx; - int finalUx = ux; - blockEntity.getCapability(ForgeCapabilities.ITEM_HANDLER).ifPresent(h -> { - addSlot(new SlotItemHandler(h, idx, finalUx, 77)); - }); + addSlot(new SlotItemHandler(h, idx, ux, 77)); itemIdx++; ux -= 18; } if(getProcessor().supportEnergyUpgrade) { int idx = itemIdx; - int finalUx = ux; - blockEntity.getCapability(ForgeCapabilities.ITEM_HANDLER).ifPresent(h -> { - addSlot(new SlotItemHandler(h, idx, finalUx, 77)); - }); + addSlot(new SlotItemHandler(h, idx, ux, 77)); } } @@ -96,7 +89,7 @@ public ItemStack quickMoveStack(Player pPlayer, int index) { } slot.onQuickCraft(stack, itemstack); } else { - if (ForgeHooks.getBurnTime(stack, RecipeType.SMELTING) > 0) { + if (stack.getBurnTime(RecipeType.SMELTING) > 0) { if (!this.moveItemStackTo(stack, 0, 1, false)) { return ItemStack.EMPTY; } @@ -163,7 +156,7 @@ public Component getTitle() { } public IEnergyStorage getEnergy() { - return (IEnergyStorage) blockEntity.getEnergy().orElse(null); + return blockEntity.energyStorage(); } public double getProgress() { diff --git a/src/main/java/igentuman/nc/container/NCProcessorContainer.java b/src/main/java/igentuman/nc/container/NCProcessorContainer.java index f5d4950f0..0eaf5769c 100644 --- a/src/main/java/igentuman/nc/container/NCProcessorContainer.java +++ b/src/main/java/igentuman/nc/container/NCProcessorContainer.java @@ -18,13 +18,11 @@ import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.crafting.RecipeType; import net.minecraft.world.level.block.entity.BlockEntity; -import net.minecraftforge.common.ForgeHooks; -import net.minecraftforge.common.capabilities.ForgeCapabilities; -import net.minecraftforge.energy.IEnergyStorage; -import net.minecraftforge.fluids.capability.templates.FluidTank; -import net.minecraftforge.items.IItemHandler; -import net.minecraftforge.items.SlotItemHandler; -import net.minecraftforge.items.wrapper.InvWrapper; +import net.neoforged.neoforge.energy.IEnergyStorage; +import net.neoforged.neoforge.fluids.capability.templates.FluidTank; +import net.neoforged.neoforge.items.IItemHandler; +import net.neoforged.neoforge.items.SlotItemHandler; +import net.neoforged.neoforge.items.wrapper.InvWrapper; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -74,11 +72,12 @@ protected void addMainSlots() if(slots.getSlotType(i).contains("item")) { int idx = slotIdx; if(!processor.isSlotHidden(idx+slots.getInputFluids())) { - blockEntity.getCapability(ForgeCapabilities.ITEM_HANDLER).ifPresent(h -> { + IItemHandler h = blockEntity.contentHandler().itemHandler; + if (h != null) { NCSlotItemHandler slotItemHandler = new NCSlotItemHandler(h, idx, pos[0], pos[1]); slotItemHandler.allowed(blockEntity.getAllowedItems(idx)); addSlot(slotItemHandler); - }); + } } slotIdx++; } diff --git a/src/main/java/igentuman/nc/container/RedstoneDImmerContainer.java b/src/main/java/igentuman/nc/container/RedstoneDImmerContainer.java index 083040592..5a30d76bb 100644 --- a/src/main/java/igentuman/nc/container/RedstoneDImmerContainer.java +++ b/src/main/java/igentuman/nc/container/RedstoneDImmerContainer.java @@ -8,8 +8,8 @@ import net.minecraft.world.inventory.AbstractContainerMenu; import net.minecraft.world.inventory.ContainerLevelAccess; import net.minecraft.world.item.ItemStack; -import net.minecraftforge.items.IItemHandler; -import net.minecraftforge.items.wrapper.InvWrapper; +import net.neoforged.neoforge.items.IItemHandler; +import net.neoforged.neoforge.items.wrapper.InvWrapper; import org.jetbrains.annotations.NotNull; import static igentuman.nc.NuclearCraft.MODID; diff --git a/src/main/java/igentuman/nc/container/RingAcceleratorContainer.java b/src/main/java/igentuman/nc/container/RingAcceleratorContainer.java index 3320d0898..dd8af2d71 100644 --- a/src/main/java/igentuman/nc/container/RingAcceleratorContainer.java +++ b/src/main/java/igentuman/nc/container/RingAcceleratorContainer.java @@ -9,9 +9,9 @@ import net.minecraft.world.inventory.AbstractContainerMenu; import net.minecraft.world.inventory.ContainerLevelAccess; import net.minecraft.world.item.ItemStack; -import net.minecraftforge.fluids.capability.templates.FluidTank; -import net.minecraftforge.items.IItemHandler; -import net.minecraftforge.items.wrapper.InvWrapper; +import net.neoforged.neoforge.fluids.capability.templates.FluidTank; +import net.neoforged.neoforge.items.IItemHandler; +import net.neoforged.neoforge.items.wrapper.InvWrapper; import static igentuman.nc.NuclearCraft.MODID; import static igentuman.nc.multiblock.accelerator.AcceleratorRegistration.*; diff --git a/src/main/java/igentuman/nc/container/StorageContainerContainer.java b/src/main/java/igentuman/nc/container/StorageContainerContainer.java index c97a37ac3..c28c3df5a 100644 --- a/src/main/java/igentuman/nc/container/StorageContainerContainer.java +++ b/src/main/java/igentuman/nc/container/StorageContainerContainer.java @@ -7,9 +7,9 @@ import net.minecraft.world.inventory.AbstractContainerMenu; import net.minecraft.world.inventory.Slot; import net.minecraft.world.item.ItemStack; -import net.minecraftforge.items.IItemHandler; -import net.minecraftforge.items.SlotItemHandler; -import net.minecraftforge.items.wrapper.InvWrapper; +import net.neoforged.neoforge.items.IItemHandler; +import net.neoforged.neoforge.items.SlotItemHandler; +import net.neoforged.neoforge.items.wrapper.InvWrapper; import static igentuman.nc.setup.registration.NCStorageBlocks.STORAGE_CONTAINER; @@ -26,7 +26,7 @@ public StorageContainerContainer(int pContainerId, BlockPos pos, Inventory pPlay this.playerEntity = pPlayerInventory.player; this.playerInventory = new InvWrapper(pPlayerInventory); assert blockEntity != null; - this.containerInventory = blockEntity.getItemHandler().orElse(null); + this.containerInventory = blockEntity.inventory; int idx = 0; int i = getRows(); int j = getColls(); diff --git a/src/main/java/igentuman/nc/container/StorageContainerItemContainer.java b/src/main/java/igentuman/nc/container/StorageContainerItemContainer.java index f235986d8..b34443447 100644 --- a/src/main/java/igentuman/nc/container/StorageContainerItemContainer.java +++ b/src/main/java/igentuman/nc/container/StorageContainerItemContainer.java @@ -9,9 +9,9 @@ import net.minecraft.world.inventory.AbstractContainerMenu; import net.minecraft.world.inventory.Slot; import net.minecraft.world.item.ItemStack; -import net.minecraftforge.items.IItemHandler; -import net.minecraftforge.items.SlotItemHandler; -import net.minecraftforge.items.wrapper.InvWrapper; +import net.neoforged.neoforge.items.IItemHandler; +import net.neoforged.neoforge.items.SlotItemHandler; +import net.neoforged.neoforge.items.wrapper.InvWrapper; import java.util.UUID; diff --git a/src/main/java/igentuman/nc/container/TargetChamberControllerContainer.java b/src/main/java/igentuman/nc/container/TargetChamberControllerContainer.java index e67e0ef81..26a412e74 100644 --- a/src/main/java/igentuman/nc/container/TargetChamberControllerContainer.java +++ b/src/main/java/igentuman/nc/container/TargetChamberControllerContainer.java @@ -11,11 +11,10 @@ import net.minecraft.world.inventory.ContainerLevelAccess; import net.minecraft.world.inventory.Slot; import net.minecraft.world.item.ItemStack; -import net.minecraftforge.common.capabilities.ForgeCapabilities; -import net.minecraftforge.fluids.capability.templates.FluidTank; -import net.minecraftforge.items.IItemHandler; -import net.minecraftforge.items.SlotItemHandler; -import net.minecraftforge.items.wrapper.InvWrapper; +import net.neoforged.neoforge.fluids.capability.templates.FluidTank; +import net.neoforged.neoforge.items.IItemHandler; +import net.neoforged.neoforge.items.SlotItemHandler; +import net.neoforged.neoforge.items.wrapper.InvWrapper; import static igentuman.nc.NuclearCraft.MODID; import static igentuman.nc.multiblock.particle_chamber.TargetChamberRegistration.TARGET_CHAMBER_BLOCKS; @@ -36,10 +35,11 @@ public TargetChamberControllerContainer(int pContainerId, BlockPos pos, Inventor this.playerInventory = new InvWrapper(playerInventory); blockEntity = (TargetChamberControllerBE) playerEntity.getCommandSenderWorld().getBlockEntity(pos); layoutPlayerInventorySlots(); - blockEntity.getCapability(ForgeCapabilities.ITEM_HANDLER).ifPresent(h -> { + IItemHandler h = blockEntity.contentHandler().itemHandler; + if (h != null) { addSlot(new NCSlotItemHandler.Input(h, 0, 53, 38)); addSlot(new NCSlotItemHandler.Output(h, 1, 111, 38)); - }); + } } @Override diff --git a/src/main/java/igentuman/nc/container/TargetChamberPortContainer.java b/src/main/java/igentuman/nc/container/TargetChamberPortContainer.java index 5e36317df..a4e292710 100644 --- a/src/main/java/igentuman/nc/container/TargetChamberPortContainer.java +++ b/src/main/java/igentuman/nc/container/TargetChamberPortContainer.java @@ -1,5 +1,6 @@ package igentuman.nc.container; +import igentuman.api.platform.NCLevels; import igentuman.nc.block.target_chamber.entity.TargetChamberPortBE; import igentuman.nc.container.elements.NCSlotItemHandler; import igentuman.nc.content.particles.ParticleStack; @@ -11,11 +12,10 @@ import net.minecraft.world.inventory.ContainerLevelAccess; import net.minecraft.world.inventory.Slot; import net.minecraft.world.item.ItemStack; -import net.minecraftforge.common.capabilities.ForgeCapabilities; -import net.minecraftforge.fluids.capability.templates.FluidTank; -import net.minecraftforge.items.IItemHandler; -import net.minecraftforge.items.SlotItemHandler; -import net.minecraftforge.items.wrapper.InvWrapper; +import net.neoforged.neoforge.fluids.capability.templates.FluidTank; +import net.neoforged.neoforge.items.IItemHandler; +import net.neoforged.neoforge.items.SlotItemHandler; +import net.neoforged.neoforge.items.wrapper.InvWrapper; import static igentuman.nc.NuclearCraft.MODID; import static igentuman.nc.multiblock.particle_chamber.TargetChamberRegistration.TARGET_CHAMBER_BLOCKS; @@ -34,13 +34,16 @@ public TargetChamberPortContainer(int pContainerId, BlockPos pos, Inventory play super(TARGET_CHAMBER_PORT_CONTAINER.get(), pContainerId); this.playerEntity = playerInventory.player; this.playerInventory = new InvWrapper(playerInventory); - portBE = (TargetChamberPortBE) playerEntity.getCommandSenderWorld().getExistingBlockEntity(pos); + portBE = (TargetChamberPortBE) NCLevels.getExistingBlockEntity(playerEntity.getCommandSenderWorld(), pos); slotIndex = 0; layoutPlayerInventorySlots(); - portBE.getCapability(ForgeCapabilities.ITEM_HANDLER).ifPresent(h -> { - addSlot(new NCSlotItemHandler.Input(h, 0, 53, 38)); - addSlot(new NCSlotItemHandler.Output(h, 1, 111, 38)); - }); + if (portBE.controller() != null && portBE.controller().contentHandler() != null) { + IItemHandler h = portBE.controller().contentHandler().itemHandler; + if (h != null) { + addSlot(new NCSlotItemHandler.Input(h, 0, 53, 38)); + addSlot(new NCSlotItemHandler.Output(h, 1, 111, 38)); + } + } } public BlockPos getPosition() { diff --git a/src/main/java/igentuman/nc/container/TurbineControllerContainer.java b/src/main/java/igentuman/nc/container/TurbineControllerContainer.java index 30d008573..51e355b08 100644 --- a/src/main/java/igentuman/nc/container/TurbineControllerContainer.java +++ b/src/main/java/igentuman/nc/container/TurbineControllerContainer.java @@ -8,10 +8,10 @@ import net.minecraft.world.inventory.AbstractContainerMenu; import net.minecraft.world.inventory.ContainerLevelAccess; import net.minecraft.world.item.ItemStack; -import net.minecraftforge.fluids.capability.templates.FluidTank; -import net.minecraftforge.items.IItemHandler; -import net.minecraftforge.items.SlotItemHandler; -import net.minecraftforge.items.wrapper.InvWrapper; +import net.neoforged.neoforge.fluids.capability.templates.FluidTank; +import net.neoforged.neoforge.items.IItemHandler; +import net.neoforged.neoforge.items.SlotItemHandler; +import net.neoforged.neoforge.items.wrapper.InvWrapper; import org.jetbrains.annotations.NotNull; import java.util.Objects; diff --git a/src/main/java/igentuman/nc/container/TurbinePortContainer.java b/src/main/java/igentuman/nc/container/TurbinePortContainer.java index 89217f72a..8387eea9a 100644 --- a/src/main/java/igentuman/nc/container/TurbinePortContainer.java +++ b/src/main/java/igentuman/nc/container/TurbinePortContainer.java @@ -10,11 +10,10 @@ import net.minecraft.world.inventory.Slot; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.crafting.RecipeType; -import net.minecraftforge.common.ForgeHooks; -import net.minecraftforge.fluids.capability.templates.FluidTank; -import net.minecraftforge.items.IItemHandler; -import net.minecraftforge.items.SlotItemHandler; -import net.minecraftforge.items.wrapper.InvWrapper; +import net.neoforged.neoforge.fluids.capability.templates.FluidTank; +import net.neoforged.neoforge.items.IItemHandler; +import net.neoforged.neoforge.items.SlotItemHandler; +import net.neoforged.neoforge.items.wrapper.InvWrapper; import org.jetbrains.annotations.NotNull; import java.util.Objects; @@ -58,7 +57,7 @@ public ItemStack quickMoveStack(Player pPlayer, int index) { } slot.onQuickCraft(stack, itemstack); } else { - if (ForgeHooks.getBurnTime(stack, RecipeType.SMELTING) > 0) { + if (stack.getBurnTime(RecipeType.SMELTING) > 0) { if (!this.moveItemStackTo(stack, 0, 1, false)) { return ItemStack.EMPTY; } diff --git a/src/main/java/igentuman/nc/container/elements/NCSlotItemHandler.java b/src/main/java/igentuman/nc/container/elements/NCSlotItemHandler.java index 6ff624a1b..347f41d68 100644 --- a/src/main/java/igentuman/nc/container/elements/NCSlotItemHandler.java +++ b/src/main/java/igentuman/nc/container/elements/NCSlotItemHandler.java @@ -3,8 +3,8 @@ import net.minecraft.world.inventory.Slot; import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; -import net.minecraftforge.items.IItemHandler; -import net.minecraftforge.items.SlotItemHandler; +import net.neoforged.neoforge.items.IItemHandler; +import net.neoforged.neoforge.items.SlotItemHandler; import java.util.ArrayList; import java.util.Arrays; diff --git a/src/main/java/igentuman/nc/content/ArmorMaterials.java b/src/main/java/igentuman/nc/content/ArmorMaterials.java deleted file mode 100644 index 0aa744e07..000000000 --- a/src/main/java/igentuman/nc/content/ArmorMaterials.java +++ /dev/null @@ -1,90 +0,0 @@ -package igentuman.nc.content; - -import net.minecraft.sounds.SoundEvent; -import net.minecraft.sounds.SoundEvents; -import net.minecraft.util.LazyLoadedValue; -import net.minecraft.world.entity.EquipmentSlot; -import net.minecraft.world.item.ArmorItem; -import net.minecraft.world.item.ArmorMaterial; -import net.minecraft.world.item.crafting.Ingredient; -import java.util.function.Supplier; - -import static igentuman.nc.NuclearCraft.MODID; -import static igentuman.nc.setup.registration.NCItems.*; -import static igentuman.nc.setup.registration.Tags.forgeIngot; - -public enum ArmorMaterials implements ArmorMaterial { - - HAZMAT(MODID+":hazmat", 5, new int[]{1, 2, 3, 1}, 15, SoundEvents.ARMOR_EQUIP_LEATHER, 0.0F, 0.0F, () -> { - return Ingredient.of(NC_PARTS.get("bioplastic").get()); - }), - TOUGH(MODID+":tough", 33, new int[]{3, 6, 8, 3}, 15, SoundEvents.ARMOR_EQUIP_DIAMOND, 3.5F, 0.2F, () -> { - return Ingredient.of(forgeIngot("tough_alloy")); - }), - HEV(MODID+":hev", 37, new int[]{3, 5, 7, 3}, 25, SoundEvents.ARMOR_EQUIP_NETHERITE, 4.0F, 0.3F, () -> { - return Ingredient.of(NC_SHIELDING.get("dps").get()); - }); - - private static final int[] HEALTH_PER_SLOT = new int[]{13, 15, 16, 11}; - private final String name; - private final int durabilityMultiplier; - private final int[] slotProtections; - private final int enchantmentValue; - private final SoundEvent sound; - private final float toughness; - private final float knockbackResistance; - private final LazyLoadedValue repairIngredient; - - private ArmorMaterials(String pName, int pDurabilityMultiplier, int[] pSlotProtections, int pEnchantmentValue, SoundEvent pSound, float pToughness, float pKnockbackResistance, Supplier pRepairIngredient) { - this.name = pName; - this.durabilityMultiplier = pDurabilityMultiplier; - this.slotProtections = pSlotProtections; - this.enchantmentValue = pEnchantmentValue; - this.sound = pSound; - this.toughness = pToughness; - this.knockbackResistance = pKnockbackResistance; - this.repairIngredient = new LazyLoadedValue<>(pRepairIngredient); - } - - public int getDurabilityForSlot(EquipmentSlot pSlot) { - return HEALTH_PER_SLOT[pSlot.getIndex()] * this.durabilityMultiplier; - } - - public int getDefenseForSlot(EquipmentSlot pSlot) { - return this.slotProtections[pSlot.getIndex()]; - } - - @Override - public int getDurabilityForType(ArmorItem.Type type) { - return 3; - } - - @Override - public int getDefenseForType(ArmorItem.Type type) { - return 3; - } - - public int getEnchantmentValue() { - return this.enchantmentValue; - } - - public SoundEvent getEquipSound() { - return this.sound; - } - - public Ingredient getRepairIngredient() { - return this.repairIngredient.get(); - } - - public String getName() { - return this.name; - } - - public float getToughness() { - return this.toughness; - } - - public float getKnockbackResistance() { - return this.knockbackResistance; - } -} \ No newline at end of file diff --git a/src/main/java/igentuman/nc/content/Electromagnets.java b/src/main/java/igentuman/nc/content/Electromagnets.java index cc55960fa..51004bf45 100644 --- a/src/main/java/igentuman/nc/content/Electromagnets.java +++ b/src/main/java/igentuman/nc/content/Electromagnets.java @@ -132,9 +132,5 @@ public int getEfficiency() { public int getMaxTemp() { return maxTemp; } - - public int getHeatRate() { - return 100; // TODO: make it configurable - } } } diff --git a/src/main/java/igentuman/nc/content/particles/CapabilityParticleStackHandler.java b/src/main/java/igentuman/nc/content/particles/CapabilityParticleStackHandler.java index c5188113c..733e82282 100644 --- a/src/main/java/igentuman/nc/content/particles/CapabilityParticleStackHandler.java +++ b/src/main/java/igentuman/nc/content/particles/CapabilityParticleStackHandler.java @@ -1,67 +1,53 @@ package igentuman.nc.content.particles; +import net.minecraft.core.HolderLookup; import net.minecraft.nbt.CompoundTag; -import net.minecraftforge.common.capabilities.Capability; -import net.minecraftforge.common.capabilities.CapabilityManager; -import net.minecraftforge.common.capabilities.CapabilityToken; -import net.minecraftforge.common.capabilities.RegisterCapabilitiesEvent; -import net.minecraftforge.common.util.INBTSerializable; -import net.minecraftforge.common.util.LazyOptional; +import net.neoforged.neoforge.common.util.INBTSerializable; -public class CapabilityParticleStackHandler -{ - public static final Capability PARTICLE_HANDLER_CAPABILITY = - CapabilityManager.get(new CapabilityToken<>(){}); +/** + * Particle stack handler utilities. + * The old Capability was removed during NeoForge migration. + * Block entities use ParticleStorage directly instead of capability lookup. + */ +public class CapabilityParticleStackHandler { - public static void register(RegisterCapabilitiesEvent event) - { - event.register(IParticleStackHandler.class); - } - - /** - * Creates a LazyOptional for a particle storage - */ - public static LazyOptional createHandler(ParticleStorage storage) { - return LazyOptional.of(() -> storage); - } - /** - * Storage implementation for serializing/deserializing capability data + * Storage implementation for serializing/deserializing particle data */ public static class ParticleHandlerStorage implements INBTSerializable { private final IParticleStackHandler handler; - + public ParticleHandlerStorage(IParticleStackHandler handler) { this.handler = handler; } - + @Override - public CompoundTag serializeNBT() { + public CompoundTag serializeNBT(HolderLookup.Provider provider) { if (!(handler instanceof IParticleStorage)) throw new RuntimeException("IParticleStackHandler instance does not implement IParticleStorage"); - + CompoundTag nbt = new CompoundTag(); IParticleStorage tank = (IParticleStorage) handler; ParticleStack particle = tank.getParticleStack(); - + if (particle != null) { particle.writeToNBT(nbt); } else { nbt.putString("Empty", ""); } - + nbt.putLong("MaxEnergy", tank.getMaxEnergy()); nbt.putInt("Capacity", tank.getCapacity()); nbt.putLong("MinEnergy", tank.getMinEnergy()); - + return nbt; } - + @Override - public void deserializeNBT(CompoundTag nbt) { + public void deserializeNBT(HolderLookup.Provider provider, CompoundTag nbt) { if (!(handler instanceof ParticleStorage)) throw new RuntimeException("IParticleStackHandler instance is not instance of ParticleStorage"); - + ParticleStorage tank = (ParticleStorage) handler; tank.setMaxEnergy(nbt.getLong("MaxEnergy")); tank.setCapacity(nbt.getInt("Capacity")); diff --git a/src/main/java/igentuman/nc/content/particles/IItemParticleAmount.java b/src/main/java/igentuman/nc/content/particles/IItemParticleAmount.java index 811e6d23c..6cb65f789 100644 --- a/src/main/java/igentuman/nc/content/particles/IItemParticleAmount.java +++ b/src/main/java/igentuman/nc/content/particles/IItemParticleAmount.java @@ -1,6 +1,7 @@ package igentuman.nc.content.particles; +import igentuman.api.platform.NCItemStacks; import net.minecraft.nbt.CompoundTag; import net.minecraft.world.item.ItemStack; @@ -21,7 +22,7 @@ static int getCapacity(ItemStack stack) if (!nbt.contains("particle_capacity")) { return moleAmount; } - + return nbt.getInt("particle_capacity"); } @@ -35,7 +36,14 @@ default Particle getParticle(ItemStack stack) } CompoundTag nbt = getStorageNBT(stack); if (!nbt.contains("particle")) { - nbt.putString("particle", sources.get(stack.getItem().toString()).getParticle().name); + // Write the particle key atomically + String particleName = sources.get(stack.getItem().toString()).getParticle().name; + NCItemStacks.modifyTag(stack, rootTag -> { + CompoundTag storage = rootTag.getCompound("particle_storage"); + storage.putString("particle", particleName); + rootTag.put("particle_storage", storage); + }); + return particles.get(particleName); } return particles.get(nbt.getString("particle")); } @@ -53,22 +61,26 @@ default void setAmountStored(ItemStack stack, int amount) { if(stack.getItem() instanceof IItemParticleAmount) { - CompoundTag nbt = getStorageNBT(stack); - nbt.putInt("particle_amount", Math.min(amount, getCapacity(stack))); + int capped = Math.min(amount, getCapacity(stack)); + NCItemStacks.modifyTag(stack, rootTag -> { + CompoundTag storage = rootTag.getCompound("particle_storage"); + storage.putInt("particle_amount", capped); + rootTag.put("particle_storage", storage); + }); } } - - + + default ItemStack fill(ItemStack stack, int amount, String type) { if(getAmountStored(stack) + amount <= getCapacity(stack)) { setAmountStored(stack,getAmountStored(stack)+amount); } - + return stack; } - + default ItemStack use(ItemStack stack, int amount) { if(getAmountStored(stack) > amount) @@ -79,29 +91,29 @@ else if (getAmountStored(stack) == amount) { return getEmptyItem(); } - + return stack; } - + default ItemStack getEmptyItem() { return ItemStack.EMPTY; } - + default boolean isEmptyItem(ItemStack stack) { return stack == getEmptyItem() || getAmountStored(stack) <= 0; } - + static ItemStack cleanNBT(ItemStack stack) { ItemStack newStack = stack.copy(); - newStack.setTag(null); + NCItemStacks.setTag(newStack, null); return newStack; } - - + + static ItemStack fullItem(ItemStack stack) { if(stack.getItem() instanceof IItemParticleAmount) @@ -113,15 +125,22 @@ static ItemStack fullItem(ItemStack stack) return stack; } + /** + * Returns a READ-ONLY copy of the "particle_storage" sub-compound. + * If none exists yet, returns a default in-memory compound without persisting. + * Use {@link #setAmountStored}, {@link #setStorageNBT}, or + * {@link NCItemStacks#modifyTag} for writes. + */ static CompoundTag getStorageNBT(ItemStack stack) { - CompoundTag nbt = stack.getOrCreateTag(); + CompoundTag nbt = NCItemStacks.getTagCopy(stack); if (!nbt.contains("particle_storage")) { + // Return a default in-memory compound without persisting CompoundTag storage = new CompoundTag(); storage.putInt("particle_amount", ParticleSources.getCapacity(stack)); storage.putInt("particle_capacity", ParticleSources.getCapacity(stack)); - nbt.put("particle_storage", storage); + return storage; } return nbt.getCompound("particle_storage"); } @@ -132,24 +151,22 @@ static void setStorageNBT(ItemStack stack) { return; } - + IItemParticleAmount item = (IItemParticleAmount) stack.getItem(); - CompoundTag nbt = stack.getOrCreateTag(); - - if (!nbt.contains("particle_storage")) - { - CompoundTag storage = new CompoundTag(); - storage.putInt("particle_amount", moleAmount); - storage.putInt("particle_capacity", item.getItemCapacity(stack)); - nbt.put("particle_storage",storage); - stack.setTag(nbt); - } - else if(!nbt.getCompound("particle_storage").contains("particle_capacity")) - { - nbt.getCompound("particle_storage").putInt("particle_capacity", item.getItemCapacity(stack)); - stack.setTag(nbt); - } + NCItemStacks.modifyTag(stack, nbt -> { + if (!nbt.contains("particle_storage")) + { + CompoundTag storage = new CompoundTag(); + storage.putInt("particle_amount", moleAmount); + storage.putInt("particle_capacity", item.getItemCapacity(stack)); + nbt.put("particle_storage", storage); + } + else if(!nbt.getCompound("particle_storage").contains("particle_capacity")) + { + nbt.getCompound("particle_storage").putInt("particle_capacity", item.getItemCapacity(stack)); + } + }); } default ParticleStack getParticleStack(ItemStack stack) { diff --git a/src/main/java/igentuman/nc/content/particles/ParticleCapabilityProvider.java b/src/main/java/igentuman/nc/content/particles/ParticleCapabilityProvider.java deleted file mode 100644 index dcf9507fb..000000000 --- a/src/main/java/igentuman/nc/content/particles/ParticleCapabilityProvider.java +++ /dev/null @@ -1,88 +0,0 @@ -package igentuman.nc.content.particles; - -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 org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; - -/** - * Capability provider for particle storage - * Use this class to attach particle storage capabilities to blocks, items, etc. - */ -public class ParticleCapabilityProvider implements ICapabilitySerializable { - - private final ParticleStorage storage; - private final LazyOptional lazyHandler; - private final CapabilityParticleStackHandler.ParticleHandlerStorage serializer; - - /** - * Create a new particle capability provider - * - * @param initialStack Initial particle stack (can be null) - * @param maxEnergy Maximum energy of particles - * @param capacity Maximum number of particles - * @param minEnergy Minimum energy of particles - */ - public ParticleCapabilityProvider(@Nullable ParticleStack initialStack, long maxEnergy, int capacity, long minEnergy) { - this.storage = new ParticleStorage(initialStack, maxEnergy, capacity, minEnergy); - this.lazyHandler = LazyOptional.of(() -> storage); - this.serializer = new CapabilityParticleStackHandler.ParticleHandlerStorage(storage); - } - - /** - * Create a new particle capability provider with default min energy of 0 - * - * @param initialStack Initial particle stack (can be null) - * @param maxEnergy Maximum energy of particles - * @param capacity Maximum number of particles - */ - public ParticleCapabilityProvider(@Nullable ParticleStack initialStack, long maxEnergy, int capacity) { - this(initialStack, maxEnergy, capacity, 0); - } - - /** - * Create a new particle capability provider with default capacity of Integer.MAX_VALUE - * - * @param initialStack Initial particle stack (can be null) - * @param maxEnergy Maximum energy of particles - */ - public ParticleCapabilityProvider(@Nullable ParticleStack initialStack, long maxEnergy) { - this(initialStack, maxEnergy, Integer.MAX_VALUE, 0); - } - - /** - * Create a new particle capability provider with default values - */ - public ParticleCapabilityProvider() { - this(null, Long.MAX_VALUE, Integer.MAX_VALUE, 0); - } - - @Override - public @NotNull LazyOptional getCapability(@NotNull Capability cap, @Nullable Direction side) { - if (cap == CapabilityParticleStackHandler.PARTICLE_HANDLER_CAPABILITY) { - return lazyHandler.cast(); - } - return LazyOptional.empty(); - } - - @Override - public CompoundTag serializeNBT() { - return serializer.serializeNBT(); - } - - @Override - public void deserializeNBT(CompoundTag nbt) { - serializer.deserializeNBT(nbt); - } - - /** - * Invalidate the capability when it's no longer needed - * Call this method when the block is removed or the item is destroyed - */ - public void invalidate() { - lazyHandler.invalidate(); - } -} \ No newline at end of file diff --git a/src/main/java/igentuman/nc/content/particles/ParticleSources.java b/src/main/java/igentuman/nc/content/particles/ParticleSources.java index 17e47811a..6ede539ee 100644 --- a/src/main/java/igentuman/nc/content/particles/ParticleSources.java +++ b/src/main/java/igentuman/nc/content/particles/ParticleSources.java @@ -2,7 +2,7 @@ import net.minecraft.server.MinecraftServer; import net.minecraft.world.item.ItemStack; -import net.minecraftforge.fluids.FluidStack; +import net.neoforged.neoforge.fluids.FluidStack; import java.util.HashMap; diff --git a/src/main/java/igentuman/nc/content/processors/ProcessorBuilder.java b/src/main/java/igentuman/nc/content/processors/ProcessorBuilder.java index f6459cf79..f889fa697 100644 --- a/src/main/java/igentuman/nc/content/processors/ProcessorBuilder.java +++ b/src/main/java/igentuman/nc/content/processors/ProcessorBuilder.java @@ -12,9 +12,9 @@ import net.minecraft.client.gui.screens.inventory.MenuAccess; import net.minecraft.world.item.crafting.RecipeSerializer; import net.minecraft.world.level.block.entity.BlockEntityType; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.api.distmarker.OnlyIn; -import net.minecraftforge.fml.loading.FMLEnvironment; +import net.neoforged.api.distmarker.Dist; +import net.neoforged.api.distmarker.OnlyIn; +import net.neoforged.fml.loading.FMLEnvironment; import java.util.Arrays; import java.util.Collections; diff --git a/src/main/java/igentuman/nc/content/processors/Processors.java b/src/main/java/igentuman/nc/content/processors/Processors.java index e2363e68d..2d9c8870c 100644 --- a/src/main/java/igentuman/nc/content/processors/Processors.java +++ b/src/main/java/igentuman/nc/content/processors/Processors.java @@ -6,11 +6,11 @@ import igentuman.nc.container.LeacherContainer; import igentuman.nc.util.annotation.NCProcessorsRegistry; import net.minecraft.client.gui.screens.MenuScreens; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.api.distmarker.OnlyIn; -import net.minecraftforge.fml.DistExecutor; -import net.minecraftforge.fml.ModList; -import net.minecraftforge.forgespi.language.ModFileScanData; +import net.neoforged.api.distmarker.Dist; +import net.neoforged.api.distmarker.OnlyIn; +import net.neoforged.fml.loading.FMLEnvironment; +import net.neoforged.fml.ModList; +import net.neoforged.neoforgespi.language.ModFileScanData; import org.objectweb.asm.Type; import java.util.ArrayList; @@ -83,7 +83,7 @@ public static HashMap all() { .withCatalyst() .build() ); - DistExecutor.unsafeRunWhenOn(Dist.CLIENT, () -> ()-> Processors.setScreen(LEACHER, LeacherScreen::new)); + if (FMLEnvironment.dist == Dist.CLIENT) { Processors.setScreen(LEACHER, LeacherScreen::new); } all.put(PUMP, ProcessorBuilder diff --git a/src/main/java/igentuman/nc/datagen/BaseLootTableProvider.java b/src/main/java/igentuman/nc/datagen/BaseLootTableProvider.java index 94214b745..929abb433 100644 --- a/src/main/java/igentuman/nc/datagen/BaseLootTableProvider.java +++ b/src/main/java/igentuman/nc/datagen/BaseLootTableProvider.java @@ -1,20 +1,12 @@ package igentuman.nc.datagen; -import com.google.gson.Gson; -import com.google.gson.GsonBuilder; -import net.minecraft.advancements.critereon.EnchantmentPredicate; -import net.minecraft.advancements.critereon.ItemPredicate; -import net.minecraft.advancements.critereon.MinMaxBounds; -import net.minecraft.data.CachedOutput; +import igentuman.api.platform.NCLoot; +import net.minecraft.core.HolderLookup; import net.minecraft.data.DataGenerator; -import net.minecraft.data.DataProvider; import net.minecraft.data.loot.BlockLootSubProvider; -import net.minecraft.data.loot.LootTableProvider; -import net.minecraft.data.loot.LootTableSubProvider; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.flag.FeatureFlags; import net.minecraft.world.item.Item; -import net.minecraft.world.item.enchantment.Enchantments; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraft.world.level.storage.loot.LootPool; @@ -22,11 +14,7 @@ import net.minecraft.world.level.storage.loot.entries.AlternativesEntry; import net.minecraft.world.level.storage.loot.entries.DynamicLoot; import net.minecraft.world.level.storage.loot.entries.LootItem; -import net.minecraft.world.level.storage.loot.entries.LootTableReference; import net.minecraft.world.level.storage.loot.functions.*; -import net.minecraft.world.level.storage.loot.parameters.LootContextParamSets; -import net.minecraft.world.level.storage.loot.predicates.MatchTool; -import net.minecraft.world.level.storage.loot.providers.nbt.ContextNbtProvider; import net.minecraft.world.level.storage.loot.providers.number.ConstantValue; import net.minecraft.world.level.storage.loot.providers.number.UniformGenerator; @@ -35,32 +23,27 @@ public abstract class BaseLootTableProvider extends BlockLootSubProvider { public DataGenerator generator; + protected final HolderLookup.Provider registries; - public BaseLootTableProvider() { - super(Set.of(), FeatureFlags.REGISTRY.allFlags()); - + public BaseLootTableProvider(HolderLookup.Provider registries) { + super(Set.of(), FeatureFlags.REGISTRY.allFlags(), registries); + this.registries = registries; } - protected LootTable.Builder createStandardTable(String name, Block block, BlockEntityType type) { LootPool.Builder builder = LootPool.lootPool() - .name(name) .setRolls(ConstantValue.exactly(1)) .add(LootItem.lootTableItem(block) .apply(CopyNameFunction.copyName(CopyNameFunction.NameSource.BLOCK_ENTITY)) - .apply(CopyNbtFunction.copyData(ContextNbtProvider.BLOCK_ENTITY) - .copy("Info", "BlockEntityTag.Info", CopyNbtFunction.MergeStrategy.REPLACE) - .copy("Inventory", "BlockEntityTag.Inventory", CopyNbtFunction.MergeStrategy.REPLACE) - .copy("Energy", "BlockEntityTag.Energy", CopyNbtFunction.MergeStrategy.REPLACE)) - .apply(SetContainerContents.setContents(type) - .withEntry(DynamicLoot.dynamicEntry(ResourceLocation.tryBuild("minecraft", "contents")))) + .apply(NCLoot.copyBlockEntityData()) + .apply(NCLoot.setContainerContents() + .withEntry(DynamicLoot.dynamicEntry(ResourceLocation.fromNamespaceAndPath("minecraft", "contents")))) ); return LootTable.lootTable().withPool(builder); } protected LootTable.Builder createSimpleTable(String name, Block block) { LootPool.Builder builder = LootPool.lootPool() - .name(name) .setRolls(ConstantValue.exactly(1)) .add(LootItem.lootTableItem(block)); return LootTable.lootTable().withPool(builder); @@ -68,19 +51,17 @@ protected LootTable.Builder createSimpleTable(String name, Block block) { protected LootTable.Builder createSilkTouchTable(String name, Block block, Item lootItem, float min, float max) { LootPool.Builder builder = LootPool.lootPool() - .name(name) .setRolls(ConstantValue.exactly(1)) .add(AlternativesEntry.alternatives( LootItem.lootTableItem(block) - .when(MatchTool.toolMatches(ItemPredicate.Builder.item() - .hasEnchantment(new EnchantmentPredicate(Enchantments.SILK_TOUCH, MinMaxBounds.Ints.atLeast(1))))), + .when(NCLoot.hasSilkTouch(registries)), LootItem.lootTableItem(lootItem) .apply(SetItemCountFunction.setCount(UniformGenerator.between(min, max))) - .apply(ApplyBonusCount.addUniformBonusCount(Enchantments.BLOCK_FORTUNE, 1)) + .apply(NCLoot.fortuneBonus(registries, 1)) .apply(ApplyExplosionDecay.explosionDecay()) ) ); return LootTable.lootTable().withPool(builder); } -} \ No newline at end of file +} diff --git a/src/main/java/igentuman/nc/datagen/BiomeModifierProvider.java b/src/main/java/igentuman/nc/datagen/BiomeModifierProvider.java index cb372c3a6..77e932114 100644 --- a/src/main/java/igentuman/nc/datagen/BiomeModifierProvider.java +++ b/src/main/java/igentuman/nc/datagen/BiomeModifierProvider.java @@ -2,19 +2,20 @@ import net.minecraft.core.HolderGetter; import net.minecraft.core.registries.Registries; -import net.minecraft.data.worldgen.BootstapContext; +import net.minecraft.data.worldgen.BootstrapContext; import net.minecraft.resources.ResourceKey; import net.minecraft.world.level.biome.Biome; import net.minecraft.world.level.levelgen.placement.PlacedFeature; -import net.minecraftforge.common.world.BiomeModifier; -import net.minecraftforge.registries.ForgeRegistries; +import net.neoforged.neoforge.common.world.BiomeModifier; +import net.minecraft.core.registries.BuiltInRegistries; +import net.neoforged.neoforge.registries.NeoForgeRegistries; import static igentuman.nc.NuclearCraft.rl; public class BiomeModifierProvider { - public static void register(BootstapContext context) { + public static void register(BootstrapContext context) { HolderGetter features = context.lookup(Registries.PLACED_FEATURE); HolderGetter biomes = context.lookup(Registries.BIOME); return; @@ -33,6 +34,6 @@ public static void register(BootstapContext context) { private static ResourceKey key(String path) { - return ResourceKey.create(ForgeRegistries.Keys.BIOME_MODIFIERS, rl(path)); + return ResourceKey.create(NeoForgeRegistries.Keys.BIOME_MODIFIERS, rl(path)); } } \ No newline at end of file diff --git a/src/main/java/igentuman/nc/datagen/DataGenerators.java b/src/main/java/igentuman/nc/datagen/DataGenerators.java index f7de1ea32..4635cc86e 100644 --- a/src/main/java/igentuman/nc/datagen/DataGenerators.java +++ b/src/main/java/igentuman/nc/datagen/DataGenerators.java @@ -9,26 +9,28 @@ import net.minecraft.data.DataGenerator; import net.minecraft.data.loot.LootTableProvider; import net.minecraft.world.level.storage.loot.parameters.LootContextParamSets; -import net.minecraftforge.data.event.GatherDataEvent; -import net.minecraftforge.eventbus.api.SubscribeEvent; -import net.minecraftforge.fml.common.Mod; +import net.neoforged.neoforge.data.event.GatherDataEvent; +import net.neoforged.bus.api.SubscribeEvent; +import net.neoforged.fml.common.EventBusSubscriber; +import net.neoforged.fml.common.Mod; import java.util.Collections; import java.util.List; import static igentuman.nc.NuclearCraft.MODID; -@Mod.EventBusSubscriber(modid = MODID, bus = Mod.EventBusSubscriber.Bus.MOD) +@EventBusSubscriber(modid = MODID, bus = EventBusSubscriber.Bus.MOD) public class DataGenerators { @SubscribeEvent public static void gatherData(GatherDataEvent event) { DataGenerator generator = event.getGenerator(); NcIngredient.ping(); - generator.addProvider(event.includeServer(), new NCRecipes(generator)); + generator.addProvider(event.includeServer(), new NCRecipes(generator, event.getLookupProvider())); generator.addProvider(event.includeServer(), new LootTableProvider(generator.getPackOutput(), Collections.emptySet(), List.of(new LootTableProvider.SubProviderEntry(NCLootTables::new, LootContextParamSets.BLOCK), - new LootTableProvider.SubProviderEntry(NCEntityLootTables::new, LootContextParamSets.ENTITY)))); + new LootTableProvider.SubProviderEntry(NCEntityLootTables::new, LootContextParamSets.ENTITY)), + event.getLookupProvider())); NCBlockTags blockTags = new NCBlockTags(generator, event); @@ -47,4 +49,3 @@ public static void gatherData(GatherDataEvent event) { } } - diff --git a/src/main/java/igentuman/nc/datagen/EmiLangProvider.java b/src/main/java/igentuman/nc/datagen/EmiLangProvider.java index 705514052..7d3585ba5 100644 --- a/src/main/java/igentuman/nc/datagen/EmiLangProvider.java +++ b/src/main/java/igentuman/nc/datagen/EmiLangProvider.java @@ -1,7 +1,7 @@ package igentuman.nc.datagen; import net.minecraft.data.DataGenerator; -import net.minecraftforge.common.data.LanguageProvider; +import net.neoforged.neoforge.common.data.LanguageProvider; import static igentuman.nc.setup.registration.FissionFuel.NC_ISOTOPES; import static igentuman.nc.setup.registration.NCFluids.NC_MATERIALS; diff --git a/src/main/java/igentuman/nc/datagen/NCEntityLootTables.java b/src/main/java/igentuman/nc/datagen/NCEntityLootTables.java index d49989c22..df92242a1 100644 --- a/src/main/java/igentuman/nc/datagen/NCEntityLootTables.java +++ b/src/main/java/igentuman/nc/datagen/NCEntityLootTables.java @@ -1,7 +1,9 @@ package igentuman.nc.datagen; +import igentuman.api.platform.NCLoot; import igentuman.nc.setup.registration.NCBlocks; import igentuman.nc.setup.registration.NCItems; +import net.minecraft.core.HolderLookup; import net.minecraft.data.loot.EntityLootSubProvider; import net.minecraft.world.entity.EntityType; import net.minecraft.world.flag.FeatureFlags; @@ -9,7 +11,6 @@ import net.minecraft.world.level.storage.loot.LootPool; import net.minecraft.world.level.storage.loot.LootTable; import net.minecraft.world.level.storage.loot.entries.LootItem; -import net.minecraft.world.level.storage.loot.functions.LootingEnchantFunction; import net.minecraft.world.level.storage.loot.functions.SetItemCountFunction; import net.minecraft.world.level.storage.loot.providers.number.ConstantValue; import net.minecraft.world.level.storage.loot.providers.number.UniformGenerator; @@ -22,8 +23,11 @@ public class NCEntityLootTables extends EntityLootSubProvider { - public NCEntityLootTables() { - super(FeatureFlags.REGISTRY.allFlags()); + private final HolderLookup.Provider registries; + + public NCEntityLootTables(HolderLookup.Provider registries) { + super(FeatureFlags.REGISTRY.allFlags(), registries); + this.registries = registries; } @Override @@ -34,25 +38,25 @@ public void generate() { .setRolls(ConstantValue.exactly(1)) .add(LootItem.lootTableItem(NC_ISOTOPES.get("xenorium/298").get()) .apply(SetItemCountFunction.setCount(UniformGenerator.between(0.0F, 1.0F))) - .apply(LootingEnchantFunction.lootingMultiplier(UniformGenerator.between(0.0F, 1.0F)))) + .apply(NCLoot.lootingMultiplier(registries, UniformGenerator.between(0.0F, 1.0F)))) ) .withPool(LootPool.lootPool() .setRolls(ConstantValue.exactly(1)) .add(LootItem.lootTableItem(NC_ISOTOPES.get("californium/252").get()) .apply(SetItemCountFunction.setCount(UniformGenerator.between(0.0F, 1.0F))) - .apply(LootingEnchantFunction.lootingMultiplier(UniformGenerator.between(0.0F, 1.0F)))) + .apply(NCLoot.lootingMultiplier(registries, UniformGenerator.between(0.0F, 1.0F)))) ) .withPool(LootPool.lootPool() .setRolls(ConstantValue.exactly(1)) .add(LootItem.lootTableItem(Items.ROTTEN_FLESH) .apply(SetItemCountFunction.setCount(UniformGenerator.between(1.0F, 2.0F))) - .apply(LootingEnchantFunction.lootingMultiplier(UniformGenerator.between(0.0F, 1.0F)))) + .apply(NCLoot.lootingMultiplier(registries, UniformGenerator.between(0.0F, 1.0F)))) ) .withPool(LootPool.lootPool() .setRolls(ConstantValue.exactly(1)) .add(LootItem.lootTableItem(NCBlocks.WASTELAND_EARTH.get()) .apply(SetItemCountFunction.setCount(UniformGenerator.between(0.0F, 2.0F))) - .apply(LootingEnchantFunction.lootingMultiplier(UniformGenerator.between(0.0F, 1.0F)))) + .apply(NCLoot.lootingMultiplier(registries, UniformGenerator.between(0.0F, 1.0F)))) ) ); @@ -61,7 +65,7 @@ public void generate() { .setRolls(ConstantValue.exactly(1)) .add(LootItem.lootTableItem(Items.ROTTEN_FLESH) .apply(SetItemCountFunction.setCount(UniformGenerator.between(1.0F, 2.0F))) - .apply(LootingEnchantFunction.lootingMultiplier(UniformGenerator.between(0.0F, 1.0F)))) + .apply(NCLoot.lootingMultiplier(registries, UniformGenerator.between(0.0F, 1.0F)))) ) ); } diff --git a/src/main/java/igentuman/nc/datagen/NCLanguageProvider.java b/src/main/java/igentuman/nc/datagen/NCLanguageProvider.java index cba04bee3..62cda5865 100644 --- a/src/main/java/igentuman/nc/datagen/NCLanguageProvider.java +++ b/src/main/java/igentuman/nc/datagen/NCLanguageProvider.java @@ -2,7 +2,7 @@ import igentuman.nc.setup.registration.*; import net.minecraft.data.DataGenerator; -import net.minecraftforge.common.data.LanguageProvider; +import net.neoforged.neoforge.common.data.LanguageProvider; import java.util.List; @@ -113,8 +113,9 @@ private void particles() { add("emi.category.nuclearcraft.steam_turbine", "Steam Turbine"); add("emi.category.nuclearcraft.leacher", "Leacher"); add("emi.category.nuclearcraft.supercooler", "Supercooler"); - add("emi.category.nuclearcraft.fuel_reprocessor", ""); + add("emi.category.nuclearcraft.fuel_reprocessor", "Fuel Reprocessor"); add("emi.category.nuclearcraft.particle_info", "Particle Info"); + add("emi.category.nuclearcraft.particle_source_info", "Particle Source"); add("emi.category.nuclearcraft.kugelblitz_info", "Kugelblitz Info"); add("gui.nuclearcraft.jei.particle.mass", "Mass: %s"); add("jei.category.nuclearcraft.particle_info", "Particle Info"); @@ -303,6 +304,14 @@ private void sounds() { add("sound_event.nuclearcraft.fission_reactor", "Fission Reactor Ticking"); add("sound_event.nuclearcraft.turbine", "Turbine is spinning"); + + add("sound_event.nuclearcraft.boss_idle", "Boss of the Wasteland Idle"); + add("sound_event.nuclearcraft.boss_hit", "Boss of the Wasteland Hit"); + add("sound_event.nuclearcraft.boss_angry", "Boss of the Wasteland Angry"); + add("sound_event.nuclearcraft.boss_action", "Boss of the Wasteland Action"); + add("sound_event.nuclearcraft.blackhole.idle", "Black Hole Hums"); + add("sound_event.nuclearcraft.blackhole.spawn", "Black Hole Spawns"); + add("sound_event.nuclearcraft.laser.shoot", "Laser Shoots"); } private void advancements() { @@ -656,6 +665,7 @@ private void tooltips() { add("tooltip.nc.accelerator.focus", "Focus: %s"); add("tooltip.nc.accelerator.quadroupoles", "Quadrupoles: %s"); add("tooltip.nc.accelerator.dipoles", "Dipoles: %s"); + add("tooltip.nc.accelerator.too_hot", "Accelerator is too hot"); add("tooltip.nc.accelerator.voltage", "Voltage: %sV"); add("tooltip.nc.accelerator.amplifiers", "Amplifiers: %s"); add("tooltip.nc.accelerator.coolers", "Coolers: %s"); diff --git a/src/main/java/igentuman/nc/datagen/NCLootTables.java b/src/main/java/igentuman/nc/datagen/NCLootTables.java index 8e0598856..8d17d71d7 100644 --- a/src/main/java/igentuman/nc/datagen/NCLootTables.java +++ b/src/main/java/igentuman/nc/datagen/NCLootTables.java @@ -1,8 +1,10 @@ package igentuman.nc.datagen; +import igentuman.api.platform.NCNames; import igentuman.nc.setup.registration.NCItems; +import net.minecraft.core.HolderLookup; import net.minecraft.world.level.block.Block; -import net.minecraftforge.registries.RegistryObject; +import net.neoforged.neoforge.registries.DeferredHolder; import org.jetbrains.annotations.NotNull; import java.util.ArrayList; @@ -18,10 +20,13 @@ import static igentuman.nc.setup.registration.NCEnergyBlocks.ENERGY_BLOCKS; import static igentuman.nc.setup.registration.NCProcessors.PROCESSORS; import static igentuman.nc.setup.registration.NCStorageBlocks.STORAGE_BLOCKS; -import static net.minecraft.world.level.block.Blocks.AIR; public class NCLootTables extends BaseLootTableProvider { + public NCLootTables(HolderLookup.Provider registries) { + super(registries); + } + private void ores() { for(String ore: ORE_BLOCKS.keySet()) { if(NCItems.NC_CHUNKS.containsKey(ore.replaceAll("_deepslate|_end|_nether",""))) { @@ -37,7 +42,7 @@ private void blocks() { ACCELERATOR_BLOCKS.values().forEach(this::add); TARGET_CHAMBER_BLOCKS.values().forEach(this::add); KUGELBLITZ_BLOCKS.values().forEach(block -> { - if (!block.get().asItem().toString().equals("black_hole")) { + if (!NCNames.of(block.get().asItem()).contains("black_hole")) { add(block); } }); @@ -49,7 +54,7 @@ private void blocks() { add(PORTAL_BLOCK.get(), block -> createSimpleTable("block", PORTAL_BLOCK.get())); } - private void add(RegistryObject regBlock) { + private void add(DeferredHolder regBlock) { add(regBlock.get(), block -> createSimpleTable("block", regBlock.get())); } @@ -70,7 +75,7 @@ private void machines() { add(NC_RF_AMPLIFIERS.get(name).get(), block -> createSimpleTable("block", NC_RF_AMPLIFIERS.get(name).get())); } add(EXPL_BLOCK.get(), block -> createSimpleTable("block", EXPL_BLOCK.get())); - add(EXPL_PROXY_BLOCK.get(), block -> createSimpleTable("block", AIR)); + add(EXPL_PROXY_BLOCK.get(), noDrop()); } @Override @@ -83,21 +88,21 @@ public void generate() { @Override protected @NotNull Iterable getKnownBlocks() { List all = new ArrayList<>(); - all.addAll(ORE_BLOCKS.values().stream().map(RegistryObject::get).toList()); - all.addAll(NC_BLOCKS.values().stream().map(RegistryObject::get).toList()); - all.addAll(NC_MATERIAL_BLOCKS.values().stream().map(RegistryObject::get).toList()); - all.addAll(FISSION_BLOCKS.values().stream().map(RegistryObject::get).toList()); - all.addAll(FUSION_BLOCKS.values().stream().map(RegistryObject::get).toList()); - all.addAll(TURBINE_BLOCKS.values().stream().map(RegistryObject::get).toList()); - List kugelblitzBlocks = KUGELBLITZ_BLOCKS.values().stream().map(RegistryObject::get).toList(); - all.addAll(kugelblitzBlocks.stream().filter(block -> !block.asItem().toString().contains("black_hole")).toList()); - all.addAll(ACCELERATOR_BLOCKS.values().stream().map(RegistryObject::get).toList()); - all.addAll(TARGET_CHAMBER_BLOCKS.values().stream().map(RegistryObject::get).toList()); - all.addAll(PROCESSORS.values().stream().map(RegistryObject::get).toList()); - all.addAll(ENERGY_BLOCKS.values().stream().map(RegistryObject::get).toList()); - all.addAll(STORAGE_BLOCKS.values().stream().map(RegistryObject::get).toList()); - all.addAll(NC_ELECTROMAGNETS.values().stream().map(RegistryObject::get).toList()); - all.addAll(NC_RF_AMPLIFIERS.values().stream().map(RegistryObject::get).toList()); + all.addAll(ORE_BLOCKS.values().stream().map(DeferredHolder::get).toList()); + all.addAll(NC_BLOCKS.values().stream().map(DeferredHolder::get).toList()); + all.addAll(NC_MATERIAL_BLOCKS.values().stream().map(DeferredHolder::get).toList()); + all.addAll(FISSION_BLOCKS.values().stream().map(DeferredHolder::get).toList()); + all.addAll(FUSION_BLOCKS.values().stream().map(DeferredHolder::get).toList()); + all.addAll(TURBINE_BLOCKS.values().stream().map(DeferredHolder::get).toList()); + List kugelblitzBlocks = KUGELBLITZ_BLOCKS.values().stream().map(DeferredHolder::get).toList(); + all.addAll(kugelblitzBlocks.stream().filter(block -> !NCNames.of(block.asItem()).contains("black_hole")).toList()); + all.addAll(ACCELERATOR_BLOCKS.values().stream().map(DeferredHolder::get).toList()); + all.addAll(TARGET_CHAMBER_BLOCKS.values().stream().map(DeferredHolder::get).toList()); + all.addAll(PROCESSORS.values().stream().map(DeferredHolder::get).toList()); + all.addAll(ENERGY_BLOCKS.values().stream().map(DeferredHolder::get).toList()); + all.addAll(STORAGE_BLOCKS.values().stream().map(DeferredHolder::get).toList()); + all.addAll(NC_ELECTROMAGNETS.values().stream().map(DeferredHolder::get).toList()); + all.addAll(NC_RF_AMPLIFIERS.values().stream().map(DeferredHolder::get).toList()); all.add(EXPL_PROXY_BLOCK.get()); all.add(EXPL_BLOCK.get()); all.add(MUSHROOM_BLOCK.get()); diff --git a/src/main/java/igentuman/nc/datagen/NCWorldGenProvider.java b/src/main/java/igentuman/nc/datagen/NCWorldGenProvider.java index cea9de2dc..bed3d5b16 100644 --- a/src/main/java/igentuman/nc/datagen/NCWorldGenProvider.java +++ b/src/main/java/igentuman/nc/datagen/NCWorldGenProvider.java @@ -1,5 +1,6 @@ package igentuman.nc.datagen; +import igentuman.api.platform.NCMusicDiscs; import igentuman.nc.world.NCConfiguredFeatures; import igentuman.nc.world.NCPlacedFeatures; import igentuman.nc.world.biome.NCBiomeModifier; @@ -10,9 +11,10 @@ import net.minecraft.core.RegistrySetBuilder; import net.minecraft.core.registries.Registries; import net.minecraft.data.DataGenerator; -import net.minecraftforge.common.data.DatapackBuiltinEntriesProvider; -import net.minecraftforge.data.event.GatherDataEvent; -import net.minecraftforge.registries.ForgeRegistries; +import net.neoforged.neoforge.common.data.DatapackBuiltinEntriesProvider; +import net.neoforged.neoforge.data.event.GatherDataEvent; +import net.minecraft.core.registries.BuiltInRegistries; +import net.neoforged.neoforge.registries.NeoForgeRegistries; import java.util.Set; @@ -27,7 +29,8 @@ public class NCWorldGenProvider extends DatapackBuiltinEntriesProvider { //.add(Registries.LEVEL_STEM, Dimensions::bootstrapStem) .add(Registries.DENSITY_FUNCTION, NCDensityFunction::bootstrap) //.add(Registries.NOISE_SETTINGS, NCSurfaceRuleData::bootstrap) - .add(ForgeRegistries.Keys.BIOME_MODIFIERS, NCBiomeModifier::bootstrap); + .add(Registries.JUKEBOX_SONG, NCMusicDiscs::bootstrap) + .add(NeoForgeRegistries.Keys.BIOME_MODIFIERS, NCBiomeModifier::bootstrap); public NCWorldGenProvider(DataGenerator generator, GatherDataEvent event) { diff --git a/src/main/java/igentuman/nc/datagen/blockstates/ExtendedBlockstateProvider.java b/src/main/java/igentuman/nc/datagen/blockstates/ExtendedBlockstateProvider.java index 6d546db56..f19b86594 100644 --- a/src/main/java/igentuman/nc/datagen/blockstates/ExtendedBlockstateProvider.java +++ b/src/main/java/igentuman/nc/datagen/blockstates/ExtendedBlockstateProvider.java @@ -18,11 +18,12 @@ import net.minecraft.server.packs.PackType; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.state.properties.Property; -import net.minecraftforge.client.model.generators.*; -import net.minecraftforge.client.model.generators.VariantBlockStateBuilder.PartialBlockstate; -import net.minecraftforge.client.model.generators.loaders.ObjModelBuilder; -import net.minecraftforge.common.data.ExistingFileHelper; -import net.minecraftforge.registries.ForgeRegistries; +import net.neoforged.neoforge.client.model.generators.*; +import net.neoforged.neoforge.client.model.generators.VariantBlockStateBuilder.PartialBlockstate; +import net.neoforged.neoforge.client.model.generators.loaders.ObjModelBuilder; +import net.neoforged.neoforge.common.data.ExistingFileHelper; +import net.minecraft.core.registries.BuiltInRegistries; +import net.neoforged.neoforge.registries.NeoForgeRegistries; import javax.annotation.Nullable; import java.lang.reflect.Field; @@ -58,7 +59,7 @@ protected String name(Supplier b) protected String name(Block b) { - return ForgeRegistries.BLOCKS.getKey(b).getPath(); + return BuiltInRegistries.BLOCK.getKey(b).getPath(); } public void simpleBlockAndItem(Supplier b, ModelFile model) @@ -101,7 +102,7 @@ protected void setRenderType(@Nullable RenderType type, ModelBuilder... build protected ResourceLocation addModelsPrefix(ResourceLocation in) { - return ResourceLocation.tryBuild(in.getNamespace(), "models/"+in.getPath()); + return ResourceLocation.fromNamespaceAndPath(in.getNamespace(), "models/"+in.getPath()); } protected void itemModel(Supplier block, ModelFile model) diff --git a/src/main/java/igentuman/nc/datagen/blockstates/NCBlockStates.java b/src/main/java/igentuman/nc/datagen/blockstates/NCBlockStates.java index d57c7c967..1b44a34d2 100644 --- a/src/main/java/igentuman/nc/datagen/blockstates/NCBlockStates.java +++ b/src/main/java/igentuman/nc/datagen/blockstates/NCBlockStates.java @@ -11,9 +11,10 @@ import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.properties.BlockStateProperties; -import net.minecraftforge.client.model.generators.*; -import net.minecraftforge.data.event.GatherDataEvent; -import net.minecraftforge.registries.ForgeRegistries; +import net.neoforged.neoforge.client.model.generators.*; +import net.neoforged.neoforge.data.event.GatherDataEvent; +import net.minecraft.core.registries.BuiltInRegistries; +import net.neoforged.neoforge.registries.NeoForgeRegistries; import java.util.function.Function; @@ -419,7 +420,7 @@ private void wasteland() { } private ResourceLocation key(Block block) { - return ForgeRegistries.BLOCKS.getKey(block); + return BuiltInRegistries.BLOCK.getKey(block); } public ModelFile model(Block block, String subPath) { @@ -451,9 +452,9 @@ public ModelFile model(Block block, String subPath) { } BlockModelBuilder model = models().cubeAll( blockPath+key(block).getPath(), - ResourceLocation.tryBuild(name.getNamespace(), ModelProvider.BLOCK_FOLDER + "/"+subPath+"/" + name.getPath())); + ResourceLocation.fromNamespaceAndPath(name.getNamespace(), ModelProvider.BLOCK_FOLDER + "/"+subPath+"/" + name.getPath())); if(name.getPath().matches(".*glass|.*cell.*|.*photon.*|.*event_horizon_stabilizer.*|.*quantum_transformer.*")) { - model.renderType(ResourceLocation.tryBuild("minecraft","cutout")); + model.renderType(ResourceLocation.fromNamespaceAndPath("minecraft","cutout")); } return model; } @@ -465,9 +466,9 @@ public ModelFile multiBlockModel(Block block, String subPath) { } BlockModelBuilder m = models().cubeAll( "block/multiblock/"+key(block).getPath(), - ResourceLocation.tryBuild(name.getNamespace(), ModelProvider.BLOCK_FOLDER + "/"+subPath)); + ResourceLocation.fromNamespaceAndPath(name.getNamespace(), ModelProvider.BLOCK_FOLDER + "/"+subPath)); if(subPath.matches(".*glass|.*cell.*|.*photon.*|.*event_horizon_stabilizer.*|.*quantum_transformer.*")) { - m.renderType(ResourceLocation.tryBuild("minecraft","cutout")); + m.renderType(ResourceLocation.fromNamespaceAndPath("minecraft","cutout")); } return m; } @@ -492,12 +493,12 @@ public ModelFile sidedModel(Block block, String subPath) { } return models().cube( blockPath+key(block).getPath(), - ResourceLocation.tryBuild(name.getNamespace(), ModelProvider.BLOCK_FOLDER + "/"+subPath+"/top"), - ResourceLocation.tryBuild(name.getNamespace(), ModelProvider.BLOCK_FOLDER + "/"+subPath+"/bottom"), - ResourceLocation.tryBuild(name.getNamespace(), ModelProvider.BLOCK_FOLDER + "/"+subPath+"/" + name.getPath()), - ResourceLocation.tryBuild(name.getNamespace(), ModelProvider.BLOCK_FOLDER + "/"+subPath+"/back"), - ResourceLocation.tryBuild(name.getNamespace(), ModelProvider.BLOCK_FOLDER + "/"+subPath+"/side"), - ResourceLocation.tryBuild(name.getNamespace(), ModelProvider.BLOCK_FOLDER + "/"+subPath+"/side") + ResourceLocation.fromNamespaceAndPath(name.getNamespace(), ModelProvider.BLOCK_FOLDER + "/"+subPath+"/top"), + ResourceLocation.fromNamespaceAndPath(name.getNamespace(), ModelProvider.BLOCK_FOLDER + "/"+subPath+"/bottom"), + ResourceLocation.fromNamespaceAndPath(name.getNamespace(), ModelProvider.BLOCK_FOLDER + "/"+subPath+"/" + name.getPath()), + ResourceLocation.fromNamespaceAndPath(name.getNamespace(), ModelProvider.BLOCK_FOLDER + "/"+subPath+"/back"), + ResourceLocation.fromNamespaceAndPath(name.getNamespace(), ModelProvider.BLOCK_FOLDER + "/"+subPath+"/side"), + ResourceLocation.fromNamespaceAndPath(name.getNamespace(), ModelProvider.BLOCK_FOLDER + "/"+subPath+"/side") ).texture("particle", ModelProvider.BLOCK_FOLDER + "/"+subPath+"/side"); } @@ -506,17 +507,17 @@ public ModelFile energyModel(Block block, String subPath) { BlockModelBuilder model = models().cube( key(block).getPath(), - ResourceLocation.tryBuild(name.getNamespace(), ModelProvider.BLOCK_FOLDER + "/energy/"+subPath+"side"), - ResourceLocation.tryBuild(name.getNamespace(), ModelProvider.BLOCK_FOLDER + "/energy/"+subPath+"top"), - ResourceLocation.tryBuild(name.getNamespace(), ModelProvider.BLOCK_FOLDER + "/energy/"+subPath+"side"), - ResourceLocation.tryBuild(name.getNamespace(), ModelProvider.BLOCK_FOLDER + "/energy/"+subPath+"side"), - ResourceLocation.tryBuild(name.getNamespace(), ModelProvider.BLOCK_FOLDER + "/energy/"+subPath+"side"), - ResourceLocation.tryBuild(name.getNamespace(), ModelProvider.BLOCK_FOLDER + "/energy/"+subPath+"side") + ResourceLocation.fromNamespaceAndPath(name.getNamespace(), ModelProvider.BLOCK_FOLDER + "/energy/"+subPath+"side"), + ResourceLocation.fromNamespaceAndPath(name.getNamespace(), ModelProvider.BLOCK_FOLDER + "/energy/"+subPath+"top"), + ResourceLocation.fromNamespaceAndPath(name.getNamespace(), ModelProvider.BLOCK_FOLDER + "/energy/"+subPath+"side"), + ResourceLocation.fromNamespaceAndPath(name.getNamespace(), ModelProvider.BLOCK_FOLDER + "/energy/"+subPath+"side"), + ResourceLocation.fromNamespaceAndPath(name.getNamespace(), ModelProvider.BLOCK_FOLDER + "/energy/"+subPath+"side"), + ResourceLocation.fromNamespaceAndPath(name.getNamespace(), ModelProvider.BLOCK_FOLDER + "/energy/"+subPath+"side") ); model.texture("particle", ModelProvider.BLOCK_FOLDER + "/energy/"+subPath+"top"); if(subPath.matches(".*voltaic_pile.*|.*lithium_ion_battery.*")) { - model.customLoader((blockModelBuilder, helper) -> new CustomLoaderBuilder(BATTERY_LOADER, blockModelBuilder, helper) { }); + model.customLoader((blockModelBuilder, helper) -> igentuman.api.platform.NCModels.customLoader(BATTERY_LOADER, blockModelBuilder, helper)); } return model; } diff --git a/src/main/java/igentuman/nc/datagen/blockstates/NCFluidBlockStates.java b/src/main/java/igentuman/nc/datagen/blockstates/NCFluidBlockStates.java index 012b0b966..fe72fc44f 100644 --- a/src/main/java/igentuman/nc/datagen/blockstates/NCFluidBlockStates.java +++ b/src/main/java/igentuman/nc/datagen/blockstates/NCFluidBlockStates.java @@ -6,12 +6,13 @@ import net.minecraft.data.DataGenerator; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.level.material.Fluid; -import net.minecraftforge.client.extensions.common.IClientFluidTypeExtensions; -import net.minecraftforge.client.model.generators.ConfiguredModel; -import net.minecraftforge.client.model.generators.ModelFile; -import net.minecraftforge.common.data.ExistingFileHelper; -import net.minecraftforge.data.event.GatherDataEvent; -import net.minecraftforge.registries.ForgeRegistries; +import net.neoforged.neoforge.client.extensions.common.IClientFluidTypeExtensions; +import net.neoforged.neoforge.client.model.generators.ConfiguredModel; +import net.neoforged.neoforge.client.model.generators.ModelFile; +import net.neoforged.neoforge.common.data.ExistingFileHelper; +import net.neoforged.neoforge.data.event.GatherDataEvent; +import net.minecraft.core.registries.BuiltInRegistries; +import net.neoforged.neoforge.registries.NeoForgeRegistries; import org.apache.commons.lang3.mutable.Mutable; import org.apache.commons.lang3.mutable.MutableObject; @@ -28,14 +29,13 @@ protected void registerStatesAndModels() { for(NCFluids.FluidEntry entry : NCFluids.ALL_FLUID_ENTRIES.values()) { Fluid still = entry.getStill(); - Mutable box = new MutableObject<>(); - still.getFluidType().initializeClient(box::setValue); - ResourceLocation stillTexture = box.getValue().getStillTexture(); + IClientFluidTypeExtensions extensions = NCFluids.CLIENT_EXTENSIONS.get(entry.type()); + ResourceLocation stillTexture = extensions.getStillTexture(); String renderType = "minecraft:solid"; if(still.getFluidType().getDensity() < 1000) { renderType = "minecraft:translucent"; } - ModelFile model = models().getBuilder("block/fluid/"+ ForgeRegistries.FLUIDS.getKey(still).getPath()) + ModelFile model = models().getBuilder("block/fluid/"+ BuiltInRegistries.FLUID.getKey(still).getPath()) .texture("particle", stillTexture); getVariantBuilder(entry.getBlock()).partialState().setModels(new ConfiguredModel(model)); } diff --git a/src/main/java/igentuman/nc/datagen/models/NCItemModels.java b/src/main/java/igentuman/nc/datagen/models/NCItemModels.java index a38b697c0..9b14ffdd9 100644 --- a/src/main/java/igentuman/nc/datagen/models/NCItemModels.java +++ b/src/main/java/igentuman/nc/datagen/models/NCItemModels.java @@ -7,15 +7,16 @@ import net.minecraft.data.DataGenerator; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.level.ItemLike; -import net.minecraftforge.client.model.generators.ItemModelProvider; -import net.minecraftforge.client.model.generators.loaders.DynamicFluidContainerModelBuilder; -import net.minecraftforge.data.event.GatherDataEvent; -import net.minecraftforge.registries.ForgeRegistries; +import net.neoforged.neoforge.client.model.generators.ItemModelProvider; +import net.neoforged.neoforge.client.model.generators.loaders.DynamicFluidContainerModelBuilder; +import net.neoforged.neoforge.data.event.GatherDataEvent; +import net.minecraft.core.registries.BuiltInRegistries; +import net.neoforged.neoforge.registries.NeoForgeRegistries; import java.util.List; import static igentuman.nc.NuclearCraft.MODID; -import static igentuman.nc.NuclearCraft.forgeRl; +import static igentuman.nc.NuclearCraft.neoforgeRl; import static igentuman.nc.multiblock.accelerator.AcceleratorRegistration.ACCELERATOR_BLOCKS; import static igentuman.nc.multiblock.fission.FissionReactorRegistration.FISSION_BLOCKS; import static igentuman.nc.multiblock.fission.FissionReactorRegistration.FISSION_BLOCK_ITEMS; @@ -130,12 +131,12 @@ private void storageBlocks() { private String name(ItemLike item) { - return ForgeRegistries.ITEMS.getKey(item.asItem()).getPath(); + return BuiltInRegistries.ITEM.getKey(item.asItem()).getPath(); } private ResourceLocation forgeLoc(String s) { - return forgeRl(s); + return neoforgeRl(s); } private void createBucket(NCFluids.FluidEntry entry) diff --git a/src/main/java/igentuman/nc/datagen/models/NongeneratedModels.java b/src/main/java/igentuman/nc/datagen/models/NongeneratedModels.java index 0cb4c0670..dd1d2839d 100644 --- a/src/main/java/igentuman/nc/datagen/models/NongeneratedModels.java +++ b/src/main/java/igentuman/nc/datagen/models/NongeneratedModels.java @@ -2,9 +2,9 @@ import net.minecraft.data.DataGenerator; import net.minecraft.resources.ResourceLocation; -import net.minecraftforge.client.model.generators.ModelBuilder; -import net.minecraftforge.client.model.generators.ModelProvider; -import net.minecraftforge.common.data.ExistingFileHelper; +import net.neoforged.neoforge.client.model.generators.ModelBuilder; +import net.neoforged.neoforge.client.model.generators.ModelProvider; +import net.neoforged.neoforge.common.data.ExistingFileHelper; import static igentuman.nc.NuclearCraft.MODID; diff --git a/src/main/java/igentuman/nc/datagen/recipes/CustomRecipes.java b/src/main/java/igentuman/nc/datagen/recipes/CustomRecipes.java index 0c706cabf..1aab78baf 100644 --- a/src/main/java/igentuman/nc/datagen/recipes/CustomRecipes.java +++ b/src/main/java/igentuman/nc/datagen/recipes/CustomRecipes.java @@ -2,16 +2,18 @@ import igentuman.nc.datagen.recipes.recipes.*; import net.minecraft.data.DataGenerator; -import net.minecraft.data.recipes.FinishedRecipe; -import java.util.function.Consumer; +import net.minecraft.data.recipes.RecipeOutput; + +import java.util.concurrent.CompletableFuture; +import net.minecraft.core.HolderLookup; public class CustomRecipes extends NCRecipes { - public CustomRecipes(DataGenerator generatorIn) { - super(generatorIn); + public CustomRecipes(DataGenerator generatorIn, CompletableFuture registries) { + super(generatorIn, registries); } - public static Consumer consumer; + public static RecipeOutput consumer; - public static void generate(Consumer consumer) { + public static void generate(RecipeOutput consumer) { CustomRecipes.consumer = consumer; KugelblitzRecipes.generate(consumer); FissionRecipes.generate(consumer); @@ -47,9 +49,10 @@ public static void generate(Consumer consumer) { TurbineControllerRecipes.generate(consumer); SubatomicLiquifierRecipes.generate(consumer); TargetChamberRecipes.generate(consumer); - TConstructAlloyingRecipes.generate(consumer); - TConstructCastingRecipes.generate(consumer); - TConstructMeltingRecipes.generate(consumer); + // TODO: Tinker's Construct compat — disabled, waiting on TiC to port to NeoForge 1.21.1. Re-enable when available. + // TConstructAlloyingRecipes.generate(consumer); + // TConstructCastingRecipes.generate(consumer); + // TConstructMeltingRecipes.generate(consumer); AcceleratorCoolantRecipes.generate(consumer); } } diff --git a/src/main/java/igentuman/nc/datagen/recipes/FuelRecipes.java b/src/main/java/igentuman/nc/datagen/recipes/FuelRecipes.java index 60bf9ed2a..771cb576d 100644 --- a/src/main/java/igentuman/nc/datagen/recipes/FuelRecipes.java +++ b/src/main/java/igentuman/nc/datagen/recipes/FuelRecipes.java @@ -4,15 +4,16 @@ import igentuman.nc.content.materials.Materials; import igentuman.nc.content.fuel.FuelManager; import net.minecraft.advancements.critereon.ItemPredicate; +import net.minecraft.core.HolderLookup; import net.minecraft.data.DataGenerator; -import net.minecraft.data.recipes.FinishedRecipe; import net.minecraft.data.recipes.RecipeCategory; +import net.minecraft.data.recipes.RecipeOutput; import net.minecraft.data.recipes.ShapelessRecipeBuilder; import net.minecraft.data.recipes.SimpleCookingRecipeBuilder; import net.minecraft.world.item.crafting.Ingredient; import java.util.List; -import java.util.function.Consumer; +import java.util.concurrent.CompletableFuture; import static igentuman.nc.NuclearCraft.MODID; import static igentuman.nc.datagen.recipes.recipes.AbstractRecipeProvider.getIsotope; @@ -22,11 +23,11 @@ public class FuelRecipes extends NCRecipes { - public FuelRecipes(DataGenerator generatorIn) { - super(generatorIn); + public FuelRecipes(DataGenerator generatorIn, CompletableFuture registries) { + super(generatorIn, registries); } - public static void generate(Consumer consumer) { + public static void generate(RecipeOutput consumer) { for (String name: Materials.isotopes()) { for(String type: new String[] {"_ox", "_ni", "_za"}) { @@ -84,7 +85,7 @@ public static void generate(Consumer consumer) { } - private static void fuelPelletRecipe(Consumer consumer, String name, String subType, String type, int isotope1, int isotope2) + private static void fuelPelletRecipe(RecipeOutput consumer, String name, String subType, String type, int isotope1, int isotope2) { int isotope1Cnt = 1; int isotope2Cnt = 8; diff --git a/src/main/java/igentuman/nc/datagen/recipes/NCRecipes.java b/src/main/java/igentuman/nc/datagen/recipes/NCRecipes.java index b63153214..13b5613f4 100644 --- a/src/main/java/igentuman/nc/datagen/recipes/NCRecipes.java +++ b/src/main/java/igentuman/nc/datagen/recipes/NCRecipes.java @@ -1,5 +1,7 @@ package igentuman.nc.datagen.recipes; +import igentuman.api.platform.NCRecipeOutput; +import igentuman.api.platform.NCTagFactory; import igentuman.nc.content.materials.Materials; import igentuman.nc.content.processors.Processors; import igentuman.nc.datagen.recipes.builder.SpecialRecipeBuilder; @@ -7,15 +9,19 @@ import igentuman.nc.recipes.NcRecipeSerializers; import igentuman.nc.setup.registration.*; import net.minecraft.advancements.critereon.ItemPredicate; +import net.minecraft.core.HolderLookup; +import net.minecraft.core.registries.Registries; +import net.minecraft.data.CachedOutput; import net.minecraft.data.DataGenerator; +import net.minecraft.data.PackOutput; import net.minecraft.data.recipes.*; import net.minecraft.tags.TagKey; import net.minecraft.world.item.Item; import net.minecraft.world.item.crafting.Ingredient; import net.minecraft.world.level.block.Block; -import net.minecraftforge.common.Tags; +import net.neoforged.neoforge.common.Tags; -import java.util.function.Consumer; +import java.util.concurrent.CompletableFuture; import static igentuman.nc.NuclearCraft.MODID; import static igentuman.nc.NuclearCraft.rl; @@ -43,13 +49,27 @@ public class NCRecipes extends RecipeProvider { public final static int MOLTEN_NUGGET = 10; public final static int MOLTEN_INGOT = 90; public final static int MOLTEN_BLOCK = 810; - public NCRecipes(DataGenerator generatorIn) { - super(generatorIn.getPackOutput()); + private final PackOutput packOutput; + private final CompletableFuture registriesFuture; + + public NCRecipes(DataGenerator generatorIn, CompletableFuture registries) { + super(generatorIn.getPackOutput(), registries); + this.packOutput = generatorIn.getPackOutput(); + this.registriesFuture = registries; + } + public RecipeOutput consumer; + + @Override + protected CompletableFuture run(CachedOutput output, HolderLookup.Provider registries) { + PackOutput.PathProvider recipePath = packOutput.createRegistryElementsPathProvider(Registries.RECIPE); + PackOutput.PathProvider advancementPath = packOutput.createRegistryElementsPathProvider(Registries.ADVANCEMENT); + NCRecipeOutput ncOutput = new NCRecipeOutput(output, registries, recipePath, advancementPath); + buildRecipes(ncOutput); + return ncOutput.getFuture(); } - public Consumer consumer; @Override - protected void buildRecipes(Consumer consumer) { + protected void buildRecipes(RecipeOutput consumer) { this.consumer = consumer; materials(consumer); parts(consumer); @@ -72,7 +92,7 @@ protected void buildRecipes(Consumer consumer) { SpecialRecipeBuilder.build(consumer, NcRecipeSerializers.RESET_NBT); } - private void acceleratorItems(Consumer consumer) { + private void acceleratorItems(RecipeOutput consumer) { // Empty cooler (using steel instead of stainless steel as per current mod) ShapedRecipeBuilder.shaped(RecipeCategory.MISC, ACCELERATOR_BLOCKS.get("empty_cooler").get(), 8) .pattern("STS") @@ -165,7 +185,7 @@ private void acceleratorItems(Consumer consumer) { } - private void targetChamberBlocks(Consumer consumer) { + private void targetChamberBlocks(RecipeOutput consumer) { // Target chamber controller ShapedRecipeBuilder.shaped(RecipeCategory.MISC, TARGET_CHAMBER_BLOCKS.get("target_chamber_controller").get()) .pattern("PTP") @@ -193,7 +213,7 @@ private void targetChamberBlocks(Consumer consumer) { // Target chamber casing glass (shapeless conversion) ShapelessRecipeBuilder.shapeless(RecipeCategory.MISC, TARGET_CHAMBER_BLOCKS.get("target_chamber_casing_glass").get()) .requires(TARGET_CHAMBER_BLOCKS.get("target_chamber_casing").get()) - .requires(Tags.Items.GLASS) + .requires(NCTagFactory.glass()) .group(MODID+"_target_chamber") .unlockedBy("item", has(TARGET_CHAMBER_BLOCKS.get("target_chamber_casing").get())) .save(consumer, rl("target_chamber_casing_glass")); @@ -301,7 +321,7 @@ private void targetChamberBlocks(Consumer consumer) { .save(consumer, rl("bubble_chamber")); } - private void acceleratorBlocks(Consumer consumer) { + private void acceleratorBlocks(RecipeOutput consumer) { for(String name: coolers().keySet()) { if(name.matches(".*water.*|.*liquid.*|.*empty.*|.*cryotheum.*")) { @@ -312,7 +332,7 @@ private void acceleratorBlocks(Consumer consumer) { i = Tags.Items.SLIMEBALLS; } if(name.contains("nether_brick")) { - i = Tags.Items.INGOTS_NETHER_BRICK; + i = NCTagFactory.bricksNether(); } Block empty = ACCELERATOR_BLOCKS.get("empty_cooler").get(); @@ -341,7 +361,7 @@ private void acceleratorBlocks(Consumer consumer) { // Accelerator casing glass (shapeless conversion) ShapelessRecipeBuilder.shapeless(RecipeCategory.MISC, ACCELERATOR_BLOCKS.get("accelerator_casing_glass").get()) .requires(ACCELERATOR_BLOCKS.get("accelerator_casing").get()) - .requires(Tags.Items.GLASS) + .requires(NCTagFactory.glass()) .group(MODID+"_accelerator") .unlockedBy("item", has(ACCELERATOR_BLOCKS.get("accelerator_casing").get())) .save(consumer, rl("accelerator_casing_glass")); @@ -441,7 +461,7 @@ private void acceleratorBlocks(Consumer consumer) { .save(consumer, rl("electromagnet_yoke")); } - private void kugelBlitzBlocks(Consumer consumer) { + private void kugelBlitzBlocks(RecipeOutput consumer) { ShapedRecipeBuilder.shaped(RecipeCategory.MISC, EXPL_BLOCK.get()) .pattern(" P ") .pattern("CMC") @@ -538,7 +558,7 @@ private void kugelBlitzBlocks(Consumer consumer) { .save(consumer); } - private void fusionBlocks(Consumer consumer) { + private void fusionBlocks(RecipeOutput consumer) { /*ShapedRecipeBuilder.shaped(RecipeCategory.MISC, MULTIBLOCK_BUILDER_BLOCK.get()) .pattern("LPL") .pattern("CMC") @@ -601,14 +621,14 @@ private void fusionBlocks(Consumer consumer) { .pattern(" G ") .pattern("GMG") .pattern(" G ") - .define('G', Tags.Items.GLASS) + .define('G', NCTagFactory.glass()) .define('M', FUSION_BLOCKS.get("fusion_reactor_casing").get()) .group(MODID+"_fusion") .unlockedBy("item", has(FUSION_BLOCKS.get("fusion_reactor_casing").get())) .save(consumer); } - private void storageBlocks(Consumer consumer) { + private void storageBlocks(RecipeOutput consumer) { ShapedRecipeBuilder.shaped(RecipeCategory.MISC, STORAGE_BLOCKS.get("basic_storage_container").get()) .pattern(" P ") @@ -690,7 +710,7 @@ private void storageBlocks(Consumer consumer) { } - private void energyBlocks(Consumer consumer) { + private void energyBlocks(RecipeOutput consumer) { ShapelessRecipeBuilder.shapeless(RecipeCategory.MISC, PAPER) .requires(ALL_NC_ITEMS.get("research_paper").get(), 2) @@ -835,7 +855,7 @@ private void energyBlocks(Consumer consumer) { } - private void items(Consumer consumer) { + private void items(RecipeOutput consumer) { ShapedRecipeBuilder.shaped(RecipeCategory.MISC, NC_RF_AMPLIFIERS.get("basic_rf_amplifier").get()) .pattern("CCC") @@ -1242,19 +1262,19 @@ private void items(Consumer consumer) { .unlockedBy("item", has(forgeDust(Materials.potassium_iodide))) .save(consumer, rl("rad_x")); - SimpleCookingRecipeBuilder.smelting(NcIngredient.of(COCOA_BEANS), + SimpleCookingRecipeBuilder.smelting(NcIngredient.of(COCOA_BEANS).asIngredient(), RecipeCategory.MISC, ALL_NC_ITEMS.get("roasted_cocoa_beans").get(), 1.0f, 200) .unlockedBy("has_ore", has(COCOA_BEANS)) .save(consumer, MODID+"_roasted_cocoa_beans"); - SimpleCookingRecipeBuilder.smoking(NcIngredient.of(COCOA_BEANS), + SimpleCookingRecipeBuilder.smoking(NcIngredient.of(COCOA_BEANS).asIngredient(), RecipeCategory.MISC, ALL_NC_ITEMS.get("roasted_cocoa_beans").get(), 1.0f, 100) .unlockedBy("has_ore", has(COCOA_BEANS)) .save(consumer, MODID+"_roasted_cocoa_beans_smoked"); - SimpleCookingRecipeBuilder.smelting(NcIngredient.of(MILK_BUCKET), + SimpleCookingRecipeBuilder.smelting(NcIngredient.of(MILK_BUCKET).asIngredient(), RecipeCategory.MISC, NCFluids.ALL_FLUID_ENTRIES.get("pasteurized_milk").bucket().get(), 1.0f, 200) .unlockedBy("has_ore", has(MILK_BUCKET)) @@ -1309,7 +1329,7 @@ private void items(Consumer consumer) { .save(consumer, rl("foursmore")); } - private void parts(Consumer consumer) { + private void parts(RecipeOutput consumer) { ShapedRecipeBuilder.shaped(RecipeCategory.MISC, SPAXELHOE_THORIUM.get()) .pattern("TTT") @@ -1479,7 +1499,7 @@ private void parts(Consumer consumer) { } - private void fissionBlocks(Consumer consumer) { + private void fissionBlocks(RecipeOutput consumer) { ShapedRecipeBuilder.shaped(RecipeCategory.MISC, FISSION_BLOCKS.get("fission_reactor_irradiation_chamber").get()) .pattern("LPL") @@ -1532,7 +1552,7 @@ private void fissionBlocks(Consumer consumer) { .pattern(" P ") .pattern("PTP") .pattern(" P ") - .define('P', Tags.Items.GLASS) + .define('P', NCTagFactory.glass()) .define('T', FISSION_BLOCKS.get("fission_reactor_casing").get()) .group(MODID+"_fission") .unlockedBy("item", has(NC_PARTS.get("plate_advanced").get())) @@ -1542,7 +1562,7 @@ private void fissionBlocks(Consumer consumer) { .pattern("TGT") .pattern("G G") .pattern("TGT") - .define('G', Tags.Items.GLASS) + .define('G', NCTagFactory.glass()) .define('T', forgeIngot(Materials.zirconium)) .group(MODID+"_fission") .unlockedBy("item", has(FISSION_BLOCKS.get("fission_reactor_casing").get())) @@ -1552,7 +1572,7 @@ private void fissionBlocks(Consumer consumer) { .pattern("TGT") .pattern("G G") .pattern("TGT") - .define('G', Tags.Items.GLASS) + .define('G', NCTagFactory.glass()) .define('T', forgeIngot(Materials.tough_alloy)) .group(MODID+"_fission") .unlockedBy("item", has(FISSION_BLOCKS.get("fission_reactor_casing").get())) @@ -1590,7 +1610,7 @@ private void fissionBlocks(Consumer consumer) { i = Tags.Items.SLIMEBALLS; } if(name.contains("nether_brick")) { - i = Tags.Items.INGOTS_NETHER_BRICK; + i = NCTagFactory.bricksNether(); } Block empty = FISSION_BLOCKS.get("empty_heat_sink").get(); if(name.contains("active")) { @@ -1609,7 +1629,7 @@ private void fissionBlocks(Consumer consumer) { } } - private void msrBlocks(Consumer consumer) { + private void msrBlocks(RecipeOutput consumer) { // MSR Controller /*ShapedRecipeBuilder.shaped(RecipeCategory.MISC, FISSION_BLOCKS.get("msr_controller").get()) .pattern("LPL") @@ -1624,7 +1644,7 @@ private void msrBlocks(Consumer consumer) { .save(consumer, rl("msr_controller"));*/ } - private void turbineBlocks(Consumer consumer) { + private void turbineBlocks(RecipeOutput consumer) { ShapedRecipeBuilder.shaped(RecipeCategory.MISC, TURBINE_BLOCKS.get("turbine_casing").get(), 4) .pattern("SSS") .pattern("SLS") @@ -1727,14 +1747,14 @@ private void turbineBlocks(Consumer consumer) { ShapelessRecipeBuilder.shapeless(RecipeCategory.MISC, TURBINE_BLOCKS.get("turbine_glass").get(), 1) .requires(TURBINE_BLOCKS.get("turbine_casing").get()) - .requires(Tags.Items.GLASS) + .requires(NCTagFactory.glass()) .group(MODID+"_turbine") .unlockedBy("item", has(TURBINE_BLOCKS.get("turbine_casing").get())) .save(consumer); } - private void solarPanels(Consumer consumer) { + private void solarPanels(RecipeOutput consumer) { ShapedRecipeBuilder.shaped(RecipeCategory.MISC, ENERGY_BLOCKS.get("solar_panel/basic").get()) .pattern("LQL") .pattern("PLP") @@ -1754,7 +1774,7 @@ private void solarPanels(Consumer consumer) { .pattern("PCP") .define('P', NC_PARTS.get("plate_advanced").get()) .define('S', ENERGY_BLOCKS.get("solar_panel/basic").get()) - .define('G', dustIngredient(Materials.quartz)) + .define('G', Ingredient.of(forgeDust(Materials.quartz))) .define('C', NC_PARTS.get("coil_copper").get()) .group(MODID+"_solar_panels") .unlockedBy("item", has(ENERGY_BLOCKS.get("solar_panel/basic").get())) @@ -1766,7 +1786,7 @@ private void solarPanels(Consumer consumer) { .pattern("PMP") .define('P', NC_PARTS.get("plate_du").get()) .define('S', ENERGY_BLOCKS.get("solar_panel/advanced").get()) - .define('G', dustIngredient(Materials.energetic_blend)) + .define('G', Ingredient.of(forgeDust(Materials.energetic_blend))) .define('M', NC_PARTS.get("coil_magnesium_diboride").get()) .group(MODID+"_solar_panels") .unlockedBy("item", has(ENERGY_BLOCKS.get("solar_panel/advanced").get())) @@ -1778,7 +1798,7 @@ private void solarPanels(Consumer consumer) { .pattern("PMP") .define('P', NC_PARTS.get("plate_elite").get()) .define('S', ENERGY_BLOCKS.get("solar_panel/du").get()) - .define('G', dustIngredient(Materials.energetic_blend)) + .define('G', Ingredient.of(forgeDust(Materials.energetic_blend))) .define('M', NC_PARTS.get("coil_magnesium_diboride").get()) .group(MODID+"_solar_panels") .unlockedBy("item", has(ENERGY_BLOCKS.get("solar_panel/advanced").get())) @@ -1786,12 +1806,12 @@ private void solarPanels(Consumer consumer) { } - private void materials(Consumer consumer) { + private void materials(RecipeOutput consumer) { ShapelessRecipeBuilder.shapeless(RecipeCategory.MISC, NC_DUSTS.get(Materials.dimensional_blend).get(), 2) - .requires(dustIngredient(Materials.enderium), 1) - .requires(dustIngredient(Materials.emerald), 1) - .requires(dustIngredient(Materials.lapis), 1) + .requires(Ingredient.of(forgeDust(Materials.enderium)), 1) + .requires(Ingredient.of(forgeDust(Materials.emerald)), 1) + .requires(Ingredient.of(forgeDust(Materials.lapis)), 1) .group(MODID+"_dusts") .unlockedBy("dust", has(NC_DUSTS.get(Materials.enderium).get())) .save(consumer); @@ -1910,7 +1930,7 @@ private void materials(Consumer consumer) { } - private void processors(Consumer consumer) + private void processors(RecipeOutput consumer) { ShapedRecipeBuilder.shaped(RecipeCategory.MISC, NCProcessors.PROCESSORS.get(Processors.SUBATOMIC_LIQUIFIER).get()) .pattern("PYP") @@ -2031,7 +2051,7 @@ private void processors(Consumer consumer) .define('S', NC_PARTS.get("coil_copper").get()) .define('F', Tags.Items.DUSTS_REDSTONE) .define('L', NC_PARTS.get("plate_basic").get()) - .define('X', Tags.Items.INGOTS_BRICK) + .define('X', NCTagFactory.bricksNormal()) .group(MODID+"_processors") .unlockedBy("item", has(NC_PARTS.get("chassis").get())) .save(consumer); @@ -2043,7 +2063,7 @@ private void processors(Consumer consumer) .define('P', NC_PARTS.get("chassis").get()) .define('S', NC_PARTS.get("servo").get()) .define('L', NC_PARTS.get("plate_advanced").get()) - .define('X', Tags.Items.INGOTS_NETHER_BRICK) + .define('X', NCTagFactory.bricksNether()) .group(MODID+"_processors") .unlockedBy("item", has(NC_PARTS.get("plate_advanced").get())) .save(consumer); diff --git a/src/main/java/igentuman/nc/datagen/recipes/builder/NcRecipeBuilder.java b/src/main/java/igentuman/nc/datagen/recipes/builder/NcRecipeBuilder.java index bb6963ce8..fef342e4c 100644 --- a/src/main/java/igentuman/nc/datagen/recipes/builder/NcRecipeBuilder.java +++ b/src/main/java/igentuman/nc/datagen/recipes/builder/NcRecipeBuilder.java @@ -5,13 +5,12 @@ import igentuman.nc.content.particles.ParticleStack; import igentuman.nc.recipes.ingredient.FluidStackIngredient; import igentuman.nc.recipes.ingredient.NcIngredient; -import net.minecraft.data.recipes.FinishedRecipe; +import net.minecraft.data.recipes.RecipeOutput; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.item.crafting.Ingredient; import org.jetbrains.annotations.NotNull; import java.util.List; -import java.util.function.Consumer; import static igentuman.nc.NuclearCraft.rl; @@ -111,13 +110,15 @@ public ResourceLocation getRecipeId() } protected String recipeIdReplacements(String val) { + val = val.replace(":", "_"); val = val.replace("nuclearcraft_", ""); + val = val.replace("minecraft_", "mc_"); val = val.replace("depleted_fuel", "d_f"); return val; } - public void build(Consumer consumer) { - build(consumer, getRecipeId()); + public void build(RecipeOutput output) { + build(output, getRecipeId()); } public NcRecipeBuilder temperature(double temperature) { @@ -169,8 +170,8 @@ public void serializeRecipeData(@NotNull JsonObject json) { JsonArray inputJson = new JsonArray(); if(!inputItems.isEmpty()) { - for(Ingredient in: inputItems) { - inputJson.add(serializeIngredient(in)); + for(NcIngredient in: inputItems) { + inputJson.add(in.toJson()); } json.add("input", inputJson); } @@ -178,8 +179,8 @@ public void serializeRecipeData(@NotNull JsonObject json) { JsonArray outJson = new JsonArray(); if(!outputItems.isEmpty()) { - for (Ingredient out: outputItems) { - outJson.add(serializeIngredient(out)); + for (NcIngredient out: outputItems) { + outJson.add(out.toJson()); } json.add("output", outJson); } @@ -253,4 +254,4 @@ public void serializeRecipeData(@NotNull JsonObject json) { } } } -} \ No newline at end of file +} diff --git a/src/main/java/igentuman/nc/datagen/recipes/builder/RecipeBuilder.java b/src/main/java/igentuman/nc/datagen/recipes/builder/RecipeBuilder.java index ff4e9e994..b4e30c865 100644 --- a/src/main/java/igentuman/nc/datagen/recipes/builder/RecipeBuilder.java +++ b/src/main/java/igentuman/nc/datagen/recipes/builder/RecipeBuilder.java @@ -1,29 +1,30 @@ package igentuman.nc.datagen.recipes.builder; -import com.google.gson.JsonArray; import com.google.gson.JsonElement; import com.google.gson.JsonObject; +import igentuman.api.platform.NCRecipeOutput; import net.minecraft.advancements.Advancement; +import net.minecraft.advancements.AdvancementHolder; +import net.minecraft.advancements.AdvancementRequirements; import net.minecraft.advancements.AdvancementRewards; -import net.minecraft.advancements.CriterionTriggerInstance; -import net.minecraft.advancements.RequirementsStrategy; +import net.minecraft.advancements.Criterion; import net.minecraft.advancements.critereon.RecipeUnlockedTrigger; -import net.minecraft.data.recipes.FinishedRecipe; +import net.minecraft.data.recipes.RecipeOutput; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.crafting.Ingredient; -import net.minecraft.world.item.crafting.RecipeSerializer; import net.minecraft.world.level.ItemLike; -import net.minecraftforge.common.crafting.CraftingHelper; -import net.minecraftforge.common.crafting.conditions.ICondition; -import net.minecraftforge.fluids.FluidStack; -import net.minecraftforge.registries.ForgeRegistries; +import net.neoforged.neoforge.common.conditions.ICondition; +import igentuman.api.platform.NCItemStacks; +import igentuman.api.platform.NCFluidStacks; +import net.minecraft.nbt.CompoundTag; +import net.neoforged.neoforge.fluids.FluidStack; +import net.minecraft.core.registries.BuiltInRegistries; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import java.util.ArrayList; import java.util.List; -import java.util.function.Consumer; import static igentuman.nc.NuclearCraft.MODID; import static igentuman.nc.NuclearCraft.rl; @@ -36,17 +37,23 @@ protected static ResourceLocation ncSerializer(String name) { } protected final List conditions = new ArrayList<>(); - protected final Advancement.Builder advancementBuilder = Advancement.Builder.advancement(); protected final ResourceLocation serializerName; + private boolean hasCriterion = false; + private Advancement.Builder advancementBuilder; protected RecipeBuilder(ResourceLocation serializerName) { this.serializerName = serializerName; } + private Advancement.Builder getOrCreateAdvancement() { + if (advancementBuilder == null) { + advancementBuilder = Advancement.Builder.advancement(); + } + return advancementBuilder; + } + /** * Adds a criterion to this recipe. - * - * @param criterion Criterion to add. */ public BUILDER addCriterion(RecipeCriterion criterion) { return addCriterion(criterion.name(), criterion.criterion()); @@ -54,19 +61,15 @@ public BUILDER addCriterion(RecipeCriterion criterion) { /** * Adds a criterion to this recipe. - * - * @param name Name of the criterion. - * @param criterion Criterion to add. */ - public BUILDER addCriterion(String name, CriterionTriggerInstance criterion) { - advancementBuilder.addCriterion(name, criterion); + public BUILDER addCriterion(String name, Criterion criterion) { + getOrCreateAdvancement().addCriterion(name, criterion); + hasCriterion = true; return (BUILDER) this; } /** * Adds a condition to this recipe. - * - * @param condition Condition to add. */ public BUILDER addCondition(ICondition condition) { conditions.add(condition); @@ -75,62 +78,76 @@ public BUILDER addCondition(ICondition condition) { /** * Checks if this recipe has any criteria. - * - * @return {@code true} if this recipe has any criteria. */ protected boolean hasCriteria() { - return !advancementBuilder.getCriteria().isEmpty(); + return hasCriterion; } /** * Gets a recipe result object. - * - * @param id ID of the recipe being built. */ protected abstract RecipeResult getResult(ResourceLocation id); /** * Performs any extra validation. - * - * @param id ID of the recipe validation is being performed on. */ protected void validate(ResourceLocation id) { } /** * Builds this recipe. - * - * @param consumer Finished Recipe Consumer. - * @param id Name of the recipe being built. */ - public void build(Consumer consumer, ResourceLocation id) { + public void build(RecipeOutput output, ResourceLocation id) { validate(id); + + // Build the recipe JSON + RecipeResult result = getResult(id); + JsonObject jsonObject = new JsonObject(); + jsonObject.addProperty("type", serializerName.toString()); + result.serializeRecipeData(jsonObject); + + // Build advancement if criteria exist + AdvancementHolder advancement = null; if (hasCriteria()) { - //If there is a way to "unlock" this recipe then add an advancement with the criteria - advancementBuilder.parent(rlFromString("recipes/root")).addCriterion("has_the_recipe", RecipeUnlockedTrigger.unlocked(id)) - .rewards(AdvancementRewards.Builder.recipe(id)).requirements(RequirementsStrategy.OR); + advancement = getOrCreateAdvancement() + .parent(rlFromString("recipes/root")) + .addCriterion("has_the_recipe", RecipeUnlockedTrigger.unlocked(id)) + .rewards(AdvancementRewards.Builder.recipe(id)) + .requirements(AdvancementRequirements.Strategy.OR) + .build(ResourceLocation.fromNamespaceAndPath(id.getNamespace(), "recipes/" + id.getPath())); + } + + // Save via NCRecipeOutput's JSON path + if (output instanceof NCRecipeOutput ncOutput) { + ncOutput.acceptJson(id, jsonObject, advancement, conditions.toArray(ICondition[]::new)); + } else { + // Fallback: embed conditions directly in JSON and use the standard path + // This shouldn't normally happen, but provides safety + if (!conditions.isEmpty()) { + ICondition.writeConditions(com.mojang.serialization.JsonOps.INSTANCE, jsonObject, conditions); + } + // Can't use standard accept() without a real Recipe object — save via DataProvider + throw new UnsupportedOperationException( + "NC custom recipe builders require NCRecipeOutput. Recipe: " + id); } - consumer.accept(getResult(id)); } /** * Builds this recipe basing the name on the output item. - * - * @param consumer Finished Recipe Consumer. - * @param output Output to base the recipe name off of. */ - protected void build(Consumer consumer, ItemLike... output) { - ResourceLocation registryName = ForgeRegistries.ITEMS.getKey(output[0].asItem()); + protected void build(RecipeOutput output, ItemLike... items) { + ResourceLocation registryName = BuiltInRegistries.ITEM.getKey(items[0].asItem()); if (registryName == null) { throw new IllegalStateException("Could not retrieve registry name for output."); } - build(consumer, registryName); + build(output, registryName); } /** - * Base recipe result. + * Base recipe result — produces JSON via serializeRecipeData(). + * No longer implements FinishedRecipe (removed in 1.21.1). */ - protected abstract class RecipeResult implements FinishedRecipe { + protected abstract class RecipeResult { private final ResourceLocation id; @@ -138,81 +155,54 @@ public RecipeResult(ResourceLocation id) { this.id = id; } - @Override - public JsonObject serializeRecipe() { - JsonObject jsonObject = new JsonObject(); - jsonObject.addProperty("type", serializerName.toString()); - if (!conditions.isEmpty()) { - JsonArray conditionsArray = new JsonArray(); - for (ICondition condition : conditions) { - conditionsArray.add(CraftingHelper.serialize(condition)); - } - jsonObject.add("conditions", conditionsArray); - } - this.serializeRecipeData(jsonObject); - return jsonObject; - } - - @NotNull - @Override - public RecipeSerializer getType() { - return ForgeRegistries.RECIPE_SERIALIZERS.getValue(serializerName); - } - - @NotNull - @Override public ResourceLocation getId() { return this.id; } - @Nullable - @Override - public JsonObject serializeAdvancement() { - return hasCriteria() ? advancementBuilder.serializeToJson() : null; - } - - @Nullable - @Override - public ResourceLocation getAdvancementId() { - return ResourceLocation.tryBuild(id.getNamespace(), "recipes/" + id.getPath()); - } + /** + * Serializes the recipe-specific data into the JSON object. + */ + public abstract void serializeRecipeData(@NotNull JsonObject json); } + public static JsonElement serializeItemStack(@NotNull ItemStack stack) { JsonObject json = new JsonObject(); - json.addProperty("item", ForgeRegistries.ITEMS.getKey(stack.getItem()).toString()); + json.addProperty("item", BuiltInRegistries.ITEM.getKey(stack.getItem()).toString()); if (stack.getCount() > 1) { json.addProperty("count", stack.getCount()); } - if (stack.hasTag()) { - if(stack.getTag().contains("Damage")) { - if(stack.getTag().getInt("Damage") == 0) { - stack.getTag().remove("Damage"); + if (NCItemStacks.hasCustomData(stack)) { + CompoundTag tag = NCItemStacks.getTag(stack); + if(tag.contains("Damage")) { + if(tag.getInt("Damage") == 0) { + tag.remove("Damage"); } } - if(!stack.getTag().getAllKeys().isEmpty()) - json.addProperty("nbt", stack.getTag().toString()); + if(!tag.getAllKeys().isEmpty()) + json.addProperty("nbt", tag.toString()); } return json; } public static JsonElement serializeIngredient(@NotNull Ingredient ingredient) { - return ingredient.toJson(); + return NCRecipeOutput.serializeIngredient(ingredient); } public static JsonElement serializeFluidStack(@NotNull FluidStack fluidStack) { JsonObject json = new JsonObject(); - json.addProperty("fluid", ForgeRegistries.FLUIDS.getKey(fluidStack.getFluid()).toString()); + json.addProperty("fluid", BuiltInRegistries.FLUID.getKey(fluidStack.getFluid()).toString()); json.addProperty("amount", fluidStack.getAmount()); - if (fluidStack.hasTag()) { - if(fluidStack.getTag().contains("Damage")) { - if(fluidStack.getTag().getInt("Damage") == 0) { - fluidStack.getTag().remove("Damage"); + if (NCFluidStacks.hasCustomData(fluidStack)) { + CompoundTag tag = NCFluidStacks.getTag(fluidStack); + if(tag.contains("Damage")) { + if(tag.getInt("Damage") == 0) { + tag.remove("Damage"); } } - if(!fluidStack.getTag().getAllKeys().isEmpty()) - json.addProperty("nbt", fluidStack.getTag().toString()); + if(!tag.getAllKeys().isEmpty()) + json.addProperty("nbt", tag.toString()); } return json; } -} \ No newline at end of file +} diff --git a/src/main/java/igentuman/nc/datagen/recipes/builder/RecipeCriterion.java b/src/main/java/igentuman/nc/datagen/recipes/builder/RecipeCriterion.java index b8d2ce946..0f7c658fa 100644 --- a/src/main/java/igentuman/nc/datagen/recipes/builder/RecipeCriterion.java +++ b/src/main/java/igentuman/nc/datagen/recipes/builder/RecipeCriterion.java @@ -1,15 +1,15 @@ package igentuman.nc.datagen.recipes.builder; -import net.minecraft.advancements.CriterionTriggerInstance; +import net.minecraft.advancements.Criterion; import org.jetbrains.annotations.NotNull; import java.util.Objects; -public record RecipeCriterion(@NotNull String name, @NotNull CriterionTriggerInstance criterion) { +public record RecipeCriterion(@NotNull String name, @NotNull Criterion criterion) { public RecipeCriterion { Objects.requireNonNull(name, "Criterion must have a name."); Objects.requireNonNull(criterion, "Recipe criterion's must have a criterion to match."); } -} \ No newline at end of file +} diff --git a/src/main/java/igentuman/nc/datagen/recipes/builder/SpecialRecipeBuilder.java b/src/main/java/igentuman/nc/datagen/recipes/builder/SpecialRecipeBuilder.java index 7db1929b6..2f3c72984 100644 --- a/src/main/java/igentuman/nc/datagen/recipes/builder/SpecialRecipeBuilder.java +++ b/src/main/java/igentuman/nc/datagen/recipes/builder/SpecialRecipeBuilder.java @@ -1,19 +1,15 @@ package igentuman.nc.datagen.recipes.builder; -import com.google.gson.JsonObject; import igentuman.nc.registry.RecipeSerializerRegistryObject; import igentuman.nc.util.annotation.NothingNullByDefault; -import net.minecraft.data.recipes.FinishedRecipe; +import net.minecraft.data.recipes.RecipeOutput; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.item.crafting.RecipeSerializer; -import net.minecraftforge.registries.ForgeRegistries; -import net.minecraftforge.registries.IForgeRegistry; -import org.jetbrains.annotations.Nullable; - -import java.util.function.Consumer; +import net.minecraft.core.registries.BuiltInRegistries; +import net.minecraft.core.Registry; @NothingNullByDefault -public class SpecialRecipeBuilder implements FinishedRecipe { +public class SpecialRecipeBuilder { private final RecipeSerializer serializer; @@ -21,46 +17,26 @@ private SpecialRecipeBuilder(RecipeSerializer serializer) { this.serializer = serializer; } - public static void build(Consumer consumer, RecipeSerializerRegistryObject serializer) { - build(consumer, serializer.get()); - } - - public static void build(Consumer consumer, RecipeSerializer serializer) { - consumer.accept(new SpecialRecipeBuilder(serializer)); + public static void build(RecipeOutput output, RecipeSerializerRegistryObject serializer) { + build(output, serializer.get()); } - @Override - public RecipeSerializer getType() { - return serializer; + public static void build(RecipeOutput output, RecipeSerializer serializer) { + ResourceLocation id = getName(serializer); + // Special recipes are simple — no data, just the serializer type. + // Create a minimal recipe via the serializer's codec. + // The serializer knows how to create the recipe from empty data. + net.minecraft.world.item.crafting.Recipe recipe = serializer.codec().codec() + .parse(com.mojang.serialization.JsonOps.INSTANCE, new com.google.gson.JsonObject()) + .getOrThrow(msg -> new IllegalStateException("Failed to create special recipe for " + id + ": " + msg)); + output.accept(id, recipe, null); } - @Override - public void serializeRecipeData(JsonObject json) { - //NO-OP - } - - private static ResourceLocation getName(IForgeRegistry registry, T element) { + private static ResourceLocation getName(Registry registry, T element) { return registry.getKey(element); } public static ResourceLocation getName(RecipeSerializer element) { - return getName(ForgeRegistries.RECIPE_SERIALIZERS, element); - } - - @Override - public ResourceLocation getId() { - return getName(getType()); - } - - @Nullable - @Override - public JsonObject serializeAdvancement() { - return null; - } - - @Nullable - @Override - public ResourceLocation getAdvancementId() { - return null; + return getName(BuiltInRegistries.RECIPE_SERIALIZER, element); } -} \ No newline at end of file +} diff --git a/src/main/java/igentuman/nc/datagen/recipes/builder/TConstructRecipeBuilder.java b/src/main/java/igentuman/nc/datagen/recipes/builder/TConstructRecipeBuilder.java index bfd68cc51..802dd0ec7 100644 --- a/src/main/java/igentuman/nc/datagen/recipes/builder/TConstructRecipeBuilder.java +++ b/src/main/java/igentuman/nc/datagen/recipes/builder/TConstructRecipeBuilder.java @@ -4,14 +4,12 @@ import com.google.gson.JsonObject; import igentuman.nc.recipes.ingredient.FluidStackIngredient; import igentuman.nc.recipes.ingredient.NcIngredient; -import net.minecraft.data.recipes.FinishedRecipe; +import net.minecraft.data.recipes.RecipeOutput; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.item.crafting.Ingredient; import org.jetbrains.annotations.NotNull; -import javax.json.Json; import java.util.List; -import java.util.function.Consumer; import static igentuman.nc.NuclearCraft.rl; @@ -31,7 +29,7 @@ public class TConstructRecipeBuilder extends RecipeBuilder consumer) { - build(consumer, getRecipeId()); + public void build(RecipeOutput output) { + build(output, getRecipeId()); } public TConstructRecipeBuilder temperature(int temperature) { @@ -131,25 +131,25 @@ protected NcRecipeResult(ResourceLocation id) { } private JsonObject fluidTagNotEmpty(String tag) { - JsonObject forgeNot = new JsonObject(); - forgeNot.addProperty("type", "forge:not"); + JsonObject neoforgeNot = new JsonObject(); + neoforgeNot.addProperty("type", "neoforge:not"); JsonObject fluidTagNotEmpty = new JsonObject(); - fluidTagNotEmpty.addProperty("type", "forge:fluid_tag_empty"); + fluidTagNotEmpty.addProperty("type", "neoforge:fluid_tag_empty"); fluidTagNotEmpty.addProperty("tag", tag); - forgeNot.add("value", fluidTagNotEmpty); - return forgeNot; + neoforgeNot.add("value", fluidTagNotEmpty); + return neoforgeNot; } @Override public void serializeRecipeData(@NotNull JsonObject json) { JsonArray inputJson = new JsonArray(); JsonObject modLoaded = new JsonObject(); - modLoaded.addProperty("type", "forge:mod_loaded"); + modLoaded.addProperty("type", "neoforge:mod_loaded"); modLoaded.addProperty("modid", "tconstruct"); JsonArray conditions = new JsonArray(); conditions.add(modLoaded); - json.add("conditions", conditions); + json.add("neoforge:conditions", conditions); if(cast) { JsonObject castTag = new JsonObject(); @@ -157,16 +157,16 @@ public void serializeRecipeData(@NotNull JsonObject json) { json.add("cast", castTag); } if(!inputItems.isEmpty()) { - for(Ingredient in: inputItems) { - json.add("ingredient", serializeIngredient(in)); + for(NcIngredient in: inputItems) { + json.add("ingredient", in.toJson()); break; } } if(!outputItems.isEmpty()) { - for (Ingredient out: outputItems) { - json.add("result", serializeIngredient(out)); + for (NcIngredient out: outputItems) { + json.add("result", out.toJson()); break; } } @@ -216,4 +216,4 @@ public void serializeRecipeData(@NotNull JsonObject json) { } } } -} \ No newline at end of file +} diff --git a/src/main/java/igentuman/nc/datagen/recipes/recipes/AbstractRecipeProvider.java b/src/main/java/igentuman/nc/datagen/recipes/recipes/AbstractRecipeProvider.java index a7b7df2fb..a174a6e55 100644 --- a/src/main/java/igentuman/nc/datagen/recipes/recipes/AbstractRecipeProvider.java +++ b/src/main/java/igentuman/nc/datagen/recipes/recipes/AbstractRecipeProvider.java @@ -8,20 +8,20 @@ import igentuman.nc.recipes.ingredient.NcIngredient; import igentuman.nc.recipes.ingredient.creator.IngredientCreatorAccess; import igentuman.nc.setup.registration.FissionFuel; -import net.minecraft.data.recipes.FinishedRecipe; +import net.minecraft.data.recipes.RecipeOutput; import net.minecraft.resources.ResourceLocation; import net.minecraft.tags.TagKey; import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.material.Fluid; -import net.minecraftforge.fluids.FluidStack; -import net.minecraftforge.registries.ForgeRegistries; +import net.neoforged.neoforge.fluids.FluidStack; +import net.minecraft.core.registries.BuiltInRegistries; import java.util.List; -import java.util.function.Consumer; -import static igentuman.nc.NuclearCraft.forgeRl; +import static igentuman.nc.NuclearCraft.neoforgeRl; +import static igentuman.nc.NuclearCraft.resourceLoc; import static igentuman.nc.NuclearCraft.rl; import static igentuman.nc.setup.registration.FissionFuel.*; import static igentuman.nc.setup.registration.NCFluids.ALL_FLUID_ENTRIES; @@ -37,7 +37,7 @@ public abstract class AbstractRecipeProvider { public static String ID; - public static Consumer consumer; + public static RecipeOutput consumer; private static List input; private static List output; private static double[] params; @@ -73,7 +73,7 @@ protected static ItemStack stack(Block block, int count) { } protected static ItemStack stack(String item, int count) { - return new ItemStack(ForgeRegistries.ITEMS.getValue(rlFromString(item)), count); + return new ItemStack(BuiltInRegistries.ITEM.get(rlFromString(item)), count); } public static ItemStack[] stackArray(ItemStack... stacks) { @@ -255,18 +255,18 @@ public static void tconstructCasting( } public static TagKey forgeFluid(String name) { - String key = "forge"; + String key = "neoforge"; if(name.contains(":")) { key = name.split(":")[0]; name = name.split(":")[1]; } - return TagKey.create(ForgeRegistries.FLUIDS.getRegistryKey(), ResourceLocation.tryBuild(key, name)); + return TagKey.create(BuiltInRegistries.FLUID.key(), ResourceLocation.fromNamespaceAndPath(key, name)); } public static Item blockItem(String name) { for(String key: List.of(name, "block_"+name, name+"_block")) { - if(ALL_NC_ITEMS.get(name) != null) { + if(ALL_NC_ITEMS.get(key) != null) { return ALL_NC_ITEMS.get(key).get(); } } @@ -348,7 +348,7 @@ public static NcIngredient forgeIngredient(String name, int...pCount) { int count = 1; if(pCount.length > 0) count = pCount[0]; - return ingredient(TagKey.create(ITEM_REGISTRY, forgeRl(name)), count); + return ingredient(TagKey.create(ITEM_REGISTRY, resourceLoc(name)), count); } public static NcIngredient dustIngredient(String name, int...pCount) @@ -362,7 +362,8 @@ public static FluidStackIngredient moltenFuelIngredient(List name, int.. { int count = 1; if(pCount.length > 0) count = pCount[0]; - return IngredientCreatorAccess.fluid().from(ALL_FLUID_ENTRIES.get(fuelItem(name).toString()).getStill(), count); + String key = BuiltInRegistries.ITEM.getKey(fuelItem(name)).getPath(); + return IngredientCreatorAccess.fluid().from(ALL_FLUID_ENTRIES.get(key).getStill(), count); } public static NcIngredient fuelIngredient(List name, int...pCount) diff --git a/src/main/java/igentuman/nc/datagen/recipes/recipes/AcceleratorCoolantRecipes.java b/src/main/java/igentuman/nc/datagen/recipes/recipes/AcceleratorCoolantRecipes.java index 6288dfd87..7e4ce533c 100644 --- a/src/main/java/igentuman/nc/datagen/recipes/recipes/AcceleratorCoolantRecipes.java +++ b/src/main/java/igentuman/nc/datagen/recipes/recipes/AcceleratorCoolantRecipes.java @@ -1,14 +1,13 @@ package igentuman.nc.datagen.recipes.recipes; import igentuman.nc.recipes.ingredient.FluidStackIngredient; -import net.minecraft.data.recipes.FinishedRecipe; +import net.minecraft.data.recipes.RecipeOutput; import java.util.List; -import java.util.function.Consumer; public class AcceleratorCoolantRecipes extends AbstractRecipeProvider { - public static void generate(Consumer consumer) { + public static void generate(RecipeOutput consumer) { AcceleratorCoolantRecipes.consumer = consumer; ID = "accelerator_coolant"; diff --git a/src/main/java/igentuman/nc/datagen/recipes/recipes/AlloySmelterRecipes.java b/src/main/java/igentuman/nc/datagen/recipes/recipes/AlloySmelterRecipes.java index 5a85e6ece..943093c9a 100644 --- a/src/main/java/igentuman/nc/datagen/recipes/recipes/AlloySmelterRecipes.java +++ b/src/main/java/igentuman/nc/datagen/recipes/recipes/AlloySmelterRecipes.java @@ -2,15 +2,14 @@ import igentuman.nc.content.processors.Processors; import igentuman.nc.content.materials.Materials; -import net.minecraft.data.recipes.FinishedRecipe; -import java.util.function.Consumer; +import net.minecraft.data.recipes.RecipeOutput; import static net.minecraft.world.item.Items.NETHERITE_INGOT; import static net.minecraft.world.item.Items.NETHERITE_SCRAP; public class AlloySmelterRecipes extends AbstractRecipeProvider { - public static void generate(Consumer consumer) { + public static void generate(RecipeOutput consumer) { AlloySmelterRecipes.consumer = consumer; ID = Processors.ALLOY_SMELTER; doubleToItem(ID, ingredient(NETHERITE_SCRAP, 3), dustIngredient(Materials.gold, 3), diff --git a/src/main/java/igentuman/nc/datagen/recipes/recipes/AnalyzerRecipes.java b/src/main/java/igentuman/nc/datagen/recipes/recipes/AnalyzerRecipes.java index 0254d5892..3e5eda97e 100644 --- a/src/main/java/igentuman/nc/datagen/recipes/recipes/AnalyzerRecipes.java +++ b/src/main/java/igentuman/nc/datagen/recipes/recipes/AnalyzerRecipes.java @@ -1,13 +1,13 @@ package igentuman.nc.datagen.recipes.recipes; +import igentuman.api.platform.NCItemStacks; import igentuman.nc.content.materials.Materials; import igentuman.nc.content.processors.Processors; import igentuman.nc.recipes.ingredient.NcIngredient; import igentuman.nc.setup.registration.NCItems; -import net.minecraft.data.recipes.FinishedRecipe; +import net.minecraft.data.recipes.RecipeOutput; import net.minecraft.world.item.ItemStack; -import java.util.function.Consumer; import static igentuman.nc.setup.registration.NCItems.ALL_NC_ITEMS; import static igentuman.nc.setup.registration.NCItems.NC_PARTS; @@ -15,17 +15,17 @@ public class AnalyzerRecipes extends AbstractRecipeProvider { - public static void generate(Consumer consumer) { + public static void generate(RecipeOutput consumer) { AnalyzerRecipes.consumer = consumer; ID = Processors.ANALYZER; ItemStack dataPaper = new ItemStack(NC_PARTS.get("research_paper").get()); - dataPaper.getOrCreateTag().putBoolean("vein_data", true); + NCItemStacks.putBoolean(dataPaper, "vein_data", true); itemToItem(ingredient(PAPER), NcIngredient.stack(dataPaper), 2.5D, 4D); ItemStack dataMap = new ItemStack(FILLED_MAP); - dataMap.getOrCreateTag().putBoolean("is_nc_analyzed", true); + NCItemStacks.putBoolean(dataMap, "is_nc_analyzed", true); itemToItem(ingredient(FILLED_MAP), NcIngredient.stack(dataMap), 5.5D, 10D); diff --git a/src/main/java/igentuman/nc/datagen/recipes/recipes/AssemblerRecipes.java b/src/main/java/igentuman/nc/datagen/recipes/recipes/AssemblerRecipes.java index 5206ee814..f81372e8d 100644 --- a/src/main/java/igentuman/nc/datagen/recipes/recipes/AssemblerRecipes.java +++ b/src/main/java/igentuman/nc/datagen/recipes/recipes/AssemblerRecipes.java @@ -3,17 +3,16 @@ import igentuman.nc.content.fuel.FuelManager; import igentuman.nc.content.processors.Processors; import igentuman.nc.content.materials.Materials; -import net.minecraft.data.recipes.FinishedRecipe; +import net.minecraft.data.recipes.RecipeOutput; import java.util.List; -import java.util.function.Consumer; import static igentuman.nc.setup.registration.NCItems.*; import static net.minecraft.world.item.Items.*; public class AssemblerRecipes extends AbstractRecipeProvider { - public static void generate(Consumer consumer) { + public static void generate(RecipeOutput consumer) { AssemblerRecipes.consumer = consumer; ID = Processors.ASSEMBLER; diff --git a/src/main/java/igentuman/nc/datagen/recipes/recipes/CentrifugeRecipes.java b/src/main/java/igentuman/nc/datagen/recipes/recipes/CentrifugeRecipes.java index 9044e7b80..157b89e9b 100644 --- a/src/main/java/igentuman/nc/datagen/recipes/recipes/CentrifugeRecipes.java +++ b/src/main/java/igentuman/nc/datagen/recipes/recipes/CentrifugeRecipes.java @@ -3,17 +3,16 @@ import igentuman.nc.content.processors.Processors; import igentuman.nc.recipes.ingredient.FluidStackIngredient; import igentuman.nc.content.materials.Materials; -import net.minecraft.data.recipes.FinishedRecipe; -import net.minecraftforge.fluids.FluidStack; +import net.minecraft.data.recipes.RecipeOutput; +import net.neoforged.neoforge.fluids.FluidStack; import java.util.List; -import java.util.function.Consumer; import static igentuman.nc.datagen.recipes.NCRecipes.*; public class CentrifugeRecipes extends AbstractRecipeProvider { - public static void generate(Consumer consumer) { + public static void generate(RecipeOutput consumer) { CentrifugeRecipes.consumer = consumer; ID = Processors.CENTRIFUGE; diff --git a/src/main/java/igentuman/nc/datagen/recipes/recipes/ChemicalReactorRecipes.java b/src/main/java/igentuman/nc/datagen/recipes/recipes/ChemicalReactorRecipes.java index e9013809f..00b45de9a 100644 --- a/src/main/java/igentuman/nc/datagen/recipes/recipes/ChemicalReactorRecipes.java +++ b/src/main/java/igentuman/nc/datagen/recipes/recipes/ChemicalReactorRecipes.java @@ -7,14 +7,13 @@ import igentuman.nc.recipes.ingredient.creator.IngredientCreatorAccess; import igentuman.nc.setup.registration.FissionFuel; import net.minecraft.advancements.critereon.ItemPredicate; -import net.minecraft.data.recipes.FinishedRecipe; +import net.minecraft.data.recipes.RecipeOutput; import net.minecraft.data.recipes.RecipeCategory; import net.minecraft.data.recipes.SimpleCookingRecipeBuilder; import net.minecraft.world.item.crafting.Ingredient; -import net.minecraftforge.fluids.FluidStack; +import net.neoforged.neoforge.fluids.FluidStack; import java.util.List; -import java.util.function.Consumer; import static igentuman.nc.NuclearCraft.MODID; import static igentuman.nc.datagen.recipes.NCRecipes.MOLTEN_INGOT; @@ -23,7 +22,7 @@ public class ChemicalReactorRecipes extends AbstractRecipeProvider { - public static void generate(Consumer consumer) { + public static void generate(RecipeOutput consumer) { ChemicalReactorRecipes.consumer = consumer; ID = Processors.CHEMICAL_REACTOR; @@ -444,55 +443,63 @@ public static void generate(Consumer consumer) { ); // Alloy smelter recipe analogs - molten metal reactions - add( - List.of( - fluidIngredient(Materials.iron, MOLTEN_INGOT), - fluidIngredient(Materials.chromium, MOLTEN_INGOT*4) - ), - List.of( - fluidIngredient(Materials.nichrome, MOLTEN_INGOT*5) - ), 0.5D, 0.5D - ); - - add( - List.of( - fluidIngredient(Materials.osmium, MOLTEN_INGOT*3), - fluidIngredient(Materials.iridium, MOLTEN_INGOT) - ), - List.of( - fluidIngredient(Materials.osmiridium, MOLTEN_INGOT*4) - ), 0.5D, 0.5D - ); - - add( - List.of( - fluidIngredient(Materials.carbon_manganese, MOLTEN_INGOT), - fluidIngredient(Materials.titanium, MOLTEN_INGOT*11) - ), - List.of( - fluidIngredient(Materials.sic_sic_cmc, MOLTEN_INGOT*12) - ), 0.5D, 0.5D - ); - - add( - List.of( - fluidIngredient(Materials.niobium, MOLTEN_INGOT), - fluidIngredient(Materials.titanium, MOLTEN_INGOT) - ), - List.of( - fluidIngredient(Materials.niobium_titanium, MOLTEN_INGOT) - ), 0.5D, 0.5D - ); - - add( - List.of( - fluidIngredient(Materials.niobium, MOLTEN_INGOT*2), - fluidIngredient(Materials.tin, MOLTEN_INGOT) - ), - List.of( - fluidIngredient(Materials.niobium_tin, MOLTEN_INGOT*3) - ), 0.5D, 0.5D - ); + // TODO: These materials don't have fluid forms registered. Re-enable if/when + // fluid definitions are added to these materials in Materials.java. + + // iron + chromium -> nichrome (chromium, nichrome have no fluid) + // add( + // List.of( + // fluidIngredient(Materials.iron, MOLTEN_INGOT), + // fluidIngredient(Materials.chromium, MOLTEN_INGOT*4) + // ), + // List.of( + // fluidIngredient(Materials.nichrome, MOLTEN_INGOT*5) + // ), 0.5D, 0.5D + // ); + + // osmium + iridium -> osmiridium (all three have no fluid) + // add( + // List.of( + // fluidIngredient(Materials.osmium, MOLTEN_INGOT*3), + // fluidIngredient(Materials.iridium, MOLTEN_INGOT) + // ), + // List.of( + // fluidIngredient(Materials.osmiridium, MOLTEN_INGOT*4) + // ), 0.5D, 0.5D + // ); + + // carbon_manganese + titanium -> sic_sic_cmc (titanium has no fluid) + // add( + // List.of( + // fluidIngredient(Materials.carbon_manganese, MOLTEN_INGOT), + // fluidIngredient(Materials.titanium, MOLTEN_INGOT*11) + // ), + // List.of( + // fluidIngredient(Materials.sic_sic_cmc, MOLTEN_INGOT*12) + // ), 0.5D, 0.5D + // ); + + // niobium + titanium -> niobium_titanium (all three have no fluid) + // add( + // List.of( + // fluidIngredient(Materials.niobium, MOLTEN_INGOT), + // fluidIngredient(Materials.titanium, MOLTEN_INGOT) + // ), + // List.of( + // fluidIngredient(Materials.niobium_titanium, MOLTEN_INGOT) + // ), 0.5D, 0.5D + // ); + + // niobium + tin -> niobium_tin (niobium, niobium_tin have no fluid) + // add( + // List.of( + // fluidIngredient(Materials.niobium, MOLTEN_INGOT*2), + // fluidIngredient(Materials.tin, MOLTEN_INGOT) + // ), + // List.of( + // fluidIngredient(Materials.niobium_tin, MOLTEN_INGOT*3) + // ), 0.5D, 0.5D + // ); add( List.of( @@ -504,15 +511,16 @@ public static void generate(Consumer consumer) { ), 0.5D, 0.5D ); - add( - List.of( - fluidIngredient(Materials.steel, MOLTEN_INGOT), - fluidIngredient(Materials.chromium, MOLTEN_INGOT) - ), - List.of( - fluidIngredient(Materials.stainless_steel, MOLTEN_INGOT*2) - ), 0.5D, 0.5D - ); + // steel + chromium -> stainless_steel (chromium, stainless_steel have no fluid) + // add( + // List.of( + // fluidIngredient(Materials.steel, MOLTEN_INGOT), + // fluidIngredient(Materials.chromium, MOLTEN_INGOT) + // ), + // List.of( + // fluidIngredient(Materials.stainless_steel, MOLTEN_INGOT*2) + // ), 0.5D, 0.5D + // ); add( List.of( @@ -524,15 +532,16 @@ public static void generate(Consumer consumer) { ), 0.5D, 0.5D ); - add( - List.of( - fluidIngredient(Materials.coal, MOLTEN_INGOT*3), - fluidIngredient(Materials.iron, MOLTEN_INGOT) - ), - List.of( - fluidIngredient(Materials.steel, MOLTEN_INGOT) - ), 0.5D, 0.5D - ); + // coal + iron -> steel (coal has no fluid) + // add( + // List.of( + // fluidIngredient(Materials.coal, MOLTEN_INGOT*3), + // fluidIngredient(Materials.iron, MOLTEN_INGOT) + // ), + // List.of( + // fluidIngredient(Materials.steel, MOLTEN_INGOT) + // ), 0.5D, 0.5D + // ); add( List.of( @@ -554,15 +563,16 @@ public static void generate(Consumer consumer) { ), 0.5D, 0.5D ); - add( - List.of( - fluidIngredient(Materials.graphite, MOLTEN_INGOT), - fluidIngredient(Materials.diamond, MOLTEN_INGOT) - ), - List.of( - fluidIngredient(Materials.hard_carbon, MOLTEN_INGOT*2) - ), 0.5D, 0.5D - ); + // graphite + diamond -> hard_carbon (graphite, diamond have no fluid) + // add( + // List.of( + // fluidIngredient(Materials.graphite, MOLTEN_INGOT), + // fluidIngredient(Materials.diamond, MOLTEN_INGOT) + // ), + // List.of( + // fluidIngredient(Materials.hard_carbon, MOLTEN_INGOT*2) + // ), 0.5D, 0.5D + // ); add( List.of( @@ -634,25 +644,27 @@ public static void generate(Consumer consumer) { ), 0.5D, 0.5D ); - add( - List.of( - fluidIngredient(Materials.silicon, MOLTEN_INGOT), - fluidIngredient(Materials.graphite, MOLTEN_INGOT) - ), - List.of( - fluidIngredient(Materials.silicon_carbide, MOLTEN_INGOT*2) - ), 0.5D, 0.5D - ); + // silicon + graphite -> silicon_carbide (silicon, graphite have no fluid) + // add( + // List.of( + // fluidIngredient(Materials.silicon, MOLTEN_INGOT), + // fluidIngredient(Materials.graphite, MOLTEN_INGOT) + // ), + // List.of( + // fluidIngredient(Materials.silicon_carbide, MOLTEN_INGOT*2) + // ), 0.5D, 0.5D + // ); - add( - List.of( - fluidIngredient(Materials.manganese, MOLTEN_INGOT), - fluidIngredient(Materials.graphite, MOLTEN_INGOT) - ), - List.of( - fluidIngredient(Materials.carbon_manganese, MOLTEN_INGOT*2) - ), 1.5D, 1.5D - ); + // manganese + graphite -> carbon_manganese (graphite has no fluid) + // add( + // List.of( + // fluidIngredient(Materials.manganese, MOLTEN_INGOT), + // fluidIngredient(Materials.graphite, MOLTEN_INGOT) + // ), + // List.of( + // fluidIngredient(Materials.carbon_manganese, MOLTEN_INGOT*2) + // ), 1.5D, 1.5D + // ); add( List.of( @@ -694,6 +706,9 @@ public static void generate(Consumer consumer) { FuelManager.all().get(name).get(subType).getDefault().isotopes[1] + "" ); + // xenorium and quantite only have base isotope form — no ox/ni/za variants + if(name.matches("xenorium.*|quantite.*")) continue; + fuelMixRecipe(name, subType + "_ox", FuelManager.all().get(name).get(subType).getOxide().isotopes[0] + "_ox", FuelManager.all().get(name).get(subType).getOxide().isotopes[1] + "_ox"); diff --git a/src/main/java/igentuman/nc/datagen/recipes/recipes/CrystalizerRecipes.java b/src/main/java/igentuman/nc/datagen/recipes/recipes/CrystalizerRecipes.java index 714d980ed..fac48ff5f 100644 --- a/src/main/java/igentuman/nc/datagen/recipes/recipes/CrystalizerRecipes.java +++ b/src/main/java/igentuman/nc/datagen/recipes/recipes/CrystalizerRecipes.java @@ -4,11 +4,10 @@ import igentuman.nc.content.processors.Processors; import igentuman.nc.recipes.ingredient.FluidStackIngredient; import igentuman.nc.recipes.ingredient.NcIngredient; -import net.minecraft.data.recipes.FinishedRecipe; +import net.minecraft.data.recipes.RecipeOutput; import java.util.ArrayList; import java.util.List; -import java.util.function.Consumer; import static igentuman.nc.datagen.recipes.NCRecipes.MOLTEN_INGOT; import static igentuman.nc.setup.registration.NCItems.NC_ITEMS; @@ -16,7 +15,7 @@ public class CrystalizerRecipes extends AbstractRecipeProvider { - public static void generate(Consumer consumer) { + public static void generate(RecipeOutput consumer) { CrystalizerRecipes.consumer = consumer; ID = Processors.CRYSTALLIZER; itemsAndFluids(fluidIngredient("minecraft:water", 10000), ingredient(NC_ITEMS.get("salt").get()), 2.5D, 2.5D); diff --git a/src/main/java/igentuman/nc/datagen/recipes/recipes/DecayHastenerRecipes.java b/src/main/java/igentuman/nc/datagen/recipes/recipes/DecayHastenerRecipes.java index d92492445..31f81e267 100644 --- a/src/main/java/igentuman/nc/datagen/recipes/recipes/DecayHastenerRecipes.java +++ b/src/main/java/igentuman/nc/datagen/recipes/recipes/DecayHastenerRecipes.java @@ -2,15 +2,14 @@ import igentuman.nc.content.processors.Processors; import igentuman.nc.content.materials.Materials; -import net.minecraft.data.recipes.FinishedRecipe; +import net.minecraft.data.recipes.RecipeOutput; -import java.util.function.Consumer; import static igentuman.nc.content.materials.Materials.*; public class DecayHastenerRecipes extends AbstractRecipeProvider { - public static void generate(Consumer consumer) { + public static void generate(RecipeOutput consumer) { DecayHastenerRecipes.consumer = consumer; ID = Processors.DECAY_HASTENER; diff --git a/src/main/java/igentuman/nc/datagen/recipes/recipes/ElectrolyzerRecipes.java b/src/main/java/igentuman/nc/datagen/recipes/recipes/ElectrolyzerRecipes.java index 0dd9e218c..08e71d9a8 100644 --- a/src/main/java/igentuman/nc/datagen/recipes/recipes/ElectrolyzerRecipes.java +++ b/src/main/java/igentuman/nc/datagen/recipes/recipes/ElectrolyzerRecipes.java @@ -3,17 +3,16 @@ import igentuman.nc.content.processors.Processors; import igentuman.nc.recipes.ingredient.FluidStackIngredient; import igentuman.nc.recipes.ingredient.creator.IngredientCreatorAccess; -import net.minecraft.data.recipes.FinishedRecipe; -import net.minecraftforge.fluids.FluidStack; +import net.minecraft.data.recipes.RecipeOutput; +import net.neoforged.neoforge.fluids.FluidStack; import java.util.List; -import java.util.function.Consumer; import static net.minecraft.world.level.material.Fluids.WATER; public class ElectrolyzerRecipes extends AbstractRecipeProvider { - public static void generate(Consumer consumer) { + public static void generate(RecipeOutput consumer) { ElectrolyzerRecipes.consumer = consumer; ID = Processors.ELECTROLYZER; diff --git a/src/main/java/igentuman/nc/datagen/recipes/recipes/ExtractorRecipes.java b/src/main/java/igentuman/nc/datagen/recipes/recipes/ExtractorRecipes.java index bd8f9840c..026100483 100644 --- a/src/main/java/igentuman/nc/datagen/recipes/recipes/ExtractorRecipes.java +++ b/src/main/java/igentuman/nc/datagen/recipes/recipes/ExtractorRecipes.java @@ -3,18 +3,17 @@ import igentuman.nc.content.processors.Processors; import igentuman.nc.recipes.ingredient.FluidStackIngredient; import igentuman.nc.recipes.ingredient.NcIngredient; -import net.minecraft.data.recipes.FinishedRecipe; +import net.minecraft.data.recipes.RecipeOutput; import java.util.ArrayList; import java.util.List; -import java.util.function.Consumer; import static igentuman.nc.datagen.recipes.NCRecipes.MOLTEN_INGOT; import static igentuman.nc.setup.registration.NCItems.ALL_NC_ITEMS; public class ExtractorRecipes extends AbstractRecipeProvider { - public static void generate(Consumer consumer) { + public static void generate(RecipeOutput consumer) { ExtractorRecipes.consumer = consumer; ID = Processors.EXTRACTOR; add(ingredient(ALL_NC_ITEMS.get("ground_cocoa_nibs").get()), ingredient(ALL_NC_ITEMS.get("cocoa_solids").get()), fluidIngredient("cocoa_butter", MOLTEN_INGOT)); diff --git a/src/main/java/igentuman/nc/datagen/recipes/recipes/FissionBoilingRecipes.java b/src/main/java/igentuman/nc/datagen/recipes/recipes/FissionBoilingRecipes.java index caf6f1067..db2138944 100644 --- a/src/main/java/igentuman/nc/datagen/recipes/recipes/FissionBoilingRecipes.java +++ b/src/main/java/igentuman/nc/datagen/recipes/recipes/FissionBoilingRecipes.java @@ -1,15 +1,14 @@ package igentuman.nc.datagen.recipes.recipes; import igentuman.nc.recipes.ingredient.FluidStackIngredient; -import net.minecraft.data.recipes.FinishedRecipe; -import net.minecraftforge.fluids.FluidStack; +import net.minecraft.data.recipes.RecipeOutput; +import net.neoforged.neoforge.fluids.FluidStack; import java.util.List; -import java.util.function.Consumer; public class FissionBoilingRecipes extends AbstractRecipeProvider { - public static void generate(Consumer consumer) { + public static void generate(RecipeOutput consumer) { FissionBoilingRecipes.consumer = consumer; ID = "fission_boiling"; diff --git a/src/main/java/igentuman/nc/datagen/recipes/recipes/FissionRecipes.java b/src/main/java/igentuman/nc/datagen/recipes/recipes/FissionRecipes.java index 48c193b50..65c3943bf 100644 --- a/src/main/java/igentuman/nc/datagen/recipes/recipes/FissionRecipes.java +++ b/src/main/java/igentuman/nc/datagen/recipes/recipes/FissionRecipes.java @@ -5,20 +5,19 @@ import igentuman.nc.datagen.recipes.builder.NcRecipeBuilder; import igentuman.nc.recipes.ingredient.NcIngredient; import igentuman.nc.setup.registration.FissionFuel; -import net.minecraft.data.recipes.FinishedRecipe; +import net.minecraft.data.recipes.RecipeOutput; import net.minecraft.world.item.Item; import java.util.ArrayList; import java.util.List; -import java.util.function.Consumer; import static igentuman.nc.NuclearCraft.rl; public class FissionRecipes { - public static Consumer consumer; - public static void generate(Consumer consumer) { + public static RecipeOutput consumer; + public static void generate(RecipeOutput consumer) { FissionRecipes.consumer = consumer; solidFissionRecipes(); } @@ -35,7 +34,7 @@ private static void itemToItemRecipe(String id, NcIngredient input, NcIngredient NcRecipeBuilder.get(id) .items(List.of(input), List.of(output)) .modifiers(timeModifier, radiation, powerModifier) - .build(consumer, rl(id+"/"+output.getName().replace("depleted_fuel_", ""))); + .build(consumer, rl(id+"/"+output.getName().replace(":", "_").replace("nuclearcraft_", "").replace("depleted_fuel_", ""))); } private static void solidFissionRecipes() { diff --git a/src/main/java/igentuman/nc/datagen/recipes/recipes/FluidEnricherRecipes.java b/src/main/java/igentuman/nc/datagen/recipes/recipes/FluidEnricherRecipes.java index d7a50c52e..503b1ca97 100644 --- a/src/main/java/igentuman/nc/datagen/recipes/recipes/FluidEnricherRecipes.java +++ b/src/main/java/igentuman/nc/datagen/recipes/recipes/FluidEnricherRecipes.java @@ -4,12 +4,11 @@ import igentuman.nc.content.processors.Processors; import igentuman.nc.recipes.ingredient.FluidStackIngredient; import igentuman.nc.recipes.ingredient.NcIngredient; -import net.minecraft.data.recipes.FinishedRecipe; -import net.minecraftforge.fluids.FluidStack; +import net.minecraft.data.recipes.RecipeOutput; +import net.neoforged.neoforge.fluids.FluidStack; import java.util.ArrayList; import java.util.List; -import java.util.function.Consumer; import static igentuman.nc.datagen.recipes.NCRecipes.MOLTEN_INGOT; import static igentuman.nc.setup.registration.NCBlocks.MUSHROOM_ITEM; @@ -18,7 +17,7 @@ public class FluidEnricherRecipes extends AbstractRecipeProvider { - public static void generate(Consumer consumer) { + public static void generate(RecipeOutput consumer) { FluidEnricherRecipes.consumer = consumer; ID = Processors.FLUID_ENRICHER; diff --git a/src/main/java/igentuman/nc/datagen/recipes/recipes/FluidInfuserRecipes.java b/src/main/java/igentuman/nc/datagen/recipes/recipes/FluidInfuserRecipes.java index 17452db50..03aaec639 100644 --- a/src/main/java/igentuman/nc/datagen/recipes/recipes/FluidInfuserRecipes.java +++ b/src/main/java/igentuman/nc/datagen/recipes/recipes/FluidInfuserRecipes.java @@ -6,11 +6,10 @@ import igentuman.nc.recipes.ingredient.FluidStackIngredient; import igentuman.nc.recipes.ingredient.NcIngredient; import igentuman.nc.setup.registration.FissionFuel; -import net.minecraft.data.recipes.FinishedRecipe; +import net.minecraft.data.recipes.RecipeOutput; import java.util.ArrayList; import java.util.List; -import java.util.function.Consumer; import static igentuman.nc.setup.registration.FissionFuel.NC_FUEL; import static igentuman.nc.setup.registration.FissionFuel.NC_ISOTOPES; @@ -21,7 +20,7 @@ public class FluidInfuserRecipes extends AbstractRecipeProvider { - public static void generate(Consumer consumer) { + public static void generate(RecipeOutput consumer) { FluidInfuserRecipes.consumer = consumer; ID = Processors.FLUID_INFUSER; diff --git a/src/main/java/igentuman/nc/datagen/recipes/recipes/FuelReprocessorRecipes.java b/src/main/java/igentuman/nc/datagen/recipes/recipes/FuelReprocessorRecipes.java index 681c6e101..d35127cd8 100644 --- a/src/main/java/igentuman/nc/datagen/recipes/recipes/FuelReprocessorRecipes.java +++ b/src/main/java/igentuman/nc/datagen/recipes/recipes/FuelReprocessorRecipes.java @@ -3,23 +3,18 @@ import igentuman.nc.recipes.ingredient.NcIngredient; import igentuman.nc.content.processors.Processors; import igentuman.nc.content.materials.Materials; -import net.minecraft.data.recipes.FinishedRecipe; +import net.minecraft.data.recipes.RecipeOutput; import java.util.List; -import java.util.function.Consumer; public class FuelReprocessorRecipes extends AbstractRecipeProvider { - public static void generate(Consumer consumer) { + public static void generate(RecipeOutput consumer) { FuelReprocessorRecipes.consumer = consumer; ID = Processors.FUEL_REPROCESSOR; - addString( - ingotIngredient("cyanite", 3), - List.of( - "bigreactors:blutonium_ingot" - ), 4.5D - ); + // TODO: Big Reactors (Extreme Reactors) compat — disabled, waiting on Extreme Reactors to port to NeoForge 1.21.1. Re-enable when available. + // addString(ingotIngredient("cyanite", 3), List.of("bigreactors:blutonium_ingot"), 4.5D); for (String type: List.of("", "tr")) { add( diff --git a/src/main/java/igentuman/nc/datagen/recipes/recipes/FusionCoolantRecipes.java b/src/main/java/igentuman/nc/datagen/recipes/recipes/FusionCoolantRecipes.java index f355db5cb..ac8bbd0e7 100644 --- a/src/main/java/igentuman/nc/datagen/recipes/recipes/FusionCoolantRecipes.java +++ b/src/main/java/igentuman/nc/datagen/recipes/recipes/FusionCoolantRecipes.java @@ -2,15 +2,14 @@ import igentuman.nc.content.processors.Processors; import igentuman.nc.recipes.ingredient.FluidStackIngredient; -import net.minecraft.data.recipes.FinishedRecipe; -import net.minecraftforge.fluids.FluidStack; +import net.minecraft.data.recipes.RecipeOutput; +import net.neoforged.neoforge.fluids.FluidStack; import java.util.List; -import java.util.function.Consumer; public class FusionCoolantRecipes extends AbstractRecipeProvider { - public static void generate(Consumer consumer) { + public static void generate(RecipeOutput consumer) { FusionCoolantRecipes.consumer = consumer; ID = "fusion_coolant"; diff --git a/src/main/java/igentuman/nc/datagen/recipes/recipes/FusionReactorRecipes.java b/src/main/java/igentuman/nc/datagen/recipes/recipes/FusionReactorRecipes.java index 71cdcf04f..e2465aaca 100644 --- a/src/main/java/igentuman/nc/datagen/recipes/recipes/FusionReactorRecipes.java +++ b/src/main/java/igentuman/nc/datagen/recipes/recipes/FusionReactorRecipes.java @@ -2,17 +2,16 @@ import igentuman.nc.datagen.recipes.builder.NcRecipeBuilder; import igentuman.nc.recipes.ingredient.FluidStackIngredient; -import net.minecraft.data.recipes.FinishedRecipe; -import net.minecraftforge.fluids.FluidStack; +import net.minecraft.data.recipes.RecipeOutput; +import net.neoforged.neoforge.fluids.FluidStack; import java.util.List; -import java.util.function.Consumer; import static igentuman.nc.datagen.recipes.NCRecipes.MOLTEN_INGOT; public class FusionReactorRecipes extends AbstractRecipeProvider { - public static void generate(Consumer consumer) { + public static void generate(RecipeOutput consumer) { FusionReactorRecipes.consumer = consumer; ID = "fusion_core"; @@ -243,7 +242,7 @@ public static void generate(Consumer consumer) { add( List.of(fluidIngredient("lithium/6", MOLTEN_INGOT*4), - fluidIngredient("xenorium298", MOLTEN_INGOT*4) + fluidIngredient("xenorium/298", MOLTEN_INGOT*4) ), List.of( fluidIngredient("helium", 1000*6/2), diff --git a/src/main/java/igentuman/nc/datagen/recipes/recipes/GasScrubberRecipes.java b/src/main/java/igentuman/nc/datagen/recipes/recipes/GasScrubberRecipes.java index 60fcb2bf9..13b429524 100644 --- a/src/main/java/igentuman/nc/datagen/recipes/recipes/GasScrubberRecipes.java +++ b/src/main/java/igentuman/nc/datagen/recipes/recipes/GasScrubberRecipes.java @@ -2,15 +2,14 @@ import igentuman.nc.content.processors.Processors; import igentuman.nc.recipes.ingredient.FluidStackIngredient; -import net.minecraft.data.recipes.FinishedRecipe; -import net.minecraftforge.fluids.FluidStack; +import net.minecraft.data.recipes.RecipeOutput; +import net.neoforged.neoforge.fluids.FluidStack; import java.util.List; -import java.util.function.Consumer; public class GasScrubberRecipes extends AbstractRecipeProvider { - public static void generate(Consumer consumer) { + public static void generate(RecipeOutput consumer) { GasScrubberRecipes.consumer = consumer; ID = Processors.GAS_SCRUBBER; diff --git a/src/main/java/igentuman/nc/datagen/recipes/recipes/IngotFormerRecipes.java b/src/main/java/igentuman/nc/datagen/recipes/recipes/IngotFormerRecipes.java index 42b6b83bc..fcabf3932 100644 --- a/src/main/java/igentuman/nc/datagen/recipes/recipes/IngotFormerRecipes.java +++ b/src/main/java/igentuman/nc/datagen/recipes/recipes/IngotFormerRecipes.java @@ -9,12 +9,11 @@ import igentuman.nc.setup.registration.NCItems; import igentuman.nc.content.fuel.FuelManager; import igentuman.nc.content.materials.NCMaterial; -import net.minecraft.data.recipes.FinishedRecipe; -import net.minecraftforge.fluids.FluidStack; +import net.minecraft.data.recipes.RecipeOutput; +import net.neoforged.neoforge.fluids.FluidStack; import java.util.ArrayList; import java.util.List; -import java.util.function.Consumer; import static igentuman.nc.datagen.recipes.NCRecipes.MOLTEN_INGOT; import static igentuman.nc.setup.registration.FissionFuel.*; @@ -22,7 +21,7 @@ public class IngotFormerRecipes extends AbstractRecipeProvider { - public static void generate(Consumer consumer) { + public static void generate(RecipeOutput consumer) { IngotFormerRecipes.consumer = consumer; ID = Processors.INGOT_FORMER; for(String name: Materials.all().keySet()) { diff --git a/src/main/java/igentuman/nc/datagen/recipes/recipes/IrradiatorRecipes.java b/src/main/java/igentuman/nc/datagen/recipes/recipes/IrradiatorRecipes.java index 20a5e5bc5..7a5e67c38 100644 --- a/src/main/java/igentuman/nc/datagen/recipes/recipes/IrradiatorRecipes.java +++ b/src/main/java/igentuman/nc/datagen/recipes/recipes/IrradiatorRecipes.java @@ -3,12 +3,11 @@ import igentuman.nc.content.materials.Materials; import igentuman.nc.content.processors.Processors; import igentuman.nc.recipes.ingredient.NcIngredient; -import net.minecraft.data.recipes.FinishedRecipe; +import net.minecraft.data.recipes.RecipeOutput; import net.minecraft.world.item.Item; -import net.minecraftforge.common.Tags; +import igentuman.api.platform.NCTagFactory; import java.util.List; -import java.util.function.Consumer; import static igentuman.nc.datagen.recipes.NCRecipes.MOLTEN_INGOT; import static igentuman.nc.setup.registration.NCBlocks.WASTELAND_EARTH; @@ -18,7 +17,7 @@ public class IrradiatorRecipes extends AbstractRecipeProvider { - public static void generate(Consumer consumer) { + public static void generate(RecipeOutput consumer) { IrradiatorRecipes.consumer = consumer; ID = Processors.IRRADIATOR; @@ -28,7 +27,7 @@ public static void generate(Consumer consumer) { List.of(ingredient(Item.byBlock(NETHERRACK))), List.of(fluidIngredient("redstone", MOLTEN_INGOT/2)), List.of(), 0.5D); - itemToItem(ingredient(Tags.Items.SAND, 1), NcIngredient.stack(stack(GLOWSTONE, 1)), 3D); + itemToItem(ingredient(NCTagFactory.sands(), 1), NcIngredient.stack(stack(GLOWSTONE, 1)), 3D); itemToItem(ingredient(COARSE_DIRT, 1), NcIngredient.stack(stack(WASTELAND_EARTH.get(), 1)), 3D); itemToItem(ingredient(NC_PARTS.get("silicon_wafer").get(), 1), NcIngredient.stack(stack(NC_PARTS.get("silicon_n_doped").get(), 1)), 0.75D); itemToItem(dustIngredient(Materials.tbp), dustIngredient(Materials.protactinium_233), 2.5D); diff --git a/src/main/java/igentuman/nc/datagen/recipes/recipes/IsotopeSeparatorRecipes.java b/src/main/java/igentuman/nc/datagen/recipes/recipes/IsotopeSeparatorRecipes.java index 8d145bdac..eabf65512 100644 --- a/src/main/java/igentuman/nc/datagen/recipes/recipes/IsotopeSeparatorRecipes.java +++ b/src/main/java/igentuman/nc/datagen/recipes/recipes/IsotopeSeparatorRecipes.java @@ -5,14 +5,13 @@ import igentuman.nc.setup.registration.FissionFuel; import igentuman.nc.content.materials.Materials; import igentuman.nc.content.fuel.FuelManager; -import net.minecraft.data.recipes.FinishedRecipe; +import net.minecraft.data.recipes.RecipeOutput; import java.util.List; -import java.util.function.Consumer; public class IsotopeSeparatorRecipes extends AbstractRecipeProvider { - public static void generate(Consumer consumer) { + public static void generate(RecipeOutput consumer) { IsotopeSeparatorRecipes.consumer = consumer; ID = Processors.ISOTOPE_SEPARATOR; diff --git a/src/main/java/igentuman/nc/datagen/recipes/recipes/KugelblitzRecipes.java b/src/main/java/igentuman/nc/datagen/recipes/recipes/KugelblitzRecipes.java index 62cc813bd..ed55672ac 100644 --- a/src/main/java/igentuman/nc/datagen/recipes/recipes/KugelblitzRecipes.java +++ b/src/main/java/igentuman/nc/datagen/recipes/recipes/KugelblitzRecipes.java @@ -1,16 +1,15 @@ package igentuman.nc.datagen.recipes.recipes; import igentuman.nc.recipes.ingredient.NcIngredient; -import net.minecraft.data.recipes.FinishedRecipe; +import net.minecraft.data.recipes.RecipeOutput; import java.util.List; -import java.util.function.Consumer; import static igentuman.nc.handler.config.KugelblitzConfig.KUGELBLITZ_CONFIG; public class KugelblitzRecipes extends AbstractRecipeProvider { - public static void generate(Consumer consumer) { + public static void generate(RecipeOutput consumer) { KugelblitzRecipes.consumer = consumer; ID = "kugelblitz_chamber"; List items = List.of( @@ -19,51 +18,51 @@ public static void generate(Consumer consumer) { "minecraft:ender_eye", "minecraft:ender_pearl", "minecraft:dragon_breath", - "#forge:raw_materials/iron", - "#forge:raw_materials/gold", - "#forge:raw_materials/copper", - "#forge:raw_materials/zinc", - "#forge:raw_materials/tungsten", - "#forge:raw_materials/titanium", - "#forge:raw_materials/tin", - "#forge:raw_materials/lead", - "#forge:raw_materials/silver", - "#forge:raw_materials/aluminum", - "#forge:raw_materials/uranium", - "#forge:raw_materials/thorium", - "#forge:ingots/iron", - "#forge:ingots/gold", - "#forge:ingots/copper", - "#forge:ingots/zinc", - "#forge:ingots/tungsten", - "#forge:ingots/titanium", - "#forge:ingots/netherite", - "#forge:ingots/tin", - "#forge:ingots/lead", - "#forge:ingots/silver", - "#forge:ingots/aluminum", - "#forge:ingots/uranium", - "#forge:ingots/thorium", - "#forge:ingots/lithium", - "#forge:ingots/beryllium", - "#forge:ingots/steel", - "#forge:ingots/bronze", - "#forge:gems/diamond", - "#forge:gems/ruby", - "#forge:gems/emerald", - "#forge:gems/lapis", - "#forge:gems/sapphire", - "#forge:gems/fluorite", - "#forge:dyes/blue", - "#forge:dyes/white", - "#forge:dyes/red", - "#forge:dyes/green", - "#forge:dyes/yellow", - "#forge:dusts/redstone", - "#forge:dusts/lapis", - "#forge:dusts/coal", - "#forge:dusts/glowstone", - "#forge:blocks/wool" + "#c:raw_materials/iron", + "#c:raw_materials/gold", + "#c:raw_materials/copper", + "#c:raw_materials/zinc", + "#c:raw_materials/tungsten", + "#c:raw_materials/titanium", + "#c:raw_materials/tin", + "#c:raw_materials/lead", + "#c:raw_materials/silver", + "#c:raw_materials/aluminum", + "#c:raw_materials/uranium", + "#c:raw_materials/thorium", + "#c:ingots/iron", + "#c:ingots/gold", + "#c:ingots/copper", + "#c:ingots/zinc", + "#c:ingots/tungsten", + "#c:ingots/titanium", + "#c:ingots/netherite", + "#c:ingots/tin", + "#c:ingots/lead", + "#c:ingots/silver", + "#c:ingots/aluminum", + "#c:ingots/uranium", + "#c:ingots/thorium", + "#c:ingots/lithium", + "#c:ingots/beryllium", + "#c:ingots/steel", + "#c:ingots/bronze", + "#c:gems/diamond", + "#c:gems/ruby", + "#c:gems/emerald", + "#c:gems/lapis", + "#c:gems/sapphire", + "#c:gems/fluorite", + "#c:dyes/blue", + "#c:dyes/white", + "#c:dyes/red", + "#c:dyes/green", + "#c:dyes/yellow", + "#c:dusts/redstone", + "#c:dusts/lapis", + "#c:dusts/coal", + "#c:dusts/glowstone", + "#c:blocks/wool" ); itemToItem(ingotStack("tough_alloy"), dustStack("bscco", 1), 2); for(String name: items) { diff --git a/src/main/java/igentuman/nc/datagen/recipes/recipes/LeacherRecipes.java b/src/main/java/igentuman/nc/datagen/recipes/recipes/LeacherRecipes.java index e1bd5ead5..fa1e3ad7c 100644 --- a/src/main/java/igentuman/nc/datagen/recipes/recipes/LeacherRecipes.java +++ b/src/main/java/igentuman/nc/datagen/recipes/recipes/LeacherRecipes.java @@ -4,17 +4,16 @@ import igentuman.nc.content.processors.Processors; import igentuman.nc.recipes.ingredient.FluidStackIngredient; import igentuman.nc.recipes.ingredient.NcIngredient; -import net.minecraft.data.recipes.FinishedRecipe; +import net.minecraft.data.recipes.RecipeOutput; import java.util.ArrayList; import java.util.List; -import java.util.function.Consumer; import static igentuman.nc.setup.registration.Tags.forgeOre; public class LeacherRecipes extends AbstractRecipeProvider { - public static void generate(Consumer consumer) { + public static void generate(RecipeOutput consumer) { LeacherRecipes.consumer = consumer; ID = Processors.LEACHER; diff --git a/src/main/java/igentuman/nc/datagen/recipes/recipes/MSRRecipes.java b/src/main/java/igentuman/nc/datagen/recipes/recipes/MSRRecipes.java index cccd6cf6c..24faa5e2f 100644 --- a/src/main/java/igentuman/nc/datagen/recipes/recipes/MSRRecipes.java +++ b/src/main/java/igentuman/nc/datagen/recipes/recipes/MSRRecipes.java @@ -6,20 +6,19 @@ import igentuman.nc.datagen.recipes.builder.NcRecipeBuilder; import igentuman.nc.recipes.ingredient.NcIngredient; import igentuman.nc.setup.registration.FissionFuel; -import net.minecraft.data.recipes.FinishedRecipe; +import net.minecraft.data.recipes.RecipeOutput; import net.minecraft.world.item.Item; import java.util.ArrayList; import java.util.List; -import java.util.function.Consumer; import static igentuman.nc.NuclearCraft.rl; public class MSRRecipes { - public static Consumer consumer; - public static void generate(Consumer consumer) { + public static RecipeOutput consumer; + public static void generate(RecipeOutput consumer) { MSRRecipes.consumer = consumer; recipes(); } @@ -36,7 +35,7 @@ private static void itemToItemRecipe(String id, NcIngredient input, NcIngredient NcRecipeBuilder.get(id) .items(List.of(input), List.of(output)) .modifiers(timeModifier, radiation, powerModifier) - .build(consumer, rl(id+"/"+output.getName().replace("depleted_fuel_", ""))); + .build(consumer, rl(id+"/"+output.getName().replace(":", "_").replace("nuclearcraft_", "").replace("depleted_fuel_", ""))); } private static void recipes() { diff --git a/src/main/java/igentuman/nc/datagen/recipes/recipes/ManufactoryRecipes.java b/src/main/java/igentuman/nc/datagen/recipes/recipes/ManufactoryRecipes.java index 34f0c1196..6fa123253 100644 --- a/src/main/java/igentuman/nc/datagen/recipes/recipes/ManufactoryRecipes.java +++ b/src/main/java/igentuman/nc/datagen/recipes/recipes/ManufactoryRecipes.java @@ -3,9 +3,8 @@ import igentuman.nc.content.processors.Processors; import igentuman.nc.content.materials.Materials; import igentuman.nc.setup.registration.NCItems; -import net.minecraft.data.recipes.FinishedRecipe; +import net.minecraft.data.recipes.RecipeOutput; -import java.util.function.Consumer; import static igentuman.nc.setup.registration.NCItems.*; import static igentuman.nc.setup.registration.Tags.GEMS_TAG; @@ -14,7 +13,7 @@ public class ManufactoryRecipes extends AbstractRecipeProvider { - public static void generate(Consumer consumer) { + public static void generate(RecipeOutput consumer) { ManufactoryRecipes.consumer = consumer; ID = Processors.MANUFACTORY; for(String name: Materials.all().keySet()) { diff --git a/src/main/java/igentuman/nc/datagen/recipes/recipes/MelterRecipes.java b/src/main/java/igentuman/nc/datagen/recipes/recipes/MelterRecipes.java index ac955424b..b9de1d621 100644 --- a/src/main/java/igentuman/nc/datagen/recipes/recipes/MelterRecipes.java +++ b/src/main/java/igentuman/nc/datagen/recipes/recipes/MelterRecipes.java @@ -9,11 +9,10 @@ import igentuman.nc.setup.registration.NCItems; import igentuman.nc.content.fuel.FuelManager; import igentuman.nc.content.materials.NCMaterial; -import net.minecraft.data.recipes.FinishedRecipe; +import net.minecraft.data.recipes.RecipeOutput; import java.util.ArrayList; import java.util.List; -import java.util.function.Consumer; import static igentuman.nc.datagen.recipes.NCRecipes.MOLTEN_INGOT; import static igentuman.nc.datagen.recipes.NCRecipes.MOLTEN_NUGGET; @@ -22,7 +21,7 @@ public class MelterRecipes extends AbstractRecipeProvider { - public static void generate(Consumer consumer) { + public static void generate(RecipeOutput consumer) { MelterRecipes.consumer = consumer; ID = Processors.MELTER; for(String name: Materials.all().keySet()) { diff --git a/src/main/java/igentuman/nc/datagen/recipes/recipes/OreVeinsRecipes.java b/src/main/java/igentuman/nc/datagen/recipes/recipes/OreVeinsRecipes.java index d4b6810d4..9d46b409b 100644 --- a/src/main/java/igentuman/nc/datagen/recipes/recipes/OreVeinsRecipes.java +++ b/src/main/java/igentuman/nc/datagen/recipes/recipes/OreVeinsRecipes.java @@ -1,20 +1,20 @@ package igentuman.nc.datagen.recipes.recipes; +import igentuman.api.platform.NCItemStacks; import igentuman.nc.content.materials.Materials; import igentuman.nc.recipes.ingredient.NcIngredient; -import net.minecraft.data.recipes.FinishedRecipe; +import net.minecraft.data.recipes.RecipeOutput; import net.minecraft.world.item.ItemStack; import java.util.ArrayList; import java.util.HashMap; import java.util.List; -import java.util.function.Consumer; import static igentuman.nc.setup.registration.NCItems.NC_PARTS; public class OreVeinsRecipes extends AbstractRecipeProvider { - public static void generate(Consumer consumer) { + public static void generate(RecipeOutput consumer) { OreVeinsRecipes.consumer = consumer; ID = "nc_ore_veins"; @@ -118,7 +118,7 @@ public static void add(HashMap materials, String name, double.. ores.add(oreIngredient(material, materials.get(material))); } ItemStack paper = new ItemStack(NC_PARTS.get("research_paper").get(), 1); - paper.getOrCreateTag().putString("vein", "nc.ore_vein." + name); + NCItemStacks.putString(paper, "vein", "nc.ore_vein." + name); oreVein(ores, NcIngredient.stack(paper), name, modifiers); } } diff --git a/src/main/java/igentuman/nc/datagen/recipes/recipes/PressurizerRecipes.java b/src/main/java/igentuman/nc/datagen/recipes/recipes/PressurizerRecipes.java index 791f9ce5b..28bbd3016 100644 --- a/src/main/java/igentuman/nc/datagen/recipes/recipes/PressurizerRecipes.java +++ b/src/main/java/igentuman/nc/datagen/recipes/recipes/PressurizerRecipes.java @@ -3,12 +3,11 @@ import igentuman.nc.content.processors.Processors; import igentuman.nc.content.materials.Materials; import igentuman.nc.recipes.ingredient.NcIngredient; -import net.minecraft.data.recipes.FinishedRecipe; +import net.minecraft.data.recipes.RecipeOutput; import net.minecraft.world.item.Item; import net.minecraft.world.item.Items; import net.minecraft.world.level.block.Blocks; -import java.util.function.Consumer; import static igentuman.nc.setup.registration.NCBlocks.*; import static igentuman.nc.setup.registration.NCItems.*; @@ -18,7 +17,7 @@ public class PressurizerRecipes extends AbstractRecipeProvider { - public static void generate(Consumer consumer) { + public static void generate(RecipeOutput consumer) { ID = Processors.PRESSURIZER; PressurizerRecipes.consumer = consumer; for (String name : Materials.all().keySet()) { diff --git a/src/main/java/igentuman/nc/datagen/recipes/recipes/PumpRecipes.java b/src/main/java/igentuman/nc/datagen/recipes/recipes/PumpRecipes.java index 353fa3ceb..9a57586b2 100644 --- a/src/main/java/igentuman/nc/datagen/recipes/recipes/PumpRecipes.java +++ b/src/main/java/igentuman/nc/datagen/recipes/recipes/PumpRecipes.java @@ -3,15 +3,14 @@ import igentuman.nc.content.processors.Processors; import igentuman.nc.recipes.ingredient.FluidStackIngredient; import igentuman.nc.recipes.ingredient.NcIngredient; -import net.minecraft.data.recipes.FinishedRecipe; +import net.minecraft.data.recipes.RecipeOutput; import java.util.ArrayList; import java.util.List; -import java.util.function.Consumer; import static igentuman.nc.setup.registration.NCItems.NC_ITEMS; public class PumpRecipes extends AbstractRecipeProvider { - public static void generate(Consumer consumer) { + public static void generate(RecipeOutput consumer) { PumpRecipes.consumer = consumer; ID = Processors.PUMP; diff --git a/src/main/java/igentuman/nc/datagen/recipes/recipes/RockCrusherRecipes.java b/src/main/java/igentuman/nc/datagen/recipes/recipes/RockCrusherRecipes.java index 252c53704..af8743f11 100644 --- a/src/main/java/igentuman/nc/datagen/recipes/recipes/RockCrusherRecipes.java +++ b/src/main/java/igentuman/nc/datagen/recipes/recipes/RockCrusherRecipes.java @@ -3,11 +3,10 @@ import igentuman.nc.recipes.ingredient.NcIngredient; import igentuman.nc.content.processors.Processors; import igentuman.nc.content.materials.Materials; -import net.minecraft.data.recipes.FinishedRecipe; +import net.minecraft.data.recipes.RecipeOutput; import net.minecraft.world.item.Item; import java.util.List; -import java.util.function.Consumer; import static igentuman.nc.setup.registration.NCItems.NC_PARTS; import static igentuman.nc.setup.registration.Tags.forgeGem; @@ -16,7 +15,7 @@ public class RockCrusherRecipes extends AbstractRecipeProvider { - public static void generate(Consumer consumer) { + public static void generate(RecipeOutput consumer) { RockCrusherRecipes.consumer = consumer; ID = Processors.ROCK_CRUSHER; diff --git a/src/main/java/igentuman/nc/datagen/recipes/recipes/SteamTurbineRecipes.java b/src/main/java/igentuman/nc/datagen/recipes/recipes/SteamTurbineRecipes.java index ae200eef2..e447e4fe4 100644 --- a/src/main/java/igentuman/nc/datagen/recipes/recipes/SteamTurbineRecipes.java +++ b/src/main/java/igentuman/nc/datagen/recipes/recipes/SteamTurbineRecipes.java @@ -2,17 +2,16 @@ import igentuman.nc.content.processors.Processors; import igentuman.nc.recipes.ingredient.FluidStackIngredient; -import net.minecraft.data.recipes.FinishedRecipe; -import net.minecraftforge.fluids.FluidStack; +import net.minecraft.data.recipes.RecipeOutput; +import net.neoforged.neoforge.fluids.FluidStack; import java.util.List; -import java.util.function.Consumer; import static net.minecraft.world.level.material.Fluids.WATER; public class SteamTurbineRecipes extends AbstractRecipeProvider { - public static void generate(Consumer consumer) { + public static void generate(RecipeOutput consumer) { SteamTurbineRecipes.consumer = consumer; ID = Processors.STEAM_TURBINE; diff --git a/src/main/java/igentuman/nc/datagen/recipes/recipes/SubatomicLiquifierRecipes.java b/src/main/java/igentuman/nc/datagen/recipes/recipes/SubatomicLiquifierRecipes.java index c9d80552d..b6facce7d 100644 --- a/src/main/java/igentuman/nc/datagen/recipes/recipes/SubatomicLiquifierRecipes.java +++ b/src/main/java/igentuman/nc/datagen/recipes/recipes/SubatomicLiquifierRecipes.java @@ -1,11 +1,10 @@ package igentuman.nc.datagen.recipes.recipes; import igentuman.nc.content.processors.Processors; -import net.minecraft.data.recipes.FinishedRecipe; +import net.minecraft.data.recipes.RecipeOutput; import java.util.ArrayList; import java.util.List; -import java.util.function.Consumer; import static igentuman.nc.content.materials.Materials.*; import static igentuman.nc.datagen.recipes.NCRecipes.MOLTEN_BLOCK; @@ -13,7 +12,7 @@ public class SubatomicLiquifierRecipes extends AbstractRecipeProvider { - public static void generate(Consumer consumer) { + public static void generate(RecipeOutput consumer) { SubatomicLiquifierRecipes.consumer = consumer; ID = Processors.SUBATOMIC_LIQUIFIER; itemsAndFluids( diff --git a/src/main/java/igentuman/nc/datagen/recipes/recipes/SupercoolerRecipes.java b/src/main/java/igentuman/nc/datagen/recipes/recipes/SupercoolerRecipes.java index 707c771f4..e51a5eb8d 100644 --- a/src/main/java/igentuman/nc/datagen/recipes/recipes/SupercoolerRecipes.java +++ b/src/main/java/igentuman/nc/datagen/recipes/recipes/SupercoolerRecipes.java @@ -2,17 +2,16 @@ import igentuman.nc.content.processors.Processors; import igentuman.nc.recipes.ingredient.FluidStackIngredient; -import net.minecraft.data.recipes.FinishedRecipe; -import net.minecraftforge.fluids.FluidStack; +import net.minecraft.data.recipes.RecipeOutput; +import net.neoforged.neoforge.fluids.FluidStack; import java.util.List; -import java.util.function.Consumer; import static net.minecraft.world.level.material.Fluids.WATER; public class SupercoolerRecipes extends AbstractRecipeProvider { - public static void generate(Consumer consumer) { + public static void generate(RecipeOutput consumer) { SupercoolerRecipes.consumer = consumer; ID = Processors.SUPERCOOLER; diff --git a/src/main/java/igentuman/nc/datagen/recipes/recipes/TConstructAlloyingRecipes.java b/src/main/java/igentuman/nc/datagen/recipes/recipes/TConstructAlloyingRecipes.java index 9ee0f21d6..0a61d5b86 100644 --- a/src/main/java/igentuman/nc/datagen/recipes/recipes/TConstructAlloyingRecipes.java +++ b/src/main/java/igentuman/nc/datagen/recipes/recipes/TConstructAlloyingRecipes.java @@ -3,16 +3,15 @@ import igentuman.nc.content.fuel.FuelManager; import igentuman.nc.content.materials.Materials; import igentuman.nc.recipes.ingredient.FluidStackIngredient; -import net.minecraft.data.recipes.FinishedRecipe; +import net.minecraft.data.recipes.RecipeOutput; import java.util.List; -import java.util.function.Consumer; import static igentuman.nc.datagen.recipes.NCRecipes.MOLTEN_INGOT; public class TConstructAlloyingRecipes extends AbstractRecipeProvider { - public static void generate(Consumer consumer) { + public static void generate(RecipeOutput consumer) { TConstructAlloyingRecipes.consumer = consumer; ID = "alloy"; diff --git a/src/main/java/igentuman/nc/datagen/recipes/recipes/TConstructCastingRecipes.java b/src/main/java/igentuman/nc/datagen/recipes/recipes/TConstructCastingRecipes.java index b09164a40..15bfb0404 100644 --- a/src/main/java/igentuman/nc/datagen/recipes/recipes/TConstructCastingRecipes.java +++ b/src/main/java/igentuman/nc/datagen/recipes/recipes/TConstructCastingRecipes.java @@ -8,12 +8,11 @@ import igentuman.nc.recipes.ingredient.NcIngredient; import igentuman.nc.recipes.ingredient.creator.IngredientCreatorAccess; import igentuman.nc.setup.registration.NCItems; -import net.minecraft.data.recipes.FinishedRecipe; -import net.minecraftforge.fluids.FluidStack; +import net.minecraft.data.recipes.RecipeOutput; +import net.neoforged.neoforge.fluids.FluidStack; import java.util.ArrayList; import java.util.List; -import java.util.function.Consumer; import static igentuman.nc.datagen.recipes.NCRecipes.MOLTEN_INGOT; import static igentuman.nc.setup.registration.FissionFuel.NC_FUEL; @@ -22,7 +21,7 @@ public class TConstructCastingRecipes extends AbstractRecipeProvider { - public static void generate(Consumer consumer) { + public static void generate(RecipeOutput consumer) { TConstructCastingRecipes.consumer = consumer; ID = "casting_table"; diff --git a/src/main/java/igentuman/nc/datagen/recipes/recipes/TConstructMeltingRecipes.java b/src/main/java/igentuman/nc/datagen/recipes/recipes/TConstructMeltingRecipes.java index b2bc86fc0..1beecd23d 100644 --- a/src/main/java/igentuman/nc/datagen/recipes/recipes/TConstructMeltingRecipes.java +++ b/src/main/java/igentuman/nc/datagen/recipes/recipes/TConstructMeltingRecipes.java @@ -8,10 +8,9 @@ import igentuman.nc.recipes.ingredient.NcIngredient; import igentuman.nc.setup.registration.FissionFuel; import igentuman.nc.setup.registration.NCItems; -import net.minecraft.data.recipes.FinishedRecipe; +import net.minecraft.data.recipes.RecipeOutput; import java.util.List; -import java.util.function.Consumer; import static igentuman.nc.datagen.recipes.NCRecipes.MOLTEN_INGOT; import static igentuman.nc.datagen.recipes.NCRecipes.MOLTEN_NUGGET; @@ -21,7 +20,7 @@ public class TConstructMeltingRecipes extends AbstractRecipeProvider { - public static void generate(Consumer consumer) { + public static void generate(RecipeOutput consumer) { TConstructMeltingRecipes.consumer = consumer; ID = "melting"; for(String name: List.of("tough_alloy")) { diff --git a/src/main/java/igentuman/nc/datagen/recipes/recipes/TargetChamberRecipes.java b/src/main/java/igentuman/nc/datagen/recipes/recipes/TargetChamberRecipes.java index d150257e1..c414561cc 100644 --- a/src/main/java/igentuman/nc/datagen/recipes/recipes/TargetChamberRecipes.java +++ b/src/main/java/igentuman/nc/datagen/recipes/recipes/TargetChamberRecipes.java @@ -4,13 +4,12 @@ import igentuman.nc.content.particles.ParticleStack; import igentuman.nc.recipes.ingredient.FluidStackIngredient; import igentuman.nc.recipes.ingredient.NcIngredient; -import net.minecraft.data.recipes.FinishedRecipe; +import net.minecraft.data.recipes.RecipeOutput; import net.minecraft.world.item.ItemStack; import java.util.HashMap; import java.util.List; import java.util.Map; -import java.util.function.Consumer; import static igentuman.nc.content.materials.Materials.*; import static igentuman.nc.content.particles.ParticleSources.moleAmount; @@ -20,7 +19,7 @@ public class TargetChamberRecipes extends AbstractRecipeProvider { - public static void generate(Consumer consumer) { + public static void generate(RecipeOutput consumer) { TargetChamberRecipes.consumer = consumer; ID = "target_chamber"; diff --git a/src/main/java/igentuman/nc/datagen/recipes/recipes/TurbineControllerRecipes.java b/src/main/java/igentuman/nc/datagen/recipes/recipes/TurbineControllerRecipes.java index 4b860da77..b717fdfab 100644 --- a/src/main/java/igentuman/nc/datagen/recipes/recipes/TurbineControllerRecipes.java +++ b/src/main/java/igentuman/nc/datagen/recipes/recipes/TurbineControllerRecipes.java @@ -2,14 +2,13 @@ import igentuman.nc.block.turbine.entity.TurbineControllerBE; import igentuman.nc.recipes.ingredient.FluidStackIngredient; -import net.minecraft.data.recipes.FinishedRecipe; +import net.minecraft.data.recipes.RecipeOutput; import java.util.List; -import java.util.function.Consumer; public class TurbineControllerRecipes extends AbstractRecipeProvider { - public static void generate(Consumer consumer) { + public static void generate(RecipeOutput consumer) { TurbineControllerRecipes.consumer = consumer; ID = TurbineControllerBE.NAME; diff --git a/src/main/java/igentuman/nc/datagen/tags/FluidTags.java b/src/main/java/igentuman/nc/datagen/tags/FluidTags.java index 62761420c..dcf15e8e8 100644 --- a/src/main/java/igentuman/nc/datagen/tags/FluidTags.java +++ b/src/main/java/igentuman/nc/datagen/tags/FluidTags.java @@ -4,8 +4,8 @@ import net.minecraft.core.HolderLookup; import net.minecraft.data.DataGenerator; import net.minecraft.data.tags.FluidTagsProvider; -import net.minecraftforge.common.Tags.Fluids; -import net.minecraftforge.data.event.GatherDataEvent; +import net.neoforged.neoforge.common.Tags.Fluids; +import net.neoforged.neoforge.data.event.GatherDataEvent; import static igentuman.nc.NuclearCraft.MODID; import static igentuman.nc.setup.registration.NCFluids.NC_GASES; diff --git a/src/main/java/igentuman/nc/datagen/tags/NCBiomeTags.java b/src/main/java/igentuman/nc/datagen/tags/NCBiomeTags.java index aa54cd46f..021862282 100644 --- a/src/main/java/igentuman/nc/datagen/tags/NCBiomeTags.java +++ b/src/main/java/igentuman/nc/datagen/tags/NCBiomeTags.java @@ -4,9 +4,10 @@ import net.minecraft.data.DataGenerator; import net.minecraft.data.tags.TagsProvider; import net.minecraft.world.level.biome.Biome; -import net.minecraftforge.common.Tags; -import net.minecraftforge.data.event.GatherDataEvent; -import net.minecraftforge.registries.ForgeRegistries; +import net.neoforged.neoforge.common.Tags; +import net.neoforged.neoforge.data.event.GatherDataEvent; +import net.minecraft.core.registries.BuiltInRegistries; +import net.neoforged.neoforge.registries.NeoForgeRegistries; import static igentuman.nc.NuclearCraft.MODID; import static igentuman.nc.setup.registration.WorldGeneration.*; @@ -15,7 +16,7 @@ public class NCBiomeTags extends TagsProvider { public NCBiomeTags(DataGenerator generator, GatherDataEvent event) { - super(generator.getPackOutput(), ForgeRegistries.BIOMES.getRegistryKey(), event.getLookupProvider(), MODID, event.getExistingFileHelper()); + super(generator.getPackOutput(), net.minecraft.core.registries.Registries.BIOME, event.getLookupProvider(), MODID, event.getExistingFileHelper()); } @Override diff --git a/src/main/java/igentuman/nc/datagen/tags/NCBlockTags.java b/src/main/java/igentuman/nc/datagen/tags/NCBlockTags.java index c5208564f..773b512dc 100644 --- a/src/main/java/igentuman/nc/datagen/tags/NCBlockTags.java +++ b/src/main/java/igentuman/nc/datagen/tags/NCBlockTags.java @@ -12,10 +12,10 @@ import net.minecraft.data.DataGenerator; import net.minecraft.tags.BlockTags; import net.minecraft.world.level.block.Block; -import net.minecraftforge.common.Tags; -import net.minecraftforge.common.data.BlockTagsProvider; -import net.minecraftforge.data.event.GatherDataEvent; -import net.minecraftforge.registries.RegistryObject; +import net.neoforged.neoforge.common.Tags; +import net.neoforged.neoforge.common.data.BlockTagsProvider; +import net.neoforged.neoforge.data.event.GatherDataEvent; +import net.neoforged.neoforge.registries.DeferredHolder; import org.jetbrains.annotations.NotNull; import static igentuman.nc.NuclearCraft.MODID; @@ -77,12 +77,12 @@ protected void addTags(HolderLookup.Provider provider) { ACCELERATOR_BLOCKS.get("particle_beam").get(), ACCELERATOR_BLOCKS.get("electromagnet_yoke").get() ); - for(RegistryObject magnet: NC_ELECTROMAGNETS.values()) { + for(DeferredHolder magnet: NC_ELECTROMAGNETS.values()) { tag(AcceleratorRegistration.ACCELERATOR_INNER_BLOCKS).add( magnet.get() ); } - for(RegistryObject block: NC_RF_AMPLIFIERS.values()) { + for(DeferredHolder block: NC_RF_AMPLIFIERS.values()) { tag(AcceleratorRegistration.ACCELERATOR_INNER_BLOCKS).add( block.get() ); @@ -93,12 +93,12 @@ protected void addTags(HolderLookup.Provider provider) { cooler ); } - for(RegistryObject magnet: NC_ELECTROMAGNETS.values()) { + for(DeferredHolder magnet: NC_ELECTROMAGNETS.values()) { tag(ELECTROMAGNETS).add( magnet.get() ); } - for(RegistryObject amplifier: NC_RF_AMPLIFIERS.values()) { + for(DeferredHolder amplifier: NC_RF_AMPLIFIERS.values()) { tag(AMPLIFIERS).add( amplifier.get() ); diff --git a/src/main/java/igentuman/nc/datagen/tags/NCItemTags.java b/src/main/java/igentuman/nc/datagen/tags/NCItemTags.java index aefa4e842..bc0288039 100644 --- a/src/main/java/igentuman/nc/datagen/tags/NCItemTags.java +++ b/src/main/java/igentuman/nc/datagen/tags/NCItemTags.java @@ -9,13 +9,13 @@ import net.minecraft.data.DataGenerator; import net.minecraft.data.tags.ItemTagsProvider; import net.minecraft.resources.ResourceLocation; -import net.minecraft.tags.ItemTags; +import igentuman.api.platform.NCMusicDiscs; import net.minecraft.tags.TagKey; import net.minecraft.world.item.Item; -import net.minecraftforge.common.Tags; -import net.minecraftforge.common.data.BlockTagsProvider; -import net.minecraftforge.data.event.GatherDataEvent; -import net.minecraftforge.registries.RegistryObject; +import net.neoforged.neoforge.common.Tags; +import net.neoforged.neoforge.common.data.BlockTagsProvider; +import net.neoforged.neoforge.data.event.GatherDataEvent; +import net.neoforged.neoforge.registries.DeferredHolder; import java.util.List; @@ -49,13 +49,13 @@ protected void addTags(HolderLookup.Provider provider) { waste(); disks(); ionSources(); - for(RegistryObject magnet: NC_ELECTROMAGNETS_ITEMS.values()) { + for(DeferredHolder magnet: NC_ELECTROMAGNETS_ITEMS.values()) { tag(ELECTROMAGNETS_ITEMS).add(magnet.get()); tag(AcceleratorRegistration.ACCELERATOR_INNER_ITEMS).add( magnet.get() ); } - for(RegistryObject amplifier: NC_RF_AMPLIFIERS_ITEMS.values()) { + for(DeferredHolder amplifier: NC_RF_AMPLIFIERS_ITEMS.values()) { tag(AMPLIFIERS_ITEMS).add(amplifier.get()); tag(AcceleratorRegistration.ACCELERATOR_INNER_ITEMS).add( amplifier.get() @@ -83,7 +83,7 @@ private void ionSources() { private void disks() { for(String name: NC_RECORDS.keySet()) { - tag(ItemTags.MUSIC_DISCS).add(NC_RECORDS.get(name).get()); + tag(NCMusicDiscs.musicDiscsTag()).add(NC_RECORDS.get(name).get()); } } diff --git a/src/main/java/igentuman/nc/datagen/tags/NCStructureSetTags.java b/src/main/java/igentuman/nc/datagen/tags/NCStructureSetTags.java index e55d314b1..10c618475 100644 --- a/src/main/java/igentuman/nc/datagen/tags/NCStructureSetTags.java +++ b/src/main/java/igentuman/nc/datagen/tags/NCStructureSetTags.java @@ -5,7 +5,7 @@ import net.minecraft.data.DataGenerator; import net.minecraft.data.tags.TagsProvider; import net.minecraft.world.level.levelgen.structure.StructureSet; -import net.minecraftforge.data.event.GatherDataEvent; +import net.neoforged.neoforge.data.event.GatherDataEvent; import static igentuman.nc.NuclearCraft.MODID; diff --git a/src/main/java/igentuman/nc/datagen/tags/PoiTypeTags.java b/src/main/java/igentuman/nc/datagen/tags/PoiTypeTags.java index 4417ef60b..3bdfb8fee 100644 --- a/src/main/java/igentuman/nc/datagen/tags/PoiTypeTags.java +++ b/src/main/java/igentuman/nc/datagen/tags/PoiTypeTags.java @@ -4,7 +4,7 @@ import net.minecraft.data.PackOutput; import net.minecraft.data.tags.PoiTypeTagsProvider; import net.minecraft.resources.ResourceLocation; -import net.minecraftforge.common.data.ExistingFileHelper; +import net.neoforged.neoforge.common.data.ExistingFileHelper; import org.jetbrains.annotations.Nullable; import java.util.concurrent.CompletableFuture; diff --git a/src/main/java/igentuman/nc/effect/RadiationDecay.java b/src/main/java/igentuman/nc/effect/RadiationDecay.java index 7e89ae802..ab95a7ff9 100644 --- a/src/main/java/igentuman/nc/effect/RadiationDecay.java +++ b/src/main/java/igentuman/nc/effect/RadiationDecay.java @@ -1,6 +1,6 @@ package igentuman.nc.effect; import igentuman.nc.radiation.data.PlayerRadiation; -import igentuman.nc.radiation.data.PlayerRadiationProvider; +import igentuman.nc.setup.registration.NCAttachments; import net.minecraft.server.level.ServerPlayer; import net.minecraft.world.effect.MobEffect; import net.minecraft.world.effect.MobEffectCategory; @@ -27,14 +27,13 @@ public boolean isDurationEffectTick(int from, int to) { return true; } - public void applyEffectTick(LivingEntity ent, int id) + @Override + public boolean applyEffectTick(LivingEntity ent, int id) { if(ent instanceof ServerPlayer serverPlayer) { - PlayerRadiation radCap = serverPlayer.getCapability(PlayerRadiationProvider.PLAYER_RADIATION).orElse(null); - if (radCap == null) { - return; - } + PlayerRadiation radCap = serverPlayer.getData(NCAttachments.PLAYER_RADIATION.get()); radCap.setRadiation(Math.max(radCap.getRadiation() - 1000, 0)); } + return true; } } diff --git a/src/main/java/igentuman/nc/effect/RadiationResistance.java b/src/main/java/igentuman/nc/effect/RadiationResistance.java index d2f8664ba..d6f67efdf 100644 --- a/src/main/java/igentuman/nc/effect/RadiationResistance.java +++ b/src/main/java/igentuman/nc/effect/RadiationResistance.java @@ -1,6 +1,6 @@ package igentuman.nc.effect; import igentuman.nc.radiation.data.PlayerRadiation; -import igentuman.nc.radiation.data.PlayerRadiationProvider; +import igentuman.nc.setup.registration.NCAttachments; import net.minecraft.server.level.ServerPlayer; import net.minecraft.world.effect.MobEffect; import net.minecraft.world.effect.MobEffectCategory; @@ -27,14 +27,13 @@ public boolean isDurationEffectTick(int from, int to) { return true; } - public void applyEffectTick(LivingEntity ent, int id) + @Override + public boolean applyEffectTick(LivingEntity ent, int id) { if(ent instanceof ServerPlayer serverPlayer) { - PlayerRadiation radCap = serverPlayer.getCapability(PlayerRadiationProvider.PLAYER_RADIATION).orElse(null); - if (radCap == null) { - return; - } + PlayerRadiation radCap = serverPlayer.getData(NCAttachments.PLAYER_RADIATION.get()); radCap.setRadiation(Math.max(radCap.getRadiation() - 1000, 0)); } + return true; } } diff --git a/src/main/java/igentuman/nc/entity/EntityFeralGhoul.java b/src/main/java/igentuman/nc/entity/EntityFeralGhoul.java index 19dbf61aa..2da0ae39e 100644 --- a/src/main/java/igentuman/nc/entity/EntityFeralGhoul.java +++ b/src/main/java/igentuman/nc/entity/EntityFeralGhoul.java @@ -1,6 +1,6 @@ package igentuman.nc.entity; -import igentuman.nc.radiation.data.PlayerRadiationProvider; +import igentuman.nc.setup.registration.NCAttachments; import net.minecraft.core.BlockPos; import net.minecraft.nbt.CompoundTag; import net.minecraft.resources.ResourceKey; @@ -162,10 +162,9 @@ public boolean doHurtTarget(Entity pEntity) { // Add radiation to player when attacked if (attackResult && pEntity instanceof Player player) { - player.getCapability(PlayerRadiationProvider.PLAYER_RADIATION).ifPresent(radiation -> { - long currentRadiation = radiation.getRadiation(); - radiation.setRadiation(currentRadiation + RADIATION_AMOUNT); - }); + var radiation = player.getData(NCAttachments.PLAYER_RADIATION.get()); + long currentRadiation = radiation.getRadiation(); + radiation.setRadiation(currentRadiation + RADIATION_AMOUNT); // Play radiation effect sound this.playSound(SoundEvents.GENERIC_DRINK, 0.2F, 0.8F); diff --git a/src/main/java/igentuman/nc/entity/EntityWastelandBoss.java b/src/main/java/igentuman/nc/entity/EntityWastelandBoss.java index 59ef90714..651281622 100644 --- a/src/main/java/igentuman/nc/entity/EntityWastelandBoss.java +++ b/src/main/java/igentuman/nc/entity/EntityWastelandBoss.java @@ -6,12 +6,13 @@ import igentuman.nc.entity.goal.SlamAttackGoal; import igentuman.nc.entity.goal.SummonGhoulsGoal; import igentuman.nc.entity.goal.ThrowSpamGoal; -import igentuman.nc.radiation.data.PlayerRadiationProvider; +import igentuman.nc.setup.registration.NCAttachments; import igentuman.nc.setup.registration.NcParticleTypes; import net.minecraft.client.Minecraft; import net.minecraft.core.BlockPos; import net.minecraft.core.particles.ParticleTypes; import net.minecraft.network.chat.Component; +import net.minecraft.network.syncher.SynchedEntityData; import net.minecraft.server.level.ServerBossEvent; import net.minecraft.server.level.ServerLevel; import net.minecraft.server.level.ServerPlayer; @@ -158,10 +159,9 @@ public boolean doHurtTarget(Entity pEntity) { boolean attackResult = super.doHurtTarget(pEntity); if (attackResult && pEntity instanceof Player player) { - player.getCapability(PlayerRadiationProvider.PLAYER_RADIATION).ifPresent(radiation -> { - long currentRadiation = radiation.getRadiation(); - radiation.setRadiation(currentRadiation + BOSS_RADIATION_AMOUNT); - }); + var radiation = player.getData(NCAttachments.PLAYER_RADIATION.get()); + long currentRadiation = radiation.getRadiation(); + radiation.setRadiation(currentRadiation + BOSS_RADIATION_AMOUNT); Vec3 knockbackDirection = pEntity.position().subtract(this.position()).normalize().scale(2.0); pEntity.setDeltaMovement(pEntity.getDeltaMovement().add(knockbackDirection)); @@ -278,10 +278,9 @@ public void executeRadiationBurst() { } for (Player player : nearbyPlayers) { - player.getCapability(PlayerRadiationProvider.PLAYER_RADIATION).ifPresent(radiation -> { - long currentRadiation = radiation.getRadiation(); - radiation.setRadiation(currentRadiation + RADIATION_BURST_AMOUNT); - }); + var radiation = player.getData(NCAttachments.PLAYER_RADIATION.get()); + long currentRadiation = radiation.getRadiation(); + radiation.setRadiation(currentRadiation + RADIATION_BURST_AMOUNT); player.addEffect(new MobEffectInstance(MobEffects.CONFUSION, 20, 0)); player.addEffect(new MobEffectInstance(MobEffects.POISON, 10, 0)); @@ -373,7 +372,7 @@ public void executeSlamAttack() { isExecutingAttack = true; this.playSound(BOSS_ACTION.get(), 1.4F, 0.9F); - this.playSound(SoundEvents.GENERIC_EXPLODE, 1.0F, 0.1F); + this.playSound(SoundEvents.GENERIC_EXPLODE.value(), 1.0F, 0.1F); double entityX = this.getX(); double entityY = this.getY(); @@ -596,8 +595,8 @@ public boolean isEnraged() { } @Override - protected void defineSynchedData() { - super.defineSynchedData(); + protected void defineSynchedData(SynchedEntityData.Builder builder) { + super.defineSynchedData(builder); } /** @@ -646,7 +645,7 @@ public boolean hurt(DamageSource pSource, float pAmount) { } @Override - public EntityDimensions getDimensions(Pose pose) { - return super.getDimensions(pose).scale(1.5f, 1.5f); + public EntityDimensions getDefaultDimensions(Pose pose) { + return super.getDefaultDimensions(pose).scale(1.5f, 1.5f); } } diff --git a/src/main/java/igentuman/nc/entity/EntityWastelandProjectile.java b/src/main/java/igentuman/nc/entity/EntityWastelandProjectile.java index 139fc0ff9..26cf3e38e 100644 --- a/src/main/java/igentuman/nc/entity/EntityWastelandProjectile.java +++ b/src/main/java/igentuman/nc/entity/EntityWastelandProjectile.java @@ -1,9 +1,7 @@ package igentuman.nc.entity; import net.minecraft.core.particles.ParticleTypes; -import net.minecraft.network.protocol.Packet; -import net.minecraft.network.protocol.game.ClientGamePacketListener; -import net.minecraft.network.protocol.game.ClientboundAddEntityPacket; +import net.minecraft.network.syncher.SynchedEntityData; import net.minecraft.sounds.SoundEvents; import net.minecraft.world.damagesource.DamageSource; import net.minecraft.world.entity.Entity; @@ -11,14 +9,12 @@ import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.entity.projectile.ThrowableProjectile; import net.minecraft.world.level.Level; -import net.minecraft.world.level.block.Blocks; 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 static igentuman.nc.setup.registration.Entities.WASTELAND_PROJECTILE; -import static igentuman.nc.setup.registration.WorldGeneration.WASTELAND; public class EntityWastelandProjectile extends ThrowableProjectile { @@ -35,7 +31,7 @@ public EntityWastelandProjectile(Level level, LivingEntity owner) { } @Override - protected void defineSynchedData() { + protected void defineSynchedData(SynchedEntityData.Builder builder) { // No additional data needed } @@ -72,7 +68,7 @@ protected void onHit(HitResult result) { this.level().broadcastEntityEvent(this, (byte)3); // Play sound - this.playSound(SoundEvents.GENERIC_EXPLODE, 0.8F, 0.6F / (this.random.nextFloat() * 0.2F + 0.9F)); + this.playSound(SoundEvents.GENERIC_EXPLODE.value(), 0.8F, 0.6F / (this.random.nextFloat() * 0.2F + 0.9F)); this.discard(); } @@ -91,11 +87,9 @@ protected void onHitEntity(EntityHitResult result) { // Apply radiation if it's a player if (livingTarget.equals(this.level().getNearestPlayer(this, 64))) { - livingTarget.getCapability(igentuman.nc.radiation.data.PlayerRadiationProvider.PLAYER_RADIATION) - .ifPresent(radiation -> { - long currentRadiation = radiation.getRadiation(); - radiation.setRadiation((long) (currentRadiation + RADIATION_AMOUNT)); - }); + var radiation = livingTarget.getData(igentuman.nc.setup.registration.NCAttachments.PLAYER_RADIATION.get()); + long currentRadiation = radiation.getRadiation(); + radiation.setRadiation((long) (currentRadiation + RADIATION_AMOUNT)); } // Apply knockback @@ -137,9 +131,4 @@ public void handleEntityEvent(byte id) { super.handleEntityEvent(id); } } - - @Override - public Packet getAddEntityPacket() { - return new ClientboundAddEntityPacket(this); - } } diff --git a/src/main/java/igentuman/nc/fluid/FluidRenderProps.java b/src/main/java/igentuman/nc/fluid/FluidRenderProps.java index c72c85d37..93fb49f08 100644 --- a/src/main/java/igentuman/nc/fluid/FluidRenderProps.java +++ b/src/main/java/igentuman/nc/fluid/FluidRenderProps.java @@ -1,9 +1,9 @@ package igentuman.nc.fluid; import net.minecraft.resources.ResourceLocation; -import net.minecraftforge.client.extensions.common.IClientFluidTypeExtensions; +import net.neoforged.neoforge.client.extensions.common.IClientFluidTypeExtensions; -import static igentuman.nc.NuclearCraft.forgeRl; +import static igentuman.nc.NuclearCraft.neoforgeRl; import static igentuman.nc.NuclearCraft.rl; public class FluidRenderProps implements IClientFluidTypeExtensions { @@ -17,8 +17,8 @@ public FluidRenderProps(String still, String flowing) { } public FluidRenderProps(String still, String flowing, int colorTint) { - this.still = still.indexOf(':') > 0 ? forgeRl(still) : rl("block/material/fluid/" + still); - this.flowing = flowing.indexOf(':') > 0 ? forgeRl(flowing) : rl("block/material/fluid/" + flowing); + this.still = still.indexOf(':') > 0 ? neoforgeRl(still) : rl("block/material/fluid/" + still); + this.flowing = flowing.indexOf(':') > 0 ? neoforgeRl(flowing) : rl("block/material/fluid/" + flowing); this.colorTint = colorTint; } diff --git a/src/main/java/igentuman/nc/fluid/NCFluid.java b/src/main/java/igentuman/nc/fluid/NCFluid.java index 800a021f3..b92e62fc5 100644 --- a/src/main/java/igentuman/nc/fluid/NCFluid.java +++ b/src/main/java/igentuman/nc/fluid/NCFluid.java @@ -18,7 +18,7 @@ import net.minecraft.world.level.material.FluidState; import net.minecraft.world.level.material.Fluids; import net.minecraft.world.phys.Vec3; -import net.minecraftforge.fluids.FluidType; +import net.neoforged.neoforge.fluids.FluidType; import javax.annotation.Nonnull; import java.util.function.Consumer; diff --git a/src/main/java/igentuman/nc/handler/CatalystHandler.java b/src/main/java/igentuman/nc/handler/CatalystHandler.java index 399dd20d9..3bd3f775a 100644 --- a/src/main/java/igentuman/nc/handler/CatalystHandler.java +++ b/src/main/java/igentuman/nc/handler/CatalystHandler.java @@ -1,8 +1,9 @@ package igentuman.nc.handler; +import igentuman.api.platform.NCItemStacks; import igentuman.nc.block.entity.processor.NCProcessorBE; import net.minecraft.world.item.ItemStack; -import net.minecraftforge.items.ItemStackHandler; +import net.neoforged.neoforge.items.ItemStackHandler; import javax.annotation.Nonnull; @@ -26,7 +27,7 @@ protected void onContentsChanged(int slot) { public boolean isItemValid(int slot, @Nonnull ItemStack stack) { for(Object item: be.getAllowedCatalysts()) { if(stack.getItem().equals(item)) { - return stack.getOrCreateTag().contains("is_nc_analyzed"); + return NCItemStacks.contains(stack, "is_nc_analyzed"); } } return false; diff --git a/src/main/java/igentuman/nc/handler/ItemEnergyHandler.java b/src/main/java/igentuman/nc/handler/ItemEnergyHandler.java index 78d93f6f9..2dc756ba4 100644 --- a/src/main/java/igentuman/nc/handler/ItemEnergyHandler.java +++ b/src/main/java/igentuman/nc/handler/ItemEnergyHandler.java @@ -1,43 +1,30 @@ package igentuman.nc.handler; +import igentuman.api.platform.NCItemStacks; import igentuman.nc.util.capability.CustomEnergyStorage; -import net.minecraft.core.Direction; import net.minecraft.world.item.ItemStack; -import net.minecraftforge.common.capabilities.Capability; -import net.minecraftforge.common.capabilities.ICapabilityProvider; -import net.minecraftforge.common.util.LazyOptional; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; -import static net.minecraftforge.common.capabilities.ForgeCapabilities.ENERGY; - -public class ItemEnergyHandler implements ICapabilityProvider { +public class ItemEnergyHandler { private final int storage; private final int output; private final int input; public ItemStack stack; + private ItemEnergy energyInstance; - protected final LazyOptional energy = LazyOptional.of(this::createEnergy); - - private ItemEnergy createEnergy() { - return new ItemEnergy(stack, capacity(), chargeRate(), sendRate()); - } - - public int sendRate() { - return output; - } - - public int chargeRate() { - return input; - } + public int sendRate() { return output; } + public int chargeRate() { return input; } + public int capacity() { return storage; } - public int capacity() { - return storage; + public int getEnergyStored() { + return getEnergy().getEnergyStored(); } - public int getEnergyStored() { - return getCapability(ENERGY, null).orElse(null).getEnergyStored(); + public ItemEnergy getEnergy() { + if (energyInstance == null) { + energyInstance = new ItemEnergy(stack, capacity(), chargeRate(), sendRate()); + } + return energyInstance; } public ItemEnergyHandler(ItemStack stack, int storage, int output, int input) { @@ -47,28 +34,19 @@ public ItemEnergyHandler(ItemStack stack, int storage, int output, int input) { this.input = input; } - @Override - public @NotNull LazyOptional getCapability(@NotNull Capability cap, @Nullable Direction side) { - if(cap == ENERGY) { - return energy.cast(); - } - return LazyOptional.empty(); - } - public class ItemEnergy extends CustomEnergyStorage { private ItemStack stack; public ItemEnergy(ItemStack stack, int capacity, int maxReceive, int maxExtract) { super(capacity, maxReceive, maxExtract); this.stack = stack; - energy = stack.getOrCreateTag().contains("energy") ? stack.getOrCreateTag().getInt("energy") : 0; + energy = NCItemStacks.getInt(stack, "energy"); } @Override public int extractEnergy(int extract, boolean simulate) { int amount = super.extractEnergy(extract, simulate); if (!simulate) - stack.getOrCreateTag().putInt("energy", this.energy); - + NCItemStacks.putInt(stack, "energy", this.energy); return amount; } @@ -76,8 +54,7 @@ public int extractEnergy(int extract, boolean simulate) { public int receiveEnergy(int receieve, boolean simulate) { int amount = super.receiveEnergy(receieve, simulate); if (!simulate) - stack.getOrCreateTag().putInt("energy", this.energy); - + NCItemStacks.putInt(stack, "energy", this.energy); return amount; } } diff --git a/src/main/java/igentuman/nc/handler/ItemStorageCapabilityHandler.java b/src/main/java/igentuman/nc/handler/ItemStorageCapabilityHandler.java index bb155dc11..3f0649b14 100644 --- a/src/main/java/igentuman/nc/handler/ItemStorageCapabilityHandler.java +++ b/src/main/java/igentuman/nc/handler/ItemStorageCapabilityHandler.java @@ -1,15 +1,17 @@ package igentuman.nc.handler; +import igentuman.api.platform.NCItemStacks; import igentuman.nc.handler.sided.capability.AbstractCapabilityHandler; +import net.minecraft.core.HolderLookup; import net.minecraft.core.NonNullList; import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.ListTag; import net.minecraft.nbt.Tag; import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.block.entity.BlockEntity; -import net.minecraftforge.common.util.INBTSerializable; -import net.minecraftforge.items.IItemHandlerModifiable; -import net.minecraftforge.items.ItemHandlerHelper; +import igentuman.api.platform.NCSerialization; +import net.neoforged.neoforge.common.util.INBTSerializable; +import net.neoforged.neoforge.items.IItemHandlerModifiable; import org.jetbrains.annotations.NotNull; import javax.annotation.Nonnull; @@ -70,11 +72,11 @@ public ItemStack extractItem(int slot, int amount, boolean simulate) { } } else { if (!simulate) { - this.stacks.set(slot, ItemHandlerHelper.copyStackWithSize(existing, existing.getCount() - toExtract)); + this.stacks.set(slot, NCItemStacks.copyWithCount(existing, existing.getCount() - toExtract)); // onContentsChanged(slot); } - return ItemHandlerHelper.copyStackWithSize(existing, toExtract); + return NCItemStacks.copyWithCount(existing, toExtract); } } @@ -91,7 +93,7 @@ public ItemStack insertItemInternal(int slot, @Nonnull ItemStack stack, boolean int limit = getStackLimit(slot, stack); if (!existing.isEmpty()) { - if (!ItemHandlerHelper.canItemStacksStack(stack, existing)) + if (!NCItemStacks.canStack(stack, existing)) return stack; limit -= existing.getCount(); @@ -104,13 +106,13 @@ public ItemStack insertItemInternal(int slot, @Nonnull ItemStack stack, boolean if (!simulate) { if (existing.isEmpty()) { - this.stacks.set(slot, reachedLimit ? ItemHandlerHelper.copyStackWithSize(stack, limit) : stack); + this.stacks.set(slot, reachedLimit ? NCItemStacks.copyWithCount(stack, limit) : stack); } else { existing.grow(reachedLimit ? limit : stack.getCount()); } } - return reachedLimit ? ItemHandlerHelper.copyStackWithSize(stack, stack.getCount() - limit) : ItemStack.EMPTY; + return reachedLimit ? NCItemStacks.copyWithCount(stack, stack.getCount() - limit) : ItemStack.EMPTY; } @Override @@ -134,13 +136,12 @@ public boolean isItemValid(int slot, @NotNull ItemStack stack) { } @Override - public CompoundTag serializeNBT() { + public CompoundTag serializeNBT(HolderLookup.Provider provider) { ListTag nbtTagList = new ListTag(); for (int i = 0; i < stacks.size(); i++) { if (!stacks.get(i).isEmpty()) { - CompoundTag itemTag = new CompoundTag(); + CompoundTag itemTag = (CompoundTag) NCSerialization.saveItemStack(stacks.get(i), provider); itemTag.putInt("Slot", i); - stacks.get(i).save(itemTag); nbtTagList.add(itemTag); } } @@ -155,7 +156,7 @@ public void setSize(int size) { } @Override - public void deserializeNBT(CompoundTag nbt) { + public void deserializeNBT(HolderLookup.Provider provider, CompoundTag nbt) { setSize(nbt.contains("Size", Tag.TAG_INT) ? nbt.getInt("Size") : stacks.size()); ListTag tagList = nbt.getList("Items", Tag.TAG_COMPOUND); for (int i = 0; i < tagList.size(); i++) { @@ -163,7 +164,7 @@ public void deserializeNBT(CompoundTag nbt) { int slot = itemTags.getInt("Slot"); if (slot >= 0 && slot < stacks.size()) { - stacks.set(slot, ItemStack.of(itemTags)); + stacks.set(slot, NCSerialization.loadItemStack(provider, itemTags)); } } } diff --git a/src/main/java/igentuman/nc/handler/ModHandler.java b/src/main/java/igentuman/nc/handler/ModHandler.java index 2a6b35b42..c231cf8d2 100644 --- a/src/main/java/igentuman/nc/handler/ModHandler.java +++ b/src/main/java/igentuman/nc/handler/ModHandler.java @@ -1,13 +1,14 @@ package igentuman.nc.handler; -import igentuman.nc.compat.kubejs.NCKubeJsEvents; + import igentuman.nc.recipes.NcRecipeType; import igentuman.nc.util.ModUtil; -import net.minecraftforge.event.AddReloadListenerEvent; -import net.minecraftforge.eventbus.api.SubscribeEvent; -import net.minecraftforge.fml.common.Mod; +import net.neoforged.neoforge.event.AddReloadListenerEvent; +import net.neoforged.bus.api.SubscribeEvent; +import net.neoforged.fml.common.EventBusSubscriber; +import net.neoforged.fml.common.Mod; -@Mod.EventBusSubscriber(bus = Mod.EventBusSubscriber.Bus.FORGE) +@EventBusSubscriber public class ModHandler { @SubscribeEvent diff --git a/src/main/java/igentuman/nc/handler/UpgradesHandler.java b/src/main/java/igentuman/nc/handler/UpgradesHandler.java index cf710f9a7..aa62d3939 100644 --- a/src/main/java/igentuman/nc/handler/UpgradesHandler.java +++ b/src/main/java/igentuman/nc/handler/UpgradesHandler.java @@ -4,7 +4,7 @@ import igentuman.nc.content.processors.ProcessorPrefab; import igentuman.nc.setup.registration.NCItems; import net.minecraft.world.item.ItemStack; -import net.minecraftforge.items.ItemStackHandler; +import net.neoforged.neoforge.items.ItemStackHandler; import javax.annotation.Nonnull; diff --git a/src/main/java/igentuman/nc/handler/command/PatronsCommand.java b/src/main/java/igentuman/nc/handler/command/PatronsCommand.java index ac6bb4531..75d9a7830 100644 --- a/src/main/java/igentuman/nc/handler/command/PatronsCommand.java +++ b/src/main/java/igentuman/nc/handler/command/PatronsCommand.java @@ -4,7 +4,7 @@ import net.minecraft.commands.CommandSourceStack; import net.minecraft.commands.Commands; import net.minecraft.server.level.ServerPlayer; -import net.minecraftforge.common.MinecraftForge; +import net.neoforged.neoforge.common.NeoForge; import static igentuman.nc.util.TextUtils.__; @@ -13,7 +13,6 @@ public class PatronsCommand { private PatronsCommand() {} public static LiteralArgumentBuilder register() { - MinecraftForge.EVENT_BUS.register(PatronsCommand.class); return Commands.literal("nc_patrons") .executes(ctx -> { return execute(ctx.getSource()); diff --git a/src/main/java/igentuman/nc/handler/command/RadiationCommand.java b/src/main/java/igentuman/nc/handler/command/RadiationCommand.java index 53501e922..c9f5e8015 100644 --- a/src/main/java/igentuman/nc/handler/command/RadiationCommand.java +++ b/src/main/java/igentuman/nc/handler/command/RadiationCommand.java @@ -5,6 +5,7 @@ import com.mojang.brigadier.context.CommandContext; import com.mojang.brigadier.exceptions.CommandSyntaxException; import igentuman.nc.radiation.data.RadiationManager; +import igentuman.nc.setup.registration.NCAttachments; import net.minecraft.commands.CommandSourceStack; import net.minecraft.commands.Commands; import net.minecraft.commands.arguments.EntityArgument; @@ -12,7 +13,6 @@ import net.minecraft.server.level.ServerPlayer; import static igentuman.nc.handler.config.RadiationConfig.RADIATION_CONFIG; -import static igentuman.nc.radiation.data.PlayerRadiationProvider.PLAYER_RADIATION; import static igentuman.nc.util.TextUtils.__; public class RadiationCommand { @@ -52,9 +52,7 @@ private static int executeCommandWithPlayer(CommandContext c if ("clear_player".equals(action)) { ServerPlayer targetPlayer = EntityArgument.getPlayer(context, "player"); - targetPlayer.getCapability(PLAYER_RADIATION).ifPresent(playerRadiation -> { - playerRadiation.setRadiation(0); - }); + targetPlayer.getData(NCAttachments.PLAYER_RADIATION.get()).setRadiation(0); executor.sendSystemMessage(Component.literal("Cleared player radiation " + targetPlayer.getName().getString())); return 1; } diff --git a/src/main/java/igentuman/nc/handler/command/VeinCheckCommand.java b/src/main/java/igentuman/nc/handler/command/VeinCheckCommand.java index c9cab6900..9231c84a7 100644 --- a/src/main/java/igentuman/nc/handler/command/VeinCheckCommand.java +++ b/src/main/java/igentuman/nc/handler/command/VeinCheckCommand.java @@ -8,7 +8,7 @@ import net.minecraft.server.level.ServerLevel; import net.minecraft.server.level.ServerPlayer; import net.minecraft.world.level.Level; -import net.minecraftforge.common.MinecraftForge; +import net.neoforged.neoforge.common.NeoForge; import static igentuman.nc.util.TextUtils.__; @@ -17,7 +17,6 @@ public class VeinCheckCommand { private VeinCheckCommand() {} public static LiteralArgumentBuilder register() { - MinecraftForge.EVENT_BUS.register(VeinCheckCommand.class); return Commands.literal("nc_vein_check") .requires(cs -> cs.hasPermission(3)) .executes(ctx -> { diff --git a/src/main/java/igentuman/nc/handler/config/AcceleratorConfig.java b/src/main/java/igentuman/nc/handler/config/AcceleratorConfig.java index d56b7f1b8..48bb2d4bf 100644 --- a/src/main/java/igentuman/nc/handler/config/AcceleratorConfig.java +++ b/src/main/java/igentuman/nc/handler/config/AcceleratorConfig.java @@ -1,6 +1,6 @@ package igentuman.nc.handler.config; -import net.minecraftforge.common.ForgeConfigSpec; +import net.neoforged.neoforge.common.ModConfigSpec; import java.util.ArrayList; import java.util.Collection; @@ -11,10 +11,10 @@ public static List toList(Collection vals) { return new ArrayList<>(vals); } - private static final ForgeConfigSpec.Builder BUILDER = new ForgeConfigSpec.Builder(); + private static final ModConfigSpec.Builder BUILDER = new ModConfigSpec.Builder(); public static final GeneralConfig ACCELERATOR_CONFIG = new GeneralConfig(BUILDER); public static final ParticleChamberConfig PARTICLE_CHAMBER_CONFIG = new ParticleChamberConfig(BUILDER); - public static final ForgeConfigSpec spec = BUILDER.build(); + public static final ModConfigSpec spec = BUILDER.build(); private static boolean loaded = false; private static List loadActions = new ArrayList<>(); @@ -36,10 +36,10 @@ public static void onLoad(Runnable action) { } public static class ParticleChamberConfig { - public final ForgeConfigSpec.ConfigValue MIN_SIZE; - public final ForgeConfigSpec.ConfigValue MAX_SIZE; + public final ModConfigSpec.ConfigValue MIN_SIZE; + public final ModConfigSpec.ConfigValue MAX_SIZE; - public ParticleChamberConfig(ForgeConfigSpec.Builder builder) { + public ParticleChamberConfig(ModConfigSpec.Builder builder) { builder.comment("Particle chamber").push("particle_chamber"); MIN_SIZE = builder @@ -55,11 +55,11 @@ public ParticleChamberConfig(ForgeConfigSpec.Builder builder) { } public static class GeneralConfig { - public final ForgeConfigSpec.ConfigValue SCALE; - public final ForgeConfigSpec.ConfigValue BEAM_ATTENUATION_RATE; - public final ForgeConfigSpec.ConfigValue BEAM_SCALING; + public final ModConfigSpec.ConfigValue SCALE; + public final ModConfigSpec.ConfigValue BEAM_ATTENUATION_RATE; + public final ModConfigSpec.ConfigValue BEAM_SCALING; - public GeneralConfig(ForgeConfigSpec.Builder builder) { + public GeneralConfig(ModConfigSpec.Builder builder) { builder.comment("Settings for accelerators").push("general"); SCALE = builder diff --git a/src/main/java/igentuman/nc/handler/config/ClientConfig.java b/src/main/java/igentuman/nc/handler/config/ClientConfig.java index 983fdd297..a68e972f3 100644 --- a/src/main/java/igentuman/nc/handler/config/ClientConfig.java +++ b/src/main/java/igentuman/nc/handler/config/ClientConfig.java @@ -1,6 +1,6 @@ package igentuman.nc.handler.config; -import net.minecraftforge.common.ForgeConfigSpec; +import net.neoforged.neoforge.common.ModConfigSpec; import java.util.ArrayList; import java.util.Collection; @@ -12,9 +12,9 @@ public static List toList(Collection vals) { return new ArrayList<>(vals); } - private static final ForgeConfigSpec.Builder BUILDER = new ForgeConfigSpec.Builder(); + private static final ModConfigSpec.Builder BUILDER = new ModConfigSpec.Builder(); public static final MiscConfig MISC_CONFIG = new MiscConfig(BUILDER); - public static final ForgeConfigSpec spec = BUILDER.build(); + public static final ModConfigSpec spec = BUILDER.build(); private static boolean loaded = false; private static List loadActions = new ArrayList<>(); @@ -36,9 +36,9 @@ public static void onLoad(Runnable action) { } public static class MiscConfig { - public final ForgeConfigSpec.ConfigValue HIDE_PARTICLES; + public final ModConfigSpec.ConfigValue HIDE_PARTICLES; - public MiscConfig(ForgeConfigSpec.Builder builder) { + public MiscConfig(ModConfigSpec.Builder builder) { builder.push("Misc"); HIDE_PARTICLES = builder diff --git a/src/main/java/igentuman/nc/handler/config/CommonConfig.java b/src/main/java/igentuman/nc/handler/config/CommonConfig.java index 21d5b6950..74754726a 100644 --- a/src/main/java/igentuman/nc/handler/config/CommonConfig.java +++ b/src/main/java/igentuman/nc/handler/config/CommonConfig.java @@ -5,7 +5,7 @@ import igentuman.nc.content.energy.SolarPanels; import igentuman.nc.content.storage.BarrelBlocks; import igentuman.nc.content.storage.ContainerBlocks; -import net.minecraftforge.common.ForgeConfigSpec; +import net.neoforged.neoforge.common.ModConfigSpec; import java.util.ArrayList; import java.util.Arrays; @@ -20,14 +20,14 @@ public static List toList(Collection vals) { return new ArrayList<>(vals); } - private static final ForgeConfigSpec.Builder BUILDER = new ForgeConfigSpec.Builder(); + private static final ModConfigSpec.Builder BUILDER = new ModConfigSpec.Builder(); public static final EnergyGenerationConfig ENERGY_GENERATION = new EnergyGenerationConfig(BUILDER); public static final EnergyStorageConfig ENERGY_STORAGE = new EnergyStorageConfig(BUILDER); public static final MiscConfig MISC_CONFIG = new MiscConfig(BUILDER); public static final GTCEUCompatibilityConfig GTCEU_CONFIG = new GTCEUCompatibilityConfig(BUILDER); public static final StorageBlocksConfig STORAGE_BLOCKS = new StorageBlocksConfig(BUILDER); - public static final ForgeConfigSpec spec = BUILDER.build(); + public static final ModConfigSpec spec = BUILDER.build(); private static boolean loaded = false; private static List loadActions = new ArrayList<>(); @@ -49,18 +49,18 @@ public static void onLoad(Runnable action) { } public static class EnergyGenerationConfig { - public final ForgeConfigSpec.ConfigValue> REGISTER_SOLAR_PANELS; - public final ForgeConfigSpec.ConfigValue> SOLAR_PANELS_GENERATION; - public final ForgeConfigSpec.ConfigValue> REGISTER_RTG; - public final ForgeConfigSpec.ConfigValue> RTG_GENERATION; - public final ForgeConfigSpec.ConfigValue> RTG_RADIATION; - public final ForgeConfigSpec.ConfigValue STEAM_TURBINE; - public final ForgeConfigSpec.ConfigValue DECAY_GENERATOR; - public final ForgeConfigSpec.ConfigValue GENERATION_MULTIPLIER; + public final ModConfigSpec.ConfigValue> REGISTER_SOLAR_PANELS; + public final ModConfigSpec.ConfigValue> SOLAR_PANELS_GENERATION; + public final ModConfigSpec.ConfigValue> REGISTER_RTG; + public final ModConfigSpec.ConfigValue> RTG_GENERATION; + public final ModConfigSpec.ConfigValue> RTG_RADIATION; + public final ModConfigSpec.ConfigValue STEAM_TURBINE; + public final ModConfigSpec.ConfigValue DECAY_GENERATOR; + public final ModConfigSpec.ConfigValue GENERATION_MULTIPLIER; - public EnergyGenerationConfig(ForgeConfigSpec.Builder builder) { + public EnergyGenerationConfig(ModConfigSpec.Builder builder) { builder.push("Energy"); GENERATION_MULTIPLIER = builder @@ -69,23 +69,23 @@ public EnergyGenerationConfig(ForgeConfigSpec.Builder builder) { REGISTER_SOLAR_PANELS = builder .comment("Allow solar panel registration: " + String.join(", ", SolarPanels.all().keySet())) - .define("register_panel", SolarPanels.initialRegistered(), o -> o instanceof ArrayList); + .define("register_panel", SolarPanels.initialRegistered(), o -> o instanceof List); SOLAR_PANELS_GENERATION = builder .comment("Solar panel power generation: " + String.join(", ", SolarPanels.all().keySet())) - .define("panel_power", SolarPanels.initialPower(), o -> o instanceof ArrayList); + .define("panel_power", SolarPanels.initialPower(), o -> o instanceof List); REGISTER_RTG = builder .comment("Allow rtg registration: " + String.join(", ", RTGs.all().keySet())) - .define("register_rtg", RTGs.initialRegistered(), o -> o instanceof ArrayList); + .define("register_rtg", RTGs.initialRegistered(), o -> o instanceof List); RTG_GENERATION = builder .comment("rtg generation: " + String.join(", ", RTGs.all().keySet())) - .define("rtg_power", RTGs.initialPower(), o -> o instanceof ArrayList); + .define("rtg_power", RTGs.initialPower(), o -> o instanceof List); RTG_RADIATION = builder .comment("rtg radiation: " + String.join(", ", RTGs.all().keySet())) - .define("rtg_radiation", RTGs.initialRadiation(), o -> o instanceof ArrayList); + .define("rtg_radiation", RTGs.initialRadiation(), o -> o instanceof List); STEAM_TURBINE = builder .comment("Steam turbine (one block) base power gen") @@ -100,26 +100,26 @@ public EnergyGenerationConfig(ForgeConfigSpec.Builder builder) { } public static class StorageBlocksConfig { - public final ForgeConfigSpec.ConfigValue> REGISTER_BARREL; - public final ForgeConfigSpec.ConfigValue> REGISTER_CONTAINER; - public final ForgeConfigSpec.ConfigValue> BARREL_CAPACITY; + public final ModConfigSpec.ConfigValue> REGISTER_BARREL; + public final ModConfigSpec.ConfigValue> REGISTER_CONTAINER; + public final ModConfigSpec.ConfigValue> BARREL_CAPACITY; - public StorageBlocksConfig(ForgeConfigSpec.Builder builder) { + public StorageBlocksConfig(ModConfigSpec.Builder builder) { builder.push("storage_blocks") .comment("Blocks to store items, fluids, etc..."); REGISTER_CONTAINER = builder .comment("Allow container registration: " + String.join(", ", BarrelBlocks.all().keySet())) - .define("container_block_registration", ContainerBlocks.initialRegistered(), o -> o instanceof ArrayList); + .define("container_block_registration", ContainerBlocks.initialRegistered(), o -> o instanceof List); REGISTER_BARREL = builder .comment("Allow barrel registration: " + String.join(", ", BarrelBlocks.all().keySet())) - .define("barrel_block_registration", BarrelBlocks.initialRegistered(), o -> o instanceof ArrayList); + .define("barrel_block_registration", BarrelBlocks.initialRegistered(), o -> o instanceof List); BARREL_CAPACITY = builder .comment("Barrel capacity in Buckets: " + String.join(", ", BarrelBlocks.all().keySet())) - .define("barrel_capacity", BarrelBlocks.initialCapacity(), o -> o instanceof ArrayList); + .define("barrel_capacity", BarrelBlocks.initialCapacity(), o -> o instanceof List); builder.pop(); } @@ -127,14 +127,14 @@ public StorageBlocksConfig(ForgeConfigSpec.Builder builder) { } public static class EnergyStorageConfig { - public final ForgeConfigSpec.ConfigValue> REGISTER_ENERGY_BLOCK; - public final ForgeConfigSpec.ConfigValue> ENERGY_BLOCK_STORAGE; - public final ForgeConfigSpec.ConfigValue LITHIUM_ION_BATTERY_STORAGE; - public final ForgeConfigSpec.ConfigValue QNP_ENERGY_STORAGE; - public final ForgeConfigSpec.ConfigValue LIGHTNING_ROD_CHARGE; - public final ForgeConfigSpec.ConfigValue QNP_ENERGY_PER_BLOCK; - - public EnergyStorageConfig(ForgeConfigSpec.Builder builder) { + public final ModConfigSpec.ConfigValue> REGISTER_ENERGY_BLOCK; + public final ModConfigSpec.ConfigValue> ENERGY_BLOCK_STORAGE; + public final ModConfigSpec.ConfigValue LITHIUM_ION_BATTERY_STORAGE; + public final ModConfigSpec.ConfigValue QNP_ENERGY_STORAGE; + public final ModConfigSpec.ConfigValue LIGHTNING_ROD_CHARGE; + public final ModConfigSpec.ConfigValue QNP_ENERGY_PER_BLOCK; + + public EnergyStorageConfig(ModConfigSpec.Builder builder) { builder.push("energy_storage"); LIGHTNING_ROD_CHARGE = builder @@ -142,11 +142,11 @@ public EnergyStorageConfig(ForgeConfigSpec.Builder builder) { REGISTER_ENERGY_BLOCK = builder .comment("Allow block registration: " + String.join(", ", BatteryBlocks.all().keySet())) - .define("energy_block_registration", BatteryBlocks.initialRegistered(), o -> o instanceof ArrayList); + .define("energy_block_registration", BatteryBlocks.initialRegistered(), o -> o instanceof List); ENERGY_BLOCK_STORAGE = builder .comment("Storage: " + String.join(", ", BatteryBlocks.all().keySet())) - .define("energy_block_storage", BatteryBlocks.initialPower(), o -> o instanceof ArrayList); + .define("energy_block_storage", BatteryBlocks.initialPower(), o -> o instanceof List); LITHIUM_ION_BATTERY_STORAGE = builder .define("lithium_ion_battery_storage", 1048576); @@ -161,18 +161,21 @@ public EnergyStorageConfig(ForgeConfigSpec.Builder builder) { } public int getCapacityFor(String code) { + if(code.contains(":")) code = code.substring(code.indexOf(':') + 1); if(code.equals("lithium_ion_cell")) { return LITHIUM_ION_BATTERY_STORAGE.get(); } - return BatteryBlocks.all().get(code).config().getStorage(); + BatteryBlocks.BatteryBlockPrefab prefab = BatteryBlocks.all().get(code); + if(prefab == null) return 0; + return prefab.config().getStorage(); } } public static class MiscConfig { - public final ForgeConfigSpec.ConfigValue DEBUG_LOG; + public final ModConfigSpec.ConfigValue DEBUG_LOG; - public MiscConfig(ForgeConfigSpec.Builder builder) { + public MiscConfig(ModConfigSpec.Builder builder) { builder.push("Misc"); DEBUG_LOG = builder @@ -198,18 +201,18 @@ public static GTCEUTier byId(int energyTier) { } } - public final ForgeConfigSpec.ConfigValue COMPATIBILITY; - public final ForgeConfigSpec.ConfigValue OVERCHARGE_EXPLOSIONS; - public final ForgeConfigSpec.ConfigValue LIMIT_FE_OUTPUT; - public final ForgeConfigSpec.ConfigValue FISSION_REACTOR_TIER; - public final ForgeConfigSpec.ConfigValue TURBINE_ENERGY_TIER; - public final ForgeConfigSpec.ConfigValue FUSION_REACTOR_ENERGY_TIER; - public final ForgeConfigSpec.ConfigValue KUGELBLITZ_ENERGY_TIER; - public final ForgeConfigSpec.ConfigValue ACCELERATORS_ENERGY_TIER; - public final ForgeConfigSpec.ConfigValue PROCESSOR_ENERGY_TIER; - public final ForgeConfigSpec.ConfigValue ENERGY_UPGRADES_NEEDED_TO_NEXT_TIER; - - public GTCEUCompatibilityConfig(ForgeConfigSpec.Builder builder) { + public final ModConfigSpec.EnumValue COMPATIBILITY; + public final ModConfigSpec.ConfigValue OVERCHARGE_EXPLOSIONS; + public final ModConfigSpec.ConfigValue LIMIT_FE_OUTPUT; + public final ModConfigSpec.EnumValue FISSION_REACTOR_TIER; + public final ModConfigSpec.EnumValue TURBINE_ENERGY_TIER; + public final ModConfigSpec.EnumValue FUSION_REACTOR_ENERGY_TIER; + public final ModConfigSpec.EnumValue KUGELBLITZ_ENERGY_TIER; + public final ModConfigSpec.EnumValue ACCELERATORS_ENERGY_TIER; + public final ModConfigSpec.EnumValue PROCESSOR_ENERGY_TIER; + public final ModConfigSpec.ConfigValue ENERGY_UPGRADES_NEEDED_TO_NEXT_TIER; + + public GTCEUCompatibilityConfig(ModConfigSpec.Builder builder) { builder.push("GregTech Energy Compatibility"); List tiers = Arrays.stream(GTCEUTier.values()) .map(GTCEUTier::name) @@ -224,7 +227,7 @@ public GTCEUCompatibilityConfig(ForgeConfigSpec.Builder builder) { FISSION_REACTOR_TIER = builder .comment("This only counts if GTCEU is supported") - .define("fission_reactor_energy_tier", EV); + .defineEnum("fission_reactor_energy_tier", EV); OVERCHARGE_EXPLOSIONS = builder .comment("This only counts if GTCEU is supported") @@ -240,23 +243,23 @@ public GTCEUCompatibilityConfig(ForgeConfigSpec.Builder builder) { TURBINE_ENERGY_TIER = builder .comment("This only counts if GTCEU is supported") - .define("turbine_energy_tier", EV); + .defineEnum("turbine_energy_tier", EV); FUSION_REACTOR_ENERGY_TIER = builder .comment("This only counts if GTCEU is supported") - .define("fusion_reactor_energy_tier", IV); + .defineEnum("fusion_reactor_energy_tier", IV); KUGELBLITZ_ENERGY_TIER = builder .comment("This only counts if GTCEU is supported") - .define("kugelblitz_energy_tier", LuV); + .defineEnum("kugelblitz_energy_tier", LuV); ACCELERATORS_ENERGY_TIER = builder .comment("This only counts if GTCEU is supported") - .define("accelerators_energy_tier", LuV); + .defineEnum("accelerators_energy_tier", LuV); PROCESSOR_ENERGY_TIER = builder .comment("This only counts if GTCEU is supported") - .define("processor_energy_tier", MV); + .defineEnum("processor_energy_tier", MV); ENERGY_UPGRADES_NEEDED_TO_NEXT_TIER = builder .comment("This only counts if GTCEU is supported") diff --git a/src/main/java/igentuman/nc/handler/config/FissionConfig.java b/src/main/java/igentuman/nc/handler/config/FissionConfig.java index 246ff727f..d211e8c9e 100644 --- a/src/main/java/igentuman/nc/handler/config/FissionConfig.java +++ b/src/main/java/igentuman/nc/handler/config/FissionConfig.java @@ -1,6 +1,6 @@ package igentuman.nc.handler.config; -import net.minecraftforge.common.ForgeConfigSpec; +import net.neoforged.neoforge.common.ModConfigSpec; import java.util.ArrayList; import java.util.Collection; @@ -11,11 +11,11 @@ public static List toList(Collection vals) { return new ArrayList<>(vals); } - private static final ForgeConfigSpec.Builder BUILDER = new ForgeConfigSpec.Builder(); + private static final ModConfigSpec.Builder BUILDER = new ModConfigSpec.Builder(); public static final FuelConfig FUEL_CONFIG = new FuelConfig(BUILDER); public static final FissionReactorConfig FISSION_CONFIG = new FissionReactorConfig(BUILDER); public static final MSRReactorConfig MSR_CONFIG = new MSRReactorConfig(BUILDER); - public static final ForgeConfigSpec spec = BUILDER.build(); + public static final ModConfigSpec spec = BUILDER.build(); private static boolean loaded = false; private static List loadActions = new ArrayList<>(); @@ -37,11 +37,11 @@ public static void onLoad(Runnable action) { } public static class FuelConfig { - public final ForgeConfigSpec.ConfigValue HEAT_MULTIPLIER; - public final ForgeConfigSpec.ConfigValue FUEL_HEAT_MULTIPLIER; - public final ForgeConfigSpec.ConfigValue DEPLETION_MULTIPLIER; + public final ModConfigSpec.ConfigValue HEAT_MULTIPLIER; + public final ModConfigSpec.ConfigValue FUEL_HEAT_MULTIPLIER; + public final ModConfigSpec.ConfigValue DEPLETION_MULTIPLIER; - public FuelConfig(ForgeConfigSpec.Builder builder) { + public FuelConfig(ModConfigSpec.Builder builder) { builder.comment("Settings for reactor fuel").push("reactor_fuel"); FUEL_HEAT_MULTIPLIER = builder @@ -62,22 +62,22 @@ public FuelConfig(ForgeConfigSpec.Builder builder) { } public static class FissionReactorConfig { - public final ForgeConfigSpec.ConfigValue MIN_SIZE; - public final ForgeConfigSpec.ConfigValue MAX_SIZE; - public final ForgeConfigSpec.ConfigValue HEAT_MULTIPLIER; - public final ForgeConfigSpec.ConfigValue HEAT_MULTIPLIER_CAP; - public final ForgeConfigSpec.ConfigValue MODERATOR_FE_MULTIPLIER; - public final ForgeConfigSpec.ConfigValue MODERATOR_HEAT_MULTIPLIER; - public final ForgeConfigSpec.ConfigValue EXPLOSION_RADIUS; - public final ForgeConfigSpec.ConfigValue HEAT_CAPACITY; - - public final ForgeConfigSpec.ConfigValue FE_GENERATION_MULTIPLIER; - public final ForgeConfigSpec.ConfigValue BOILING_MULTIPLIER; - public final ForgeConfigSpec.ConfigValue BOILING_ENABLED; - public final ForgeConfigSpec.ConfigValue ACTIVE_HEATSINK_PRIME; - public final ForgeConfigSpec.ConfigValue ACTIVE_HEATSINK_COOLANT_PER_TICK; - - public FissionReactorConfig(ForgeConfigSpec.Builder builder) { + public final ModConfigSpec.ConfigValue MIN_SIZE; + public final ModConfigSpec.ConfigValue MAX_SIZE; + public final ModConfigSpec.ConfigValue HEAT_MULTIPLIER; + public final ModConfigSpec.ConfigValue HEAT_MULTIPLIER_CAP; + public final ModConfigSpec.ConfigValue MODERATOR_FE_MULTIPLIER; + public final ModConfigSpec.ConfigValue MODERATOR_HEAT_MULTIPLIER; + public final ModConfigSpec.ConfigValue EXPLOSION_RADIUS; + public final ModConfigSpec.ConfigValue HEAT_CAPACITY; + + public final ModConfigSpec.ConfigValue FE_GENERATION_MULTIPLIER; + public final ModConfigSpec.ConfigValue BOILING_MULTIPLIER; + public final ModConfigSpec.ConfigValue BOILING_ENABLED; + public final ModConfigSpec.ConfigValue ACTIVE_HEATSINK_PRIME; + public final ModConfigSpec.ConfigValue ACTIVE_HEATSINK_COOLANT_PER_TICK; + + public FissionReactorConfig(ModConfigSpec.Builder builder) { builder.comment("Settings for Fission Reactor").push("fission_reactor"); MIN_SIZE = builder @@ -138,9 +138,9 @@ public FissionReactorConfig(ForgeConfigSpec.Builder builder) { } public static class MSRReactorConfig { - public final ForgeConfigSpec.ConfigValue PEBBLES_PER_FUEL_CELL; + public final ModConfigSpec.ConfigValue PEBBLES_PER_FUEL_CELL; - public MSRReactorConfig(ForgeConfigSpec.Builder builder) { + public MSRReactorConfig(ModConfigSpec.Builder builder) { builder.comment("Settings for Molten Salt Fission Reactor (MSR)").push("msr_reactor"); PEBBLES_PER_FUEL_CELL = builder diff --git a/src/main/java/igentuman/nc/handler/config/FusionConfig.java b/src/main/java/igentuman/nc/handler/config/FusionConfig.java index 639d86a01..eec9aaa11 100644 --- a/src/main/java/igentuman/nc/handler/config/FusionConfig.java +++ b/src/main/java/igentuman/nc/handler/config/FusionConfig.java @@ -2,7 +2,7 @@ import igentuman.nc.content.Electromagnets; import igentuman.nc.content.RFAmplifier; -import net.minecraftforge.common.ForgeConfigSpec; +import net.neoforged.neoforge.common.ModConfigSpec; import java.util.ArrayList; import java.util.Collection; @@ -13,11 +13,11 @@ public static List toList(Collection vals) { return new ArrayList<>(vals); } - private static final ForgeConfigSpec.Builder BUILDER = new ForgeConfigSpec.Builder(); + private static final ModConfigSpec.Builder BUILDER = new ModConfigSpec.Builder(); public static final FusionReactorConfig FUSION_CONFIG = new FusionReactorConfig(BUILDER); public static final ElectromagnetsConfig ELECTROMAGNETS_CONFIG = new ElectromagnetsConfig(BUILDER); public static final RFAmplifierConfig RF_AMPLIFIERS_CONFIG = new RFAmplifierConfig(BUILDER); - public static final ForgeConfigSpec spec = BUILDER.build(); + public static final ModConfigSpec spec = BUILDER.build(); private static boolean loaded = false; private static List loadActions = new ArrayList<>(); @@ -39,29 +39,29 @@ public static void onLoad(Runnable action) { } public static class RFAmplifierConfig { - public final ForgeConfigSpec.ConfigValue> REGISTERED; - public final ForgeConfigSpec.ConfigValue> POWER; - public final ForgeConfigSpec.ConfigValue> HEAT; - public final ForgeConfigSpec.ConfigValue> VOLTAGE; + public final ModConfigSpec.ConfigValue> REGISTERED; + public final ModConfigSpec.ConfigValue> POWER; + public final ModConfigSpec.ConfigValue> HEAT; + public final ModConfigSpec.ConfigValue> VOLTAGE; - public RFAmplifierConfig(ForgeConfigSpec.Builder builder) { + public RFAmplifierConfig(ModConfigSpec.Builder builder) { builder.comment("Settings for RF Amplifiers").push("rf_amplifiers"); REGISTERED = builder .comment("If RF Amplifier are registered.") - .define("registered", RFAmplifier.initialRegistered(), o -> o instanceof ArrayList); + .define("registered", RFAmplifier.initialRegistered(), o -> o instanceof List); POWER = builder .comment("Power consumption (FE/t): " + String.join(", ", RFAmplifier.all().keySet())) - .define("power", toList(RFAmplifier.initialPower()), o -> o instanceof ArrayList); + .define("power", toList(RFAmplifier.initialPower()), o -> o instanceof List); HEAT = builder .comment("Heat generation: " + String.join(", ", RFAmplifier.all().keySet())) - .define("heat", toList(RFAmplifier.initialHeat()), o -> o instanceof ArrayList); + .define("heat", toList(RFAmplifier.initialHeat()), o -> o instanceof List); VOLTAGE = builder .comment("Amplification Voltage: " + String.join(", ", RFAmplifier.all().keySet())) - .define("voltage", toList(RFAmplifier.initialVoltage()), o -> o instanceof ArrayList); + .define("voltage", toList(RFAmplifier.initialVoltage()), o -> o instanceof List); builder.pop(); } @@ -69,29 +69,29 @@ public RFAmplifierConfig(ForgeConfigSpec.Builder builder) { } public static class ElectromagnetsConfig { - public final ForgeConfigSpec.ConfigValue> REGISTERED; - public final ForgeConfigSpec.ConfigValue> POWER; - public final ForgeConfigSpec.ConfigValue> HEAT; - public final ForgeConfigSpec.ConfigValue> MAGNETIC_FIELD; + public final ModConfigSpec.ConfigValue> REGISTERED; + public final ModConfigSpec.ConfigValue> POWER; + public final ModConfigSpec.ConfigValue> HEAT; + public final ModConfigSpec.ConfigValue> MAGNETIC_FIELD; - public ElectromagnetsConfig(ForgeConfigSpec.Builder builder) { + public ElectromagnetsConfig(ModConfigSpec.Builder builder) { builder.comment("Settings for Electromagnets").push("electromagnets"); REGISTERED = builder .comment("If Electromagnets are registered.") - .define("registered", Electromagnets.initialRegistered(), o -> o instanceof ArrayList); + .define("registered", Electromagnets.initialRegistered(), o -> o instanceof List); POWER = builder .comment("Power consumption (FE/t): " + String.join(", ", Electromagnets.all().keySet())) - .define("power", toList(Electromagnets.initialPower()), o -> o instanceof ArrayList); + .define("power", toList(Electromagnets.initialPower()), o -> o instanceof List); HEAT = builder .comment("Heat generation: " + String.join(", ", Electromagnets.all().keySet())) - .define("heat", toList(Electromagnets.initialHeat()), o -> o instanceof ArrayList); + .define("heat", toList(Electromagnets.initialHeat()), o -> o instanceof List); MAGNETIC_FIELD = builder .comment("Magnetic field strength: " + String.join(", ", Electromagnets.all().keySet())) - .define("heat", toList(Electromagnets.initialMagneticField()), o -> o instanceof ArrayList); + .define("heat", toList(Electromagnets.initialMagneticField()), o -> o instanceof List); builder.pop(); } @@ -99,14 +99,14 @@ public ElectromagnetsConfig(ForgeConfigSpec.Builder builder) { } public static class FusionReactorConfig { - public final ForgeConfigSpec.ConfigValue MIN_SIZE; - public final ForgeConfigSpec.ConfigValue MAX_SIZE; - public final ForgeConfigSpec.ConfigValue MINIMAL_MAGNETIC_FIELD; - public final ForgeConfigSpec.ConfigValue RF_AMPLIFICATION_MULTIPLIER; - public final ForgeConfigSpec.ConfigValue PLASMA_TO_ENERGY_CONVERTION; - public final ForgeConfigSpec.ConfigValue EXPLOSION_RADIUS; - - public FusionReactorConfig(ForgeConfigSpec.Builder builder) { + public final ModConfigSpec.ConfigValue MIN_SIZE; + public final ModConfigSpec.ConfigValue MAX_SIZE; + public final ModConfigSpec.ConfigValue MINIMAL_MAGNETIC_FIELD; + public final ModConfigSpec.ConfigValue RF_AMPLIFICATION_MULTIPLIER; + public final ModConfigSpec.ConfigValue PLASMA_TO_ENERGY_CONVERTION; + public final ModConfigSpec.ConfigValue EXPLOSION_RADIUS; + + public FusionReactorConfig(ModConfigSpec.Builder builder) { builder.comment("Settings for Fusion Reactor").push("fusion_reactor"); MIN_SIZE = builder diff --git a/src/main/java/igentuman/nc/handler/config/INCConfig.java b/src/main/java/igentuman/nc/handler/config/INCConfig.java index f247e7799..f5e05b619 100644 --- a/src/main/java/igentuman/nc/handler/config/INCConfig.java +++ b/src/main/java/igentuman/nc/handler/config/INCConfig.java @@ -1,13 +1,13 @@ package igentuman.nc.handler.config; -import net.minecraftforge.common.ForgeConfigSpec; -import net.minecraftforge.fml.config.ModConfig; +import net.neoforged.neoforge.common.ModConfigSpec; +import net.neoforged.fml.config.ModConfig; public interface INCConfig { String getFileName(); - ForgeConfigSpec getConfigSpec(); + ModConfigSpec getConfigSpec(); ModConfig.Type getConfigType(); diff --git a/src/main/java/igentuman/nc/handler/config/KugelblitzConfig.java b/src/main/java/igentuman/nc/handler/config/KugelblitzConfig.java index 03ab623f7..3d541bd08 100644 --- a/src/main/java/igentuman/nc/handler/config/KugelblitzConfig.java +++ b/src/main/java/igentuman/nc/handler/config/KugelblitzConfig.java @@ -2,7 +2,7 @@ import igentuman.nc.recipes.ingredient.NcIngredient; import net.minecraft.resources.ResourceLocation; -import net.minecraftforge.common.ForgeConfigSpec; +import net.neoforged.neoforge.common.ModConfigSpec; import java.util.ArrayList; import java.util.Collection; @@ -13,9 +13,9 @@ public static List toList(Collection vals) { return new ArrayList<>(vals); } - private static final ForgeConfigSpec.Builder BUILDER = new ForgeConfigSpec.Builder(); + private static final ModConfigSpec.Builder BUILDER = new ModConfigSpec.Builder(); public static final GeneralConfig KUGELBLITZ_CONFIG = new GeneralConfig(BUILDER); - public static final ForgeConfigSpec spec = BUILDER.build(); + public static final ModConfigSpec spec = BUILDER.build(); private static boolean loaded = false; private static List loadActions = new ArrayList<>(); @@ -37,13 +37,13 @@ public static void onLoad(Runnable action) { } public static class GeneralConfig { - public final ForgeConfigSpec.ConfigValue LASER_DISTANCE; - public final ForgeConfigSpec.ConfigValue GENERATION_MULTIPLIER; - public final ForgeConfigSpec.ConfigValue EVAPORATION_MULTIPLIER; - public final ForgeConfigSpec.ConfigValue EXPL_CHARGE; - public final ForgeConfigSpec.ConfigValue BLACKHOLE_SHADER; + public final ModConfigSpec.ConfigValue LASER_DISTANCE; + public final ModConfigSpec.ConfigValue GENERATION_MULTIPLIER; + public final ModConfigSpec.ConfigValue EVAPORATION_MULTIPLIER; + public final ModConfigSpec.ConfigValue EXPL_CHARGE; + public final ModConfigSpec.ConfigValue BLACKHOLE_SHADER; - public GeneralConfig(ForgeConfigSpec.Builder builder) { + public GeneralConfig(ModConfigSpec.Builder builder) { builder.comment("Settings for Fusion Reactor").push("general"); BLACKHOLE_SHADER = builder diff --git a/src/main/java/igentuman/nc/handler/config/MaterialsConfig.java b/src/main/java/igentuman/nc/handler/config/MaterialsConfig.java index 1f6974cc2..d56be32e6 100644 --- a/src/main/java/igentuman/nc/handler/config/MaterialsConfig.java +++ b/src/main/java/igentuman/nc/handler/config/MaterialsConfig.java @@ -1,7 +1,7 @@ package igentuman.nc.handler.config; import igentuman.nc.content.materials.*; -import net.minecraftforge.common.ForgeConfigSpec; +import net.neoforged.neoforge.common.ModConfigSpec; import java.util.*; @@ -10,9 +10,9 @@ public static List toList(Collection vals) { return new ArrayList<>(vals); } - private static final ForgeConfigSpec.Builder BUILDER = new ForgeConfigSpec.Builder(); + private static final ModConfigSpec.Builder BUILDER = new ModConfigSpec.Builder(); public static final MaterialProductsConfig MATERIAL_PRODUCTS = new MaterialProductsConfig(BUILDER); - public static final ForgeConfigSpec spec = BUILDER.build(); + public static final ModConfigSpec spec = BUILDER.build(); private static boolean loaded = false; private static List loadActions = new ArrayList<>(); @@ -34,16 +34,16 @@ public static void onLoad(Runnable action) { } public static class MaterialProductsConfig { - public List> INGOTS; - public List> NUGGETS; - public List> BLOCK; - public List> RAW_CHUNKS; - public List> PLATES; - public List> DUSTS; - public List> GEMS; - public final ForgeConfigSpec.ConfigValue> MODS_PRIORITY; + public List> INGOTS; + public List> NUGGETS; + public List> BLOCK; + public List> RAW_CHUNKS; + public List> PLATES; + public List> DUSTS; + public List> GEMS; + public final ModConfigSpec.ConfigValue> MODS_PRIORITY; - public MaterialProductsConfig(ForgeConfigSpec.Builder builder) { + public MaterialProductsConfig(ModConfigSpec.Builder builder) { RAW_CHUNKS = registrationList(builder, "raw_chunks", Chunks.get().all().keySet()); INGOTS = registrationList(builder, "ingots", Ingots.get().all().keySet()); @@ -56,11 +56,11 @@ public MaterialProductsConfig(ForgeConfigSpec.Builder builder) { MODS_PRIORITY = builder .push("forge_tag_priority") .comment("Priority of mods to resolve forge tags to itemstack and fluidstack.") - .define("mods_priority", List.of("minecraft", "nuclearcraft", "mekanism", "immersiveengineering", "tconstruct"), o -> o instanceof ArrayList); + .define("mods_priority", List.of("minecraft", "nuclearcraft", "mekanism", "immersiveengineering", "tconstruct"), o -> o instanceof List); } - private List> registrationList(ForgeConfigSpec.Builder builder, String subCategory, Set items) { - List> rawOres = new ArrayList<>(); + private List> registrationList(ModConfigSpec.Builder builder, String subCategory, Set items) { + List> rawOres = new ArrayList<>(); builder.push(subCategory); for (String item : items) { rawOres.add(builder.define(item, true, o -> o instanceof Boolean)); diff --git a/src/main/java/igentuman/nc/handler/config/OreGenConfig.java b/src/main/java/igentuman/nc/handler/config/OreGenConfig.java index 44bd8477e..322b6eb06 100644 --- a/src/main/java/igentuman/nc/handler/config/OreGenConfig.java +++ b/src/main/java/igentuman/nc/handler/config/OreGenConfig.java @@ -1,7 +1,7 @@ package igentuman.nc.handler.config; import igentuman.nc.content.materials.*; -import net.minecraftforge.common.ForgeConfigSpec; +import net.neoforged.neoforge.common.ModConfigSpec; import java.util.*; @@ -10,9 +10,9 @@ public static List toList(Collection vals) { return new ArrayList<>(vals); } - private static final ForgeConfigSpec.Builder BUILDER = new ForgeConfigSpec.Builder(); + private static final ModConfigSpec.Builder BUILDER = new ModConfigSpec.Builder(); public static final OresConfig ORE_CONFIG = new OresConfig(BUILDER); - public static final ForgeConfigSpec spec = BUILDER.build(); + public static final ModConfigSpec spec = BUILDER.build(); private static boolean loaded = false; private static List loadActions = new ArrayList<>(); @@ -37,7 +37,7 @@ public static class OresConfig { public HashMap ORES; - public OresConfig(ForgeConfigSpec.Builder builder) { + public OresConfig(ModConfigSpec.Builder builder) { ORES = new HashMap<>(); for(String name: Ores.all().keySet()) { ORES.put(name, buildOreConfig(builder, name)); @@ -46,22 +46,22 @@ public OresConfig(ForgeConfigSpec.Builder builder) { public static class OreGenSpec { - public final ForgeConfigSpec.ConfigValue register; - public final ForgeConfigSpec.ConfigValue> dimensions; - public final ForgeConfigSpec.ConfigValue veinSize; - public final ForgeConfigSpec.ConfigValue min_height; - public final ForgeConfigSpec.ConfigValue max_height; + public final ModConfigSpec.ConfigValue register; + public final ModConfigSpec.ConfigValue> dimensions; + public final ModConfigSpec.ConfigValue veinSize; + public final ModConfigSpec.ConfigValue min_height; + public final ModConfigSpec.ConfigValue max_height; - OreGenSpec(ForgeConfigSpec.Builder builder, boolean register, List dimensions, int veinSize, int min_height, int max_height) { + OreGenSpec(ModConfigSpec.Builder builder, boolean register, List dimensions, int veinSize, int min_height, int max_height) { this.register = builder.define("register", register); - this.dimensions = builder.define("gen_dimensions", dimensions, o -> o instanceof ArrayList); + this.dimensions = builder.define("gen_dimensions", dimensions, o -> o instanceof List); this.veinSize = builder.defineInRange("vein_size", veinSize, 0, 64); this.min_height = builder.defineInRange("min_height", min_height, -64, 255); this.max_height = builder.defineInRange("max_height", max_height, -64, 255); } } - private OreGenSpec buildOreConfig(ForgeConfigSpec.Builder builder, String name) { + private OreGenSpec buildOreConfig(ModConfigSpec.Builder builder, String name) { builder.push(name).comment("Ore generation settings for " + name); int veinSize = Ores.all().get(name).veinSize; if(name.equals("platinum")) { diff --git a/src/main/java/igentuman/nc/handler/config/ProcessorsConfig.java b/src/main/java/igentuman/nc/handler/config/ProcessorsConfig.java index 17ff86a4e..56a6d9305 100644 --- a/src/main/java/igentuman/nc/handler/config/ProcessorsConfig.java +++ b/src/main/java/igentuman/nc/handler/config/ProcessorsConfig.java @@ -1,7 +1,7 @@ package igentuman.nc.handler.config; import igentuman.nc.content.processors.Processors; -import net.minecraftforge.common.ForgeConfigSpec; +import net.neoforged.neoforge.common.ModConfigSpec; import java.util.ArrayList; import java.util.Collection; @@ -13,10 +13,10 @@ public static List toList(Collection vals) { return new ArrayList<>(vals); } - private static final ForgeConfigSpec.Builder BUILDER = new ForgeConfigSpec.Builder(); + private static final ModConfigSpec.Builder BUILDER = new ModConfigSpec.Builder(); public static final ProcessorConfig PROCESSOR_CONFIG = new ProcessorConfig(BUILDER); public static final InSituLeachingConfig IN_SITU_LEACHING = new InSituLeachingConfig(BUILDER); - public static final ForgeConfigSpec spec = BUILDER.build(); + public static final ModConfigSpec spec = BUILDER.build(); private static boolean loaded = false; private static List loadActions = new ArrayList<>(); @@ -38,15 +38,15 @@ public static void onLoad(Runnable action) { } public static class InSituLeachingConfig { - public final ForgeConfigSpec.ConfigValue ENABLE_VEINS; - public final ForgeConfigSpec.ConfigValue> VEIN_BLOCKS_AMOUNT; - public final ForgeConfigSpec.ConfigValue VEINS_RARITY; - public final ForgeConfigSpec.ConfigValue RANDOMIZED_ORES; - public final ForgeConfigSpec.ConfigValue ADD_IE_VEINS; - public final ForgeConfigSpec.ConfigValue ALLOW_TO_LEACH_IE_VEINS; + public final ModConfigSpec.ConfigValue ENABLE_VEINS; + public final ModConfigSpec.ConfigValue> VEIN_BLOCKS_AMOUNT; + public final ModConfigSpec.ConfigValue VEINS_RARITY; + public final ModConfigSpec.ConfigValue RANDOMIZED_ORES; + public final ModConfigSpec.ConfigValue ADD_IE_VEINS; + public final ModConfigSpec.ConfigValue ALLOW_TO_LEACH_IE_VEINS; - public InSituLeachingConfig(ForgeConfigSpec.Builder builder) { + public InSituLeachingConfig(ModConfigSpec.Builder builder) { builder.comment("Settings for In situ leaching").push("in_situ_leaching"); ENABLE_VEINS = builder @@ -56,7 +56,7 @@ public InSituLeachingConfig(ForgeConfigSpec.Builder builder) { VEIN_BLOCKS_AMOUNT = builder .comment("Min and max values of blocks per vein.") .comment("Result amount will be random value in this range.") - .define("blocks_per_vein", List.of(30000, 70000), o -> o instanceof ArrayList); + .define("blocks_per_vein", List.of(30000, 70000), o -> o instanceof List); VEINS_RARITY = builder .comment("Veins rarity. Bigger value - less veins.") @@ -80,27 +80,27 @@ public InSituLeachingConfig(ForgeConfigSpec.Builder builder) { } public static class ProcessorConfig { - public final ForgeConfigSpec.ConfigValue GT_AMPERAGE; - public final ForgeConfigSpec.ConfigValue GT_SUPPORT; - public final ForgeConfigSpec.ConfigValue GT_EXPLODE; - public final ForgeConfigSpec.ConfigValue BASE_TIME; - public final ForgeConfigSpec.ConfigValue BASE_POWER; - public final ForgeConfigSpec.ConfigValue SKIP_TICKS; + public final ModConfigSpec.ConfigValue GT_AMPERAGE; + public final ModConfigSpec.ConfigValue GT_SUPPORT; + public final ModConfigSpec.ConfigValue GT_EXPLODE; + public final ModConfigSpec.ConfigValue BASE_TIME; + public final ModConfigSpec.ConfigValue BASE_POWER; + public final ModConfigSpec.ConfigValue SKIP_TICKS; public HashMap PROCESSOR_CONFIG; public static class ProcessorConfigSpec { - public final ForgeConfigSpec.ConfigValue register; - public final ForgeConfigSpec.ConfigValue base_power; - public final ForgeConfigSpec.ConfigValue base_time; + public final ModConfigSpec.ConfigValue register; + public final ModConfigSpec.ConfigValue base_power; + public final ModConfigSpec.ConfigValue base_time; - public ProcessorConfigSpec(ForgeConfigSpec.Builder builder, boolean register, int base_power, int base_time) { + public ProcessorConfigSpec(ModConfigSpec.Builder builder, boolean register, int base_power, int base_time) { this.register = builder.define("register", register); this.base_power = builder.define("base_power", base_power); this.base_time = builder.define("base_time", base_time); } } - public ProcessorConfig(ForgeConfigSpec.Builder builder) { + public ProcessorConfig(ModConfigSpec.Builder builder) { builder.push("Common settings"); BASE_TIME = builder .comment("Ticks") diff --git a/src/main/java/igentuman/nc/handler/config/RadiationConfig.java b/src/main/java/igentuman/nc/handler/config/RadiationConfig.java index c4524c1e7..65788b88d 100644 --- a/src/main/java/igentuman/nc/handler/config/RadiationConfig.java +++ b/src/main/java/igentuman/nc/handler/config/RadiationConfig.java @@ -1,6 +1,6 @@ package igentuman.nc.handler.config; -import net.minecraftforge.common.ForgeConfigSpec; +import net.neoforged.neoforge.common.ModConfigSpec; import java.util.ArrayList; import java.util.Collection; @@ -12,9 +12,9 @@ public static List toList(Collection vals) { return new ArrayList<>(vals); } - private static final ForgeConfigSpec.Builder BUILDER = new ForgeConfigSpec.Builder(); + private static final ModConfigSpec.Builder BUILDER = new ModConfigSpec.Builder(); public static final RadiationConf RADIATION_CONFIG = new RadiationConf(BUILDER); - public static final ForgeConfigSpec spec = BUILDER.build(); + public static final ModConfigSpec spec = BUILDER.build(); private static boolean loaded = false; private static List loadActions = new ArrayList<>(); @@ -36,18 +36,18 @@ public static void onLoad(Runnable action) { } public static class RadiationConf { - public final ForgeConfigSpec.ConfigValue ENABLED; - public final ForgeConfigSpec.ConfigValue NATURAL_RADIATION; - public final ForgeConfigSpec.ConfigValue DECAY_SPEED; - public final ForgeConfigSpec.ConfigValue DECAY_SPEED_FOR_PLAYER; - public final ForgeConfigSpec.ConfigValue GAIN_SPEED_FOR_PLAYER; - public final ForgeConfigSpec.ConfigValue> ITEM_RADIATION; - public final ForgeConfigSpec.ConfigValue> RADIATION_REMOVAL_ITEMS; - public final ForgeConfigSpec.ConfigValue> ARMOR_PROTECTION; - public final ForgeConfigSpec.ConfigValue> BIOME_RADIATION; - public final ForgeConfigSpec.ConfigValue> DIMENSION_RADIATION; - public final ForgeConfigSpec.ConfigValue RADIATION_UPDATE_INTERVAL; - public final ForgeConfigSpec.ConfigValue MEKANISM_RADIATION_INTEGRATION; + public final ModConfigSpec.ConfigValue ENABLED; + public final ModConfigSpec.ConfigValue NATURAL_RADIATION; + public final ModConfigSpec.ConfigValue DECAY_SPEED; + public final ModConfigSpec.ConfigValue DECAY_SPEED_FOR_PLAYER; + public final ModConfigSpec.ConfigValue GAIN_SPEED_FOR_PLAYER; + public final ModConfigSpec.ConfigValue> ITEM_RADIATION; + public final ModConfigSpec.ConfigValue> RADIATION_REMOVAL_ITEMS; + public final ModConfigSpec.ConfigValue> ARMOR_PROTECTION; + public final ModConfigSpec.ConfigValue> BIOME_RADIATION; + public final ModConfigSpec.ConfigValue> DIMENSION_RADIATION; + public final ModConfigSpec.ConfigValue RADIATION_UPDATE_INTERVAL; + public final ModConfigSpec.ConfigValue MEKANISM_RADIATION_INTEGRATION; protected HashMap biomeRadiationMap; public int biomeRadiation(String id) { @@ -86,7 +86,7 @@ public int dimensionRadiation(String id) return 0; } - public RadiationConf(ForgeConfigSpec.Builder builder) { + public RadiationConf(ModConfigSpec.Builder builder) { builder.comment("Settings for Radiation").push("radiation"); ENABLED = builder @@ -119,7 +119,7 @@ public RadiationConf(ForgeConfigSpec.Builder builder) { "nuclearcraft:moresmore|2500000000", "nuclearcraft:evenmoresmore|1000000000", "nuclearcraft:radaway|5000000000" - ), o -> o instanceof ArrayList); + ), o -> o instanceof List); ITEM_RADIATION = builder .comment("List of items what have radiation (pRad). Format: item_id|radiation") @@ -128,7 +128,7 @@ public RadiationConf(ForgeConfigSpec.Builder builder) { "mekanism:pellet_polonium|4000000", "mekanism:pellet_plutonium|2500000", "mekanism:reprocessed_fissile_fragment|1800000" - ), o -> o instanceof ArrayList); + ), o -> o instanceof List); ARMOR_PROTECTION = builder .comment("List of armor items and default shielding lvl. Format: item_id|radiation") @@ -149,15 +149,15 @@ public RadiationConf(ForgeConfigSpec.Builder builder) { "nuclearcraft:hev_chest|7", "nuclearcraft:hev_pants|6", "nuclearcraft:hev_boots|5" - ), o -> o instanceof ArrayList); + ), o -> o instanceof List); BIOME_RADIATION = builder .comment("Natural radiation per biome: uRad", "Format: biome_id|radiation") - .define("biome_radiation", List.of("nuclearcraft:wasteland|40000", "minecraft:nether_wastes|10000"), o -> o instanceof ArrayList); + .define("biome_radiation", List.of("nuclearcraft:wasteland|40000", "minecraft:nether_wastes|10000"), o -> o instanceof List); DIMENSION_RADIATION = builder .comment("Natural radiation per dimension: uRad", "Format: dim_id|radiation") - .define("dimension_radiation", List.of("nuclearcraft:wasteland|50000", "minecraft:the_nether|5000"), o -> o instanceof ArrayList); + .define("dimension_radiation", List.of("nuclearcraft:wasteland|50000", "minecraft:the_nether|5000"), o -> o instanceof List); RADIATION_UPDATE_INTERVAL = builder .comment("Interval between radiation updates in ticks. 20 ticks = 1 second.", "Bigger interval - less lag, but less accurate radiation decay.") diff --git a/src/main/java/igentuman/nc/handler/config/TurbineConfig.java b/src/main/java/igentuman/nc/handler/config/TurbineConfig.java index 5caaf51cf..e7a52a780 100644 --- a/src/main/java/igentuman/nc/handler/config/TurbineConfig.java +++ b/src/main/java/igentuman/nc/handler/config/TurbineConfig.java @@ -5,7 +5,7 @@ import igentuman.nc.content.energy.SolarPanels; import igentuman.nc.content.storage.BarrelBlocks; import igentuman.nc.multiblock.turbine.TurbineRegistration; -import net.minecraftforge.common.ForgeConfigSpec; +import net.neoforged.neoforge.common.ModConfigSpec; import java.util.ArrayList; import java.util.Collection; @@ -17,9 +17,9 @@ public static List toList(Collection vals) { return new ArrayList<>(vals); } - private static final ForgeConfigSpec.Builder BUILDER = new ForgeConfigSpec.Builder(); + private static final ModConfigSpec.Builder BUILDER = new ModConfigSpec.Builder(); public static final TurbineConf TURBINE_CONFIG = new TurbineConf(BUILDER); - public static final ForgeConfigSpec spec = BUILDER.build(); + public static final ModConfigSpec spec = BUILDER.build(); private static boolean loaded = false; private static List loadActions = new ArrayList<>(); @@ -41,14 +41,14 @@ public static void onLoad(Runnable action) { } public static class TurbineConf { - public final ForgeConfigSpec.ConfigValue MIN_SIZE; - public final ForgeConfigSpec.ConfigValue MAX_SIZE; - public final ForgeConfigSpec.ConfigValue ENERGY_GEN; - public final ForgeConfigSpec.ConfigValue BLADE_FLOW; - public final ForgeConfigSpec.ConfigValue> EFFICIENCY; - public HashMap>> PLACEMENT_RULES = new HashMap<>(); - - public TurbineConf(ForgeConfigSpec.Builder builder) { + public final ModConfigSpec.ConfigValue MIN_SIZE; + public final ModConfigSpec.ConfigValue MAX_SIZE; + public final ModConfigSpec.ConfigValue ENERGY_GEN; + public final ModConfigSpec.ConfigValue BLADE_FLOW; + public final ModConfigSpec.ConfigValue> EFFICIENCY; + public HashMap>> PLACEMENT_RULES = new HashMap<>(); + + public TurbineConf(ModConfigSpec.Builder builder) { builder.comment("Settings for Turbine").push("turbine"); MIN_SIZE = builder @@ -69,7 +69,7 @@ public TurbineConf(ForgeConfigSpec.Builder builder) { EFFICIENCY = builder .comment("Efficiency %: " + String.join(", ", TurbineRegistration.initialEfficiency().keySet())) - .define("efficiency", toList(TurbineRegistration.initialEfficiency().values()), o -> o instanceof ArrayList); + .define("efficiency", toList(TurbineRegistration.initialEfficiency().values()), o -> o instanceof List); builder .comment("You can define blocks by block_name. So copper_turbine_coil will fall back to nuclearcraft:copper_turbine_coil. Or qualify it with namespace like some_mod:some_block.") @@ -88,7 +88,7 @@ public TurbineConf(ForgeConfigSpec.Builder builder) { for(String name: TurbineRegistration.coils().keySet()) { if(name.contains("empty")) continue; PLACEMENT_RULES.put(name, builder - .define(name, TurbineRegistration.initialPlacementRules(name), o -> o instanceof ArrayList)); + .define(name, TurbineRegistration.initialPlacementRules(name), o -> o instanceof List)); } builder.pop(); @@ -97,36 +97,36 @@ public TurbineConf(ForgeConfigSpec.Builder builder) { } public static class EnergyGenerationConfig { - public final ForgeConfigSpec.ConfigValue> REGISTER_SOLAR_PANELS; - public final ForgeConfigSpec.ConfigValue> SOLAR_PANELS_GENERATION; - public final ForgeConfigSpec.ConfigValue> REGISTER_RTG; - public final ForgeConfigSpec.ConfigValue> RTG_GENERATION; - public final ForgeConfigSpec.ConfigValue> RTG_RADIATION; - public final ForgeConfigSpec.ConfigValue STEAM_TURBINE; + public final ModConfigSpec.ConfigValue> REGISTER_SOLAR_PANELS; + public final ModConfigSpec.ConfigValue> SOLAR_PANELS_GENERATION; + public final ModConfigSpec.ConfigValue> REGISTER_RTG; + public final ModConfigSpec.ConfigValue> RTG_GENERATION; + public final ModConfigSpec.ConfigValue> RTG_RADIATION; + public final ModConfigSpec.ConfigValue STEAM_TURBINE; - public EnergyGenerationConfig(ForgeConfigSpec.Builder builder) { + public EnergyGenerationConfig(ModConfigSpec.Builder builder) { builder.push("energy_generation"); REGISTER_SOLAR_PANELS = builder .comment("Allow panel registration: " + String.join(", ", SolarPanels.all().keySet())) - .define("register_panel", SolarPanels.initialRegistered(), o -> o instanceof ArrayList); + .define("register_panel", SolarPanels.initialRegistered(), o -> o instanceof List); SOLAR_PANELS_GENERATION = builder .comment("Panel power generation: " + String.join(", ", SolarPanels.all().keySet())) - .define("panel_power", SolarPanels.initialPower(), o -> o instanceof ArrayList); + .define("panel_power", SolarPanels.initialPower(), o -> o instanceof List); REGISTER_RTG = builder .comment("Allow rtg registration: " + String.join(", ", RTGs.all().keySet())) - .define("register_panel", RTGs.initialRegistered(), o -> o instanceof ArrayList); + .define("register_panel", RTGs.initialRegistered(), o -> o instanceof List); RTG_GENERATION = builder .comment("rtg generation: " + String.join(", ", RTGs.all().keySet())) - .define("rtg_power", RTGs.initialPower(), o -> o instanceof ArrayList); + .define("rtg_power", RTGs.initialPower(), o -> o instanceof List); RTG_RADIATION = builder .comment("rtg radiation: " + String.join(", ", RTGs.all().keySet())) - .define("rtg_radiation", RTGs.initialRadiation(), o -> o instanceof ArrayList); + .define("rtg_radiation", RTGs.initialRadiation(), o -> o instanceof List); STEAM_TURBINE = builder .comment("Steam turbine (one block) base power gen") @@ -137,20 +137,20 @@ public EnergyGenerationConfig(ForgeConfigSpec.Builder builder) { } public static class StorageBlocksConfig { - public final ForgeConfigSpec.ConfigValue> REGISTER_BARREL; - public final ForgeConfigSpec.ConfigValue> BARREL_CAPACITY; + public final ModConfigSpec.ConfigValue> REGISTER_BARREL; + public final ModConfigSpec.ConfigValue> BARREL_CAPACITY; - public StorageBlocksConfig(ForgeConfigSpec.Builder builder) { + public StorageBlocksConfig(ModConfigSpec.Builder builder) { builder.push("storage_blocks") .comment("Blocks to store items, fluids, etc..."); REGISTER_BARREL = builder .comment("Allow barrel registration: " + String.join(", ", BarrelBlocks.all().keySet())) - .define("energy_block_registration", BarrelBlocks.initialRegistered(), o -> o instanceof ArrayList); + .define("energy_block_registration", BarrelBlocks.initialRegistered(), o -> o instanceof List); BARREL_CAPACITY = builder .comment("Barrel capacity in Buckets: " + String.join(", ", BarrelBlocks.all().keySet())) - .define("barrel_capacity", BarrelBlocks.initialCapacity(), o -> o instanceof ArrayList); + .define("barrel_capacity", BarrelBlocks.initialCapacity(), o -> o instanceof List); builder.pop(); @@ -162,22 +162,22 @@ public int getLiquidCapacityFor(String code) { } public static class EnergyStorageConfig { - public final ForgeConfigSpec.ConfigValue> REGISTER_ENERGY_BLOCK; - public final ForgeConfigSpec.ConfigValue> ENERGY_BLOCK_STORAGE; - public final ForgeConfigSpec.ConfigValue LITHIUM_ION_BATTERY_STORAGE; - public final ForgeConfigSpec.ConfigValue QNP_ENERGY_STORAGE; - public final ForgeConfigSpec.ConfigValue QNP_ENERGY_PER_BLOCK; + public final ModConfigSpec.ConfigValue> REGISTER_ENERGY_BLOCK; + public final ModConfigSpec.ConfigValue> ENERGY_BLOCK_STORAGE; + public final ModConfigSpec.ConfigValue LITHIUM_ION_BATTERY_STORAGE; + public final ModConfigSpec.ConfigValue QNP_ENERGY_STORAGE; + public final ModConfigSpec.ConfigValue QNP_ENERGY_PER_BLOCK; - public EnergyStorageConfig(ForgeConfigSpec.Builder builder) { + public EnergyStorageConfig(ModConfigSpec.Builder builder) { builder.push("energy_storage"); REGISTER_ENERGY_BLOCK = builder .comment("Allow block registration: " + String.join(", ", BatteryBlocks.all().keySet())) - .define("energy_block_registration", BatteryBlocks.initialRegistered(), o -> o instanceof ArrayList); + .define("energy_block_registration", BatteryBlocks.initialRegistered(), o -> o instanceof List); ENERGY_BLOCK_STORAGE = builder .comment("Storage: " + String.join(", ", BatteryBlocks.all().keySet())) - .define("energy_block_storage", BatteryBlocks.initialPower(), o -> o instanceof ArrayList); + .define("energy_block_storage", BatteryBlocks.initialPower(), o -> o instanceof List); LITHIUM_ION_BATTERY_STORAGE = builder .define("lithium_ion_battery_storage", 1000000); diff --git a/src/main/java/igentuman/nc/handler/config/WorldConfig.java b/src/main/java/igentuman/nc/handler/config/WorldConfig.java index bb7e1cf73..c738566fc 100644 --- a/src/main/java/igentuman/nc/handler/config/WorldConfig.java +++ b/src/main/java/igentuman/nc/handler/config/WorldConfig.java @@ -1,6 +1,6 @@ package igentuman.nc.handler.config; -import net.minecraftforge.common.ForgeConfigSpec; +import net.neoforged.neoforge.common.ModConfigSpec; import java.util.ArrayList; import java.util.Collection; @@ -13,11 +13,11 @@ public static List toList(Collection vals) { return new ArrayList<>(vals); } - private static final ForgeConfigSpec.Builder BUILDER = new ForgeConfigSpec.Builder(); + private static final ModConfigSpec.Builder BUILDER = new ModConfigSpec.Builder(); public static final DimensionConfig DIMENSION_CONFIG = new DimensionConfig(BUILDER); public static final VillageConfig VILLAGE_CONFIG = new VillageConfig(BUILDER); public static final BiomeConfig BIOME_CONFIG = new BiomeConfig(BUILDER); - public static final ForgeConfigSpec spec = BUILDER.build(); + public static final ModConfigSpec spec = BUILDER.build(); private static boolean loaded = false; private static List loadActions = new ArrayList<>(); @@ -39,10 +39,10 @@ public static void onLoad(Runnable action) { } public static class VillageConfig { - public final ForgeConfigSpec.ConfigValue generateScientistHouse; - public final ForgeConfigSpec.ConfigValue addWandererTrades; + public final ModConfigSpec.ConfigValue generateScientistHouse; + public final ModConfigSpec.ConfigValue addWandererTrades; - public VillageConfig(ForgeConfigSpec.Builder builder) { + public VillageConfig(ModConfigSpec.Builder builder) { builder.push("Villages"); generateScientistHouse = builder .comment("Generate Scientist House in Villages") @@ -55,9 +55,9 @@ public VillageConfig(ForgeConfigSpec.Builder builder) { } public static class DimensionConfig { - public final ForgeConfigSpec.ConfigValue registerWasteland; + public final ModConfigSpec.ConfigValue registerWasteland; - public DimensionConfig(ForgeConfigSpec.Builder builder) { + public DimensionConfig(ModConfigSpec.Builder builder) { builder.push("Dimension"); registerWasteland = builder .comment("Register Wasteland Dimension") @@ -67,9 +67,9 @@ public DimensionConfig(ForgeConfigSpec.Builder builder) { } public static class BiomeConfig { - public final ForgeConfigSpec.ConfigValue registerWasteland; + public final ModConfigSpec.ConfigValue registerWasteland; - public BiomeConfig(ForgeConfigSpec.Builder builder) { + public BiomeConfig(ModConfigSpec.Builder builder) { builder.push("Biome"); registerWasteland = builder .comment("Generate Wasteland Biome in Overworld") diff --git a/src/main/java/igentuman/nc/handler/event/client/BlockOverlayHandler.java b/src/main/java/igentuman/nc/handler/event/client/BlockOverlayHandler.java index 3c79e71c7..53ebfe111 100644 --- a/src/main/java/igentuman/nc/handler/event/client/BlockOverlayHandler.java +++ b/src/main/java/igentuman/nc/handler/event/client/BlockOverlayHandler.java @@ -3,6 +3,7 @@ import com.mojang.blaze3d.systems.RenderSystem; import com.mojang.blaze3d.vertex.*; import igentuman.api.nc.SideModeToggleable; +import igentuman.api.platform.NCRendering; import igentuman.nc.block.entity.NuclearCraftBE; import igentuman.nc.block.fission.entity.FissionControllerBE; import igentuman.nc.block.fusion.entity.FusionCoreBE; @@ -12,9 +13,9 @@ import net.minecraft.client.Camera; import net.minecraft.client.CameraType; import net.minecraft.client.Minecraft; -import net.minecraft.client.renderer.GameRenderer; import net.minecraft.client.renderer.LevelRenderer; import net.minecraft.client.renderer.MultiBufferSource; +import net.minecraft.client.renderer.GameRenderer; import net.minecraft.client.renderer.RenderType; import net.minecraft.client.renderer.texture.OverlayTexture; import net.minecraft.core.BlockPos; @@ -28,15 +29,15 @@ import net.minecraft.world.phys.*; import net.minecraft.world.phys.shapes.Shapes; import net.minecraft.world.phys.shapes.VoxelShape; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.client.event.RenderHighlightEvent; -import net.minecraftforge.client.event.RenderLevelStageEvent; -import net.minecraftforge.client.event.RenderPlayerEvent; -import net.minecraftforge.common.MinecraftForge; -import net.minecraftforge.eventbus.api.SubscribeEvent; -import net.minecraftforge.fluids.IFluidBlock; -import net.minecraftforge.fml.common.Mod; -import net.minecraftforge.fml.event.lifecycle.FMLClientSetupEvent; +import net.neoforged.api.distmarker.Dist; +import net.neoforged.neoforge.client.event.RenderHighlightEvent; +import net.neoforged.neoforge.client.event.RenderLevelStageEvent; +import net.neoforged.neoforge.client.event.RenderPlayerEvent; +import net.neoforged.neoforge.common.NeoForge; +import net.neoforged.bus.api.SubscribeEvent; +import net.neoforged.fml.common.EventBusSubscriber; +import net.neoforged.fml.common.Mod; +import net.neoforged.fml.event.lifecycle.FMLClientSetupEvent; import org.apache.commons.lang3.tuple.Pair; import org.joml.Matrix3f; import org.joml.Matrix4f; @@ -55,7 +56,7 @@ import static igentuman.nc.util.AreaUtil.getArea; import static igentuman.nc.util.StackUtils.isMultiTool; -@Mod.EventBusSubscriber(modid = MODID, value = Dist.CLIENT) +@EventBusSubscriber(modid = MODID, value = Dist.CLIENT) public class BlockOverlayHandler { private static int outlineCooldown = 5; @@ -64,8 +65,8 @@ public class BlockOverlayHandler { public final static HashList reactors = new HashList<>(); public static void register(FMLClientSetupEvent event) { - MinecraftForge.EVENT_BUS.addListener(BlockOverlayHandler::blockOverlayEvent); - MinecraftForge.EVENT_BUS.addListener(BlockOverlayHandler::onRenderPre); + NeoForge.EVENT_BUS.addListener(BlockOverlayHandler::blockOverlayEvent); + NeoForge.EVENT_BUS.addListener(BlockOverlayHandler::onRenderPre); } @SubscribeEvent @@ -196,7 +197,7 @@ private static void handleQNP(RenderHighlightEvent.Block event, HitResult hit, I VertexConsumer builder = Minecraft.getInstance().renderBuffers().outlineBufferSource().getBuffer(RenderType.lines()); BlockPos.betweenClosed(area.getLeft(), area.getRight()).forEach(blockPos -> { VoxelShape shape = world.getBlockState(blockPos).getShape(world, blockPos); - if (shape != null && !shape.isEmpty() && !world.isEmptyBlock(blockPos) && world.getBlockState(blockPos).getDestroySpeed(world, blockPos) >= 0 && !(world.getBlockState(blockPos).getBlock() instanceof IFluidBlock) && !(world.getBlockState(blockPos).getBlock() instanceof LiquidBlock)) { + if (shape != null && !shape.isEmpty() && !world.isEmptyBlock(blockPos) && world.getBlockState(blockPos).getDestroySpeed(world, blockPos) >= 0 && !(world.getBlockState(blockPos).getBlock() instanceof LiquidBlock)) { LevelRenderer.renderLineBox(stack, builder, shape.bounds().move(blockPos.getX() - d0, blockPos.getY() - d1, blockPos.getZ() - d2), 0, 0, 0, 0.35F); } }); @@ -237,14 +238,12 @@ private static void drawShapeOutline(PoseStack matrixStack, VoxelShape voxelShap VertexConsumer bufferIn = renderTypeBuffer.getBuffer(RenderType.lines()); voxelShape.forAllEdges((x0, y0, z0, x1, y1, z1) -> { if (!pos.equals(aimed)){ - bufferIn.vertex(pose.pose(), (float) (x0 + originX), (float) (y0 + originY), (float) (z0 + originZ)) - .color(red, green, blue, alpha) - .normal(pose.normal(), (float) (x1-x0), (float) (y1-y0), (float) (z1-z0)) - .endVertex(); - bufferIn.vertex(pose.pose(), (float) (x1 + originX), (float) (y1 + originY), (float) (z1 + originZ)) - .color(red, green, blue, alpha) - .normal(pose.normal(), (float) (x1-x0), (float) (y1-y0), (float) (z1-z0)) - .endVertex(); + bufferIn.addVertex(pose.pose(), (float) (x0 + originX), (float) (y0 + originY), (float) (z0 + originZ)) + .setColor(red, green, blue, alpha) + .setNormal(pose, (float) (x1-x0), (float) (y1-y0), (float) (z1-z0)); + bufferIn.addVertex(pose.pose(), (float) (x1 + originX), (float) (y1 + originY), (float) (z1 + originZ)) + .setColor(red, green, blue, alpha) + .setNormal(pose, (float) (x1-x0), (float) (y1-y0), (float) (z1-z0)); } }); @@ -255,7 +254,6 @@ private static void drawShapeOutline(PoseStack matrixStack, VoxelShape voxelShap public static void renderFilledBox(PoseStack poseStack, AABB box, float r, float g, float b, float alpha, BlockPos pos, BlockPos player) { RenderSystem.enableBlend(); RenderSystem.defaultBlendFunc(); - RenderSystem.setShader(GameRenderer::getPositionColorShader); // Get camera position for proper translation Vec3 cam = Minecraft.getInstance().gameRenderer.getMainCamera().getPosition(); @@ -268,11 +266,6 @@ public static void renderFilledBox(PoseStack poseStack, AABB box, float r, float // Just translate relative to camera poseStack.translate(-camX, -camY, -camZ); - Tesselator tesselator = Tesselator.getInstance(); - BufferBuilder buffer = tesselator.getBuilder(); - - buffer.begin(VertexFormat.Mode.QUADS, DefaultVertexFormat.POSITION_COLOR); - Matrix4f matrix = poseStack.last().pose(); // Use the box coordinates directly - they're already in world space @@ -283,43 +276,43 @@ public static void renderFilledBox(PoseStack poseStack, AABB box, float r, float float y2 = (float) box.maxY; float z2 = (float) box.maxZ; - // Bottom face - buffer.vertex(matrix, x1, y1, z1).color(r, g, b, alpha).endVertex(); - buffer.vertex(matrix, x2, y1, z1).color(r, g, b, alpha).endVertex(); - buffer.vertex(matrix, x2, y1, z2).color(r, g, b, alpha).endVertex(); - buffer.vertex(matrix, x1, y1, z2).color(r, g, b, alpha).endVertex(); - - // Top face - buffer.vertex(matrix, x1, y2, z1).color(r, g, b, alpha).endVertex(); - buffer.vertex(matrix, x1, y2, z2).color(r, g, b, alpha).endVertex(); - buffer.vertex(matrix, x2, y2, z2).color(r, g, b, alpha).endVertex(); - buffer.vertex(matrix, x2, y2, z1).color(r, g, b, alpha).endVertex(); - - // North - buffer.vertex(matrix, x1, y1, z1).color(r, g, b, alpha).endVertex(); - buffer.vertex(matrix, x1, y2, z1).color(r, g, b, alpha).endVertex(); - buffer.vertex(matrix, x2, y2, z1).color(r, g, b, alpha).endVertex(); - buffer.vertex(matrix, x2, y1, z1).color(r, g, b, alpha).endVertex(); - - // South - buffer.vertex(matrix, x2, y1, z2).color(r, g, b, alpha).endVertex(); - buffer.vertex(matrix, x2, y2, z2).color(r, g, b, alpha).endVertex(); - buffer.vertex(matrix, x1, y2, z2).color(r, g, b, alpha).endVertex(); - buffer.vertex(matrix, x1, y1, z2).color(r, g, b, alpha).endVertex(); - - // West - buffer.vertex(matrix, x1, y1, z2).color(r, g, b, alpha).endVertex(); - buffer.vertex(matrix, x1, y2, z2).color(r, g, b, alpha).endVertex(); - buffer.vertex(matrix, x1, y2, z1).color(r, g, b, alpha).endVertex(); - buffer.vertex(matrix, x1, y1, z1).color(r, g, b, alpha).endVertex(); - - // East - buffer.vertex(matrix, x2, y1, z1).color(r, g, b, alpha).endVertex(); - buffer.vertex(matrix, x2, y2, z1).color(r, g, b, alpha).endVertex(); - buffer.vertex(matrix, x2, y2, z2).color(r, g, b, alpha).endVertex(); - buffer.vertex(matrix, x2, y1, z2).color(r, g, b, alpha).endVertex(); - - tesselator.end(); + NCRendering.draw(VertexFormat.Mode.QUADS, DefaultVertexFormat.POSITION_COLOR, buffer -> { + // Bottom face + buffer.addVertex(matrix, x1, y1, z1).setColor(r, g, b, alpha); + buffer.addVertex(matrix, x2, y1, z1).setColor(r, g, b, alpha); + buffer.addVertex(matrix, x2, y1, z2).setColor(r, g, b, alpha); + buffer.addVertex(matrix, x1, y1, z2).setColor(r, g, b, alpha); + + // Top face + buffer.addVertex(matrix, x1, y2, z1).setColor(r, g, b, alpha); + buffer.addVertex(matrix, x1, y2, z2).setColor(r, g, b, alpha); + buffer.addVertex(matrix, x2, y2, z2).setColor(r, g, b, alpha); + buffer.addVertex(matrix, x2, y2, z1).setColor(r, g, b, alpha); + + // North + buffer.addVertex(matrix, x1, y1, z1).setColor(r, g, b, alpha); + buffer.addVertex(matrix, x1, y2, z1).setColor(r, g, b, alpha); + buffer.addVertex(matrix, x2, y2, z1).setColor(r, g, b, alpha); + buffer.addVertex(matrix, x2, y1, z1).setColor(r, g, b, alpha); + + // South + buffer.addVertex(matrix, x2, y1, z2).setColor(r, g, b, alpha); + buffer.addVertex(matrix, x2, y2, z2).setColor(r, g, b, alpha); + buffer.addVertex(matrix, x1, y2, z2).setColor(r, g, b, alpha); + buffer.addVertex(matrix, x1, y1, z2).setColor(r, g, b, alpha); + + // West + buffer.addVertex(matrix, x1, y1, z2).setColor(r, g, b, alpha); + buffer.addVertex(matrix, x1, y2, z2).setColor(r, g, b, alpha); + buffer.addVertex(matrix, x1, y2, z1).setColor(r, g, b, alpha); + buffer.addVertex(matrix, x1, y1, z1).setColor(r, g, b, alpha); + + // East + buffer.addVertex(matrix, x2, y1, z1).setColor(r, g, b, alpha); + buffer.addVertex(matrix, x2, y2, z1).setColor(r, g, b, alpha); + buffer.addVertex(matrix, x2, y2, z2).setColor(r, g, b, alpha); + buffer.addVertex(matrix, x2, y1, z2).setColor(r, g, b, alpha); + }); // Pop the matrix stack to restore previous state poseStack.popPose(); @@ -378,13 +371,13 @@ public void addQuad(Matrix4f matrixPos, Matrix3f matrixNormal, VertexConsumer re static void addQuadVertex(Matrix4f matrixPos, Matrix3f matrixNormal, VertexConsumer renderBuffer, Vector3f pos, Vec2 texUV, Vector3f normalVector, Color color, int lightmapValue) { - renderBuffer.vertex(matrixPos, pos.x(), pos.y(), pos.z()) // position coordinate - .color(color.getRed(), color.getGreen(), color.getBlue(), color.getAlpha()) // color - .uv(texUV.x, texUV.y) // texel coordinate - .overlayCoords(OverlayTexture.NO_OVERLAY) // only relevant for rendering Entities (Living) - .uv2(lightmapValue) // lightmap with full brightness - .normal(matrixNormal, normalVector.x(), normalVector.y(), normalVector.z()) - .endVertex(); + Vector3f transformedNormal = matrixNormal.transform(new Vector3f(normalVector)); + renderBuffer.addVertex(matrixPos, pos.x(), pos.y(), pos.z()) + .setColor(color.getRed(), color.getGreen(), color.getBlue(), color.getAlpha()) + .setUv(texUV.x, texUV.y) + .setOverlay(OverlayTexture.NO_OVERLAY) + .setUv2(lightmapValue & 0xFFFF, lightmapValue >> 16 & 0xFFFF) + .setNormal(transformedNormal.x(), transformedNormal.y(), transformedNormal.z()); } public static void addFusionReactor(BlockPos pos) { diff --git a/src/main/java/igentuman/nc/handler/event/client/ColorHandler.java b/src/main/java/igentuman/nc/handler/event/client/ColorHandler.java index 942e7765d..c31b43ddf 100644 --- a/src/main/java/igentuman/nc/handler/event/client/ColorHandler.java +++ b/src/main/java/igentuman/nc/handler/event/client/ColorHandler.java @@ -1,57 +1,51 @@ package igentuman.nc.handler.event.client; import igentuman.nc.setup.registration.NCFluids; -import net.minecraft.client.color.block.BlockColor; -import net.minecraft.client.color.block.BlockColors; import net.minecraft.client.color.item.ItemColor; -import net.minecraft.client.renderer.ItemBlockRenderTypes; -import net.minecraft.client.renderer.RenderType; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.client.event.RegisterColorHandlersEvent; -import net.minecraftforge.client.model.DynamicFluidContainerModel; -import net.minecraftforge.common.MinecraftForge; -import net.minecraftforge.eventbus.api.SubscribeEvent; -import net.minecraftforge.fml.common.Mod; -import net.minecraftforge.fml.event.lifecycle.FMLClientSetupEvent; +import net.minecraft.world.item.BucketItem; +import net.neoforged.api.distmarker.Dist; +import net.neoforged.neoforge.client.event.RegisterColorHandlersEvent; +import net.neoforged.neoforge.client.extensions.common.IClientFluidTypeExtensions; +import net.neoforged.neoforge.client.extensions.common.RegisterClientExtensionsEvent; +import net.neoforged.neoforge.fluids.FluidType; +import net.neoforged.neoforge.fluids.FluidUtil; +import net.neoforged.bus.api.SubscribeEvent; +import net.neoforged.fml.common.EventBusSubscriber; +import net.neoforged.neoforge.registries.DeferredHolder; + +import java.util.Map; import static igentuman.nc.NuclearCraft.MODID; -import static igentuman.nc.setup.registration.NCFluids.ALL_FLUID_ENTRIES; import static igentuman.nc.setup.registration.NCFluids.NC_MATERIALS; -import static net.minecraft.world.level.block.Blocks.WATER; -@Mod.EventBusSubscriber(modid = MODID, value = Dist.CLIENT, bus = Mod.EventBusSubscriber.Bus.MOD) +@EventBusSubscriber(modid = MODID, value = Dist.CLIENT, bus = EventBusSubscriber.Bus.MOD) public class ColorHandler { - public static void register(FMLClientSetupEvent event) { - MinecraftForge.EVENT_BUS.addListener(ColorHandler::registerItemColorHandlers); - MinecraftForge.EVENT_BUS.addListener(ColorHandler::registerBlockColorHandlers); - } - @SubscribeEvent - public static void registerItemColorHandlers(RegisterColorHandlersEvent.Item event) { - registerBucketColorHandler(event); - } @SubscribeEvent - public static void onClientSetup(FMLClientSetupEvent event) - { - for(String gas: NCFluids.NC_GASES.keySet()) { - ItemBlockRenderTypes.setRenderLayer(ALL_FLUID_ENTRIES.get(gas).getFlowing(), RenderType.translucent()); - } - - for(String fluid: NC_MATERIALS.keySet()) { - if(fluid.contains("molten")) return; - ItemBlockRenderTypes.setRenderLayer(NC_MATERIALS.get(fluid).getStill(), RenderType.translucent()); - ItemBlockRenderTypes.setRenderLayer(NC_MATERIALS.get(fluid).getFlowing(), RenderType.translucent()); + public static void registerClientExtensions(RegisterClientExtensionsEvent event) { + for (Map.Entry, IClientFluidTypeExtensions> entry : + NCFluids.CLIENT_EXTENSIONS.entrySet()) { + event.registerFluidType(entry.getValue(), entry.getKey().get()); } } @SubscribeEvent - public static void registerBlockColorHandlers(RegisterColorHandlersEvent.Block event) { - for (String name: NCFluids.NC_GASES.keySet()) { + public static void registerItemColorHandlers(RegisterColorHandlersEvent.Item event) { + registerBucketColorHandler(event); + } + // Look up bucket color directly by item identity from FluidEntry registry. + private static final ItemColor BUCKET_ITEM_COLOR = (stack, tintIndex) -> { + if (tintIndex != 1) return 0xFFFFFFFF; + net.minecraft.world.item.Item item = stack.getItem(); + for (NCFluids.FluidEntry entry : NCFluids.ALL_FLUID_ENTRIES.values()) { + if (entry.getBucket() == item) { + return entry.color() | 0xFF000000; + } } - } + return 0xFFFFFFFF; + }; - private static final ItemColor BUCKET_ITEM_COLOR = new DynamicFluidContainerModel.Colors(); public static void registerBucketColorHandler(RegisterColorHandlersEvent.Item event) { for (String name: NC_MATERIALS.keySet()) { event.register(BUCKET_ITEM_COLOR, NC_MATERIALS.get(name).getBucket()); diff --git a/src/main/java/igentuman/nc/handler/event/client/InputEvents.java b/src/main/java/igentuman/nc/handler/event/client/InputEvents.java index 3af58afae..eae49735b 100644 --- a/src/main/java/igentuman/nc/handler/event/client/InputEvents.java +++ b/src/main/java/igentuman/nc/handler/event/client/InputEvents.java @@ -1,26 +1,26 @@ package igentuman.nc.handler.event.client; import com.mojang.blaze3d.platform.InputConstants; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.client.event.InputEvent; -import net.minecraftforge.client.event.ScreenEvent; -import net.minecraftforge.common.MinecraftForge; -import net.minecraftforge.fml.common.Mod; -import net.minecraftforge.fml.event.lifecycle.FMLClientSetupEvent; +import net.neoforged.api.distmarker.Dist; +import net.neoforged.neoforge.client.event.InputEvent; +import net.neoforged.neoforge.client.event.ScreenEvent; +import net.neoforged.neoforge.common.NeoForge; +import net.neoforged.fml.common.EventBusSubscriber; +import net.neoforged.fml.common.Mod; +import net.neoforged.fml.event.lifecycle.FMLClientSetupEvent; import static com.mojang.blaze3d.platform.InputConstants.*; import static igentuman.nc.NuclearCraft.MODID; -@Mod.EventBusSubscriber(modid = MODID, value = Dist.CLIENT, bus = Mod.EventBusSubscriber.Bus.MOD) public class InputEvents { public static boolean DESCRIPTIONS_SHOW = false; public static boolean SHIFT_PRESSED = false; public static void register(FMLClientSetupEvent event) { - MinecraftForge.EVENT_BUS.addListener(InputEvents::onKeyPressed); - MinecraftForge.EVENT_BUS.addListener(InputEvents::onScreenKeyPressed); - MinecraftForge.EVENT_BUS.addListener(InputEvents::onScreenKeyReleased); + NeoForge.EVENT_BUS.addListener(InputEvents::onKeyPressed); + NeoForge.EVENT_BUS.addListener(InputEvents::onScreenKeyPressed); + NeoForge.EVENT_BUS.addListener(InputEvents::onScreenKeyReleased); } public static void onKeyPressed(InputEvent.Key event) { if (event.getKey() == KEY_N && event.getModifiers() == MOD_CONTROL) { @@ -39,13 +39,13 @@ public static void onKeyPressed(InputEvent.Key event) { } } - public static void onScreenKeyPressed(ScreenEvent.KeyPressed event) { + public static void onScreenKeyPressed(ScreenEvent.KeyPressed.Pre event) { if (event.getKeyCode() == KEY_LSHIFT || event.getKeyCode() == KEY_RSHIFT) { SHIFT_PRESSED = true; } } - public static void onScreenKeyReleased(ScreenEvent.KeyReleased event) { + public static void onScreenKeyReleased(ScreenEvent.KeyReleased.Pre event) { if (event.getKeyCode() == KEY_LSHIFT || event.getKeyCode() == KEY_RSHIFT) { SHIFT_PRESSED = false; } diff --git a/src/main/java/igentuman/nc/handler/event/client/RecipesUpdated.java b/src/main/java/igentuman/nc/handler/event/client/RecipesUpdated.java index ed88f9005..eda5563ba 100644 --- a/src/main/java/igentuman/nc/handler/event/client/RecipesUpdated.java +++ b/src/main/java/igentuman/nc/handler/event/client/RecipesUpdated.java @@ -2,15 +2,15 @@ import igentuman.nc.recipes.NcRecipeType; import net.minecraft.world.item.crafting.RecipeManager; -import net.minecraftforge.client.event.RecipesUpdatedEvent; -import net.minecraftforge.common.MinecraftForge; -import net.minecraftforge.fml.event.lifecycle.FMLClientSetupEvent; +import net.neoforged.neoforge.client.event.RecipesUpdatedEvent; +import net.neoforged.neoforge.common.NeoForge; +import net.neoforged.fml.event.lifecycle.FMLClientSetupEvent; import static igentuman.nc.recipes.NcRecipeType.ALL_RECIPES; public class RecipesUpdated { public static void register(FMLClientSetupEvent event) { - MinecraftForge.EVENT_BUS.addListener(RecipesUpdated::recipesUpdated); + NeoForge.EVENT_BUS.addListener(RecipesUpdated::recipesUpdated); } public static RecipeManager manager; diff --git a/src/main/java/igentuman/nc/handler/event/client/ServerLoad.java b/src/main/java/igentuman/nc/handler/event/client/ServerLoad.java index b95f29b00..b251516fb 100644 --- a/src/main/java/igentuman/nc/handler/event/client/ServerLoad.java +++ b/src/main/java/igentuman/nc/handler/event/client/ServerLoad.java @@ -2,20 +2,20 @@ import igentuman.nc.recipes.NcRecipeType; import net.minecraft.world.level.Level; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.common.MinecraftForge; -import net.minecraftforge.event.level.LevelEvent; -import net.minecraftforge.fml.common.Mod; -import net.minecraftforge.fml.event.lifecycle.FMLClientSetupEvent; +import net.neoforged.api.distmarker.Dist; +import net.neoforged.neoforge.common.NeoForge; +import net.neoforged.neoforge.event.level.LevelEvent; +import net.neoforged.fml.common.EventBusSubscriber; +import net.neoforged.fml.common.Mod; +import net.neoforged.fml.event.lifecycle.FMLClientSetupEvent; import static igentuman.nc.NuclearCraft.MODID; import static igentuman.nc.recipes.NcRecipeType.ALL_RECIPES; -@Mod.EventBusSubscriber(modid = MODID, value = Dist.CLIENT, bus = Mod.EventBusSubscriber.Bus.MOD) public class ServerLoad { public static void register(FMLClientSetupEvent event) { - MinecraftForge.EVENT_BUS.addListener(ServerLoad::onLevelLoad); + NeoForge.EVENT_BUS.addListener(ServerLoad::onLevelLoad); } public static boolean initialized = false; public static void onLevelLoad(LevelEvent.Load event) { diff --git a/src/main/java/igentuman/nc/handler/event/client/TagsUpdated.java b/src/main/java/igentuman/nc/handler/event/client/TagsUpdated.java index fa1ffe2b1..051616c72 100644 --- a/src/main/java/igentuman/nc/handler/event/client/TagsUpdated.java +++ b/src/main/java/igentuman/nc/handler/event/client/TagsUpdated.java @@ -1,15 +1,15 @@ package igentuman.nc.handler.event.client; import igentuman.nc.recipes.NcRecipeType; -import net.minecraftforge.common.MinecraftForge; -import net.minecraftforge.event.TagsUpdatedEvent; -import net.minecraftforge.fml.event.lifecycle.FMLClientSetupEvent; +import net.neoforged.neoforge.common.NeoForge; +import net.neoforged.neoforge.event.TagsUpdatedEvent; +import net.neoforged.fml.event.lifecycle.FMLClientSetupEvent; import static igentuman.nc.recipes.NcRecipeType.ALL_RECIPES; public class TagsUpdated { public static void register(FMLClientSetupEvent event) { - MinecraftForge.EVENT_BUS.addListener(TagsUpdated::tagsUpated); + NeoForge.EVENT_BUS.addListener(TagsUpdated::tagsUpated); } public static void tagsUpated(TagsUpdatedEvent event) { if(RecipesUpdated.manager != null) { diff --git a/src/main/java/igentuman/nc/handler/event/client/TickHandler.java b/src/main/java/igentuman/nc/handler/event/client/TickHandler.java index 72a41e7f5..6296462fd 100644 --- a/src/main/java/igentuman/nc/handler/event/client/TickHandler.java +++ b/src/main/java/igentuman/nc/handler/event/client/TickHandler.java @@ -10,11 +10,11 @@ import net.minecraft.client.renderer.RenderType; import net.minecraft.util.profiling.ProfilerFiller; import net.minecraft.world.phys.Vec3; -import net.minecraftforge.client.event.RenderLevelStageEvent; -import net.minecraftforge.common.MinecraftForge; -import net.minecraftforge.event.TickEvent; -import net.minecraftforge.eventbus.api.SubscribeEvent; -import net.minecraftforge.fml.event.lifecycle.FMLClientSetupEvent; +import net.neoforged.neoforge.client.event.RenderLevelStageEvent; +import net.neoforged.neoforge.common.NeoForge; +import net.neoforged.neoforge.client.event.ClientTickEvent; +import net.neoforged.bus.api.SubscribeEvent; +import net.neoforged.fml.event.lifecycle.FMLClientSetupEvent; import org.jetbrains.annotations.Nullable; import java.util.*; @@ -40,7 +40,7 @@ private void renderStage(RenderLevelStageEvent event, boolean shouldRender, Stag // here we translate based on the inverse position of the client viewing camera to get back to 0, 0, 0 Vec3 camVec = camera.getPosition(); matrix.translate(-camVec.x, -camVec.y, -camVec.z); - renderer.render(camera, minecraft.renderBuffers().bufferSource(), matrix, event.getRenderTick(), event.getPartialTick()); + renderer.render(camera, minecraft.renderBuffers().bufferSource(), matrix, event.getRenderTick(), event.getPartialTick().getGameTimeDeltaPartialTick(true)); matrix.popPose(); } } @@ -98,14 +98,11 @@ record TransparentRenderInfo(RenderType renderType, List renders, do } public static void register(FMLClientSetupEvent event) { - MinecraftForge.EVENT_BUS.addListener(TickHandler::onTick); - MinecraftForge.EVENT_BUS.register(new TickHandler()); + NeoForge.EVENT_BUS.addListener(TickHandler::onTick); + NeoForge.EVENT_BUS.register(new TickHandler()); } - @SubscribeEvent - public static void onTick(TickEvent.ClientTickEvent event) { - if (event.phase == TickEvent.Phase.START) { - tickStart(); - } + public static void onTick(ClientTickEvent.Pre event) { + tickStart(); } protected static GeigerSound geigerSound; diff --git a/src/main/java/igentuman/nc/handler/event/client/TooltipHandler.java b/src/main/java/igentuman/nc/handler/event/client/TooltipHandler.java index 06be75760..b7fca6b29 100644 --- a/src/main/java/igentuman/nc/handler/event/client/TooltipHandler.java +++ b/src/main/java/igentuman/nc/handler/event/client/TooltipHandler.java @@ -1,5 +1,6 @@ package igentuman.nc.handler.event.client; +import igentuman.api.platform.NCItemStacks; import igentuman.nc.handler.config.RadiationConfig; import igentuman.nc.radiation.ItemRadiation; import igentuman.nc.radiation.ItemShielding; @@ -8,12 +9,13 @@ import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.block.Block; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.common.MinecraftForge; -import net.minecraftforge.event.entity.player.ItemTooltipEvent; -import net.minecraftforge.eventbus.api.SubscribeEvent; -import net.minecraftforge.fml.common.Mod; -import net.minecraftforge.fml.event.lifecycle.FMLClientSetupEvent; +import net.neoforged.api.distmarker.Dist; +import net.neoforged.neoforge.common.NeoForge; +import net.neoforged.neoforge.event.entity.player.ItemTooltipEvent; +import net.neoforged.bus.api.SubscribeEvent; +import net.neoforged.fml.common.EventBusSubscriber; +import net.neoforged.fml.common.Mod; +import net.neoforged.fml.event.lifecycle.FMLClientSetupEvent; import org.jetbrains.annotations.NotNull; import java.util.ArrayList; @@ -30,12 +32,12 @@ import static net.minecraft.world.item.Items.FILLED_MAP; import static net.minecraft.world.item.Items.LIGHTNING_ROD; -@Mod.EventBusSubscriber(modid = MODID, value = Dist.CLIENT) +@EventBusSubscriber(modid = MODID, value = Dist.CLIENT) public class TooltipHandler { private static ItemTooltipEvent processedEvent; private static List allowedForDecayGenerator = new ArrayList<>(); public static void register(FMLClientSetupEvent event) { - MinecraftForge.EVENT_BUS.addListener(TooltipHandler::handle); + NeoForge.EVENT_BUS.addListener(TooltipHandler::handle); } private static List getAllowedDecayGeneratorBlocks() { @@ -78,9 +80,8 @@ private static void miscTooltips(ItemTooltipEvent event, ItemStack itemStack) { if(itemStack.is(LIGHTNING_ROD) && ENERGY_STORAGE.LIGHTNING_ROD_CHARGE.get() > 0) { event.getToolTip().add(__("tooltip.nc.lightning_rod_charge", ENERGY_STORAGE.LIGHTNING_ROD_CHARGE.get()).withStyle(ChatFormatting.GOLD)); } - if(!itemStack.hasTag()) return; - assert itemStack.getTag() != null; - if(itemStack.getTag().contains("is_nc_analyzed")) { + if(!NCItemStacks.hasCustomData(itemStack)) return; + if(NCItemStacks.contains(itemStack, "is_nc_analyzed")) { event.getToolTip().add(__("tooltip.nc.analyzed").withStyle(ChatFormatting.GOLD)); if(itemStack.getItem().equals(FILLED_MAP)) { event.getToolTip().add(__("tooltip.nc.use_in_leacher").withStyle(ChatFormatting.GOLD)); @@ -97,10 +98,10 @@ private static void addRadiationCleaningEffect(ItemTooltipEvent event, ItemStack private static void addShieldingTooltip(ItemTooltipEvent event, ItemStack item) { int shielding = ItemShielding.byItem(item.getItem()); - if((!item.hasTag() || !item.getTag().contains("rad_shielding")) && shielding == 0) return; + if(!NCItemStacks.contains(item, "rad_shielding") && shielding == 0) return; ChatFormatting color = ChatFormatting.GOLD; - if(item.hasTag() && item.getTag().contains("rad_shielding")) { - shielding += item.getTag().getInt("rad_shielding"); + if(NCItemStacks.contains(item, "rad_shielding")) { + shielding += NCItemStacks.getInt(item, "rad_shielding"); } event.getToolTip().add(__("tooltip.nc.rad_shielding", shielding).withStyle(color)); } diff --git a/src/main/java/igentuman/nc/handler/event/server/PlayerEvents.java b/src/main/java/igentuman/nc/handler/event/server/PlayerEvents.java index 11b37d1df..225d98b79 100644 --- a/src/main/java/igentuman/nc/handler/event/server/PlayerEvents.java +++ b/src/main/java/igentuman/nc/handler/event/server/PlayerEvents.java @@ -7,25 +7,26 @@ import net.minecraft.world.damagesource.DamageTypes; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.ItemStack; -import net.minecraftforge.common.capabilities.ForgeCapabilities; -import net.minecraftforge.event.entity.living.LivingHurtEvent; -import net.minecraftforge.event.entity.player.EntityItemPickupEvent; -import net.minecraftforge.event.entity.player.PlayerEvent; -import net.minecraftforge.eventbus.api.Event; -import net.minecraftforge.eventbus.api.SubscribeEvent; -import net.minecraftforge.fml.common.Mod; -import net.minecraftforge.items.IItemHandler; +import net.neoforged.neoforge.capabilities.Capabilities; +import net.neoforged.neoforge.energy.IEnergyStorage; +import net.neoforged.neoforge.event.entity.living.LivingIncomingDamageEvent; +import net.neoforged.neoforge.event.entity.player.ItemEntityPickupEvent; +import net.neoforged.neoforge.event.entity.player.PlayerEvent; +import net.neoforged.bus.api.SubscribeEvent; +import net.neoforged.fml.common.EventBusSubscriber; +import net.neoforged.fml.common.Mod; +import net.neoforged.neoforge.items.IItemHandler; import static igentuman.nc.NuclearCraft.MODID; import static igentuman.nc.setup.registration.NCItems.HEV_BOOTS; -@Mod.EventBusSubscriber(modid = MODID, bus = Mod.EventBusSubscriber.Bus.FORGE) +@EventBusSubscriber(modid = MODID) public class PlayerEvents { @SubscribeEvent - public static void onPickupItem(EntityItemPickupEvent event) { - Player player = event.getEntity(); - ItemStack pickedUpItem = event.getItem().getItem(); + public static void onPickupItem(ItemEntityPickupEvent.Pre event) { + Player player = event.getPlayer(); + ItemStack pickedUpItem = event.getItemEntity().getItem(); // Skip if the picked up item is empty if (pickedUpItem.isEmpty()) { @@ -60,7 +61,7 @@ public static void onPickupItem(EntityItemPickupEvent event) { if (remainingStack.isEmpty()) { pickedUpItem.setCount(0); //event.getOriginalEntity().setItem(pickedUpItem); - event.setResult(Event.Result.DENY); + event.setCanPickup(net.neoforged.neoforge.common.util.TriState.FALSE); break; } else { // Update the picked up item with the remaining count @@ -75,7 +76,7 @@ public static void onPickupItem(EntityItemPickupEvent event) { } @SubscribeEvent - public static void onPlayerDamage(LivingHurtEvent event) { + public static void onPlayerDamage(LivingIncomingDamageEvent event) { if (event.getEntity() instanceof Player player) { if (event.getSource() != null && event.getSource().is(DamageTypes.MAGIC)) { if(isFullyEquipped(player)) { @@ -123,11 +124,15 @@ public static boolean isFullyEquipped(Player player) { public static boolean isCharged(ItemStack item) { - return item.getCapability(ForgeCapabilities.ENERGY).map(handler -> handler.getEnergyStored() > 0).orElse(false); + IEnergyStorage handler = item.getCapability(Capabilities.EnergyStorage.ITEM); + return handler != null && handler.getEnergyStored() > 0; } private static void consumeEnergy(ItemStack stack, int i) { - stack.getCapability(ForgeCapabilities.ENERGY).ifPresent(handler -> handler.extractEnergy(i, false)); + IEnergyStorage handler = stack.getCapability(Capabilities.EnergyStorage.ITEM); + if (handler != null) { + handler.extractEnergy(i, false); + } } } diff --git a/src/main/java/igentuman/nc/handler/event/server/WorldEvents.java b/src/main/java/igentuman/nc/handler/event/server/WorldEvents.java index 8bd8402f7..117448595 100644 --- a/src/main/java/igentuman/nc/handler/event/server/WorldEvents.java +++ b/src/main/java/igentuman/nc/handler/event/server/WorldEvents.java @@ -9,21 +9,22 @@ import net.minecraft.world.entity.npc.VillagerTrades; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.Items; +import igentuman.api.platform.NCTrading; import net.minecraft.world.item.trading.MerchantOffer; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.state.BlockState; -import net.minecraftforge.event.TickEvent.LevelTickEvent; -import net.minecraftforge.event.TickEvent.Phase; -import net.minecraftforge.event.TickEvent.ServerTickEvent; -import net.minecraftforge.event.level.BlockEvent; -import net.minecraftforge.event.level.ChunkEvent; -import net.minecraftforge.event.level.LevelEvent; -import net.minecraftforge.event.server.ServerStoppingEvent; -import net.minecraftforge.event.village.VillagerTradesEvent; -import net.minecraftforge.event.village.WandererTradesEvent; -import net.minecraftforge.eventbus.api.EventPriority; -import net.minecraftforge.eventbus.api.SubscribeEvent; -import net.minecraftforge.fml.common.Mod; +import net.neoforged.neoforge.event.tick.LevelTickEvent; +import net.neoforged.neoforge.event.tick.ServerTickEvent; +import net.neoforged.neoforge.event.level.BlockEvent; +import net.neoforged.neoforge.event.level.ChunkEvent; +import net.neoforged.neoforge.event.level.LevelEvent; +import net.neoforged.neoforge.event.server.ServerStoppingEvent; +import net.neoforged.neoforge.event.village.VillagerTradesEvent; +import net.neoforged.neoforge.event.village.WandererTradesEvent; +import net.neoforged.bus.api.EventPriority; +import net.neoforged.bus.api.SubscribeEvent; +import net.neoforged.fml.common.EventBusSubscriber; +import net.neoforged.fml.common.Mod; import java.util.ArrayList; import java.util.LinkedList; @@ -37,15 +38,11 @@ import static igentuman.nc.setup.registration.FissionFuel.NC_ISOTOPES; import static igentuman.nc.setup.registration.Villager.addVillagerTrades; -@Mod.EventBusSubscriber(modid = MODID, bus = Mod.EventBusSubscriber.Bus.FORGE) +@EventBusSubscriber(modid = MODID) public class WorldEvents { public final static LinkedList trackingBlocks = new LinkedList<>(); - public WorldEvents() { - - } - @SubscribeEvent public static void addCustomTrades(VillagerTradesEvent event) { addVillagerTrades(event); @@ -57,14 +54,14 @@ public static void addCustomWanderingTrades(WandererTradesEvent event) { List genericTrades = event.getGenericTrades(); List rareTrades = event.getRareTrades(); - genericTrades.add((pTrader, pRandom) -> new MerchantOffer( - new ItemStack(Items.EMERALD, 8), + genericTrades.add((pTrader, pRandom) -> NCTrading.offer( + NCTrading.cost(Items.EMERALD, 8), new ItemStack(NC_ISOTOPES.get(plutonium239).get(), 1), 8, 2, 0.2f)); } @SubscribeEvent(priority = EventPriority.HIGHEST) - public void onBlockBreak(BlockEvent.BreakEvent event) { + public static void onBlockBreak(BlockEvent.BreakEvent event) { if(event.getPlayer().level().isClientSide()) return; BlockState state = event.getState(); if(state == null) return; @@ -74,7 +71,7 @@ public void onBlockBreak(BlockEvent.BreakEvent event) { } @SubscribeEvent(priority = EventPriority.HIGHEST) - public void onBlockPlace(BlockEvent.EntityPlaceEvent event) { + public static void onBlockPlace(BlockEvent.EntityPlaceEvent event) { if(event.getEntity().level().isClientSide()) return; boolean placed = true; BlockState state = event.getState(); @@ -91,17 +88,17 @@ public void onBlockPlace(BlockEvent.EntityPlaceEvent event) { } @SubscribeEvent - public void chunkUnloadEvent(ChunkEvent.Unload event) { + public static void chunkUnloadEvent(ChunkEvent.Unload event) { } @SubscribeEvent - public void worldUnloadEvent(LevelEvent.Unload event) { + public static void worldUnloadEvent(LevelEvent.Unload event) { } @SubscribeEvent(priority = EventPriority.HIGHEST) - public void worldLoadEvent(LevelEvent.Load event) { + public static void worldLoadEvent(LevelEvent.Load event) { if (!event.getLevel().isClientSide()) { // Ensure the executor is initialized when a world is loaded MultiblockExecutorManager.getExecutor(); @@ -110,24 +107,19 @@ public void worldLoadEvent(LevelEvent.Load event) { } @SubscribeEvent(priority = EventPriority.HIGHEST) - public void onTick(ServerTickEvent event) { - if (event.side.isServer() && event.phase == Phase.START) { - currentTick++; - } + public static void onServerTick(ServerTickEvent.Pre event) { + currentTick++; } - @SubscribeEvent(priority = EventPriority.HIGHEST) - public void onTick(LevelTickEvent event) { - if (event.side.isServer() && event.phase == Phase.START) { - if(currentTick % 5 != 0 || event.level.getChunkSource().getLoadedChunksCount() < 1) return; - final ServerLevel level = (ServerLevel) event.level; - RadiationEvents.tickAsync(event); - MultiblockHandler.trackChangesAsync(level); - } + public static void onLevelTick(LevelTickEvent.Pre event) { + if(event.getLevel().isClientSide()) return; + if(currentTick % 5 != 0 || event.getLevel().getChunkSource().getLoadedChunksCount() < 1) return; + final ServerLevel level = (ServerLevel) event.getLevel(); + RadiationEvents.tickAsync(event); + MultiblockHandler.trackChangesAsync(level); } - @SubscribeEvent(priority = EventPriority.HIGHEST) public static void onServerStopping(ServerStoppingEvent event) { MultiblockHandler.clearAll(); diff --git a/src/main/java/igentuman/nc/handler/sided/SidedContentHandler.java b/src/main/java/igentuman/nc/handler/sided/SidedContentHandler.java index 862ab3cde..7d02fdb2e 100644 --- a/src/main/java/igentuman/nc/handler/sided/SidedContentHandler.java +++ b/src/main/java/igentuman/nc/handler/sided/SidedContentHandler.java @@ -1,19 +1,21 @@ package igentuman.nc.handler.sided; +import igentuman.api.platform.NCSerialization; import igentuman.nc.block.entity.NuclearCraftBE; -import igentuman.nc.handler.sided.capability.Gas2FluidConverter; -import igentuman.nc.handler.sided.capability.Slurry2FluidConverter; +import igentuman.nc.handler.sided.capability.Chemical2FluidConverter; import igentuman.nc.recipes.AbstractRecipe; import igentuman.nc.handler.sided.capability.FluidCapabilityHandler; import igentuman.nc.handler.sided.capability.ItemCapabilityHandler; import net.minecraft.core.Direction; +import net.minecraft.core.HolderLookup; import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.Tag; import net.minecraft.server.level.ServerPlayer; import net.minecraft.world.item.ItemStack; -import net.minecraftforge.common.util.INBTSerializable; -import net.minecraftforge.common.util.LazyOptional; -import net.minecraftforge.fluids.FluidStack; +import net.neoforged.neoforge.common.util.INBTSerializable; +import net.neoforged.neoforge.fluids.FluidStack; +import net.neoforged.neoforge.fluids.capability.IFluidHandler; +import net.neoforged.neoforge.items.IItemHandler; import java.util.HashMap; import java.util.List; @@ -28,7 +30,6 @@ public class SidedContentHandler implements INBTSerializable { public final int inputFluidSlots; public final int outputFluidSlots; public final ItemCapabilityHandler itemHandler; - public final LazyOptional itemCapability; public final FluidCapabilityHandler fluidHandler; public NuclearCraftBE blockEntity; @@ -36,8 +37,7 @@ public class SidedContentHandler implements INBTSerializable { public boolean hasPull = false; private boolean updated = false; - private Gas2FluidConverter gasConverter; - private Slurry2FluidConverter slurryConverter; + private Chemical2FluidConverter chemicalConverter; public SidedContentHandler(int inputItemSlots, int outputItemSlots, int inputFluidSlots, int outputFluidSlots, int...tankCapacities) { this.inputItemSlots = inputItemSlots; @@ -48,10 +48,8 @@ public SidedContentHandler(int inputItemSlots, int outputItemSlots, int inputFlu itemHandler = new ItemCapabilityHandler(inputItemSlots, outputItemSlots); itemHandler.tile = blockEntity; itemHandler.sidedContentHandler = this; - itemCapability = LazyOptional.of(() -> itemHandler); } else { itemHandler = null; - itemCapability = LazyOptional.empty(); } if(inputFluidSlots + outputFluidSlots > 0) { int inputTankSize = 10; @@ -85,36 +83,36 @@ public static HashMap deserializeSideMap(CompoundTag si } @Override - public Tag serializeNBT() { + public Tag serializeNBT(HolderLookup.Provider provider) { CompoundTag nbt = new CompoundTag(); if(itemHandler != null) { - nbt.put("itemHandler", itemHandler.serializeNBT()); + nbt.put("itemHandler", NCSerialization.serialize(itemHandler, provider)); } if(fluidHandler != null) { - nbt.put("fluidHandler", fluidHandler.serializeNBT()); + nbt.put("fluidHandler", NCSerialization.serialize(fluidHandler, provider)); } return nbt; } @Override - public void deserializeNBT(Tag nbt) { + public void deserializeNBT(HolderLookup.Provider provider, Tag nbt) { if(itemHandler != null) { - itemHandler.deserializeNBT(((CompoundTag) nbt).getCompound("itemHandler")); + NCSerialization.deserialize(itemHandler, provider, ((CompoundTag) nbt).getCompound("itemHandler")); } if(fluidHandler != null) { - fluidHandler.deserializeNBT(((CompoundTag) nbt).getCompound("fluidHandler")); + NCSerialization.deserialize(fluidHandler, provider, ((CompoundTag) nbt).getCompound("fluidHandler")); } } - public LazyOptional getItemCapability(Direction side) { - if(hasItemCapability(side)) return itemHandler.getCapability(side).cast(); - return LazyOptional.empty(); + public IItemHandler getItemCapability(Direction side) { + if(hasItemCapability(side)) return itemHandler.getCapability(side); + return null; } - public LazyOptional getFluidCapability(Direction side) { - if(hasFluidCapability(side)) return fluidHandler.getCapability(side).cast(); - return LazyOptional.empty(); + public IFluidHandler getFluidCapability(Direction side) { + if(hasFluidCapability(side)) return fluidHandler.getCapability(side); + return null; } public boolean hasFluidCapability(Direction side) { @@ -126,10 +124,6 @@ public boolean hasItemCapability(Direction side) { if(inputItemSlots+outputItemSlots == 0) return false; return side == null || itemHandler.sideMap.get(side.ordinal()).length > 0; } - public void invalidate() { - itemCapability.invalidate(); - } - public int toggleSideConfig(int slotId, int direction) { try { if (slotId < inputFluidSlots) { @@ -344,20 +338,12 @@ public Object[] getSlotContent(int slotId) { } } - public T gasConverter(Direction side) { - if(gasConverter == null) { - gasConverter = new Gas2FluidConverter(); - gasConverter.setFluidHandler(fluidHandler); - } - return (T) gasConverter.forSide(side); - } - - public T getSlurryConverter(Direction side) { - if(slurryConverter == null) { - slurryConverter = new Slurry2FluidConverter(); - slurryConverter.setFluidHandler(fluidHandler); + public T chemicalConverter(Direction side) { + if(chemicalConverter == null) { + chemicalConverter = new Chemical2FluidConverter(); + chemicalConverter.setFluidHandler(fluidHandler); } - return (T) slurryConverter.forSide(side); + return (T) chemicalConverter.forSide(side); } public void voidFluidSlot(int slotId) { diff --git a/src/main/java/igentuman/nc/handler/sided/capability/Chemical2FluidConverter.java b/src/main/java/igentuman/nc/handler/sided/capability/Chemical2FluidConverter.java new file mode 100644 index 000000000..c7b1e3918 --- /dev/null +++ b/src/main/java/igentuman/nc/handler/sided/capability/Chemical2FluidConverter.java @@ -0,0 +1,124 @@ +package igentuman.nc.handler.sided.capability; + +import igentuman.nc.recipes.ingredient.creator.FluidStackIngredientCreator; +import igentuman.nc.util.TagUtil; +import mekanism.api.Action; +import mekanism.api.chemical.Chemical; +import mekanism.api.chemical.ChemicalStack; +import mekanism.api.chemical.IChemicalHandler; +import net.minecraft.core.Direction; +import net.minecraft.tags.TagKey; +import net.minecraft.world.level.material.EmptyFluid; +import net.minecraft.world.level.material.Fluid; +import net.neoforged.neoforge.fluids.FluidStack; +import net.minecraft.core.registries.BuiltInRegistries; +import org.jetbrains.annotations.NotNull; + +import java.util.HashMap; + +import static igentuman.nc.NuclearCraft.neoforgeRl; + +/** + * Unified chemical-to-fluid converter for Mekanism 10.7.x+. + * Replaces the old Gas2FluidConverter and Slurry2FluidConverter classes + * which were split by the pre-unification Gas/Slurry/InfuseType/Pigment API. + */ +public class Chemical2FluidConverter implements IChemicalHandler { + + private FluidCapabilityHandler fluidCapability; + private Direction side; + + @Override + public int getChemicalTanks() { + return 1; + } + + @Override + public @NotNull ChemicalStack getChemicalInTank(int tank) { + return ChemicalStack.EMPTY; + } + + @Override + public void setChemicalInTank(int tank, @NotNull ChemicalStack stack) { + } + + @Override + public long getChemicalTankCapacity(int tank) { + return 100; + } + + @Override + public boolean isValid(int tank, @NotNull ChemicalStack stack) { + return false; + } + + private String specialConvertRules(String input) { + if (input.matches("clean_[a-z]+")) { + return input.substring(6) + "_clean_slurry"; + } + if (input.matches("dirty_[a-z]+")) { + return input.substring(6) + "_slurry"; + } + return input; + } + + private final HashMap chemicalFluidMap = new HashMap<>(); + + private FluidStack convert(ChemicalStack stack) { + int amount = (int) stack.getAmount(); + if (amount <= 0) amount = 1000; + Chemical chemical = stack.getChemical(); + if (chemicalFluidMap.containsKey(chemical)) { + if (!(chemicalFluidMap.get(chemical) instanceof EmptyFluid)) { + return new FluidStack(chemicalFluidMap.get(chemical), amount); + } + } + String name = stack.getTypeRegistryName().getPath(); + name = specialConvertRules(name); + TagKey key = TagUtil.createKey(BuiltInRegistries.FLUID, neoforgeRl(name)); + if (TagUtil.isTagEmpty(BuiltInRegistries.FLUID, key)) { + return FluidStack.EMPTY; + } + FluidStack fluidStack; + try { + fluidStack = FluidStackIngredientCreator.INSTANCE + .from(key, amount).getRepresentations().get(0); + } catch (Exception e) { + return FluidStack.EMPTY; + } + + chemicalFluidMap.put(chemical, fluidStack.getFluid()); + return new FluidStack(chemicalFluidMap.get(chemical), (int) stack.getAmount()); + } + + @Override + public @NotNull ChemicalStack insertChemical(int tank, @NotNull ChemicalStack stack, @NotNull Action action) { + FluidStack fluidStack = convert(stack); + if (fluidStack.isEmpty()) return stack; + for (int i = 0; i < fluidCapability.inputSlots; i++) { + if (!fluidCapability.haveAccessFromSide(side, i)) continue; + if (fluidCapability.isValidForInputSlot(i, fluidStack)) { + boolean doInsert = action.execute(); + FluidStack inserted = fluidCapability.insertFluidInternal(i, fluidStack, doInsert); + ChemicalStack result = stack.copy(); + result.setAmount(inserted.getAmount()); + return result; + } + } + return stack; + } + + @Override + public @NotNull ChemicalStack extractChemical(int tank, long amount, @NotNull Action action) { + return ChemicalStack.EMPTY; + } + + public void setFluidHandler(FluidCapabilityHandler fluidCapability) { + this.fluidCapability = fluidCapability; + } + + public Chemical2FluidConverter forSide(Direction side) { + this.side = side; + return this; + } +} diff --git a/src/main/java/igentuman/nc/handler/sided/capability/FluidCapabilityHandler.java b/src/main/java/igentuman/nc/handler/sided/capability/FluidCapabilityHandler.java index 8ca206d2a..696640d6c 100644 --- a/src/main/java/igentuman/nc/handler/sided/capability/FluidCapabilityHandler.java +++ b/src/main/java/igentuman/nc/handler/sided/capability/FluidCapabilityHandler.java @@ -5,34 +5,33 @@ import igentuman.nc.handler.sided.SlotModePair.*; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; +import net.minecraft.core.HolderLookup; import net.minecraft.core.NonNullList; import net.minecraft.nbt.CompoundTag; import net.minecraft.server.level.ServerPlayer; import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.block.entity.BlockEntity; -import net.minecraftforge.common.util.INBTSerializable; -import net.minecraftforge.common.util.LazyOptional; -import net.minecraftforge.fluids.FluidStack; -import net.minecraftforge.fluids.capability.IFluidHandler; -import net.minecraftforge.registries.ForgeRegistries; +import net.neoforged.neoforge.capabilities.Capabilities; +import net.neoforged.neoforge.common.util.INBTSerializable; +import net.neoforged.neoforge.fluids.FluidStack; +import net.neoforged.neoforge.fluids.capability.IFluidHandler; +import net.neoforged.neoforge.fluids.capability.IFluidHandlerItem; +import net.minecraft.core.registries.BuiltInRegistries; import java.util.*; import java.util.function.Supplier; import static igentuman.nc.handler.sided.SlotModePair.SlotMode.*; import static net.minecraft.world.item.Items.BUCKET; -import static net.minecraftforge.common.capabilities.ForgeCapabilities.FLUID_HANDLER; -import static net.minecraftforge.common.capabilities.ForgeCapabilities.FLUID_HANDLER_ITEM; -import static net.minecraftforge.fluids.capability.IFluidHandler.FluidAction.EXECUTE; -import static net.minecraftforge.fluids.capability.IFluidHandler.FluidAction.SIMULATE; +import static net.neoforged.neoforge.fluids.capability.IFluidHandler.FluidAction.EXECUTE; +import static net.neoforged.neoforge.fluids.capability.IFluidHandler.FluidAction.SIMULATE; public class FluidCapabilityHandler extends AbstractCapabilityHandler implements INBTSerializable { public final NonNullList tanks; - public final NonNullList> fluidCapabilites; protected FluidStack[] sortedFluids; public final List holdedInputs = new ArrayList<>(); - private final Map> handlerCache = new HashMap<>(); + private final Map handlerCache = new HashMap<>(); public HashMap>> allowedFluids; @@ -41,27 +40,21 @@ public FluidCapabilityHandler(int inputSlots, int outputSlots, int inputCapacity tanks = NonNullList.create(); this.inputSlots = inputSlots; this.outputSlots = outputSlots; - fluidCapabilites = NonNullList.create(); for (int i = 0; i < inputSlots; i++) { - int finalI = i; tanks.add(new NcFluidTank(inputCapacity*1000)); - fluidCapabilites.add(LazyOptional.of(() -> tanks.get(finalI))); } for (int i = inputSlots; i < inputSlots+outputSlots; i++) { - int finalI = i; tanks.add(new NcFluidTank(outputCapacity*1000)); - fluidCapabilites.add(LazyOptional.of(() -> tanks.get(finalI))); } initDefault(); } - public LazyOptional getCapability(Direction side) { - if(side == null) return getCapability(); + public FluidHandlerWrapper getCapability(Direction side) { + if(side == null) return getGlobalCapability(); if(!handlerCache.containsKey(side)) { SidedContentHandler.RelativeDirection relativeDirection = SidedContentHandler.RelativeDirection.toRelative(side, getFacing()); - handlerCache.put(side, LazyOptional.of( - () -> new FluidHandlerWrapper(this, relativeDirection, (i, f) -> inputAllowed(i, f, side), (i) -> outputAllowed(i, side)))); + handlerCache.put(side, new FluidHandlerWrapper(this, relativeDirection, (i, f) -> inputAllowed(i, f, side), (i) -> outputAllowed(i, side))); } return handlerCache.get(side); } @@ -93,21 +86,16 @@ public boolean outputAllowed(Integer i, Direction side) { return (mode == OUTPUT || mode == PUSH || mode == PUSH_EXCESS) && getFluidInSlot(i).getAmount() > 0; } - public LazyOptional getCapability() { - for(Direction side : Direction.values()) { - for (SlotModePair slotModePair : sideMap.get(side.ordinal())) { - if (slotModePair.getMode() != SlotMode.DISABLED) - return fluidCapabilites.get(slotModePair.getSlot()).cast(); - } - } - return LazyOptional.empty(); + public FluidHandlerWrapper getGlobalCapability() { + // Return a wrapper that allows all operations (no side filtering) + return new FluidHandlerWrapper(this, null, (i, f) -> true, (i) -> true); } @Override - public CompoundTag serializeNBT() { + public CompoundTag serializeNBT(HolderLookup.Provider provider) { CompoundTag tag = new CompoundTag(); for (int i = 0; i < tanks.size(); i++) { - tag.put("tank" + i, tanks.get(i).writeToNBT(new CompoundTag())); + tag.put("tank" + i, tanks.get(i).writeToNBT(provider, new CompoundTag())); } tag.putInt("size", tanks.size()); if(sideMapUpdated) { @@ -117,10 +105,11 @@ public CompoundTag serializeNBT() { return tag; } - public void deserializeNBT(CompoundTag nbt) { + @Override + public void deserializeNBT(HolderLookup.Provider provider, CompoundTag nbt) { int size = nbt.getInt("size"); for (int i = 0; i < size; i++) { - tanks.get(i).readFromNBT(nbt.getCompound("tank" + i)); + tanks.get(i).readFromNBT(provider, nbt.getCompound("tank" + i)); } if(!nbt.getCompound("sideMap").isEmpty()) { sideMap = SidedContentHandler.deserializeSideMap(nbt.getCompound("sideMap")); @@ -133,20 +122,16 @@ public boolean pushFluids(Direction dir) { return pushFluids(dir, false, tile.getBlockPos()); } public boolean pushFluids(Direction dir, boolean forceFlag, BlockPos pos) { - BlockEntity be = tile.getLevel().getBlockEntity(pos.relative(dir)); - if(be == null) return false; - LazyOptional cap = be.getCapability(FLUID_HANDLER, dir.getOpposite()); - if(cap.isPresent()) { - IFluidHandler handler = cap.orElse(null); - SidedContentHandler.RelativeDirection relativeDirection = SidedContentHandler.RelativeDirection.toRelative(dir, getFacing()); - for(SlotModePair pair : sideMap.get(relativeDirection.ordinal())) { - if(pair.getMode() == SlotMode.PUSH || forceFlag) { - NcFluidTank tank = tanks.get(pair.getSlot()); - if(tank.getFluidAmount() > 0) { - int amount = handler.fill(tank.getFluid(), EXECUTE); - tank.drain(amount, EXECUTE); - return true; - } + IFluidHandler handler = tile.getLevel().getCapability(Capabilities.FluidHandler.BLOCK, pos.relative(dir), dir.getOpposite()); + if(handler == null) return false; + SidedContentHandler.RelativeDirection relativeDirection = SidedContentHandler.RelativeDirection.toRelative(dir, getFacing()); + for(SlotModePair pair : sideMap.get(relativeDirection.ordinal())) { + if(pair.getMode() == SlotMode.PUSH || forceFlag) { + NcFluidTank tank = tanks.get(pair.getSlot()); + if(tank.getFluidAmount() > 0) { + int amount = handler.fill(tank.getFluid(), EXECUTE); + tank.drain(amount, EXECUTE); + return true; } } } @@ -158,13 +143,10 @@ public boolean pullFluids(Direction dir) { } public boolean pullFluids(Direction dir, boolean forceFlag, BlockPos pos) { - BlockEntity be = Objects.requireNonNull(tile.getLevel()).getBlockEntity(pos.relative(dir)); - if(be == null) return false; - LazyOptional cap = be.getCapability(FLUID_HANDLER, dir.getOpposite()); - if (!cap.isPresent()) { + IFluidHandler sourceTank = Objects.requireNonNull(tile.getLevel()).getCapability(Capabilities.FluidHandler.BLOCK, pos.relative(dir), dir.getOpposite()); + if (sourceTank == null) { return false; } - IFluidHandler sourceTank = cap.orElse(null); SidedContentHandler.RelativeDirection relativeDirection = SidedContentHandler.RelativeDirection.toRelative(dir, getFacing()); for(SlotModePair pair : sideMap.get(relativeDirection.ordinal())) { if(pair.getMode() == SlotMode.PULL || forceFlag) { @@ -218,19 +200,15 @@ public boolean isValidForOutputSlot(int i, FluidStack outputFluid) { public boolean canPushExcessFluid(int i, FluidStack outputFluid) { for(Direction dir: Direction.values()) { - BlockEntity be = tile.getLevel().getBlockEntity(tile.getBlockPos().relative(dir)); - if(be == null) continue; - LazyOptional cap = be.getCapability(FLUID_HANDLER, dir.getOpposite()); - if(cap.isPresent()) { - IFluidHandler handler = cap.orElse(null); - SidedContentHandler.RelativeDirection relativeDirection = SidedContentHandler.RelativeDirection.toRelative(dir, getFacing()); - for(SlotModePair pair : sideMap.get(relativeDirection.ordinal())) { - if(pair.getSlot() != i) continue; - if(pair.getMode() == PUSH || pair.getMode() == PUSH_EXCESS) { - int amount = handler.fill(outputFluid, SIMULATE); - if(amount == outputFluid.getAmount()) { - return true; - } + IFluidHandler handler = tile.getLevel().getCapability(Capabilities.FluidHandler.BLOCK, tile.getBlockPos().relative(dir), dir.getOpposite()); + if(handler == null) continue; + SidedContentHandler.RelativeDirection relativeDirection = SidedContentHandler.RelativeDirection.toRelative(dir, getFacing()); + for(SlotModePair pair : sideMap.get(relativeDirection.ordinal())) { + if(pair.getSlot() != i) continue; + if(pair.getMode() == PUSH || pair.getMode() == PUSH_EXCESS) { + int amount = handler.fill(outputFluid, SIMULATE); + if(amount == outputFluid.getAmount()) { + return true; } } } @@ -259,27 +237,20 @@ public FluidStack insertFluidInternal(int i, FluidStack toInsert, boolean doInse public FluidStack pushExcessFluid(int i, FluidStack toOutput) { for(Direction dir: Direction.values()) { - BlockEntity be = tile.getLevel().getBlockEntity(tile.getBlockPos().relative(dir)); - if(be == null) continue; - LazyOptional cap = be.getCapability(FLUID_HANDLER, dir.getOpposite()); - if(cap.isPresent()) { - IFluidHandler handler = cap.orElse(null); - - SidedContentHandler.RelativeDirection relativeDirection = SidedContentHandler.RelativeDirection.toRelative(dir, getFacing()); - for(SlotModePair pair : sideMap.get(relativeDirection.ordinal())) { - if(pair.getMode() == PUSH_EXCESS) { - NcFluidTank tank = tanks.get(pair.getSlot()); - if(tank.getFluidAmount() > 0 && toOutput.getFluid().equals(tank.getFluid().getFluid())) { - if(handler.fill(toOutput, SIMULATE) == toOutput.getAmount() ) { - int amount = handler.fill(toOutput, EXECUTE); - //tank.drain(amount, IFluidHandler.FluidAction.EXECUTE); - return FluidStack.EMPTY; - } + IFluidHandler handler = tile.getLevel().getCapability(Capabilities.FluidHandler.BLOCK, tile.getBlockPos().relative(dir), dir.getOpposite()); + if(handler == null) continue; + SidedContentHandler.RelativeDirection relativeDirection = SidedContentHandler.RelativeDirection.toRelative(dir, getFacing()); + for(SlotModePair pair : sideMap.get(relativeDirection.ordinal())) { + if(pair.getMode() == PUSH_EXCESS) { + NcFluidTank tank = tanks.get(pair.getSlot()); + if(tank.getFluidAmount() > 0 && toOutput.getFluid().equals(tank.getFluid().getFluid())) { + if(handler.fill(toOutput, SIMULATE) == toOutput.getAmount() ) { + int amount = handler.fill(toOutput, EXECUTE); + return FluidStack.EMPTY; } } } } - } return toOutput; } @@ -289,44 +260,43 @@ public void voidSlot(int slotId) { } public void handleFluidItemClick(int slotId, ItemStack stack, ServerPlayer player) { - stack.getCapability(FLUID_HANDLER_ITEM).ifPresent(handler -> { - FluidStack fluidInItem = handler.getFluidInTank(0); - if(fluidInItem.isEmpty() && tanks.get(slotId).isEmpty()) return; - if(!fluidInItem.isEmpty() && isValidSlotFluid(slotId, fluidInItem) && isValidForInputSlot(slotId, fluidInItem)) { - FluidStack remaining = insertFluidInternal(slotId, fluidInItem, false); - if(!remaining.isEmpty() && handler.getContainer().is(BUCKET)) { - return; - } - remaining = insertFluidInternal(slotId, fluidInItem.copy(), true); - handler.drain(fluidInItem.getAmount() - remaining.getAmount(), EXECUTE); - if(handler.getContainer().is(BUCKET)) { - player.containerMenu.setCarried(new ItemStack(BUCKET)); - return; - } - player.containerMenu.setCarried(stack); + IFluidHandlerItem handler = stack.getCapability(Capabilities.FluidHandler.ITEM); + if(handler == null) return; + FluidStack fluidInItem = handler.getFluidInTank(0); + if(fluidInItem.isEmpty() && tanks.get(slotId).isEmpty()) return; + if(!fluidInItem.isEmpty() && isValidSlotFluid(slotId, fluidInItem) && isValidForInputSlot(slotId, fluidInItem)) { + FluidStack remaining = insertFluidInternal(slotId, fluidInItem, false); + if(!remaining.isEmpty() && handler.getContainer().is(BUCKET)) { return; } - if(fluidInItem.isEmpty() || (fluidInItem.isFluidEqual(tanks.get(slotId).getFluid()))) { - FluidStack tankFluid = tanks.get(slotId).getFluid(); - if(tankFluid.isEmpty()) { - return; - } - int filled = handler.fill(tankFluid, SIMULATE); - if(filled == 0 || (filled != 1000 && handler.getContainer().is(BUCKET))) { - return; - } - filled = handler.fill(tankFluid, EXECUTE); - tanks.get(slotId).drain(filled, EXECUTE); - player.containerMenu.setCarried(handler.getContainer()); + remaining = insertFluidInternal(slotId, fluidInItem.copy(), true); + handler.drain(fluidInItem.getAmount() - remaining.getAmount(), EXECUTE); + if(handler.getContainer().is(BUCKET)) { + player.containerMenu.setCarried(new ItemStack(BUCKET)); + return; + } + player.containerMenu.setCarried(stack); + return; + } + if(fluidInItem.isEmpty() || (fluidInItem.isFluidEqual(tanks.get(slotId).getFluid()))) { + FluidStack tankFluid = tanks.get(slotId).getFluid(); + if(tankFluid.isEmpty()) { return; } - }); + int filled = handler.fill(tankFluid, SIMULATE); + if(filled == 0 || (filled != 1000 && handler.getContainer().is(BUCKET))) { + return; + } + filled = handler.fill(tankFluid, EXECUTE); + tanks.get(slotId).drain(filled, EXECUTE); + player.containerMenu.setCarried(handler.getContainer()); + } } public Object[] getSlotContent(int slotIdFromGlobalId) { FluidStack stack = tanks.get(slotIdFromGlobalId).getFluid(); if(stack.isEmpty()) return new Object[]{}; - return new Object[]{ForgeRegistries.FLUIDS.getKey(stack.getFluid()).toString(), stack.getAmount()}; + return new Object[]{BuiltInRegistries.FLUID.getKey(stack.getFluid()).toString(), stack.getAmount()}; } public boolean canPush() { diff --git a/src/main/java/igentuman/nc/handler/sided/capability/FluidHandlerWrapper.java b/src/main/java/igentuman/nc/handler/sided/capability/FluidHandlerWrapper.java index 6c982e97f..99c844156 100644 --- a/src/main/java/igentuman/nc/handler/sided/capability/FluidHandlerWrapper.java +++ b/src/main/java/igentuman/nc/handler/sided/capability/FluidHandlerWrapper.java @@ -2,8 +2,8 @@ import igentuman.nc.handler.sided.SidedContentHandler; import igentuman.nc.handler.sided.SlotModePair; -import net.minecraftforge.fluids.FluidStack; -import net.minecraftforge.fluids.capability.IFluidHandler; +import net.neoforged.neoforge.fluids.FluidStack; +import net.neoforged.neoforge.fluids.capability.IFluidHandler; import org.jetbrains.annotations.NotNull; import java.util.function.BiPredicate; diff --git a/src/main/java/igentuman/nc/handler/sided/capability/Gas2FluidConverter.java b/src/main/java/igentuman/nc/handler/sided/capability/Gas2FluidConverter.java deleted file mode 100644 index 5dd25ff1a..000000000 --- a/src/main/java/igentuman/nc/handler/sided/capability/Gas2FluidConverter.java +++ /dev/null @@ -1,131 +0,0 @@ -package igentuman.nc.handler.sided.capability; - -import igentuman.nc.recipes.ingredient.creator.FluidStackIngredientCreator; -import igentuman.nc.util.TagUtil; -import mekanism.api.Action; -import mekanism.api.chemical.ChemicalStack; -import mekanism.api.chemical.gas.Gas; -import mekanism.api.chemical.gas.GasStack; -import mekanism.api.chemical.gas.IGasHandler; -import net.minecraft.core.Direction; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.tags.TagKey; -import net.minecraft.world.level.material.EmptyFluid; -import net.minecraft.world.level.material.Fluid; -import net.minecraftforge.fluids.FluidStack; -import net.minecraftforge.registries.ForgeRegistries; -import net.minecraftforge.registries.tags.ITag; -import net.minecraftforge.registries.tags.ITagManager; -import org.jetbrains.annotations.NotNull; - -import java.util.HashMap; - -import static igentuman.nc.NuclearCraft.forgeRl; - -public class Gas2FluidConverter implements IGasHandler { - - private FluidCapabilityHandler fluidCapability; - private Direction side; - - @Override - public int getTanks() { - return 1; - } - - @Override - public @NotNull GasStack getChemicalInTank(int tank) { - return getEmptyStack(); - } - - @Override - public void setChemicalInTank(int tank, @NotNull GasStack stack) { - - } - - @Override - public long getTankCapacity(int tank) { - return 100; - } - - @Override - public boolean isValid(int tank, @NotNull GasStack stack) { - return false; - } - - private String specialConvertRules(String input) - { - if(input.matches("clean_[a-z]+")) { - return input.substring(6)+"_clean_slurry"; - } - if(input.matches("dirty_[a-z]+")) { - return input.substring(6)+"_slurry"; - } - return input; - } - - private final HashMap gasFluidMap = new HashMap<>(); - - private FluidStack convert(GasStack stack) { - int amount = (int)stack.getAmount(); - if(amount <= 0) amount = 1000; - if(gasFluidMap.containsKey(stack.getType())) { - if(!(gasFluidMap.get(stack.getType()) instanceof EmptyFluid)) { - return new FluidStack(gasFluidMap.get(stack.getType()), amount); - } - } - String name = stack.getTypeRegistryName().getPath(); - name = specialConvertRules(name); - ITagManager tagManager = TagUtil.manager(ForgeRegistries.FLUIDS); - TagKey key = tagManager.createTagKey(forgeRl(name)); - ITag fluidITag = TagUtil.tag(ForgeRegistries.FLUIDS, key); - if(fluidITag.isEmpty()) { - return FluidStack.EMPTY; - } - FluidStack fluidStack; - try { - fluidStack = FluidStackIngredientCreator.INSTANCE - .from(fluidITag.getKey(), amount).getRepresentations().get(0); - } catch (Exception e) { - return FluidStack.EMPTY; - } - - gasFluidMap.put(stack.getType(), fluidStack.getFluid()); - return new FluidStack(gasFluidMap.get(stack.getType()), (int)stack.getAmount()); - } - - @Override - public @NotNull GasStack insertChemical(int tank, @NotNull GasStack stack, @NotNull Action action) { - FluidStack fluidStack = convert(stack); - if(fluidStack.isEmpty()) return stack; - for(int i = 0; i < fluidCapability.inputSlots; i++) { - if(!fluidCapability.haveAccessFromSide(side, i)) continue; - if(fluidCapability.isValidForInputSlot(i, fluidStack)) { - boolean doInsert = action.execute(); - FluidStack inserted = fluidCapability.insertFluidInternal(i, fluidStack, doInsert); - GasStack result = stack.copy(); - result.setAmount(inserted.getAmount()); - return result; - } - } - return stack; - } - - @Override - public @NotNull GasStack extractChemical(int tank, long amount, @NotNull Action action) { - return getEmptyStack(); - } - - public void setFluidHandler(FluidCapabilityHandler fluidCapability) { - this.fluidCapability = fluidCapability; - } - - public Gas2FluidConverter forSide(Direction side) { - this.side = side; - return this; - } - - @Override - public @NotNull GasStack getEmptyStack() { - return GasStack.EMPTY; - } -} diff --git a/src/main/java/igentuman/nc/handler/sided/capability/ItemCapabilityHandler.java b/src/main/java/igentuman/nc/handler/sided/capability/ItemCapabilityHandler.java index 64bd77d44..bb7b536a3 100644 --- a/src/main/java/igentuman/nc/handler/sided/capability/ItemCapabilityHandler.java +++ b/src/main/java/igentuman/nc/handler/sided/capability/ItemCapabilityHandler.java @@ -1,9 +1,11 @@ package igentuman.nc.handler.sided.capability; +import igentuman.api.platform.NCItemStacks; import igentuman.nc.handler.sided.SidedContentHandler; import igentuman.nc.handler.sided.SlotModePair; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; +import net.minecraft.core.HolderLookup; import net.minecraft.core.NonNullList; import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.ListTag; @@ -12,13 +14,14 @@ import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.state.properties.BlockStateProperties; -import net.minecraftforge.common.capabilities.ForgeCapabilities; -import net.minecraftforge.common.util.INBTSerializable; -import net.minecraftforge.common.util.LazyOptional; -import net.minecraftforge.items.IItemHandler; -import net.minecraftforge.items.IItemHandlerModifiable; -import net.minecraftforge.items.ItemHandlerHelper; -import net.minecraftforge.registries.ForgeRegistries; +import net.neoforged.neoforge.capabilities.Capabilities; +import igentuman.api.platform.NCSerialization; +import net.neoforged.neoforge.common.util.INBTSerializable; +import net.neoforged.neoforge.items.IItemHandler; +import net.neoforged.neoforge.items.IItemHandlerModifiable; +import net.neoforged.neoforge.items.ItemHandlerHelper; +import net.minecraft.core.registries.BuiltInRegistries; +import net.neoforged.neoforge.registries.NeoForgeRegistries; import org.jetbrains.annotations.NotNull; import javax.annotation.Nonnull; @@ -33,7 +36,7 @@ public class ItemCapabilityHandler extends AbstractCapabilityHandler implements public final HashMap> validItemsForSlot = new HashMap<>(); protected NonNullList stacks; protected ItemStack[] sortedStacks; - private final Map> handlerCache = new HashMap<>(); + private final Map handlerCache = new HashMap<>(); public final List holdedInputs = new ArrayList<>(); public ItemCapabilityHandler(int input, int output) { @@ -100,11 +103,11 @@ public ItemStack extractItem(int slot, int amount, boolean simulate) { } } else { if (!simulate) { - this.stacks.set(slot, ItemHandlerHelper.copyStackWithSize(existing, existing.getCount() - toExtract)); + this.stacks.set(slot, NCItemStacks.copyWithCount(existing, existing.getCount() - toExtract)); onContentsChanged(slot); } - return ItemHandlerHelper.copyStackWithSize(existing, toExtract); + return NCItemStacks.copyWithCount(existing, toExtract); } } @@ -119,7 +122,7 @@ public ItemStack insertItemInternal(int slot, @Nonnull ItemStack stack, boolean int limit = getStackLimit(slot, stack); if (!existing.isEmpty()) { - if (!(ItemHandlerHelper.canItemStacksStack(stack, existing) && existing.getCount() <= limit)) + if (!(NCItemStacks.canStack(stack, existing) && existing.getCount() <= limit)) return stack; limit -= existing.getCount(); @@ -132,14 +135,14 @@ public ItemStack insertItemInternal(int slot, @Nonnull ItemStack stack, boolean if (!simulate) { if (existing.isEmpty()) { - this.stacks.set(slot, reachedLimit ? ItemHandlerHelper.copyStackWithSize(stack, limit) : stack); + this.stacks.set(slot, reachedLimit ? NCItemStacks.copyWithCount(stack, limit) : stack); } else { existing.grow(reachedLimit ? limit : stack.getCount()); } onContentsChanged(slot); } - return reachedLimit ? ItemHandlerHelper.copyStackWithSize(stack, stack.getCount() - limit) : ItemStack.EMPTY; + return reachedLimit ? NCItemStacks.copyWithCount(stack, stack.getCount() - limit) : ItemStack.EMPTY; } @Override @@ -174,7 +177,7 @@ private int isValidForAnyInputSlot(ItemStack stack) { for (int i = 0; i < inputSlots; i++) { if (!isItemValid(i, stack)) continue; if (getStackInSlot(i).isEmpty()) return i; - if (ItemHandlerHelper.canItemStacksStack(getStackInSlot(i), stack) && getStackInSlot(i).getCount() < getSlotLimit(i)) { + if (NCItemStacks.canStack(getStackInSlot(i), stack) && getStackInSlot(i).getCount() < getSlotLimit(i)) { return i; } } @@ -183,7 +186,7 @@ private int isValidForAnyInputSlot(ItemStack stack) { protected boolean isValidForSlotInternal(ItemStack stack, int slot) { return getStackInSlot(slot).isEmpty() - || (ItemHandlerHelper.canItemStacksStack(getStackInSlot(slot), stack) + || (NCItemStacks.canStack(getStackInSlot(slot), stack) && getStackInSlot(slot).getCount() < getSlotLimit(slot)); } @@ -191,7 +194,7 @@ private int isValidForAnyOutputSlot(ItemStack stack) { for (int i = inputSlots; i < getSlots(); i++) { if (!isItemValid(i, stack)) continue; if (getStackInSlot(i).isEmpty()) return i; - if (ItemHandlerHelper.canItemStacksStack(getStackInSlot(i), stack) && getStackInSlot(i).getCount() < getSlotLimit(i)) { + if (NCItemStacks.canStack(getStackInSlot(i), stack) && getStackInSlot(i).getCount() < getSlotLimit(i)) { return i; } } @@ -206,13 +209,12 @@ private int getNextSlot(int currentSlot) { } @Override - public CompoundTag serializeNBT() { + public CompoundTag serializeNBT(HolderLookup.Provider provider) { ListTag nbtTagList = new ListTag(); for (int i = 0; i < stacks.size(); i++) { if (!stacks.get(i).isEmpty()) { - CompoundTag itemTag = new CompoundTag(); + CompoundTag itemTag = (CompoundTag) NCSerialization.saveItemStack(stacks.get(i), provider); itemTag.putInt("Slot", i); - stacks.get(i).save(itemTag); nbtTagList.add(itemTag); } } @@ -231,7 +233,7 @@ public void setSize(int size) { } @Override - public void deserializeNBT(CompoundTag nbt) { + public void deserializeNBT(HolderLookup.Provider provider, CompoundTag nbt) { setSize(nbt.contains("Size", Tag.TAG_INT) ? nbt.getInt("Size") : stacks.size()); ListTag tagList = nbt.getList("Items", Tag.TAG_COMPOUND); for (int i = 0; i < tagList.size(); i++) { @@ -239,7 +241,7 @@ public void deserializeNBT(CompoundTag nbt) { int slot = itemTags.getInt("Slot"); if (slot >= 0 && slot < stacks.size()) { - stacks.set(slot, ItemStack.of(itemTags)); + stacks.set(slot, NCSerialization.loadItemStack(provider, itemTags)); } } if (!nbt.getCompound("sideMap").isEmpty()) { @@ -260,19 +262,17 @@ protected void onContentsChanged(int slot) { } } - public LazyOptional getCapability(Direction side) { + public ItemHandlerWrapper getCapability(Direction side) { if(side == null) return globalCap(); if(!handlerCache.containsKey(side)) { - handlerCache.put(side, LazyOptional.of( - () -> new ItemHandlerWrapper(side,this, (i) -> outputAllowed(i, side), (i, s) -> inputAllowed(i, s, side)))); + handlerCache.put(side, new ItemHandlerWrapper(side, this, (i) -> outputAllowed(i, side), (i, s) -> inputAllowed(i, s, side))); } return handlerCache.get(side); } - LazyOptional globalCap; - private LazyOptional globalCap() { - + ItemHandlerWrapper globalCap; + private ItemHandlerWrapper globalCap() { if(globalCap == null) { - globalCap = LazyOptional.of(() -> new ItemHandlerWrapper(null, this, (i) -> outputAllowed(i, null), (i, s) -> inputAllowed(i, s, null))); + globalCap = new ItemHandlerWrapper(null, this, (i) -> outputAllowed(i, null), (i, s) -> inputAllowed(i, s, null)); } return globalCap; } @@ -319,21 +319,17 @@ public boolean pushItems(Direction dir) { } public boolean pushItems(Direction dir, boolean forceFlag, BlockPos pos) { - BlockEntity be = tile.getLevel().getExistingBlockEntity(pos.relative(dir)); - if(be == null) return false; - LazyOptional cap = be.getCapability(ForgeCapabilities.ITEM_HANDLER, dir.getOpposite()); - if(cap.isPresent()) { - IItemHandler handler = cap.orElse(null); - SidedContentHandler.RelativeDirection relativeDirection = SidedContentHandler.RelativeDirection.toRelative(dir, getFacing()); - for(SlotModePair pair : sideMap.get(relativeDirection.ordinal())) { - if(pair.getMode() == PUSH || (forceFlag && pair.getMode() == OUTPUT)) { - ItemStack stack = getStackInSlot(pair.getSlot()); - if(stack.isEmpty()) continue; - ItemStack remainder = ItemHandlerHelper.insertItem(handler, stack, false); - if(remainder.getCount() != stack.getCount()) { - setStackInSlot(pair.getSlot(), remainder); - return true; - } + IItemHandler handler = tile.getLevel().getCapability(Capabilities.ItemHandler.BLOCK, pos.relative(dir), dir.getOpposite()); + if(handler == null) return false; + SidedContentHandler.RelativeDirection relativeDirection = SidedContentHandler.RelativeDirection.toRelative(dir, getFacing()); + for(SlotModePair pair : sideMap.get(relativeDirection.ordinal())) { + if(pair.getMode() == PUSH || (forceFlag && pair.getMode() == OUTPUT)) { + ItemStack stack = getStackInSlot(pair.getSlot()); + if(stack.isEmpty()) continue; + ItemStack remainder = ItemHandlerHelper.insertItem(handler, stack, false); + if(remainder.getCount() != stack.getCount()) { + setStackInSlot(pair.getSlot(), remainder); + return true; } } } @@ -344,13 +340,8 @@ public boolean pullItems(Direction dir) { } public boolean pullItems(Direction dir, boolean forceFlag, BlockPos pos) { - BlockEntity be = tile.getLevel().getExistingBlockEntity(pos.relative(dir)); - if(be == null) return false; - LazyOptional cap = be.getCapability(ForgeCapabilities.ITEM_HANDLER, dir.getOpposite()); - if(!cap.isPresent()) { - return false; - } - IItemHandler handler = cap.orElse(null); + IItemHandler handler = tile.getLevel().getCapability(Capabilities.ItemHandler.BLOCK, pos.relative(dir), dir.getOpposite()); + if(handler == null) return false; SidedContentHandler.RelativeDirection relativeDirection = SidedContentHandler.RelativeDirection.toRelative(dir, getFacing()); for(SlotModePair pair : sideMap.get(relativeDirection.ordinal())) { if(pair.getMode() == PULL || (forceFlag && pair.getMode() == INPUT)) { @@ -380,7 +371,7 @@ public boolean isValidForOutputSlot(int i, ItemStack outputItem) { if (outputAllowed(i, null)) { ItemStack stack = getStackInSlot(i); if(stack.isEmpty()) return true; - return ItemHandlerHelper.canItemStacksStack(stack, outputItem) + return NCItemStacks.canStack(stack, outputItem) && stack.getMaxStackSize() >= outputItem.getCount() + stack.getCount(); } return false; @@ -388,19 +379,15 @@ public boolean isValidForOutputSlot(int i, ItemStack outputItem) { public boolean canPushExcessItems(int i, ItemStack outputItem) { for(Direction dir: Direction.values()) { - BlockEntity be = tile.getLevel().getExistingBlockEntity(tile.getBlockPos().relative(dir)); - if(be == null) continue; - LazyOptional cap = be.getCapability(ForgeCapabilities.ITEM_HANDLER, dir.getOpposite()); - if(cap.isPresent()) { - IItemHandler handler = cap.orElse(null); - SidedContentHandler.RelativeDirection relativeDirection = SidedContentHandler.RelativeDirection.toRelative(dir, getFacing()); - for(SlotModePair pair : sideMap.get(relativeDirection.ordinal())) { - if(pair.getSlot() != i) continue; - if(pair.getMode() == PUSH || pair.getMode() == PUSH_EXCESS) { - ItemStack remainder = ItemHandlerHelper.insertItem(handler, outputItem, true); - if(remainder.isEmpty()) { - return true; - } + IItemHandler handler = tile.getLevel().getCapability(Capabilities.ItemHandler.BLOCK, tile.getBlockPos().relative(dir), dir.getOpposite()); + if(handler == null) continue; + SidedContentHandler.RelativeDirection relativeDirection = SidedContentHandler.RelativeDirection.toRelative(dir, getFacing()); + for(SlotModePair pair : sideMap.get(relativeDirection.ordinal())) { + if(pair.getSlot() != i) continue; + if(pair.getMode() == PUSH || pair.getMode() == PUSH_EXCESS) { + ItemStack remainder = ItemHandlerHelper.insertItem(handler, outputItem, true); + if(remainder.isEmpty()) { + return true; } } } @@ -410,19 +397,15 @@ public boolean canPushExcessItems(int i, ItemStack outputItem) { public ItemStack pushExcessItems(int i, ItemStack outputItem) { for(Direction dir: Direction.values()) { - BlockEntity be = tile.getLevel().getExistingBlockEntity(tile.getBlockPos().relative(dir)); - if(be == null) continue; - LazyOptional cap = be.getCapability(ForgeCapabilities.ITEM_HANDLER, dir.getOpposite()); - if(cap.isPresent()) { - IItemHandler handler = cap.orElse(null); - SidedContentHandler.RelativeDirection relativeDirection = SidedContentHandler.RelativeDirection.toRelative(dir, getFacing()); - for(SlotModePair pair : sideMap.get(relativeDirection.ordinal())) { - if(pair.getSlot() != i) continue; - if(pair.getMode() == PUSH || pair.getMode() == PUSH_EXCESS) { - ItemStack remainder = ItemHandlerHelper.insertItem(handler, outputItem, true); - if(remainder.isEmpty()) { - return ItemHandlerHelper.insertItem(handler, outputItem, false); - } + IItemHandler handler = tile.getLevel().getCapability(Capabilities.ItemHandler.BLOCK, tile.getBlockPos().relative(dir), dir.getOpposite()); + if(handler == null) continue; + SidedContentHandler.RelativeDirection relativeDirection = SidedContentHandler.RelativeDirection.toRelative(dir, getFacing()); + for(SlotModePair pair : sideMap.get(relativeDirection.ordinal())) { + if(pair.getSlot() != i) continue; + if(pair.getMode() == PUSH || pair.getMode() == PUSH_EXCESS) { + ItemStack remainder = ItemHandlerHelper.insertItem(handler, outputItem, true); + if(remainder.isEmpty()) { + return ItemHandlerHelper.insertItem(handler, outputItem, false); } } } @@ -455,7 +438,7 @@ public void voidSlot(int i) { public Object[] getSlotContent(int slotId) { ItemStack stack = getStackInSlot(slotId); if(stack.isEmpty()) return new Object[]{}; - return new Object[]{stack.getCount(), ForgeRegistries.ITEMS.getKey(stack.getItem()).toString()}; + return new Object[]{stack.getCount(), BuiltInRegistries.ITEM.getKey(stack.getItem()).toString()}; } public boolean canPush() { diff --git a/src/main/java/igentuman/nc/handler/sided/capability/ItemHandlerWrapper.java b/src/main/java/igentuman/nc/handler/sided/capability/ItemHandlerWrapper.java index f2cc73fed..1b99492fe 100644 --- a/src/main/java/igentuman/nc/handler/sided/capability/ItemHandlerWrapper.java +++ b/src/main/java/igentuman/nc/handler/sided/capability/ItemHandlerWrapper.java @@ -3,7 +3,7 @@ import igentuman.nc.handler.sided.SlotModePair; import net.minecraft.core.Direction; import net.minecraft.world.item.ItemStack; -import net.minecraftforge.items.IItemHandlerModifiable; +import net.neoforged.neoforge.items.IItemHandlerModifiable; import javax.annotation.Nonnull; import java.util.function.BiPredicate; diff --git a/src/main/java/igentuman/nc/handler/sided/capability/NcFluidTank.java b/src/main/java/igentuman/nc/handler/sided/capability/NcFluidTank.java index 6d93af55d..13e63346a 100644 --- a/src/main/java/igentuman/nc/handler/sided/capability/NcFluidTank.java +++ b/src/main/java/igentuman/nc/handler/sided/capability/NcFluidTank.java @@ -1,8 +1,10 @@ package igentuman.nc.handler.sided.capability; +import igentuman.api.platform.NCSerialization; +import net.minecraft.core.HolderLookup; import net.minecraft.nbt.CompoundTag; -import net.minecraftforge.fluids.FluidStack; -import net.minecraftforge.fluids.capability.templates.FluidTank; +import net.neoforged.neoforge.fluids.FluidStack; +import net.neoforged.neoforge.fluids.capability.templates.FluidTank; public class NcFluidTank extends FluidTank { @@ -11,16 +13,20 @@ public NcFluidTank(int capacity) { } @Override - public NcFluidTank readFromNBT(CompoundTag nbt) { - FluidStack fluid = FluidStack.loadFluidStackFromNBT(nbt); + public NcFluidTank readFromNBT(HolderLookup.Provider provider, CompoundTag nbt) { + FluidStack fluid = NCSerialization.loadFluidStack(provider, nbt.getCompound("Fluid")); setFluid(fluid); - capacity = nbt.getInt("Capacity"); + if (nbt.contains("Capacity")) { + capacity = nbt.getInt("Capacity"); + } return this; } @Override - public CompoundTag writeToNBT(CompoundTag nbt) { - fluid.writeToNBT(nbt); + public CompoundTag writeToNBT(HolderLookup.Provider provider, CompoundTag nbt) { + if (!fluid.isEmpty()) { + nbt.put("Fluid", NCSerialization.saveFluidStack(fluid, provider)); + } nbt.putInt("Capacity", capacity); return nbt; } diff --git a/src/main/java/igentuman/nc/handler/sided/capability/Slurry2FluidConverter.java b/src/main/java/igentuman/nc/handler/sided/capability/Slurry2FluidConverter.java deleted file mode 100644 index 0026d0da7..000000000 --- a/src/main/java/igentuman/nc/handler/sided/capability/Slurry2FluidConverter.java +++ /dev/null @@ -1,129 +0,0 @@ -package igentuman.nc.handler.sided.capability; - -import igentuman.nc.recipes.ingredient.creator.FluidStackIngredientCreator; -import igentuman.nc.util.TagUtil; -import mekanism.api.Action; -import mekanism.api.chemical.slurry.ISlurryHandler; -import mekanism.api.chemical.slurry.Slurry; -import mekanism.api.chemical.slurry.SlurryStack; -import net.minecraft.core.Direction; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.tags.TagKey; -import net.minecraft.world.level.material.EmptyFluid; -import net.minecraft.world.level.material.Fluid; -import net.minecraftforge.fluids.FluidStack; -import net.minecraftforge.registries.ForgeRegistries; -import net.minecraftforge.registries.tags.ITag; -import net.minecraftforge.registries.tags.ITagManager; -import org.jetbrains.annotations.NotNull; - -import java.util.HashMap; - -import static igentuman.nc.NuclearCraft.forgeRl; - -public class Slurry2FluidConverter implements ISlurryHandler { - - private FluidCapabilityHandler fluidCapability; - private Direction side; - - @Override - public int getTanks() { - return 1; - } - - @Override - public @NotNull SlurryStack getChemicalInTank(int tank) { - return getEmptyStack(); - } - - @Override - public void setChemicalInTank(int tank, @NotNull SlurryStack stack) { - - } - - @Override - public long getTankCapacity(int tank) { - return 100; - } - - @Override - public boolean isValid(int tank, @NotNull SlurryStack stack) { - return false; - } - - private String specialConvertRules(String input) - { - if(input.matches("clean_[a-z]+")) { - return input.substring(6)+"_clean_slurry"; - } - if(input.matches("dirty_[a-z]+")) { - return input.substring(6)+"_slurry"; - } - return input; - } - - private HashMap gasFluidMap = new HashMap<>(); - - private FluidStack convert(SlurryStack stack) { - int amount = (int)stack.getAmount(); - if(amount <= 0) amount = 1000; - if(gasFluidMap.containsKey(stack.getType())) { - if(!(gasFluidMap.get(stack.getType()) instanceof EmptyFluid)) { - return new FluidStack(gasFluidMap.get(stack.getType()), amount); - } - } - String name = stack.getTypeRegistryName().getPath(); - name = specialConvertRules(name); - ITagManager tagManager = TagUtil.manager(ForgeRegistries.FLUIDS); - TagKey key = tagManager.createTagKey(forgeRl(name)); - ITag fluidITag = TagUtil.tag(ForgeRegistries.FLUIDS, key); - if(fluidITag.isEmpty()) { - return FluidStack.EMPTY; - } - FluidStack fluidStack; - try { - fluidStack = FluidStackIngredientCreator.INSTANCE - .from(fluidITag.getKey(), amount).getRepresentations().get(0); - } catch (Exception e) { - return FluidStack.EMPTY; - } - - gasFluidMap.put(stack.getType(), fluidStack.getFluid()); - return new FluidStack(gasFluidMap.get(stack.getType()), (int)stack.getAmount()); - } - - @Override - public @NotNull SlurryStack insertChemical(int tank, @NotNull SlurryStack stack, @NotNull Action action) { - FluidStack fluidStack = convert(stack); - if(fluidStack.isEmpty()) return stack; - for(int i = 0; i < fluidCapability.inputSlots; i++) { - if(!fluidCapability.haveAccessFromSide(side, i)) continue; - if(fluidCapability.isValidForInputSlot(i, fluidStack)) { - boolean doInsert = action.execute(); - FluidStack inserted = fluidCapability.insertFluidInternal(i, fluidStack, doInsert); - stack.setAmount(inserted.getAmount()); - return stack; - } - } - return stack; - } - - @Override - public @NotNull SlurryStack extractChemical(int tank, long amount, @NotNull Action action) { - return getEmptyStack(); - } - - public void setFluidHandler(FluidCapabilityHandler fluidCapability) { - this.fluidCapability = fluidCapability; - } - - public Slurry2FluidConverter forSide(Direction side) { - this.side = side; - return this; - } - - @Override - public @NotNull SlurryStack getEmptyStack() { - return SlurryStack.EMPTY; - } -} diff --git a/src/main/java/igentuman/nc/item/BarrelBlockItem.java b/src/main/java/igentuman/nc/item/BarrelBlockItem.java index 28ae1a456..7d6edc0a1 100644 --- a/src/main/java/igentuman/nc/item/BarrelBlockItem.java +++ b/src/main/java/igentuman/nc/item/BarrelBlockItem.java @@ -1,22 +1,20 @@ package igentuman.nc.item; +import igentuman.api.platform.NCNames; import igentuman.nc.content.storage.BarrelBlocks; -import igentuman.nc.util.capability.CapabilityUtils; import net.minecraft.ChatFormatting; -import net.minecraft.nbt.CompoundTag; import net.minecraft.network.chat.Component; import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.EquipmentSlot; import net.minecraft.world.item.BlockItem; +import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.TooltipFlag; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.Block; -import net.minecraftforge.common.capabilities.ForgeCapabilities; -import net.minecraftforge.common.capabilities.ICapabilityProvider; -import net.minecraftforge.fluids.FluidStack; -import net.minecraftforge.fluids.capability.IFluidHandlerItem; -import net.minecraftforge.fluids.capability.templates.FluidHandlerItemStack; +import net.neoforged.neoforge.capabilities.Capabilities; +import net.neoforged.neoforge.fluids.FluidStack; +import net.neoforged.neoforge.fluids.capability.IFluidHandlerItem; import javax.annotation.Nonnull; import java.util.List; @@ -52,27 +50,22 @@ public boolean canEquip(ItemStack stack, EquipmentSlot armorType, Entity entity) } - @Override - public ICapabilityProvider initCapabilities(ItemStack stack, CompoundTag nbt) { - return new FluidHandlerItemStack(stack, getCapacity()); - } - public int getCapacity() { return BarrelBlocks.all().get(code()).config().getCapacity(); } public IFluidHandlerItem getFluid(ItemStack stack) { - return CapabilityUtils.getPresentCapability(stack, ForgeCapabilities.FLUID_HANDLER_ITEM); + return stack.getCapability(Capabilities.FluidHandler.ITEM); } public String code() { - return asItem().toString(); + return NCNames.of(asItem()); } @Override - public void appendHoverText(ItemStack stack, @javax.annotation.Nullable Level world, List list, TooltipFlag flag) + public void appendHoverText(ItemStack stack, Item.TooltipContext pContext, List list, TooltipFlag flag) { int storage = BarrelBlocks.all().get(code()).config().getCapacity() * 1000; FluidStack fluid = getFluid(stack).getFluidInTank(0); diff --git a/src/main/java/igentuman/nc/item/BatteryBlockItem.java b/src/main/java/igentuman/nc/item/BatteryBlockItem.java index bf3bc658b..4d02af50e 100644 --- a/src/main/java/igentuman/nc/item/BatteryBlockItem.java +++ b/src/main/java/igentuman/nc/item/BatteryBlockItem.java @@ -1,11 +1,8 @@ package igentuman.nc.item; import igentuman.nc.content.energy.BatteryBlocks; -import igentuman.nc.handler.ItemEnergyHandler; -import igentuman.nc.util.capability.CapabilityUtils; import igentuman.nc.util.capability.CustomEnergyStorage; import net.minecraft.ChatFormatting; -import net.minecraft.nbt.CompoundTag; import net.minecraft.network.chat.Component; import net.minecraft.util.Mth; import net.minecraft.world.entity.Entity; @@ -13,8 +10,8 @@ import net.minecraft.world.item.*; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.Block; -import net.minecraftforge.common.capabilities.ForgeCapabilities; -import net.minecraftforge.common.capabilities.ICapabilityProvider; +import net.neoforged.neoforge.capabilities.Capabilities; +import net.neoforged.neoforge.energy.IEnergyStorage; import javax.annotation.Nonnull; import java.util.List; @@ -56,18 +53,14 @@ public int getBarColor(ItemStack pStack) return Mth.hsvToRgb(Math.max(0.0F, getBarWidth(pStack)/(float)MAX_BAR_WIDTH)/3.0F, 1.0F, 1.0F); } - protected int getEnergyMaxStorage() { + public int getEnergyMaxStorage() { return ENERGY_STORAGE.getCapacityFor(toString()); } - @Override - public ICapabilityProvider initCapabilities(ItemStack stack, CompoundTag nbt) { - return new ItemEnergyHandler(stack, getEnergyMaxStorage(), getEnergyMaxStorage(), getEnergyMaxStorage()); - } - public CustomEnergyStorage getEnergy(ItemStack stack) { - return (CustomEnergyStorage) CapabilityUtils.getPresentCapability(stack, ForgeCapabilities.ENERGY); + IEnergyStorage storage = stack.getCapability(Capabilities.EnergyStorage.ITEM); + return (CustomEnergyStorage) storage; } @Override @@ -78,7 +71,7 @@ public int getBarWidth(ItemStack stack) { } @Override - public void appendHoverText(ItemStack stack, @javax.annotation.Nullable Level world, List list, TooltipFlag flag) + public void appendHoverText(ItemStack stack, Item.TooltipContext pContext, List list, TooltipFlag flag) { if(isGtLoaded() && isGTEUCapEnabled()) { list.add(__("tooltip.nc.eu_energy_stored", formatEUEnergy(getEnergy(stack).getEnergyStored()), formatEUEnergy(getEnergyMaxStorage())).withStyle(ChatFormatting.GOLD)); diff --git a/src/main/java/igentuman/nc/item/BatteryItem.java b/src/main/java/igentuman/nc/item/BatteryItem.java index 0a5af547b..6b395754f 100644 --- a/src/main/java/igentuman/nc/item/BatteryItem.java +++ b/src/main/java/igentuman/nc/item/BatteryItem.java @@ -1,10 +1,7 @@ package igentuman.nc.item; -import igentuman.nc.handler.ItemEnergyHandler; -import igentuman.nc.util.capability.CapabilityUtils; import igentuman.nc.util.capability.CustomEnergyStorage; import net.minecraft.ChatFormatting; -import net.minecraft.nbt.CompoundTag; import net.minecraft.network.chat.Component; import net.minecraft.util.Mth; import net.minecraft.world.entity.Entity; @@ -13,8 +10,8 @@ import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.TooltipFlag; import net.minecraft.world.level.Level; -import net.minecraftforge.common.capabilities.ForgeCapabilities; -import net.minecraftforge.common.capabilities.ICapabilityProvider; +import net.neoforged.neoforge.capabilities.Capabilities; +import net.neoforged.neoforge.energy.IEnergyStorage; import javax.annotation.Nonnull; import java.util.List; @@ -56,18 +53,14 @@ public int getBarColor(ItemStack pStack) return Mth.hsvToRgb(Math.max(0.0F, getBarWidth(pStack)/(float)MAX_BAR_WIDTH)/3.0F, 1.0F, 1.0F); } - protected int getEnergyMaxStorage() { + public int getEnergyMaxStorage() { return ENERGY_STORAGE.getCapacityFor(toString()); } - @Override - public ICapabilityProvider initCapabilities(ItemStack stack, CompoundTag nbt) { - return new ItemEnergyHandler(stack, getEnergyMaxStorage(), getEnergyMaxStorage(), getEnergyMaxStorage()); - } - public CustomEnergyStorage getEnergy(ItemStack stack) { - return (CustomEnergyStorage) CapabilityUtils.getPresentCapability(stack, ForgeCapabilities.ENERGY); + IEnergyStorage storage = stack.getCapability(Capabilities.EnergyStorage.ITEM); + return (CustomEnergyStorage) storage; } @Override @@ -78,7 +71,7 @@ public int getBarWidth(ItemStack stack) { } @Override - public void appendHoverText(ItemStack stack, @javax.annotation.Nullable Level world, List list, TooltipFlag flag) + public void appendHoverText(ItemStack stack, Item.TooltipContext pContext, List list, TooltipFlag flag) { if(isGtLoaded() && isGTEUCapEnabled()) { list.add(__("tooltip.nc.eu_energy_stored", formatEUEnergy(getEnergy(stack).getEnergyStored()), formatEUEnergy(getEnergyMaxStorage())).withStyle(ChatFormatting.GOLD)); diff --git a/src/main/java/igentuman/nc/item/ContainerBlockItem.java b/src/main/java/igentuman/nc/item/ContainerBlockItem.java index c93f13667..efa588f85 100644 --- a/src/main/java/igentuman/nc/item/ContainerBlockItem.java +++ b/src/main/java/igentuman/nc/item/ContainerBlockItem.java @@ -1,11 +1,10 @@ package igentuman.nc.item; +import igentuman.api.platform.NCItemStacks; +import igentuman.api.platform.NCNames; import igentuman.nc.container.StorageContainerItemContainer; import igentuman.nc.content.storage.ContainerBlocks; -import igentuman.nc.util.capability.CapabilityUtils; -import igentuman.nc.util.capability.ItemCapabilityProvider; import net.minecraft.ChatFormatting; -import net.minecraft.nbt.CompoundTag; import net.minecraft.network.chat.Component; import net.minecraft.server.level.ServerPlayer; import net.minecraft.world.InteractionHand; @@ -17,14 +16,14 @@ import net.minecraft.world.entity.player.Player; import net.minecraft.world.inventory.AbstractContainerMenu; import net.minecraft.world.item.BlockItem; +import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.TooltipFlag; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.Block; -import net.minecraftforge.common.capabilities.ForgeCapabilities; -import net.minecraftforge.common.capabilities.ICapabilityProvider; -import net.minecraftforge.items.IItemHandler; -import net.minecraftforge.network.NetworkHooks; +import net.neoforged.neoforge.capabilities.Capabilities; +import net.neoforged.neoforge.items.IItemHandler; + import javax.annotation.Nonnull; import java.util.List; @@ -46,7 +45,7 @@ public InteractionResultHolder use(Level level, Player player, Intera if (!player.isSteppingCarefully()) { if (!level.isClientSide) { - NetworkHooks.openScreen((ServerPlayer) player, new MenuProvider() { + ((ServerPlayer) player).openMenu(new MenuProvider() { @Override public Component getDisplayName() { return __("container.nc.storage"); @@ -84,26 +83,21 @@ public boolean canEquip(ItemStack stack, EquipmentSlot armorType, Entity entity) public String code() { - return asItem().toString(); + return NCNames.of(asItem()); } @Override - public void appendHoverText(ItemStack stack, @javax.annotation.Nullable Level world, List list, TooltipFlag flag) + public void appendHoverText(ItemStack stack, Item.TooltipContext pContext, List list, TooltipFlag flag) { list.add(__("tooltip.nc.content_saved").withStyle(ChatFormatting.GRAY)); list.add(__("tooltip.nc.use_multitool").withStyle(ChatFormatting.YELLOW)); } public IItemHandler getInventory(ItemStack stack) { - return (IItemHandler) CapabilityUtils.getPresentCapability(stack, ForgeCapabilities.ITEM_HANDLER); - } - - @Override - public ICapabilityProvider initCapabilities(ItemStack stack, CompoundTag nbt) { - return new ItemCapabilityProvider(stack, getInventorySize(), 64); + return stack.getCapability(Capabilities.ItemHandler.ITEM); } - private int getInventorySize() { + public int getInventorySize() { return getRows()*getColls(); } @@ -117,10 +111,10 @@ public int getColls() { public UUID getUUID(ItemStack stack) { try { - if(!stack.getOrCreateTag().contains("uuid")) { - stack.getOrCreateTag().putUUID("uuid", UUID.randomUUID()); + if(!NCItemStacks.contains(stack, "uuid")) { + NCItemStacks.putUUID(stack, "uuid", UUID.randomUUID()); } - return stack.getOrCreateTag().getUUID("uuid"); + return NCItemStacks.getUUID(stack, "uuid"); } catch(Exception e) { return null; } @@ -131,19 +125,19 @@ public String getTier() { } public void toggleMagnetMode(ItemStack stack) { - if(!stack.getOrCreateTag().contains("magnet")) { - stack.getOrCreateTag().putBoolean("magnet", true); + if(!NCItemStacks.contains(stack, "magnet")) { + NCItemStacks.putBoolean(stack, "magnet", true); } else { - boolean mode = stack.getOrCreateTag().getBoolean("magnet"); - stack.getOrCreateTag().putBoolean("magnet", !mode); + boolean mode = NCItemStacks.getBoolean(stack, "magnet"); + NCItemStacks.putBoolean(stack, "magnet", !mode); } } public boolean isMagnetModeEnabled(ItemStack stack) { - if(!stack.getOrCreateTag().contains("magnet")) { - stack.getOrCreateTag().putBoolean("magnet", false); + if(!NCItemStacks.contains(stack, "magnet")) { + NCItemStacks.putBoolean(stack, "magnet", false); return false; } - return stack.getOrCreateTag().getBoolean("magnet"); + return NCItemStacks.getBoolean(stack, "magnet"); } } diff --git a/src/main/java/igentuman/nc/item/DosimiterItem.java b/src/main/java/igentuman/nc/item/DosimiterItem.java index 1aa284b3b..41a490217 100644 --- a/src/main/java/igentuman/nc/item/DosimiterItem.java +++ b/src/main/java/igentuman/nc/item/DosimiterItem.java @@ -1,7 +1,7 @@ package igentuman.nc.item; import igentuman.nc.radiation.data.PlayerRadiation; -import igentuman.nc.radiation.data.PlayerRadiationProvider; +import igentuman.nc.setup.registration.NCAttachments; import net.minecraft.advancements.CriteriaTriggers; import net.minecraft.network.chat.Component; import net.minecraft.server.level.ServerPlayer; @@ -28,8 +28,7 @@ public DosimiterItem(Properties props) public InteractionResultHolder use(@NotNull Level world, Player player, @NotNull InteractionHand hand) { ItemStack stack = player.getItemInHand(hand); if (!world.isClientSide()) { - PlayerRadiation radiationCap = player.getCapability(PlayerRadiationProvider.PLAYER_RADIATION).orElse(null); - if(radiationCap == null) return InteractionResultHolder.sidedSuccess(stack, world.isClientSide); + PlayerRadiation radiationCap = player.getData(NCAttachments.PLAYER_RADIATION.get()); long radiation = radiationCap.getRadiation(); player.sendSystemMessage(__("message.nc.player_radiation_contamination", formatRads(radiation))); CriteriaTriggers.USING_ITEM.trigger((ServerPlayer) player, stack); diff --git a/src/main/java/igentuman/nc/item/HEVItem.java b/src/main/java/igentuman/nc/item/HEVItem.java index d8d3b4284..607592000 100644 --- a/src/main/java/igentuman/nc/item/HEVItem.java +++ b/src/main/java/igentuman/nc/item/HEVItem.java @@ -1,24 +1,24 @@ package igentuman.nc.item; -import igentuman.nc.content.ArmorMaterials; -import igentuman.nc.handler.ItemEnergyHandler; -import igentuman.nc.util.capability.CapabilityUtils; import igentuman.nc.util.capability.CustomEnergyStorage; import igentuman.nc.util.TextUtils; import net.minecraft.ChatFormatting; -import net.minecraft.nbt.CompoundTag; +import net.minecraft.core.Holder; import net.minecraft.network.chat.Component; import net.minecraft.util.Mth; import net.minecraft.world.effect.MobEffectInstance; import net.minecraft.world.effect.MobEffects; +import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.EquipmentSlot; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.ArmorItem; +import net.minecraft.world.item.ArmorMaterial; +import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.TooltipFlag; import net.minecraft.world.level.Level; -import net.minecraftforge.common.capabilities.ForgeCapabilities; -import net.minecraftforge.common.capabilities.ICapabilityProvider; +import net.neoforged.neoforge.capabilities.Capabilities; +import net.neoforged.neoforge.energy.IEnergyStorage; import java.util.List; @@ -27,8 +27,8 @@ public class HEVItem extends ArmorItem { - public HEVItem(ArmorMaterials armorMaterials, ArmorItem.Type type, Properties hazmatProps) { - super(armorMaterials, type, hazmatProps); + public HEVItem(Holder armorMaterial, ArmorItem.Type type, Properties hazmatProps) { + super(armorMaterial, type, hazmatProps); } @Override @@ -43,7 +43,7 @@ public boolean isDamageable(ItemStack stack) return false; } - protected int getEnergyMaxStorage() { + public int getEnergyMaxStorage() { return 1000000; } @@ -55,13 +55,8 @@ public int getBarWidth(ItemStack stack) { } @Override - public ICapabilityProvider initCapabilities(ItemStack stack, CompoundTag nbt) { - return new ItemEnergyHandler(stack, getEnergyMaxStorage(), 5000, getEnergyMaxStorage()/4); - } - - @Override - public void onInventoryTick(ItemStack st, Level level, Player player, int slotIndex, int selectedIndex) { - if (charged(st)) { + public void inventoryTick(ItemStack st, Level level, Entity entity, int slotId, boolean isSelected) { + if (entity instanceof Player player && charged(st)) { if (st.is(HEV_CHEST.get()) && player.getItemBySlot(EquipmentSlot.CHEST).equals(st)) { player.addEffect(new MobEffectInstance(MobEffects.ABSORPTION, 1, 1, false, false)); } @@ -80,11 +75,12 @@ private boolean charged(ItemStack st) { public CustomEnergyStorage getEnergy(ItemStack stack) { - return (CustomEnergyStorage) CapabilityUtils.getPresentCapability(stack, ForgeCapabilities.ENERGY); + IEnergyStorage storage = stack.getCapability(Capabilities.EnergyStorage.ITEM); + return (CustomEnergyStorage) storage; } @Override - public void appendHoverText(ItemStack stack, @javax.annotation.Nullable Level world, List list, TooltipFlag flag) + public void appendHoverText(ItemStack stack, Item.TooltipContext pContext, List list, TooltipFlag flag) { list.add(__("tooltip.nc.energy_stored", formatEnergy(getEnergy(stack).getEnergyStored()), formatEnergy(getEnergyMaxStorage())).withStyle(ChatFormatting.BLUE)); list.add(__("tooltip.nc.hev.desc").withStyle(ChatFormatting.AQUA)); diff --git a/src/main/java/igentuman/nc/item/HazmatItem.java b/src/main/java/igentuman/nc/item/HazmatItem.java index da82651d2..49907f868 100644 --- a/src/main/java/igentuman/nc/item/HazmatItem.java +++ b/src/main/java/igentuman/nc/item/HazmatItem.java @@ -1,11 +1,12 @@ package igentuman.nc.item; -import igentuman.nc.content.ArmorMaterials; +import net.minecraft.core.Holder; import net.minecraft.world.item.ArmorItem; +import net.minecraft.world.item.ArmorMaterial; public class HazmatItem extends ArmorItem { - public HazmatItem(ArmorMaterials armorMaterials, Type type, Properties hazmatProps) { - super(armorMaterials, type, hazmatProps); + public HazmatItem(Holder armorMaterial, Type type, Properties hazmatProps) { + super(armorMaterial, type, hazmatProps); } } diff --git a/src/main/java/igentuman/nc/item/ItemFuel.java b/src/main/java/igentuman/nc/item/ItemFuel.java index f5ce06b53..97f21deec 100644 --- a/src/main/java/igentuman/nc/item/ItemFuel.java +++ b/src/main/java/igentuman/nc/item/ItemFuel.java @@ -9,7 +9,6 @@ import net.minecraft.world.item.TooltipFlag; import net.minecraft.world.level.Level; -import javax.annotation.Nullable; import java.util.List; import static igentuman.nc.handler.event.client.InputEvents.DESCRIPTIONS_SHOW; @@ -51,7 +50,7 @@ public ItemFuel initDefinition() } @Override - public void appendHoverText(ItemStack stack, @Nullable Level world, List list, TooltipFlag flag) + public void appendHoverText(ItemStack stack, Item.TooltipContext pContext, List list, TooltipFlag flag) { initDefinition(); if(subType.equals("_tr")) { diff --git a/src/main/java/igentuman/nc/item/MultitoolItem.java b/src/main/java/igentuman/nc/item/MultitoolItem.java index f2f957876..9fe0618e8 100644 --- a/src/main/java/igentuman/nc/item/MultitoolItem.java +++ b/src/main/java/igentuman/nc/item/MultitoolItem.java @@ -1,5 +1,6 @@ package igentuman.nc.item; +import igentuman.api.platform.NCLevels; import net.minecraft.ChatFormatting; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; @@ -19,7 +20,6 @@ import org.jetbrains.annotations.NotNull; import javax.annotation.Nonnull; -import javax.annotation.Nullable; import java.util.List; import static igentuman.nc.compat.mekanism.MekInteractions.handleMultitoolInteractionWithMek; @@ -28,7 +28,7 @@ public class MultitoolItem extends Item { - private int burnTime = -1; + private int burnTime = 0; private boolean isHidden = false; public MultitoolItem() @@ -102,7 +102,7 @@ public InteractionResult useOn(UseOnContext context) { } BlockPos pos = context.getClickedPos(); Direction side = context.getClickedFace(); - BlockEntity be = world.getExistingBlockEntity(pos); + BlockEntity be = NCLevels.getExistingBlockEntity(world, pos); if(isMekanismLoaded() && handleMultitoolInteractionWithMek(be, player, side)) { return InteractionResult.SUCCESS; } @@ -110,7 +110,7 @@ public InteractionResult useOn(UseOnContext context) { } @Override - public void appendHoverText(ItemStack stack, @Nullable Level world, List list, TooltipFlag flag) + public void appendHoverText(ItemStack stack, Item.TooltipContext pContext, List list, TooltipFlag flag) { list.add(__("tooltip.nc.multitool.desc").withStyle(ChatFormatting.YELLOW)); list.add(__("tooltip.nc.multitool.shift.desc").withStyle(ChatFormatting.YELLOW)); diff --git a/src/main/java/igentuman/nc/item/MusicDiscItem.java b/src/main/java/igentuman/nc/item/MusicDiscItem.java deleted file mode 100644 index 445cd2e31..000000000 --- a/src/main/java/igentuman/nc/item/MusicDiscItem.java +++ /dev/null @@ -1,14 +0,0 @@ -package igentuman.nc.item; - -import net.minecraft.sounds.SoundEvent; -import net.minecraft.world.item.Rarity; -import net.minecraft.world.item.RecordItem; - -import java.util.function.Supplier; - -public class MusicDiscItem extends RecordItem { - - public MusicDiscItem(int pAnalogOutput, Supplier pSound, Properties pProperties, int pLengthInSeconds) { - super(pAnalogOutput, pSound, pProperties.rarity(Rarity.RARE).stacksTo(1), pLengthInSeconds); - } -} diff --git a/src/main/java/igentuman/nc/item/NCBGemItem.java b/src/main/java/igentuman/nc/item/NCBGemItem.java index 7d3a6ce7f..a7b05a2a9 100644 --- a/src/main/java/igentuman/nc/item/NCBGemItem.java +++ b/src/main/java/igentuman/nc/item/NCBGemItem.java @@ -1,5 +1,6 @@ package igentuman.nc.item; +import igentuman.api.platform.NCNames; import igentuman.nc.content.materials.Gems; import net.minecraft.world.flag.FeatureFlagSet; import net.minecraft.world.item.Item; @@ -12,6 +13,6 @@ public NCBGemItem(Properties pProperties) { @Override public boolean isEnabled(@NotNull FeatureFlagSet pEnabledFeatures) { - return Gems.get().registered().containsKey(this.toString().replace("_gem", "")); + return Gems.get().registered().containsKey(NCNames.of(this).replace("_gem", "")); } } diff --git a/src/main/java/igentuman/nc/item/NCBaseItem.java b/src/main/java/igentuman/nc/item/NCBaseItem.java index f2f40a67b..c6b09eb03 100644 --- a/src/main/java/igentuman/nc/item/NCBaseItem.java +++ b/src/main/java/igentuman/nc/item/NCBaseItem.java @@ -12,7 +12,7 @@ public class NCBaseItem extends Item { - private int burnTime = -1; + private int burnTime = 0; private boolean isHidden = false; public NCBaseItem() @@ -61,7 +61,7 @@ public boolean isBookEnchantable(ItemStack stack, ItemStack book) public boolean canEquip(ItemStack stack, EquipmentSlot armorType, Entity entity) { - return Mob.getEquipmentSlotForItem(stack)==armorType||getEquipmentSlot(stack)==armorType; + return entity instanceof net.minecraft.world.entity.LivingEntity living && living.getEquipmentSlotForItem(stack) == armorType; } @Override diff --git a/src/main/java/igentuman/nc/item/NCBlockItem.java b/src/main/java/igentuman/nc/item/NCBlockItem.java index 5e28f1dce..5bd27680d 100644 --- a/src/main/java/igentuman/nc/item/NCBlockItem.java +++ b/src/main/java/igentuman/nc/item/NCBlockItem.java @@ -1,5 +1,6 @@ package igentuman.nc.item; +import igentuman.api.platform.NCNames; import igentuman.nc.content.materials.Blocks; import net.minecraft.world.flag.FeatureFlagSet; import net.minecraft.world.item.Item; @@ -12,6 +13,6 @@ public NCBlockItem(Properties pProperties) { @Override public boolean isEnabled(@NotNull FeatureFlagSet pEnabledFeatures) { - return Blocks.get().registered().containsKey(this.toString().replace("_block", "")); + return Blocks.get().registered().containsKey(NCNames.of(this).replace("_block", "")); } } diff --git a/src/main/java/igentuman/nc/item/NCBucketItem.java b/src/main/java/igentuman/nc/item/NCBucketItem.java index f269a7a75..73912631d 100644 --- a/src/main/java/igentuman/nc/item/NCBucketItem.java +++ b/src/main/java/igentuman/nc/item/NCBucketItem.java @@ -1,23 +1,12 @@ package igentuman.nc.item; -import net.minecraft.nbt.CompoundTag; import net.minecraft.world.item.BucketItem; -import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.material.Fluid; -import net.minecraftforge.common.capabilities.ICapabilityProvider; -import net.minecraftforge.fluids.capability.wrappers.FluidBucketWrapper; -import javax.annotation.Nullable; import java.util.function.Supplier; -public class NCBucketItem extends BucketItem{ +public class NCBucketItem extends BucketItem { public NCBucketItem(Supplier supplier, Properties builder) { - super(supplier, builder); - } - - @Override - public ICapabilityProvider initCapabilities(ItemStack stack, @Nullable CompoundTag nbt) - { - return new FluidBucketWrapper(stack); + super(supplier.get(), builder); } } diff --git a/src/main/java/igentuman/nc/item/NCChunkItem.java b/src/main/java/igentuman/nc/item/NCChunkItem.java index 7e449dd35..d7765e606 100644 --- a/src/main/java/igentuman/nc/item/NCChunkItem.java +++ b/src/main/java/igentuman/nc/item/NCChunkItem.java @@ -1,5 +1,6 @@ package igentuman.nc.item; +import igentuman.api.platform.NCNames; import igentuman.nc.content.materials.Chunks; import net.minecraft.world.flag.FeatureFlagSet; import net.minecraft.world.item.Item; @@ -12,6 +13,6 @@ public NCChunkItem(Properties pProperties) { @Override public boolean isEnabled(@NotNull FeatureFlagSet pEnabledFeatures) { - return Chunks.get().registered().containsKey(this.toString().replace("_chunk", "")); + return Chunks.get().registered().containsKey(NCNames.of(this).replace("_chunk", "")); } } diff --git a/src/main/java/igentuman/nc/item/NCDustItem.java b/src/main/java/igentuman/nc/item/NCDustItem.java index ef53a7d81..60a87f037 100644 --- a/src/main/java/igentuman/nc/item/NCDustItem.java +++ b/src/main/java/igentuman/nc/item/NCDustItem.java @@ -1,5 +1,6 @@ package igentuman.nc.item; +import igentuman.api.platform.NCNames; import igentuman.nc.content.materials.Dusts; import net.minecraft.world.flag.FeatureFlagSet; import net.minecraft.world.item.Item; @@ -12,6 +13,6 @@ public NCDustItem(Properties pProperties) { @Override public boolean isEnabled(@NotNull FeatureFlagSet pEnabledFeatures) { - return Dusts.get().registered().containsKey(this.toString().replace("_dust", "")); + return Dusts.get().registered().containsKey(NCNames.of(this).replace("_dust", "")); } } diff --git a/src/main/java/igentuman/nc/item/NCIngotItem.java b/src/main/java/igentuman/nc/item/NCIngotItem.java index 571ca81ee..f21584b89 100644 --- a/src/main/java/igentuman/nc/item/NCIngotItem.java +++ b/src/main/java/igentuman/nc/item/NCIngotItem.java @@ -1,5 +1,6 @@ package igentuman.nc.item; +import igentuman.api.platform.NCNames; import igentuman.nc.content.materials.Ingots; import net.minecraft.world.flag.FeatureFlagSet; import net.minecraft.world.item.Item; @@ -12,6 +13,6 @@ public NCIngotItem(Properties pProperties) { @Override public boolean isEnabled(@NotNull FeatureFlagSet pEnabledFeatures) { - return Ingots.get().registered().containsKey(this.toString().replace("_ingot", "")); + return Ingots.get().registered().containsKey(NCNames.of(this).replace("_ingot", "")); } } diff --git a/src/main/java/igentuman/nc/item/NCNuggetItem.java b/src/main/java/igentuman/nc/item/NCNuggetItem.java index 1517e093b..0c92c1745 100644 --- a/src/main/java/igentuman/nc/item/NCNuggetItem.java +++ b/src/main/java/igentuman/nc/item/NCNuggetItem.java @@ -1,5 +1,6 @@ package igentuman.nc.item; +import igentuman.api.platform.NCNames; import igentuman.nc.content.materials.Nuggets; import net.minecraft.world.flag.FeatureFlagSet; import net.minecraft.world.item.Item; @@ -12,6 +13,6 @@ public NCNuggetItem(Properties pProperties) { @Override public boolean isEnabled(@NotNull FeatureFlagSet pEnabledFeatures) { - return Nuggets.get().registered().containsKey(this.toString().replace("_nugget", "")); + return Nuggets.get().registered().containsKey(NCNames.of(this).replace("_nugget", "")); } } diff --git a/src/main/java/igentuman/nc/item/NCPlateItem.java b/src/main/java/igentuman/nc/item/NCPlateItem.java index 095673588..d3ae36910 100644 --- a/src/main/java/igentuman/nc/item/NCPlateItem.java +++ b/src/main/java/igentuman/nc/item/NCPlateItem.java @@ -1,5 +1,6 @@ package igentuman.nc.item; +import igentuman.api.platform.NCNames; import igentuman.nc.content.materials.Plates; import net.minecraft.world.flag.FeatureFlagSet; import net.minecraft.world.item.Item; @@ -12,6 +13,6 @@ public NCPlateItem(Properties pProperties) { @Override public boolean isEnabled(@NotNull FeatureFlagSet pEnabledFeatures) { - return Plates.get().registered().containsKey(this.toString().replace("_plate", "")); + return Plates.get().registered().containsKey(NCNames.of(this).replace("_plate", "")); } } diff --git a/src/main/java/igentuman/nc/item/ParticleSourceItem.java b/src/main/java/igentuman/nc/item/ParticleSourceItem.java index 62d67b629..00699edaa 100644 --- a/src/main/java/igentuman/nc/item/ParticleSourceItem.java +++ b/src/main/java/igentuman/nc/item/ParticleSourceItem.java @@ -12,7 +12,6 @@ import net.minecraft.world.level.Level; import org.jetbrains.annotations.NotNull; -import javax.annotation.Nullable; import java.util.List; import static igentuman.nc.util.TextUtils.*; @@ -52,7 +51,7 @@ public int getBarColor(@NotNull ItemStack pStack) } @Override - public void appendHoverText(ItemStack stack, @Nullable Level world, List list, TooltipFlag flag) + public void appendHoverText(ItemStack stack, Item.TooltipContext pContext, List list, TooltipFlag flag) { ParticleSourceItem particleItem = (ParticleSourceItem) stack.getItem(); if(particleItem.getParticle(stack) != null) { diff --git a/src/main/java/igentuman/nc/item/PaxelItem.java b/src/main/java/igentuman/nc/item/PaxelItem.java index 8e3fb87ef..9f86404fc 100644 --- a/src/main/java/igentuman/nc/item/PaxelItem.java +++ b/src/main/java/igentuman/nc/item/PaxelItem.java @@ -8,35 +8,22 @@ public class PaxelItem extends DiggerItem { - public PaxelItem(float pAttackDamageModifier, float pAttackSpeedModifier, Tier pTier, Properties pProperties) { - super(pAttackDamageModifier, pAttackSpeedModifier, pTier, BlockTags.MINEABLE_WITH_PICKAXE, pProperties); + public PaxelItem(Tier pTier, Properties pProperties) { + super(pTier, BlockTags.MINEABLE_WITH_PICKAXE, pProperties); } + @Override public float getDestroySpeed(ItemStack pStack, BlockState pState) { - return this.speed; - } - - public boolean isCorrectToolForDrops(BlockState pBlock) { - if (net.minecraftforge.common.TierSortingRegistry.isTierSorted(getTier())) { - return net.minecraftforge.common.TierSortingRegistry.isCorrectTierForDrops(getTier(), pBlock); - } - int i = this.getTier().getLevel(); - if (i < 3 && pBlock.is(BlockTags.NEEDS_DIAMOND_TOOL)) { - return false; - } else if (i < 2 && pBlock.is(BlockTags.NEEDS_IRON_TOOL)) { - return false; - } else { - return i < 1 && pBlock.is(BlockTags.NEEDS_STONE_TOOL) ? false : true; - } + return getTier().getSpeed(); } @Override public boolean isCorrectToolForDrops(ItemStack stack, BlockState state) { - return net.minecraftforge.common.TierSortingRegistry.isCorrectTierForDrops(getTier(), state); + return !state.is(getTier().getIncorrectBlocksForDrops()); } @Override - public boolean canPerformAction(ItemStack stack, net.minecraftforge.common.ToolAction toolAction) { + public boolean canPerformAction(ItemStack stack, net.neoforged.neoforge.common.ItemAbility toolAction) { return true; } } diff --git a/src/main/java/igentuman/nc/item/ProcessorBlockItem.java b/src/main/java/igentuman/nc/item/ProcessorBlockItem.java index 8200a99ba..f1f201e6a 100644 --- a/src/main/java/igentuman/nc/item/ProcessorBlockItem.java +++ b/src/main/java/igentuman/nc/item/ProcessorBlockItem.java @@ -1,5 +1,7 @@ package igentuman.nc.item; +import igentuman.api.platform.NCItemStacks; +import igentuman.api.platform.NCNames; import igentuman.nc.util.TextUtils; import net.minecraft.ChatFormatting; import net.minecraft.network.chat.Component; @@ -43,12 +45,12 @@ public boolean canEquip(ItemStack stack, EquipmentSlot armorType, Entity entity) } @Override - public void appendHoverText(ItemStack stack, @javax.annotation.Nullable Level world, List list, TooltipFlag flag) + public void appendHoverText(ItemStack stack, Item.TooltipContext pContext, List list, TooltipFlag flag) { - if(stack.hasTag() && stack.getTag().contains("energy")) { + if(NCItemStacks.hasCustomData(stack) && NCItemStacks.contains(stack, "energy")) { list.add(__("tooltip.nc.content_saved").withStyle(ChatFormatting.GRAY)); } - if(asItem().toString().contains("empty") || this.asItem().equals(Items.AIR)) return; + if(NCNames.of(asItem()).contains("empty") || this.asItem().equals(Items.AIR)) return; if(isGtLoaded() && isGTEUCapEnabled()) { list.add(__("tooltip.nc.energy_base_eu_tier", GTCEU_CONFIG.PROCESSOR_ENERGY_TIER.get()).withStyle(ChatFormatting.GOLD)); } diff --git a/src/main/java/igentuman/nc/item/QNP.java b/src/main/java/igentuman/nc/item/QNP.java index 8ef2dc505..1668f696d 100644 --- a/src/main/java/igentuman/nc/item/QNP.java +++ b/src/main/java/igentuman/nc/item/QNP.java @@ -1,15 +1,15 @@ package igentuman.nc.item; -import igentuman.nc.handler.ItemEnergyHandler; +import igentuman.api.platform.NCItemStacks; +import igentuman.api.platform.NCLevels; import igentuman.nc.setup.registration.NcParticleTypes; -import igentuman.nc.util.capability.CapabilityUtils; import igentuman.nc.util.capability.CustomEnergyStorage; import igentuman.nc.util.RayTraceUtils; import igentuman.nc.util.TextUtils; import net.minecraft.ChatFormatting; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; -import net.minecraft.nbt.CompoundTag; + import net.minecraft.network.chat.Component; import net.minecraft.server.level.ServerLevel; import net.minecraft.server.level.ServerPlayer; @@ -23,6 +23,10 @@ import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.*; import net.minecraft.world.item.context.UseOnContext; +import net.minecraft.core.Holder; +import net.minecraft.core.registries.Registries; +import net.minecraft.resources.ResourceKey; +import net.minecraft.world.item.enchantment.Enchantment; import net.minecraft.world.item.enchantment.Enchantments; import net.minecraft.world.level.GameRules; import net.minecraft.world.level.Level; @@ -32,12 +36,10 @@ import net.minecraft.world.phys.AABB; import net.minecraft.world.phys.BlockHitResult; import net.minecraft.world.phys.HitResult; -import net.minecraftforge.common.ForgeHooks; -import net.minecraftforge.common.Tags; -import net.minecraftforge.common.capabilities.ForgeCapabilities; -import net.minecraftforge.common.capabilities.ICapabilityProvider; -import net.minecraftforge.energy.IEnergyStorage; -import net.minecraftforge.items.ItemHandlerHelper; +import net.neoforged.neoforge.common.CommonHooks; +import net.neoforged.neoforge.common.Tags; +import net.neoforged.neoforge.capabilities.Capabilities; +import net.neoforged.neoforge.energy.IEnergyStorage; import org.jetbrains.annotations.NotNull; import javax.annotation.Nonnull; @@ -61,7 +63,17 @@ public class QNP extends PickaxeItem { public QNP(Tier pTier, int pAttackDamageModifier, float pAttackSpeedModifier, Properties pProperties) { - super(pTier, pAttackDamageModifier, pAttackSpeedModifier, pProperties); + super(pTier, pProperties); + } + + /** Helper to get enchantment level from a ResourceKey (1.21.1 compat). */ + private static int getEnchantmentLevel(ItemStack stack, ResourceKey key) { + for (var entry : stack.getEnchantments().entrySet()) { + if (entry.getKey().is(key)) { + return entry.getIntValue(); + } + } + return 0; } @Override @@ -86,12 +98,12 @@ public int getBarColor(@NotNull ItemStack pStack) return Mth.hsvToRgb(Math.max(0.0F, getBarWidth(pStack)/(float)MAX_BAR_WIDTH)/3.0F, 1.0F, 1.0F); } - protected int getEnergyMaxStorage() { + public int getEnergyMaxStorage() { return ENERGY_STORAGE.QNP_ENERGY_STORAGE.get(); } @Override - public boolean canPerformAction(ItemStack stack, net.minecraftforge.common.ToolAction toolAction) { + public boolean canPerformAction(ItemStack stack, net.neoforged.neoforge.common.ItemAbility toolAction) { return super.canPerformAction(stack, toolAction) && enoughEnergy(stack); } @@ -134,17 +146,15 @@ public List mineArea(BlockPos pos, Level worldIn, LivingEntity entity harvestBlock(blockPos, worldIn, entityLiving, stack, false, totalDrops); } }); - worldIn.getEntitiesOfClass(ExperienceOrb.class, new AABB(area.getLeft(), area.getRight()).inflate(1)).forEach(entityXPOrb -> entityXPOrb.teleportTo(entityLiving.blockPosition().getX(), entityLiving.blockPosition().getY(), entityLiving.blockPosition().getZ())); + worldIn.getEntitiesOfClass(ExperienceOrb.class, AABB.encapsulatingFullBlocks(area.getLeft(), area.getRight()).inflate(1)).forEach(entityXPOrb -> entityXPOrb.teleportTo(entityLiving.blockPosition().getX(), entityLiving.blockPosition().getY(), entityLiving.blockPosition().getZ())); return totalDrops; } public static Mode getMode(@NotNull ItemStack stack) { - CompoundTag tag = stack.getOrCreateTag(); - if(!tag.contains("mode")) { - tag.putInt("mode", Mode.ONE_BLOCK.ordinal()); - stack.save(tag); + if(!NCItemStacks.contains(stack, "mode")) { + NCItemStacks.putInt(stack, "mode", Mode.ONE_BLOCK.ordinal()); } - return Mode.values()[tag.getInt("mode")]; + return Mode.values()[NCItemStacks.getInt(stack, "mode")]; } public int energyPerBlock(ItemStack stack) @@ -160,9 +170,7 @@ public void consumeEnergy(ItemStack stack) { int energyPerBlock = energyPerBlock(stack); if (getEnergy(stack).getEnergyStored() > energyPerBlock) { getEnergy(stack).setEnergy(getEnergy(stack).getEnergyStored() - energyPerBlock); - CompoundTag tag = stack.getTag(); - tag.putInt("energy", getEnergy(stack).getEnergyStored()); - stack.setTag(tag); + NCItemStacks.putInt(stack, "energy", getEnergy(stack).getEnergyStored()); } } @@ -187,7 +195,7 @@ public boolean mineBlock(@NotNull ItemStack stack, @NotNull Level worldIn, @NotN if (entityLiving instanceof Player) { HitResult rayTraceResult = RayTraceUtils.rayTraceSimple(worldIn, entityLiving, 16, 0); if (rayTraceResult.getType() == HitResult.Type.BLOCK) { - BlockEntity be = worldIn.getExistingBlockEntity(pos); + BlockEntity be = NCLevels.getExistingBlockEntity(worldIn, pos); if(be != null) { return super.mineBlock(stack, worldIn, state, pos, entityLiving); } @@ -211,14 +219,15 @@ private List harvestBlock(BlockPos pos, @NotNull Level worldIn, Livin BlockState tempState = worldIn.getBlockState(pos); Block block = tempState.getBlock(); if(!enoughEnergy(tool)) return totalDrops; - int xp = ForgeHooks.onBlockBreakEvent(worldIn, ((ServerPlayer) entityLiving).gameMode.getGameModeForPlayer(), (ServerPlayer) entityLiving, pos); - if (xp >= 0 && block.onDestroyedByPlayer(tempState, worldIn, pos, (ServerPlayer) entityLiving, true, tempState.getFluidState())) { + // 1.21.1: onBlockBreakEvent removed, use fireBlockBreak instead + var breakEvent = CommonHooks.fireBlockBreak(worldIn, ((ServerPlayer) entityLiving).gameMode.getGameModeForPlayer(), (ServerPlayer) entityLiving, pos, tempState); + if (!breakEvent.isCanceled() && block.onDestroyedByPlayer(tempState, worldIn, pos, (ServerPlayer) entityLiving, true, tempState.getFluidState())) { block.destroy(worldIn, pos, tempState); - //block.playerDestroy(worldIn, (Player) entityLiving, pos, tempState, worldIn.getExistingBlockEntity(pos), tool); - Block.getDrops(tempState, (ServerLevel) worldIn, pos, worldIn.getExistingBlockEntity(pos), entityLiving, tool).forEach(itemStack -> { + //block.playerDestroy(worldIn, (Player) entityLiving, pos, tempState, NCLevels.getExistingBlockEntity(worldIn, pos), tool); + Block.getDrops(tempState, (ServerLevel) worldIn, pos, NCLevels.getExistingBlockEntity(worldIn, pos), entityLiving, tool).forEach(itemStack -> { boolean combined = false; for (ItemStack drop : totalDrops) { - if (ItemHandlerHelper.canItemStacksStack(drop, itemStack)) { + if (NCItemStacks.canStack(drop, itemStack)) { drop.setCount(drop.getCount() + itemStack.getCount()); combined = true; break; @@ -241,6 +250,7 @@ private List harvestBlock(BlockPos pos, @NotNull Level worldIn, Livin } } } + int xp = tempState.getExpDrop(worldIn, pos, NCLevels.getExistingBlockEntity(worldIn, pos), entityLiving, tool); block.popExperience((ServerLevel) worldIn, pos, xp); consumeEnergy(tool); } @@ -279,7 +289,7 @@ private boolean enoughEnergy(ItemStack itemStack) { @Override public float getDestroySpeed(@NotNull ItemStack stack, @NotNull BlockState state) { - int efficiency = getEnchantmentLevel(stack, Enchantments.BLOCK_EFFICIENCY); + int efficiency = getEnchantmentLevel(stack, Enchantments.EFFICIENCY); if(enoughEnergy(stack)) return getTier().getSpeed() + efficiency*0.5F; return 0.1F; } @@ -287,10 +297,11 @@ public float getDestroySpeed(@NotNull ItemStack stack, @NotNull BlockState state public boolean chargeFromEnergyBlock(BlockEntity be, ItemStack tool) { if(be == null) return false; + if(be.getLevel() == null) return false; if(getEnergy(tool).getEnergyStored() == getEnergy(tool).getMaxEnergyStored()) return false; for(Direction side: Direction.values()) { - IEnergyStorage storage = be.getCapability(ForgeCapabilities.ENERGY, side).orElse(null); - if (storage == null) return false; + IEnergyStorage storage = be.getLevel().getCapability(Capabilities.EnergyStorage.BLOCK, be.getBlockPos(), side); + if (storage == null) continue; if (storage.canExtract()) { int energy = storage.extractEnergy(getEnergy(tool).receiveEnergy(storage.extractEnergy(getEnergy(tool).getMaxEnergyStored() - getEnergy(tool).getEnergyStored(), true), false), false); getEnergy(tool).receiveEnergy(energy, false); @@ -298,7 +309,7 @@ public boolean chargeFromEnergyBlock(BlockEntity be, ItemStack tool) } } - IEnergyStorage storage = be.getCapability(ForgeCapabilities.ENERGY).orElse(null); + IEnergyStorage storage = be.getLevel().getCapability(Capabilities.EnergyStorage.BLOCK, be.getBlockPos(), null); if (storage == null) return false; if (storage.canExtract()) { int energy = storage.extractEnergy(getEnergy(tool).receiveEnergy(storage.extractEnergy(getEnergy(tool).getMaxEnergyStored() - getEnergy(tool).getEnergyStored(), true), false), false); @@ -325,7 +336,7 @@ public InteractionResultHolder use(Level pLevel, Player pPlayer, Inte if(pPlayer.isSteppingCarefully()) { ItemStack tool = pPlayer.getItemInHand(pUsedHand); Mode miningMode = Mode.values()[(getMode(tool).ordinal()+1)%Mode.values().length]; - tool.getOrCreateTag().putInt("mode", miningMode.ordinal()); + NCItemStacks.putInt(tool, "mode", miningMode.ordinal()); pPlayer.sendSystemMessage(__("tooltip.nc.qnp_mode", miningMode.getName()).withStyle(ChatFormatting.GREEN)); return InteractionResultHolder.success(pPlayer.getItemInHand(pUsedHand)); } @@ -333,18 +344,14 @@ public InteractionResultHolder use(Level pLevel, Player pPlayer, Inte } - @Override - public ICapabilityProvider initCapabilities(ItemStack stack, CompoundTag nbt) { - return new ItemEnergyHandler(stack, getEnergyMaxStorage(), 0, getEnergyMaxStorage()/4); - } - public CustomEnergyStorage getEnergy(ItemStack stack) { - return (CustomEnergyStorage) CapabilityUtils.getPresentCapability(stack, ForgeCapabilities.ENERGY); + IEnergyStorage storage = stack.getCapability(Capabilities.EnergyStorage.ITEM); + return (CustomEnergyStorage) storage; } @Override - public void appendHoverText(ItemStack stack, @javax.annotation.Nullable Level world, List list, TooltipFlag flag) + public void appendHoverText(ItemStack stack, Item.TooltipContext pContext, List list, TooltipFlag flag) { list.add(__("tooltip.nc.qnp_mode", __("tooltip.mode." + getMode(stack).getName())).withStyle(ChatFormatting.BLUE)); list.add(__("tooltip.nc.shift_rbm_to_change").withStyle(ChatFormatting.GRAY)); diff --git a/src/main/java/igentuman/nc/item/RadAwayItem.java b/src/main/java/igentuman/nc/item/RadAwayItem.java index e65b36d2d..1c4a55c6b 100644 --- a/src/main/java/igentuman/nc/item/RadAwayItem.java +++ b/src/main/java/igentuman/nc/item/RadAwayItem.java @@ -1,57 +1,61 @@ - package igentuman.nc.item; -import igentuman.nc.radiation.data.PlayerRadiation; -import igentuman.nc.radiation.data.PlayerRadiationProvider; import net.minecraft.advancements.CriteriaTriggers; -import net.minecraft.network.chat.Component; import net.minecraft.server.level.ServerPlayer; import net.minecraft.stats.Stats; import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResultHolder; -import net.minecraft.world.effect.MobEffectInstance; import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.entity.player.Player; -import net.minecraft.world.item.*; -import net.minecraft.world.item.alchemy.PotionUtils; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.ItemUtils; +import net.minecraft.world.item.UseAnim; import net.minecraft.world.level.Level; import net.minecraft.world.level.gameevent.GameEvent; import org.jetbrains.annotations.NotNull; -import javax.annotation.Nullable; -import java.util.List; - -public class RadAwayItem extends PotionItem -{ - public RadAwayItem(Properties pProperties) { - super(pProperties); - } - - @Override - public String getDescriptionId(ItemStack pStack) { - return this.getDescriptionId(); - } - - @Override - public ItemStack finishUsingItem(ItemStack pStack, Level pLevel, LivingEntity pEntityLiving) { - Player player = pEntityLiving instanceof Player ? (Player)pEntityLiving : null; - if (player instanceof ServerPlayer) { - CriteriaTriggers.CONSUME_ITEM.trigger((ServerPlayer)player, pStack); - } - - if (player != null) { - player.awardStat(Stats.ITEM_USED.get(this)); - if (!player.getAbilities().instabuild) { - pStack.shrink(1); - } - } - - pEntityLiving.gameEvent(GameEvent.DRINK); - return pStack; - } - - @Override - public void appendHoverText(ItemStack pStack, @Nullable Level pLevel, List pTooltip, TooltipFlag pFlag) { - - } +public class RadAwayItem extends Item { + + public RadAwayItem(Properties pProperties) { + super(pProperties); + } + + @Override + public @NotNull UseAnim getUseAnimation(@NotNull ItemStack stack) { + return UseAnim.DRINK; + } + + @Override + public int getUseDuration(@NotNull ItemStack stack, @NotNull LivingEntity entity) { + return 32; + } + + @Override + public @NotNull InteractionResultHolder use(@NotNull Level level, @NotNull Player player, @NotNull InteractionHand hand) { + return ItemUtils.startUsingInstantly(level, player, hand); + } + + @Override + public String getDescriptionId(ItemStack pStack) { + return this.getDescriptionId(); + } + + @Override + public @NotNull ItemStack finishUsingItem(@NotNull ItemStack pStack, @NotNull Level pLevel, @NotNull LivingEntity pEntityLiving) { + Player player = pEntityLiving instanceof Player ? (Player) pEntityLiving : null; + if (player instanceof ServerPlayer) { + CriteriaTriggers.CONSUME_ITEM.trigger((ServerPlayer) player, pStack); + } + + if (player != null) { + player.awardStat(Stats.ITEM_USED.get(this)); + if (!player.getAbilities().instabuild) { + pStack.shrink(1); + } + } + + pEntityLiving.gameEvent(GameEvent.DRINK); + return pStack; + } } diff --git a/src/main/java/igentuman/nc/item/RadShieldingItem.java b/src/main/java/igentuman/nc/item/RadShieldingItem.java index 5ab111d88..0966b7d70 100644 --- a/src/main/java/igentuman/nc/item/RadShieldingItem.java +++ b/src/main/java/igentuman/nc/item/RadShieldingItem.java @@ -11,14 +11,13 @@ import net.minecraft.world.level.Level; import javax.annotation.Nonnull; -import javax.annotation.Nullable; import java.util.List; import static igentuman.nc.util.TextUtils.__; public class RadShieldingItem extends Item { - private int burnTime = -1; + private int burnTime = 0; private boolean isHidden = false; private int radShieldingLevel = 0; @@ -84,7 +83,7 @@ public int getBarColor(ItemStack pStack) } @Override - public void appendHoverText(ItemStack stack, @Nullable Level world, List list, TooltipFlag flag) + public void appendHoverText(ItemStack stack, Item.TooltipContext pContext, List list, TooltipFlag flag) { list.add(__("tooltip.nc.shielding.desc").withStyle(net.minecraft.ChatFormatting.GRAY)); } diff --git a/src/main/java/igentuman/nc/item/ResearchPaperItem.java b/src/main/java/igentuman/nc/item/ResearchPaperItem.java index f24836f07..4cdf2907c 100644 --- a/src/main/java/igentuman/nc/item/ResearchPaperItem.java +++ b/src/main/java/igentuman/nc/item/ResearchPaperItem.java @@ -1,8 +1,8 @@ package igentuman.nc.item; +import igentuman.api.platform.NCItemStacks; import net.minecraft.ChatFormatting; import net.minecraft.core.BlockPos; -import net.minecraft.nbt.CompoundTag; import net.minecraft.network.chat.Component; import net.minecraft.world.item.CreativeModeTab; import net.minecraft.world.item.Item; @@ -10,7 +10,6 @@ import net.minecraft.world.item.TooltipFlag; import net.minecraft.world.level.Level; -import javax.annotation.Nullable; import java.util.List; import static igentuman.nc.util.TextUtils.__; @@ -26,14 +25,13 @@ public ResearchPaperItem(Properties props, CreativeModeTab group) } @Override - public void appendHoverText(ItemStack stack, @Nullable Level world, List list, TooltipFlag flag) + public void appendHoverText(ItemStack stack, Item.TooltipContext pContext, List list, TooltipFlag flag) { - CompoundTag tag = stack.getOrCreateTag(); - if(tag.contains("vein")) { - list.add(__(tag.getString("vein")).withStyle(ChatFormatting.AQUA)); + if(NCItemStacks.contains(stack, "vein")) { + list.add(__(NCItemStacks.getString(stack, "vein")).withStyle(ChatFormatting.AQUA)); } - if(tag.contains("pos")) { - BlockPos pos = BlockPos.of(tag.getLong("pos")); + if(NCItemStacks.contains(stack, "pos")) { + BlockPos pos = BlockPos.of(NCItemStacks.getLong(stack, "pos")); list.add(__("tooltip.nc.chunk_position", pos.toShortString()).withStyle(ChatFormatting.BLUE)); list.add(__("tooltip.nc.use_in_leacher", pos.toShortString()).withStyle(ChatFormatting.GREEN)); } diff --git a/src/main/java/igentuman/nc/item/Tiers.java b/src/main/java/igentuman/nc/item/Tiers.java index 6aa472881..1abe311e2 100644 --- a/src/main/java/igentuman/nc/item/Tiers.java +++ b/src/main/java/igentuman/nc/item/Tiers.java @@ -2,40 +2,43 @@ import java.util.function.Supplier; +import com.google.common.base.Suppliers; import igentuman.nc.content.materials.Materials; -import net.minecraft.util.LazyLoadedValue; +import net.minecraft.tags.BlockTags; +import net.minecraft.tags.TagKey; import net.minecraft.world.item.Tier; import net.minecraft.world.item.crafting.Ingredient; +import net.minecraft.world.level.block.Block; import static igentuman.nc.datagen.recipes.recipes.AbstractRecipeProvider.ingotIngredient; import static igentuman.nc.setup.registration.NCItems.LITHIUM_ION_CELL; public enum Tiers implements Tier { - TOUGH(8, 10000, 12.0F, 10.0F, 22, () -> { - return ingotIngredient(Materials.tough_alloy); + TOUGH(BlockTags.INCORRECT_FOR_NETHERITE_TOOL, 10000, 12.0F, 10.0F, 22, () -> { + return ingotIngredient(Materials.tough_alloy).asIngredient(); }), - THORIUM(7, 10000, 10.0F, 6.0F, 18, () -> { - return ingotIngredient(Materials.thorium); + THORIUM(BlockTags.INCORRECT_FOR_DIAMOND_TOOL, 10000, 10.0F, 6.0F, 18, () -> { + return ingotIngredient(Materials.thorium).asIngredient(); }), - QNP(9, 50000, 20.0F, 14.0F, 25, () -> { + QNP(BlockTags.INCORRECT_FOR_NETHERITE_TOOL, 50000, 20.0F, 14.0F, 25, () -> { return Ingredient.of(LITHIUM_ION_CELL.get()); }); - private final int level; + private final TagKey incorrectBlocksForDrops; private final int uses; private final float speed; private final float damage; private final int enchantmentValue; - private final LazyLoadedValue repairIngredient; + private final Supplier repairIngredient; - private Tiers(int pLevel, int pUses, float pSpeed, float pDamage, int pEnchantmentValue, Supplier pRepairIngredient) { - this.level = pLevel; + private Tiers(TagKey pIncorrectBlocks, int pUses, float pSpeed, float pDamage, int pEnchantmentValue, Supplier pRepairIngredient) { + this.incorrectBlocksForDrops = pIncorrectBlocks; this.uses = pUses; this.speed = pSpeed; this.damage = pDamage; this.enchantmentValue = pEnchantmentValue; - this.repairIngredient = new LazyLoadedValue<>(pRepairIngredient); + this.repairIngredient = Suppliers.memoize(pRepairIngredient::get); } public int getUses() { @@ -50,8 +53,9 @@ public float getAttackDamageBonus() { return this.damage; } - public int getLevel() { - return this.level; + @Override + public TagKey getIncorrectBlocksForDrops() { + return this.incorrectBlocksForDrops; } public int getEnchantmentValue() { diff --git a/src/main/java/igentuman/nc/item/UpgradeItem.java b/src/main/java/igentuman/nc/item/UpgradeItem.java index 833dd3e96..1798aa113 100644 --- a/src/main/java/igentuman/nc/item/UpgradeItem.java +++ b/src/main/java/igentuman/nc/item/UpgradeItem.java @@ -7,7 +7,6 @@ import net.minecraft.world.item.TooltipFlag; import net.minecraft.world.level.Level; -import javax.annotation.Nullable; import java.util.List; import static igentuman.nc.block.entity.NuclearCraftBE.isGTEUCapEnabled; @@ -23,7 +22,7 @@ public UpgradeItem(Properties pProperties) { } @Override - public void appendHoverText(ItemStack stack, @Nullable Level world, List list, TooltipFlag flag) + public void appendHoverText(ItemStack stack, Item.TooltipContext pContext, List list, TooltipFlag flag) { if(stack.is(NC_ITEMS.get("upgrade_energy").get()) && isGtLoaded() && isGTEUCapEnabled()) { list.add(__("tooltip.nc.upgrade_energy.tier", GTCEU_CONFIG.ENERGY_UPGRADES_NEEDED_TO_NEXT_TIER.get()).withStyle(ChatFormatting.GOLD)); diff --git a/src/main/java/igentuman/nc/mixin/MekRadiationManager.java b/src/main/java/igentuman/nc/mixin/MekRadiationManager.java index c7e890d8f..313d54a49 100644 --- a/src/main/java/igentuman/nc/mixin/MekRadiationManager.java +++ b/src/main/java/igentuman/nc/mixin/MekRadiationManager.java @@ -1,21 +1,19 @@ +// Verified against Mekanism 10.7.18.84 for NeoForge 1.21.1: +// - isRadiationEnabled() and radiate(Level, BlockPos, double) confirmed on RadiationManager +// - getRadiationResistance(LivingEntity) MOVED to RadiationUtil — split into MekRadiationUtil mixin package igentuman.nc.mixin; -import mekanism.api.Coord4D; import mekanism.common.config.MekanismConfig; import mekanism.common.lib.radiation.RadiationManager; -import net.minecraft.world.entity.LivingEntity; -import net.minecraft.world.entity.player.Player; +import net.minecraft.core.BlockPos; import net.minecraft.world.level.Level; -import net.minecraftforge.server.ServerLifecycleHooks; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; -import static igentuman.nc.NuclearCraft.MODID; import static igentuman.nc.handler.config.RadiationConfig.RADIATION_CONFIG; -import static igentuman.nc.radiation.data.PlayerRadiation.getRadiationShielding; @Mixin(value = RadiationManager.class, remap = false) public abstract class MekRadiationManager { @@ -32,10 +30,9 @@ public void isRadiationEnabled(CallbackInfoReturnable callback) callback.setReturnValue(true); } - @Inject(method = "radiate(Lmekanism/api/Coord4D;D)V", at = @At("HEAD"), remap=false, cancellable = true) - public void radiate(Coord4D source, double magnitude, CallbackInfo callback) { + @Inject(method = "radiate(Lnet/minecraft/world/level/Level;Lnet/minecraft/core/BlockPos;D)V", at = @At("HEAD"), remap=false, cancellable = true) + public void radiate(Level level, BlockPos source, double magnitude, CallbackInfo callback) { if(!RADIATION_CONFIG.MEKANISM_RADIATION_INTEGRATION.get()) return; - Level level = ServerLifecycleHooks.getCurrentServer().getLevel(source.dimension); if(level == null) return; igentuman.nc.radiation.data.RadiationManager.get(level).addRadiation(level, magnitude*10, source.getX(), source.getY(), source.getZ()); if(!isMekRadiationEnabled()) { @@ -43,12 +40,4 @@ public void radiate(Coord4D source, double magnitude, CallbackInfo callback) { } } - @Inject(method = "getRadiationResistance(Lnet/minecraft/world/entity/LivingEntity;)D", at = @At("TAIL"), remap=false, cancellable = true) - private void getRadiationResistance(LivingEntity entity, CallbackInfoReturnable callback) { - if(entity instanceof Player player) { - double shieldingRate = (double) getRadiationShielding(player, MODID) / 10; - callback.setReturnValue(callback.getReturnValue()+shieldingRate); - } - } - } diff --git a/src/main/java/igentuman/nc/mixin/MekRadiationUtil.java b/src/main/java/igentuman/nc/mixin/MekRadiationUtil.java new file mode 100644 index 000000000..37fbb74ee --- /dev/null +++ b/src/main/java/igentuman/nc/mixin/MekRadiationUtil.java @@ -0,0 +1,26 @@ +// getRadiationResistance moved from RadiationManager to RadiationUtil in Mekanism 10.7.x +package igentuman.nc.mixin; + +import mekanism.common.lib.radiation.RadiationUtil; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.entity.player.Player; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; + +import static igentuman.nc.NuclearCraft.MODID; +import static igentuman.nc.radiation.data.PlayerRadiation.getRadiationShielding; + +@Mixin(value = RadiationUtil.class, remap = false) +public abstract class MekRadiationUtil { + + @Inject(method = "getRadiationResistance(Lnet/minecraft/world/entity/LivingEntity;)D", at = @At("TAIL"), remap=false, cancellable = true) + private static void getRadiationResistance(LivingEntity entity, CallbackInfoReturnable callback) { + if(entity instanceof Player player) { + double shieldingRate = (double) getRadiationShielding(player, MODID) / 10; + callback.setReturnValue(callback.getReturnValue()+shieldingRate); + } + } + +} diff --git a/src/main/java/igentuman/nc/mixin/NuclearCraftMixinConnector.java b/src/main/java/igentuman/nc/mixin/NuclearCraftMixinConnector.java deleted file mode 100644 index 72c7f688c..000000000 --- a/src/main/java/igentuman/nc/mixin/NuclearCraftMixinConnector.java +++ /dev/null @@ -1,12 +0,0 @@ -package igentuman.nc.mixin; - -import org.spongepowered.asm.mixin.Mixins; -import org.spongepowered.asm.mixin.connect.IMixinConnector; - -public class NuclearCraftMixinConnector implements IMixinConnector { - - @Override - public void connect() { - Mixins.addConfiguration("nuclearcraft.mixins.json"); - } -} \ No newline at end of file diff --git a/src/main/java/igentuman/nc/mixin/ParticleStackKubeJSMixin.java b/src/main/java/igentuman/nc/mixin/ParticleStackKubeJSMixin.java index c96b50086..d0771b594 100644 --- a/src/main/java/igentuman/nc/mixin/ParticleStackKubeJSMixin.java +++ b/src/main/java/igentuman/nc/mixin/ParticleStackKubeJSMixin.java @@ -1,3 +1,5 @@ +// TODO: Mixin not registered in nuclearcraft.mixins.json — waiting on KubeJS to port to NeoForge 1.21.1. +// Re-add "ParticleStackKubeJSMixin" to nuclearcraft.mixins.json "mixins" array when KubeJS is available. package igentuman.nc.mixin; import igentuman.nc.content.particles.ParticleStack; diff --git a/src/main/java/igentuman/nc/mixin/TagLoaderMixin.java b/src/main/java/igentuman/nc/mixin/TagLoaderMixin.java index 28e875006..b9c460adb 100644 --- a/src/main/java/igentuman/nc/mixin/TagLoaderMixin.java +++ b/src/main/java/igentuman/nc/mixin/TagLoaderMixin.java @@ -4,7 +4,8 @@ import net.minecraft.resources.ResourceLocation; import net.minecraft.tags.TagLoader; import net.minecraft.world.level.block.Blocks; -import net.minecraftforge.registries.ForgeRegistries; +import net.minecraft.core.registries.BuiltInRegistries; +import net.neoforged.neoforge.registries.NeoForgeRegistries; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; @@ -34,7 +35,7 @@ private static Map> fixMissing } List list = new ArrayList<>(); for(TagLoader.EntryWithSource entry : map.get(type)) { - if(!ForgeRegistries.BLOCKS.getValue(entry.entry().getId()).equals(Blocks.AIR)) { + if(!BuiltInRegistries.BLOCK.get(entry.entry().getId()).equals(Blocks.AIR)) { list.add(entry); } else { NuclearCraft.LOGGER.error("Tag {} contains missing block {}", type, entry.entry().getId()); diff --git a/src/main/java/igentuman/nc/multiblock/AbstractMultiblock.java b/src/main/java/igentuman/nc/multiblock/AbstractMultiblock.java index 932ee2e92..f84f9a62c 100644 --- a/src/main/java/igentuman/nc/multiblock/AbstractMultiblock.java +++ b/src/main/java/igentuman/nc/multiblock/AbstractMultiblock.java @@ -1,5 +1,6 @@ package igentuman.nc.multiblock; +import igentuman.api.platform.NCNames; import igentuman.api.nc.multiblock.MultiblockAttachable; import igentuman.api.nc.multiblock.Multiblock; import igentuman.api.nc.multiblock.MultiblockController; @@ -183,7 +184,7 @@ public boolean isFormed() { } public boolean isPort(BlockState bs) { - return bs.getBlock().asItem().toString().contains("port"); + return NCNames.of(bs.getBlock().asItem()).contains("port"); } @Override @@ -556,7 +557,7 @@ public void updateAABB() if(bottomLeft == null || topRight == null) { findCorners(); } - structureBounds = new AABB(bottomLeft, topRight); + structureBounds = AABB.encapsulatingFullBlocks(bottomLeft, topRight); } @Override @@ -661,7 +662,7 @@ private void findCorners() { protected void processOuterBlock(BlockPos pos) { attachMultiblock(pos); addIfNotExists(pos, allBlocks); - if (CONTROLLERS.matcher(getBlockState(pos).getBlock().asItem().toString()).matches()) { + if (CONTROLLERS.matcher(NCNames.of(getBlockState(pos).getBlock().asItem())).matches()) { controllers.add(pos); } if (isPort(getBlockState(pos))) { diff --git a/src/main/java/igentuman/nc/multiblock/accelerator/AbstractAcceleratorMultiblock.java b/src/main/java/igentuman/nc/multiblock/accelerator/AbstractAcceleratorMultiblock.java index bcc0402e5..719728f07 100644 --- a/src/main/java/igentuman/nc/multiblock/accelerator/AbstractAcceleratorMultiblock.java +++ b/src/main/java/igentuman/nc/multiblock/accelerator/AbstractAcceleratorMultiblock.java @@ -42,6 +42,7 @@ public class AbstractAcceleratorMultiblock extends AbstractMultiblock { protected final int[] yCoords = new int[]{-1, 1, 0, 0, 1, -1, 1, -1}; protected double focus = 0.0; protected int maxTemperature = 0; + protected int maxHeat = 0; protected int heatRate = 0; protected double efficiency = 0.0; protected double quadStrength = 0.0; diff --git a/src/main/java/igentuman/nc/multiblock/accelerator/AcceleratorRegistration.java b/src/main/java/igentuman/nc/multiblock/accelerator/AcceleratorRegistration.java index 9c15161c0..8efb0feb2 100644 --- a/src/main/java/igentuman/nc/multiblock/accelerator/AcceleratorRegistration.java +++ b/src/main/java/igentuman/nc/multiblock/accelerator/AcceleratorRegistration.java @@ -16,8 +16,8 @@ import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraft.world.level.block.state.BlockBehaviour; -import net.minecraftforge.common.extensions.IForgeMenuType; -import net.minecraftforge.registries.RegistryObject; +import igentuman.api.platform.NCRegistration; +import net.neoforged.neoforge.registries.DeferredHolder; import java.util.ArrayList; import java.util.HashMap; @@ -34,31 +34,27 @@ public class AcceleratorRegistration { public static final Item.Properties ACCELERATOR_ITEM_PROPERTIES = new Item.Properties(); public static final BlockBehaviour.Properties NO_OCCLUSION_BLOCK_PROPS = BlockBehaviour.Properties.of().sound(SoundType.METAL).strength(3f).requiresCorrectToolForDrops().noOcclusion(); public static final Block.Properties ACCELERATOR_BLOCK_PROPERTIES = BlockBehaviour.Properties.of().sound(SoundType.METAL).strength(4f).requiresCorrectToolForDrops();; - public static final HashMap> ACCELERATOR_BLOCKS = new HashMap<>(); - public static final HashMap>> ACCELERATOR_BE = new HashMap<>(); - public static final HashMap> ACCELERATOR_ITEMS = new HashMap<>(); + public static final HashMap> ACCELERATOR_BLOCKS = new HashMap<>(); + public static final HashMap, BlockEntityType>> ACCELERATOR_BE = new HashMap<>(); + public static final HashMap> ACCELERATOR_ITEMS = new HashMap<>(); public static final TagKey ACCELERATOR_CASING_BLOCKS = blockTag("accelerator_casing"); public static final TagKey ACCELERATOR_INNER_BLOCKS = blockTag("accelerator_inner"); public static final TagKey ACCELERATOR_INNER_ITEMS = itemTag("accelerator_inner"); public static final TagKey ACCELERATOR_CASING_ITEMS = itemTag("accelerator_casing"); public static final Pattern TRANSPARENT_BLOCKS_PATTERN = Pattern.compile(".*glass.*"); - public static final RegistryObject> LINEAR_ACCELERATOR_CONTROLLER_CONTAINER = CONTAINERS.register("linear_accelerator_controller", - () -> IForgeMenuType.create((windowId, inv, data) -> new LinearAcceleratorContainer(windowId, data.readBlockPos(), inv)) - ); - public static final RegistryObject> THOROIDAL_ACCELERATOR_CONTROLLER_CONTAINER = CONTAINERS.register("ring_accelerator_controller", - () -> IForgeMenuType.create((windowId, inv, data) -> new RingAcceleratorContainer(windowId, data.readBlockPos(), inv)) - ); - public static final RegistryObject> ACCELERATOR_PORT_CONTAINER = CONTAINERS.register("accelerator_port", - () -> IForgeMenuType.create((windowId, inv, data) -> new AcceleratorPortContainer(windowId, data.readBlockPos(), inv)) - ); - public static final RegistryObject> ACCELERATOR_ION_SOURCE_PORT_CONTAINER = CONTAINERS.register("accelerator_ion_source_port", - () -> IForgeMenuType.create((windowId, inv, data) -> new AcceleratorIonSourcePortContainer(windowId, data.readBlockPos(), inv)) - ); + public static final DeferredHolder, MenuType> LINEAR_ACCELERATOR_CONTROLLER_CONTAINER = + NCRegistration.registerMenu(CONTAINERS, "linear_accelerator_controller", (windowId, inv, data) -> new LinearAcceleratorContainer(windowId, data.readBlockPos(), inv)); + public static final DeferredHolder, MenuType> THOROIDAL_ACCELERATOR_CONTROLLER_CONTAINER = + NCRegistration.registerMenu(CONTAINERS, "ring_accelerator_controller", (windowId, inv, data) -> new RingAcceleratorContainer(windowId, data.readBlockPos(), inv)); + public static final DeferredHolder, MenuType> ACCELERATOR_PORT_CONTAINER = + NCRegistration.registerMenu(CONTAINERS, "accelerator_port", (windowId, inv, data) -> new AcceleratorPortContainer(windowId, data.readBlockPos(), inv)); + public static final DeferredHolder, MenuType> ACCELERATOR_ION_SOURCE_PORT_CONTAINER = + NCRegistration.registerMenu(CONTAINERS, "accelerator_ion_source_port", (windowId, inv, data) -> new AcceleratorIonSourcePortContainer(windowId, data.readBlockPos(), inv)); public static final HashMap COOLERS = coolers(); - private static final List> COOLER_BLOCKS = new ArrayList<>(); + private static final List> COOLER_BLOCKS = new ArrayList<>(); public static void init() { registerSimpleBlock("accelerator_casing"); @@ -156,7 +152,7 @@ public static HashMap coolers() { public static Block[] getCoolerBlocks() { Block[] blocks = new Block[COOLER_BLOCKS.size()]; int i = 0; - for (RegistryObject b: COOLER_BLOCKS) { + for (DeferredHolder b: COOLER_BLOCKS) { blocks[i] = b.get(); i++; } diff --git a/src/main/java/igentuman/nc/multiblock/accelerator/CoolerDef.java b/src/main/java/igentuman/nc/multiblock/accelerator/CoolerDef.java index 995dacf41..f467ae7d0 100644 --- a/src/main/java/igentuman/nc/multiblock/accelerator/CoolerDef.java +++ b/src/main/java/igentuman/nc/multiblock/accelerator/CoolerDef.java @@ -11,8 +11,9 @@ import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.material.Fluid; -import net.minecraftforge.fluids.FluidStack; -import net.minecraftforge.registries.ForgeRegistries; +import net.neoforged.neoforge.fluids.FluidStack; +import net.minecraft.core.registries.BuiltInRegistries; +import net.neoforged.neoforge.registries.NeoForgeRegistries; import java.util.ArrayList; import java.util.HashMap; @@ -232,7 +233,7 @@ public HashMap> blocks() if (!bStr.contains(":")) { bStr = MODID + ":" + bStr; } - tmp.add(ForgeRegistries.BLOCKS.getValue(rlFromString(bStr))); + tmp.add(BuiltInRegistries.BLOCK.get(rlFromString(bStr))); } } blocks.put(condition, tmp); diff --git a/src/main/java/igentuman/nc/multiblock/accelerator/LinearAcceleratorMultiblock.java b/src/main/java/igentuman/nc/multiblock/accelerator/LinearAcceleratorMultiblock.java index 71071566f..6aa39a286 100644 --- a/src/main/java/igentuman/nc/multiblock/accelerator/LinearAcceleratorMultiblock.java +++ b/src/main/java/igentuman/nc/multiblock/accelerator/LinearAcceleratorMultiblock.java @@ -201,7 +201,9 @@ public void validate() { long elapsedTime = System.currentTimeMillis() - startTime; isFormed = outerValid && innerValid; focus = quadStrength + dipoleStrength/2D; + if (isFormed) { + maxHeat = (beamLength + 5) * 10000; validationResult = ValidationResult.VALID; errorBlockPos = BlockPos.ZERO; controllerBE().ionSourcePos = ionSourcePos; @@ -212,6 +214,7 @@ public void validate() { controllerBE().dipoles = dipolesCount; controllerBE().focus = focus; controllerBE().maxTemperature = maxTemperature; + controllerBE().heatMax = maxHeat; controllerBE().heatRate = heatRate; controllerBE().efficiency = efficiency/(amplifiers.size() + electromagnets.size()); controllerBE().quadStrength = quadStrength; diff --git a/src/main/java/igentuman/nc/multiblock/accelerator/ThoroidalAcceleratorMultiblock.java b/src/main/java/igentuman/nc/multiblock/accelerator/ThoroidalAcceleratorMultiblock.java index 942d73d4f..93f84af97 100644 --- a/src/main/java/igentuman/nc/multiblock/accelerator/ThoroidalAcceleratorMultiblock.java +++ b/src/main/java/igentuman/nc/multiblock/accelerator/ThoroidalAcceleratorMultiblock.java @@ -111,7 +111,7 @@ public void validateOuter() { int maxZ = MathUtils.max(leftFront.getZ(), rightFront.getZ(), leftBack.getZ(), rightBack.getZ()); bottomLeft = new BlockPosInstance(minX, leftFront.getY() - bottomCasing, minZ); topRight = new BlockPosInstance(maxX, leftFront.getY() + topCasing, maxZ); - AABB excludeArea = new AABB(new BlockPos(bottomLeft).offset(4, -1, 4), new BlockPos(topRight).offset(-4, 1, -4)); + AABB excludeArea = AABB.encapsulatingFullBlocks(new BlockPos(bottomLeft).offset(4, -1, 4), new BlockPos(topRight).offset(-4, 1, -4)); cacheBlockStates(excludeArea); for(int y = 0; y < height; y++) { for(int x = 0; x < width; x++) { diff --git a/src/main/java/igentuman/nc/multiblock/fission/FissionReactorMultiblock.java b/src/main/java/igentuman/nc/multiblock/fission/FissionReactorMultiblock.java index 3e61a25d0..acfb76865 100644 --- a/src/main/java/igentuman/nc/multiblock/fission/FissionReactorMultiblock.java +++ b/src/main/java/igentuman/nc/multiblock/fission/FissionReactorMultiblock.java @@ -16,7 +16,8 @@ import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.state.BlockState; -import net.minecraftforge.registries.ForgeRegistries; +import net.minecraft.core.registries.BuiltInRegistries; +import net.neoforged.neoforge.registries.NeoForgeRegistries; import java.util.*; @@ -386,7 +387,7 @@ protected boolean processInnerBlock(BlockPos toCheck) { return true; } if(isHeatSink(bs)) { - String name = String.valueOf(ForgeRegistries.BLOCKS.getKey(bs.getBlock())); + String name = String.valueOf(BuiltInRegistries.BLOCK.getKey(bs.getBlock())); indexedHeatSinks.computeIfAbsent(name, k -> new HashSet<>()).add(toCheck); reversedIndexedHeatSinks.put(toCheck, name); addIfNotExists(toCheck, allHeatSinks); diff --git a/src/main/java/igentuman/nc/multiblock/fission/FissionReactorRegistration.java b/src/main/java/igentuman/nc/multiblock/fission/FissionReactorRegistration.java index 5ac51607f..09e20152b 100644 --- a/src/main/java/igentuman/nc/multiblock/fission/FissionReactorRegistration.java +++ b/src/main/java/igentuman/nc/multiblock/fission/FissionReactorRegistration.java @@ -19,8 +19,8 @@ import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraft.world.level.block.state.BlockBehaviour; -import net.minecraftforge.common.extensions.IForgeMenuType; -import net.minecraftforge.registries.RegistryObject; +import igentuman.api.platform.NCRegistration; +import net.neoforged.neoforge.registries.DeferredHolder; import java.util.*; import java.util.regex.Pattern; @@ -36,22 +36,19 @@ public class FissionReactorRegistration { public static final Pattern TRANSPARENT_BLOCKS = Pattern.compile(".*glass|.*cell.*|photon.*|.*stabilizer.*"); public static final Item.Properties FISSION_ITEM_PROPS = new Item.Properties(); - public static final HashMap> FISSION_BLOCKS = new HashMap<>(); - public static final HashMap>> FISSION_BE = new HashMap<>(); - public static final HashMap> FISSION_BLOCK_ITEMS = new HashMap<>(); - private static final List> hsBlocks = new ArrayList<>(); + public static final HashMap> FISSION_BLOCKS = new HashMap<>(); + public static final HashMap, BlockEntityType>> FISSION_BE = new HashMap<>(); + public static final HashMap> FISSION_BLOCK_ITEMS = new HashMap<>(); + private static final List> hsBlocks = new ArrayList<>(); public static final List hsSchedule = new ArrayList<>(); - public static final RegistryObject> FISSION_CONTROLLER_CONTAINER = CONTAINERS.register("fission_reactor_controller", - () -> IForgeMenuType.create((windowId, inv, data) -> new FissionControllerContainer(windowId, data.readBlockPos(), inv)) - ); + public static final DeferredHolder, MenuType> FISSION_CONTROLLER_CONTAINER = + NCRegistration.registerMenu(CONTAINERS, "fission_reactor_controller", (windowId, inv, data) -> new FissionControllerContainer(windowId, data.readBlockPos(), inv)); - public static final RegistryObject> FISSION_PORT_CONTAINER = CONTAINERS.register("fission_reactor_port", - () -> IForgeMenuType.create((windowId, inv, data) -> new FissionPortContainer(windowId, data.readBlockPos(), inv)) - ); + public static final DeferredHolder, MenuType> FISSION_PORT_CONTAINER = + NCRegistration.registerMenu(CONTAINERS, "fission_reactor_port", (windowId, inv, data) -> new FissionPortContainer(windowId, data.readBlockPos(), inv)); - public static final RegistryObject> MSR_CONTROLLER_CONTAINER = CONTAINERS.register("msr_controller", - () -> IForgeMenuType.create((windowId, inv, data) -> new MSRControllerContainer(windowId, data.readBlockPos(), inv)) - ); + public static final DeferredHolder, MenuType> MSR_CONTROLLER_CONTAINER = + NCRegistration.registerMenu(CONTAINERS, "msr_controller", (windowId, inv, data) -> new MSRControllerContainer(windowId, data.readBlockPos(), inv)); public static final BlockBehaviour.Properties REACTOR_BLOCKS_PROPERTIES = BlockBehaviour.Properties.of().sound(SoundType.METAL).strength(4f).requiresCorrectToolForDrops(); @@ -202,14 +199,14 @@ public static HashMap heatsinks() { public static Block[] getHSBlocks() { Block[] blocks = new Block[hsBlocks.size()]; int i = 0; - for (RegistryObject b: hsBlocks) { + for (DeferredHolder b: hsBlocks) { blocks[i] = b.get(); i++; } return blocks; } - public static RegistryObject fromMultiblock(RegistryObject block) { + public static DeferredHolder fromMultiblock(DeferredHolder block) { return ITEMS.register(block.getId().getPath(), () -> new BlockItem(block.get(), FISSION_ITEM_PROPS)); } } diff --git a/src/main/java/igentuman/nc/multiblock/fission/HeatSinkDef.java b/src/main/java/igentuman/nc/multiblock/fission/HeatSinkDef.java index 638c5bd15..70783c1d3 100644 --- a/src/main/java/igentuman/nc/multiblock/fission/HeatSinkDef.java +++ b/src/main/java/igentuman/nc/multiblock/fission/HeatSinkDef.java @@ -14,8 +14,9 @@ import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.material.Fluid; -import net.minecraftforge.fluids.FluidStack; -import net.minecraftforge.registries.ForgeRegistries; +import net.neoforged.neoforge.fluids.FluidStack; +import net.minecraft.core.registries.BuiltInRegistries; +import net.neoforged.neoforge.registries.NeoForgeRegistries; import java.util.ArrayList; import java.util.HashMap; @@ -126,7 +127,7 @@ public double getHeat() { public List getAllowedFluids() { if(allowedFluids == null) { - allowedFluids = getFluidByTagKey("forge:"+name); + allowedFluids = getFluidByTagKey("c:"+name); } return allowedFluids; } @@ -307,7 +308,7 @@ public HashMap> blocks() if (!bStr.contains(":")) { bStr = MODID + ":" + bStr; } - tmp.add(ForgeRegistries.BLOCKS.getValue(rlFromString(bStr))); + tmp.add(BuiltInRegistries.BLOCK.get(rlFromString(bStr))); } } blocks.put(condition, tmp); diff --git a/src/main/java/igentuman/nc/multiblock/fusion/FusionReactorRegistration.java b/src/main/java/igentuman/nc/multiblock/fusion/FusionReactorRegistration.java index fafbcd73b..366ae67c8 100644 --- a/src/main/java/igentuman/nc/multiblock/fusion/FusionReactorRegistration.java +++ b/src/main/java/igentuman/nc/multiblock/fusion/FusionReactorRegistration.java @@ -17,8 +17,8 @@ import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraft.world.level.block.state.BlockBehaviour; -import net.minecraftforge.common.extensions.IForgeMenuType; -import net.minecraftforge.registries.RegistryObject; +import igentuman.api.platform.NCRegistration; +import net.neoforged.neoforge.registries.DeferredHolder; import java.util.HashMap; @@ -31,25 +31,23 @@ public class FusionReactorRegistration { public static final Item.Properties FUSION_ITEM_PROPERTIES = new Item.Properties(); - public static final HashMap> FUSION_BLOCKS = new HashMap<>(); - public static final HashMap>> FUSION_BE = new HashMap<>(); - public static final HashMap> FUSION_ITEMS = new HashMap<>(); + public static final HashMap> FUSION_BLOCKS = new HashMap<>(); + public static final HashMap, BlockEntityType>> FUSION_BE = new HashMap<>(); + public static final HashMap> FUSION_ITEMS = new HashMap<>(); public static final TagKey CASING_BLOCKS = blockTag("fusion_reactor_casing"); public static final TagKey CASING_ITEMS = itemTag("fusion_reactor_casing"); - public static final RegistryObject FUSION_CORE_PROXY = + public static final DeferredHolder FUSION_CORE_PROXY = BLOCKS.register("fusion_reactor_core_proxy", () -> new FusionCoreProxyBlock(REACTOR_BLOCKS_PROPERTIES)); - public static final RegistryObject> FUSION_CORE_PROXY_BE = + public static final DeferredHolder, BlockEntityType> FUSION_CORE_PROXY_BE = BLOCK_ENTITIES.register("fusion_reactor_core_proxy", () -> BlockEntityType.Builder .of(FusionCoreProxyBE::new, FUSION_CORE_PROXY.get()) .build(null)); - public static final RegistryObject> FUSION_CORE_CONTAINER = - CONTAINERS.register("fusion_reactor_core", - () -> IForgeMenuType.create((windowId, inv, data) -> new FusionCoreContainer(windowId, data.readBlockPos(), inv)) - ); + public static final DeferredHolder, MenuType> FUSION_CORE_CONTAINER = + NCRegistration.registerMenu(CONTAINERS, "fusion_reactor_core", (windowId, inv, data) -> new FusionCoreContainer(windowId, data.readBlockPos(), inv)); public static void init() { String key; @@ -81,7 +79,7 @@ public static void init() { ALL_NC_ITEMS.put(key, FUSION_ITEMS.get(key)); } - public static RegistryObject fromMultiblock(RegistryObject block) { + public static DeferredHolder fromMultiblock(DeferredHolder block) { return ITEMS.register(block.getId().getPath(), () -> new BlockItem(block.get(), FUSION_ITEM_PROPERTIES)); } } diff --git a/src/main/java/igentuman/nc/multiblock/kugelblitz/KugelblitzMultiblock.java b/src/main/java/igentuman/nc/multiblock/kugelblitz/KugelblitzMultiblock.java index d1d76e7b5..374fb8abc 100644 --- a/src/main/java/igentuman/nc/multiblock/kugelblitz/KugelblitzMultiblock.java +++ b/src/main/java/igentuman/nc/multiblock/kugelblitz/KugelblitzMultiblock.java @@ -1,5 +1,6 @@ package igentuman.nc.multiblock.kugelblitz; +import igentuman.api.platform.NCLevels; import igentuman.nc.block.kugelblitz.entity.BlackHoleBE; import igentuman.nc.block.kugelblitz.entity.ChamberTerminalBE; import igentuman.nc.block.kugelblitz.entity.PhotonConcentratorBE; @@ -66,7 +67,7 @@ protected ChamberTerminalBE controllerBE() { public BlockEntity getBlackHole() { if(getCenter() == null || getCenter().equals(BlockPos.ZERO)) return null; - return getLevel().getExistingBlockEntity(getCenter()); + return NCLevels.getExistingBlockEntity(getLevel(), getCenter()); } @Override @@ -169,7 +170,7 @@ public void validateOuter() int forward = depth() == 8 ? -4 : -3; BlockPos l = getLeftPos(left-2).relative(getControllerDirection(), forward); BlockPos topCenter = new BlockPos(l.getX(), topY, l.getZ()); - if(!(getLevel().getExistingBlockEntity(topCenter) instanceof PhotonConcentratorBE pcBE)) { + if(!(NCLevels.getExistingBlockEntity(getLevel(), topCenter) instanceof PhotonConcentratorBE pcBE)) { validationResult = ValidationResult.PHOTON_CONCENTRATOR; return; } else { diff --git a/src/main/java/igentuman/nc/multiblock/kugelblitz/KugelblitzRegistration.java b/src/main/java/igentuman/nc/multiblock/kugelblitz/KugelblitzRegistration.java index c42a60fd5..a858f716c 100644 --- a/src/main/java/igentuman/nc/multiblock/kugelblitz/KugelblitzRegistration.java +++ b/src/main/java/igentuman/nc/multiblock/kugelblitz/KugelblitzRegistration.java @@ -14,8 +14,8 @@ import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraft.world.level.block.state.BlockBehaviour; -import net.minecraftforge.common.extensions.IForgeMenuType; -import net.minecraftforge.registries.RegistryObject; +import igentuman.api.platform.NCRegistration; +import net.neoforged.neoforge.registries.DeferredHolder; import java.util.regex.Pattern; import java.util.HashMap; @@ -30,45 +30,41 @@ public class KugelblitzRegistration { public static final BlockBehaviour.Properties NO_OCCLUSION_BLOCK_PROPS = BlockBehaviour.Properties.of().sound(SoundType.METAL).strength(3f).requiresCorrectToolForDrops().noOcclusion(); public static final Item.Properties KUGELBLITZ_ITEM_PROPERTIES = new Item.Properties(); public static final Block.Properties KUGELBLITZ_BLOCK_PROPERTIES = BlockBehaviour.Properties.of().sound(SoundType.METAL).strength(4f).requiresCorrectToolForDrops();; - public static final HashMap>> KUGELBLITZ_BE = new HashMap<>(); + public static final HashMap, BlockEntityType>> KUGELBLITZ_BE = new HashMap<>(); - public static final HashMap> KUGELBLITZ_ITEMS = new HashMap<>(); - public static final HashMap> KUGELBLITZ_BLOCKS = new HashMap<>(); + public static final HashMap> KUGELBLITZ_ITEMS = new HashMap<>(); + public static final HashMap> KUGELBLITZ_BLOCKS = new HashMap<>(); public static final TagKey CASING_BLOCKS = blockTag("kugelblitz_casing"); public static final TagKey CASING_ITEMS = itemTag("kugelblitz_casing"); - public static final RegistryObject EXPL_PROXY_BLOCK = + public static final DeferredHolder EXPL_PROXY_BLOCK = BLOCKS.register("expl_proxy_block", () -> new EXPLProxyBlock(NO_OCCLUSION_BLOCK_PROPS)); - public static final RegistryObject> EXPL_PROXY_BE = + public static final DeferredHolder, BlockEntityType> EXPL_PROXY_BE = BLOCK_ENTITIES.register("expl_proxy", () -> BlockEntityType.Builder .of(EXPLProxyBE::new, EXPL_PROXY_BLOCK.get()) .build(null)); - public static final RegistryObject EXPL_BLOCK = + public static final DeferredHolder EXPL_BLOCK = BLOCKS.register("expl", () -> new EXPLBlock(NO_OCCLUSION_BLOCK_PROPS)); - public static final RegistryObject> EXPL_BE = + public static final DeferredHolder, BlockEntityType> EXPL_BE = BLOCK_ENTITIES.register("expl", () -> BlockEntityType.Builder .of(EXPLBE::new, EXPL_BLOCK.get()) .build(null)); - public static final RegistryObject EXPL_ITEM = + public static final DeferredHolder EXPL_ITEM = ITEMS.register("expl", () -> new BlockItem(EXPL_BLOCK.get(), KUGELBLITZ_ITEM_PROPERTIES)); - public static final RegistryObject> EXPL_CONTAINER = - CONTAINERS.register("expl", - () -> IForgeMenuType.create((windowId, inv, data) -> new EXPLContainer(windowId, data.readBlockPos(), inv)) - ); + public static final DeferredHolder, MenuType> EXPL_CONTAINER = + NCRegistration.registerMenu(CONTAINERS, "expl", (windowId, inv, data) -> new EXPLContainer(windowId, data.readBlockPos(), inv)); - public static final RegistryObject> CHAMBER_TERMINAL_CONTAINER = CONTAINERS.register("chamber_terminal", - () -> IForgeMenuType.create((windowId, inv, data) -> new ChamberTerminalContainer(windowId, data.readBlockPos(), inv)) - ); - public static final RegistryObject> CHAMBER_PORT_CONTAINER = CONTAINERS.register("chamber_port", - () -> IForgeMenuType.create((windowId, inv, data) -> new ChamberPortContainer(windowId, data.readBlockPos(), inv)) - ); + public static final DeferredHolder, MenuType> CHAMBER_TERMINAL_CONTAINER = + NCRegistration.registerMenu(CONTAINERS, "chamber_terminal", (windowId, inv, data) -> new ChamberTerminalContainer(windowId, data.readBlockPos(), inv)); + public static final DeferredHolder, MenuType> CHAMBER_PORT_CONTAINER = + NCRegistration.registerMenu(CONTAINERS, "chamber_port", (windowId, inv, data) -> new ChamberPortContainer(windowId, data.readBlockPos(), inv)); /* 1. Photon Concentrator @@ -130,7 +126,7 @@ private static void registerSimpleBlock(String key) { ALL_NC_ITEMS.put(key, KUGELBLITZ_ITEMS.get(key)); } - public static RegistryObject fromMultiblock(RegistryObject block) { + public static DeferredHolder fromMultiblock(DeferredHolder block) { return ITEMS.register(block.getId().getPath(), () -> new BlockItem(block.get(), KUGELBLITZ_ITEM_PROPERTIES)); } } diff --git a/src/main/java/igentuman/nc/multiblock/particle_chamber/TargetChamberMultiblock.java b/src/main/java/igentuman/nc/multiblock/particle_chamber/TargetChamberMultiblock.java index b1698316b..a94e125f2 100644 --- a/src/main/java/igentuman/nc/multiblock/particle_chamber/TargetChamberMultiblock.java +++ b/src/main/java/igentuman/nc/multiblock/particle_chamber/TargetChamberMultiblock.java @@ -1,5 +1,6 @@ package igentuman.nc.multiblock.particle_chamber; +import igentuman.api.platform.NCLevels; import igentuman.nc.block.target_chamber.DetectorBlock; import igentuman.nc.block.target_chamber.entity.TargetChamberBeamPortBE; import igentuman.nc.block.target_chamber.entity.TargetChamberControllerBE; @@ -297,7 +298,7 @@ && getTopRightBlock().getZ() <= pos.getZ() public void removeFromCacheIfChanged(BlockPos pos) { long packedPos = pos.asLong(); if (beCache.containsKey(packedPos)) { - BlockEntity be = getLevel().getExistingBlockEntity(pos); + BlockEntity be = NCLevels.getExistingBlockEntity(getLevel(), pos); if(be != beCache.get(packedPos) || (be != null && be.isRemoved())) { beCache.remove(packedPos); } diff --git a/src/main/java/igentuman/nc/multiblock/particle_chamber/TargetChamberRegistration.java b/src/main/java/igentuman/nc/multiblock/particle_chamber/TargetChamberRegistration.java index 4c4c08eb8..e8a277f57 100644 --- a/src/main/java/igentuman/nc/multiblock/particle_chamber/TargetChamberRegistration.java +++ b/src/main/java/igentuman/nc/multiblock/particle_chamber/TargetChamberRegistration.java @@ -14,8 +14,8 @@ import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraft.world.level.block.state.BlockBehaviour; -import net.minecraftforge.common.extensions.IForgeMenuType; -import net.minecraftforge.registries.RegistryObject; +import igentuman.api.platform.NCRegistration; +import net.neoforged.neoforge.registries.DeferredHolder; import java.util.HashMap; import java.util.List; @@ -31,9 +31,9 @@ public class TargetChamberRegistration { public static final Item.Properties TARGET_CHAMBER_ITEM_PROPERTIES = new Item.Properties(); public static final BlockBehaviour.Properties NO_OCCLUSION_BLOCK_PROPS = BlockBehaviour.Properties.of().sound(SoundType.METAL).strength(3f).requiresCorrectToolForDrops().noOcclusion(); public static final Block.Properties TARGET_CHAMBER_BLOCK_PROPERTIES = BlockBehaviour.Properties.of().sound(SoundType.METAL).strength(4f).requiresCorrectToolForDrops();; - public static final HashMap> TARGET_CHAMBER_BLOCKS = new HashMap<>(); - public static final HashMap>> TARGET_CHAMBER_BE = new HashMap<>(); - public static final HashMap> TARGET_CHAMBER_ITEMS = new HashMap<>(); + public static final HashMap> TARGET_CHAMBER_BLOCKS = new HashMap<>(); + public static final HashMap, BlockEntityType>> TARGET_CHAMBER_BE = new HashMap<>(); + public static final HashMap> TARGET_CHAMBER_ITEMS = new HashMap<>(); public static final TagKey TARGET_CHAMBER_CASING_BLOCKS = blockTag("target_chamber_casing"); public static final TagKey TARGET_CHAMBER_INNER_BLOCKS = blockTag("target_chamber_inner"); public static final TagKey TARGET_CHAMBER_INNER_ITEMS = itemTag("target_chamber_inner"); @@ -41,12 +41,10 @@ public class TargetChamberRegistration { public static final Pattern TRANSPARENT_BLOCKS_PATTERN = Pattern.compile(".*glass.*"); public static final HashMap TARGET_CHAMBER_DETECTORS = new HashMap<>(); - public static final RegistryObject> TARGET_CHAMBER_CONTROLLER_CONTAINER = CONTAINERS.register("target_chamber_controller", - () -> IForgeMenuType.create((windowId, inv, data) -> new TargetChamberControllerContainer(windowId, data.readBlockPos(), inv)) - ); - public static final RegistryObject> TARGET_CHAMBER_PORT_CONTAINER = CONTAINERS.register("target_chamber_port", - () -> IForgeMenuType.create((windowId, inv, data) -> new TargetChamberPortContainer(windowId, data.readBlockPos(), inv)) - ); + public static final DeferredHolder, MenuType> TARGET_CHAMBER_CONTROLLER_CONTAINER = + NCRegistration.registerMenu(CONTAINERS, "target_chamber_controller", (windowId, inv, data) -> new TargetChamberControllerContainer(windowId, data.readBlockPos(), inv)); + public static final DeferredHolder, MenuType> TARGET_CHAMBER_PORT_CONTAINER = + NCRegistration.registerMenu(CONTAINERS, "target_chamber_port", (windowId, inv, data) -> new TargetChamberPortContainer(windowId, data.readBlockPos(), inv)); public static List detectors() { return List.of( diff --git a/src/main/java/igentuman/nc/multiblock/turbine/CoilDef.java b/src/main/java/igentuman/nc/multiblock/turbine/CoilDef.java index c771c6a02..5d58fc9be 100644 --- a/src/main/java/igentuman/nc/multiblock/turbine/CoilDef.java +++ b/src/main/java/igentuman/nc/multiblock/turbine/CoilDef.java @@ -6,11 +6,13 @@ import net.minecraft.core.Direction; import net.minecraft.tags.TagKey; import net.minecraft.world.item.Item; +import igentuman.api.platform.NCIngredients; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.crafting.Ingredient; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.Block; -import net.minecraftforge.registries.ForgeRegistries; +import net.minecraft.core.registries.BuiltInRegistries; +import net.neoforged.neoforge.registries.NeoForgeRegistries; import java.util.ArrayList; import java.util.HashMap; @@ -90,7 +92,7 @@ public List getItemsByTagKey(String key) String namespace; String location; TagKey tag = TagKey.create(ITEM_REGISTRY, rlFromString(key)); - Ingredient ing = Ingredient.fromValues(Stream.of(new Ingredient.TagValue(tag))); + Ingredient ing = NCIngredients.ofTag(tag); for (ItemStack item: ing.getItems()) { tmp.add(item.getItem().toString()); } @@ -250,7 +252,7 @@ public HashMap> blocks() if (!bStr.contains(":")) { bStr = MODID + ":" + bStr; } - tmp.add(ForgeRegistries.BLOCKS.getValue(rlFromString(bStr))); + tmp.add(BuiltInRegistries.BLOCK.get(rlFromString(bStr))); } } blocks.put(condition, tmp); diff --git a/src/main/java/igentuman/nc/multiblock/turbine/TurbineRegistration.java b/src/main/java/igentuman/nc/multiblock/turbine/TurbineRegistration.java index 58c00defc..1a05e07cb 100644 --- a/src/main/java/igentuman/nc/multiblock/turbine/TurbineRegistration.java +++ b/src/main/java/igentuman/nc/multiblock/turbine/TurbineRegistration.java @@ -13,8 +13,9 @@ import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraft.world.level.block.state.BlockBehaviour; -import net.minecraftforge.common.extensions.IForgeMenuType; -import net.minecraftforge.registries.RegistryObject; +import igentuman.api.platform.NCRegistration; +import net.neoforged.neoforge.registries.DeferredHolder; +import net.neoforged.neoforge.registries.DeferredItem; import java.util.*; import java.util.function.Supplier; @@ -27,15 +28,15 @@ public class TurbineRegistration { public static final Item.Properties TURBINE_ITEM_PROPS = new Item.Properties(); public static final BlockBehaviour.Properties TURBINE_BLOCKS_PROPERTIES = BlockBehaviour.Properties.of().sound(SoundType.METAL).strength(4f).requiresCorrectToolForDrops(); public static final BlockBehaviour.Properties GLASS_BLOCK_PROPERTIES = BlockBehaviour.Properties.of().sound(SoundType.METAL).strength(3f).requiresCorrectToolForDrops().noOcclusion(); - public static final HashMap> TURBINE_BLOCKS = new HashMap<>(); - public static final HashMap>> TURBINE_BE = new HashMap<>(); - public static final HashMap> TURBINE_BLOCK_ITEMS = new HashMap<>(); + public static final HashMap> TURBINE_BLOCKS = new HashMap<>(); + public static final HashMap, BlockEntityType>> TURBINE_BE = new HashMap<>(); + public static final HashMap> TURBINE_BLOCK_ITEMS = new HashMap<>(); public static final TagKey CASING_BLOCKS = blockTag("turbine_casing"); public static final TagKey INNER_TURBINE_BLOCKS = blockTag("turbine_inner"); public static final HashMap blades = blades(); public static final HashMap coils = coils(); private static HashMap efficiency; - public static final RegistryObject dummyBlade = addBlock("dummy_turbine_blade", () -> new TurbineDummyBladeBlock(TURBINE_BLOCKS_PROPERTIES)); + public static final DeferredHolder dummyBlade = addBlock("dummy_turbine_blade", () -> new TurbineDummyBladeBlock(TURBINE_BLOCKS_PROPERTIES)); public static HashMap blades() { if(blades != null) return blades; HashMap tmp = new HashMap<>(); @@ -58,38 +59,37 @@ public static HashMap coils() { return tmp; } - public static final RegistryObject> TURBINE_CONTROLLER_CONTAINER = CONTAINERS.register("turbine_controller", - () -> IForgeMenuType.create((windowId, inv, data) -> new TurbineControllerContainer(windowId, data.readBlockPos(), inv)) - ); - public static final RegistryObject> TURBINE_PORT_CONTAINER = CONTAINERS.register("turbine_port", - () -> IForgeMenuType.create((windowId, inv, data) -> new TurbinePortContainer(windowId, data.readBlockPos(), inv)) - ); + public static final DeferredHolder, MenuType> TURBINE_CONTROLLER_CONTAINER = + NCRegistration.registerMenu(CONTAINERS, "turbine_controller", (windowId, inv, data) -> new TurbineControllerContainer(windowId, data.readBlockPos(), inv)); + public static final DeferredHolder, MenuType> TURBINE_PORT_CONTAINER = + NCRegistration.registerMenu(CONTAINERS, "turbine_port", (windowId, inv, data) -> new TurbinePortContainer(windowId, data.readBlockPos(), inv)); public static void init() { blocks(); } - public static RegistryObject addBlock(String name, Supplier block) { + @SuppressWarnings("unchecked") + public static DeferredHolder addBlock(String name, Supplier block) { TURBINE_BLOCKS.put(name, BLOCKS.register(name, block)); - TURBINE_BLOCK_ITEMS.put(name, ITEMS.register(name, () -> new BlockItem(TURBINE_BLOCKS.get(name).get(), TURBINE_ITEM_PROPS))); + TURBINE_BLOCK_ITEMS.put(name, (DeferredItem) (DeferredItem) ITEMS.register(name, () -> new BlockItem(TURBINE_BLOCKS.get(name).get(), TURBINE_ITEM_PROPS))); return TURBINE_BLOCKS.get(name); } public static void blocks() { - RegistryObject controller = addBlock("turbine_controller", () -> new TurbineControllerBlock(TURBINE_BLOCKS_PROPERTIES)); + DeferredHolder controller = addBlock("turbine_controller", () -> new TurbineControllerBlock(TURBINE_BLOCKS_PROPERTIES)); TURBINE_BE.put("turbine_controller", BLOCK_ENTITIES.register("turbine_controller", () -> BlockEntityType.Builder.of(TurbineControllerBE::new, controller.get()) .build(null))); - RegistryObject port = addBlock("turbine_port", () -> new TurbinePortBlock(TURBINE_BLOCKS_PROPERTIES)); + DeferredHolder port = addBlock("turbine_port", () -> new TurbinePortBlock(TURBINE_BLOCKS_PROPERTIES)); TURBINE_BE.put("turbine_port", BLOCK_ENTITIES.register("turbine_port", () -> BlockEntityType.Builder.of(TurbinePortBE::new, port.get()) .build(null))); - RegistryObject rotor = addBlock("turbine_rotor_shaft", () -> new TurbineRotorBlock(GLASS_BLOCK_PROPERTIES)); + DeferredHolder rotor = addBlock("turbine_rotor_shaft", () -> new TurbineRotorBlock(GLASS_BLOCK_PROPERTIES)); TURBINE_BE.put("turbine_rotor_shaft", BLOCK_ENTITIES.register("turbine_rotor_shaft", () -> BlockEntityType.Builder.of(TurbineRotorBE::new, rotor.get()) diff --git a/src/main/java/igentuman/nc/network/BasePacketHandler.java b/src/main/java/igentuman/nc/network/BasePacketHandler.java index d8e6e7d67..0425c943e 100644 --- a/src/main/java/igentuman/nc/network/BasePacketHandler.java +++ b/src/main/java/igentuman/nc/network/BasePacketHandler.java @@ -1,197 +1,50 @@ package igentuman.nc.network; -import igentuman.nc.util.functions.TriConsumer; -import net.minecraft.core.BlockPos; -import net.minecraft.core.SectionPos; import net.minecraft.network.FriendlyByteBuf; -import net.minecraft.resources.ResourceKey; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.server.MinecraftServer; -import net.minecraft.server.level.ServerLevel; -import net.minecraft.server.level.ServerPlayer; -import net.minecraft.server.players.PlayerList; -import net.minecraft.world.entity.Entity; -import net.minecraft.world.level.ChunkPos; -import net.minecraft.world.level.Level; -import net.minecraft.world.level.block.entity.BlockEntity; -import net.minecraft.world.phys.Vec3; -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.minecraftforge.server.ServerLifecycleHooks; -import org.jetbrains.annotations.Nullable; -import java.util.Map; -import java.util.Optional; import java.util.function.BiConsumer; import java.util.function.Function; import java.util.function.IntFunction; +/** + * @deprecated Networking is now handled via CustomPacketPayload and RegisterPayloadHandlersEvent. + * Send methods moved to PacketHandler. Only static buffer utility methods remain. + */ +@Deprecated public abstract class BasePacketHandler { - protected static SimpleChannel createChannel(ResourceLocation name) { - - return NetworkRegistry.ChannelBuilder.named(name) - .clientAcceptedVersions("NC"::equals) - .serverAcceptedVersions("NC"::equals) - .networkProtocolVersion(() -> "NC") - .simpleChannel(); - } - - public static String readString(FriendlyByteBuf buffer) { - return buffer.readUtf(Short.MAX_VALUE); - } - - public static Vec3 readVector3d(FriendlyByteBuf buffer) { - return new Vec3(buffer.readDouble(), buffer.readDouble(), buffer.readDouble()); - } - - public static void writeVector3d(FriendlyByteBuf buffer, Vec3 vector) { - buffer.writeDouble(vector.x()); - buffer.writeDouble(vector.y()); - buffer.writeDouble(vector.z()); - } - - public static void writeOptional(FriendlyByteBuf buffer, @Nullable TYPE value, BiConsumer writer) { - if (value == null) { - buffer.writeBoolean(false); - } else { - buffer.writeBoolean(true); - writer.accept(buffer, value); - } - } - - @Nullable - public static TYPE readOptional(FriendlyByteBuf buffer, Function reader) { - return buffer.readBoolean() ? reader.apply(buffer) : null; - } - - public static void writeArray(FriendlyByteBuf buffer, TYPE[] array, BiConsumer writer) { - buffer.writeVarInt(array.length); - for (TYPE element : array) { - writer.accept(element, buffer); - } - } - - public static TYPE[] readArray(FriendlyByteBuf buffer, IntFunction arrayFactory, Function reader) { - TYPE[] array = arrayFactory.apply(buffer.readVarInt()); - for (int element = 0; element < array.length; element++) { - array[element] = reader.apply(buffer); - } - return array; - } - - public static void writeMap(FriendlyByteBuf buffer, Map map, TriConsumer writer) { - buffer.writeVarInt(map.size()); - map.forEach((key, value) -> writer.accept(key, value, buffer)); - } - - public static > MAP readMap(FriendlyByteBuf buffer, IntFunction mapFactory, Function keyReader, - Function valueReader) { - int elements = buffer.readVarInt(); - MAP map = mapFactory.apply(elements); - for (int element = 0; element < elements; element++) { - map.put(keyReader.apply(buffer), valueReader.apply(buffer)); - } - return map; - } - - - private int index = 0; - - protected abstract SimpleChannel getChannel(); - - public abstract void initialize(); - - protected void registerClientToServer(Class type, Function decoder) { - registerMessage(type, decoder, NetworkDirection.PLAY_TO_SERVER); - } - - protected void registerServerToClient(Class type, Function decoder) { - registerMessage(type, decoder, NetworkDirection.PLAY_TO_CLIENT); - } - - private void registerMessage(Class type, Function decoder, NetworkDirection networkDirection) { - getChannel().registerMessage(index++, type, INcPacket::encode, decoder, INcPacket::handle, Optional.of(networkDirection)); - } - /** - * Send this message to the specified player. - * - * @param message - the message to send - * @param player - the player to send it to - */ - public void sendTo(MSG message, ServerPlayer player) { - //Validate it is not a fake player, even though none of our code should call this with a fake player - if (!(player instanceof FakePlayer)) { - getChannel().send(PacketDistributor.PLAYER.with(() -> player), message); - } - } - - /** - * Send this message to everyone connected to the server. - * - * @param message - message to send - */ - public void sendToAll(MSG message) { - getChannel().send(PacketDistributor.ALL.noArg(), message); - } - - /** - * Send this message to everyone connected to the server if the server has loaded. - * - * @param message - message to send + * Reads an array from a packet buffer. * - * @apiNote This is useful for reload listeners + * @param buffer The buffer to read from. + * @param arrayFactory Factory to create the array (e.g., {@code MyType[]::new}). + * @param reader Function to read a single element from the buffer. + * @param Buffer type. + * @param Element type. + * @return The deserialized array. */ - public void sendToAllIfLoaded(MSG message) { - if (ServerLifecycleHooks.getCurrentServer() != null) { - //If the server has loaded, send to all players - sendToAll(message); + public static T[] readArray(B buffer, IntFunction arrayFactory, Function reader) { + int size = buffer.readVarInt(); + T[] array = arrayFactory.apply(size); + for (int i = 0; i < size; i++) { + array[i] = reader.apply(buffer); } + return array; } /** - * Send this message to everyone within the supplied dimension. - * - * @param message - the message to send - * @param dimension - the dimension to target - */ - public void sendToDimension(MSG message, ResourceKey dimension) { - getChannel().send(PacketDistributor.DIMENSION.with(() -> dimension), message); - } - - /** - * Send this message to the server. + * Writes an array to a packet buffer. * - * @param message - the message to send + * @param buffer The buffer to write to. + * @param array The array to write. + * @param writer BiConsumer that writes a single element to the buffer. + * @param Buffer type. + * @param Element type. */ - public void sendToServer(MSG message) { - getChannel().sendToServer(message); - } - - public void sendToAllTracking(MSG message, Entity entity) { - getChannel().send(PacketDistributor.TRACKING_ENTITY.with(() -> entity), message); - } - - public void sendToAllTrackingAndSelf(MSG message, Entity entity) { - getChannel().send(PacketDistributor.TRACKING_ENTITY_AND_SELF.with(() -> entity), message); - } - - public void sendToAllTracking(MSG message, BlockEntity tile) { - sendToAllTracking(message, tile.getLevel(), tile.getBlockPos()); - } - - public void sendToAllTracking(MSG message, Level world, BlockPos pos) { - if (world instanceof ServerLevel level) { - //If we have a ServerWorld just directly figure out the ChunkPos to not require looking up the chunk - // This provides a decent performance boost over using the packet distributor - level.getChunkSource().chunkMap.getPlayers(new ChunkPos(pos), false).forEach(p -> sendTo(message, p)); - } else { - //Otherwise, fallback to entities tracking the chunk if some mod did something odd and our world is not a ServerWorld - getChannel().send(PacketDistributor.TRACKING_CHUNK.with(() -> world.getChunk(SectionPos.blockToSectionCoord(pos.getX()), SectionPos.blockToSectionCoord(pos.getZ()))), message); + public static void writeArray(B buffer, T[] array, BiConsumer writer) { + buffer.writeVarInt(array.length); + for (T element : array) { + writer.accept(element, buffer); } } -} \ No newline at end of file +} diff --git a/src/main/java/igentuman/nc/network/INcPacket.java b/src/main/java/igentuman/nc/network/INcPacket.java index a936f25a8..800de005f 100644 --- a/src/main/java/igentuman/nc/network/INcPacket.java +++ b/src/main/java/igentuman/nc/network/INcPacket.java @@ -1,23 +1,8 @@ package igentuman.nc.network; -import net.minecraft.network.FriendlyByteBuf; -import net.minecraftforge.network.NetworkEvent; - -import java.util.function.Supplier; - +/** + * @deprecated Replaced by CustomPacketPayload in NeoForge 1.21.1. This interface is no longer used. + */ +@Deprecated public interface INcPacket { - - void handle(NetworkEvent.Context context); - - void encode(FriendlyByteBuf buffer); - - static void handle(PACKET message, Supplier ctx) { - if (message != null) { - //Message should never be null unless something went horribly wrong decoding. - // In which case we don't want to try enqueuing handling it, or set the packet as handled - NetworkEvent.Context context = ctx.get(); - context.enqueueWork(() -> message.handle(context)); - context.setPacketHandled(true); - } - } -} \ No newline at end of file +} diff --git a/src/main/java/igentuman/nc/network/NCProcessorPacket.java b/src/main/java/igentuman/nc/network/NCProcessorPacket.java index 48455d7b9..0b6a3d7e1 100644 --- a/src/main/java/igentuman/nc/network/NCProcessorPacket.java +++ b/src/main/java/igentuman/nc/network/NCProcessorPacket.java @@ -1,46 +1,8 @@ package igentuman.nc.network; -import net.minecraft.core.BlockPos; -import net.minecraft.network.FriendlyByteBuf; -import net.minecraft.server.level.ServerPlayer; -import net.minecraft.world.level.block.entity.BlockEntity; -import net.minecraftforge.network.NetworkEvent; - -import java.util.function.Supplier; - +/** + * @deprecated This packet was unused and has been removed. + */ +@Deprecated public class NCProcessorPacket { - - private final BlockPos pos; - private final int id; - private final byte val; - - public NCProcessorPacket(BlockPos pos, int id, byte val) - { - this.pos = pos; - this.id = id; - this.val = val; - } - - public NCProcessorPacket(FriendlyByteBuf buf) { - this.pos = buf.readBlockPos(); - this.id = buf.readInt(); - this.val = buf.readByte(); - } - - public void toBytes(FriendlyByteBuf buf) { - buf.writeBlockPos(pos); - buf.writeInt(id); - buf.writeByte(val); - } - - public boolean handle(Supplier supplier) { - NetworkEvent.Context context = supplier.get(); - context.enqueueWork(() -> { - - ServerPlayer player = context.getSender(); - BlockEntity be = player.level().getBlockEntity(pos); - - }); - return true; - } } diff --git a/src/main/java/igentuman/nc/network/PacketHandler.java b/src/main/java/igentuman/nc/network/PacketHandler.java index e6d81eb2f..b85fc9c71 100644 --- a/src/main/java/igentuman/nc/network/PacketHandler.java +++ b/src/main/java/igentuman/nc/network/PacketHandler.java @@ -1,37 +1,82 @@ package igentuman.nc.network; -import igentuman.nc.NuclearCraft; import igentuman.nc.network.toClient.PacketPlayerRadiationData; import igentuman.nc.network.toClient.PacketWorldRadiationData; import igentuman.nc.network.toServer.*; -import igentuman.nc.util.ModUtil; -import net.minecraftforge.network.simple.SimpleChannel; -public class PacketHandler extends BasePacketHandler { +import net.minecraft.network.protocol.common.custom.CustomPacketPayload; +import net.minecraft.resources.ResourceKey; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.server.level.ServerPlayer; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.level.Level; +import net.neoforged.bus.api.SubscribeEvent; +import net.neoforged.fml.common.EventBusSubscriber; +import net.neoforged.neoforge.common.util.FakePlayer; +import net.neoforged.neoforge.network.PacketDistributor; +import net.neoforged.neoforge.network.event.RegisterPayloadHandlersEvent; +import net.neoforged.neoforge.network.registration.PayloadRegistrar; - private final SimpleChannel netHandler = createChannel(NuclearCraft.rl(NuclearCraft.MODID)); +import static igentuman.nc.NuclearCraft.MODID; - @Override - protected SimpleChannel getChannel() { - return netHandler; +@EventBusSubscriber(modid = MODID, bus = EventBusSubscriber.Bus.MOD) +public class PacketHandler { + + @SubscribeEvent + public static void register(RegisterPayloadHandlersEvent event) { + PayloadRegistrar registrar = event.registrar(MODID).versioned("1.0"); + + // Client to server messages + registrar.playToServer(PacketSliderChanged.TYPE, PacketSliderChanged.STREAM_CODEC, PacketSliderChanged::handle); + registrar.playToServer(PacketGuiButtonPress.TYPE, PacketGuiButtonPress.STREAM_CODEC, PacketGuiButtonPress::handle); + registrar.playToServer(PacketSideConfigToggle.TYPE, PacketSideConfigToggle.STREAM_CODEC, PacketSideConfigToggle::handle); + registrar.playToServer(PacketFlushSlotContent.TYPE, PacketFlushSlotContent.STREAM_CODEC, PacketFlushSlotContent::handle); + registrar.playToServer(PacketHandleFluidSlotClick.TYPE, PacketHandleFluidSlotClick.STREAM_CODEC, PacketHandleFluidSlotClick::handle); + registrar.playToServer(PacketBuildMultiblock.TYPE, PacketBuildMultiblock.STREAM_CODEC, PacketBuildMultiblock::handle); + registrar.playToServer(PacketRecipeTransfer.TYPE, PacketRecipeTransfer.STREAM_CODEC, PacketRecipeTransfer::handle); + if (net.neoforged.fml.ModList.get().isLoaded("ae2")) { + registrar.playToServer(PacketAE2PatternTransfer.TYPE, PacketAE2PatternTransfer.STREAM_CODEC, PacketAE2PatternTransfer::handle); + } + + // Server to client messages + registrar.playToClient(PacketWorldRadiationData.TYPE, PacketWorldRadiationData.STREAM_CODEC, PacketWorldRadiationData::handle); + registrar.playToClient(PacketPlayerRadiationData.TYPE, PacketPlayerRadiationData.STREAM_CODEC, PacketPlayerRadiationData::handle); } - @Override - public void initialize() { - //Client to server messages - registerClientToServer(PacketSliderChanged.class, PacketSliderChanged::decode); - registerClientToServer(PacketGuiButtonPress.class, PacketGuiButtonPress::decode); - registerClientToServer(PacketSideConfigToggle.class, PacketSideConfigToggle::decode); - registerClientToServer(PacketFlushSlotContent.class, PacketFlushSlotContent::decode); - registerClientToServer(PacketHandleFluidSlotClick.class, PacketHandleFluidSlotClick::decode); - registerClientToServer(PacketBuildMultiblock.class, PacketBuildMultiblock::decode); - registerClientToServer(PacketRecipeTransfer.class, PacketRecipeTransfer::decode); - if(ModUtil.isAE2Loaded()) { - registerClientToServer(PacketAE2PatternTransfer.class, PacketAE2PatternTransfer::decode); + /** + * Send a message to a specific player. + */ + public void sendTo(MSG message, ServerPlayer player) { + if (!(player instanceof FakePlayer)) { + PacketDistributor.sendToPlayer(player, message); } + } + + /** + * Send a message to all connected players. + */ + public void sendToAll(MSG message) { + PacketDistributor.sendToAllPlayers(message); + } + + /** + * Send a message to the server. + */ + public void sendToServer(MSG message) { + PacketDistributor.sendToServer(message); + } + + /** + * Send a message to all players tracking the given entity. + */ + public void sendToAllTracking(MSG message, Entity entity) { + PacketDistributor.sendToPlayersTrackingEntity(entity, message); + } - //Server to client messages - registerServerToClient(PacketWorldRadiationData.class, PacketWorldRadiationData::decode); - registerServerToClient(PacketPlayerRadiationData.class, PacketPlayerRadiationData::decode); + /** + * Send a message to all players tracking the given entity, and the entity itself if it's a player. + */ + public void sendToAllTrackingAndSelf(MSG message, Entity entity) { + PacketDistributor.sendToPlayersTrackingEntityAndSelf(entity, message); } -} \ No newline at end of file +} diff --git a/src/main/java/igentuman/nc/network/toClient/PacketPlayerRadiationData.java b/src/main/java/igentuman/nc/network/toClient/PacketPlayerRadiationData.java index e6951752c..e164e51cd 100644 --- a/src/main/java/igentuman/nc/network/toClient/PacketPlayerRadiationData.java +++ b/src/main/java/igentuman/nc/network/toClient/PacketPlayerRadiationData.java @@ -1,11 +1,19 @@ package igentuman.nc.network.toClient; -import igentuman.nc.network.INcPacket; +import igentuman.nc.NuclearCraft; import igentuman.nc.radiation.client.ClientRadiationData; import net.minecraft.network.FriendlyByteBuf; -import net.minecraftforge.network.NetworkEvent; +import net.minecraft.network.codec.StreamCodec; +import net.minecraft.network.protocol.common.custom.CustomPacketPayload; +import net.neoforged.neoforge.network.handling.IPayloadContext; -public class PacketPlayerRadiationData implements INcPacket { +public class PacketPlayerRadiationData implements CustomPacketPayload { + + public static final CustomPacketPayload.Type TYPE = + new CustomPacketPayload.Type<>(NuclearCraft.rl("player_radiation_data")); + + public static final StreamCodec STREAM_CODEC = + StreamCodec.of((buf, pkt) -> pkt.encode(buf), PacketPlayerRadiationData::decode); private final long playerRadiation; @@ -14,13 +22,14 @@ public PacketPlayerRadiationData(long playerRadiation) { } @Override - public void handle(NetworkEvent.Context context) { + public Type type() { return TYPE; } + + public static void handle(PacketPlayerRadiationData packet, IPayloadContext context) { context.enqueueWork(() -> { - ClientRadiationData.setPlayerRadiation(playerRadiation); + ClientRadiationData.setPlayerRadiation(packet.playerRadiation); }); } - @Override public void encode(FriendlyByteBuf buffer) { buffer.writeLong(playerRadiation); } diff --git a/src/main/java/igentuman/nc/network/toClient/PacketWorldRadiationData.java b/src/main/java/igentuman/nc/network/toClient/PacketWorldRadiationData.java index f5c2be99b..0a8a74f8c 100644 --- a/src/main/java/igentuman/nc/network/toClient/PacketWorldRadiationData.java +++ b/src/main/java/igentuman/nc/network/toClient/PacketWorldRadiationData.java @@ -1,14 +1,22 @@ package igentuman.nc.network.toClient; -import igentuman.nc.network.INcPacket; +import igentuman.nc.NuclearCraft; import igentuman.nc.radiation.client.ClientRadiationData; import net.minecraft.network.FriendlyByteBuf; -import net.minecraftforge.network.NetworkEvent; +import net.minecraft.network.codec.StreamCodec; +import net.minecraft.network.protocol.common.custom.CustomPacketPayload; +import net.neoforged.neoforge.network.handling.IPayloadContext; import java.util.HashMap; import java.util.Map; -public class PacketWorldRadiationData implements INcPacket { +public class PacketWorldRadiationData implements CustomPacketPayload { + + public static final CustomPacketPayload.Type TYPE = + new CustomPacketPayload.Type<>(NuclearCraft.rl("world_radiation_data")); + + public static final StreamCodec STREAM_CODEC = + StreamCodec.of((buf, pkt) -> pkt.encode(buf), PacketWorldRadiationData::decode); private final HashMap radiation; @@ -22,13 +30,14 @@ public PacketWorldRadiationData(HashMap radiation) { } @Override - public void handle(NetworkEvent.Context context) { + public Type type() { return TYPE; } + + public static void handle(PacketWorldRadiationData packet, IPayloadContext context) { context.enqueueWork(() -> { - ClientRadiationData.setWorldRadiation(radiation); + ClientRadiationData.setWorldRadiation(packet.radiation); }); } - @Override public void encode(FriendlyByteBuf buffer) { buffer.writeInt(radiation.size()); for(Map.Entry entry : radiation.entrySet()) { diff --git a/src/main/java/igentuman/nc/network/toServer/PacketAE2PatternTransfer.java b/src/main/java/igentuman/nc/network/toServer/PacketAE2PatternTransfer.java index d69362cde..d56e07a1e 100644 --- a/src/main/java/igentuman/nc/network/toServer/PacketAE2PatternTransfer.java +++ b/src/main/java/igentuman/nc/network/toServer/PacketAE2PatternTransfer.java @@ -7,21 +7,29 @@ import appeng.parts.encoding.EncodingMode; import appeng.parts.encoding.PatternEncodingLogic; import appeng.util.ConfigInventory; -import igentuman.nc.network.INcPacket; -import net.minecraft.network.FriendlyByteBuf; +import igentuman.nc.NuclearCraft; +import net.minecraft.network.RegistryFriendlyByteBuf; +import net.minecraft.network.codec.StreamCodec; +import net.minecraft.network.protocol.common.custom.CustomPacketPayload; import net.minecraft.server.level.ServerPlayer; import net.minecraft.world.item.ItemStack; -import net.minecraftforge.fluids.FluidStack; -import net.minecraftforge.network.NetworkEvent; +import net.neoforged.neoforge.fluids.FluidStack; +import net.neoforged.neoforge.network.handling.IPayloadContext; import java.lang.reflect.Field; import java.util.ArrayList; import java.util.List; -public class PacketAE2PatternTransfer implements INcPacket { +public class PacketAE2PatternTransfer implements CustomPacketPayload { + + public static final CustomPacketPayload.Type TYPE = + new CustomPacketPayload.Type<>(NuclearCraft.rl("ae2_pattern_transfer")); + + public static final StreamCodec STREAM_CODEC = + StreamCodec.of((buf, pkt) -> pkt.encode(buf), PacketAE2PatternTransfer::decode); private static Field encodingLogicField; - + static { try { encodingLogicField = PatternEncodingTermMenu.class.getDeclaredField("encodingLogic"); @@ -52,8 +60,14 @@ public PacketAE2PatternTransfer(List inputItems, List inp } @Override - public void handle(NetworkEvent.Context context) { - ServerPlayer player = context.getSender(); + public Type type() { return TYPE; } + + public static void handle(PacketAE2PatternTransfer packet, IPayloadContext context) { + context.enqueueWork(() -> packet.handlePacket(context)); + } + + private void handlePacket(IPayloadContext context) { + ServerPlayer player = (ServerPlayer) context.player(); if (player == null) { return; } @@ -66,25 +80,25 @@ public void handle(NetworkEvent.Context context) { try { // Set the mode to processing patternEncodingTermMenu.setMode(EncodingMode.PROCESSING); - + // Get the encoding logic using reflection PatternEncodingLogic encodingLogic = (PatternEncodingLogic) encodingLogicField.get(patternEncodingTermMenu); - + // Get the config inventories from the pattern encoding logic ConfigInventory encodedInputInv = encodingLogic.getEncodedInputInv(); ConfigInventory encodedOutputInv = encodingLogic.getEncodedOutputInv(); - + // Clear existing data encodedInputInv.clear(); encodedOutputInv.clear(); - + // Process inputs - both items and fluids int inputSlot = 0; - + // Add item inputs for (ItemStack stack : inputItems) { if (inputSlot >= encodedInputInv.size()) break; - + if (!stack.isEmpty()) { AEItemKey itemKey = AEItemKey.of(stack); if (itemKey != null) { @@ -92,11 +106,11 @@ public void handle(NetworkEvent.Context context) { } } } - + // Add fluid inputs for (FluidStack fluidStack : inputFluids) { if (inputSlot >= encodedInputInv.size()) break; - + if (!fluidStack.isEmpty()) { AEFluidKey fluidKey = AEFluidKey.of(fluidStack); if (fluidKey != null) { @@ -104,14 +118,14 @@ public void handle(NetworkEvent.Context context) { } } } - + // Process outputs - both items and fluids int outputSlot = 0; - + // Add item outputs for (ItemStack stack : outputItems) { if (outputSlot >= encodedOutputInv.size()) break; - + if (!stack.isEmpty()) { AEItemKey itemKey = AEItemKey.of(stack); if (itemKey != null) { @@ -119,11 +133,11 @@ public void handle(NetworkEvent.Context context) { } } } - + // Add fluid outputs for (FluidStack fluidStack : outputFluids) { if (outputSlot >= encodedOutputInv.size()) break; - + if (!fluidStack.isEmpty()) { AEFluidKey fluidKey = AEFluidKey.of(fluidStack); if (fluidKey != null) { @@ -131,66 +145,65 @@ public void handle(NetworkEvent.Context context) { } } } - + } catch (Exception e) { e.printStackTrace(); } } - @Override - public void encode(FriendlyByteBuf buffer) { + public void encode(RegistryFriendlyByteBuf buffer) { // Write input items buffer.writeInt(inputItems.size()); for (ItemStack stack : inputItems) { - buffer.writeItem(stack); + ItemStack.STREAM_CODEC.encode(buffer, stack); } - + // Write input fluids buffer.writeInt(inputFluids.size()); for (FluidStack fluidStack : inputFluids) { - fluidStack.writeToPacket(buffer); + FluidStack.STREAM_CODEC.encode(buffer, fluidStack); } - + // Write output items buffer.writeInt(outputItems.size()); for (ItemStack stack : outputItems) { - buffer.writeItem(stack); + ItemStack.STREAM_CODEC.encode(buffer, stack); } - + // Write output fluids buffer.writeInt(outputFluids.size()); for (FluidStack fluidStack : outputFluids) { - fluidStack.writeToPacket(buffer); + FluidStack.STREAM_CODEC.encode(buffer, fluidStack); } } - public static PacketAE2PatternTransfer decode(FriendlyByteBuf buffer) { + public static PacketAE2PatternTransfer decode(RegistryFriendlyByteBuf buffer) { PacketAE2PatternTransfer packet = new PacketAE2PatternTransfer(); - + // Read input items int inputItemCount = buffer.readInt(); for (int i = 0; i < inputItemCount; i++) { - packet.inputItems.add(buffer.readItem()); + packet.inputItems.add(ItemStack.STREAM_CODEC.decode(buffer)); } - + // Read input fluids int inputFluidCount = buffer.readInt(); for (int i = 0; i < inputFluidCount; i++) { - packet.inputFluids.add(FluidStack.readFromPacket(buffer)); + packet.inputFluids.add(FluidStack.STREAM_CODEC.decode(buffer)); } - + // Read output items int outputItemCount = buffer.readInt(); for (int i = 0; i < outputItemCount; i++) { - packet.outputItems.add(buffer.readItem()); + packet.outputItems.add(ItemStack.STREAM_CODEC.decode(buffer)); } - + // Read output fluids int outputFluidCount = buffer.readInt(); for (int i = 0; i < outputFluidCount; i++) { - packet.outputFluids.add(FluidStack.readFromPacket(buffer)); + packet.outputFluids.add(FluidStack.STREAM_CODEC.decode(buffer)); } - + return packet; } -} \ No newline at end of file +} diff --git a/src/main/java/igentuman/nc/network/toServer/PacketBuildMultiblock.java b/src/main/java/igentuman/nc/network/toServer/PacketBuildMultiblock.java index 23418895c..3ad2ea9cb 100644 --- a/src/main/java/igentuman/nc/network/toServer/PacketBuildMultiblock.java +++ b/src/main/java/igentuman/nc/network/toServer/PacketBuildMultiblock.java @@ -1,18 +1,25 @@ - package igentuman.nc.network.toServer; +import igentuman.nc.NuclearCraft; import igentuman.nc.block.entity.MultiblockBuilderBE; -import igentuman.nc.network.INcPacket; import net.minecraft.core.BlockPos; import net.minecraft.network.FriendlyByteBuf; +import net.minecraft.network.codec.StreamCodec; +import net.minecraft.network.protocol.common.custom.CustomPacketPayload; import net.minecraft.server.level.ServerPlayer; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.entity.BlockEntity; -import net.minecraftforge.network.NetworkEvent; +import net.neoforged.neoforge.network.handling.IPayloadContext; import java.util.HashMap; -public class PacketBuildMultiblock implements INcPacket { +public class PacketBuildMultiblock implements CustomPacketPayload { + + public static final CustomPacketPayload.Type TYPE = + new CustomPacketPayload.Type<>(NuclearCraft.rl("build_multiblock")); + + public static final StreamCodec STREAM_CODEC = + StreamCodec.of((buf, pkt) -> pkt.encode(buf), PacketBuildMultiblock::decode); private BlockPos tilePosition; private HashMap blockMap = new HashMap<>(); @@ -27,8 +34,14 @@ public PacketBuildMultiblock() { } @Override - public void handle(NetworkEvent.Context context) { - ServerPlayer player = context.getSender(); + public Type type() { return TYPE; } + + public static void handle(PacketBuildMultiblock packet, IPayloadContext context) { + context.enqueueWork(() -> packet.handlePacket(context)); + } + + private void handlePacket(IPayloadContext context) { + ServerPlayer player = (ServerPlayer) context.player(); if (player == null) { return; } @@ -38,7 +51,6 @@ public void handle(NetworkEvent.Context context) { } } - @Override public void encode(FriendlyByteBuf buffer) { buffer.writeBlockPos(tilePosition); buffer.writeInt(blockMap.size()); @@ -59,4 +71,4 @@ public static PacketBuildMultiblock decode(FriendlyByteBuf buffer) { } return packet; } -} \ No newline at end of file +} diff --git a/src/main/java/igentuman/nc/network/toServer/PacketFlushSlotContent.java b/src/main/java/igentuman/nc/network/toServer/PacketFlushSlotContent.java index 46393f021..8d9f9c07e 100644 --- a/src/main/java/igentuman/nc/network/toServer/PacketFlushSlotContent.java +++ b/src/main/java/igentuman/nc/network/toServer/PacketFlushSlotContent.java @@ -1,18 +1,25 @@ - package igentuman.nc.network.toServer; +import igentuman.nc.NuclearCraft; import igentuman.nc.block.entity.processor.NCProcessorBE; import igentuman.nc.block.fusion.entity.FusionCoreBE; import igentuman.nc.block.turbine.entity.TurbineControllerBE; import igentuman.nc.block.turbine.entity.TurbinePortBE; -import igentuman.nc.network.INcPacket; import net.minecraft.core.BlockPos; import net.minecraft.network.FriendlyByteBuf; +import net.minecraft.network.codec.StreamCodec; +import net.minecraft.network.protocol.common.custom.CustomPacketPayload; import net.minecraft.server.level.ServerPlayer; import net.minecraft.world.level.block.entity.BlockEntity; -import net.minecraftforge.network.NetworkEvent; +import net.neoforged.neoforge.network.handling.IPayloadContext; + +public class PacketFlushSlotContent implements CustomPacketPayload { -public class PacketFlushSlotContent implements INcPacket { + public static final CustomPacketPayload.Type TYPE = + new CustomPacketPayload.Type<>(NuclearCraft.rl("flush_slot_content")); + + public static final StreamCodec STREAM_CODEC = + StreamCodec.of((buf, pkt) -> pkt.encode(buf), PacketFlushSlotContent::decode); private BlockPos tilePosition; private int slotId; @@ -27,8 +34,14 @@ public PacketFlushSlotContent() { } @Override - public void handle(NetworkEvent.Context context) { - ServerPlayer player = context.getSender(); + public Type type() { return TYPE; } + + public static void handle(PacketFlushSlotContent packet, IPayloadContext context) { + context.enqueueWork(() -> packet.handlePacket(context)); + } + + private void handlePacket(IPayloadContext context) { + ServerPlayer player = (ServerPlayer) context.player(); if (player == null) { return; } @@ -51,7 +64,6 @@ public void handle(NetworkEvent.Context context) { } } - @Override public void encode(FriendlyByteBuf buffer) { buffer.writeBlockPos(tilePosition); buffer.writeInt(slotId); @@ -63,4 +75,4 @@ public static PacketFlushSlotContent decode(FriendlyByteBuf buffer) { packet.slotId = buffer.readInt(); return packet; } -} \ No newline at end of file +} diff --git a/src/main/java/igentuman/nc/network/toServer/PacketGuiButtonPress.java b/src/main/java/igentuman/nc/network/toServer/PacketGuiButtonPress.java index 4b071eb2a..85b795aaf 100644 --- a/src/main/java/igentuman/nc/network/toServer/PacketGuiButtonPress.java +++ b/src/main/java/igentuman/nc/network/toServer/PacketGuiButtonPress.java @@ -1,5 +1,6 @@ package igentuman.nc.network.toServer; +import igentuman.nc.NuclearCraft; import igentuman.nc.block.entity.MultiblockControllerBE; import igentuman.nc.block.fission.entity.FissionControllerBE; import igentuman.nc.block.fission.entity.FissionPortBE; @@ -14,19 +15,26 @@ import igentuman.nc.client.gui.element.button.Button.ReactorMode; import igentuman.nc.client.gui.element.button.Button.RedstoneConfig; import igentuman.nc.item.ContainerBlockItem; -import igentuman.nc.network.INcPacket; import net.minecraft.core.BlockPos; import net.minecraft.network.FriendlyByteBuf; +import net.minecraft.network.codec.StreamCodec; +import net.minecraft.network.protocol.common.custom.CustomPacketPayload; import net.minecraft.server.level.ServerPlayer; import net.minecraft.world.entity.EquipmentSlot; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.block.entity.BlockEntity; -import net.minecraftforge.network.NetworkEvent; +import net.neoforged.neoforge.network.handling.IPayloadContext; import java.util.UUID; -public class PacketGuiButtonPress implements INcPacket { +public class PacketGuiButtonPress implements CustomPacketPayload { + + public static final CustomPacketPayload.Type TYPE = + new CustomPacketPayload.Type<>(NuclearCraft.rl("gui_button_press")); + + public static final StreamCodec STREAM_CODEC = + StreamCodec.of((buf, pkt) -> pkt.encode(buf), PacketGuiButtonPress::decode); private BlockPos tilePosition; private UUID playerUUID; @@ -48,10 +56,15 @@ public PacketGuiButtonPress() { } - @Override - public void handle(NetworkEvent.Context context) { - ServerPlayer player = context.getSender(); + public Type type() { return TYPE; } + + public static void handle(PacketGuiButtonPress packet, IPayloadContext context) { + context.enqueueWork(() -> packet.handlePacket(context)); + } + + private void handlePacket(IPayloadContext context) { + ServerPlayer player = (ServerPlayer) context.player(); if (player == null) { return; } @@ -123,7 +136,6 @@ private void toggleBlockEntity(ServerPlayer player, BlockPos tilePosition) { } } - @Override public void encode(FriendlyByteBuf buffer) { buffer.writeBlockPos(tilePosition); buffer.writeUUID(playerUUID); diff --git a/src/main/java/igentuman/nc/network/toServer/PacketHandleFluidSlotClick.java b/src/main/java/igentuman/nc/network/toServer/PacketHandleFluidSlotClick.java index e81146ca4..f3e6211c9 100644 --- a/src/main/java/igentuman/nc/network/toServer/PacketHandleFluidSlotClick.java +++ b/src/main/java/igentuman/nc/network/toServer/PacketHandleFluidSlotClick.java @@ -1,16 +1,23 @@ - package igentuman.nc.network.toServer; +import igentuman.nc.NuclearCraft; import igentuman.nc.block.entity.processor.NCProcessorBE; -import igentuman.nc.network.INcPacket; import net.minecraft.core.BlockPos; -import net.minecraft.network.FriendlyByteBuf; +import net.minecraft.network.RegistryFriendlyByteBuf; +import net.minecraft.network.codec.StreamCodec; +import net.minecraft.network.protocol.common.custom.CustomPacketPayload; import net.minecraft.server.level.ServerPlayer; import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.block.entity.BlockEntity; -import net.minecraftforge.network.NetworkEvent; +import net.neoforged.neoforge.network.handling.IPayloadContext; + +public class PacketHandleFluidSlotClick implements CustomPacketPayload { -public class PacketHandleFluidSlotClick implements INcPacket { + public static final CustomPacketPayload.Type TYPE = + new CustomPacketPayload.Type<>(NuclearCraft.rl("handle_fluid_slot_click")); + + public static final StreamCodec STREAM_CODEC = + StreamCodec.of((buf, pkt) -> pkt.encode(buf), PacketHandleFluidSlotClick::decode); private BlockPos tilePosition; private int slotId; @@ -28,8 +35,14 @@ public PacketHandleFluidSlotClick(BlockPos position, int slotId, ItemStack carri } @Override - public void handle(NetworkEvent.Context context) { - ServerPlayer player = context.getSender(); + public Type type() { return TYPE; } + + public static void handle(PacketHandleFluidSlotClick packet, IPayloadContext context) { + context.enqueueWork(() -> packet.handlePacket(context)); + } + + private void handlePacket(IPayloadContext context) { + ServerPlayer player = (ServerPlayer) context.player(); if (player == null) { return; } @@ -40,18 +53,17 @@ public void handle(NetworkEvent.Context context) { } } - @Override - public void encode(FriendlyByteBuf buffer) { + public void encode(RegistryFriendlyByteBuf buffer) { buffer.writeBlockPos(tilePosition); buffer.writeInt(slotId); - buffer.writeItemStack(fluidStackHandler, false); + ItemStack.STREAM_CODEC.encode(buffer, fluidStackHandler); } - public static PacketHandleFluidSlotClick decode(FriendlyByteBuf buffer) { + public static PacketHandleFluidSlotClick decode(RegistryFriendlyByteBuf buffer) { PacketHandleFluidSlotClick packet = new PacketHandleFluidSlotClick(); packet.tilePosition = buffer.readBlockPos(); packet.slotId = buffer.readInt(); - packet.fluidStackHandler = buffer.readItem(); + packet.fluidStackHandler = ItemStack.STREAM_CODEC.decode(buffer); return packet; } -} \ No newline at end of file +} diff --git a/src/main/java/igentuman/nc/network/toServer/PacketRecipeTransfer.java b/src/main/java/igentuman/nc/network/toServer/PacketRecipeTransfer.java index 1518291db..54e7ef8df 100644 --- a/src/main/java/igentuman/nc/network/toServer/PacketRecipeTransfer.java +++ b/src/main/java/igentuman/nc/network/toServer/PacketRecipeTransfer.java @@ -1,18 +1,27 @@ package igentuman.nc.network.toServer; +import igentuman.api.platform.NCItemStacks; +import igentuman.nc.NuclearCraft; import igentuman.nc.block.entity.processor.NCProcessorBE; -import igentuman.nc.network.INcPacket; import igentuman.nc.recipes.type.NcRecipe; import net.minecraft.core.BlockPos; import net.minecraft.network.FriendlyByteBuf; +import net.minecraft.network.codec.StreamCodec; +import net.minecraft.network.protocol.common.custom.CustomPacketPayload; import net.minecraft.resources.ResourceLocation; import net.minecraft.server.level.ServerPlayer; import net.minecraft.world.item.ItemStack; -import net.minecraft.world.item.crafting.Recipe; +import net.minecraft.world.item.crafting.RecipeHolder; import net.minecraft.world.level.block.entity.BlockEntity; -import net.minecraftforge.network.NetworkEvent; +import net.neoforged.neoforge.network.handling.IPayloadContext; -public class PacketRecipeTransfer implements INcPacket { +public class PacketRecipeTransfer implements CustomPacketPayload { + + public static final CustomPacketPayload.Type TYPE = + new CustomPacketPayload.Type<>(NuclearCraft.rl("recipe_transfer")); + + public static final StreamCodec STREAM_CODEC = + StreamCodec.of((buf, pkt) -> pkt.encode(buf), PacketRecipeTransfer::decode); private BlockPos blockPos; private ResourceLocation recipeId; @@ -26,8 +35,14 @@ public PacketRecipeTransfer(BlockPos blockPos, ResourceLocation recipeId) { } @Override - public void handle(NetworkEvent.Context context) { - ServerPlayer player = context.getSender(); + public Type type() { return TYPE; } + + public static void handle(PacketRecipeTransfer packet, IPayloadContext context) { + context.enqueueWork(() -> packet.handlePacket(context)); + } + + private void handlePacket(IPayloadContext context) { + ServerPlayer player = (ServerPlayer) context.player(); if (player == null) { return; } @@ -48,9 +63,13 @@ public void handle(NetworkEvent.Context context) { return; } - // Find the recipe by ID - Recipe recipe = player.level().getRecipeManager().byKey(recipeId).orElse(null); - if (!(recipe instanceof NcRecipe ncRecipe)) { + // Find the recipe by ID — byKey returns Optional> in 1.21.1 + NcRecipe ncRecipe = player.level().getRecipeManager().byKey(recipeId) + .map(RecipeHolder::value) + .filter(r -> r instanceof NcRecipe) + .map(r -> (NcRecipe) r) + .orElse(null); + if (ncRecipe == null) { return; } @@ -59,39 +78,59 @@ public void handle(NetworkEvent.Context context) { } private void transferRecipeItems(ServerPlayer player, NCProcessorBE processorBE, NcRecipe recipe) { - // Get the processor's item handler - processorBE.getCapability(net.minecraftforge.common.capabilities.ForgeCapabilities.ITEM_HANDLER).ifPresent(processorItemHandler -> { - int inputSlotIndex = 0; - int maxInputSlots = processorBE.prefab().getSlotsConfig().getInputItems(); - - // Process each input ingredient - for (var inputIngredient : recipe.getInputItems()) { - if (inputSlotIndex >= maxInputSlots) break; - if (inputIngredient == null || inputIngredient.getRepresentations().isEmpty()) { - inputSlotIndex++; - continue; - } + // Get the processor's item handler directly + var processorItemHandler = processorBE.contentHandler().itemHandler; + if (processorItemHandler == null) return; + + int inputSlotIndex = 0; + int maxInputSlots = processorBE.prefab().getSlotsConfig().getInputItems(); + + // Process each input ingredient + for (var inputIngredient : recipe.getInputItems()) { + if (inputSlotIndex >= maxInputSlots) break; + if (inputIngredient == null || inputIngredient.getRepresentations().isEmpty()) { + inputSlotIndex++; + continue; + } + + // Find the first matching item in player inventory + for (ItemStack requiredStack : inputIngredient.getRepresentations()) { + int playerSlotIndex = findItemSlotInPlayerInventory(player, requiredStack); + if (playerSlotIndex != -1) { + ItemStack playerStack = player.getInventory().getItem(playerSlotIndex); + + // Calculate how much we can transfer + int transferAmount = Math.min(requiredStack.getCount(), playerStack.getCount()); + + // Check if the processor slot can accept this item + ItemStack toTransfer = playerStack.copy(); + toTransfer.setCount(transferAmount); + + ItemStack currentInSlot = processorItemHandler.getStackInSlot(inputSlotIndex); + + if (currentInSlot.isEmpty()) { + // Slot is empty, try to insert + ItemStack remainder = processorItemHandler.insertItem(inputSlotIndex, toTransfer, false); + int actualTransferred = transferAmount - remainder.getCount(); + + if (actualTransferred > 0) { + playerStack.shrink(actualTransferred); + if (playerStack.isEmpty()) { + player.getInventory().setItem(playerSlotIndex, ItemStack.EMPTY); + } + break; + } + } else if (NCItemStacks.canStack(currentInSlot, toTransfer)) { + // Same item, try to stack + int spaceLeft = currentInSlot.getMaxStackSize() - currentInSlot.getCount(); + int actualTransfer = Math.min(transferAmount, spaceLeft); + + if (actualTransfer > 0) { + ItemStack toInsert = toTransfer.copy(); + toInsert.setCount(actualTransfer); + ItemStack remainder = processorItemHandler.insertItem(inputSlotIndex, toInsert, false); + int actualTransferred = actualTransfer - remainder.getCount(); - // Find the first matching item in player inventory - for (ItemStack requiredStack : inputIngredient.getRepresentations()) { - int playerSlotIndex = findItemSlotInPlayerInventory(player, requiredStack); - if (playerSlotIndex != -1) { - ItemStack playerStack = player.getInventory().getItem(playerSlotIndex); - - // Calculate how much we can transfer - int transferAmount = Math.min(requiredStack.getCount(), playerStack.getCount()); - - // Check if the processor slot can accept this item - ItemStack toTransfer = playerStack.copy(); - toTransfer.setCount(transferAmount); - - ItemStack currentInSlot = processorItemHandler.getStackInSlot(inputSlotIndex); - - if (currentInSlot.isEmpty()) { - // Slot is empty, try to insert - ItemStack remainder = processorItemHandler.insertItem(inputSlotIndex, toTransfer, false); - int actualTransferred = transferAmount - remainder.getCount(); - if (actualTransferred > 0) { playerStack.shrink(actualTransferred); if (playerStack.isEmpty()) { @@ -99,40 +138,21 @@ private void transferRecipeItems(ServerPlayer player, NCProcessorBE processorBE, } break; } - } else if (ItemStack.isSameItemSameTags(currentInSlot, toTransfer)) { - // Same item, try to stack - int spaceLeft = currentInSlot.getMaxStackSize() - currentInSlot.getCount(); - int actualTransfer = Math.min(transferAmount, spaceLeft); - - if (actualTransfer > 0) { - ItemStack toInsert = toTransfer.copy(); - toInsert.setCount(actualTransfer); - ItemStack remainder = processorItemHandler.insertItem(inputSlotIndex, toInsert, false); - int actualTransferred = actualTransfer - remainder.getCount(); - - if (actualTransferred > 0) { - playerStack.shrink(actualTransferred); - if (playerStack.isEmpty()) { - player.getInventory().setItem(playerSlotIndex, ItemStack.EMPTY); - } - break; - } - } } } } - inputSlotIndex++; } - - // Mark the processor as changed to sync with clients - processorBE.setChanged(); - }); + inputSlotIndex++; + } + + // Mark the processor as changed to sync with clients + processorBE.setChanged(); } private int findItemSlotInPlayerInventory(ServerPlayer player, ItemStack required) { for (int i = 0; i < player.getInventory().getContainerSize(); i++) { ItemStack stack = player.getInventory().getItem(i); - if (ItemStack.isSameItemSameTags(stack, required) && stack.getCount() >= required.getCount()) { + if (NCItemStacks.canStack(stack, required) && stack.getCount() >= required.getCount()) { return i; } } @@ -142,20 +162,19 @@ private int findItemSlotInPlayerInventory(ServerPlayer player, ItemStack require private boolean isPlayerLookingAtBlock(ServerPlayer player, BlockPos blockPos) { // Get player's look vector var lookVec = player.getLookAngle(); - + // Get vector from player's eye position to block center var playerEyePos = player.getEyePosition(); var blockCenter = blockPos.getCenter(); var toBlock = blockCenter.subtract(playerEyePos).normalize(); - + // Calculate dot product to determine angle double dotProduct = lookVec.dot(toBlock); - - // Allow for a reasonable viewing angle (about 45 degrees = cos(45°) ≈ 0.707) + + // Allow for a reasonable viewing angle (about 45 degrees = cos(45) ~ 0.707) return dotProduct > 0.5; } - @Override public void encode(FriendlyByteBuf buffer) { buffer.writeBlockPos(blockPos); buffer.writeResourceLocation(recipeId); @@ -167,4 +186,4 @@ public static PacketRecipeTransfer decode(FriendlyByteBuf buffer) { packet.recipeId = buffer.readResourceLocation(); return packet; } -} \ No newline at end of file +} diff --git a/src/main/java/igentuman/nc/network/toServer/PacketSideConfigToggle.java b/src/main/java/igentuman/nc/network/toServer/PacketSideConfigToggle.java index 421ee1558..8231d0d4e 100644 --- a/src/main/java/igentuman/nc/network/toServer/PacketSideConfigToggle.java +++ b/src/main/java/igentuman/nc/network/toServer/PacketSideConfigToggle.java @@ -1,14 +1,22 @@ package igentuman.nc.network.toServer; +import igentuman.nc.NuclearCraft; import igentuman.nc.block.entity.processor.NCProcessorBE; -import igentuman.nc.network.INcPacket; import net.minecraft.core.BlockPos; import net.minecraft.network.FriendlyByteBuf; +import net.minecraft.network.codec.StreamCodec; +import net.minecraft.network.protocol.common.custom.CustomPacketPayload; import net.minecraft.server.level.ServerPlayer; import net.minecraft.world.level.block.entity.BlockEntity; -import net.minecraftforge.network.NetworkEvent; +import net.neoforged.neoforge.network.handling.IPayloadContext; -public class PacketSideConfigToggle implements INcPacket { +public class PacketSideConfigToggle implements CustomPacketPayload { + + public static final CustomPacketPayload.Type TYPE = + new CustomPacketPayload.Type<>(NuclearCraft.rl("side_config_toggle")); + + public static final StreamCodec STREAM_CODEC = + StreamCodec.of((buf, pkt) -> pkt.encode(buf), PacketSideConfigToggle::decode); private BlockPos tilePosition; private int slotId; @@ -24,10 +32,15 @@ public PacketSideConfigToggle() { } - @Override - public void handle(NetworkEvent.Context context) { - ServerPlayer player = context.getSender(); + public Type type() { return TYPE; } + + public static void handle(PacketSideConfigToggle packet, IPayloadContext context) { + context.enqueueWork(() -> packet.handlePacket(context)); + } + + private void handlePacket(IPayloadContext context) { + ServerPlayer player = (ServerPlayer) context.player(); if (player == null) { return; } @@ -39,7 +52,6 @@ public void handle(NetworkEvent.Context context) { processor.toggleSideConfig(slotId, direction); } - @Override public void encode(FriendlyByteBuf buffer) { buffer.writeBlockPos(tilePosition); buffer.writeInt(slotId); @@ -54,4 +66,4 @@ public static PacketSideConfigToggle decode(FriendlyByteBuf buffer) { return packet; } -} \ No newline at end of file +} diff --git a/src/main/java/igentuman/nc/network/toServer/PacketSliderChanged.java b/src/main/java/igentuman/nc/network/toServer/PacketSliderChanged.java index 33c3182b7..b25fe036d 100644 --- a/src/main/java/igentuman/nc/network/toServer/PacketSliderChanged.java +++ b/src/main/java/igentuman/nc/network/toServer/PacketSliderChanged.java @@ -1,13 +1,21 @@ package igentuman.nc.network.toServer; +import igentuman.nc.NuclearCraft; import igentuman.nc.block.entity.NuclearCraftBE; -import igentuman.nc.network.INcPacket; import net.minecraft.core.BlockPos; import net.minecraft.network.FriendlyByteBuf; +import net.minecraft.network.codec.StreamCodec; +import net.minecraft.network.protocol.common.custom.CustomPacketPayload; import net.minecraft.server.level.ServerPlayer; -import net.minecraftforge.network.NetworkEvent; +import net.neoforged.neoforge.network.handling.IPayloadContext; -public class PacketSliderChanged implements INcPacket { +public class PacketSliderChanged implements CustomPacketPayload { + + public static final CustomPacketPayload.Type TYPE = + new CustomPacketPayload.Type<>(NuclearCraft.rl("slider_changed")); + + public static final StreamCodec STREAM_CODEC = + StreamCodec.of((buf, pkt) -> pkt.encode(buf), PacketSliderChanged::decode); private BlockPos tilePosition; private int ratio; @@ -24,8 +32,14 @@ public PacketSliderChanged() { } @Override - public void handle(NetworkEvent.Context context) { - ServerPlayer player = context.getSender(); + public Type type() { return TYPE; } + + public static void handle(PacketSliderChanged packet, IPayloadContext context) { + context.enqueueWork(() -> packet.handlePacket(context)); + } + + private void handlePacket(IPayloadContext context) { + ServerPlayer player = (ServerPlayer) context.player(); if (player == null) { return; } @@ -36,7 +50,6 @@ public void handle(NetworkEvent.Context context) { } } - @Override public void encode(FriendlyByteBuf buffer) { buffer.writeBlockPos(tilePosition); buffer.writeInt(ratio); @@ -50,4 +63,4 @@ public static PacketSliderChanged decode(FriendlyByteBuf buffer) { packet.buttonId = buffer.readInt(); return packet; } -} \ No newline at end of file +} diff --git a/src/main/java/igentuman/nc/radiation/FluidRadiation.java b/src/main/java/igentuman/nc/radiation/FluidRadiation.java index 5e7a87491..1ab844a95 100644 --- a/src/main/java/igentuman/nc/radiation/FluidRadiation.java +++ b/src/main/java/igentuman/nc/radiation/FluidRadiation.java @@ -6,14 +6,15 @@ import net.minecraft.resources.ResourceLocation; import net.minecraft.world.item.Item; import net.minecraft.world.level.material.Fluid; -import net.minecraftforge.fluids.FluidStack; -import net.minecraftforge.registries.ForgeRegistries; +import net.neoforged.neoforge.fluids.FluidStack; +import net.minecraft.core.registries.BuiltInRegistries; +import net.neoforged.neoforge.registries.NeoForgeRegistries; import java.util.HashMap; import java.util.List; import static igentuman.nc.NuclearCraft.MODID; -import static igentuman.nc.NuclearCraft.forgeRl; +import static igentuman.nc.NuclearCraft.neoforgeRl; import static igentuman.nc.util.NcUtils.rlFromString; public class FluidRadiation { @@ -92,7 +93,7 @@ protected static Fluid getFluidByName(String name) name = MODID +":" + name; } ResourceLocation itemKey = rlFromString(name.replace("/", "_")); - return ForgeRegistries.FLUIDS.getValue(itemKey); + return BuiltInRegistries.FLUID.get(itemKey); } public static double byFluid(Fluid item) { diff --git a/src/main/java/igentuman/nc/radiation/ItemRadiation.java b/src/main/java/igentuman/nc/radiation/ItemRadiation.java index becfbc1a3..d7c174447 100644 --- a/src/main/java/igentuman/nc/radiation/ItemRadiation.java +++ b/src/main/java/igentuman/nc/radiation/ItemRadiation.java @@ -1,5 +1,6 @@ package igentuman.nc.radiation; +import igentuman.api.platform.NCNames; import igentuman.nc.content.fuel.FuelManager; import igentuman.nc.content.materials.Materials; import igentuman.nc.content.energy.RTGs; @@ -8,7 +9,8 @@ import net.minecraft.world.item.AirItem; import net.minecraft.world.item.Item; import net.minecraft.world.level.block.Block; -import net.minecraftforge.registries.ForgeRegistries; +import net.minecraft.core.registries.BuiltInRegistries; +import net.neoforged.neoforge.registries.NeoForgeRegistries; import java.util.HashMap; import java.util.List; @@ -69,8 +71,8 @@ public static void init() if(name.matches("xenorium.*|quantite.*")) break; } } - for(Block block: getBlocksByTagKey("forge:storage_blocks/uranium")) { - add(block.asItem().toString(), 0.00004D); + for(Block block: getBlocksByTagKey("c:storage_blocks/uranium")) { + add(NCNames.of(block.asItem()), 0.00004D); } add(getNCBlock("americium241").asItem(), 0.05D); @@ -156,7 +158,7 @@ public static Item getItemByName(String name) name = MODID +":" + name; } ResourceLocation itemKey = rlFromString(name.replace("/", "_")); - return ForgeRegistries.ITEMS.getValue(itemKey); + return BuiltInRegistries.ITEM.get(itemKey); } public static double byItem(Item item) { diff --git a/src/main/java/igentuman/nc/radiation/ItemShielding.java b/src/main/java/igentuman/nc/radiation/ItemShielding.java index 72b008581..204b16541 100644 --- a/src/main/java/igentuman/nc/radiation/ItemShielding.java +++ b/src/main/java/igentuman/nc/radiation/ItemShielding.java @@ -2,12 +2,13 @@ import net.minecraft.resources.ResourceLocation; import net.minecraft.world.item.Item; -import net.minecraftforge.registries.ForgeRegistries; +import net.minecraft.core.registries.BuiltInRegistries; +import net.neoforged.neoforge.registries.NeoForgeRegistries; import java.util.HashMap; import static igentuman.nc.NuclearCraft.MODID; -import static igentuman.nc.NuclearCraft.forgeRl; +import static igentuman.nc.NuclearCraft.neoforgeRl; import static igentuman.nc.handler.config.RadiationConfig.RADIATION_CONFIG; import static igentuman.nc.util.NcUtils.rlFromString; import static net.minecraft.world.item.Items.AIR; @@ -62,7 +63,7 @@ protected static Item getItemByName(String name) name = MODID +":" + name; } ResourceLocation itemKey = rlFromString(name.replace("/", "_")); - return ForgeRegistries.ITEMS.getValue(itemKey); + return BuiltInRegistries.ITEM.get(itemKey); } public static int byItem(Item item) { diff --git a/src/main/java/igentuman/nc/radiation/RadiationCleaningItems.java b/src/main/java/igentuman/nc/radiation/RadiationCleaningItems.java index 003f19240..0d9f69a8a 100644 --- a/src/main/java/igentuman/nc/radiation/RadiationCleaningItems.java +++ b/src/main/java/igentuman/nc/radiation/RadiationCleaningItems.java @@ -2,12 +2,13 @@ import net.minecraft.resources.ResourceLocation; import net.minecraft.world.item.Item; -import net.minecraftforge.registries.ForgeRegistries; +import net.minecraft.core.registries.BuiltInRegistries; +import net.neoforged.neoforge.registries.NeoForgeRegistries; import java.util.HashMap; import static igentuman.nc.NuclearCraft.MODID; -import static igentuman.nc.NuclearCraft.forgeRl; +import static igentuman.nc.NuclearCraft.neoforgeRl; import static igentuman.nc.handler.config.RadiationConfig.RADIATION_CONFIG; import static igentuman.nc.util.NcUtils.rlFromString; import static net.minecraft.world.item.Items.AIR; @@ -62,7 +63,7 @@ protected static Item getItemByName(String name) name = MODID +":" + name; } ResourceLocation itemKey = rlFromString(name.replace("/", "_")); - return ForgeRegistries.ITEMS.getValue(itemKey); + return BuiltInRegistries.ITEM.get(itemKey); } public static long byItem(Item item) { diff --git a/src/main/java/igentuman/nc/radiation/client/RadiationOverlay.java b/src/main/java/igentuman/nc/radiation/client/RadiationOverlay.java index ec02748c1..edc0ca2ab 100644 --- a/src/main/java/igentuman/nc/radiation/client/RadiationOverlay.java +++ b/src/main/java/igentuman/nc/radiation/client/RadiationOverlay.java @@ -3,13 +3,14 @@ import com.mojang.blaze3d.systems.RenderSystem; import igentuman.nc.client.NcClient; import igentuman.nc.radiation.data.PlayerRadiation; -import net.minecraft.client.renderer.GameRenderer; +import net.minecraft.client.DeltaTracker; +import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.GuiGraphics; +import net.minecraft.client.gui.LayeredDraw; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.ItemStack; -import net.minecraftforge.client.gui.overlay.IGuiOverlay; -import static igentuman.nc.NuclearCraft.MODID; import static igentuman.nc.NuclearCraft.rl; import static igentuman.nc.setup.registration.NCItems.ALL_NC_ITEMS; @@ -21,23 +22,21 @@ public static boolean hasDosimeter(Player player) { return player.getInventory().contains(new ItemStack(ALL_NC_ITEMS.get("dosimeter").get())); } - public static final IGuiOverlay RADIATION_BAR = (gui, poseStack, partialTicks, width, height) -> { + public static final LayeredDraw.Layer RADIATION_BAR = (graphics, deltaTracker) -> { Player pl = NcClient.tryGetClientPlayer(); if (pl == null) return; if(!hasDosimeter(pl)) return; ClientRadiationData.setCurrentChunk(pl.chunkPosition().x, pl.chunkPosition().z, pl.level()); long radiation = ClientRadiationData.getPlayerRadiation(); - String toDisplay = String.valueOf(radiation); - int x = width / 2; + Minecraft mc = Minecraft.getInstance(); + int width = mc.getWindow().getGuiScaledWidth(); + int height = mc.getWindow().getGuiScaledHeight(); int y = height; - RenderSystem.setShader(GameRenderer::getPositionTexShader); RenderSystem.setShaderColor(1.0F, 1.0F, 1.0F, 1.0F); - RenderSystem.setShaderTexture(0, RADIATION_BAR_TEXTURE); - poseStack.blit(RADIATION_BAR_TEXTURE,4, y - 15,0,0,94,11,256,256); + graphics.blit(RADIATION_BAR_TEXTURE,4, y - 15,0,0,94,11,256,256); long maxRadiationBar = PlayerRadiation.maxPlayerRadiation; int barWidth = (int) Math.min(128, radiation * 90 / maxRadiationBar); - RenderSystem.setShaderTexture(0, RADIATION_BAR_TEXTURE); - poseStack.blit(RADIATION_BAR_TEXTURE,6,y - 13,0,11, barWidth,8,256,256); + graphics.blit(RADIATION_BAR_TEXTURE,6,y - 13,0,11, barWidth,8,256,256); }; -} \ No newline at end of file +} diff --git a/src/main/java/igentuman/nc/radiation/client/WhiteNoiseOverlay.java b/src/main/java/igentuman/nc/radiation/client/WhiteNoiseOverlay.java index 96ed12f5b..8bdde55e3 100644 --- a/src/main/java/igentuman/nc/radiation/client/WhiteNoiseOverlay.java +++ b/src/main/java/igentuman/nc/radiation/client/WhiteNoiseOverlay.java @@ -2,41 +2,39 @@ import com.mojang.blaze3d.systems.RenderSystem; import igentuman.nc.client.NcClient; +import net.minecraft.client.DeltaTracker; import net.minecraft.client.Minecraft; -import net.minecraft.client.renderer.GameRenderer; +import net.minecraft.client.gui.GuiGraphics; +import net.minecraft.client.gui.LayeredDraw; import net.minecraft.resources.ResourceLocation; import net.minecraft.util.RandomSource; import net.minecraft.world.entity.player.Player; -import net.minecraftforge.client.gui.overlay.IGuiOverlay; -import java.util.Random; - -import static igentuman.nc.NuclearCraft.MODID; import static igentuman.nc.NuclearCraft.rl; -import static igentuman.nc.setup.registration.NCItems.ALL_NC_ITEMS; public class WhiteNoiseOverlay { private static final ResourceLocation NOISE = rl("textures/gui/overlay/white_noise.png"); - public static final IGuiOverlay WHITE_NOISE = (gui, poseStack, partialTicks, width, height) -> { + public static final LayeredDraw.Layer WHITE_NOISE = (graphics, deltaTracker) -> { if(true) return; Player pl = NcClient.tryGetClientPlayer(); if (pl == null) return; int radiation = ClientRadiationData.getCurrentWorldRadiation(); int level = radiation/100000; if(level < 5) return; - RenderSystem.setShader(GameRenderer::getPositionTexShader); + Minecraft mc = Minecraft.getInstance(); + int width = mc.getWindow().getGuiScaledWidth(); + int height = mc.getWindow().getGuiScaledHeight(); RenderSystem.setShaderColor(1.0F, 1.0F, 1.0F, 1.0F); - RenderSystem.setShaderTexture(0, NOISE); - assert Minecraft.getInstance().level != null; - RandomSource rand = Minecraft.getInstance().level.random; + assert mc.level != null; + RandomSource rand = mc.level.random; for(int i = 0; i < rand.nextInt(level); i++) { int x1 = rand.nextInt(width); int y1 = rand.nextInt(height); int w = rand.nextInt(10); int h = rand.nextInt(10); - poseStack.blit(NOISE, x1, y1, w, h,1,1,12,12); + graphics.blit(NOISE, x1, y1, w, h,1,1,12,12); } }; -} \ No newline at end of file +} diff --git a/src/main/java/igentuman/nc/radiation/data/IPlayerRadiationCapability.java b/src/main/java/igentuman/nc/radiation/data/IPlayerRadiationCapability.java index ba03071b4..c14626517 100644 --- a/src/main/java/igentuman/nc/radiation/data/IPlayerRadiationCapability.java +++ b/src/main/java/igentuman/nc/radiation/data/IPlayerRadiationCapability.java @@ -1,7 +1,7 @@ package igentuman.nc.radiation.data; import net.minecraft.nbt.CompoundTag; -import net.minecraftforge.common.util.INBTSerializable; +import net.neoforged.neoforge.common.util.INBTSerializable; public interface IPlayerRadiationCapability extends INBTSerializable { diff --git a/src/main/java/igentuman/nc/radiation/data/IWorldRadiationCapability.java b/src/main/java/igentuman/nc/radiation/data/IWorldRadiationCapability.java index 50acbebc4..4dd339c5b 100644 --- a/src/main/java/igentuman/nc/radiation/data/IWorldRadiationCapability.java +++ b/src/main/java/igentuman/nc/radiation/data/IWorldRadiationCapability.java @@ -1,7 +1,7 @@ package igentuman.nc.radiation.data; import net.minecraft.nbt.CompoundTag; -import net.minecraftforge.common.util.INBTSerializable; +import net.neoforged.neoforge.common.util.INBTSerializable; public interface IWorldRadiationCapability extends INBTSerializable { diff --git a/src/main/java/igentuman/nc/radiation/data/PlayerRadiation.java b/src/main/java/igentuman/nc/radiation/data/PlayerRadiation.java index d362e27cc..b0eb0a616 100644 --- a/src/main/java/igentuman/nc/radiation/data/PlayerRadiation.java +++ b/src/main/java/igentuman/nc/radiation/data/PlayerRadiation.java @@ -1,8 +1,11 @@ package igentuman.nc.radiation.data; +import igentuman.api.platform.NCItemStacks; import igentuman.nc.content.NCRadiationDamageSource; import igentuman.nc.radiation.ItemRadiation; import igentuman.nc.radiation.ItemShielding; +import igentuman.api.platform.NCSerialization; +import net.minecraft.core.HolderLookup; import net.minecraft.nbt.CompoundTag; import net.minecraft.server.level.ServerPlayer; import net.minecraft.world.effect.MobEffectInstance; @@ -34,14 +37,14 @@ public class PlayerRadiation implements IPlayerRadiationCapability { public PlayerRadiation() { } - public static PlayerRadiation deserialize(CompoundTag radiation) { + public static PlayerRadiation deserialize(HolderLookup.Provider provider, CompoundTag radiation) { PlayerRadiation playerRadiation = new PlayerRadiation(); - playerRadiation.deserializeNBT(radiation); + NCSerialization.deserialize(playerRadiation, provider, radiation); return playerRadiation; } @Override - public CompoundTag serializeNBT() { + public CompoundTag serializeNBT(HolderLookup.Provider provider) { CompoundTag tag = new CompoundTag(); tag.putLong("radiation", radiation); tag.putInt("timestamp", timestamp); @@ -49,7 +52,7 @@ public CompoundTag serializeNBT() { } @Override - public void deserializeNBT(CompoundTag nbt) { + public void deserializeNBT(HolderLookup.Provider provider, CompoundTag nbt) { radiation = nbt.getLong("radiation"); timestamp = nbt.getInt("timestamp"); } @@ -84,12 +87,12 @@ public static int getRadiationShielding(LivingEntity player, String...modFilter) if(!hasMod) continue; } shielding += ItemShielding.byItem(stack.getItem()); - if(stack.hasTag() && stack.getTag().contains("rad_shielding")) { - shielding += stack.getTag().getInt("rad_shielding"); + if(NCItemStacks.contains(stack, "rad_shielding")) { + shielding += NCItemStacks.getInt(stack, "rad_shielding"); } } - if(player.hasEffect(RADIATION_RESISTANCE.get())) { - int resistance = player.getEffect(RADIATION_RESISTANCE.get()).getAmplifier()+1; + if(player.hasEffect(RADIATION_RESISTANCE)) { + int resistance = player.getEffect(RADIATION_RESISTANCE).getAmplifier()+1; shielding += resistance*2; } return shielding; diff --git a/src/main/java/igentuman/nc/radiation/data/PlayerRadiationProvider.java b/src/main/java/igentuman/nc/radiation/data/PlayerRadiationProvider.java deleted file mode 100644 index 7a4bc062c..000000000 --- a/src/main/java/igentuman/nc/radiation/data/PlayerRadiationProvider.java +++ /dev/null @@ -1,60 +0,0 @@ -package igentuman.nc.radiation.data; - -import net.minecraft.core.Direction; -import net.minecraft.nbt.CompoundTag; -import net.minecraft.world.entity.player.Player; -import net.minecraftforge.common.capabilities.Capability; -import net.minecraftforge.common.capabilities.CapabilityManager; -import net.minecraftforge.common.capabilities.CapabilityToken; -import net.minecraftforge.common.capabilities.ICapabilityProvider; -import net.minecraftforge.common.util.INBTSerializable; -import net.minecraftforge.common.util.LazyOptional; -import org.jetbrains.annotations.Nullable; - -import javax.annotation.Nonnull; - -public class PlayerRadiationProvider implements ICapabilityProvider, INBTSerializable { - public static Capability PLAYER_RADIATION = CapabilityManager.get(new CapabilityToken<>(){}); - private PlayerRadiation playerRadiation = createPlayerRadiation(); - private final LazyOptional opt = LazyOptional.of(this::createPlayerRadiation); - - public static void setRadiation(Player pl, int i) { - PlayerRadiation playerRadiationCap = pl.getCapability(PlayerRadiationProvider.PLAYER_RADIATION).orElse(null); - if(playerRadiationCap != null) { - playerRadiationCap.setRadiation(i); - } - } - - @Nonnull - private PlayerRadiation createPlayerRadiation() { - if (playerRadiation == null) { - playerRadiation = new PlayerRadiation(); - } - return playerRadiation; - } - - @Nonnull - @Override - public LazyOptional getCapability(@Nonnull Capability cap) { - if (cap == PLAYER_RADIATION) { - return opt.cast(); - } - return LazyOptional.empty(); - } - - @Nonnull - @Override - public LazyOptional getCapability(@Nonnull Capability cap, @Nullable Direction side) { - return getCapability(cap); - } - - @Override - public CompoundTag serializeNBT() { - return playerRadiation.serializeNBT(); - } - - @Override - public void deserializeNBT(CompoundTag nbt) { - playerRadiation.deserializeNBT(nbt); - } -} diff --git a/src/main/java/igentuman/nc/radiation/data/RadiationEvents.java b/src/main/java/igentuman/nc/radiation/data/RadiationEvents.java index 8a2a20f59..e65488734 100644 --- a/src/main/java/igentuman/nc/radiation/data/RadiationEvents.java +++ b/src/main/java/igentuman/nc/radiation/data/RadiationEvents.java @@ -1,10 +1,10 @@ package igentuman.nc.radiation.data; import igentuman.nc.compat.mekanism.MekanismRadiation; -import igentuman.nc.handler.config.RadiationConfig; import igentuman.nc.radiation.FluidRadiation; import igentuman.nc.radiation.ItemRadiation; import igentuman.nc.radiation.RadiationCleaningItems; +import igentuman.nc.setup.registration.NCAttachments; import igentuman.nc.util.ModUtil; import igentuman.nc.util.RadiationExecutorManager; import net.minecraft.world.effect.MobEffectInstance; @@ -15,14 +15,13 @@ import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.state.BlockState; -import net.minecraftforge.event.AttachCapabilitiesEvent; -import net.minecraftforge.event.TickEvent; -import net.minecraftforge.event.entity.EntityJoinLevelEvent; -import net.minecraftforge.event.entity.living.LivingEntityUseItemEvent; -import net.minecraftforge.event.entity.player.PlayerEvent; -import net.minecraftforge.event.level.BlockEvent; -import net.minecraftforge.eventbus.api.EventPriority; -import net.minecraftforge.eventbus.api.SubscribeEvent; +import net.neoforged.neoforge.event.tick.LevelTickEvent; +import net.neoforged.neoforge.event.entity.EntityJoinLevelEvent; +import net.neoforged.neoforge.event.entity.living.LivingEntityUseItemEvent; +import net.neoforged.neoforge.event.entity.player.PlayerEvent; +import net.neoforged.neoforge.event.level.BlockEvent; +import net.neoforged.bus.api.EventPriority; +import net.neoforged.bus.api.SubscribeEvent; import java.util.HashMap; import java.util.LinkedList; @@ -30,7 +29,6 @@ import java.util.concurrent.CompletableFuture; import static igentuman.nc.NuclearCraft.currentTick; -import static igentuman.nc.NuclearCraft.rl; import static igentuman.nc.handler.config.RadiationConfig.RADIATION_CONFIG; import static igentuman.nc.setup.Registration.RADIATION_DECAY; import static igentuman.nc.setup.Registration.RADIATION_RESISTANCE; @@ -41,14 +39,9 @@ public class RadiationEvents { private static final HashMap> droppedRadioactiveItems = new HashMap<>(); private static CompletableFuture radiationFuture; - public static void attachWorldRadiation(final AttachCapabilitiesEvent event) { - if (!event.getObject().getCapability(WorldRadiationProvider.WORLD_RADIATION).isPresent()) { - event.addCapability(rl("radiation"), new WorldRadiationProvider()); - isTracking = true; - } - } + // WorldRadiation is managed via RadiationManager (SavedData) -- no attachment needed - public static void tickAsync(TickEvent.LevelTickEvent event) { + public static void tickAsync(LevelTickEvent.Pre event) { if(currentTick % 10 == 0 && RADIATION_CONFIG.ENABLED.get()) { if (radiationFuture == null || radiationFuture.isDone()) { radiationFuture = CompletableFuture.runAsync( @@ -69,23 +62,23 @@ public void onItemUse(LivingEntityUseItemEvent.Finish event) } long radiation = RadiationCleaningItems.byItem(stack.getItem()); - PlayerRadiation radCap = entity.getCapability(PlayerRadiationProvider.PLAYER_RADIATION).orElse(null); - if(radCap != null) { + PlayerRadiation radCap = entity.getData(NCAttachments.PLAYER_RADIATION.get()); + { if(stack.getItem().toString().equals("radaway")) { - if(entity.hasEffect(RADIATION_RESISTANCE.get())) { - entity.removeEffect(RADIATION_RESISTANCE.get()); + if(entity.hasEffect(RADIATION_RESISTANCE)) { + entity.removeEffect(RADIATION_RESISTANCE); } - entity.addEffect(new MobEffectInstance(RADIATION_RESISTANCE.get(), 1200, 1, false, true)); + entity.addEffect(new MobEffectInstance(RADIATION_RESISTANCE, 1200, 1, false, true)); } else if(stack.getItem().toString().contains("rad_x")) { - if(entity.hasEffect(RADIATION_RESISTANCE.get())) { - entity.removeEffect(RADIATION_RESISTANCE.get()); + if(entity.hasEffect(RADIATION_RESISTANCE)) { + entity.removeEffect(RADIATION_RESISTANCE); } - entity.addEffect(new MobEffectInstance(RADIATION_RESISTANCE.get(), 1200, 2, false, true)); + entity.addEffect(new MobEffectInstance(RADIATION_RESISTANCE, 1200, 2, false, true)); } else if(stack.getItem().toString().contains("radaway_slow")) { - if(entity.hasEffect(RADIATION_DECAY.get())) { - entity.removeEffect(RADIATION_DECAY.get()); + if(entity.hasEffect(RADIATION_DECAY)) { + entity.removeEffect(RADIATION_DECAY); } - entity.addEffect(new MobEffectInstance(RADIATION_DECAY.get(), 2400, 1, false, true)); + entity.addEffect(new MobEffectInstance(RADIATION_DECAY, 2400, 1, false, true)); } if(radiation == 0) return; radCap.setRadiation(Math.max(0, radCap.getRadiation() - radiation/1000)); @@ -116,22 +109,13 @@ public void onEntitySpawn(EntityJoinLevelEvent event) { } - public static void attachPlayerRadiation(final AttachCapabilitiesEvent event) { - if(event.getObject() instanceof Player) { - if (!event.getObject().getCapability(PlayerRadiationProvider.PLAYER_RADIATION).isPresent()) { - event.addCapability(rl("radiation"), new PlayerRadiationProvider()); - } - } - } + // PlayerRadiation is now managed via NeoForge Data Attachments (NCAttachments.PLAYER_RADIATION) public static void onPlayerCloned(PlayerEvent.Clone event) { if (event.isWasDeath()) { - // We need to copyFrom the capabilities - event.getOriginal().getCapability(PlayerRadiationProvider.PLAYER_RADIATION).ifPresent(oldStore -> { - event.getEntity().getCapability(PlayerRadiationProvider.PLAYER_RADIATION).ifPresent(newStore -> { - newStore.copyFrom(oldStore); - }); - }); + PlayerRadiation oldStore = event.getOriginal().getData(NCAttachments.PLAYER_RADIATION.get()); + PlayerRadiation newStore = event.getEntity().getData(NCAttachments.PLAYER_RADIATION.get()); + newStore.copyFrom(oldStore); } } @@ -146,15 +130,15 @@ public void onFluidPlaced(BlockEvent.FluidPlaceBlockEvent event) { } } - public static void onWorldTick(TickEvent.LevelTickEvent event) { - if(!isTracking || event.level.isClientSide) { + public static void onWorldTick(LevelTickEvent.Pre event) { + if(!isTracking || event.getLevel().isClientSide()) { return; } - Level world = event.level; + Level world = event.getLevel(); if(!droppedRadioactiveItems.containsKey(world)) { droppedRadioactiveItems.put(world, new LinkedList<>()); } - RadiationManager manager = RadiationManager.get(event.level); + RadiationManager manager = RadiationManager.get(event.getLevel()); int size = droppedRadioactiveItems.get(world).size(); for(int i = 0; i < size; i++) { ItemEntity entity = droppedRadioactiveItems.get(world).get(i); @@ -169,7 +153,7 @@ public static void onWorldTick(TickEvent.LevelTickEvent event) { size--; } } - manager.tick(event.level); + manager.tick(event.getLevel()); } public static void stopTracking() { diff --git a/src/main/java/igentuman/nc/radiation/data/RadiationManager.java b/src/main/java/igentuman/nc/radiation/data/RadiationManager.java index 0dbc22711..92ed4d810 100644 --- a/src/main/java/igentuman/nc/radiation/data/RadiationManager.java +++ b/src/main/java/igentuman/nc/radiation/data/RadiationManager.java @@ -4,8 +4,11 @@ import igentuman.nc.compat.mekanism.MekanismRadiation; import igentuman.nc.network.toClient.PacketPlayerRadiationData; import igentuman.nc.network.toClient.PacketWorldRadiationData; +import igentuman.nc.setup.registration.NCAttachments; import igentuman.nc.util.ModUtil; import net.minecraft.core.BlockPos; +import igentuman.api.platform.NCSerialization; +import net.minecraft.core.HolderLookup; import net.minecraft.nbt.CompoundTag; import net.minecraft.resources.ResourceKey; import net.minecraft.server.level.ServerLevel; @@ -57,7 +60,9 @@ public static RadiationManager get(Level level) { return instances.get(level.dimension()); } DimensionDataStorage storage = ((ServerLevel)level).getDataStorage(); - instances.put(level.dimension(), storage.computeIfAbsent(RadiationManager::new, RadiationManager::new, "nc_world_radiation")); + instances.put(level.dimension(), storage.computeIfAbsent( + new SavedData.Factory<>(RadiationManager::new, RadiationManager::new, null), + "nc_world_radiation")); return instances.get(level.dimension()); } @@ -67,12 +72,10 @@ public void tick(Level level) { long wasRadiation = 0; long playerRadiation = 0; if (player instanceof ServerPlayer serverPlayer) { - PlayerRadiation playerRadiationCap = serverPlayer.getCapability(PlayerRadiationProvider.PLAYER_RADIATION).orElse(null); - if(playerRadiationCap != null) { - wasRadiation = playerRadiationCap.getRadiation(); - playerRadiationCap.updateRadiation(level, player); - playerRadiation = playerRadiationCap.getRadiation(); - } + PlayerRadiation playerRadiationCap = serverPlayer.getData(NCAttachments.PLAYER_RADIATION.get()); + wasRadiation = playerRadiationCap.getRadiation(); + playerRadiationCap.updateRadiation(level, player); + playerRadiation = playerRadiationCap.getRadiation(); NuclearCraft.packetHandler().sendTo(new PacketWorldRadiationData(worldRadiation.chunkRadiation), serverPlayer); NuclearCraft.packetHandler().sendTo(new PacketPlayerRadiationData(playerRadiation), serverPlayer); @@ -94,9 +97,9 @@ public void tick(Level level) { } } - public RadiationManager(CompoundTag tag) { + public RadiationManager(CompoundTag tag, HolderLookup.Provider registries) { if(tag.contains("radiation")) { - worldRadiation = WorldRadiation.deserialize(tag); + worldRadiation = WorldRadiation.deserialize(registries, tag); } else { worldRadiation = new WorldRadiation(); } @@ -104,8 +107,8 @@ public RadiationManager(CompoundTag tag) { } @Override - public @NotNull CompoundTag save(CompoundTag tag) { - return worldRadiation.serializeNBT(); + public @NotNull CompoundTag save(CompoundTag tag, HolderLookup.Provider registries) { + return NCSerialization.serialize(worldRadiation, registries); } protected int[] ignoredPos; public void addRadiation(Level level, double value, int x, int y, int z) { diff --git a/src/main/java/igentuman/nc/radiation/data/WorldRadiation.java b/src/main/java/igentuman/nc/radiation/data/WorldRadiation.java index 7d432685a..7c5d92c06 100644 --- a/src/main/java/igentuman/nc/radiation/data/WorldRadiation.java +++ b/src/main/java/igentuman/nc/radiation/data/WorldRadiation.java @@ -2,6 +2,8 @@ import net.minecraft.core.BlockPos; import net.minecraft.core.Holder; +import igentuman.api.platform.NCSerialization; +import net.minecraft.core.HolderLookup; import net.minecraft.nbt.CompoundTag; import net.minecraft.world.level.ChunkPos; import net.minecraft.world.level.Level; @@ -27,9 +29,9 @@ public WorldRadiation(HashMap radiation) { this.chunkRadiation = radiation; } - public static WorldRadiation deserialize(CompoundTag radiation) { + public static WorldRadiation deserialize(HolderLookup.Provider provider, CompoundTag radiation) { WorldRadiation worldRadiation = new WorldRadiation(); - worldRadiation.deserializeNBT(radiation); + NCSerialization.deserialize(worldRadiation, provider, radiation); return worldRadiation; } @@ -146,7 +148,7 @@ private long getServerTime() { } @Override - public CompoundTag serializeNBT() { + public CompoundTag serializeNBT(HolderLookup.Provider provider) { CompoundTag tag = new CompoundTag(); CompoundTag radiationTag = new CompoundTag(); for(long key : chunkRadiation.keySet()) { @@ -157,7 +159,7 @@ public CompoundTag serializeNBT() { } @Override - public void deserializeNBT(CompoundTag nbt) { + public void deserializeNBT(HolderLookup.Provider provider, CompoundTag nbt) { CompoundTag radiationTag = nbt.getCompound("radiation"); for(String key : radiationTag.getAllKeys()) { chunkRadiation.put(Long.parseLong(key), radiationTag.getLong(key)); diff --git a/src/main/java/igentuman/nc/radiation/data/WorldRadiationProvider.java b/src/main/java/igentuman/nc/radiation/data/WorldRadiationProvider.java deleted file mode 100644 index 89f0cb8d7..000000000 --- a/src/main/java/igentuman/nc/radiation/data/WorldRadiationProvider.java +++ /dev/null @@ -1,53 +0,0 @@ -package igentuman.nc.radiation.data; - -import net.minecraft.core.Direction; -import net.minecraft.nbt.CompoundTag; -import net.minecraft.world.level.Level; -import net.minecraftforge.common.capabilities.Capability; -import net.minecraftforge.common.capabilities.CapabilityManager; -import net.minecraftforge.common.capabilities.CapabilityToken; -import net.minecraftforge.common.capabilities.ICapabilityProvider; -import net.minecraftforge.common.util.INBTSerializable; -import net.minecraftforge.common.util.LazyOptional; -import org.jetbrains.annotations.Nullable; - -import javax.annotation.Nonnull; - -public class WorldRadiationProvider implements ICapabilityProvider, INBTSerializable { - public static Capability WORLD_RADIATION = CapabilityManager.get(new CapabilityToken<>(){}); - private WorldRadiation worldRadiation = createWorldRadiation(); - private final LazyOptional opt = LazyOptional.of(() -> createWorldRadiation()); - - @Nonnull - private WorldRadiation createWorldRadiation() { - if (worldRadiation == null) { - worldRadiation = new WorldRadiation(); - } - return worldRadiation; - } - - @Nonnull - @Override - public LazyOptional getCapability(@Nonnull Capability cap) { - if (cap == WORLD_RADIATION) { - return opt.cast(); - } - return LazyOptional.empty(); - } - - @Nonnull - @Override - public LazyOptional getCapability(@Nonnull Capability cap, @Nullable Direction side) { - return getCapability(cap); - } - - @Override - public CompoundTag serializeNBT() { - return worldRadiation.serializeNBT(); - } - - @Override - public void deserializeNBT(CompoundTag nbt) { - worldRadiation.deserializeNBT(nbt); - } -} diff --git a/src/main/java/igentuman/nc/recipes/AbstractRecipe.java b/src/main/java/igentuman/nc/recipes/AbstractRecipe.java index 434cf0f48..e3127612e 100644 --- a/src/main/java/igentuman/nc/recipes/AbstractRecipe.java +++ b/src/main/java/igentuman/nc/recipes/AbstractRecipe.java @@ -8,8 +8,8 @@ import igentuman.nc.setup.registration.NCProcessors; import igentuman.nc.util.IgnoredIInventory; import net.minecraft.core.NonNullList; -import net.minecraft.core.RegistryAccess; -import net.minecraft.network.FriendlyByteBuf; +import net.minecraft.core.HolderLookup; +import net.minecraft.network.RegistryFriendlyByteBuf; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.crafting.Ingredient; @@ -18,9 +18,10 @@ import net.minecraft.world.item.crafting.RecipeType; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.Block; -import net.minecraftforge.fluids.FluidStack; -import net.minecraftforge.fluids.capability.templates.FluidTank; -import net.minecraftforge.registries.ForgeRegistries; +import net.neoforged.neoforge.fluids.FluidStack; +import net.neoforged.neoforge.fluids.capability.templates.FluidTank; +import net.minecraft.core.registries.BuiltInRegistries; +import net.neoforged.neoforge.registries.NeoForgeRegistries; import org.jetbrains.annotations.NotNull; import java.util.ArrayList; @@ -31,11 +32,11 @@ import static igentuman.nc.util.NcUtils.getModId; import static net.minecraft.world.item.Items.BARRIER; import static net.minecraft.world.level.block.Blocks.AIR; -import static net.minecraftforge.fluids.capability.IFluidHandler.FluidAction.EXECUTE; +import static net.neoforged.neoforge.fluids.capability.IFluidHandler.FluidAction.EXECUTE; public abstract class AbstractRecipe implements Recipe { - private final ResourceLocation id; + private ResourceLocation id; public final String codeId; protected double timeModifier = 1; protected double powerModifier = 1; @@ -48,7 +49,7 @@ public abstract class AbstractRecipe implements Recipe { protected List cachedOutputFluids; @Override - public @NotNull ItemStack getResultItem(@NotNull RegistryAccess registryAccess) { + public @NotNull ItemStack getResultItem(@NotNull HolderLookup.Provider provider) { return getResultItem(); } public FluidStackIngredient[] getInputFluids() { @@ -68,16 +69,16 @@ public List getOutputFluids() { FluidStack flowing = null; for(FluidStack fluid: outputFluid.getRepresentations()) { if(getModId(fluid).equals(mod) || getModId(fluid).equals("minecraft")) { - if(ForgeRegistries.FLUIDS.getKey(fluid.getFluid()).getPath().contains("_flowing")) { + if(BuiltInRegistries.FLUID.getKey(fluid.getFluid()).getPath().contains("_flowing")) { flowing = fluid; continue; //skipping flowing types } - cachedOutputFluids.add(new FluidStack(fluid.getRawFluid(), fluid.getAmount())); + cachedOutputFluids.add(fluid.copy()); break resolve; } } //if no still found if(flowing != null) { - cachedOutputFluids.add(new FluidStack(flowing, flowing.getAmount())); + cachedOutputFluids.add(flowing.copy()); } } } @@ -87,15 +88,14 @@ public List getOutputFluids() { /** - * @param id Recipe name. + * @param codeId Recipe type identifier (e.g. "fission", "fusion_core"). */ - protected AbstractRecipe(ResourceLocation id) { - this.id = Objects.requireNonNull(id, "Recipe name cannot be null."); - this.codeId = getCodeId(); + protected AbstractRecipe(String codeId) { + this.codeId = Objects.requireNonNull(codeId, "Recipe codeId cannot be null."); } public String getCodeId() { - return id.getPath().split("/")[0]; + return codeId; } @@ -117,7 +117,9 @@ public ItemStack getFirstItemStackIngredient(int id) { @Override public @NotNull RecipeSerializer getSerializer() { - return NcRecipeSerializers.SERIALIZERS.get(codeId).get(); + var entry = NcRecipeSerializers.SERIALIZERS.get(codeId); + if (entry == null) throw new IllegalStateException("No serializer for recipe type: " + codeId); + return entry.get(); } @Override @@ -136,17 +138,22 @@ public ItemStack getFirstItemStackIngredient(int id) { @Override public @NotNull RecipeType getType() { - return NcRecipeType.ALL_RECIPES.get(codeId).get(); + var entry = NcRecipeType.ALL_RECIPES.get(codeId); + if (entry == null) throw new IllegalStateException("No recipe type registered for: " + codeId); + return entry.get(); } - public abstract void write(FriendlyByteBuf buffer); + public abstract void write(RegistryFriendlyByteBuf buffer); @NotNull - @Override public ResourceLocation getId() { return id; } + public void setId(ResourceLocation id) { + this.id = id; + } + @Override public boolean matches(@NotNull IgnoredIInventory inv, @NotNull Level world) { return !isIncomplete(); @@ -188,7 +195,7 @@ public boolean isIncomplete() @NotNull @Override - public ItemStack assemble(@NotNull IgnoredIInventory inv, RegistryAccess access) { + public ItemStack assemble(@NotNull IgnoredIInventory inv, @NotNull HolderLookup.Provider provider) { return ItemStack.EMPTY; } @@ -234,10 +241,9 @@ public List getInputFluids(int id) { return List.of(FluidStack.EMPTY); } - //todo WTF?! public List getOutputFluids(int id) { - if(getOutputFluids().size() > id) return List.of(getOutputFluids().get(id)); - return List.of(FluidStack.EMPTY); + List outputs = getOutputFluids(); + return outputs.size() > id ? List.of(outputs.get(id)) : List.of(FluidStack.EMPTY); } public double getTimeModifier() { diff --git a/src/main/java/igentuman/nc/recipes/NcRecipeSerializers.java b/src/main/java/igentuman/nc/recipes/NcRecipeSerializers.java index 88fc55bf2..b17e3fd42 100644 --- a/src/main/java/igentuman/nc/recipes/NcRecipeSerializers.java +++ b/src/main/java/igentuman/nc/recipes/NcRecipeSerializers.java @@ -27,6 +27,7 @@ private NcRecipeSerializers() { } public static final RecipeSerializerRegistryObject SHIELDING = RECIPE_SERIALIZERS.register("shielding", () -> new SimpleCraftingRecipeSerializer<>(RadShieldingRecipe::new)); + @SuppressWarnings("unchecked") public static final RecipeSerializerRegistryObject RESET_NBT = RECIPE_SERIALIZERS.register("reset_nbt", () -> new SimpleCraftingRecipeSerializer<>(ResetNbtRecipe::new)); public static final HashMap> SERIALIZERS = initSerializers(); diff --git a/src/main/java/igentuman/nc/recipes/NcRecipeType.java b/src/main/java/igentuman/nc/recipes/NcRecipeType.java index f3cfcdebe..fa208fc5c 100644 --- a/src/main/java/igentuman/nc/recipes/NcRecipeType.java +++ b/src/main/java/igentuman/nc/recipes/NcRecipeType.java @@ -1,5 +1,6 @@ package igentuman.nc.recipes; +import igentuman.api.platform.NCRecipes; import igentuman.nc.block.fission.entity.FissionControllerBE; import igentuman.nc.block.entity.processor.NuclearFurnaceBE; import igentuman.nc.block.fission.entity.MSRControllerBE; @@ -12,14 +13,13 @@ import igentuman.nc.recipes.type.NcRecipe; import igentuman.nc.registry.RecipeTypeDeferredRegister; import igentuman.nc.registry.RecipeTypeRegistryObject; -import net.minecraft.core.RegistryAccess; import net.minecraft.resources.ResourceLocation; -import net.minecraft.world.Container; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.crafting.*; import net.minecraft.world.level.Level; -import net.minecraftforge.fml.DistExecutor; -import net.minecraftforge.server.ServerLifecycleHooks; +import net.neoforged.fml.loading.FMLEnvironment; +import net.neoforged.neoforge.server.ServerLifecycleHooks; +import net.neoforged.api.distmarker.Dist; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import java.util.*; @@ -103,18 +103,18 @@ public List getRecipes(@Nullable Level world) { return Collections.emptyList(); } if (world == null) { - world = DistExecutor.unsafeRunForDist(() -> NcClient::tryGetClientWorld, () -> () -> ServerLifecycleHooks.getCurrentServer().overworld()); + world = FMLEnvironment.dist == Dist.CLIENT ? NcClient.tryGetClientWorld() : ServerLifecycleHooks.getCurrentServer().overworld(); if (world == null) { return cachedRecipes; } } if (cachedRecipes.isEmpty()) { RecipeManager recipeManager = world.getRecipeManager(); - List recipes = new ArrayList<>(); + List recipes; if(this.registryName.getPath().equals("nuclear_furnace")) { - recipes = getSmeltingRecipes(recipeManager); + recipes = getSmeltingRecipes(recipeManager, world); } else { - recipes = recipeManager.getAllRecipesFor(this); + recipes = NCRecipes.getAllRecipesFor(recipeManager, this); } cachedRecipes = recipes.stream() .filter(recipe -> !recipe.isIncomplete()) @@ -123,39 +123,43 @@ public List getRecipes(@Nullable Level world) { return cachedRecipes; } - private List getSmeltingRecipes(RecipeManager recipeManager) { - List smelting = recipeManager.getAllRecipesFor(SMELTING); + private List getSmeltingRecipes(RecipeManager recipeManager, Level level) { + List> smelting = NCRecipes.getVanillaRecipes(recipeManager, RecipeType.SMELTING); List recipes = new ArrayList<>(); - for(SmeltingRecipe recipe: smelting) { + for(RecipeHolder holder: smelting) { + SmeltingRecipe recipe = holder.value(); if(recipe.isIncomplete()) { continue; } - ItemStack result = recipe.getResultItem(RegistryAccess.EMPTY); + ItemStack result = recipe.getResultItem(level.registryAccess()); Ingredient input = recipe.getIngredients().get(0); if (result.isEmpty() || input.isEmpty()) { continue; } ItemStackIngredient output = IngredientCreatorAccess.item().from(result); - recipes.add((RECIPE) new NuclearFurnaceBE.Recipe( - rl(getNFRecipeId(recipe)), + NuclearFurnaceBE.Recipe nfRecipe = new NuclearFurnaceBE.Recipe( + "nuclear_furnace", new ItemStackIngredient[]{IngredientCreatorAccess.item().from(input)}, new ItemStackIngredient[]{output}, new FluidStackIngredient[0], new FluidStackIngredient[0], - recipe.getCookingTime()/2000D, 1, 1, 1)); + recipe.getCookingTime()/2000D, 1, 1, 1); + nfRecipe.setId(rl(getNFRecipeId(holder))); + recipes.add((RECIPE) nfRecipe); } return recipes; } - private String getNFRecipeId(SmeltingRecipe recipe) { - return recipe.getId().toString().replaceAll("[^a-z0-9/._-]", "_") + "_nf"; + private String getNFRecipeId(RecipeHolder holder) { + return holder.id().toString().replaceAll("[^a-z0-9/._-]", "_") + "_nf"; } /** * Helper for getting a recipe from a world's recipe manager. */ - public static > Optional getRecipeFor(RecipeType recipeType, C inventory, Level level) { - return level.getRecipeManager().getRecipeFor(recipeType, inventory, level) + public static > Optional getRecipeFor(RecipeType recipeType, I input, Level level) { + return level.getRecipeManager().getRecipeFor(recipeType, input, level) + .map(RecipeHolder::value) .filter(recipe -> !recipe.isIncomplete()); } @@ -163,7 +167,8 @@ public static > Optional> byKey(Level level, ResourceLocation id) { - return level.getRecipeManager().byKey(id) + return NCRecipes.byKey(level.getRecipeManager(), id) + .map(RecipeHolder::value) .filter(recipe -> !recipe.isIncomplete()); } public boolean isLoaded = false; @@ -179,9 +184,9 @@ public void loadRecipes(RecipeManager manager) { } private void getRecipes(RecipeManager manager) { - List recipes = manager.getAllRecipesFor(this); + List recipes = NCRecipes.getAllRecipesFor(manager, this); cachedRecipes = recipes.stream() .filter(recipe -> !recipe.isIncomplete()) .toList(); } -} \ No newline at end of file +} diff --git a/src/main/java/igentuman/nc/recipes/RecipeInfo.java b/src/main/java/igentuman/nc/recipes/RecipeInfo.java index 800c8679c..4f7a6a958 100644 --- a/src/main/java/igentuman/nc/recipes/RecipeInfo.java +++ b/src/main/java/igentuman/nc/recipes/RecipeInfo.java @@ -1,18 +1,22 @@ package igentuman.nc.recipes; +import igentuman.api.platform.NCRecipes; import igentuman.nc.block.entity.NuclearCraftBE; import igentuman.nc.block.entity.processor.NCProcessorBE; import igentuman.nc.client.NcClient; import igentuman.nc.handler.sided.SidedContentHandler; import igentuman.nc.recipes.type.NcRecipe; +import net.minecraft.core.HolderLookup; import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.Tag; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.level.Level; +import net.minecraft.world.item.crafting.RecipeHolder; import net.minecraft.world.level.block.entity.BlockEntity; -import net.minecraftforge.common.util.INBTSerializable; -import net.minecraftforge.fml.DistExecutor; -import net.minecraftforge.server.ServerLifecycleHooks; +import net.neoforged.neoforge.common.util.INBTSerializable; +import net.neoforged.api.distmarker.Dist; +import net.neoforged.fml.loading.FMLEnvironment; +import net.neoforged.neoforge.server.ServerLifecycleHooks; import java.util.NoSuchElementException; @@ -43,7 +47,7 @@ public boolean isCompleted() { } @Override - public Tag serializeNBT() { + public Tag serializeNBT(HolderLookup.Provider provider) { CompoundTag data = new CompoundTag(); data.putInt("ticks", ticks); data.putDouble("ticksProcessed", ticksProcessed); @@ -58,7 +62,7 @@ public Tag serializeNBT() { } @Override - public void deserializeNBT(Tag nbt) { + public void deserializeNBT(HolderLookup.Provider provider, Tag nbt) { if(nbt instanceof CompoundTag) { ticks = ((CompoundTag) nbt).getInt("ticks"); ticksProcessed = ((CompoundTag) nbt).getDouble("ticksProcessed"); @@ -77,16 +81,18 @@ public void deserializeNBT(Tag nbt) { private Level getLevel() { if(be != null) return be.getLevel(); - return DistExecutor.unsafeRunForDist( - () -> NcClient::tryGetClientWorld, - () -> () -> ServerLifecycleHooks.getCurrentServer().overworld()); + return FMLEnvironment.dist == Dist.CLIENT ? NcClient.tryGetClientWorld() : ServerLifecycleHooks.getCurrentServer().overworld(); } private NcRecipe getRecipeFromTag(String recipe) { ResourceLocation id = rlFromString(recipe); if(getLevel() == null) return null; try { - return (NcRecipe) getLevel().getRecipeManager().byKey(id).get(); + return NCRecipes.byKey(getLevel().getRecipeManager(), id) + .map(RecipeHolder::value) + .filter(r -> r instanceof NcRecipe) + .map(r -> (NcRecipe) r) + .orElse(null); } catch (NoSuchElementException e) { return null; } diff --git a/src/main/java/igentuman/nc/recipes/ingredient/FluidStackIngredient.java b/src/main/java/igentuman/nc/recipes/ingredient/FluidStackIngredient.java index f73772c74..3c4caf975 100644 --- a/src/main/java/igentuman/nc/recipes/ingredient/FluidStackIngredient.java +++ b/src/main/java/igentuman/nc/recipes/ingredient/FluidStackIngredient.java @@ -1,7 +1,7 @@ package igentuman.nc.recipes.ingredient; import igentuman.nc.recipes.ingredient.creator.IngredientCreatorAccess; -import net.minecraftforge.fluids.FluidStack; +import net.neoforged.neoforge.fluids.FluidStack; import org.jetbrains.annotations.NotNull; public abstract class FluidStackIngredient implements InputIngredient<@NotNull FluidStack> { diff --git a/src/main/java/igentuman/nc/recipes/ingredient/HashedFluid.java b/src/main/java/igentuman/nc/recipes/ingredient/HashedFluid.java index 7e2531943..d1d140625 100644 --- a/src/main/java/igentuman/nc/recipes/ingredient/HashedFluid.java +++ b/src/main/java/igentuman/nc/recipes/ingredient/HashedFluid.java @@ -1,6 +1,7 @@ package igentuman.nc.recipes.ingredient; -import net.minecraftforge.fluids.FluidStack; +import igentuman.api.platform.NCFluidStacks; +import net.neoforged.neoforge.fluids.FluidStack; import org.jetbrains.annotations.NotNull; /** @@ -9,7 +10,7 @@ public class HashedFluid { public static HashedFluid create(@NotNull FluidStack stack) { - return new HashedFluid(new FluidStack(stack, 1)); + return new HashedFluid(stack.copyWithAmount(1)); } /** @@ -41,7 +42,7 @@ public FluidStack createStack(int size) { if (size <= 0 || fluidStack.isEmpty()) { return FluidStack.EMPTY; } - return new FluidStack(fluidStack, size); + return fluidStack.copyWithAmount(size); } @Override @@ -60,8 +61,8 @@ public int hashCode() { private int initHashCode() { int code = 1; code = 31 * code + fluidStack.getFluid().hashCode(); - if (fluidStack.hasTag()) { - code = 31 * code + fluidStack.getTag().hashCode(); + if (NCFluidStacks.hasCustomData(fluidStack)) { + code = 31 * code + NCFluidStacks.getTag(fluidStack).hashCode(); } return code; } diff --git a/src/main/java/igentuman/nc/recipes/ingredient/InputIngredient.java b/src/main/java/igentuman/nc/recipes/ingredient/InputIngredient.java index 9519455b8..c2c7b0243 100644 --- a/src/main/java/igentuman/nc/recipes/ingredient/InputIngredient.java +++ b/src/main/java/igentuman/nc/recipes/ingredient/InputIngredient.java @@ -2,7 +2,7 @@ import com.google.gson.JsonElement; import net.minecraft.MethodsReturnNonnullByDefault; -import net.minecraft.network.FriendlyByteBuf; +import net.minecraft.network.RegistryFriendlyByteBuf; import org.jetbrains.annotations.NotNull; import java.util.List; @@ -66,7 +66,7 @@ default boolean hasNoMatchingInstances() { * * @param buffer The buffer to write to. */ - void write(FriendlyByteBuf buffer); + void write(RegistryFriendlyByteBuf buffer); /** * Serializes this ingredient to a JsonElement diff --git a/src/main/java/igentuman/nc/recipes/ingredient/ItemStackIngredient.java b/src/main/java/igentuman/nc/recipes/ingredient/ItemStackIngredient.java index b2e44a840..ac8d700f7 100644 --- a/src/main/java/igentuman/nc/recipes/ingredient/ItemStackIngredient.java +++ b/src/main/java/igentuman/nc/recipes/ingredient/ItemStackIngredient.java @@ -2,7 +2,9 @@ import igentuman.nc.recipes.ingredient.creator.IngredientCreatorAccess; import io.netty.buffer.Unpooled; -import net.minecraft.network.FriendlyByteBuf; +import net.minecraft.core.RegistryAccess; +import net.minecraft.core.registries.BuiltInRegistries; +import net.minecraft.network.RegistryFriendlyByteBuf; import net.minecraft.world.item.ItemStack; import org.jetbrains.annotations.NotNull; @@ -15,7 +17,8 @@ public abstract class ItemStackIngredient implements InputIngredient<@NotNull It protected int amount; public ItemStackIngredient copy() { - FriendlyByteBuf buffer = new FriendlyByteBuf(Unpooled.buffer()); + RegistryFriendlyByteBuf buffer = new RegistryFriendlyByteBuf(Unpooled.buffer(), + RegistryAccess.fromRegistryOfRegistries(BuiltInRegistries.REGISTRY)); this.write(buffer); return IngredientCreatorAccess.item().read(buffer); } diff --git a/src/main/java/igentuman/nc/recipes/ingredient/NcIngredient.java b/src/main/java/igentuman/nc/recipes/ingredient/NcIngredient.java index 1f228f1c1..968c753ef 100644 --- a/src/main/java/igentuman/nc/recipes/ingredient/NcIngredient.java +++ b/src/main/java/igentuman/nc/recipes/ingredient/NcIngredient.java @@ -2,22 +2,18 @@ import com.google.common.collect.Lists; import com.google.gson.*; +import igentuman.api.platform.NCItemStacks; import it.unimi.dsi.fastutil.ints.IntArrayList; +import net.minecraft.nbt.CompoundTag; import it.unimi.dsi.fastutil.ints.IntComparators; import it.unimi.dsi.fastutil.ints.IntList; -import net.minecraft.core.Holder; -import net.minecraft.core.Registry; -import net.minecraft.network.FriendlyByteBuf; -import net.minecraft.resources.ResourceLocation; import net.minecraft.tags.TagKey; -import net.minecraft.util.GsonHelper; import net.minecraft.world.entity.player.StackedContents; import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.crafting.Ingredient; -import net.minecraft.world.item.crafting.ShapedRecipe; import net.minecraft.world.level.ItemLike; -import net.minecraftforge.registries.ForgeRegistries; +import net.minecraft.core.registries.BuiltInRegistries; import javax.annotation.Nullable; import java.util.Arrays; @@ -26,12 +22,11 @@ import java.util.List; import java.util.function.Predicate; import java.util.stream.Stream; -import java.util.stream.StreamSupport; import static igentuman.nc.setup.registration.Registries.ITEM_REGISTRY; import static igentuman.nc.util.NcUtils.rlFromString; -public class NcIngredient extends Ingredient { +public class NcIngredient implements Predicate { private static final java.util.concurrent.atomic.AtomicInteger INVALIDATION_COUNTER = new java.util.concurrent.atomic.AtomicInteger(); public static void invalidateAll() { @@ -50,12 +45,8 @@ public static void invalidateAll() { private String name; - protected NcIngredient(Stream pValues) { - super(Stream.empty()); - this.values = pValues.toArray((p_43933_) -> { - return new NcIngredient.Value[p_43933_]; - }); - + protected NcIngredient(Stream pValues) { + this.values = pValues.toArray(NcIngredient.Value[]::new); } public static NcIngredient of(String name) { @@ -63,7 +54,7 @@ public static NcIngredient of(String name) { TagKey tag = TagKey.create(ITEM_REGISTRY, rlFromString(name.replace("#",""))); return of(tag); } - return of(ForgeRegistries.ITEMS.getValue(rlFromString(name))); + return of(BuiltInRegistries.ITEM.get(rlFromString(name))); } public String getName() { @@ -81,6 +72,13 @@ public ItemStack[] getItems() { return this.itemStacks; } + /** + * Convert this NcIngredient to a vanilla Ingredient for APIs that require it. + */ + public Ingredient asIngredient() { + return Ingredient.of(getItems()); + } + private void dissolve() { if (this.itemStacks == null) { this.itemStacks = Arrays.stream(this.values).flatMap((p_43916_) -> { @@ -92,6 +90,7 @@ private void dissolve() { } + @Override public boolean test(@Nullable ItemStack pStack) { if (pStack == null) { return false; @@ -127,6 +126,18 @@ public IntList getStackingIds() { return this.stackingIds; } + private boolean checkInvalidation() { + int current = INVALIDATION_COUNTER.get(); + if (this.invalidationCounter != current) { + this.invalidationCounter = current; + return true; + } + return false; + } + + private void markValid() { + this.invalidationCounter = INVALIDATION_COUNTER.get(); + } public JsonElement toJson() { if (this.values.length == 1) { @@ -151,12 +162,11 @@ public boolean isSimple() { return true; } - private final boolean isVanilla = this.getClass() == NcIngredient.class; public static NcIngredient of(TagKey pTag) { return fromValues(Stream.of(new NcIngredient.TagValue(pTag))); } - public static NcIngredient fromValues(Stream pStream) { + public static NcIngredient fromValues(Stream pStream) { NcIngredient ingredient = new NcIngredient(pStream); return ingredient.isEmpty() ? EMPTY : ingredient; } @@ -214,15 +224,16 @@ public Collection getItems() { public JsonObject serialize() { JsonObject jsonobject = new JsonObject(); - jsonobject.addProperty("item", ForgeRegistries.ITEMS.getKey(this.item.getItem()).toString()); - if(item.hasTag()) { - if(item.getTag().contains("Damage")) { - if(item.getTag().getInt("Damage") == 0) { - item.getTag().remove("Damage"); + jsonobject.addProperty("item", BuiltInRegistries.ITEM.getKey(this.item.getItem()).toString()); + if(NCItemStacks.hasCustomData(item)) { + CompoundTag tag = NCItemStacks.getTag(item); + if(tag.contains("Damage")) { + if(tag.getInt("Damage") == 0) { + tag.remove("Damage"); } } - if(!item.getTag().getAllKeys().isEmpty()) { - jsonobject.addProperty("nbt", item.getTag().toString()); + if(!tag.getAllKeys().isEmpty()) { + jsonobject.addProperty("nbt", tag.toString()); } } if(item.getCount()>1) { @@ -244,7 +255,7 @@ public TagValue(TagKey pTag, int...pCount) { count = 1; } } - + public String getName() { return tag.location().getPath().replace("/","_"); } @@ -252,12 +263,16 @@ public String getName() { public Collection getItems() { List list = Lists.newArrayList(); - for(Item item : ForgeRegistries.ITEMS.tags().getTag(tag).stream().toList()) { - list.add(new ItemStack(item)); - } + BuiltInRegistries.ITEM.getTag(tag).ifPresent(holders -> { + for (net.minecraft.core.Holder holder : holders) { + list.add(new ItemStack(holder.value())); + } + }); - if (list.size() == 0) { - list.add(new ItemStack(net.minecraft.world.level.block.Blocks.BARRIER).setHoverName(net.minecraft.network.chat.Component.literal("Empty Tag: " + this.tag.location()))); + if (list.isEmpty()) { + ItemStack barrier = new ItemStack(net.minecraft.world.level.block.Blocks.BARRIER); + barrier.set(net.minecraft.core.component.DataComponents.CUSTOM_NAME, net.minecraft.network.chat.Component.literal("Empty Tag: " + this.tag.location())); + list.add(barrier); } return list; } @@ -272,7 +287,9 @@ public JsonObject serialize() { } } - public interface Value extends Ingredient.Value{ + public interface Value { String getName(); + Collection getItems(); + JsonObject serialize(); } } diff --git a/src/main/java/igentuman/nc/recipes/ingredient/creator/FluidStackIngredientCreator.java b/src/main/java/igentuman/nc/recipes/ingredient/creator/FluidStackIngredientCreator.java index 038789e55..51d504b5c 100644 --- a/src/main/java/igentuman/nc/recipes/ingredient/creator/FluidStackIngredientCreator.java +++ b/src/main/java/igentuman/nc/recipes/ingredient/creator/FluidStackIngredientCreator.java @@ -1,6 +1,8 @@ package igentuman.nc.recipes.ingredient.creator; import com.google.gson.*; +import igentuman.api.platform.NCFluidStacks; +import igentuman.api.platform.NCSerialization; import igentuman.nc.NuclearCraft; import igentuman.nc.network.BasePacketHandler; import igentuman.nc.recipes.ingredient.FluidStackIngredient; @@ -10,16 +12,15 @@ import igentuman.nc.util.SerializerHelper; import igentuman.nc.util.TagUtil; import igentuman.nc.util.annotation.NothingNullByDefault; -import net.minecraft.network.FriendlyByteBuf; +import net.minecraft.core.Holder; +import net.minecraft.network.RegistryFriendlyByteBuf; import net.minecraft.resources.ResourceLocation; import net.minecraft.tags.FluidTags; import net.minecraft.tags.TagKey; import net.minecraft.util.GsonHelper; import net.minecraft.world.level.material.Fluid; -import net.minecraftforge.fluids.FluidStack; -import net.minecraftforge.registries.ForgeRegistries; -import net.minecraftforge.registries.tags.ITag; -import net.minecraftforge.registries.tags.ITagManager; +import net.neoforged.neoforge.fluids.FluidStack; +import net.minecraft.core.registries.BuiltInRegistries; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -62,10 +63,10 @@ public FluidStackIngredient from(TagKey tag, int amount) { } @Override - public FluidStackIngredient read(FriendlyByteBuf buffer) { + public FluidStackIngredient read(RegistryFriendlyByteBuf buffer) { Objects.requireNonNull(buffer, "FluidStackIngredients cannot be read from a null packet buffer."); return switch (buffer.readEnum(IngredientType.class)) { - case SINGLE -> from(FluidStack.readFromPacket(buffer)); + case SINGLE -> from(NCSerialization.readFluidFromNetwork(buffer)); case TAGGED -> from(FluidTags.create(buffer.readResourceLocation()), buffer.readVarInt()); case MULTI -> createMulti(BasePacketHandler.readArray(buffer, FluidStackIngredient[]::new, this::read)); }; @@ -117,8 +118,7 @@ public FluidStackIngredient deserialize(@Nullable JsonElement json) { throw new JsonSyntaxException("Expected amount to be greater than zero."); } ResourceLocation resourceLocation = rlFromString(GsonHelper.getAsString(jsonObject, "tag")); - ITagManager tagManager = TagUtil.manager(ForgeRegistries.FLUIDS); - TagKey key = tagManager.createTagKey(resourceLocation); + TagKey key = TagUtil.createKey(BuiltInRegistries.FLUID, resourceLocation); return from(key, amount); } throw new JsonSyntaxException("Expected to receive a resource location representing either a tag or a fluid."); @@ -209,9 +209,9 @@ public FluidStack getInputRaw() { } @Override - public void write(FriendlyByteBuf buffer) { + public void write(RegistryFriendlyByteBuf buffer) { buffer.writeEnum(IngredientType.SINGLE); - fluidInstance.writeToPacket(buffer); + NCSerialization.writeFluidToNetwork(buffer, fluidInstance); } @Override @@ -219,8 +219,8 @@ public JsonElement serialize() { JsonObject json = new JsonObject(); json.addProperty("amount", fluidInstance.getAmount()); json.addProperty("fluid", NcUtils.getName(fluidInstance.getFluid()).toString()); - if (fluidInstance.hasTag()) { - json.addProperty("nbt", fluidInstance.getTag().toString()); + if (NCFluidStacks.hasCustomData(fluidInstance)) { + json.addProperty("nbt", NCFluidStacks.getTag(fluidInstance).toString()); } return json; } @@ -246,20 +246,16 @@ public int hashCode() { @NothingNullByDefault public static class TaggedFluidStackIngredient extends FluidStackIngredient { - protected final ITag tag; + protected final TagKey tag; private TaggedFluidStackIngredient(TagKey tag, int amount) { - this(TagUtil.tag(ForgeRegistries.FLUIDS, tag), amount); - } - - private TaggedFluidStackIngredient(ITag tag, int amount) { this.tag = tag; this.amount = amount; } public String getName() { - return tag.getKey().location().getPath().replace('/', '_').replace(':', '.'); + return tag.location().getPath().replace('/', '_').replace(':', '.'); } @Override @@ -269,14 +265,14 @@ public boolean test(FluidStack fluidStack) { @Override public boolean testType(FluidStack fluidStack) { - return tag.contains(Objects.requireNonNull(fluidStack).getFluid()); + return TagUtil.tagContains(BuiltInRegistries.FLUID, tag, Objects.requireNonNull(fluidStack).getFluid()); } @Override public FluidStack getMatchingInstance(FluidStack fluidStack) { if (test(fluidStack)) { //Our fluid is in the tag, so we make a new stack with the given amount - return new FluidStack(fluidStack, amount); + return fluidStack.copyWithAmount(amount); } return FluidStack.EMPTY; } @@ -288,22 +284,22 @@ public long getNeededAmount(FluidStack stack) { @Override public boolean hasNoMatchingInstances() { - return tag.isEmpty(); + return TagUtil.isTagEmpty(BuiltInRegistries.FLUID, tag); } @Override public List<@NotNull FluidStack> getRepresentations() { //TODO: Can this be cached some how List<@NotNull FluidStack> representations = new ArrayList<>(); - for (Fluid fluid : tag) { + for (Fluid fluid : TagUtil.getTagElements(BuiltInRegistries.FLUID, tag)) { representations.add(new FluidStack(fluid, amount)); } if(representations.isEmpty()) { - Fluid fallbackFluid = TagUtil.getFirstMatchingFluidByTag(tag.getKey().location().toString()); + Fluid fallbackFluid = TagUtil.getFirstMatchingFluidByTag(tag.location().toString()); if (fallbackFluid != FluidStack.EMPTY.getFluid()) { representations.add(new FluidStack(fallbackFluid, amount)); } else { - NuclearCraft.LOGGER.error("No fluid found for tag {}", tag.getKey().location()); + NuclearCraft.LOGGER.error("No fluid found for tag {}", tag.location()); } } return representations; @@ -313,13 +309,13 @@ public boolean hasNoMatchingInstances() { * For use in recipe input caching. */ public Iterable getRawInput() { - return tag; + return TagUtil.getTagElements(BuiltInRegistries.FLUID, tag); } @Override - public void write(FriendlyByteBuf buffer) { + public void write(RegistryFriendlyByteBuf buffer) { buffer.writeEnum(IngredientType.TAGGED); - buffer.writeResourceLocation(tag.getKey().location()); + buffer.writeResourceLocation(tag.location()); buffer.writeVarInt(amount); } @@ -327,7 +323,7 @@ public void write(FriendlyByteBuf buffer) { public JsonElement serialize() { JsonObject json = new JsonObject(); json.addProperty("amount", amount); - json.addProperty("tag", tag.getKey().location().toString()); + json.addProperty("tag", tag.location().toString()); return json; } @@ -418,7 +414,7 @@ public final List getIngredients() { } @Override - public void write(FriendlyByteBuf buffer) { + public void write(RegistryFriendlyByteBuf buffer) { buffer.writeEnum(IngredientType.MULTI); BasePacketHandler.writeArray(buffer, ingredients, InputIngredient::write); } diff --git a/src/main/java/igentuman/nc/recipes/ingredient/creator/IFluidStackIngredientCreator.java b/src/main/java/igentuman/nc/recipes/ingredient/creator/IFluidStackIngredientCreator.java index 34cb38d44..4de5086a2 100644 --- a/src/main/java/igentuman/nc/recipes/ingredient/creator/IFluidStackIngredientCreator.java +++ b/src/main/java/igentuman/nc/recipes/ingredient/creator/IFluidStackIngredientCreator.java @@ -5,7 +5,7 @@ import igentuman.nc.util.TagUtil; import igentuman.nc.util.annotation.NothingNullByDefault; import net.minecraft.world.level.material.Fluid; -import net.minecraftforge.fluids.FluidStack; +import net.neoforged.neoforge.fluids.FluidStack; @NothingNullByDefault public interface IFluidStackIngredientCreator extends IIngredientCreator { @@ -18,7 +18,11 @@ default FluidStackIngredient from(String name, int amount) { return from(NCFluids.ALL_FLUID_ENTRIES.get(name).getStill(), amount); } if (!name.contains(":")) { - return IngredientCreatorAccess.fluid().from(new FluidStack(TagUtil.getFluidByName(name), amount)); + FluidStack resolved = TagUtil.getFluidByName(name); + if (!resolved.isEmpty()) { + return IngredientCreatorAccess.fluid().from(resolved.copyWithAmount(amount)); + } + return IngredientCreatorAccess.fluid().from(FluidStack.EMPTY); } return IngredientCreatorAccess.fluid().from(name, amount); } diff --git a/src/main/java/igentuman/nc/recipes/ingredient/creator/IIngredientCreator.java b/src/main/java/igentuman/nc/recipes/ingredient/creator/IIngredientCreator.java index ce57ce52c..a3add6386 100644 --- a/src/main/java/igentuman/nc/recipes/ingredient/creator/IIngredientCreator.java +++ b/src/main/java/igentuman/nc/recipes/ingredient/creator/IIngredientCreator.java @@ -4,7 +4,7 @@ import igentuman.nc.recipes.ingredient.FluidStackIngredient; import igentuman.nc.recipes.ingredient.InputIngredient; import igentuman.nc.util.annotation.NothingNullByDefault; -import net.minecraft.network.FriendlyByteBuf; +import net.minecraft.network.RegistryFriendlyByteBuf; import net.minecraft.tags.TagKey; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -63,7 +63,7 @@ public interface IIngredientCreator ITEM_STACK_INGREDIENT_CREATOR = helper); - } - return ITEM_STACK_INGREDIENT_CREATOR; + return ItemStackIngredientCreator.INSTANCE; } /** * Gets the fluid stack ingredient creator. */ public static IFluidStackIngredientCreator fluid() { - if (FLUID_STACK_INGREDIENT_CREATOR == null) { - lookupInstance(IFluidStackIngredientCreator.class, "igentuman.nc.recipes.ingredient.creator.FluidStackIngredientCreator", - helper -> FLUID_STACK_INGREDIENT_CREATOR = helper); - } - return FLUID_STACK_INGREDIENT_CREATOR; - } - - - private static > void lookupInstance(Class type, String className, Consumer setter) { - try { - Class clazz = Class.forName(className); - setter.accept(type.cast(clazz.getField("INSTANCE").get(null))); - } catch (ReflectiveOperationException ex) { - NuclearCraft.LOGGER.error("Error retrieving {}, Nuclearcraft may be absent, damaged, or outdated.", className); - } + return FluidStackIngredientCreator.INSTANCE; } -} \ No newline at end of file +} diff --git a/src/main/java/igentuman/nc/recipes/ingredient/creator/ItemStackIngredientCreator.java b/src/main/java/igentuman/nc/recipes/ingredient/creator/ItemStackIngredientCreator.java index 25b95aac0..a59168c90 100644 --- a/src/main/java/igentuman/nc/recipes/ingredient/creator/ItemStackIngredientCreator.java +++ b/src/main/java/igentuman/nc/recipes/ingredient/creator/ItemStackIngredientCreator.java @@ -4,6 +4,7 @@ import com.google.gson.JsonElement; import com.google.gson.JsonObject; import com.google.gson.JsonSyntaxException; +import igentuman.api.platform.NCIngredients; import igentuman.nc.network.BasePacketHandler; import igentuman.nc.recipes.ingredient.IMultiIngredient; import igentuman.nc.recipes.ingredient.InputIngredient; @@ -11,15 +12,12 @@ import igentuman.nc.util.JsonConstants; import igentuman.nc.util.StackUtils; import igentuman.nc.util.annotation.NothingNullByDefault; -import net.minecraft.core.Registry; -import net.minecraft.network.FriendlyByteBuf; -import net.minecraft.network.chat.contents.LiteralContents; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.network.RegistryFriendlyByteBuf; +import net.minecraft.network.chat.contents.PlainTextContents; import net.minecraft.tags.TagKey; import net.minecraft.util.GsonHelper; import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; -import net.minecraft.world.item.Items; import net.minecraft.world.item.crafting.Ingredient; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -59,10 +57,10 @@ public ItemStackIngredient from(JsonElement instance) { } @Override - public ItemStackIngredient read(FriendlyByteBuf buffer) { + public ItemStackIngredient read(RegistryFriendlyByteBuf buffer) { Objects.requireNonNull(buffer, "ItemStackIngredients cannot be read from a null packet buffer."); return switch (buffer.readEnum(IngredientType.class)) { - case SINGLE -> from(Ingredient.fromNetwork(buffer), buffer.readVarInt()); + case SINGLE -> from(NCIngredients.fromNetwork(buffer), buffer.readVarInt()); case MULTI -> createMulti(BasePacketHandler.readArray(buffer, ItemStackIngredient[]::new, this::read)); }; } @@ -102,7 +100,7 @@ public ItemStackIngredient deserialize(@Nullable JsonElement json) { } } - Ingredient ingredient = Ingredient.fromJson(jsonObject); + Ingredient ingredient = NCIngredients.fromJson(jsonObject); return from(ingredient, amount); } @@ -172,7 +170,7 @@ public boolean hasNoMatchingInstances() { return true; } else if (items.length == 1) { ItemStack item = items[0]; - return item.getItem() == BARRIER && item.getHoverName().getContents() instanceof LiteralContents contents && contents.text().startsWith("Empty Tag: "); + return item.getItem() == BARRIER && item.getHoverName().getContents() instanceof PlainTextContents.LiteralContents contents && contents.text().startsWith("Empty Tag: "); } return false; } @@ -181,7 +179,7 @@ public List getItemsByTagKey(String key) { List tmp = new ArrayList<>(); TagKey tag = TagKey.create(ITEM_REGISTRY, rlFromString(key)); - Ingredient ing = Ingredient.fromValues(Stream.of(new Ingredient.TagValue(tag))); + Ingredient ing = NCIngredients.ofTag(tag); for (ItemStack item: ing.getItems()) { tmp.add(item.getItem().toString()); } @@ -218,9 +216,9 @@ public int getAmountRaw() { } @Override - public void write(FriendlyByteBuf buffer) { + public void write(RegistryFriendlyByteBuf buffer) { buffer.writeEnum(IngredientType.SINGLE); - ingredient.toNetwork(buffer); + NCIngredients.toNetwork(buffer, ingredient); buffer.writeVarInt(amount); } @@ -230,7 +228,7 @@ public JsonElement serialize() { if (amount > 1) { json.addProperty("count", amount); } - json.add(JsonConstants.INGREDIENT, ingredient.toJson()); + json.add(JsonConstants.INGREDIENT, NCIngredients.toJson(ingredient)); return json; } @@ -325,7 +323,7 @@ public final List getIngredients() { } @Override - public void write(FriendlyByteBuf buffer) { + public void write(RegistryFriendlyByteBuf buffer) { buffer.writeEnum(IngredientType.MULTI); BasePacketHandler.writeArray(buffer, ingredients, InputIngredient::write); } diff --git a/src/main/java/igentuman/nc/recipes/serializers/BoilingRecipeSerializer.java b/src/main/java/igentuman/nc/recipes/serializers/BoilingRecipeSerializer.java index 9d1ab0364..cdc5c5e70 100644 --- a/src/main/java/igentuman/nc/recipes/serializers/BoilingRecipeSerializer.java +++ b/src/main/java/igentuman/nc/recipes/serializers/BoilingRecipeSerializer.java @@ -1,12 +1,10 @@ package igentuman.nc.recipes.serializers; import com.google.gson.JsonObject; -import igentuman.nc.NuclearCraft; import igentuman.nc.recipes.ingredient.FluidStackIngredient; import igentuman.nc.recipes.ingredient.ItemStackIngredient; import igentuman.nc.recipes.type.NcRecipe; -import net.minecraft.network.FriendlyByteBuf; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.network.RegistryFriendlyByteBuf; import net.minecraft.util.GsonHelper; import org.jetbrains.annotations.NotNull; @@ -19,23 +17,23 @@ public BoilingRecipeSerializer(IFactory factory) { } @Override - public @NotNull RECIPE fromJson(@NotNull ResourceLocation recipeId, @NotNull JsonObject json) { + protected @NotNull RECIPE fromJson(@NotNull JsonObject json) { - FluidStackIngredient[] inputFluids = inputFluidsFromJson(json, recipeId); - FluidStackIngredient[] outputFluids = outputFluidsFromJson(json, recipeId); + FluidStackIngredient[] inputFluids = inputFluidsFromJson(json); + FluidStackIngredient[] outputFluids = outputFluidsFromJson(json); double heatRequired = 1D; try { heatRequired = GsonHelper.getAsDouble(json, "heatRequired", 1D); } catch (Exception ex) { - debugLog("Unable to parse params for recipe: "+recipeId); + debugLog("Unable to parse params for recipe type: " + getCodeId()); } - return this.factory.create(recipeId, new ItemStackIngredient[]{}, new ItemStackIngredient[]{}, inputFluids, outputFluids, heatRequired, 1, 1, 1); + return this.factory.create(getCodeId(), new ItemStackIngredient[]{}, new ItemStackIngredient[]{}, inputFluids, outputFluids, heatRequired, 1, 1, 1); } @Override - public RECIPE fromNetwork(@NotNull ResourceLocation recipeId, @NotNull FriendlyByteBuf buffer) { + protected RECIPE fromNetwork(@NotNull RegistryFriendlyByteBuf buffer) { try { ItemStackIngredient[] inputItems = readItems(buffer); ItemStackIngredient[] outputItems = readItems(buffer); @@ -46,9 +44,9 @@ public RECIPE fromNetwork(@NotNull ResourceLocation recipeId, @NotNull FriendlyB double powerModifier = buffer.readDouble(); double radiation = buffer.readDouble(); - return this.factory.create(recipeId, new ItemStackIngredient[]{}, new ItemStackIngredient[]{}, inputFluids, outputFluids, heatRequired, 1, 1, 1); + return this.factory.create(getCodeId(), new ItemStackIngredient[]{}, new ItemStackIngredient[]{}, inputFluids, outputFluids, heatRequired, 1, 1, 1); } catch (Exception e) { - debugLog("NC fromNetwork recipe error: " + recipeId); + debugLog("NC fromNetwork recipe error for type: " + getCodeId()); throw e; } } diff --git a/src/main/java/igentuman/nc/recipes/serializers/CoolantRecipeSerializer.java b/src/main/java/igentuman/nc/recipes/serializers/CoolantRecipeSerializer.java index a5059ef00..aeff92957 100644 --- a/src/main/java/igentuman/nc/recipes/serializers/CoolantRecipeSerializer.java +++ b/src/main/java/igentuman/nc/recipes/serializers/CoolantRecipeSerializer.java @@ -1,12 +1,10 @@ package igentuman.nc.recipes.serializers; import com.google.gson.JsonObject; -import igentuman.nc.NuclearCraft; import igentuman.nc.recipes.ingredient.FluidStackIngredient; import igentuman.nc.recipes.ingredient.ItemStackIngredient; import igentuman.nc.recipes.type.NcRecipe; -import net.minecraft.network.FriendlyByteBuf; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.network.RegistryFriendlyByteBuf; import net.minecraft.util.GsonHelper; import org.jetbrains.annotations.NotNull; @@ -19,23 +17,23 @@ public CoolantRecipeSerializer(IFactory factory) { } @Override - public @NotNull RECIPE fromJson(@NotNull ResourceLocation recipeId, @NotNull JsonObject json) { + protected @NotNull RECIPE fromJson(@NotNull JsonObject json) { - FluidStackIngredient[] inputFluids = inputFluidsFromJson(json, recipeId); - FluidStackIngredient[] outputFluids = outputFluidsFromJson(json, recipeId); + FluidStackIngredient[] inputFluids = inputFluidsFromJson(json); + FluidStackIngredient[] outputFluids = outputFluidsFromJson(json); double coolingRate = 1000D; try { coolingRate = GsonHelper.getAsDouble(json, "coolingRate", 1000.0); } catch (Exception ex) { - debugLog("Unable to parse params for recipe: "+recipeId); + debugLog("Unable to parse params for recipe type: " + getCodeId()); } - return this.factory.create(recipeId, new ItemStackIngredient[0], new ItemStackIngredient[0], inputFluids, outputFluids, 1, 1, 1, coolingRate); + return this.factory.create(getCodeId(), new ItemStackIngredient[0], new ItemStackIngredient[0], inputFluids, outputFluids, 1, 1, 1, coolingRate); } @Override - public RECIPE fromNetwork(@NotNull ResourceLocation recipeId, @NotNull FriendlyByteBuf buffer) { + protected RECIPE fromNetwork(@NotNull RegistryFriendlyByteBuf buffer) { try { ItemStackIngredient[] inputItems = readItems(buffer); ItemStackIngredient[] outputItems = readItems(buffer); @@ -46,7 +44,7 @@ public RECIPE fromNetwork(@NotNull ResourceLocation recipeId, @NotNull FriendlyB double powerModifier = buffer.readDouble(); double radiation = buffer.readDouble(); - return this.factory.create(recipeId, new ItemStackIngredient[]{}, new ItemStackIngredient[]{}, inputFluids, outputFluids, coolingRate, 1, 1, 1); + return this.factory.create(getCodeId(), new ItemStackIngredient[]{}, new ItemStackIngredient[]{}, inputFluids, outputFluids, coolingRate, 1, 1, 1); } catch (Exception e) { debugLog("Error reading from packet." + e); throw e; diff --git a/src/main/java/igentuman/nc/recipes/serializers/FusionRecipeSerializer.java b/src/main/java/igentuman/nc/recipes/serializers/FusionRecipeSerializer.java index 819c8644f..b06e8e283 100644 --- a/src/main/java/igentuman/nc/recipes/serializers/FusionRecipeSerializer.java +++ b/src/main/java/igentuman/nc/recipes/serializers/FusionRecipeSerializer.java @@ -1,11 +1,9 @@ package igentuman.nc.recipes.serializers; -import igentuman.nc.NuclearCraft; import igentuman.nc.recipes.ingredient.FluidStackIngredient; import igentuman.nc.recipes.ingredient.ItemStackIngredient; import igentuman.nc.recipes.type.NcRecipe; -import net.minecraft.network.FriendlyByteBuf; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.network.RegistryFriendlyByteBuf; import org.jetbrains.annotations.NotNull; import static igentuman.nc.NuclearCraft.debugLog; @@ -17,7 +15,7 @@ public FusionRecipeSerializer(IFactory factory) { } @Override - public RECIPE fromNetwork(@NotNull ResourceLocation recipeId, @NotNull FriendlyByteBuf buffer) { + protected RECIPE fromNetwork(@NotNull RegistryFriendlyByteBuf buffer) { try { ItemStackIngredient[] inputItems = readItems(buffer); ItemStackIngredient[] outputItems = readItems(buffer); @@ -29,7 +27,7 @@ public RECIPE fromNetwork(@NotNull ResourceLocation recipeId, @NotNull FriendlyB double radiation = buffer.readDouble(); double temperature = buffer.readDouble(); - return this.factory.create(recipeId, inputItems, outputItems, inputFluids, outputFluids, timeModifier, powerModifier, radiation, temperature); + return this.factory.create(getCodeId(), inputItems, outputItems, inputFluids, outputFluids, timeModifier, powerModifier, radiation, temperature); } catch (Exception e) { debugLog("Error reading from packet." + e); throw e; diff --git a/src/main/java/igentuman/nc/recipes/serializers/NcRecipeSerializer.java b/src/main/java/igentuman/nc/recipes/serializers/NcRecipeSerializer.java index 5ed0d72c9..fc39830e5 100644 --- a/src/main/java/igentuman/nc/recipes/serializers/NcRecipeSerializer.java +++ b/src/main/java/igentuman/nc/recipes/serializers/NcRecipeSerializer.java @@ -3,7 +3,7 @@ import com.google.gson.JsonElement; import com.google.gson.JsonObject; import com.google.gson.JsonSyntaxException; -import igentuman.nc.NuclearCraft; +import igentuman.api.platform.NCRecipeSerializerFactory; import igentuman.nc.content.particles.ParticleStack; import igentuman.nc.content.processors.Processors; import igentuman.nc.recipes.ingredient.FluidStackIngredient; @@ -12,12 +12,14 @@ import igentuman.nc.recipes.ingredient.ItemStackIngredient; import igentuman.nc.recipes.ingredient.creator.IngredientCreatorAccess; import igentuman.nc.util.JsonConstants; -import net.minecraft.network.FriendlyByteBuf; -import net.minecraft.resources.ResourceLocation; +import com.mojang.serialization.MapCodec; +import net.minecraft.network.RegistryFriendlyByteBuf; +import net.minecraft.network.codec.StreamCodec; import net.minecraft.util.GsonHelper; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.crafting.RecipeSerializer; -import net.minecraftforge.fluids.FluidStack; +import net.minecraft.core.registries.BuiltInRegistries; +import net.neoforged.neoforge.fluids.FluidStack; import org.jetbrains.annotations.NotNull; @@ -27,13 +29,38 @@ public class NcRecipeSerializer implements RecipeSerializer { - final IFactory factory; + protected final IFactory factory; + private String codeId; public NcRecipeSerializer(IFactory factory) { this.factory = factory; } - protected FluidStackIngredient[] inputFluidsFromJson(JsonObject json, ResourceLocation recipeId) { + /** + * Get the recipe type code ID for this serializer, derived from its registry name. + */ + protected String getCodeId() { + if (codeId == null) { + codeId = BuiltInRegistries.RECIPE_SERIALIZER.getKey(this).getPath(); + } + return codeId; + } + + // --- Codec / StreamCodec (NeoForge 1.21.1 API) --- + + @Override + public @NotNull MapCodec codec() { + return NCRecipeSerializerFactory.createCodec(this::fromJson); + } + + @Override + public @NotNull StreamCodec streamCodec() { + return NCRecipeSerializerFactory.createStreamCodec(this::fromNetwork, this::toNetwork); + } + + // --- JSON parsing helpers --- + + protected FluidStackIngredient[] inputFluidsFromJson(JsonObject json) { FluidStackIngredient[] inputFluids = new FluidStackIngredient[0]; if(json.has("inputFluids")) { if (GsonHelper.isArrayNode(json, "inputFluids")) { @@ -44,7 +71,7 @@ protected FluidStackIngredient[] inputFluidsFromJson(JsonObject json, ResourceLo try { inputFluids[i] = IngredientCreatorAccess.fluid().deserialize(in); } catch (Exception ex) { - debugLog("Unable to parse input fluid for recipe: "+recipeId); + debugLog("Unable to parse input fluid for recipe type: " + getCodeId()); inputFluids[i] = IngredientCreatorAccess.fluid().from(FluidStack.EMPTY); } i++; @@ -54,7 +81,7 @@ protected FluidStackIngredient[] inputFluidsFromJson(JsonObject json, ResourceLo try { inputFluids = new FluidStackIngredient[]{IngredientCreatorAccess.fluid().deserialize(inputJson)}; } catch (Exception ex) { - debugLog("Unable to parse input fluid for recipe: " + recipeId); + debugLog("Unable to parse input fluid for recipe type: " + getCodeId()); inputFluids[0] = IngredientCreatorAccess.fluid().from(FluidStack.EMPTY); } } @@ -63,7 +90,7 @@ protected FluidStackIngredient[] inputFluidsFromJson(JsonObject json, ResourceLo return inputFluids; } - protected FluidStackIngredient[] outputFluidsFromJson(JsonObject json, ResourceLocation recipeId) { + protected FluidStackIngredient[] outputFluidsFromJson(JsonObject json) { FluidStackIngredient[] outputFluids = new FluidStackIngredient[0]; if(json.has("outputFluids")) { @@ -75,7 +102,7 @@ protected FluidStackIngredient[] outputFluidsFromJson(JsonObject json, ResourceL try { outputFluids[i] = IngredientCreatorAccess.fluid().deserialize(out.getAsJsonObject()); } catch (Exception ex) { - debugLog("Unable to parse output fluid for recipe: "+recipeId); + debugLog("Unable to parse output fluid for recipe type: " + getCodeId()); outputFluids[i] = IngredientCreatorAccess.fluid().from(FluidStack.EMPTY); } i++; @@ -85,7 +112,7 @@ protected FluidStackIngredient[] outputFluidsFromJson(JsonObject json, ResourceL try { outputFluids = new FluidStackIngredient[]{IngredientCreatorAccess.fluid().deserialize(output.getAsJsonObject())}; } catch (Exception ex) { - debugLog("Unable to parse output fluid for recipe: " + recipeId); + debugLog("Unable to parse output fluid for recipe type: " + getCodeId()); outputFluids[0] = IngredientCreatorAccess.fluid().from(FluidStack.EMPTY); } } @@ -94,7 +121,7 @@ protected FluidStackIngredient[] outputFluidsFromJson(JsonObject json, ResourceL return outputFluids; } - protected ParticleStack[] particleStacksFromJson(JsonObject json, String fieldName, ResourceLocation recipeId) { + protected ParticleStack[] particleStacksFromJson(JsonObject json, String fieldName) { ParticleStack[] inputParticles = new ParticleStack[0]; if (json.has(fieldName)) { @@ -115,7 +142,7 @@ protected ParticleStack[] particleStacksFromJson(JsonObject json, String fieldNa return inputParticles; } - protected ItemStackIngredient[] inputItemsFromJson(JsonObject json, ResourceLocation recipeId) { + protected ItemStackIngredient[] inputItemsFromJson(JsonObject json) { ItemStackIngredient[] inputItems = new ItemStackIngredient[0]; if (json.has(JsonConstants.INPUT)) { @@ -127,7 +154,7 @@ protected ItemStackIngredient[] inputItemsFromJson(JsonObject json, ResourceLoca try { inputItems[i] = IngredientCreatorAccess.item().deserialize(in); } catch (Exception ex) { - debugLog("Unable to parse input for recipe: "+recipeId); + debugLog("Unable to parse input for recipe type: " + getCodeId()); inputItems[i] = getBarrier(); } i++; @@ -137,7 +164,7 @@ protected ItemStackIngredient[] inputItemsFromJson(JsonObject json, ResourceLoca try { inputItems = new ItemStackIngredient[]{IngredientCreatorAccess.item().deserialize(inputJson)}; } catch (Exception ex) { - debugLog("Unable to parse input for recipe: " + recipeId); + debugLog("Unable to parse input for recipe type: " + getCodeId()); inputItems[0] = getBarrier(); } } @@ -146,7 +173,7 @@ protected ItemStackIngredient[] inputItemsFromJson(JsonObject json, ResourceLoca return inputItems; } - protected ItemStackIngredient[] outputItemsFromJson(JsonObject json, ResourceLocation recipeId) { + protected ItemStackIngredient[] outputItemsFromJson(JsonObject json) { ItemStackIngredient[] outputItems = new ItemStackIngredient[0]; if(json.has(JsonConstants.OUTPUT)) { if (GsonHelper.isArrayNode(json, JsonConstants.OUTPUT)) { @@ -158,7 +185,7 @@ protected ItemStackIngredient[] outputItemsFromJson(JsonObject json, ResourceLoc try { outputItems[i] = IngredientCreatorAccess.item().deserialize(out); } catch (JsonSyntaxException ex) { - debugLog("Error parsing output itemstack for recipe: " + recipeId.toString()); + debugLog("Error parsing output itemstack for recipe type: " + getCodeId()); outputItems[i] = getBarrier(); } i++; @@ -168,7 +195,7 @@ protected ItemStackIngredient[] outputItemsFromJson(JsonObject json, ResourceLoc try { outputItems = new ItemStackIngredient[]{IngredientCreatorAccess.item().deserialize(output.getAsJsonObject())}; } catch (Exception ex) { - debugLog("Unable to parse output for recipe: "+recipeId); + debugLog("Unable to parse output for recipe type: " + getCodeId()); outputItems[0] = getBarrier(); } } @@ -177,17 +204,20 @@ protected ItemStackIngredient[] outputItemsFromJson(JsonObject json, ResourceLoc return outputItems; } - @Override - public @NotNull RECIPE fromJson(@NotNull ResourceLocation recipeId, @NotNull JsonObject json) { - String type = GsonHelper.getAsString(json, "type"); + // --- JSON deserialization --- + + protected @NotNull RECIPE fromJson(@NotNull JsonObject json) { + // In NeoForge 1.21.1, "type" is stripped from the MapCodec input by the dispatch layer. + // Use getCodeId() (the serializer's registry path) instead. + String type = getCodeId(); if(Processors.all().containsKey(type) && !Processors.all().get(type).config().isRegistered()) { - return emptyRecipe(recipeId); + return emptyRecipe(); } - ItemStackIngredient[] inputItems = inputItemsFromJson(json, recipeId); - ItemStackIngredient[] outputItems = outputItemsFromJson(json, recipeId); - FluidStackIngredient[] inputFluids = inputFluidsFromJson(json, recipeId); - FluidStackIngredient[] outputFluids = outputFluidsFromJson(json, recipeId); + ItemStackIngredient[] inputItems = inputItemsFromJson(json); + ItemStackIngredient[] outputItems = outputItemsFromJson(json); + FluidStackIngredient[] inputFluids = inputFluidsFromJson(json); + FluidStackIngredient[] outputFluids = outputFluidsFromJson(json); double timeModifier = 1D; double powerModifier = 1D; @@ -204,16 +234,19 @@ protected ItemStackIngredient[] outputItemsFromJson(JsonObject json, ResourceLoc rarityModifier = temperature; } } catch (Exception ex) { - debugLog("Unable to parse params for recipe: "+recipeId); + debugLog("Unable to parse params for recipe type: " + getCodeId()); } - return this.factory.create(recipeId, inputItems, outputItems, inputFluids, outputFluids, timeModifier, powerModifier, radiation, rarityModifier); + return this.factory.create(getCodeId(), inputItems, outputItems, inputFluids, outputFluids, timeModifier, powerModifier, radiation, rarityModifier); } - RECIPE emptyRecipe(@NotNull ResourceLocation recipeId) { - return (RECIPE) new EmptyRecipe(recipeId); + @SuppressWarnings("unchecked") + RECIPE emptyRecipe() { + return (RECIPE) new EmptyRecipe(getCodeId()); } - public ItemStackIngredient[] readItems(@NotNull FriendlyByteBuf buffer) { + // --- Network I/O --- + + public ItemStackIngredient[] readItems(@NotNull RegistryFriendlyByteBuf buffer) { int size = buffer.readInt(); ItemStackIngredient[] items = new ItemStackIngredient[size]; for(int i = 0; i < size; i++) { @@ -222,7 +255,7 @@ public ItemStackIngredient[] readItems(@NotNull FriendlyByteBuf buffer) { return items; } - public FluidStackIngredient[] readFluids(@NotNull FriendlyByteBuf buffer) { + public FluidStackIngredient[] readFluids(@NotNull RegistryFriendlyByteBuf buffer) { int size = buffer.readInt(); FluidStackIngredient[] fluids = new FluidStackIngredient[size]; for(int i = 0; i < size; i++) { @@ -231,8 +264,7 @@ public FluidStackIngredient[] readFluids(@NotNull FriendlyByteBuf buffer) { return fluids; } - @Override - public RECIPE fromNetwork(@NotNull ResourceLocation recipeId, @NotNull FriendlyByteBuf buffer) { + protected RECIPE fromNetwork(@NotNull RegistryFriendlyByteBuf buffer) { try { ItemStackIngredient[] inputItems = readItems(buffer); ItemStackIngredient[] outputItems = readItems(buffer); @@ -243,18 +275,17 @@ public RECIPE fromNetwork(@NotNull ResourceLocation recipeId, @NotNull FriendlyB double powerModifier = buffer.readDouble(); double radiation = buffer.readDouble(); - return this.factory.create(recipeId, inputItems, outputItems, inputFluids, outputFluids, timeModifier, powerModifier, radiation, 1); + return this.factory.create(getCodeId(), inputItems, outputItems, inputFluids, outputFluids, timeModifier, powerModifier, radiation, 1); } catch (Exception e) { - debugLog("Error reading recipe {} from packet. Trace: {} "+ recipeId + e); + debugLog("Error reading recipe from packet for type: " + getCodeId() + ". Trace: " + e); } - debugLog("Return empty recipe for: {}" + recipeId); + debugLog("Return empty recipe for type: " + getCodeId()); //return invalid recipe - return emptyRecipe(recipeId); + return emptyRecipe(); } - @Override - public void toNetwork(@NotNull FriendlyByteBuf buffer, @NotNull RECIPE recipe) { + protected void toNetwork(@NotNull RegistryFriendlyByteBuf buffer, @NotNull RECIPE recipe) { try { recipe.write(buffer); } catch (Exception e) { @@ -265,9 +296,9 @@ public void toNetwork(@NotNull FriendlyByteBuf buffer, @NotNull RECIPE recipe) { @FunctionalInterface public interface IFactory { - RECIPE create(ResourceLocation id, + RECIPE create(String codeId, ItemStackIngredient[] inputItems, ItemStackIngredient[] outputItems, FluidStackIngredient[] inputFluids, FluidStackIngredient[] outputFluids, - double timeMultiplier, double powerMultiplier, double radiationMultiplier, double rarityMultiplier); + double timeMultiplier, double powerMultiplier, double radiationMultiplier, double extraModifier); } -} \ No newline at end of file +} diff --git a/src/main/java/igentuman/nc/recipes/serializers/OreVeinRecipeSerializer.java b/src/main/java/igentuman/nc/recipes/serializers/OreVeinRecipeSerializer.java index 6fbbce5e3..b15d19467 100644 --- a/src/main/java/igentuman/nc/recipes/serializers/OreVeinRecipeSerializer.java +++ b/src/main/java/igentuman/nc/recipes/serializers/OreVeinRecipeSerializer.java @@ -3,8 +3,7 @@ import igentuman.nc.recipes.ingredient.FluidStackIngredient; import igentuman.nc.recipes.ingredient.ItemStackIngredient; import igentuman.nc.recipes.type.NcRecipe; -import net.minecraft.network.FriendlyByteBuf; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.network.RegistryFriendlyByteBuf; import org.jetbrains.annotations.NotNull; import static igentuman.nc.NuclearCraft.debugLog; @@ -16,7 +15,7 @@ public OreVeinRecipeSerializer(IFactory factory) { } @Override - public RECIPE fromNetwork(@NotNull ResourceLocation recipeId, @NotNull FriendlyByteBuf buffer) { + protected RECIPE fromNetwork(@NotNull RegistryFriendlyByteBuf buffer) { try { ItemStackIngredient[] inputItems = readItems(buffer); ItemStackIngredient[] outputItems = readItems(buffer); @@ -28,7 +27,7 @@ public RECIPE fromNetwork(@NotNull ResourceLocation recipeId, @NotNull FriendlyB double radiation = buffer.readDouble(); double rarity = buffer.readDouble(); - return this.factory.create(recipeId, inputItems, outputItems, inputFluids, outputFluids, timeModifier, powerModifier, radiation, rarity); + return this.factory.create(getCodeId(), inputItems, outputItems, inputFluids, outputFluids, timeModifier, powerModifier, radiation, rarity); } catch (Exception e) { debugLog("Error reading from packet." + e); throw e; diff --git a/src/main/java/igentuman/nc/recipes/serializers/TargetChamberSerializer.java b/src/main/java/igentuman/nc/recipes/serializers/TargetChamberSerializer.java index aa52f44b3..aafe9a5e8 100644 --- a/src/main/java/igentuman/nc/recipes/serializers/TargetChamberSerializer.java +++ b/src/main/java/igentuman/nc/recipes/serializers/TargetChamberSerializer.java @@ -2,14 +2,12 @@ import com.google.gson.JsonObject; import igentuman.nc.content.particles.ParticleStack; -import igentuman.nc.content.processors.Processors; import igentuman.nc.recipes.ingredient.FluidStackIngredient; import igentuman.nc.recipes.ingredient.ItemStackIngredient; import igentuman.nc.recipes.ingredient.creator.IngredientCreatorAccess; import igentuman.nc.recipes.type.NcRecipe; import igentuman.nc.recipes.type.TargetChamberRecipe; -import net.minecraft.network.FriendlyByteBuf; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.network.RegistryFriendlyByteBuf; import net.minecraft.util.GsonHelper; import org.jetbrains.annotations.NotNull; @@ -26,14 +24,14 @@ public TargetChamberSerializer(ITargetChamberFactory factory) { public interface ITargetChamberFactory extends IFactory { @Override - default RECIPE create(ResourceLocation id, + default RECIPE create(String codeId, ItemStackIngredient[] inputItems, ItemStackIngredient[] outputItems, FluidStackIngredient[] inputFluids, FluidStackIngredient[] outputFluids, - double timeMultiplier, double powerMultiplier, double radiationMultiplier, double rarityMultiplier) { + double timeMultiplier, double powerMultiplier, double radiationMultiplier, double extraModifier) { throw new UnsupportedOperationException("TargetChamberFactory should use make() method instead of create()"); } - - RECIPE make(ResourceLocation id, + + RECIPE make(String codeId, ItemStackIngredient[] inputItems, ItemStackIngredient[] outputItems, FluidStackIngredient[] inputFluids, FluidStackIngredient[] outputFluids, ParticleStack[] inputParticles, ParticleStack[] outputParticles, @@ -41,24 +39,22 @@ RECIPE make(ResourceLocation id, } @Override - public @NotNull RECIPE fromJson(@NotNull ResourceLocation recipeId, @NotNull JsonObject json) { - String type = GsonHelper.getAsString(json, "type"); - - - ParticleStack[] inputParticles = particleStacksFromJson(json, "inputParticles", recipeId); - ParticleStack[] outputParticles = particleStacksFromJson(json, "outputParticles", recipeId); - ItemStackIngredient[] inputItems = inputItemsFromJson(json, recipeId); - ItemStackIngredient[] outputItems = outputItemsFromJson(json, recipeId); - FluidStackIngredient[] inputFluids = inputFluidsFromJson(json, recipeId); - FluidStackIngredient[] outputFluids = outputFluidsFromJson(json, recipeId); + protected @NotNull RECIPE fromJson(@NotNull JsonObject json) { + // "type" is stripped by the MapCodec dispatch layer in NeoForge 1.21.1 + ParticleStack[] inputParticles = particleStacksFromJson(json, "inputParticles"); + ParticleStack[] outputParticles = particleStacksFromJson(json, "outputParticles"); + ItemStackIngredient[] inputItems = inputItemsFromJson(json); + ItemStackIngredient[] outputItems = outputItemsFromJson(json); + FluidStackIngredient[] inputFluids = inputFluidsFromJson(json); + FluidStackIngredient[] outputFluids = outputFluidsFromJson(json); long maxEnergy = GsonHelper.getAsLong(json, "maxEnergy", Long.MAX_VALUE); double crossSection = GsonHelper.getAsDouble(json, "crossSection", 5D); - return this.targetChamberFactory.make(recipeId, inputItems, outputItems, inputFluids, outputFluids, inputParticles,outputParticles, maxEnergy, crossSection); + return this.targetChamberFactory.make(getCodeId(), inputItems, outputItems, inputFluids, outputFluids, inputParticles, outputParticles, maxEnergy, crossSection); } - public ParticleStack[] readParticles(@NotNull FriendlyByteBuf buffer) { + public ParticleStack[] readParticles(@NotNull RegistryFriendlyByteBuf buffer) { int size = buffer.readInt(); ParticleStack[] items = new ParticleStack[size]; for(int i = 0; i < size; i++) { @@ -67,7 +63,8 @@ public ParticleStack[] readParticles(@NotNull FriendlyByteBuf buffer) { return items; } - public ItemStackIngredient[] readItems(@NotNull FriendlyByteBuf buffer) { + @Override + public ItemStackIngredient[] readItems(@NotNull RegistryFriendlyByteBuf buffer) { int size = buffer.readInt(); ItemStackIngredient[] items = new ItemStackIngredient[size]; for(int i = 0; i < size; i++) { @@ -76,7 +73,8 @@ public ItemStackIngredient[] readItems(@NotNull FriendlyByteBuf buffer) { return items; } - public FluidStackIngredient[] readFluids(@NotNull FriendlyByteBuf buffer) { + @Override + public FluidStackIngredient[] readFluids(@NotNull RegistryFriendlyByteBuf buffer) { int size = buffer.readInt(); FluidStackIngredient[] fluids = new FluidStackIngredient[size]; for(int i = 0; i < size; i++) { @@ -86,7 +84,7 @@ public FluidStackIngredient[] readFluids(@NotNull FriendlyByteBuf buffer) { } @Override - public RECIPE fromNetwork(@NotNull ResourceLocation recipeId, @NotNull FriendlyByteBuf buffer) { + protected RECIPE fromNetwork(@NotNull RegistryFriendlyByteBuf buffer) { try { ItemStackIngredient[] inputItems = readItems(buffer); ItemStackIngredient[] outputItems = readItems(buffer); @@ -97,18 +95,18 @@ public RECIPE fromNetwork(@NotNull ResourceLocation recipeId, @NotNull FriendlyB long maxEnergy = buffer.readLong(); double crossSection = buffer.readDouble(); - return this.targetChamberFactory.make(recipeId, inputItems, outputItems, inputFluids, outputFluids, inputParticles, outputParticles, maxEnergy, crossSection); + return this.targetChamberFactory.make(getCodeId(), inputItems, outputItems, inputFluids, outputFluids, inputParticles, outputParticles, maxEnergy, crossSection); } catch (Exception e) { - debugLog("Error reading recipe {} from packet. Trace: {} "+ recipeId + e); + debugLog("Error reading recipe from packet for type: " + getCodeId() + ". Trace: " + e); } - debugLog("Return empty recipe for: {}" + recipeId); + debugLog("Return empty recipe for type: " + getCodeId()); //return invalid recipe - return emptyRecipe(recipeId); + return emptyRecipe(); } @Override - public void toNetwork(@NotNull FriendlyByteBuf buffer, @NotNull RECIPE recipe) { + protected void toNetwork(@NotNull RegistryFriendlyByteBuf buffer, @NotNull RECIPE recipe) { try { recipe.write(buffer); } catch (Exception e) { @@ -116,4 +114,4 @@ public void toNetwork(@NotNull FriendlyByteBuf buffer, @NotNull RECIPE recipe) { throw e; } } -} \ No newline at end of file +} diff --git a/src/main/java/igentuman/nc/recipes/serializers/TurbineRecipeSerializer.java b/src/main/java/igentuman/nc/recipes/serializers/TurbineRecipeSerializer.java index b4bda4359..96f587b03 100644 --- a/src/main/java/igentuman/nc/recipes/serializers/TurbineRecipeSerializer.java +++ b/src/main/java/igentuman/nc/recipes/serializers/TurbineRecipeSerializer.java @@ -4,8 +4,7 @@ import igentuman.nc.recipes.ingredient.FluidStackIngredient; import igentuman.nc.recipes.ingredient.ItemStackIngredient; import igentuman.nc.recipes.type.NcRecipe; -import net.minecraft.network.FriendlyByteBuf; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.network.RegistryFriendlyByteBuf; import net.minecraft.util.GsonHelper; import org.jetbrains.annotations.NotNull; @@ -18,23 +17,23 @@ public TurbineRecipeSerializer(IFactory factory) { } @Override - public @NotNull RECIPE fromJson(@NotNull ResourceLocation recipeId, @NotNull JsonObject json) { + protected @NotNull RECIPE fromJson(@NotNull JsonObject json) { - FluidStackIngredient[] inputFluids = inputFluidsFromJson(json, recipeId); - FluidStackIngredient[] outputFluids = outputFluidsFromJson(json, recipeId); + FluidStackIngredient[] inputFluids = inputFluidsFromJson(json); + FluidStackIngredient[] outputFluids = outputFluidsFromJson(json); double heatRequired = 1D; try { heatRequired = GsonHelper.getAsDouble(json, "heatRequired", 1D); } catch (Exception ex) { - debugLog("Unable to parse params for recipe: "+recipeId); + debugLog("Unable to parse params for recipe type: " + getCodeId()); } - return this.factory.create(recipeId, new ItemStackIngredient[]{}, new ItemStackIngredient[]{}, inputFluids, outputFluids, heatRequired, 1, 1, 1); + return this.factory.create(getCodeId(), new ItemStackIngredient[]{}, new ItemStackIngredient[]{}, inputFluids, outputFluids, heatRequired, 1, 1, 1); } @Override - public RECIPE fromNetwork(@NotNull ResourceLocation recipeId, @NotNull FriendlyByteBuf buffer) { + protected RECIPE fromNetwork(@NotNull RegistryFriendlyByteBuf buffer) { try { ItemStackIngredient[] inputItems = readItems(buffer); ItemStackIngredient[] outputItems = readItems(buffer); @@ -45,7 +44,7 @@ public RECIPE fromNetwork(@NotNull ResourceLocation recipeId, @NotNull FriendlyB double powerModifier = buffer.readDouble(); double radiation = buffer.readDouble(); - return this.factory.create(recipeId, new ItemStackIngredient[]{}, new ItemStackIngredient[]{}, inputFluids, outputFluids, heatRequired, 1, 1, 1); + return this.factory.create(getCodeId(), new ItemStackIngredient[]{}, new ItemStackIngredient[]{}, inputFluids, outputFluids, heatRequired, 1, 1, 1); } catch (Exception e) { debugLog("Error reading from packet." + e); throw e; diff --git a/src/main/java/igentuman/nc/recipes/type/EmptyRecipe.java b/src/main/java/igentuman/nc/recipes/type/EmptyRecipe.java index 16adde781..93b52852b 100644 --- a/src/main/java/igentuman/nc/recipes/type/EmptyRecipe.java +++ b/src/main/java/igentuman/nc/recipes/type/EmptyRecipe.java @@ -2,12 +2,11 @@ import igentuman.nc.recipes.ingredient.FluidStackIngredient; import igentuman.nc.recipes.ingredient.ItemStackIngredient; -import net.minecraft.resources.ResourceLocation; public class EmptyRecipe extends NcRecipe { - public EmptyRecipe(ResourceLocation recipeId) { - super(recipeId, new ItemStackIngredient[0], new ItemStackIngredient[0], new FluidStackIngredient[0], new FluidStackIngredient[0], 0, 0, 0, 0); + public EmptyRecipe(String codeId) { + super(codeId, new ItemStackIngredient[0], new ItemStackIngredient[0], new FluidStackIngredient[0], new FluidStackIngredient[0], 0, 0, 0, 0); } @Override diff --git a/src/main/java/igentuman/nc/recipes/type/MekChemicalConversionRecipe.java b/src/main/java/igentuman/nc/recipes/type/MekChemicalConversionRecipe.java index 9fabb5ce2..27f432d52 100644 --- a/src/main/java/igentuman/nc/recipes/type/MekChemicalConversionRecipe.java +++ b/src/main/java/igentuman/nc/recipes/type/MekChemicalConversionRecipe.java @@ -5,91 +5,71 @@ import igentuman.nc.recipes.ingredient.creator.FluidStackIngredientCreator; import igentuman.nc.util.TagUtil; import mekanism.api.MekanismAPI; +import mekanism.api.chemical.Chemical; import mekanism.api.chemical.ChemicalStack; -import mekanism.api.chemical.gas.Gas; -import mekanism.api.chemical.gas.GasStack; -import mekanism.api.chemical.slurry.Slurry; -import mekanism.api.chemical.slurry.SlurryStack; -import net.minecraft.network.FriendlyByteBuf; +import net.minecraft.network.RegistryFriendlyByteBuf; import net.minecraft.resources.ResourceKey; -import net.minecraft.resources.ResourceLocation; import net.minecraft.tags.TagKey; import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.material.Fluid; -import net.minecraftforge.fluids.FluidStack; -import net.minecraftforge.registries.ForgeRegistries; -import net.minecraftforge.registries.tags.ITag; -import net.minecraftforge.registries.tags.ITagManager; +import net.neoforged.neoforge.fluids.FluidStack; +import net.minecraft.core.registries.BuiltInRegistries; import org.jetbrains.annotations.NotNull; import java.util.ArrayList; import java.util.List; import java.util.Map; -import static igentuman.nc.NuclearCraft.forgeRl; -import static igentuman.nc.NuclearCraft.rl; -import static igentuman.nc.util.NcUtils.rlFromString; +import static igentuman.nc.NuclearCraft.neoforgeRl; import static net.minecraft.world.item.Items.BUCKET; public class MekChemicalConversionRecipe extends NcRecipe { public static class Type extends MekChemicalConversionRecipe { public Type() { - super(rl("mek_chemical"), new ItemStackIngredient[0], new ItemStackIngredient[0], new FluidStackIngredient[0], new FluidStackIngredient[0], 1, 1, 1, 1); + super("mek_chemical", new ItemStackIngredient[0], new ItemStackIngredient[0], new FluidStackIngredient[0], new FluidStackIngredient[0], 1, 1, 1, 1); } } - public ChemicalStack inputChemical; + public ChemicalStack inputChemical; public FluidStack outputFluid; - public MekChemicalConversionRecipe(ResourceLocation id, ItemStackIngredient[] input, ItemStackIngredient[] output, FluidStackIngredient[] inputFluids, FluidStackIngredient[] outputFluids, double timeModifier, double powerModifier, double radiation, double rarityModifier) { - super(id, input, output, timeModifier, powerModifier, radiation, rarityModifier); + public MekChemicalConversionRecipe(String codeId, ItemStackIngredient[] input, ItemStackIngredient[] output, FluidStackIngredient[] inputFluids, FluidStackIngredient[] outputFluids, double timeModifier, double powerModifier, double radiation, double rarityModifier) { + super(codeId, input, output, timeModifier, powerModifier, radiation, rarityModifier); } - public MekChemicalConversionRecipe(ChemicalStack input, FluidStack outputFluid) { - super(rl("mek_chemical_conversion"), new ItemStackIngredient[0], new ItemStackIngredient[0], 1, 1, 1, 1); + public MekChemicalConversionRecipe(ChemicalStack input, FluidStack outputFluid) { + super("mek_chemical_conversion", new ItemStackIngredient[0], new ItemStackIngredient[0], 1, 1, 1, 1); this.inputChemical = input; this.outputFluid = outputFluid; } public static FluidStack getStackByTagCode(String name) { - ITagManager tagManager = TagUtil.manager(ForgeRegistries.FLUIDS); - TagKey key = tagManager.createTagKey(forgeRl(name)); - ITag fluidITag = TagUtil.tag(ForgeRegistries.FLUIDS, key); - if(fluidITag.isEmpty()) { + TagKey key = TagUtil.createKey(BuiltInRegistries.FLUID, neoforgeRl(name)); + if(TagUtil.isTagEmpty(BuiltInRegistries.FLUID, key)) { return FluidStack.EMPTY; } FluidStack fluidStack = FluidStack.EMPTY; try { fluidStack = FluidStackIngredientCreator.INSTANCE - .from(fluidITag.getKey(), 1000).getRepresentations().get(0); + .from(key, 1000).getRepresentations().get(0); } catch (Exception e) { } return fluidStack; } - public static FluidStack getFluidBySlurry(Slurry gas) { - String name = gas.getName(); - return getStackByTagCode(name); - } - - public static FluidStack getFluidByGas(Gas gas) { - String name = gas.getName(); + public static FluidStack getFluidByChemical(Chemical chemical) { + String name = chemical.getRegistryName().getPath(); return getStackByTagCode(name); } public static List getRecipes() { List recipes = new ArrayList<>(); - for(Map.Entry, Gas> gas: MekanismAPI.gasRegistry().getEntries()) { - FluidStack fluid = getFluidByGas(gas.getValue()); - if(fluid.isEmpty()) continue; - recipes.add(new MekChemicalConversionRecipe(new GasStack(gas.getValue(), 1000), fluid)); - } - for(Map.Entry, Slurry> slurry: MekanismAPI.slurryRegistry().getEntries()) { - FluidStack fluid = getFluidBySlurry(slurry.getValue()); + for(Map.Entry, Chemical> entry : MekanismAPI.CHEMICAL_REGISTRY.entrySet()) { + FluidStack fluid = getFluidByChemical(entry.getValue()); if(fluid.isEmpty()) continue; - recipes.add(new MekChemicalConversionRecipe(new SlurryStack(slurry.getValue(), 1000), fluid)); + recipes.add(new MekChemicalConversionRecipe(new ChemicalStack(entry.getValue(), 1000), fluid)); } return recipes; @@ -106,7 +86,7 @@ public static List getRecipes() { } @Override - public void write(FriendlyByteBuf buffer) { + public void write(RegistryFriendlyByteBuf buffer) { super.write(buffer); buffer.writeDouble(rarityModifier); } diff --git a/src/main/java/igentuman/nc/recipes/type/NcRecipe.java b/src/main/java/igentuman/nc/recipes/type/NcRecipe.java index b022952f9..731f96f2c 100644 --- a/src/main/java/igentuman/nc/recipes/type/NcRecipe.java +++ b/src/main/java/igentuman/nc/recipes/type/NcRecipe.java @@ -5,10 +5,9 @@ import igentuman.nc.recipes.ingredient.ItemStackIngredient; import igentuman.nc.recipes.ingredient.creator.IngredientCreatorAccess; import igentuman.nc.util.annotation.NothingNullByDefault; -import net.minecraft.network.FriendlyByteBuf; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.network.RegistryFriendlyByteBuf; import net.minecraft.world.item.ItemStack; -import net.minecraftforge.fluids.FluidStack; +import net.neoforged.neoforge.fluids.FluidStack; import java.util.List; @@ -22,7 +21,7 @@ public abstract class NcRecipe extends AbstractRecipe { public double rarityModifier; public NcRecipe( - ResourceLocation id, + String codeId, ItemStackIngredient[] inputItems, ItemStackIngredient[] outputItems, FluidStackIngredient[] inputFluids, @@ -33,7 +32,7 @@ public NcRecipe( double rarityModifier ) { - super(id); + super(codeId); this.inputItems = inputItems; this.outputItems = outputItems; this.inputFluids = inputFluids; @@ -49,7 +48,7 @@ public NcRecipe( public NcRecipe( - ResourceLocation id, + String codeId, ItemStackIngredient[] inputItems, ItemStackIngredient[] outputItems, double timeModifier, @@ -57,11 +56,11 @@ public NcRecipe( double radiationModifier, double rarityModifier ) { - this(id, inputItems, outputItems, new FluidStackIngredient[0], new FluidStackIngredient[0], timeModifier, powerModifier, radiationModifier, rarityModifier); + this(codeId, inputItems, outputItems, new FluidStackIngredient[0], new FluidStackIngredient[0], timeModifier, powerModifier, radiationModifier, rarityModifier); } public NcRecipe( - ResourceLocation id, + String codeId, FluidStackIngredient[] inputFluids, FluidStackIngredient[] outputFluids, double timeModifier, @@ -69,11 +68,11 @@ public NcRecipe( double radiationModifier, double rarityModifier ) { - this(id, new ItemStackIngredient[0], new ItemStackIngredient[0], inputFluids, outputFluids, timeModifier, powerModifier, radiationModifier, rarityModifier); + this(codeId, new ItemStackIngredient[0], new ItemStackIngredient[0], inputFluids, outputFluids, timeModifier, powerModifier, radiationModifier, rarityModifier); } - public NcRecipe(ResourceLocation id) { - super(id); + public NcRecipe(String codeId) { + super(codeId); } public static ItemStackIngredient getBarrier() @@ -87,7 +86,7 @@ protected FluidStackIngredient getEmptyFluid() } @Override - public void write(FriendlyByteBuf buffer) { + public void write(RegistryFriendlyByteBuf buffer) { buffer.writeInt(inputItems.length); for (ItemStackIngredient input : inputItems) { if(input == null || input.getRepresentations().isEmpty()) { diff --git a/src/main/java/igentuman/nc/recipes/type/OreVeinRecipe.java b/src/main/java/igentuman/nc/recipes/type/OreVeinRecipe.java index 3e8a22d13..df29f0826 100644 --- a/src/main/java/igentuman/nc/recipes/type/OreVeinRecipe.java +++ b/src/main/java/igentuman/nc/recipes/type/OreVeinRecipe.java @@ -3,8 +3,7 @@ import igentuman.nc.util.insitu_leaching.OreVeinProvider; import igentuman.nc.recipes.ingredient.FluidStackIngredient; import igentuman.nc.recipes.ingredient.ItemStackIngredient; -import net.minecraft.network.FriendlyByteBuf; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.network.RegistryFriendlyByteBuf; import net.minecraft.server.level.ServerLevel; import net.minecraft.world.item.ItemStack; import org.jetbrains.annotations.NotNull; @@ -17,8 +16,8 @@ import static net.minecraft.world.item.Items.BARRIER; public class OreVeinRecipe extends NcRecipe { - public OreVeinRecipe(ResourceLocation id, ItemStackIngredient[] input, ItemStackIngredient[] output, FluidStackIngredient[] inputFluids, FluidStackIngredient[] outputFluids, double timeModifier, double powerModifier, double radiation, double rarityModifier) { - super(id, input, output, timeModifier, powerModifier, radiation, rarityModifier); + public OreVeinRecipe(String codeId, ItemStackIngredient[] input, ItemStackIngredient[] output, FluidStackIngredient[] inputFluids, FluidStackIngredient[] outputFluids, double timeModifier, double powerModifier, double radiation, double rarityModifier) { + super(codeId, input, output, timeModifier, powerModifier, radiation, rarityModifier); } private HashMap itemsPool = new HashMap<>(); @@ -71,7 +70,7 @@ public ItemStack getOreByScore(int score, ServerLevel level, int x, int z) { } @Override - public void write(FriendlyByteBuf buffer) { + public void write(RegistryFriendlyByteBuf buffer) { super.write(buffer); buffer.writeDouble(rarityModifier); } diff --git a/src/main/java/igentuman/nc/recipes/type/RadShieldingRecipe.java b/src/main/java/igentuman/nc/recipes/type/RadShieldingRecipe.java index b1dde1508..864f77311 100644 --- a/src/main/java/igentuman/nc/recipes/type/RadShieldingRecipe.java +++ b/src/main/java/igentuman/nc/recipes/type/RadShieldingRecipe.java @@ -1,33 +1,33 @@ package igentuman.nc.recipes.type; +import igentuman.api.platform.NCItemStacks; import igentuman.nc.item.RadShieldingItem; import igentuman.nc.recipes.NcRecipeSerializers; import igentuman.nc.util.annotation.NothingNullByDefault; -import net.minecraft.core.RegistryAccess; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.world.inventory.CraftingContainer; +import net.minecraft.core.HolderLookup; import net.minecraft.world.item.ArmorItem; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.crafting.CraftingBookCategory; +import net.minecraft.world.item.crafting.CraftingInput; import net.minecraft.world.item.crafting.CustomRecipe; import net.minecraft.world.item.crafting.RecipeSerializer; import net.minecraft.world.level.Level; -import net.minecraftforge.event.entity.player.PlayerEvent; -import net.minecraftforge.eventbus.api.SubscribeEvent; +import net.neoforged.neoforge.event.entity.player.PlayerEvent; +import net.neoforged.bus.api.SubscribeEvent; @NothingNullByDefault public class RadShieldingRecipe extends CustomRecipe { - public RadShieldingRecipe(ResourceLocation id, CraftingBookCategory category) { - super(id, CraftingBookCategory.EQUIPMENT); + public RadShieldingRecipe(CraftingBookCategory category) { + super(CraftingBookCategory.EQUIPMENT); } @Override - public boolean matches(CraftingContainer inv, Level world) { + public boolean matches(CraftingInput inv, Level world) { ItemStack shielding = ItemStack.EMPTY; ItemStack armor = ItemStack.EMPTY; - for (int i = 0; i < inv.getContainerSize(); ++i) { + for (int i = 0; i < inv.size(); ++i) { if(inv.getItem(i).getItem() instanceof RadShieldingItem) { shielding = inv.getItem(i); continue; @@ -48,10 +48,10 @@ public boolean matches(CraftingContainer inv, Level world) { } @Override - public ItemStack assemble(CraftingContainer inv, RegistryAccess access) { + public ItemStack assemble(CraftingInput inv, HolderLookup.Provider access) { ItemStack shielding = ItemStack.EMPTY; ItemStack armor = ItemStack.EMPTY; - for (int i = 0; i < inv.getContainerSize(); ++i) { + for (int i = 0; i < inv.size(); ++i) { if(inv.getItem(i).getItem() instanceof RadShieldingItem) { shielding = inv.getItem(i); continue; @@ -70,7 +70,7 @@ public ItemStack assemble(CraftingContainer inv, RegistryAccess access) { } ItemStack result = armor.copy(); result.setCount(1); - result.getOrCreateTag().putInt("rad_shielding", ((RadShieldingItem)shielding.getItem()).getRadiationShieldingLevel()); + NCItemStacks.putInt(result, "rad_shielding", ((RadShieldingItem)shielding.getItem()).getRadiationShieldingLevel()); return result; } @@ -88,4 +88,4 @@ public RecipeSerializer getSerializer() { public static void onCrafting(PlayerEvent.ItemCraftedEvent event) { ItemStack result = event.getCrafting(); } -} \ No newline at end of file +} diff --git a/src/main/java/igentuman/nc/recipes/type/ResetNbtRecipe.java b/src/main/java/igentuman/nc/recipes/type/ResetNbtRecipe.java index e61adc96a..6c587d560 100644 --- a/src/main/java/igentuman/nc/recipes/type/ResetNbtRecipe.java +++ b/src/main/java/igentuman/nc/recipes/type/ResetNbtRecipe.java @@ -1,35 +1,35 @@ package igentuman.nc.recipes.type; +import igentuman.api.platform.NCItemStacks; import igentuman.nc.item.BatteryBlockItem; import igentuman.nc.item.BatteryItem; import igentuman.nc.item.ProcessorBlockItem; import igentuman.nc.recipes.NcRecipeSerializers; import igentuman.nc.util.annotation.NothingNullByDefault; -import net.minecraft.core.RegistryAccess; +import net.minecraft.core.HolderLookup; import net.minecraft.nbt.CompoundTag; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.world.inventory.CraftingContainer; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.crafting.CraftingBookCategory; +import net.minecraft.world.item.crafting.CraftingInput; import net.minecraft.world.item.crafting.CustomRecipe; import net.minecraft.world.item.crafting.RecipeSerializer; import net.minecraft.world.level.Level; -import net.minecraftforge.event.entity.player.PlayerEvent; -import net.minecraftforge.eventbus.api.SubscribeEvent; +import net.neoforged.neoforge.event.entity.player.PlayerEvent; +import net.neoforged.bus.api.SubscribeEvent; @NothingNullByDefault public class ResetNbtRecipe extends CustomRecipe { - public ResetNbtRecipe(ResourceLocation id, CraftingBookCategory cat) { - super(id, CraftingBookCategory.EQUIPMENT); + public ResetNbtRecipe(CraftingBookCategory cat) { + super(CraftingBookCategory.EQUIPMENT); } @Override - public boolean matches(CraftingContainer inv, Level world) { + public boolean matches(CraftingInput inv, Level world) { ItemStack targetStack = ItemStack.EMPTY; - for (int i = 0; i < inv.getContainerSize(); ++i) { + for (int i = 0; i < inv.size(); ++i) { if(targetStack != ItemStack.EMPTY && !inv.getItem(i).isEmpty()) { return false; //only allow 1 item } @@ -52,9 +52,9 @@ public boolean matches(CraftingContainer inv, Level world) { } @Override - public ItemStack assemble(CraftingContainer inv, RegistryAccess access) { + public ItemStack assemble(CraftingInput inv, HolderLookup.Provider access) { ItemStack targetStack = ItemStack.EMPTY; - for (int i = 0; i < inv.getContainerSize(); ++i) { + for (int i = 0; i < inv.size(); ++i) { if(targetStack != ItemStack.EMPTY && !inv.getItem(i).isEmpty()) { return ItemStack.EMPTY; //only allow 1 item } @@ -76,7 +76,7 @@ public ItemStack assemble(CraftingContainer inv, RegistryAccess access) { } ItemStack result = targetStack.copy(); result.setCount(1); - result.setTag(new CompoundTag()); + NCItemStacks.setTag(result, new CompoundTag()); return result; } @@ -95,4 +95,4 @@ public static void onCrafting(PlayerEvent.ItemCraftedEvent event) { ItemStack result = event.getCrafting(); } -} \ No newline at end of file +} diff --git a/src/main/java/igentuman/nc/recipes/type/TargetChamberRecipe.java b/src/main/java/igentuman/nc/recipes/type/TargetChamberRecipe.java index ee6e3f3ca..398c97f34 100644 --- a/src/main/java/igentuman/nc/recipes/type/TargetChamberRecipe.java +++ b/src/main/java/igentuman/nc/recipes/type/TargetChamberRecipe.java @@ -1,15 +1,13 @@ package igentuman.nc.recipes.type; import igentuman.nc.content.particles.ParticleStack; -import igentuman.nc.recipes.AbstractRecipe; import igentuman.nc.recipes.ingredient.FluidStackIngredient; import igentuman.nc.recipes.ingredient.ItemStackIngredient; import igentuman.nc.recipes.ingredient.creator.IngredientCreatorAccess; import igentuman.nc.util.annotation.NothingNullByDefault; -import net.minecraft.network.FriendlyByteBuf; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.network.RegistryFriendlyByteBuf; import net.minecraft.world.item.ItemStack; -import net.minecraftforge.fluids.FluidStack; +import net.neoforged.neoforge.fluids.FluidStack; import java.util.List; @@ -26,7 +24,7 @@ public abstract class TargetChamberRecipe extends NcRecipe { public ParticleStack[] outputParticles; public TargetChamberRecipe( - ResourceLocation id, + String codeId, ItemStackIngredient[] inputItems, ItemStackIngredient[] outputItems, FluidStackIngredient[] inputFluids, @@ -37,7 +35,7 @@ public TargetChamberRecipe( double crossSection ) { - super(id); + super(codeId); this.inputItems = inputItems; this.outputItems = outputItems; this.inputFluids = inputFluids; @@ -57,7 +55,7 @@ protected FluidStackIngredient getEmptyFluid() } @Override - public void write(FriendlyByteBuf buffer) { + public void write(RegistryFriendlyByteBuf buffer) { buffer.writeInt(inputItems.length); for (ItemStackIngredient input : inputItems) { if(input == null || input.getRepresentations().isEmpty()) { @@ -103,4 +101,4 @@ public void write(FriendlyByteBuf buffer) { buffer.writeLong(maxEnergy); buffer.writeDouble(crossSection); } -} \ No newline at end of file +} diff --git a/src/main/java/igentuman/nc/registry/ParticleTypeDeferredRegister.java b/src/main/java/igentuman/nc/registry/ParticleTypeDeferredRegister.java index e1e74af8a..73acc473a 100644 --- a/src/main/java/igentuman/nc/registry/ParticleTypeDeferredRegister.java +++ b/src/main/java/igentuman/nc/registry/ParticleTypeDeferredRegister.java @@ -3,14 +3,14 @@ import net.minecraft.core.particles.ParticleOptions; import net.minecraft.core.particles.ParticleType; import net.minecraft.core.particles.SimpleParticleType; -import net.minecraftforge.registries.ForgeRegistries; +import net.minecraft.core.registries.Registries; import java.util.function.Supplier; public class ParticleTypeDeferredRegister extends WrappedDeferredRegister> { public ParticleTypeDeferredRegister(String modid) { - super(modid, ForgeRegistries.PARTICLE_TYPES); + super(modid, Registries.PARTICLE_TYPE); } public ParticleTypeRegistryObject registerBasicParticle(String name) { @@ -20,4 +20,4 @@ public ParticleTypeRegistryObject regist public > ParticleTypeRegistryObject register(String name, Supplier sup) { return register(name, sup, ParticleTypeRegistryObject::new); } -} \ No newline at end of file +} diff --git a/src/main/java/igentuman/nc/registry/ParticleTypeRegistryObject.java b/src/main/java/igentuman/nc/registry/ParticleTypeRegistryObject.java index f4dcdd278..78521932e 100644 --- a/src/main/java/igentuman/nc/registry/ParticleTypeRegistryObject.java +++ b/src/main/java/igentuman/nc/registry/ParticleTypeRegistryObject.java @@ -2,11 +2,11 @@ import net.minecraft.core.particles.ParticleOptions; import net.minecraft.core.particles.ParticleType; -import net.minecraftforge.registries.RegistryObject; +import net.neoforged.neoforge.registries.DeferredHolder; public class ParticleTypeRegistryObject> extends WrappedRegistryObject { - public ParticleTypeRegistryObject(RegistryObject registryObject) { + public ParticleTypeRegistryObject(DeferredHolder registryObject) { super(registryObject); } -} \ No newline at end of file +} diff --git a/src/main/java/igentuman/nc/registry/RecipeSerializerDeferredRegister.java b/src/main/java/igentuman/nc/registry/RecipeSerializerDeferredRegister.java index c05c3b93a..83a69f917 100644 --- a/src/main/java/igentuman/nc/registry/RecipeSerializerDeferredRegister.java +++ b/src/main/java/igentuman/nc/registry/RecipeSerializerDeferredRegister.java @@ -1,18 +1,18 @@ package igentuman.nc.registry; +import net.minecraft.core.registries.Registries; import net.minecraft.world.item.crafting.Recipe; import net.minecraft.world.item.crafting.RecipeSerializer; -import net.minecraftforge.registries.ForgeRegistries; import java.util.function.Supplier; public class RecipeSerializerDeferredRegister extends WrappedDeferredRegister> { public RecipeSerializerDeferredRegister(String modid) { - super(modid, ForgeRegistries.RECIPE_SERIALIZERS); + super(modid, Registries.RECIPE_SERIALIZER); } public > RecipeSerializerRegistryObject register(String name, Supplier> sup) { return register(name, sup, RecipeSerializerRegistryObject::new); } -} \ No newline at end of file +} diff --git a/src/main/java/igentuman/nc/registry/RecipeSerializerRegistryObject.java b/src/main/java/igentuman/nc/registry/RecipeSerializerRegistryObject.java index cd4f7cb0e..e11a7002c 100644 --- a/src/main/java/igentuman/nc/registry/RecipeSerializerRegistryObject.java +++ b/src/main/java/igentuman/nc/registry/RecipeSerializerRegistryObject.java @@ -2,11 +2,11 @@ import net.minecraft.world.item.crafting.Recipe; import net.minecraft.world.item.crafting.RecipeSerializer; -import net.minecraftforge.registries.RegistryObject; +import net.neoforged.neoforge.registries.DeferredHolder; public class RecipeSerializerRegistryObject> extends WrappedRegistryObject> { - public RecipeSerializerRegistryObject(RegistryObject> registryObject) { + public RecipeSerializerRegistryObject(DeferredHolder registryObject) { super(registryObject); } -} \ No newline at end of file +} diff --git a/src/main/java/igentuman/nc/registry/RecipeTypeDeferredRegister.java b/src/main/java/igentuman/nc/registry/RecipeTypeDeferredRegister.java index b06a68e53..11cbbe0b2 100644 --- a/src/main/java/igentuman/nc/registry/RecipeTypeDeferredRegister.java +++ b/src/main/java/igentuman/nc/registry/RecipeTypeDeferredRegister.java @@ -3,8 +3,8 @@ import igentuman.nc.recipes.INcRecipeTypeProvider; import igentuman.nc.recipes.NcRecipeType; import igentuman.nc.recipes.type.NcRecipe; +import net.minecraft.core.registries.Registries; import net.minecraft.world.item.crafting.RecipeType; -import net.minecraftforge.registries.ForgeRegistries; import java.util.ArrayList; import java.util.List; @@ -15,7 +15,7 @@ public class RecipeTypeDeferredRegister extends WrappedDeferredRegister> recipeTypes = new ArrayList<>(); public RecipeTypeDeferredRegister(String modid) { - super(modid, ForgeRegistries.RECIPE_TYPES); + super(modid, Registries.RECIPE_TYPE); } public RecipeTypeRegistryObject register(String name, Supplier> sup) { @@ -23,5 +23,4 @@ public RecipeTypeRegistryObject register(Strin recipeTypes.add(registeredRecipeType); return registeredRecipeType; } - -} \ No newline at end of file +} diff --git a/src/main/java/igentuman/nc/registry/RecipeTypeRegistryObject.java b/src/main/java/igentuman/nc/registry/RecipeTypeRegistryObject.java index efd51be35..4b82c3c49 100644 --- a/src/main/java/igentuman/nc/registry/RecipeTypeRegistryObject.java +++ b/src/main/java/igentuman/nc/registry/RecipeTypeRegistryObject.java @@ -1,15 +1,14 @@ package igentuman.nc.registry; -import igentuman.nc.recipes.AbstractRecipe; import igentuman.nc.recipes.INcRecipeTypeProvider; import igentuman.nc.recipes.NcRecipeType; import igentuman.nc.recipes.type.NcRecipe; -import net.minecraftforge.registries.RegistryObject; +import net.neoforged.neoforge.registries.DeferredHolder; public class RecipeTypeRegistryObject extends WrappedRegistryObject> implements INcRecipeTypeProvider { - public RecipeTypeRegistryObject(RegistryObject> registryObject) { + public RecipeTypeRegistryObject(DeferredHolder registryObject) { super(registryObject); } @@ -17,4 +16,4 @@ public RecipeTypeRegistryObject(RegistryObject> registryObj public NcRecipeType getRecipeType() { return get(); } -} \ No newline at end of file +} diff --git a/src/main/java/igentuman/nc/registry/SoundEventRegistryObject.java b/src/main/java/igentuman/nc/registry/SoundEventRegistryObject.java index a2b343084..67c9e0496 100644 --- a/src/main/java/igentuman/nc/registry/SoundEventRegistryObject.java +++ b/src/main/java/igentuman/nc/registry/SoundEventRegistryObject.java @@ -3,15 +3,15 @@ import igentuman.nc.util.annotation.NothingNullByDefault; import net.minecraft.Util; import net.minecraft.sounds.SoundEvent; -import net.minecraftforge.registries.RegistryObject; +import net.neoforged.neoforge.registries.DeferredHolder; + @NothingNullByDefault public class SoundEventRegistryObject extends WrappedRegistryObject { private final String translationKey; - public SoundEventRegistryObject(RegistryObject registryObject) { + public SoundEventRegistryObject(DeferredHolder registryObject) { super(registryObject); - translationKey = Util.makeDescriptionId("sound_event", this.registryObject.getId()); + translationKey = Util.makeDescriptionId("sound_event", registryObject.getId()); } - -} \ No newline at end of file +} diff --git a/src/main/java/igentuman/nc/registry/WrappedDeferredRegister.java b/src/main/java/igentuman/nc/registry/WrappedDeferredRegister.java index a1e8d14f3..80a1a4f4c 100644 --- a/src/main/java/igentuman/nc/registry/WrappedDeferredRegister.java +++ b/src/main/java/igentuman/nc/registry/WrappedDeferredRegister.java @@ -2,15 +2,12 @@ import net.minecraft.core.Registry; import net.minecraft.resources.ResourceKey; -import net.minecraftforge.eventbus.api.IEventBus; -import net.minecraftforge.registries.DeferredRegister; -import net.minecraftforge.registries.IForgeRegistry; -import net.minecraftforge.registries.RegistryBuilder; -import net.minecraftforge.registries.RegistryObject; +import net.neoforged.bus.api.IEventBus; +import net.neoforged.neoforge.registries.DeferredRegister; +import net.neoforged.neoforge.registries.DeferredHolder; import java.util.function.Function; import java.util.function.Supplier; -import java.util.function.UnaryOperator; public class WrappedDeferredRegister { @@ -20,37 +17,17 @@ protected WrappedDeferredRegister(DeferredRegister internal) { this.internal = internal; } - protected WrappedDeferredRegister(String modid, IForgeRegistry registry) { - this(DeferredRegister.create(registry, modid)); - } - - /** - * @apiNote For use with vanilla or custom registries - */ protected WrappedDeferredRegister(String modid, ResourceKey> registryName) { this(DeferredRegister.create(registryName, modid)); } - protected > W register(String name, Supplier sup, Function, W> objectWrapper) { - return objectWrapper.apply(internal.register(name, sup)); + @SuppressWarnings("unchecked") + protected > W register(String name, Supplier sup, Function, W> objectWrapper) { + DeferredHolder holder = internal.register(name, sup); + return objectWrapper.apply(holder); } public void register(IEventBus bus) { internal.register(bus); } - - /** - * Only call this from nuclearcraft and for custom registries - */ - public void createAndRegister(IEventBus bus) { - createAndRegister(bus, UnaryOperator.identity()); - } - - /** - * Only call this from nuclearcraft and for custom registries - */ - public void createAndRegister(IEventBus bus, UnaryOperator> builder) { - internal.makeRegistry(() -> builder.apply(new RegistryBuilder<>())); - register(bus); - } -} \ No newline at end of file +} diff --git a/src/main/java/igentuman/nc/registry/WrappedRegistryObject.java b/src/main/java/igentuman/nc/registry/WrappedRegistryObject.java index ffa9585e3..d29a5aa4a 100644 --- a/src/main/java/igentuman/nc/registry/WrappedRegistryObject.java +++ b/src/main/java/igentuman/nc/registry/WrappedRegistryObject.java @@ -1,17 +1,21 @@ package igentuman.nc.registry; import igentuman.nc.util.annotation.NothingNullByDefault; -import net.minecraftforge.registries.RegistryObject; +import net.minecraft.resources.ResourceLocation; +import net.neoforged.neoforge.registries.DeferredHolder; import java.util.function.Supplier; @NothingNullByDefault public class WrappedRegistryObject implements Supplier, INamedEntry { - protected RegistryObject registryObject; + protected final Supplier registryObject; + private final ResourceLocation id; - protected WrappedRegistryObject(RegistryObject registryObject) { - this.registryObject = registryObject; + @SuppressWarnings("unchecked") + protected WrappedRegistryObject(DeferredHolder registryObject) { + this.registryObject = () -> (T) registryObject.get(); + this.id = registryObject.getId(); } @Override @@ -21,6 +25,6 @@ public T get() { @Override public String getInternalRegistryName() { - return registryObject.getId().getPath(); + return id.getPath(); } -} \ No newline at end of file +} diff --git a/src/main/java/igentuman/nc/setup/ClientSetup.java b/src/main/java/igentuman/nc/setup/ClientSetup.java index a66c9373f..bcadd0b08 100644 --- a/src/main/java/igentuman/nc/setup/ClientSetup.java +++ b/src/main/java/igentuman/nc/setup/ClientSetup.java @@ -31,9 +31,6 @@ import igentuman.nc.radiation.client.RadiationOverlay; import igentuman.nc.radiation.client.WhiteNoiseOverlay; import igentuman.nc.setup.registration.*; -import net.minecraft.client.gui.screens.MenuScreens; -import net.minecraft.client.renderer.ItemBlockRenderTypes; -import net.minecraft.client.renderer.RenderType; import net.minecraft.client.renderer.blockentity.BlockEntityRenderers; import net.minecraft.client.renderer.entity.EntityRenderers; import net.minecraft.client.renderer.item.ItemProperties; @@ -42,16 +39,14 @@ import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.ItemLike; -import net.minecraft.world.level.material.Fluid; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.client.event.*; -import net.minecraftforge.common.MinecraftForge; -import net.minecraftforge.eventbus.api.IEventBus; -import net.minecraftforge.eventbus.api.SubscribeEvent; -import net.minecraftforge.fml.common.Mod; -import net.minecraftforge.fml.event.lifecycle.FMLClientSetupEvent; -import net.minecraftforge.registries.RegistryObject; - +import net.neoforged.api.distmarker.Dist; +import net.neoforged.neoforge.client.event.*; +import net.neoforged.neoforge.common.NeoForge; +import net.neoforged.bus.api.IEventBus; +import net.neoforged.bus.api.SubscribeEvent; +import net.neoforged.fml.common.EventBusSubscriber; +import net.neoforged.fml.common.Mod; +import net.neoforged.fml.event.lifecycle.FMLClientSetupEvent; import static igentuman.nc.NuclearCraft.MODID; import static igentuman.nc.NuclearCraft.rl; import static igentuman.nc.multiblock.accelerator.AcceleratorRegistration.*; @@ -69,15 +64,14 @@ import static igentuman.nc.setup.registration.NCItems.GEIGER_COUNTER; import static igentuman.nc.setup.registration.NCStorageBlocks.STORAGE_CONTAINER; import static igentuman.nc.setup.registration.NCStorageBlocks.STORAGE_ITEM_CONTAINER; -import static igentuman.nc.setup.registration.Registries.FLUIDS; -import static net.minecraftforge.eventbus.api.EventPriority.LOWEST; +import static net.neoforged.bus.api.EventPriority.LOWEST; -@Mod.EventBusSubscriber(modid = MODID, value = Dist.CLIENT, bus = Mod.EventBusSubscriber.Bus.MOD) +@EventBusSubscriber(modid = MODID, value = Dist.CLIENT, bus = EventBusSubscriber.Bus.MOD) public class ClientSetup { public static void init(FMLClientSetupEvent event) { event.enqueueWork(() -> { - MinecraftForge.EVENT_BUS.addListener(LOWEST, SoundHandler::onTilePlaySound); + NeoForge.EVENT_BUS.addListener(LOWEST, SoundHandler::onTilePlaySound); DistortShader.register(); BlockEntityRenderers.register(FUSION_BE.get("fusion_core").get(), FusionCoreRenderer::new); BlockEntityRenderers.register(EXPL_BE.get(), EXPLRenderer::new); @@ -85,38 +79,11 @@ public static void init(FMLClientSetupEvent event) { BlockEntityRenderers.register(KUGELBLITZ_BE.get("black_hole").get(), BlackholeRenderer::new); EntityRenderers.register(Entities.FERAL_GHOUL.get(), FeralGhoulRenderer::new); EntityRenderers.register(Entities.WASTELAND_PROJECTILE.get(), WastelandProjectileRenderer::new); - MenuScreens.register(STORAGE_CONTAINER.get(), StorageContainerScreen::new); - MenuScreens.register(STORAGE_ITEM_CONTAINER.get(), StorageContainerItemScreen::new); - MenuScreens.register(FUSION_CORE_CONTAINER.get(), FusionCoreScreen::new); - MenuScreens.register(EXPL_CONTAINER.get(), EXPLScreen::new); - MenuScreens.register(TURBINE_CONTROLLER_CONTAINER.get(), TurbineControllerScreen::new); - MenuScreens.register(TURBINE_PORT_CONTAINER.get(), TurbinePortScreen::new); - MenuScreens.register(FISSION_CONTROLLER_CONTAINER.get(), FissionControllerScreen::new); - MenuScreens.register(FISSION_PORT_CONTAINER.get(), FissionPortScreen::new); - MenuScreens.register(MSR_CONTROLLER_CONTAINER.get(), MSRControllerScreen::new); - MenuScreens.register(CHAMBER_PORT_CONTAINER.get(), ChamberPortScreen::new); - MenuScreens.register(CHAMBER_TERMINAL_CONTAINER.get(), ChamberTerminalScreen::new); - MenuScreens.register(REDSTONE_DIMMER_CONTAINER.get(), RedstoneDimmerScreen::new); - MenuScreens.register(MULTIBLOCK_BUILDER_CONTAINER.get(), MultiblockBuilderScreen::new); - MenuScreens.register(LINEAR_ACCELERATOR_CONTROLLER_CONTAINER.get(), LinearAcceleratorControllerScreen::new); - MenuScreens.register(THOROIDAL_ACCELERATOR_CONTROLLER_CONTAINER.get(), RingAcceleratorControllerScreen::new); - MenuScreens.register(ACCELERATOR_PORT_CONTAINER.get(), AcceleratorPortScreen::new); - MenuScreens.register(ACCELERATOR_ION_SOURCE_PORT_CONTAINER.get(), AcceleratorIonSourcePortScreen::new); - MenuScreens.register(TARGET_CHAMBER_CONTROLLER_CONTAINER.get(), TargetChamberControllerScreen::new); - MenuScreens.register(TARGET_CHAMBER_PORT_CONTAINER.get(), TargetChamberPortScreen::new); - - for(String name: NCProcessors.PROCESSORS_CONTAINERS.keySet()) { - MenuScreens.register(NCProcessors.PROCESSORS_CONTAINERS.get(name).get(), Processors.all().get(name).getScreenConstructor()); - } - + // Generate runtime models for custom fuels RuntimeFuelModelGenerator.generateResources(); }); - for(RegistryObject f : FLUIDS.getEntries()) - if(NCFluids.NC_GASES.containsKey(f.getId().getPath())) - ItemBlockRenderTypes.setRenderLayer(f.get(), RenderType.translucent()); - /* event.enqueueWork(() -> { setPropertyOverride(GEIGER_COUNTER.get(), rl("radiation"), (stack, world, entity, seed) -> { if (entity instanceof Player) { @@ -129,10 +96,36 @@ public static void init(FMLClientSetupEvent event) { });*/ } + @SubscribeEvent + public static void registerMenuScreens(RegisterMenuScreensEvent event) { + event.register(STORAGE_CONTAINER.get(), StorageContainerScreen::new); + event.register(STORAGE_ITEM_CONTAINER.get(), StorageContainerItemScreen::new); + event.register(FUSION_CORE_CONTAINER.get(), FusionCoreScreen::new); + event.register(EXPL_CONTAINER.get(), EXPLScreen::new); + event.register(TURBINE_CONTROLLER_CONTAINER.get(), TurbineControllerScreen::new); + event.register(TURBINE_PORT_CONTAINER.get(), TurbinePortScreen::new); + event.register(FISSION_CONTROLLER_CONTAINER.get(), FissionControllerScreen::new); + event.register(FISSION_PORT_CONTAINER.get(), FissionPortScreen::new); + event.register(MSR_CONTROLLER_CONTAINER.get(), MSRControllerScreen::new); + event.register(CHAMBER_PORT_CONTAINER.get(), ChamberPortScreen::new); + event.register(CHAMBER_TERMINAL_CONTAINER.get(), ChamberTerminalScreen::new); + event.register(REDSTONE_DIMMER_CONTAINER.get(), RedstoneDimmerScreen::new); + event.register(MULTIBLOCK_BUILDER_CONTAINER.get(), MultiblockBuilderScreen::new); + event.register(LINEAR_ACCELERATOR_CONTROLLER_CONTAINER.get(), LinearAcceleratorControllerScreen::new); + event.register(THOROIDAL_ACCELERATOR_CONTROLLER_CONTAINER.get(), RingAcceleratorControllerScreen::new); + event.register(ACCELERATOR_PORT_CONTAINER.get(), AcceleratorPortScreen::new); + event.register(ACCELERATOR_ION_SOURCE_PORT_CONTAINER.get(), AcceleratorIonSourcePortScreen::new); + event.register(TARGET_CHAMBER_CONTROLLER_CONTAINER.get(), TargetChamberControllerScreen::new); + event.register(TARGET_CHAMBER_PORT_CONTAINER.get(), TargetChamberPortScreen::new); + + for(String name: NCProcessors.PROCESSORS_CONTAINERS.keySet()) { + event.register(NCProcessors.PROCESSORS_CONTAINERS.get(name).get(), Processors.all().get(name).getScreenConstructor()); + } + } @SubscribeEvent public static void onModelRegistryEvent(ModelEvent.RegisterGeometryLoaders event) { - event.register(BatteryBlockLoader.BATTERY_LOADER.getPath(), new BatteryBlockLoader()); + event.register(BatteryBlockLoader.BATTERY_LOADER, new BatteryBlockLoader()); } @@ -141,9 +134,9 @@ public static void setPropertyOverride(ItemLike itemProvider, ResourceLocation o } @SubscribeEvent - public static void registerGuiOverlays(RegisterGuiOverlaysEvent event) { - event.registerAboveAll("radiation_bar", RadiationOverlay.RADIATION_BAR); - event.registerAboveAll("white_noise", WhiteNoiseOverlay.WHITE_NOISE); + public static void registerGuiOverlays(RegisterGuiLayersEvent event) { + event.registerAboveAll(rl("radiation_bar"), RadiationOverlay.RADIATION_BAR); + event.registerAboveAll(rl("white_noise"), WhiteNoiseOverlay.WHITE_NOISE); } @SubscribeEvent @@ -153,12 +146,11 @@ public static void registerParticleFactories(RegisterParticleProvidersEvent even } public static void setup() { - IEventBus bus = MinecraftForge.EVENT_BUS; + IEventBus bus = NeoForge.EVENT_BUS; } public static void registerEventHandlers(FMLClientSetupEvent event) { InputEvents.register(event); - ColorHandler.register(event); ServerLoad.register(event); RecipesUpdated.register(event); TagsUpdated.register(event); @@ -173,7 +165,7 @@ public static void registerItemDecorations(RegisterItemDecorationsEvent event) { event.register(NCEnergyBlocks.BLOCK_ITEMS.get(name).get(), BatteryBlockItemDecorator.INSTANCE); } } - + @SubscribeEvent public static void registerLayerDefinitions(EntityRenderersEvent.RegisterLayerDefinitions event) { event.registerLayerDefinition(ModelFeralGhoul.LAYER_LOCATION, ModelFeralGhoul::createBodyLayer); diff --git a/src/main/java/igentuman/nc/setup/ModSetup.java b/src/main/java/igentuman/nc/setup/ModSetup.java index 70620eb42..1c0575b09 100644 --- a/src/main/java/igentuman/nc/setup/ModSetup.java +++ b/src/main/java/igentuman/nc/setup/ModSetup.java @@ -5,47 +5,32 @@ import igentuman.nc.handler.event.server.PlayerEvents; import igentuman.nc.radiation.data.RadiationEvents; import igentuman.nc.setup.registration.GameEvents; -import igentuman.nc.util.FluidTagEmptyCondition; -import igentuman.nc.util.GTCEUCompatibilityCondition; -import igentuman.nc.util.WastelandEnabledCondition; -import igentuman.nc.util.insitu_leaching.WorldVeinsProvider; import igentuman.nc.world.structure.ScientistHouseStructure; -import net.minecraft.world.entity.Entity; -import net.minecraft.world.level.Level; -import net.minecraftforge.common.MinecraftForge; -import net.minecraftforge.common.crafting.CraftingHelper; -import net.minecraftforge.eventbus.api.IEventBus; -import net.minecraftforge.fml.common.Mod; -import net.minecraftforge.fml.event.lifecycle.FMLCommonSetupEvent; +import net.neoforged.neoforge.common.NeoForge; +import net.neoforged.bus.api.IEventBus; +import net.neoforged.fml.common.EventBusSubscriber; +import net.neoforged.fml.common.Mod; +import net.neoforged.fml.event.lifecycle.FMLCommonSetupEvent; import static igentuman.nc.NuclearCraft.MODID; -import static igentuman.nc.setup.registration.Entities.registerSpawnPlacements; -@Mod.EventBusSubscriber(modid = MODID, bus = Mod.EventBusSubscriber.Bus.MOD) public class ModSetup { public static void setup() { - IEventBus bus = MinecraftForge.EVENT_BUS; + IEventBus bus = NeoForge.EVENT_BUS; bus.addListener(RadiationEvents::onPlayerCloned); Particles.init(); - bus.addGenericListener(Entity.class, RadiationEvents::attachPlayerRadiation); - bus.addGenericListener(Level.class, RadiationEvents::attachWorldRadiation); - bus.addGenericListener(Level.class, WorldVeinsProvider::attachVeinCapability); - bus.register(NuclearCraft.worldTickHandler); - bus.register(new PlayerEvents()); - bus.register(new RadiationEvents()); - bus.register(new ScientistHouseStructure()); + // AttachCapabilitiesEvent handlers removed -- PlayerRadiation uses Data Attachments, + // WorldRadiation uses RadiationManager (SavedData), WorldVeins uses WorldVeinsManager (SavedData) + // WorldEvents, PlayerEvents, ScientistHouseStructure registered via @EventBusSubscriber (static methods) + bus.register(new RadiationEvents()); // RadiationEvents has non-static handlers, needs instance registration } public static void init(FMLCommonSetupEvent event) { event.enqueueWork(() -> { - CraftingHelper.register(new FluidTagEmptyCondition.Serializer()); - CraftingHelper.register(new WastelandEnabledCondition.Serializer()); - CraftingHelper.register(new GTCEUCompatibilityCondition.Serializer()); - registerSpawnPlacements(); + // Condition serializers now registered via DeferredRegister in Registries.init() GameEvents.commonSetup(); }); - NuclearCraft.packetHandler().initialize(); } diff --git a/src/main/java/igentuman/nc/setup/Registration.java b/src/main/java/igentuman/nc/setup/Registration.java index d4869df18..f5be2c47f 100644 --- a/src/main/java/igentuman/nc/setup/Registration.java +++ b/src/main/java/igentuman/nc/setup/Registration.java @@ -18,34 +18,33 @@ import net.minecraft.world.effect.MobEffect; import net.minecraft.world.effect.MobEffectCategory; import net.minecraft.world.inventory.MenuType; -import net.minecraftforge.common.extensions.IForgeMenuType; -import net.minecraftforge.eventbus.api.SubscribeEvent; -import net.minecraftforge.fml.event.lifecycle.FMLConstructModEvent; -import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext; -import net.minecraftforge.registries.RegistryObject; +import net.neoforged.neoforge.common.extensions.IMenuTypeExtension; +import net.neoforged.bus.api.IEventBus; +import net.neoforged.bus.api.SubscribeEvent; +import net.neoforged.fml.event.lifecycle.FMLConstructModEvent; +import net.neoforged.neoforge.registries.DeferredHolder; import static igentuman.nc.setup.registration.Registries.CONTAINERS; import static igentuman.nc.setup.registration.Registries.EFFECTS; public class Registration { - public static final RegistryObject RADIATION_RESISTANCE = EFFECTS.register("radiation_resistance", () -> new RadiationResistance(MobEffectCategory.BENEFICIAL, 0xd4ffFF)); - public static final RegistryObject RADIATION_DECAY = EFFECTS.register("radiation_decay", () -> new RadiationDecay(MobEffectCategory.BENEFICIAL, 0xd4ffFF)); - public static final RegistryObject> MULTIBLOCK_REPORT_CONTAINER = CONTAINERS.register("multilblock_report_container", - () -> IForgeMenuType.create((windowId, inv, data) -> new MultiblockControllerContainer(windowId, data.readBlockPos(), inv)) + public static final DeferredHolder RADIATION_RESISTANCE = EFFECTS.register("radiation_resistance", () -> new RadiationResistance(MobEffectCategory.BENEFICIAL, 0xd4ffFF)); + public static final DeferredHolder RADIATION_DECAY = EFFECTS.register("radiation_decay", () -> new RadiationDecay(MobEffectCategory.BENEFICIAL, 0xd4ffFF)); + public static final DeferredHolder, MenuType> MULTIBLOCK_REPORT_CONTAINER = CONTAINERS.register("multilblock_report_container", + () -> IMenuTypeExtension.create((windowId, inv, data) -> new MultiblockControllerContainer(windowId, data.readBlockPos(), inv)) ); @SubscribeEvent public static void onConstruction(FMLConstructModEvent event) { event.enqueueWork(() -> { - ParticleSources.init(); - FissionFuel.registerRuntimeFuels();; + FissionFuel.registerRuntimeFuels(); NCFluids.init(); }); } - public static void init(FMLJavaModLoadingContext context) { - Registries.init(context); + public static void init(IEventBus modbus) { + Registries.init(modbus); NCStorageBlocks.init(); NCBlocks.init(); ParticleSources.init(); @@ -62,9 +61,9 @@ public static void init(FMLJavaModLoadingContext context) { NCEnergyBlocks.init(); NCItems.init(); NCProcessors.init(); - Villager.init(context); + Villager.init(modbus); NCSounds.init(); - GameEvents.init(context); + GameEvents.init(modbus); NcRecipeType.init(); NcParticleTypes.init(); WorldGeneration.init(); diff --git a/src/main/java/igentuman/nc/setup/registration/CreativeTabs.java b/src/main/java/igentuman/nc/setup/registration/CreativeTabs.java index 5682460c6..ee43e0efc 100644 --- a/src/main/java/igentuman/nc/setup/registration/CreativeTabs.java +++ b/src/main/java/igentuman/nc/setup/registration/CreativeTabs.java @@ -11,7 +11,7 @@ import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.block.Block; -import net.minecraftforge.registries.RegistryObject; +import net.neoforged.neoforge.registries.DeferredHolder; import java.util.*; @@ -36,21 +36,21 @@ public class CreativeTabs { - public static final RegistryObject FUSION_REACTOR_TAB = CREATIVE_TABS.register("fusion_reactor", + public static final DeferredHolder FUSION_REACTOR_TAB = CREATIVE_TABS.register("fusion_reactor", () -> CreativeModeTab.builder() .displayItems((displayParams, output) -> FUSION_BLOCKS.values().forEach(itemlike -> output.accept(new ItemStack(itemlike.get())))) .icon(() -> new ItemStack(FUSION_BLOCKS.get("fusion_core").get())) .title(__("itemGroup.nuclearcraft_fusion_reactor")) .build()); - public static final RegistryObject KUGELBLITZ_TAB = CREATIVE_TABS.register("kugelblitz", + public static final DeferredHolder KUGELBLITZ_TAB = CREATIVE_TABS.register("kugelblitz", () -> CreativeModeTab.builder() .displayItems((displayParams, output) -> KUGELBLITZ_BLOCKS.values().forEach(itemlike -> output.accept(new ItemStack(itemlike.get())))) .icon(() -> new ItemStack(KUGELBLITZ_BLOCKS.get("chamber_terminal").get())) .title(__("itemGroup.nuclearcraft_kugelblitz")) .build()); - public static final RegistryObject ACCELERATOR_TAB = CREATIVE_TABS.register("accelerator", + public static final DeferredHolder ACCELERATOR_TAB = CREATIVE_TABS.register("accelerator", () -> CreativeModeTab.builder() .displayItems((displayParams, output) -> acceleratorStuff().forEach(output::accept)) .icon(() -> new ItemStack(ACCELERATOR_BLOCKS.get("linear_accelerator_controller").get())) @@ -58,66 +58,66 @@ public class CreativeTabs { .build()); - public static final RegistryObject NC_BLOCKS_TAB = CREATIVE_TABS.register("nc_blocks", + public static final DeferredHolder NC_BLOCKS_TAB = CREATIVE_TABS.register("nc_blocks", () -> CreativeModeTab.builder() - .icon(() -> new ItemStack(getSingleBlockByTagKey("forge:storage_blocks/uranium"))) + .icon(() -> new ItemStack(getSingleBlockByTagKey("c:storage_blocks/uranium"))) .displayItems((displayParams, output) -> getBlocks().forEach(output::accept)) .title(__("itemGroup.nuclearcraft_blocks")) .build()); - public static final RegistryObject NC_ITEMS_TAB = CREATIVE_TABS.register("nc_items", + public static final DeferredHolder NC_ITEMS_TAB = CREATIVE_TABS.register("nc_items", () -> CreativeModeTab.builder() - .icon(() -> new ItemStack(getItemsByTagKey("forge:ingots/uranium").get(0))) + .icon(() -> new ItemStack(getItemsByTagKey("c:ingots/uranium").get(0))) .displayItems((displayParams, output) -> getItems().forEach(output::accept)) .title(__("itemGroup.nuclearcraft_items")) .build() ); - public static final RegistryObject NC_PARTS_TAB = CREATIVE_TABS.register("nc_parts", + public static final DeferredHolder NC_PARTS_TAB = CREATIVE_TABS.register("nc_parts", () -> CreativeModeTab.builder() .icon(() -> new ItemStack(NC_PARTS.get("actuator").get())) .displayItems((displayParams, output) -> NC_PARTS.values().forEach(itemlike -> output.accept(new ItemStack(itemlike.get())))) .title(__("itemGroup.nuclearcraft_items")) .build()); - public static final RegistryObject FISSION_REACTOR_TAB = CREATIVE_TABS.register("fission_reactor", + public static final DeferredHolder FISSION_REACTOR_TAB = CREATIVE_TABS.register("fission_reactor", () -> CreativeModeTab.builder() .icon(() -> new ItemStack(FISSION_BLOCKS.get("fission_reactor_controller").get())) .displayItems((displayParams, output) -> FISSION_BLOCKS.values().forEach(itemlike -> output.accept(new ItemStack(itemlike.get())))) .title(__("itemGroup.nuclearcraft_fission_reactor")) .build()); - public static final RegistryObject TURBINE_TAB = CREATIVE_TABS.register("turbine", + public static final DeferredHolder TURBINE_TAB = CREATIVE_TABS.register("turbine", () -> CreativeModeTab.builder() .icon(() -> new ItemStack(TURBINE_BLOCKS.get("turbine_controller").get())) .displayItems((displayParams, output) -> TURBINE_BLOCKS.values().forEach(itemlike -> output.accept(new ItemStack(itemlike.get())))) .title(__("itemGroup.nuclearcraft_turbine")) .build()); - public static final RegistryObject NC_FLUIDS = CREATIVE_TABS.register("nc_fluids", + public static final DeferredHolder NC_FLUIDS = CREATIVE_TABS.register("nc_fluids", () -> CreativeModeTab.builder() .icon(() -> new ItemStack(ALL_BUCKETS.get(0).get())) .displayItems((displayParams, output) -> ALL_BUCKETS.forEach(itemlike -> output.accept(new ItemStack(itemlike.get())))) .title(__("itemGroup.nuclearcraft_fluids")) .build()); - private static List itemStacks(Collection> map) { + private static List itemStacks(Collection> map) { List stacks = new ArrayList<>(); - for(RegistryObject item: map) { + for(DeferredHolder item: map) { stacks.add(new ItemStack(item.get())); } return stacks; } - private static List blockStacks(Collection> map) { + private static List blockStacks(Collection> map) { List stacks = new ArrayList<>(); - for(RegistryObject item: map) { + for(DeferredHolder item: map) { stacks.add(new ItemStack(item.get())); } return stacks; } - private static List onlyEnabledItems(String type, HashMap> items) + private static List onlyEnabledItems(String type, HashMap> items) { List itemsList = new ArrayList<>(); Set enabled = Materials.registeredOf(type); @@ -129,7 +129,7 @@ private static List onlyEnabledItems(String type, HashMap onlyEnabledBlocks(HashMap> block) + private static List onlyEnabledBlocks(HashMap> block) { List itemsList = new ArrayList<>(); Set enabled = Materials.registeredOf("block"); @@ -185,13 +185,13 @@ private static List getItems() private static List acceleratorStuff() { List items = new ArrayList<>(); - for(RegistryObject block: ACCELERATOR_BLOCKS.values()) { + for(DeferredHolder block: ACCELERATOR_BLOCKS.values()) { items.add(new ItemStack(block.get())); } - for(RegistryObject block: TARGET_CHAMBER_BLOCKS.values()) { + for(DeferredHolder block: TARGET_CHAMBER_BLOCKS.values()) { items.add(new ItemStack(block.get())); } - for(RegistryObject item: ION_SOURCES.values()) { + for(DeferredHolder item: ION_SOURCES.values()) { items.add(new ItemStack(item.get())); } return items; @@ -213,7 +213,7 @@ private static List getBlocks() items.add(new ItemStack(EXPL_BLOCK.get())); items.addAll(blockStacks(NC_ELECTROMAGNETS.values())); items.addAll(blockStacks(NC_RF_AMPLIFIERS.values())); - for(RegistryObject block: ENERGY_BLOCKS.values()) { + for(DeferredHolder block: ENERGY_BLOCKS.values()) { if(block.get() instanceof SolarPanelBlock solarPanel) { if(solarPanel.registered()) { items.add(new ItemStack(solarPanel)); @@ -241,7 +241,7 @@ private static List getBlocks() } } items.addAll(onlyEnabledBlocks(NC_MATERIAL_BLOCKS)); - for(RegistryObject block: STORAGE_BLOCKS.values()) { + for(DeferredHolder block: STORAGE_BLOCKS.values()) { if(block.get() instanceof ContainerBlock containerBlock) { if(containerBlock.registered()) { items.add(new ItemStack(containerBlock)); diff --git a/src/main/java/igentuman/nc/setup/registration/Entities.java b/src/main/java/igentuman/nc/setup/registration/Entities.java index 9492df69b..1e0fe96ab 100644 --- a/src/main/java/igentuman/nc/setup/registration/Entities.java +++ b/src/main/java/igentuman/nc/setup/registration/Entities.java @@ -5,37 +5,37 @@ import igentuman.nc.entity.EntityWastelandProjectile; import net.minecraft.world.entity.EntityType; import net.minecraft.world.entity.MobCategory; -import net.minecraft.world.entity.SpawnPlacements; +import igentuman.api.platform.NCSpawning; import net.minecraft.world.level.levelgen.Heightmap; -import net.minecraftforge.event.entity.EntityAttributeCreationEvent; -import net.minecraftforge.eventbus.api.SubscribeEvent; -import net.minecraftforge.fml.common.Mod; -import net.minecraftforge.registries.RegistryObject; +import net.neoforged.neoforge.event.entity.EntityAttributeCreationEvent; +import net.neoforged.neoforge.event.entity.RegisterSpawnPlacementsEvent; +import net.neoforged.bus.api.SubscribeEvent; +import net.neoforged.fml.common.EventBusSubscriber; +import net.neoforged.fml.common.Mod; +import igentuman.api.platform.NCRegistration; +import net.neoforged.neoforge.registries.DeferredHolder; import static igentuman.nc.NuclearCraft.MODID; -@Mod.EventBusSubscriber(modid = MODID, bus = Mod.EventBusSubscriber.Bus.MOD) +@EventBusSubscriber(modid = MODID, bus = EventBusSubscriber.Bus.MOD) public class Entities { - @SuppressWarnings("unchecked") - public static final RegistryObject> FERAL_GHOUL = - Registries.ENTITIES.register("feral_ghoul", + public static final DeferredHolder, EntityType> FERAL_GHOUL = + NCRegistration.registerEntity(Registries.ENTITIES, "feral_ghoul", () -> EntityType.Builder.of(EntityFeralGhoul::new, MobCategory.MONSTER) .sized(0.6f, 1.95f) .build("feral_ghoul")); - - @SuppressWarnings("unchecked") - public static final RegistryObject> FERAL_GHOUL_BOSS = - Registries.ENTITIES.register("feral_ghoul_boss", + + public static final DeferredHolder, EntityType> FERAL_GHOUL_BOSS = + NCRegistration.registerEntity(Registries.ENTITIES, "feral_ghoul_boss", () -> EntityType.Builder.of(EntityWastelandBoss::new, MobCategory.MONSTER) .sized(1.3f, 2.9f) // 50% larger than regular ghoul .fireImmune() // Boss is immune to fire damage .build("feral_ghoul_boss")); // Wasteland projectile entity - @SuppressWarnings("unchecked") - public static final RegistryObject> WASTELAND_PROJECTILE = - Registries.ENTITIES.register("wasteland_projectile", + public static final DeferredHolder, EntityType> WASTELAND_PROJECTILE = + NCRegistration.registerEntity(Registries.ENTITIES, "wasteland_projectile", () -> EntityType.Builder.of((type, level) -> new EntityWastelandProjectile(type, level), MobCategory.MISC) .sized(0.5F, 0.5F) @@ -43,14 +43,15 @@ public class Entities { .updateInterval(5) .build("wasteland_projectile")); - public static void registerSpawnPlacements() { - SpawnPlacements.register(FERAL_GHOUL.get(), - SpawnPlacements.Type.NO_RESTRICTIONS, + @SubscribeEvent + public static void registerSpawnPlacements(RegisterSpawnPlacementsEvent event) { + NCSpawning.register(event, FERAL_GHOUL.get(), + NCSpawning.NO_RESTRICTIONS, Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, EntityFeralGhoul::checkFeralGhoulSpawnRules); - SpawnPlacements.register(FERAL_GHOUL_BOSS.get(), - SpawnPlacements.Type.NO_RESTRICTIONS, + NCSpawning.register(event, FERAL_GHOUL_BOSS.get(), + NCSpawning.NO_RESTRICTIONS, Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, EntityWastelandBoss::checkFeralGhoulBossSpawnRules); } diff --git a/src/main/java/igentuman/nc/setup/registration/FissionFuel.java b/src/main/java/igentuman/nc/setup/registration/FissionFuel.java index 3a05a442c..4652d0e13 100644 --- a/src/main/java/igentuman/nc/setup/registration/FissionFuel.java +++ b/src/main/java/igentuman/nc/setup/registration/FissionFuel.java @@ -1,17 +1,18 @@ package igentuman.nc.setup.registration; -import igentuman.nc.compat.kubejs.NCKubeJsEvents; + import igentuman.nc.content.fuel.FuelDef; import igentuman.nc.content.fuel.FuelManager; import igentuman.nc.content.materials.Materials; import igentuman.nc.item.ItemFuel; import net.minecraft.world.item.Item; -import net.minecraftforge.common.MinecraftForge; -import net.minecraftforge.eventbus.api.Event; -import net.minecraftforge.eventbus.api.SubscribeEvent; -import net.minecraftforge.fml.common.Mod; -import net.minecraftforge.fml.event.lifecycle.FMLConstructModEvent; -import net.minecraftforge.registries.RegistryObject; +import net.neoforged.neoforge.common.NeoForge; +import net.neoforged.bus.api.Event; +import net.neoforged.bus.api.SubscribeEvent; +import net.neoforged.fml.common.EventBusSubscriber; +import net.neoforged.fml.common.Mod; +import net.neoforged.fml.event.lifecycle.FMLConstructModEvent; +import net.neoforged.neoforge.registries.DeferredHolder; import java.util.ArrayList; import java.util.HashMap; @@ -19,16 +20,14 @@ import static igentuman.nc.setup.registration.Registries.ITEMS; import static igentuman.nc.setup.registration.Tags.*; -import static igentuman.nc.util.ModUtil.isKubeJsLoaded; -@Mod.EventBusSubscriber(bus = Mod.EventBusSubscriber.Bus.MOD) public class FissionFuel { public static final Item.Properties ITEM_PROPERTIES = new Item.Properties(); - public static HashMap, RegistryObject> NC_FUEL = new HashMap<>(); - public static HashMap, RegistryObject> NC_DEPLETED_FUEL = new HashMap<>(); - public static HashMap> NC_ISOTOPES = new HashMap<>(); - public static HashMap> NC_WASTE = new HashMap<>(); + public static HashMap, DeferredHolder> NC_FUEL = new HashMap<>(); + public static HashMap, DeferredHolder> NC_DEPLETED_FUEL = new HashMap<>(); + public static HashMap> NC_ISOTOPES = new HashMap<>(); + public static HashMap> NC_WASTE = new HashMap<>(); private static boolean initialized = false; // Store custom fuel definitions for recipe generation private static final List CUSTOM_FUELS = new ArrayList<>(); @@ -54,11 +53,9 @@ public static List getCustomFuels() { public static void registerRuntimeFuels() { List customFuels = new ArrayList<>(); RegisterFissionFuelEvent event = new RegisterFissionFuelEvent(customFuels); - MinecraftForge.EVENT_BUS.post(event); + NeoForge.EVENT_BUS.post(event); - if(isKubeJsLoaded()) { - NCKubeJsEvents.onFissionFuelRegister(event); - } + // TODO: KubeJS integration removed — waiting on KubeJS to port to NeoForge 1.21.1. Re-enable NCKubeJsEvents.onFissionFuelRegister(event) when available. // Register items and recipes for custom fuels for (FuelDef fuelDef : event.getFuels()) { @@ -114,12 +111,12 @@ public RegisterFissionFuelEvent(List fuels) { } } - public static RegistryObject fuel(String name, String type, String subType) + public static DeferredHolder fuel(String name, String type, String subType) { return ITEMS.register("fuel_"+name+"_"+type.replace("-","_")+subType, () -> new ItemFuel(ITEM_PROPERTIES, name, type, subType)); } - public static RegistryObject depletedFuel(String name, String type, String subType) + public static DeferredHolder depletedFuel(String name, String type, String subType) { return ITEMS.register("depleted_fuel_"+name+"_"+type.replace("-","_")+subType, () -> new Item(ITEM_PROPERTIES)); diff --git a/src/main/java/igentuman/nc/setup/registration/GameEvents.java b/src/main/java/igentuman/nc/setup/registration/GameEvents.java index 9abf5078e..fb449ad1a 100644 --- a/src/main/java/igentuman/nc/setup/registration/GameEvents.java +++ b/src/main/java/igentuman/nc/setup/registration/GameEvents.java @@ -1,13 +1,11 @@ package igentuman.nc.setup.registration; -import it.unimi.dsi.fastutil.objects.Object2IntOpenHashMap; -import net.minecraft.core.registries.BuiltInRegistries; +import igentuman.api.platform.NCVibrations; import net.minecraft.core.registries.Registries; import net.minecraft.world.level.gameevent.GameEvent; -import net.minecraft.world.level.gameevent.vibrations.VibrationSystem; -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.registries.DeferredHolder; +import net.neoforged.neoforge.registries.DeferredRegister; import static igentuman.nc.NuclearCraft.MODID; @@ -15,17 +13,14 @@ public class GameEvents { public static final DeferredRegister GAME_EVENTS = DeferredRegister.create(Registries.GAME_EVENT, MODID); - public static final RegistryObject BLACKHOLE_VIBRATION = - GAME_EVENTS.register("blackhole_vibration", () -> new GameEvent("blackhole_vibration", 32)); + public static final DeferredHolder BLACKHOLE_VIBRATION = + GAME_EVENTS.register("blackhole_vibration", () -> new GameEvent(32)); - public static void init(FMLJavaModLoadingContext context) - { - GAME_EVENTS.register(context.getModEventBus()); + public static void init(IEventBus bus) { + GAME_EVENTS.register(bus); } public static void commonSetup() { - if (VibrationSystem.VIBRATION_FREQUENCY_FOR_EVENT instanceof Object2IntOpenHashMap frequencyForEvent) { - frequencyForEvent.put(BLACKHOLE_VIBRATION.get(), 15); - } + NCVibrations.registerFrequency(BLACKHOLE_VIBRATION, 15); } } diff --git a/src/main/java/igentuman/nc/setup/registration/NCAttachments.java b/src/main/java/igentuman/nc/setup/registration/NCAttachments.java new file mode 100644 index 000000000..95079566c --- /dev/null +++ b/src/main/java/igentuman/nc/setup/registration/NCAttachments.java @@ -0,0 +1,23 @@ +package igentuman.nc.setup.registration; + +import igentuman.nc.NuclearCraft; +import igentuman.nc.radiation.data.PlayerRadiation; +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 NCAttachments { + public static final DeferredRegister> ATTACHMENTS = + DeferredRegister.create(NeoForgeRegistries.ATTACHMENT_TYPES, NuclearCraft.MODID); + + public static final Supplier> PLAYER_RADIATION = + ATTACHMENTS.register("player_radiation", () -> + AttachmentType.serializable(PlayerRadiation::new).build()); + + public static void init(IEventBus bus) { + ATTACHMENTS.register(bus); + } +} diff --git a/src/main/java/igentuman/nc/setup/registration/NCBlocks.java b/src/main/java/igentuman/nc/setup/registration/NCBlocks.java index 76776f472..63438dba3 100644 --- a/src/main/java/igentuman/nc/setup/registration/NCBlocks.java +++ b/src/main/java/igentuman/nc/setup/registration/NCBlocks.java @@ -22,10 +22,13 @@ import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraft.world.level.block.state.BlockBehaviour; import net.minecraft.world.level.block.state.BlockState; -import net.minecraftforge.common.extensions.IForgeMenuType; -import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext; -import net.minecraftforge.registries.ForgeRegistries; -import net.minecraftforge.registries.RegistryObject; +import net.neoforged.neoforge.registries.DeferredItem; +import net.minecraft.core.registries.BuiltInRegistries; +import net.neoforged.neoforge.registries.NeoForgeRegistries; +import net.neoforged.neoforge.registries.DeferredBlock; +import net.neoforged.neoforge.registries.DeferredHolder; +import igentuman.api.platform.NCBlockProperties; +import igentuman.api.platform.NCRegistration; import igentuman.nc.block.*; import javax.annotation.Nonnull; @@ -44,37 +47,37 @@ public class NCBlocks { public static final Item.Properties BLOCK_ITEM_PROPERTIES = new Item.Properties(); public static final BlockBehaviour.Properties NC_BLOCKS_PROPERTIES = BlockBehaviour.Properties.of().sound(SoundType.METAL).strength(2f).requiresCorrectToolForDrops(); public static final BlockBehaviour.Properties ORE_DEEPSLATE_BLOCK_PROPERTIES = BlockBehaviour.Properties.of().sound(SoundType.STONE).strength(4f).requiresCorrectToolForDrops(); - public static HashMap> ORE_BLOCKS = new HashMap<>(); - public static HashMap> NC_BLOCKS = new HashMap<>(); - public static HashMap> NC_RF_AMPLIFIERS = new HashMap<>(); - public static HashMap> NC_ELECTROMAGNETS = new HashMap<>(); - public static HashMap> MULTI_BLOCKS = new HashMap<>(); - public static HashMap> NC_MATERIAL_BLOCKS = new HashMap<>(); + public static HashMap> ORE_BLOCKS = new HashMap<>(); + public static HashMap> NC_BLOCKS = new HashMap<>(); + public static HashMap> NC_RF_AMPLIFIERS = new HashMap<>(); + public static HashMap> NC_ELECTROMAGNETS = new HashMap<>(); + public static HashMap> MULTI_BLOCKS = new HashMap<>(); + public static HashMap> NC_MATERIAL_BLOCKS = new HashMap<>(); public static final Item.Properties ORE_ITEM_PROPERTIES = new Item.Properties(); public static final Item.Properties MULTIBLOCK_ITEM_PROPERTIES = new Item.Properties(); - public static final RegistryObject PORTAL_BLOCK = BLOCKS.register("portal", PortalBlock::new); - public static final RegistryObject WASTELAND_EARTH = BLOCKS.register("wasteland_earth", () -> new Block(BlockBehaviour.Properties.of().sound(SoundType.GRAVEL).strength(1.5f).requiresCorrectToolForDrops().isValidSpawn((blockState, blockGetter, blockPos, entityType) -> { + public static final DeferredHolder PORTAL_BLOCK = BLOCKS.register("portal", PortalBlock::new); + public static final DeferredHolder WASTELAND_EARTH = BLOCKS.register("wasteland_earth", () -> new Block(BlockBehaviour.Properties.of().sound(SoundType.GRAVEL).strength(1.5f).requiresCorrectToolForDrops().isValidSpawn((blockState, blockGetter, blockPos, entityType) -> { return entityType == FERAL_GHOUL.get(); }))); - public static final RegistryObject REDSTONE_DIMMER_BLOCK = BLOCKS.register("redstone_dimmer", RedstoneDimmerBlock::new); - public static final RegistryObject REDSTONE_DIMMER_ITEM_BLOCK = fromBlock(REDSTONE_DIMMER_BLOCK); - public static final RegistryObject> REDSTONE_DIMMER_BE = BLOCK_ENTITIES.register("redstone_dimmer", - () -> BlockEntityType.Builder.of(RedstoneDimmerBE::new, REDSTONE_DIMMER_BLOCK.get()).build(null)); - - public static final RegistryObject MULTIBLOCK_BUILDER_BLOCK = BLOCKS.register("multiblock_builder", MultiblockBuilderBlock::new); - public static final RegistryObject MULTIBLOCK_BUILDER_ITEM_BLOCK = fromBlock(MULTIBLOCK_BUILDER_BLOCK); - public static final RegistryObject> MULTIBLOCK_BUILDER_BE = BLOCK_ENTITIES.register("multiblock_builder", - () -> BlockEntityType.Builder.of(MultiblockBuilderBE::new, MULTIBLOCK_BUILDER_BLOCK.get()).build(null)); - public static final RegistryObject MUSHROOM_BLOCK = BLOCKS.register("glowing_mushroom", () -> new GlowingMushroomBlock( + public static final DeferredHolder REDSTONE_DIMMER_BLOCK = BLOCKS.register("redstone_dimmer", () -> new RedstoneDimmerBlock()); + public static final DeferredHolder REDSTONE_DIMMER_ITEM_BLOCK = fromBlock(REDSTONE_DIMMER_BLOCK); + public static final DeferredHolder, BlockEntityType> REDSTONE_DIMMER_BE = + NCRegistration.registerBlockEntity(BLOCK_ENTITIES, "redstone_dimmer", RedstoneDimmerBE::new, REDSTONE_DIMMER_BLOCK); + + public static final DeferredHolder MULTIBLOCK_BUILDER_BLOCK = BLOCKS.register("multiblock_builder", () -> new MultiblockBuilderBlock()); + public static final DeferredHolder MULTIBLOCK_BUILDER_ITEM_BLOCK = fromBlock(MULTIBLOCK_BUILDER_BLOCK); + public static final DeferredHolder, BlockEntityType> MULTIBLOCK_BUILDER_BE = + NCRegistration.registerBlockEntity(BLOCK_ENTITIES, "multiblock_builder", MultiblockBuilderBE::new, MULTIBLOCK_BUILDER_BLOCK); + public static final DeferredHolder MUSHROOM_BLOCK = BLOCKS.register("glowing_mushroom", () -> new GlowingMushroomBlock( BlockBehaviour.Properties.of().sound(SoundType.GRASS).noCollission().instabreak().randomTicks().lightLevel($ -> 5) )); - public static final RegistryObject> REDSTONE_DIMMER_CONTAINER = CONTAINERS.register("redstone_dimmer", - () -> IForgeMenuType.create((windowId, inv, data) -> new RedstoneDImmerContainer(windowId, data.readBlockPos(), inv))); - public static final RegistryObject> MULTIBLOCK_BUILDER_CONTAINER = CONTAINERS.register("multiblock_builder", - () -> IForgeMenuType.create((windowId, inv, data) -> new MultiblockBuilderContainer(windowId, data.readBlockPos(), inv))); - public static final RegistryObject MUSHROOM_ITEM = fromBlock(MUSHROOM_BLOCK); - public static final RegistryObject PORTAL_ITEM = fromBlock(PORTAL_BLOCK); - public static final RegistryObject WASTELAND_EARTH_ITEM = fromBlock(WASTELAND_EARTH); + public static final DeferredHolder, MenuType> REDSTONE_DIMMER_CONTAINER = + NCRegistration.registerMenu(CONTAINERS, "redstone_dimmer", (windowId, inv, data) -> new RedstoneDImmerContainer(windowId, data.readBlockPos(), inv)); + public static final DeferredHolder, MenuType> MULTIBLOCK_BUILDER_CONTAINER = + NCRegistration.registerMenu(CONTAINERS, "multiblock_builder", (windowId, inv, data) -> new MultiblockBuilderContainer(windowId, data.readBlockPos(), inv)); + public static final DeferredHolder MUSHROOM_ITEM = fromBlock(MUSHROOM_BLOCK); + public static final DeferredHolder PORTAL_ITEM = fromBlock(PORTAL_BLOCK); + public static final DeferredHolder WASTELAND_EARTH_ITEM = fromBlock(WASTELAND_EARTH); public static TagKey DECAY_GEN_BLOCK = blockTag("decay_gen_block"); public static final TagKey AMPLIFIERS = blockTag("amplifiers"); public static final TagKey ELECTROMAGNETS = blockTag("electromagnets"); @@ -88,7 +91,7 @@ public static void init() { private static void registerOres() { for(String name: Ores.all().keySet()) { - ORE_TAGS.put(name, TagKey.create(BLOCK_REGISTRY, ResourceLocation.tryBuild("forge", "ores/"+name))); + ORE_TAGS.put(name, TagKey.create(BLOCK_REGISTRY, ResourceLocation.fromNamespaceAndPath("c", "ores/"+name))); addOreTag(name); if(Materials.ores().get(name).normal_ore) { ORE_BLOCKS.put(name, BLOCKS.register(name + "_ore", () -> new Block(ORE_BLOCK_PROPERTIES))); @@ -134,8 +137,8 @@ private static void registerAmplifiers() { private static void registerBlocks() { for(String name: Blocks.get().all().keySet()) { - BLOCK_TAGS.put(name, TagKey.create(BLOCK_REGISTRY, ResourceLocation.tryBuild("forge","storage_blocks/"+name))); - BLOCK_ITEM_TAGS.put(name, TagKey.create(ITEM_REGISTRY, ResourceLocation.tryBuild("forge", "storage_blocks/"+name))); + BLOCK_TAGS.put(name, TagKey.create(BLOCK_REGISTRY, ResourceLocation.fromNamespaceAndPath("c","storage_blocks/"+name))); + BLOCK_ITEM_TAGS.put(name, TagKey.create(ITEM_REGISTRY, ResourceLocation.fromNamespaceAndPath("c", "storage_blocks/"+name))); NC_MATERIAL_BLOCKS.put(name, BLOCKS.register(name + "_block", () -> new Block(NC_BLOCKS_PROPERTIES))); NC_BLOCKS_ITEMS.put(name, fromBlock(NC_MATERIAL_BLOCKS.get(name))); ALL_NC_ITEMS.put(name+"_block", NC_BLOCKS_ITEMS.get(name)); @@ -144,15 +147,15 @@ private static void registerBlocks() { ALL_NC_ITEMS.put("glowing_mushroom", NC_BLOCKS_ITEMS.get("glowing_mushroom")); } - public static RegistryObject fromOreBlock(RegistryObject block) { + public static DeferredHolder fromOreBlock(DeferredHolder block) { return ITEMS.register(block.getId().getPath(), () -> new BlockItem(block.get(), ORE_ITEM_PROPERTIES)); } - public static RegistryObject fromBlock(RegistryObject block) { + public static DeferredHolder fromBlock(DeferredHolder block) { return ITEMS.register(block.getId().getPath(), () -> new BlockItem(block.get(), BLOCK_ITEM_PROPERTIES)); } - public static RegistryObject fromMultiblock(RegistryObject block) { + public static DeferredHolder fromMultiblock(DeferredHolder block) { return ITEMS.register(block.getId().getPath(), () -> new BlockItem(block.get(), MULTIBLOCK_ITEM_PROPERTIES)); } @@ -161,7 +164,7 @@ public static final class BlockEntry implements Supplier, It { public static final Collection> ALL_ENTRIES = new ArrayList<>(); - private final RegistryObject regObject; + private final DeferredBlock regObject; private final Supplier properties; public static BlockEntry fence(String name, Supplier props) @@ -170,24 +173,26 @@ public static BlockEntry fence(String name, Supplier properties, Function make) { this.properties = properties; - this.regObject = BLOCKS.register(name, () -> make.apply(properties.get())); + this.regObject = (DeferredBlock) (DeferredBlock) BLOCKS.register(name, () -> make.apply(properties.get())); ALL_ENTRIES.add(this); } + @SuppressWarnings("unchecked") public BlockEntry(T existing) { - this.properties = () -> BlockBehaviour.Properties.copy(existing); - this.regObject = RegistryObject.create(ForgeRegistries.BLOCKS.getKey(existing), ForgeRegistries.BLOCKS); + this.properties = () -> NCBlockProperties.copy(existing); + this.regObject = (DeferredBlock) (DeferredBlock) DeferredBlock.createBlock(BuiltInRegistries.BLOCK.getKey(existing)); } @SuppressWarnings("unchecked") public BlockEntry(BlockEntry toCopy) { this.properties = toCopy.properties; - this.regObject = (RegistryObject)toCopy.regObject; + this.regObject = (DeferredBlock) (DeferredBlock) toCopy.regObject; } @Override diff --git a/src/main/java/igentuman/nc/setup/registration/NCCapabilities.java b/src/main/java/igentuman/nc/setup/registration/NCCapabilities.java new file mode 100644 index 000000000..c1a34ccdb --- /dev/null +++ b/src/main/java/igentuman/nc/setup/registration/NCCapabilities.java @@ -0,0 +1,306 @@ +package igentuman.nc.setup.registration; + +import igentuman.nc.NuclearCraft; +import igentuman.nc.block.entity.NuclearCraftBE; +import igentuman.nc.block.entity.processor.LeacherBE; +import igentuman.nc.block.fusion.entity.FusionCoreBE; +import igentuman.nc.block.fusion.entity.FusionCoreProxyBE; +import igentuman.nc.handler.ItemEnergyHandler; +import igentuman.nc.item.*; +import igentuman.nc.util.capability.ItemCapabilityProvider; +import igentuman.nc.multiblock.accelerator.AcceleratorRegistration; +import igentuman.nc.multiblock.fission.FissionReactorRegistration; +import igentuman.nc.multiblock.fusion.FusionReactorRegistration; +import igentuman.nc.multiblock.kugelblitz.KugelblitzRegistration; +import igentuman.nc.multiblock.particle_chamber.TargetChamberRegistration; +import igentuman.nc.multiblock.turbine.TurbineRegistration; +import net.minecraft.core.Direction; +import net.minecraft.world.item.Item; +import net.minecraft.world.level.block.entity.BlockEntityType; +import net.neoforged.bus.api.SubscribeEvent; +import net.neoforged.fml.common.EventBusSubscriber; +import net.neoforged.neoforge.capabilities.Capabilities; +import net.neoforged.neoforge.capabilities.RegisterCapabilitiesEvent; +import igentuman.api.platform.NCFluidCapability; +import net.neoforged.neoforge.registries.DeferredHolder; + +import java.util.ArrayList; +import java.util.List; + +@EventBusSubscriber(modid = NuclearCraft.MODID, bus = EventBusSubscriber.Bus.MOD) +public class NCCapabilities { + + @SubscribeEvent + public static void registerCapabilities(RegisterCapabilitiesEvent event) { + registerBlockEntityCapabilities(event); + registerItemCapabilities(event); + } + + // ======================== + // Block Entity Capabilities + // ======================== + + private static void registerBlockEntityCapabilities(RegisterCapabilitiesEvent event) { + List> allTypes = new ArrayList<>(); + + // Processors (all have energy + content handler) + for (var holder : NCProcessors.PROCESSORS_BE.values()) { + @SuppressWarnings("unchecked") + BlockEntityType beType = (BlockEntityType) holder.get(); + allTypes.add(beType); + } + + // Energy blocks (solar, battery, RTG, decay generator) + for (var holder : NCEnergyBlocks.ENERGY_BE.values()) { + @SuppressWarnings("unchecked") + BlockEntityType beType = (BlockEntityType) holder.get(); + allTypes.add(beType); + } + + // Storage blocks (barrels, containers) + for (var holder : NCStorageBlocks.STORAGE_BE.values()) { + @SuppressWarnings("unchecked") + BlockEntityType beType = (BlockEntityType) holder.get(); + allTypes.add(beType); + } + + // Fission reactor BEs + for (var holder : FissionReactorRegistration.FISSION_BE.values()) { + @SuppressWarnings("unchecked") + BlockEntityType beType = (BlockEntityType) holder.get(); + allTypes.add(beType); + } + + // Fusion reactor BEs (excluding proxy — handled separately) + for (var holder : FusionReactorRegistration.FUSION_BE.values()) { + @SuppressWarnings("unchecked") + BlockEntityType beType = (BlockEntityType) holder.get(); + allTypes.add(beType); + } + + // Turbine BEs + for (var holder : TurbineRegistration.TURBINE_BE.values()) { + @SuppressWarnings("unchecked") + BlockEntityType beType = (BlockEntityType) holder.get(); + allTypes.add(beType); + } + + // Kugelblitz BEs + for (var holder : KugelblitzRegistration.KUGELBLITZ_BE.values()) { + @SuppressWarnings("unchecked") + BlockEntityType beType = (BlockEntityType) holder.get(); + allTypes.add(beType); + } + addIfPresent(allTypes, KugelblitzRegistration.EXPL_BE); + addIfPresent(allTypes, KugelblitzRegistration.EXPL_PROXY_BE); + + // Accelerator BEs + for (var holder : AcceleratorRegistration.ACCELERATOR_BE.values()) { + @SuppressWarnings("unchecked") + BlockEntityType beType = (BlockEntityType) holder.get(); + allTypes.add(beType); + } + + // Target Chamber BEs + for (var holder : TargetChamberRegistration.TARGET_CHAMBER_BE.values()) { + @SuppressWarnings("unchecked") + BlockEntityType beType = (BlockEntityType) holder.get(); + allTypes.add(beType); + } + + // Misc BEs + addIfPresent(allTypes, NCBlocks.REDSTONE_DIMMER_BE); + addIfPresent(allTypes, NCBlocks.MULTIBLOCK_BUILDER_BE); + + // Register standard capabilities for all types + for (BlockEntityType beType : allTypes) { + registerNuclearCraftBECapabilities(event, beType); + } + + // Special case: FusionCoreProxyBE — delegates to controller + registerFusionCoreProxyCapabilities(event); + } + + @SuppressWarnings("unchecked") + private static void addIfPresent(List> list, Object holder) { + if (holder instanceof DeferredHolder dh) { + try { + list.add((BlockEntityType) dh.get()); + } catch (Exception ignored) { + } + } + } + + private static void registerNuclearCraftBECapabilities( + RegisterCapabilitiesEvent event, + BlockEntityType beType) { + + // Energy capability + event.registerBlockEntity( + Capabilities.EnergyStorage.BLOCK, + beType, + (be, side) -> be.energyStorage() != null ? be.energyStorage() : null + ); + + // Item handler capability + // LeacherBE blocks external item handler access + event.registerBlockEntity( + Capabilities.ItemHandler.BLOCK, + beType, + (be, side) -> { + if (be instanceof LeacherBE) { + return null; // Leacher blocks item handler from outside + } + if (be.contentHandler() != null) { + return be.contentHandler().getItemCapability(side); + } + return null; + } + ); + + // Fluid handler capability + event.registerBlockEntity( + Capabilities.FluidHandler.BLOCK, + beType, + (be, side) -> { + if (be.contentHandler() != null) { + return be.contentHandler().getFluidCapability(side); + } + return null; + } + ); + } + + /** + * FusionCoreProxyBE delegates capabilities to its controller. + * Energy: only on vertical sides (UP/DOWN), not horizontal. + * Fluid: delegates to controller on vertical sides. + * Item: not exposed (proxy has no item slots). + */ + @SuppressWarnings("unchecked") + private static void registerFusionCoreProxyCapabilities(RegisterCapabilitiesEvent event) { + BlockEntityType proxyType; + try { + proxyType = (BlockEntityType) FusionReactorRegistration.FUSION_CORE_PROXY_BE.get(); + } catch (Exception e) { + return; // Registration not available + } + + event.registerBlockEntity( + Capabilities.EnergyStorage.BLOCK, + proxyType, + (proxy, side) -> { + if (side != null && side.getAxis().isHorizontal()) { + return null; // Only vertical sides + } + FusionCoreBE controller = proxy.controller(); + if (controller != null && controller.energyStorage() != null) { + return controller.energyStorage(); + } + return null; + } + ); + + event.registerBlockEntity( + Capabilities.FluidHandler.BLOCK, + proxyType, + (proxy, side) -> { + if (side != null && side.getAxis().isHorizontal()) { + return null; + } + FusionCoreBE controller = proxy.controller(); + if (controller != null && controller.contentHandler() != null) { + return controller.contentHandler().getFluidCapability(side); + } + return null; + } + ); + + // No item handler for proxy + } + + // ======================== + // Item Capabilities + // ======================== + + private static void registerItemCapabilities(RegisterCapabilitiesEvent event) { + // BatteryItem (lithium ion cell) — energy storage + event.registerItem( + Capabilities.EnergyStorage.ITEM, + (stack, ctx) -> new ItemEnergyHandler(stack, + ((BatteryItem) stack.getItem()).getEnergyMaxStorage(), + ((BatteryItem) stack.getItem()).getEnergyMaxStorage(), + ((BatteryItem) stack.getItem()).getEnergyMaxStorage() + ).getEnergy(), + NCItems.LITHIUM_ION_CELL.get() + ); + + // HEV armor items — energy storage + Item[] hevItems = { + NCItems.HEV_HELMET.get(), + NCItems.HEV_CHEST.get(), + NCItems.HEV_BOOTS.get(), + NCItems.HEV_PANTS.get() + }; + event.registerItem( + Capabilities.EnergyStorage.ITEM, + (stack, ctx) -> { + HEVItem hev = (HEVItem) stack.getItem(); + return new ItemEnergyHandler(stack, hev.getEnergyMaxStorage(), 5000, hev.getEnergyMaxStorage() / 4).getEnergy(); + }, + hevItems + ); + + // QNP — energy storage (receive only, no send) + event.registerItem( + Capabilities.EnergyStorage.ITEM, + (stack, ctx) -> { + QNP qnp = (QNP) stack.getItem(); + return new ItemEnergyHandler(stack, qnp.getEnergyMaxStorage(), 0, qnp.getEnergyMaxStorage() / 4).getEnergy(); + }, + NCItems.QNP.get() + ); + + // BatteryBlockItems — energy storage (registered dynamically for all battery types) + for (var entry : NCEnergyBlocks.BLOCK_ITEMS.entrySet()) { + Item item = entry.getValue().get(); + if (item instanceof BatteryBlockItem) { + event.registerItem( + Capabilities.EnergyStorage.ITEM, + (stack, ctx) -> { + BatteryBlockItem bbi = (BatteryBlockItem) stack.getItem(); + return new ItemEnergyHandler(stack, bbi.getEnergyMaxStorage(), bbi.getEnergyMaxStorage(), bbi.getEnergyMaxStorage()).getEnergy(); + }, + item + ); + } + } + + // BarrelBlockItems — fluid handler (registered dynamically for all barrel types) + for (var entry : NCStorageBlocks.BLOCK_ITEMS.entrySet()) { + Item item = entry.getValue().get(); + if (item instanceof BarrelBlockItem) { + event.registerItem( + Capabilities.FluidHandler.ITEM, + (stack, ctx) -> NCFluidCapability.createItemFluidHandler(stack, ((BarrelBlockItem) stack.getItem()).getCapacity() * 1000), + item + ); + } + } + + // ContainerBlockItems — item handler (registered dynamically for all container types) + for (var entry : NCStorageBlocks.BLOCK_ITEMS.entrySet()) { + Item item = entry.getValue().get(); + if (item instanceof ContainerBlockItem) { + event.registerItem( + Capabilities.ItemHandler.ITEM, + (stack, ctx) -> { + ContainerBlockItem cbi = (ContainerBlockItem) stack.getItem(); + return new ItemCapabilityProvider(stack, cbi.getInventorySize(), 64).getItemHandler(); + }, + item + ); + } + } + } +} diff --git a/src/main/java/igentuman/nc/setup/registration/NCEnergyBlocks.java b/src/main/java/igentuman/nc/setup/registration/NCEnergyBlocks.java index 790185ab1..5e25f0cf4 100644 --- a/src/main/java/igentuman/nc/setup/registration/NCEnergyBlocks.java +++ b/src/main/java/igentuman/nc/setup/registration/NCEnergyBlocks.java @@ -15,7 +15,7 @@ import net.minecraft.world.level.block.SoundType; import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraft.world.level.block.state.BlockBehaviour; -import net.minecraftforge.registries.RegistryObject; +import net.neoforged.neoforge.registries.DeferredHolder; import igentuman.nc.block.entity.energy.DecayGeneratorBE; import java.util.HashMap; @@ -23,11 +23,11 @@ import static igentuman.nc.setup.registration.Registries.*; public class NCEnergyBlocks { - public static HashMap> ENERGY_BLOCKS = new HashMap<>(); - public static HashMap> BLOCK_ITEMS = new HashMap<>(); + public static HashMap> ENERGY_BLOCKS = new HashMap<>(); + public static HashMap> BLOCK_ITEMS = new HashMap<>(); public static final Item.Properties ENERGY_ITEM_PROPERTIES = new Item.Properties(); public static final BlockBehaviour.Properties ENERGY_BLOCK_PROPERTIES = BlockBehaviour.Properties.of().sound(SoundType.METAL).strength(2f).requiresCorrectToolForDrops(); - public static HashMap>> ENERGY_BE = new HashMap<>(); + public static HashMap, BlockEntityType>> ENERGY_BE = new HashMap<>(); public static void init() { registerBlocks(); @@ -83,11 +83,11 @@ private static void registerBlocks() { } } - public static RegistryObject fromBatteryBlock(RegistryObject block) { + public static DeferredHolder fromBatteryBlock(DeferredHolder block) { return ITEMS.register(block.getId().getPath(), () -> new BatteryBlockItem(block.get(), ENERGY_ITEM_PROPERTIES)); } - public static RegistryObject fromBlock(RegistryObject block) { + public static DeferredHolder fromBlock(DeferredHolder block) { return ITEMS.register(block.getId().getPath(), () -> new BlockItem(block.get(), ENERGY_ITEM_PROPERTIES)); } diff --git a/src/main/java/igentuman/nc/setup/registration/NCFluids.java b/src/main/java/igentuman/nc/setup/registration/NCFluids.java index 149c4501c..d67d31036 100644 --- a/src/main/java/igentuman/nc/setup/registration/NCFluids.java +++ b/src/main/java/igentuman/nc/setup/registration/NCFluids.java @@ -12,7 +12,6 @@ import igentuman.nc.util.TextureUtil; import net.minecraft.resources.ResourceLocation; import net.minecraft.sounds.SoundEvents; -import net.minecraft.tags.TagKey; import net.minecraft.world.item.*; import net.minecraft.world.item.crafting.RecipeType; import net.minecraft.world.level.block.Blocks; @@ -20,13 +19,17 @@ import net.minecraft.world.level.block.state.BlockBehaviour; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.properties.Property; -import net.minecraftforge.client.extensions.common.IClientFluidTypeExtensions; -import net.minecraftforge.common.SoundActions; -import net.minecraftforge.eventbus.api.IEventBus; -import net.minecraftforge.fluids.FluidType; -import net.minecraftforge.fml.loading.FMLEnvironment; -import net.minecraftforge.registries.ForgeRegistries; -import net.minecraftforge.registries.RegistryObject; +import net.neoforged.neoforge.client.extensions.common.IClientFluidTypeExtensions; +import net.neoforged.neoforge.common.SoundActions; +import net.neoforged.bus.api.IEventBus; +import net.neoforged.neoforge.fluids.FluidType; +import net.neoforged.fml.loading.FMLEnvironment; +import igentuman.api.platform.NCBlockProperties; +import igentuman.api.platform.NCTagFactory; +import net.minecraft.world.level.material.Fluid; +import net.neoforged.neoforge.registries.DeferredHolder; +import net.neoforged.neoforge.registries.DeferredItem; +import igentuman.api.platform.NCRegistration; import org.apache.commons.lang3.mutable.Mutable; import org.apache.commons.lang3.mutable.MutableObject; @@ -36,7 +39,7 @@ import java.util.function.Consumer; import java.util.function.Function; -import static igentuman.nc.NuclearCraft.forgeRl; +import static igentuman.nc.NuclearCraft.neoforgeRl; import static igentuman.nc.NuclearCraft.rl; import static igentuman.nc.content.materials.Materials.slurries; import static igentuman.nc.content.materials.Materials.subliquid_matter; @@ -49,6 +52,8 @@ public class NCFluids { public static final HashMap ALL_FLUID_ENTRIES = new HashMap<>(); + // Stores client extensions for registration via RegisterClientExtensionsEvent (initializeClient is deprecated in 1.21.1) + public static final HashMap, IClientFluidTypeExtensions> CLIENT_EXTENSIONS = new HashMap<>(); public static final Set> ALL_FLUID_BLOCKS = new HashSet<>(); public static HashMap NC_MATERIALS = new HashMap<>(); public static HashMap NC_GASES = new HashMap<>(); @@ -131,11 +136,11 @@ private static void liquids() { items.put(Materials.irradiated_sodium, new LiquidDefinition(Materials.irradiated_sodium, 0x90CDBEE7)); for(LiquidDefinition liquid: items.values()) { - LIQUIDS_TAG.put(liquid.name, TagKey.create(ForgeRegistries.FLUIDS.getRegistryKey(), forgeRl(liquid.name))); + LIQUIDS_TAG.put(liquid.name, NCTagFactory.fluidTag(neoforgeRl(liquid.name))); NC_MATERIALS.put(liquid.name, FluidEntry.makeLiquid(liquid.name, liquid.color)); if (!liquid.name.matches(".*_solution|.*_water|.*_liquor|.*_chocolate|.*_milk|.*_coolant.*")) { - LIQUIDS_TAG.put("molten_" + liquid.name, TagKey.create(ForgeRegistries.FLUIDS.getRegistryKey(), forgeRl("molten_" + liquid.name))); + LIQUIDS_TAG.put("molten_" + liquid.name, NCTagFactory.fluidTag(neoforgeRl("molten_" + liquid.name))); } } } @@ -149,7 +154,7 @@ private static void liquidGases() { items.put(subliquid_matter, new LiquidDefinition(subliquid_matter, 0x50C90076)); for(LiquidDefinition liquid: items.values()) { - LIQUIDS_TAG.put(liquid.name, TagKey.create(ForgeRegistries.FLUIDS.getRegistryKey(), forgeRl(liquid.name))); + LIQUIDS_TAG.put(liquid.name, NCTagFactory.fluidTag(neoforgeRl(liquid.name))); NC_MATERIALS.put(liquid.name, FluidEntry.makeLiquid(liquid)); } } @@ -175,7 +180,7 @@ private static void slurryFluids() { items.put(material+"_clean_slurry", new AcidDefinition(material+"_clean_slurry", TextureUtil.rgbaToInt(rgba))); } for(AcidDefinition acid: items.values()) { - LIQUIDS_TAG.put(acid.name, TagKey.create(ForgeRegistries.FLUIDS.getRegistryKey(), forgeRl(acid.name))); + LIQUIDS_TAG.put(acid.name, NCTagFactory.fluidTag(neoforgeRl(acid.name))); NC_MATERIALS.put(acid.name, FluidEntry.makeAcid(acid)); } } @@ -190,19 +195,19 @@ private static void acids() { items.put("aqua_regia_acid", new AcidDefinition("aqua_regia_acid", 0XCCFFBB99)); for(AcidDefinition acid: items.values()) { - LIQUIDS_TAG.put(acid.name, TagKey.create(ForgeRegistries.FLUIDS.getRegistryKey(), forgeRl(acid.name))); + LIQUIDS_TAG.put(acid.name, NCTagFactory.fluidTag(neoforgeRl(acid.name))); NC_MATERIALS.put(acid.name, FluidEntry.makeAcid(acid)); } } private static void materialFluids() { for (String name: Materials.fluids().keySet()) { - LIQUIDS_TAG.put(name, TagKey.create(ForgeRegistries.FLUIDS.getRegistryKey(), forgeRl(name))); + LIQUIDS_TAG.put(name, NCTagFactory.fluidTag(neoforgeRl(name))); NC_MATERIALS.put(name, FluidEntry.makeMoltenLiquid(name, Materials.fluids().get(name).color)); - LIQUIDS_TAG.put("molten_" + name, TagKey.create(ForgeRegistries.FLUIDS.getRegistryKey(), forgeRl("molten_" + name))); + LIQUIDS_TAG.put("molten_" + name, NCTagFactory.fluidTag(neoforgeRl("molten_" + name))); } - LIQUIDS_TAG.put("aluminium", TagKey.create(ForgeRegistries.FLUIDS.getRegistryKey(), forgeRl("aluminium"))); - LIQUIDS_TAG.put("molten_aluminium", TagKey.create(ForgeRegistries.FLUIDS.getRegistryKey(), forgeRl("molten_aluminium"))); + LIQUIDS_TAG.put("aluminium", NCTagFactory.fluidTag(neoforgeRl("aluminium"))); + LIQUIDS_TAG.put("molten_aluminium", NCTagFactory.fluidTag(neoforgeRl("molten_aluminium"))); } private static void fuel() { @@ -220,10 +225,10 @@ private static void fuel() { NC_MATERIALS.put(key, FluidEntry.makeMoltenLiquid(key.replace("-","_"), colorFuel)); - LIQUIDS_TAG.put(key, TagKey.create(ForgeRegistries.FLUIDS.getRegistryKey(), forgeRl(key.replace("-","_")))); + LIQUIDS_TAG.put(key, NCTagFactory.fluidTag(neoforgeRl(key.replace("-","_")))); NC_MATERIALS.put("depleted_"+key, FluidEntry.makeMoltenLiquid("depleted_"+key.replace("-","_"), colorDepleted)); - LIQUIDS_TAG.put("depleted_"+key, TagKey.create(ForgeRegistries.FLUIDS.getRegistryKey(), forgeRl("depleted_"+key.replace("-","_")))); + LIQUIDS_TAG.put("depleted_"+key, NCTagFactory.fluidTag(neoforgeRl("depleted_"+key.replace("-","_")))); if(name.matches("xenorium.*|quantite.*|")) break; } } @@ -265,8 +270,8 @@ private static void gases() { items.put("radon", new GasDefinition("radon", 0xFFFFFFFF, 260)); for(GasDefinition gas: items.values()) { - LIQUIDS_TAG.put(gas.name, TagKey.create(ForgeRegistries.FLUIDS.getRegistryKey(), forgeRl(gas.name))); - GASES_TAG.put(gas.name, TagKey.create(ForgeRegistries.FLUIDS.getRegistryKey(), forgeRl("gases/"+gas.name))); + LIQUIDS_TAG.put(gas.name, NCTagFactory.fluidTag(neoforgeRl(gas.name))); + GASES_TAG.put(gas.name, NCTagFactory.fluidTag(neoforgeRl("gases/"+gas.name))); NC_GASES.put(gas.name, FluidEntry.makeGas(gas)); } } @@ -285,7 +290,7 @@ private static void isotopes() } NC_MATERIALS.put(name+type, FluidEntry.makeMoltenLiquid(name.replace("/", "_")+type,color)); - LIQUIDS_TAG.put(name+type, TagKey.create(ForgeRegistries.FLUIDS.getRegistryKey(), forgeRl(name+type))); + LIQUIDS_TAG.put(name+type, NCTagFactory.fluidTag(neoforgeRl(name+type))); if(name.matches("xenorium.*|quantite.*|")) break; } } @@ -312,17 +317,17 @@ public static Consumer gasBuilder(int temperature) return builder -> builder.temperature(temperature).density(density).viscosity(visconsity); } public record FluidEntry( - RegistryObject flowing, - RegistryObject still, + DeferredHolder flowing, + DeferredHolder still, NCBlocks.BlockEntry block, - RegistryObject bucket, - RegistryObject type, + DeferredItem bucket, + DeferredHolder type, List> properties, int color ) { - public static final List> ALL_BUCKETS = new ArrayList<>(); + public static final List> ALL_BUCKETS = new ArrayList<>(); public static FluidEntry makeAcid(AcidDefinition acid) { return make(acid.name,0, rl("block/material/fluid/liquid_still"), rl("block/material/fluid/liquid_flow"), liquidBuilder(acid.temperature), acid.color, false); @@ -407,32 +412,32 @@ private static FluidEntry make( } if(buildAttributes!=null) buildAttributes.accept(builder); - RegistryObject type; - if(color == 0xFFFFFFFF) { - type = FLUID_TYPES.register( - name, () -> makeTypeWithTextures(builder, stillTex, flowingTex) - ); - } else { - type = FLUID_TYPES.register( - name, () -> makeColoredTypeWithTextures(builder, stillTex, flowingTex, color) - ); - } + DeferredHolder type = FLUID_TYPES.register( + name, () -> new FluidType(builder) + ); + + // Store client extensions for registration via RegisterClientExtensionsEvent + IClientFluidTypeExtensions extensions = (color == 0xFFFFFFFF) + ? makeFluidExtensions(stillTex, flowingTex) + : makeColoredFluidExtensions(stillTex, flowingTex, color); + CLIENT_EXTENSIONS.put(type, extensions); Mutable thisMutable = new MutableObject<>(); - RegistryObject still = FLUIDS.register(name, () -> NCFluid.makeFluid( + DeferredHolder still = NCRegistration.registerFluid(FLUIDS, name, () -> NCFluid.makeFluid( makeStill, thisMutable.getValue() )); - RegistryObject flowing = FLUIDS.register(name+"_flowing", () -> NCFluid.makeFluid( + DeferredHolder flowing = NCRegistration.registerFluid(FLUIDS, name+"_flowing", () -> NCFluid.makeFluid( makeFlowing, thisMutable.getValue() )); NCBlocks.BlockEntry block = new NCBlocks.BlockEntry<>( name+"_fluid_block", - () -> BlockBehaviour.Properties.copy(Blocks.WATER).noLootTable().noCollission(), + () -> NCBlockProperties.copy(Blocks.WATER).noLootTable().noCollission(), p -> new NCFluidBlock(thisMutable.getValue(), p) ); - RegistryObject bucket = ITEMS.register(name+"_bucket", () -> makeBucket(still, burnTime)); + @SuppressWarnings("unchecked") + DeferredItem bucket = (DeferredItem) (DeferredItem) ITEMS.register(name+"_bucket", () -> makeBucket(still, burnTime)); ALL_BUCKETS.add(bucket); FluidEntry entry = new FluidEntry(flowing, still, block, bucket, type, properties, color); thisMutable.setValue(entry); @@ -441,62 +446,22 @@ private static FluidEntry make( return entry; } - private static FluidType makeColoredTypeWithTextures( - FluidType.Properties builder, ResourceLocation stillTex, ResourceLocation flowingTex, int color - ) - { - return new FluidType(builder) - { - @Override - public void initializeClient(Consumer consumer) - { - consumer.accept(new IClientFluidTypeExtensions() - { - @Override - public ResourceLocation getStillTexture() - { - return stillTex; - } - - @Override - public ResourceLocation getFlowingTexture() - { - return flowingTex; - } - @Override - public int getTintColor() - { - return color; - } - }); - } + private static IClientFluidTypeExtensions makeColoredFluidExtensions( + ResourceLocation stillTex, ResourceLocation flowingTex, int color + ) { + return new IClientFluidTypeExtensions() { + @Override public ResourceLocation getStillTexture() { return stillTex; } + @Override public ResourceLocation getFlowingTexture() { return flowingTex; } + @Override public int getTintColor() { return color; } }; } - private static FluidType makeTypeWithTextures( - FluidType.Properties builder, ResourceLocation stillTex, ResourceLocation flowingTex - ) - { - return new FluidType(builder) - { - @Override - public void initializeClient(Consumer consumer) - { - consumer.accept(new IClientFluidTypeExtensions() - { - @Override - public ResourceLocation getStillTexture() - { - return stillTex; - } - - @Override - public ResourceLocation getFlowingTexture() - { - return flowingTex; - } - }); - } + private static IClientFluidTypeExtensions makeFluidExtensions( + ResourceLocation stillTex, ResourceLocation flowingTex + ) { + return new IClientFluidTypeExtensions() { + @Override public ResourceLocation getStillTexture() { return stillTex; } + @Override public ResourceLocation getFlowingTexture() { return flowingTex; } }; } @@ -520,7 +485,7 @@ public BucketItem getBucket() return bucket.get(); } - private static BucketItem makeBucket(RegistryObject still, int burnTime) + private static BucketItem makeBucket(DeferredHolder still, int burnTime) { return new NCBucketItem( still, new Item.Properties() @@ -535,7 +500,7 @@ public int getBurnTime(ItemStack itemStack, RecipeType type) }; } - public RegistryObject getStillGetter() + public DeferredHolder getStillGetter() { return still; } diff --git a/src/main/java/igentuman/nc/setup/registration/NCItems.java b/src/main/java/igentuman/nc/setup/registration/NCItems.java index efbd312dc..6c8cbbd96 100644 --- a/src/main/java/igentuman/nc/setup/registration/NCItems.java +++ b/src/main/java/igentuman/nc/setup/registration/NCItems.java @@ -1,48 +1,51 @@ package igentuman.nc.setup.registration; -import igentuman.nc.content.ArmorMaterials; +import igentuman.api.platform.NCArmorMaterials; +import igentuman.api.platform.NCMusicDiscs; import igentuman.nc.content.materials.*; import igentuman.nc.item.*; import igentuman.nc.item.Tiers; +import net.minecraft.core.registries.Registries; +import net.minecraft.resources.ResourceKey; import net.minecraft.tags.TagKey; +import igentuman.api.platform.NCFood; import net.minecraft.world.food.FoodProperties; import net.minecraft.world.item.*; import net.minecraft.world.level.block.Block; -import net.minecraftforge.common.ForgeSpawnEggItem; -import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext; -import net.minecraftforge.registries.RegistryObject; +import net.neoforged.neoforge.common.DeferredSpawnEggItem; +import net.neoforged.neoforge.registries.DeferredHolder; import java.util.Arrays; import java.util.HashMap; import java.util.List; +import java.util.Map; import static igentuman.nc.content.particles.ParticleSources.sources; import static igentuman.nc.setup.registration.Entities.FERAL_GHOUL; -import static igentuman.nc.setup.registration.NCSounds.SOUND_MAP; import static igentuman.nc.setup.registration.Registries.ITEMS; import static igentuman.nc.setup.registration.Tags.*; public class NCItems { - public static HashMap> NC_FOOD = new HashMap<>(); - public static HashMap> ALL_NC_ITEMS = new HashMap<>(); - - public static HashMap> NC_RECORDS = new HashMap<>(); - public static HashMap> NC_PARTS = new HashMap<>(); - public static HashMap> ION_SOURCES = new HashMap<>(); - public static HashMap> NC_SHIELDING = new HashMap<>(); - public static HashMap> NC_ITEMS = new HashMap<>(); - public static HashMap> NC_GEMS = new HashMap<>(); - public static HashMap> NC_INGOTS = new HashMap<>(); - public static HashMap> NC_CHUNKS = new HashMap<>(); - public static HashMap> NC_NUGGETS = new HashMap<>(); - public static HashMap> NC_PLATES = new HashMap<>(); - public static HashMap> NC_DUSTS = new HashMap<>(); - public static HashMap> ORE_BLOCK_ITEMS = new HashMap<>(); - public static HashMap> NC_BLOCKS_ITEMS = new HashMap<>(); - public static HashMap> NC_ELECTROMAGNETS_ITEMS = new HashMap<>(); - public static HashMap> NC_RF_AMPLIFIERS_ITEMS = new HashMap<>(); - public static HashMap> MULTIBLOCK_ITEMS = new HashMap<>(); + public static HashMap> NC_FOOD = new HashMap<>(); + public static HashMap> ALL_NC_ITEMS = new HashMap<>(); + + public static HashMap> NC_RECORDS = new HashMap<>(); + public static HashMap> NC_PARTS = new HashMap<>(); + public static HashMap> ION_SOURCES = new HashMap<>(); + public static HashMap> NC_SHIELDING = new HashMap<>(); + public static HashMap> NC_ITEMS = new HashMap<>(); + public static HashMap> NC_GEMS = new HashMap<>(); + public static HashMap> NC_INGOTS = new HashMap<>(); + public static HashMap> NC_CHUNKS = new HashMap<>(); + public static HashMap> NC_NUGGETS = new HashMap<>(); + public static HashMap> NC_PLATES = new HashMap<>(); + public static HashMap> NC_DUSTS = new HashMap<>(); + public static HashMap> ORE_BLOCK_ITEMS = new HashMap<>(); + public static HashMap> NC_BLOCKS_ITEMS = new HashMap<>(); + public static HashMap> NC_ELECTROMAGNETS_ITEMS = new HashMap<>(); + public static HashMap> NC_RF_AMPLIFIERS_ITEMS = new HashMap<>(); + public static HashMap> MULTIBLOCK_ITEMS = new HashMap<>(); public static final Item.Properties ITEM_PROPERTIES = new Item.Properties(); public static final Item.Properties ONE_ITEM_PROPERTIES = new Item.Properties().stacksTo(1).setNoRepair(); public static final Item.Properties THORIUM_PAXEL_PROPS = new Item.Properties().stacksTo(1).durability(5000).fireResistant(); @@ -50,75 +53,75 @@ public class NCItems { public static final Item.Properties HAZMAT_PROPS = new Item.Properties().stacksTo(1).durability(250); public static final Item.Properties TOUGH_PROPS = new Item.Properties().stacksTo(1).durability(2500).fireResistant(); public static final Item.Properties HEV_PROPS = new Item.Properties().stacksTo(1).durability(5500).fireResistant(); - public static final RegistryObject FERAL_GHOUL_SPAWN_EGG = ITEMS.register("feral_ghoul_spawn_egg", - () -> new ForgeSpawnEggItem(FERAL_GHOUL, 0x7e9680, 0xc5d1c5, new Item.Properties())); - public static final RegistryObject HAZMAT_MASK = - ITEMS.register("hazmat_mask", () -> new HazmatItem(ArmorMaterials.HAZMAT, ArmorItem.Type.HELMET, HAZMAT_PROPS)); - public static final RegistryObject HAZMAT_CHEST = - ITEMS.register("hazmat_chest", () -> new HazmatItem(ArmorMaterials.HAZMAT, ArmorItem.Type.CHESTPLATE, HAZMAT_PROPS)); - public static final RegistryObject HAZMAT_BOOTS = - ITEMS.register("hazmat_boots", () -> new HazmatItem(ArmorMaterials.HAZMAT, ArmorItem.Type.BOOTS, HAZMAT_PROPS)); - public static final RegistryObject HAZMAT_PANTS = - ITEMS.register("hazmat_pants", () -> new HazmatItem(ArmorMaterials.HAZMAT, ArmorItem.Type.LEGGINGS, HAZMAT_PROPS)); - - - public static final RegistryObject HEV_HELMET = - ITEMS.register("hev_helmet", () -> new HEVItem(ArmorMaterials.HEV, ArmorItem.Type.HELMET, HEV_PROPS)); - public static final RegistryObject HEV_CHEST = - ITEMS.register("hev_chest", () -> new HEVItem(ArmorMaterials.HEV, ArmorItem.Type.CHESTPLATE, HEV_PROPS)); - public static final RegistryObject HEV_BOOTS = - ITEMS.register("hev_boots", () -> new HEVItem(ArmorMaterials.HEV, ArmorItem.Type.BOOTS, HEV_PROPS)); - public static final RegistryObject HEV_PANTS = - ITEMS.register("hev_pants", () -> new HEVItem(ArmorMaterials.HEV, ArmorItem.Type.LEGGINGS, HEV_PROPS)); - - public static final RegistryObject TOUGH_HELMET = - ITEMS.register("tough_helmet", () -> new ArmorItem(ArmorMaterials.TOUGH, ArmorItem.Type.HELMET, TOUGH_PROPS)); - public static final RegistryObject TOUGH_CHEST = - ITEMS.register("tough_chest", () -> new ArmorItem(ArmorMaterials.TOUGH, ArmorItem.Type.CHESTPLATE, TOUGH_PROPS)); - public static final RegistryObject TOUGH_BOOTS = - ITEMS.register("tough_boots", () -> new ArmorItem(ArmorMaterials.TOUGH, ArmorItem.Type.BOOTS, TOUGH_PROPS)); - public static final RegistryObject TOUGH_PANTS = - ITEMS.register("tough_pants", () -> new ArmorItem(ArmorMaterials.TOUGH, ArmorItem.Type.LEGGINGS, TOUGH_PROPS)); - - public static final RegistryObject GEIGER_COUNTER = ITEMS.register("geiger_counter", () -> new GeigerCounterItem(ONE_ITEM_PROPERTIES)); - public static final RegistryObject LITHIUM_ION_CELL = ITEMS.register("lithium_ion_cell", () -> new BatteryItem(ONE_ITEM_PROPERTIES)); - public static final RegistryObject SPAXELHOE_TOUGH = ITEMS.register("spaxelhoe_tough", () -> new PaxelItem(7, 2, Tiers.TOUGH, TOUGH_PAXEL_PROPS)); - public static final RegistryObject SPAXELHOE_THORIUM = ITEMS.register("spaxelhoe_thorium", () -> new PaxelItem(3, 1, Tiers.THORIUM, THORIUM_PAXEL_PROPS)); - public static final RegistryObject QNP = ITEMS.register("qnp", () -> new QNP(Tiers.QNP, 11, 2F, ONE_ITEM_PROPERTIES)); - public static final RegistryObject MULTITOOL = ITEMS.register("multitool", () -> new MultitoolItem(ONE_ITEM_PROPERTIES)); - public static final RegistryObject UNKNOWN_INGREDIENT = ITEMS.register("unknown_ingredient", () -> new Item(ONE_ITEM_PROPERTIES)); + public static final DeferredHolder FERAL_GHOUL_SPAWN_EGG = ITEMS.register("feral_ghoul_spawn_egg", + () -> new DeferredSpawnEggItem(FERAL_GHOUL, 0x7e9680, 0xc5d1c5, new Item.Properties())); + public static final DeferredHolder HAZMAT_MASK = + ITEMS.register("hazmat_mask", () -> new HazmatItem(NCArmorMaterials.HAZMAT, ArmorItem.Type.HELMET, HAZMAT_PROPS)); + public static final DeferredHolder HAZMAT_CHEST = + ITEMS.register("hazmat_chest", () -> new HazmatItem(NCArmorMaterials.HAZMAT, ArmorItem.Type.CHESTPLATE, HAZMAT_PROPS)); + public static final DeferredHolder HAZMAT_BOOTS = + ITEMS.register("hazmat_boots", () -> new HazmatItem(NCArmorMaterials.HAZMAT, ArmorItem.Type.BOOTS, HAZMAT_PROPS)); + public static final DeferredHolder HAZMAT_PANTS = + ITEMS.register("hazmat_pants", () -> new HazmatItem(NCArmorMaterials.HAZMAT, ArmorItem.Type.LEGGINGS, HAZMAT_PROPS)); + + + public static final DeferredHolder HEV_HELMET = + ITEMS.register("hev_helmet", () -> new HEVItem(NCArmorMaterials.HEV, ArmorItem.Type.HELMET, HEV_PROPS)); + public static final DeferredHolder HEV_CHEST = + ITEMS.register("hev_chest", () -> new HEVItem(NCArmorMaterials.HEV, ArmorItem.Type.CHESTPLATE, HEV_PROPS)); + public static final DeferredHolder HEV_BOOTS = + ITEMS.register("hev_boots", () -> new HEVItem(NCArmorMaterials.HEV, ArmorItem.Type.BOOTS, HEV_PROPS)); + public static final DeferredHolder HEV_PANTS = + ITEMS.register("hev_pants", () -> new HEVItem(NCArmorMaterials.HEV, ArmorItem.Type.LEGGINGS, HEV_PROPS)); + + public static final DeferredHolder TOUGH_HELMET = + ITEMS.register("tough_helmet", () -> new ArmorItem(NCArmorMaterials.TOUGH, ArmorItem.Type.HELMET, TOUGH_PROPS)); + public static final DeferredHolder TOUGH_CHEST = + ITEMS.register("tough_chest", () -> new ArmorItem(NCArmorMaterials.TOUGH, ArmorItem.Type.CHESTPLATE, TOUGH_PROPS)); + public static final DeferredHolder TOUGH_BOOTS = + ITEMS.register("tough_boots", () -> new ArmorItem(NCArmorMaterials.TOUGH, ArmorItem.Type.BOOTS, TOUGH_PROPS)); + public static final DeferredHolder TOUGH_PANTS = + ITEMS.register("tough_pants", () -> new ArmorItem(NCArmorMaterials.TOUGH, ArmorItem.Type.LEGGINGS, TOUGH_PROPS)); + + public static final DeferredHolder GEIGER_COUNTER = ITEMS.register("geiger_counter", () -> new GeigerCounterItem(ONE_ITEM_PROPERTIES)); + public static final DeferredHolder LITHIUM_ION_CELL = ITEMS.register("lithium_ion_cell", () -> new BatteryItem(ONE_ITEM_PROPERTIES)); + public static final DeferredHolder SPAXELHOE_TOUGH = ITEMS.register("spaxelhoe_tough", () -> new PaxelItem(Tiers.TOUGH, TOUGH_PAXEL_PROPS)); + public static final DeferredHolder SPAXELHOE_THORIUM = ITEMS.register("spaxelhoe_thorium", () -> new PaxelItem(Tiers.THORIUM, THORIUM_PAXEL_PROPS)); + public static final DeferredHolder QNP = ITEMS.register("qnp", () -> new QNP(Tiers.QNP, 11, 2F, ONE_ITEM_PROPERTIES)); + public static final DeferredHolder MULTITOOL = ITEMS.register("multitool", () -> new MultitoolItem(ONE_ITEM_PROPERTIES)); + public static final DeferredHolder UNKNOWN_INGREDIENT = ITEMS.register("unknown_ingredient", () -> new Item(ONE_ITEM_PROPERTIES)); public static final TagKey AMPLIFIERS_ITEMS = itemTag("amplifiers"); public static final TagKey ELECTROMAGNETS_ITEMS = itemTag("electromagnets"); - public static RegistryObject registerItem(String name) { + public static DeferredHolder registerItem(String name) { return ITEMS.register(name, () -> new Item(ITEM_PROPERTIES)); } - public static RegistryObject registerIngot(String name) { + public static DeferredHolder registerIngot(String name) { return ITEMS.register(name, () -> new NCIngotItem(ITEM_PROPERTIES)); } - public static RegistryObject registerChunk(String name) { + public static DeferredHolder registerChunk(String name) { return ITEMS.register(name, () -> new NCChunkItem(ITEM_PROPERTIES)); } - public static RegistryObject registerNugget(String name) { + public static DeferredHolder registerNugget(String name) { return ITEMS.register(name, () -> new NCNuggetItem(ITEM_PROPERTIES)); } - public static RegistryObject registerPlate(String name) { + public static DeferredHolder registerPlate(String name) { return ITEMS.register(name, () -> new NCPlateItem(ITEM_PROPERTIES)); } - public static RegistryObject registerDust(String name) { + public static DeferredHolder registerDust(String name) { return ITEMS.register(name, () -> new NCDustItem(ITEM_PROPERTIES)); } - public static RegistryObject registerGem(String name) { + public static DeferredHolder registerGem(String name) { return ITEMS.register(name, () -> new NCBGemItem(ITEM_PROPERTIES)); } - public static RegistryObject registerBlockItem(String name) { + public static DeferredHolder registerBlockItem(String name) { return ITEMS.register(name, () -> new NCBlockItem(ITEM_PROPERTIES)); } @@ -148,14 +151,15 @@ private static void registerParticleSources() { private static void registerRecords() { - List items = Arrays.asList( - "end_of_the_world", - "hyperspace", - "money_for_nothing", - "wanderer" + Map> songKeys = Map.of( + "end_of_the_world", NCMusicDiscs.END_OF_THE_WORLD, + "hyperspace", NCMusicDiscs.HYPERSPACE, + "money_for_nothing", NCMusicDiscs.MONEY_FOR_NOTHING, + "wanderer", NCMusicDiscs.WANDERER ); - for(String name: items) { - NC_RECORDS.put(name, ITEMS.register(name, () -> new MusicDiscItem(15, SOUND_MAP.get(name), new Item.Properties(), 3600))); + for (String name : songKeys.keySet()) { + ResourceKey songKey = songKeys.get(name); + NC_RECORDS.put(name, ITEMS.register(name, () -> NCMusicDiscs.createDisc(songKey))); ALL_NC_ITEMS.put(name, NC_RECORDS.get(name)); } } @@ -179,15 +183,13 @@ private static void registerFood() { int finalI = Math.max(i, 1); NC_FOOD.put(name, ITEMS.register(name, () -> new Item(new Item.Properties().food( - new FoodProperties.Builder().nutrition(finalI) - .saturationMod(finalI).build() + NCFood.simple(finalI, finalI) )))); ALL_NC_ITEMS.put(name, NC_FOOD.get(name)); } for(String name: List.of("rad_x","radaway","radaway_slow")) { NC_FOOD.put(name, ITEMS.register(name, () -> new RadAwayItem(new Item.Properties().food( - new FoodProperties.Builder().nutrition(0) - .saturationMod(0).alwaysEat().build() + NCFood.alwaysEdible(0, 0) )))); ALL_NC_ITEMS.put(name, NC_FOOD.get(name)); } diff --git a/src/main/java/igentuman/nc/setup/registration/NCProcessors.java b/src/main/java/igentuman/nc/setup/registration/NCProcessors.java index 6340ca438..c1ca235c1 100644 --- a/src/main/java/igentuman/nc/setup/registration/NCProcessors.java +++ b/src/main/java/igentuman/nc/setup/registration/NCProcessors.java @@ -11,8 +11,8 @@ import net.minecraft.world.level.block.SoundType; import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraft.world.level.block.state.BlockBehaviour; -import net.minecraftforge.common.extensions.IForgeMenuType; -import net.minecraftforge.registries.RegistryObject; +import net.neoforged.neoforge.common.extensions.IMenuTypeExtension; +import net.neoforged.neoforge.registries.DeferredHolder; import java.lang.reflect.InvocationTargetException; import java.util.HashMap; @@ -20,12 +20,12 @@ import static igentuman.nc.setup.registration.Registries.*; public class NCProcessors { - public static HashMap> PROCESSORS = new HashMap<>(); - public static HashMap> PROCESSOR_BLOCKS_ITEMS = new HashMap<>(); + public static HashMap> PROCESSORS = new HashMap<>(); + public static HashMap> PROCESSOR_BLOCKS_ITEMS = new HashMap<>(); public static final Item.Properties PROCESSOR_ITEM_PROPERTIES = new Item.Properties(); public static final BlockBehaviour.Properties PROCESSOR_BLOCK_PROPERTIES = BlockBehaviour.Properties.of().sound(SoundType.METAL).strength(2f).requiresCorrectToolForDrops(); - public static HashMap>>> PROCESSORS_CONTAINERS = new HashMap<>(); - public static HashMap>> PROCESSORS_BE = new HashMap<>(); + public static HashMap, MenuType>>> PROCESSORS_CONTAINERS = new HashMap<>(); + public static HashMap, BlockEntityType>> PROCESSORS_BE = new HashMap<>(); public static void init() { registerBlocks(); @@ -37,7 +37,7 @@ public static void init() { private static void registerContainers() { for(String name: Processors.all().keySet()) { PROCESSORS_CONTAINERS.put(name, CONTAINERS.register(name, - () -> IForgeMenuType.create((windowId, inv, data) -> { + () -> IMenuTypeExtension.create((windowId, inv, data) -> { NCProcessorContainer o = null; try { o = (NCProcessorContainer) Processors.all().get(name).getContainerConstructor() @@ -71,7 +71,7 @@ private static void registerBlocks() { } } - public static RegistryObject fromBlock(RegistryObject block) { + public static DeferredHolder fromBlock(DeferredHolder block) { return ITEMS.register(block.getId().getPath(), () -> new ProcessorBlockItem(block.get(), PROCESSOR_ITEM_PROPERTIES)); } } diff --git a/src/main/java/igentuman/nc/setup/registration/NCSounds.java b/src/main/java/igentuman/nc/setup/registration/NCSounds.java index 0950c2fd8..49c4aea63 100644 --- a/src/main/java/igentuman/nc/setup/registration/NCSounds.java +++ b/src/main/java/igentuman/nc/setup/registration/NCSounds.java @@ -1,7 +1,7 @@ package igentuman.nc.setup.registration; import net.minecraft.sounds.SoundEvent; -import net.minecraftforge.registries.RegistryObject; +import net.neoforged.neoforge.registries.DeferredHolder; import java.util.HashMap; import java.util.List; import static igentuman.nc.NuclearCraft.rl; @@ -12,31 +12,31 @@ public final class NCSounds { private NCSounds() { } - public static final List> GEIGER_SOUNDS = initGeigerSounds(); - public static final RegistryObject BOSS_ANGRY = SOUND_EVENTS.register("boss_angry", () -> SoundEvent.createVariableRangeEvent(rl( "boss_angry"))); - public static final RegistryObject BOSS_ACTION = SOUND_EVENTS.register("boss_action", () -> SoundEvent.createVariableRangeEvent(rl( "boss_action"))); - public static final RegistryObject BOSS_HIT = SOUND_EVENTS.register("boss_hit", () -> SoundEvent.createVariableRangeEvent(rl( "boss_hit"))); - public static final RegistryObject BOSS_IDLE = SOUND_EVENTS.register("boss_idle", () -> SoundEvent.createVariableRangeEvent(rl( "boss_idle"))); - public static final RegistryObject FERAL_GHOUL_CHARGE = SOUND_EVENTS.register("feral_ghoul_charge", () -> SoundEvent.createVariableRangeEvent(rl( "feral_ghoul_charge"))); - public static final RegistryObject FERAL_GHOUL_DEATH = SOUND_EVENTS.register("feral_ghoul_death", () -> SoundEvent.createVariableRangeEvent(rl( "feral_ghoul_death"))); - public static final RegistryObject ITEM_CHARGED = SOUND_EVENTS.register("charge_energy", () -> SoundEvent.createVariableRangeEvent(rl( "charge_energy"))); - public static final RegistryObject FUSION_CHARGING = SOUND_EVENTS.register("tile.fusion_charging", () -> SoundEvent.createVariableRangeEvent(rl( "tile.fusion_charging"))); - public static final RegistryObject LASER_SHOOT = SOUND_EVENTS.register("tile.laser_shoot", () -> SoundEvent.createVariableRangeEvent(rl( "tile.laser_shoot"))); - public static final RegistryObject BLACKHOLE_SPAWN = SOUND_EVENTS.register("tile.blackhole_spawn", () -> SoundEvent.createVariableRangeEvent(rl( "tile.blackhole_spawn"))); - public static final RegistryObject BLACKHOLE_IDLE = SOUND_EVENTS.register("tile.blackhole_idle", () -> SoundEvent.createVariableRangeEvent(rl( "tile.blackhole_idle"))); - public static final RegistryObject FUSION_READY = SOUND_EVENTS.register("tile.fusion_ready", () -> SoundEvent.createVariableRangeEvent(rl( "tile.fusion_ready"))); - public static final RegistryObject FUSION_RUNNING = SOUND_EVENTS.register("tile.fusion_running", () -> SoundEvent.createVariableRangeEvent(rl( "tile.fusion_running"))); - public static final RegistryObject TURBINE = SOUND_EVENTS.register("tile.turbine", () -> SoundEvent.createVariableRangeEvent(rl( "tile.turbine"))); - public static final RegistryObject FISSION_REACTOR = SOUND_EVENTS.register("tile.fission_reactor", () -> SoundEvent.createVariableRangeEvent(rl( "tile.fission_reactor"))); - public static final RegistryObject RECORD_WANDERER = SOUND_EVENTS.register("music.wanderer", () -> SoundEvent.createVariableRangeEvent(rl( "music.wanderer"))); - public static final RegistryObject RECORD_END_OF_THE_WORLD = SOUND_EVENTS.register("music.end_of_the_world", () -> SoundEvent.createVariableRangeEvent(rl( "music.end_of_the_world"))); - public static final RegistryObject RECORD_MONEY_FOR_NOTHING = SOUND_EVENTS.register("music.money_for_nothing", () -> SoundEvent.createVariableRangeEvent(rl( "music.money_for_nothing"))); - public static final RegistryObject RECORD_HYPERSPACE = SOUND_EVENTS.register("music.hyperspace", () -> SoundEvent.createVariableRangeEvent(rl( "music.hyperspace"))); - - public static final HashMap> SOUND_MAP = initSoundMap(); - - private static HashMap> initSoundMap() { - HashMap> soundMap = new HashMap<>(); + public static final List> GEIGER_SOUNDS = initGeigerSounds(); + public static final DeferredHolder BOSS_ANGRY = SOUND_EVENTS.register("boss_angry", () -> SoundEvent.createVariableRangeEvent(rl( "boss_angry"))); + public static final DeferredHolder BOSS_ACTION = SOUND_EVENTS.register("boss_action", () -> SoundEvent.createVariableRangeEvent(rl( "boss_action"))); + public static final DeferredHolder BOSS_HIT = SOUND_EVENTS.register("boss_hit", () -> SoundEvent.createVariableRangeEvent(rl( "boss_hit"))); + public static final DeferredHolder BOSS_IDLE = SOUND_EVENTS.register("boss_idle", () -> SoundEvent.createVariableRangeEvent(rl( "boss_idle"))); + public static final DeferredHolder FERAL_GHOUL_CHARGE = SOUND_EVENTS.register("feral_ghoul_charge", () -> SoundEvent.createVariableRangeEvent(rl( "feral_ghoul_charge"))); + public static final DeferredHolder FERAL_GHOUL_DEATH = SOUND_EVENTS.register("feral_ghoul_death", () -> SoundEvent.createVariableRangeEvent(rl( "feral_ghoul_death"))); + public static final DeferredHolder ITEM_CHARGED = SOUND_EVENTS.register("charge_energy", () -> SoundEvent.createVariableRangeEvent(rl( "charge_energy"))); + public static final DeferredHolder FUSION_CHARGING = SOUND_EVENTS.register("tile.fusion_charging", () -> SoundEvent.createVariableRangeEvent(rl( "tile.fusion_charging"))); + public static final DeferredHolder LASER_SHOOT = SOUND_EVENTS.register("tile.laser_shoot", () -> SoundEvent.createVariableRangeEvent(rl( "tile.laser_shoot"))); + public static final DeferredHolder BLACKHOLE_SPAWN = SOUND_EVENTS.register("tile.blackhole_spawn", () -> SoundEvent.createVariableRangeEvent(rl( "tile.blackhole_spawn"))); + public static final DeferredHolder BLACKHOLE_IDLE = SOUND_EVENTS.register("tile.blackhole_idle", () -> SoundEvent.createVariableRangeEvent(rl( "tile.blackhole_idle"))); + public static final DeferredHolder FUSION_READY = SOUND_EVENTS.register("tile.fusion_ready", () -> SoundEvent.createVariableRangeEvent(rl( "tile.fusion_ready"))); + public static final DeferredHolder FUSION_RUNNING = SOUND_EVENTS.register("tile.fusion_running", () -> SoundEvent.createVariableRangeEvent(rl( "tile.fusion_running"))); + public static final DeferredHolder TURBINE = SOUND_EVENTS.register("tile.turbine", () -> SoundEvent.createVariableRangeEvent(rl( "tile.turbine"))); + public static final DeferredHolder FISSION_REACTOR = SOUND_EVENTS.register("tile.fission_reactor", () -> SoundEvent.createVariableRangeEvent(rl( "tile.fission_reactor"))); + public static final DeferredHolder RECORD_WANDERER = SOUND_EVENTS.register("music.wanderer", () -> SoundEvent.createVariableRangeEvent(rl( "music.wanderer"))); + public static final DeferredHolder RECORD_END_OF_THE_WORLD = SOUND_EVENTS.register("music.end_of_the_world", () -> SoundEvent.createVariableRangeEvent(rl( "music.end_of_the_world"))); + public static final DeferredHolder RECORD_MONEY_FOR_NOTHING = SOUND_EVENTS.register("music.money_for_nothing", () -> SoundEvent.createVariableRangeEvent(rl( "music.money_for_nothing"))); + public static final DeferredHolder RECORD_HYPERSPACE = SOUND_EVENTS.register("music.hyperspace", () -> SoundEvent.createVariableRangeEvent(rl( "music.hyperspace"))); + + public static final HashMap> SOUND_MAP = initSoundMap(); + + private static HashMap> initSoundMap() { + HashMap> soundMap = new HashMap<>(); soundMap.put("wanderer", RECORD_WANDERER); soundMap.put("end_of_the_world", RECORD_END_OF_THE_WORLD); soundMap.put("money_for_nothing", RECORD_MONEY_FOR_NOTHING); @@ -44,7 +44,7 @@ private static HashMap> initSoundMap() { return soundMap; } - private static List> initGeigerSounds() { + private static List> initGeigerSounds() { return List.of( SOUND_EVENTS.register("geiger_1", () -> SoundEvent.createVariableRangeEvent(rl( "geiger_1"))), SOUND_EVENTS.register("geiger_2", () -> SoundEvent.createVariableRangeEvent(rl( "geiger_2"))), diff --git a/src/main/java/igentuman/nc/setup/registration/NCStorageBlocks.java b/src/main/java/igentuman/nc/setup/registration/NCStorageBlocks.java index e57bf9404..fc7ad3120 100644 --- a/src/main/java/igentuman/nc/setup/registration/NCStorageBlocks.java +++ b/src/main/java/igentuman/nc/setup/registration/NCStorageBlocks.java @@ -16,23 +16,23 @@ import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraft.world.level.block.state.BlockBehaviour; -import net.minecraftforge.common.extensions.IForgeMenuType; -import net.minecraftforge.registries.RegistryObject; +import net.neoforged.neoforge.common.extensions.IMenuTypeExtension; +import net.neoforged.neoforge.registries.DeferredHolder; import java.util.HashMap; import static igentuman.nc.setup.registration.Registries.*; public class NCStorageBlocks { - public static HashMap> STORAGE_BLOCKS = new HashMap<>(); - public static HashMap> BLOCK_ITEMS = new HashMap<>(); + public static HashMap> STORAGE_BLOCKS = new HashMap<>(); + public static HashMap> BLOCK_ITEMS = new HashMap<>(); public static final Item.Properties ITEM_PROPERTIES = new Item.Properties(); public static final BlockBehaviour.Properties BLOCK_PROPERTIES = BlockBehaviour.Properties.of().sound(SoundType.METAL).strength(2f).requiresCorrectToolForDrops().noOcclusion(); - public static HashMap>> STORAGE_BE = new HashMap<>(); - public static final RegistryObject>> STORAGE_CONTAINER = CONTAINERS.register("storage_container", - () -> IForgeMenuType.create((windowId, inv, data) -> new StorageContainerContainer<>(windowId, data.readBlockPos(), inv))); - public static final RegistryObject>> STORAGE_ITEM_CONTAINER = CONTAINERS.register("storage_item_container", - () -> IForgeMenuType.create((windowId, inv, data) -> new StorageContainerItemContainer<>(windowId, data.readBlockPos(), inv, data.readInt()))); + public static HashMap, BlockEntityType>> STORAGE_BE = new HashMap<>(); + public static final DeferredHolder, MenuType>> STORAGE_CONTAINER = CONTAINERS.register("storage_container", + () -> IMenuTypeExtension.create((windowId, inv, data) -> new StorageContainerContainer<>(windowId, data.readBlockPos(), inv))); + public static final DeferredHolder, MenuType>> STORAGE_ITEM_CONTAINER = CONTAINERS.register("storage_item_container", + () -> IMenuTypeExtension.create((windowId, inv, data) -> new StorageContainerItemContainer<>(windowId, data.readBlockPos(), inv, data.readInt()))); public static void init() { registerBlocks(); registerBlockEntities(); @@ -71,15 +71,15 @@ private static void registerBlocks() { } } - public static RegistryObject fromBarrelBlock(RegistryObject block) { + public static DeferredHolder fromBarrelBlock(DeferredHolder block) { return ITEMS.register(block.getId().getPath(), () -> new BarrelBlockItem(block.get(), ITEM_PROPERTIES)); } - public static RegistryObject fromContainerBlock(RegistryObject block) { + public static DeferredHolder fromContainerBlock(DeferredHolder block) { return ITEMS.register(block.getId().getPath(), () -> new ContainerBlockItem(block.get(), ITEM_PROPERTIES)); } - public static RegistryObject fromBlock(RegistryObject block) { + public static DeferredHolder fromBlock(DeferredHolder block) { return ITEMS.register(block.getId().getPath(), () -> new BlockItem(block.get(), ITEM_PROPERTIES)); } diff --git a/src/main/java/igentuman/nc/setup/registration/Registries.java b/src/main/java/igentuman/nc/setup/registration/Registries.java index 57345f77b..4bb56995e 100644 --- a/src/main/java/igentuman/nc/setup/registration/Registries.java +++ b/src/main/java/igentuman/nc/setup/registration/Registries.java @@ -1,6 +1,15 @@ package igentuman.nc.setup.registration; import com.mojang.serialization.Codec; +import com.mojang.serialization.MapCodec; +import igentuman.api.platform.NCArmorMaterials; +import igentuman.api.platform.NCConditions; +import igentuman.api.platform.NCFluidCapability; +import igentuman.nc.util.FluidTagEmptyCondition; +import igentuman.nc.util.GTCEUCompatibilityCondition; +import igentuman.nc.util.WastelandEnabledCondition; +import net.minecraft.core.component.DataComponentType; +import net.neoforged.neoforge.common.conditions.ICondition; import igentuman.nc.NuclearCraft; import igentuman.nc.registry.ParticleTypeDeferredRegister; import igentuman.nc.registry.RecipeSerializerDeferredRegister; @@ -8,7 +17,6 @@ import net.minecraft.core.registries.BuiltInRegistries; import net.minecraft.resources.ResourceKey; import net.minecraft.sounds.SoundEvent; -import net.minecraft.world.damagesource.DamageSource; import net.minecraft.world.damagesource.DamageType; import net.minecraft.world.effect.MobEffect; import net.minecraft.world.entity.EntityType; @@ -26,35 +34,34 @@ import net.minecraft.world.level.levelgen.placement.PlacementModifierType; import net.minecraft.world.level.levelgen.structure.StructureType; import net.minecraft.world.level.material.Fluid; -import net.minecraftforge.common.world.BiomeModifier; -import net.minecraftforge.eventbus.api.IEventBus; -import net.minecraftforge.fluids.FluidType; -import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext; -import net.minecraftforge.registries.DeferredRegister; -import net.minecraftforge.registries.ForgeRegistries; +import net.neoforged.neoforge.common.world.BiomeModifier; +import net.neoforged.bus.api.IEventBus; +import net.neoforged.neoforge.fluids.FluidType; +import net.neoforged.neoforge.registries.DeferredRegister; +import net.neoforged.neoforge.registries.NeoForgeRegistries; import static igentuman.nc.NuclearCraft.MODID; import static igentuman.nc.recipes.NcRecipeType.RECIPE_TYPES; public class Registries { - public static final DeferredRegister SOUND_EVENTS = DeferredRegister.create(ForgeRegistries.SOUND_EVENTS, MODID); + public static final DeferredRegister SOUND_EVENTS = DeferredRegister.create(BuiltInRegistries.SOUND_EVENT, MODID); public static final ParticleTypeDeferredRegister PARTICLE_TYPES = new ParticleTypeDeferredRegister(NuclearCraft.MODID); public static final DeferredRegister CREATIVE_TABS = DeferredRegister.create(net.minecraft.core.registries.Registries.CREATIVE_MODE_TAB, MODID); - public static final ResourceKey> BLOCK_REGISTRY = ForgeRegistries.BLOCKS.getRegistryKey(); - public static final ResourceKey> ITEM_REGISTRY = ForgeRegistries.ITEMS.getRegistryKey(); - public static final DeferredRegister BLOCKS = DeferredRegister.create(ForgeRegistries.BLOCKS, MODID); - public static final DeferredRegister ITEMS = DeferredRegister.create(ForgeRegistries.ITEMS, MODID); - public static final DeferredRegister FLUIDS = DeferredRegister.create(ForgeRegistries.FLUIDS, MODID); - public static final DeferredRegister FLUID_TYPES = DeferredRegister.create(ForgeRegistries.Keys.FLUID_TYPES, MODID); - public static final DeferredRegister> BLOCK_ENTITIES = DeferredRegister.create(ForgeRegistries.BLOCK_ENTITY_TYPES, MODID); - public static final DeferredRegister> CONTAINERS = DeferredRegister.create(ForgeRegistries.MENU_TYPES, MODID); - public static final DeferredRegister> ENTITIES = DeferredRegister.create(ForgeRegistries.ENTITY_TYPES, MODID); - public static final DeferredRegister> BIOME_MODIFIERS = DeferredRegister.create(ForgeRegistries.Keys.BIOME_MODIFIER_SERIALIZERS, MODID); + public static final ResourceKey> BLOCK_REGISTRY = net.minecraft.core.registries.Registries.BLOCK; + public static final ResourceKey> ITEM_REGISTRY = net.minecraft.core.registries.Registries.ITEM; + public static final DeferredRegister.Blocks BLOCKS = DeferredRegister.createBlocks(MODID); + public static final DeferredRegister.Items ITEMS = DeferredRegister.createItems(MODID); + public static final DeferredRegister FLUIDS = DeferredRegister.create(BuiltInRegistries.FLUID, MODID); + public static final DeferredRegister FLUID_TYPES = DeferredRegister.create(NeoForgeRegistries.Keys.FLUID_TYPES, MODID); + public static final DeferredRegister> BLOCK_ENTITIES = DeferredRegister.create(BuiltInRegistries.BLOCK_ENTITY_TYPE, MODID); + public static final DeferredRegister> CONTAINERS = DeferredRegister.create(BuiltInRegistries.MENU, MODID); + public static final DeferredRegister> ENTITIES = DeferredRegister.create(BuiltInRegistries.ENTITY_TYPE, MODID); + public static final DeferredRegister> BIOME_MODIFIERS = DeferredRegister.create(NeoForgeRegistries.Keys.BIOME_MODIFIER_SERIALIZERS, MODID); public static final DeferredRegister> STRUCTURES = DeferredRegister.create(net.minecraft.core.registries.Registries.STRUCTURE_TYPE, MODID); public static final DeferredRegister PLACED_FEATURES = DeferredRegister.create(net.minecraft.core.registries.Registries.PLACED_FEATURE, MODID); - public static final DeferredRegister> FEATURE_REGISTER = DeferredRegister.create(ForgeRegistries.FEATURES, MODID); - public static final DeferredRegister> SERIALIZERS = DeferredRegister.create(ForgeRegistries.RECIPE_SERIALIZERS, MODID); - public static final DeferredRegister EFFECTS = DeferredRegister.create(ForgeRegistries.MOB_EFFECTS, MODID); + public static final DeferredRegister> FEATURE_REGISTER = DeferredRegister.create(BuiltInRegistries.FEATURE, MODID); + public static final DeferredRegister> SERIALIZERS = DeferredRegister.create(BuiltInRegistries.RECIPE_SERIALIZER, MODID); + public static final DeferredRegister EFFECTS = DeferredRegister.create(BuiltInRegistries.MOB_EFFECT, MODID); public static final RecipeSerializerDeferredRegister RECIPE_SERIALIZERS = new RecipeSerializerDeferredRegister(NuclearCraft.MODID); public static final DeferredRegister> CONFIGURED = DeferredRegister.create(net.minecraft.core.registries.Registries.CONFIGURED_FEATURE, MODID); public static final DeferredRegister> PLACEMENT_MODIFIER = DeferredRegister.create(net.minecraft.core.registries.Registries.PLACEMENT_MODIFIER_TYPE, MODID); @@ -62,9 +69,10 @@ public class Registries { public static final DeferredRegister> PLACEMENT_MODIFIERS = DeferredRegister.create(net.minecraft.core.registries.Registries.PLACEMENT_MODIFIER_TYPE, MODID); public static final DeferredRegister BIOMES = DeferredRegister.create(net.minecraft.core.registries.Registries.BIOME, MODID); public static final DeferredRegister DAMAGE_SOURCE = DeferredRegister.create(net.minecraft.core.registries.Registries.DAMAGE_TYPE, MODID); + public static final DeferredRegister.DataComponents DATA_COMPONENTS = DeferredRegister.createDataComponents(net.minecraft.core.registries.Registries.DATA_COMPONENT_TYPE, MODID); + public static final DeferredRegister> CONDITION_CODECS = NCConditions.createRegistry(MODID); - public static void init(FMLJavaModLoadingContext context) { - IEventBus bus = context.getModEventBus(); + public static void init(IEventBus bus) { DAMAGE_SOURCE.register(bus); BLOCKS.register(bus); ITEMS.register(bus); @@ -89,5 +97,14 @@ public static void init(FMLJavaModLoadingContext context) { DIMENSION_TYPE.register(bus); PLACEMENT_MODIFIERS.register(bus); BIOMES.register(bus); + // Add entries to DeferredRegisters BEFORE calling .register(bus) on them + NCFluidCapability.init(DATA_COMPONENTS); + DATA_COMPONENTS.register(bus); + NCConditions.register(CONDITION_CODECS, "fluid_tag_empty", () -> FluidTagEmptyCondition.CODEC); + NCConditions.register(CONDITION_CODECS, "wasteland_enabled", () -> WastelandEnabledCondition.CODEC); + NCConditions.register(CONDITION_CODECS, "gtceu_compat_enabled", () -> GTCEUCompatibilityCondition.CODEC); + CONDITION_CODECS.register(bus); + NCArmorMaterials.init(bus); + NCAttachments.init(bus); } } diff --git a/src/main/java/igentuman/nc/setup/registration/Tags.java b/src/main/java/igentuman/nc/setup/registration/Tags.java index c3b39665e..747402bc9 100644 --- a/src/main/java/igentuman/nc/setup/registration/Tags.java +++ b/src/main/java/igentuman/nc/setup/registration/Tags.java @@ -7,7 +7,8 @@ import java.util.HashMap; -import static igentuman.nc.NuclearCraft.forgeRl; +import static igentuman.nc.NuclearCraft.neoforgeRl; +import static igentuman.nc.NuclearCraft.resourceLoc; import static igentuman.nc.NuclearCraft.rl; import static igentuman.nc.setup.registration.Registries.BLOCK_REGISTRY; import static igentuman.nc.setup.registration.Registries.ITEM_REGISTRY; @@ -27,7 +28,7 @@ public class Tags { public final static HashMap> BLOCK_TAGS = new HashMap<>(); public final static HashMap> GASES_TAG = new HashMap<>(); public final static HashMap> LIQUIDS_TAG = new HashMap<>(); - public final static TagKey PLATE_TAG = TagKey.create(ITEM_REGISTRY, forgeRl("plates")); + public final static TagKey PLATE_TAG = TagKey.create(ITEM_REGISTRY, resourceLoc("plates")); public final static TagKey PARTS_TAG = itemTag("parts"); public final static HashMap> NC_ISOTOPE_TAG = new HashMap<>(); public final static HashMap> NC_WASTE_TAG = new HashMap<>(); @@ -90,54 +91,54 @@ public static void addChunkTag(String name) { public static TagKey forgeIngot(String name) { - return TagKey.create(ITEM_REGISTRY, forgeRl("ingots/"+name)); + return TagKey.create(ITEM_REGISTRY, resourceLoc("ingots/"+name)); } public static TagKey forgeGem(String name) { - return TagKey.create(ITEM_REGISTRY, forgeRl("gems/"+name)); + return TagKey.create(ITEM_REGISTRY, resourceLoc("gems/"+name)); } public static TagKey forgeNugget(String name) { - return TagKey.create(ITEM_REGISTRY, forgeRl("nuggets/"+name)); + return TagKey.create(ITEM_REGISTRY, resourceLoc("nuggets/"+name)); } public static TagKey forgeBlock(String name) { - return TagKey.create(ITEM_REGISTRY, forgeRl("storage_blocks/"+name)); + return TagKey.create(ITEM_REGISTRY, resourceLoc("storage_blocks/"+name)); } public static TagKey forgeOre(String name) { - return TagKey.create(ITEM_REGISTRY, forgeRl("ores/"+name)); + return TagKey.create(ITEM_REGISTRY, resourceLoc("ores/"+name)); } public static TagKey forgeBucket(String name) { - return TagKey.create(ITEM_REGISTRY, forgeRl("buckets/"+name)); + return TagKey.create(ITEM_REGISTRY, resourceLoc("buckets/"+name)); } public static TagKey forgeChunk(String name) { - return TagKey.create(ITEM_REGISTRY, forgeRl("raw_materials/"+name)); + return TagKey.create(ITEM_REGISTRY, resourceLoc("raw_materials/"+name)); } public static TagKey forgeIonSource(String name) { - return TagKey.create(ITEM_REGISTRY, forgeRl("ion_source/"+name)); + return TagKey.create(ITEM_REGISTRY, resourceLoc("ion_source/"+name)); } public static TagKey forgeDust(String name) { - return TagKey.create(ITEM_REGISTRY, forgeRl("dusts/"+name)); + return TagKey.create(ITEM_REGISTRY, resourceLoc("dusts/"+name)); } public static TagKey forgePlate(String name) { - return TagKey.create(ITEM_REGISTRY, forgeRl("plates/"+name)); + return TagKey.create(ITEM_REGISTRY, resourceLoc("plates/"+name)); } public static TagKey forgeDye(String name) { - return TagKey.create(ITEM_REGISTRY, forgeRl("dye/"+name)); + return TagKey.create(ITEM_REGISTRY, resourceLoc("dye/"+name)); } } diff --git a/src/main/java/igentuman/nc/setup/registration/Villager.java b/src/main/java/igentuman/nc/setup/registration/Villager.java index e53cae5fc..aa848f09c 100644 --- a/src/main/java/igentuman/nc/setup/registration/Villager.java +++ b/src/main/java/igentuman/nc/setup/registration/Villager.java @@ -3,18 +3,17 @@ import com.google.common.collect.ImmutableSet; import igentuman.nc.recipes.ingredient.creator.IngredientCreatorAccess; import it.unimi.dsi.fastutil.ints.Int2ObjectMap; +import net.minecraft.core.registries.BuiltInRegistries; import net.minecraft.sounds.SoundEvents; import net.minecraft.world.entity.ai.village.poi.PoiType; import net.minecraft.world.entity.npc.VillagerProfession; import net.minecraft.world.entity.npc.VillagerTrades; +import igentuman.api.platform.NCTrading; import net.minecraft.world.item.ItemStack; -import net.minecraft.world.item.trading.MerchantOffer; -import net.minecraftforge.event.village.VillagerTradesEvent; -import net.minecraftforge.eventbus.api.IEventBus; -import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext; -import net.minecraftforge.registries.DeferredRegister; -import net.minecraftforge.registries.ForgeRegistries; -import net.minecraftforge.registries.RegistryObject; +import net.neoforged.neoforge.event.village.VillagerTradesEvent; +import net.neoforged.bus.api.IEventBus; +import net.neoforged.neoforge.registries.DeferredHolder; +import net.neoforged.neoforge.registries.DeferredRegister; import java.util.List; @@ -35,21 +34,20 @@ public class Villager { public static final DeferredRegister POI_TYPES = - DeferredRegister.create(ForgeRegistries.POI_TYPES, MODID); + DeferredRegister.create(BuiltInRegistries.POINT_OF_INTEREST_TYPE, MODID); public static final DeferredRegister VILLAGER_PROFESSIONS = - DeferredRegister.create(ForgeRegistries.VILLAGER_PROFESSIONS, MODID); + DeferredRegister.create(BuiltInRegistries.VILLAGER_PROFESSION, MODID); - public static final RegistryObject ANALYZER_POI = POI_TYPES.register("analyzer_poi", + public static final DeferredHolder ANALYZER_POI = POI_TYPES.register("analyzer_poi", () -> new PoiType(ImmutableSet.copyOf(PROCESSORS.get(ANALYZER).get().getStateDefinition().getPossibleStates()), 1, 1)); - public static final RegistryObject NUCLEAR_SCIENTIST = + public static final DeferredHolder NUCLEAR_SCIENTIST = VILLAGER_PROFESSIONS.register("nuclear_scientist", () -> new VillagerProfession("nuclear_scientist", - holder -> holder.get() == ANALYZER_POI.get(), holder -> holder.get() == ANALYZER_POI.get(), + holder -> holder.value() == ANALYZER_POI.get(), holder -> holder.value() == ANALYZER_POI.get(), ImmutableSet.of(), ImmutableSet.of(), SoundEvents.VILLAGER_WORK_LIBRARIAN)); - public static void init(FMLJavaModLoadingContext context) { - IEventBus bus = context.getModEventBus(); + public static void init(IEventBus bus) { POI_TYPES.register(bus); VILLAGER_PROFESSIONS.register(bus); } @@ -58,79 +56,79 @@ public static void addVillagerTrades(VillagerTradesEvent event) { if(event.getType() == Villager.NUCLEAR_SCIENTIST.get()) { Int2ObjectMap> trades = event.getTrades(); - trades.get(1).add((pTrader, pRandom) -> new MerchantOffer( - new ItemStack(EMERALD, 1), + trades.get(1).add((pTrader, pRandom) -> NCTrading.offer( + NCTrading.cost(EMERALD, 1), getItemStackByModPriority(IngredientCreatorAccess.item().from(forgeDust("graphite"), 2)), 32, 1, 0.02f)); - trades.get(1).add((pTrader, pRandom) -> new MerchantOffer( - new ItemStack(EMERALD, 1), + trades.get(1).add((pTrader, pRandom) -> NCTrading.offer( + NCTrading.cost(EMERALD, 1), getItemStackByModPriority(IngredientCreatorAccess.item().from(forgeDust("quartz"), 2)), 32, 1, 0.02f)); - trades.get(1).add((pTrader, pRandom) -> new MerchantOffer( - getItemStackByModPriority(IngredientCreatorAccess.item().from(forgeIngot("lead"), 8)), + trades.get(1).add((pTrader, pRandom) -> NCTrading.offer( + NCTrading.cost(getItemStackByModPriority(IngredientCreatorAccess.item().from(forgeIngot("lead"), 8))), new ItemStack(EMERALD, 1), 24, 1, 0.02f)); - trades.get(2).add((pTrader, pRandom) -> new MerchantOffer( - new ItemStack(EMERALD, 6), + trades.get(2).add((pTrader, pRandom) -> NCTrading.offer( + NCTrading.cost(EMERALD, 6), new ItemStack(NC_PARTS.get("plate_basic").get(), 1), 16, 5, 0.02f)); - trades.get(2).add((pTrader, pRandom) -> new MerchantOffer( - new ItemStack(EMERALD, 9), + trades.get(2).add((pTrader, pRandom) -> NCTrading.offer( + NCTrading.cost(EMERALD, 9), new ItemStack(NC_FOOD.get("smore").get(), 1), 16, 5, 0.02f)); - trades.get(2).add((pTrader, pRandom) -> new MerchantOffer( - new ItemStack(EMERALD, 8), + trades.get(2).add((pTrader, pRandom) -> NCTrading.offer( + NCTrading.cost(EMERALD, 8), new ItemStack(NC_FOOD.get("radaway").get(), 1), 6, 5, 0.02f)); - trades.get(3).add((pTrader, pRandom) -> new MerchantOffer( - new ItemStack(NC_ISOTOPES.get(neptunium236).get(), 1), + trades.get(3).add((pTrader, pRandom) -> NCTrading.offer( + NCTrading.cost(NC_ISOTOPES.get(neptunium236).get(), 1), new ItemStack(EMERALD, 4), 7, 15, 0.02f)); - trades.get(3).add((pTrader, pRandom) -> new MerchantOffer( - new ItemStack(EMERALD, 32), + trades.get(3).add((pTrader, pRandom) -> NCTrading.offer( + NCTrading.cost(EMERALD, 32), new ItemStack(NC_ISOTOPES.get(plutonium238).get(), 2), 7, 15, 0.02f)); - trades.get(3).add((pTrader, pRandom) -> new MerchantOffer( - new ItemStack(EMERALD, 20), + trades.get(3).add((pTrader, pRandom) -> NCTrading.offer( + NCTrading.cost(EMERALD, 20), getItemStackByModPriority(IngredientCreatorAccess.item().from(forgeDust("calcium_sulfate"), 2)), 7, 15, 0.02f)); - trades.get(4).add((pTrader, pRandom) -> new MerchantOffer( - getItemStackByModPriority(IngredientCreatorAccess.item().from(forgePlate("platinum"), 16)), + trades.get(4).add((pTrader, pRandom) -> NCTrading.offer( + NCTrading.cost(getItemStackByModPriority(IngredientCreatorAccess.item().from(forgePlate("platinum"), 16))), new ItemStack(NC_PARTS.get("plate_elite").get(), 1), 7, 20, 0.02f)); - trades.get(4).add((pTrader, pRandom) -> new MerchantOffer( - new ItemStack(EMERALD, 32), - new ItemStack(BOOK, 4), + trades.get(4).add((pTrader, pRandom) -> NCTrading.offer( + NCTrading.cost(EMERALD, 32), + NCTrading.cost(BOOK, 4), new ItemStack(NC_FUEL.get(List.of("fuel", "californium", "hecf-251", "")).get(), 2), 7, 20, 0.02f)); - trades.get(4).add((pTrader, pRandom) -> new MerchantOffer( - getItemStackByModPriority(IngredientCreatorAccess.item().from(forgeIngot("platinum"), 16)), - getItemStackByModPriority(IngredientCreatorAccess.item().from(forgeIngot("cobalt"), 4)), + trades.get(4).add((pTrader, pRandom) -> NCTrading.offer( + NCTrading.cost(getItemStackByModPriority(IngredientCreatorAccess.item().from(forgeIngot("platinum"), 16))), + NCTrading.cost(getItemStackByModPriority(IngredientCreatorAccess.item().from(forgeIngot("cobalt"), 4))), new ItemStack(NC_FUEL.get(List.of("fuel", "americium", "hea-242", "")).get(), 2), 7, 20, 0.02f)); - trades.get(5).add((pTrader, pRandom) -> new MerchantOffer( - new ItemStack(EMERALD, 16), - getItemStackByModPriority(IngredientCreatorAccess.item().from(forgeIngot("cobalt"), 4)), + trades.get(5).add((pTrader, pRandom) -> NCTrading.offer( + NCTrading.cost(EMERALD, 16), + NCTrading.cost(getItemStackByModPriority(IngredientCreatorAccess.item().from(forgeIngot("cobalt"), 4))), new ItemStack(NC_PARTS.get("coil_magnesium_diboride").get(), 2), 7, 30, 0.02f)); - trades.get(5).add((pTrader, pRandom) -> new MerchantOffer( - new ItemStack(EMERALD, 16), - getItemStackByModPriority(IngredientCreatorAccess.item().from(forgeIngot("zinc"), 8)), + trades.get(5).add((pTrader, pRandom) -> NCTrading.offer( + NCTrading.cost(EMERALD, 16), + NCTrading.cost(getItemStackByModPriority(IngredientCreatorAccess.item().from(forgeIngot("zinc"), 8))), getItemStackByModPriority(IngredientCreatorAccess.item().from(forgeIngot("neutronium"), 2)), 7, 30, 0.02f)); } } -} \ No newline at end of file +} diff --git a/src/main/java/igentuman/nc/setup/registration/WorldGeneration.java b/src/main/java/igentuman/nc/setup/registration/WorldGeneration.java index 31d5b0e83..6188236da 100644 --- a/src/main/java/igentuman/nc/setup/registration/WorldGeneration.java +++ b/src/main/java/igentuman/nc/setup/registration/WorldGeneration.java @@ -1,6 +1,7 @@ package igentuman.nc.setup.registration; import com.mojang.serialization.Codec; +import com.mojang.serialization.MapCodec; import igentuman.nc.world.BiomeFilterNether; import igentuman.nc.world.OrePlacementModifier; import igentuman.nc.world.structure.WastelandBossLairFeature; @@ -20,28 +21,29 @@ import net.minecraft.world.level.levelgen.structure.templatesystem.StructurePlaceSettings; import net.minecraft.world.level.levelgen.structure.templatesystem.StructureTemplate; import net.minecraft.world.level.levelgen.structure.templatesystem.StructureTemplateManager; -import net.minecraftforge.registries.ForgeRegistries; -import net.minecraftforge.registries.RegistryObject; +import net.minecraft.core.registries.BuiltInRegistries; +import net.neoforged.neoforge.registries.NeoForgeRegistries; +import net.neoforged.neoforge.registries.DeferredHolder; import static igentuman.nc.NuclearCraft.rl; import static igentuman.nc.setup.registration.Registries.PLACEMENT_MODIFIERS; public class WorldGeneration { - public static final TagKey WASTELAND = TagKey.create(ForgeRegistries.BIOMES.getRegistryKey(), rl("wasteland")); + public static final TagKey WASTELAND = TagKey.create(net.minecraft.core.registries.Registries.BIOME, rl("wasteland")); public static final ResourceKey WASTELAND_BIOME = makeKey("wasteland"); - public static final RegistryObject> NC_ORE_MODIFIER = + public static final DeferredHolder, PlacementModifierType> NC_ORE_MODIFIER = PLACEMENT_MODIFIERS.register("nc_ore_modifier", () -> placement(OrePlacementModifier.CODEC)); - public static final RegistryObject> VEGETATION_MODIFIER = + public static final DeferredHolder, PlacementModifierType> VEGETATION_MODIFIER = PLACEMENT_MODIFIERS.register("nc_vegetation_modifier", () -> placement(BiomeFilterNether.CODEC)); private static ResourceKey makeKey(String name) { return ResourceKey.create(Registries.BIOME, rl(name)); } - public static

PlacementModifierType

placement(Codec

codec) { + public static

PlacementModifierType

placement(MapCodec

codec) { return () -> codec; } diff --git a/src/main/java/igentuman/nc/util/ClientTools.java b/src/main/java/igentuman/nc/util/ClientTools.java index f8ededf35..9a0b84e4f 100644 --- a/src/main/java/igentuman/nc/util/ClientTools.java +++ b/src/main/java/igentuman/nc/util/ClientTools.java @@ -7,7 +7,7 @@ import net.minecraft.core.Direction; import net.minecraft.core.Position; import net.minecraft.world.phys.Vec3; -import net.minecraftforge.client.model.pipeline.QuadBakingVertexConsumer; +import net.neoforged.neoforge.client.model.pipeline.QuadBakingVertexConsumer; import org.joml.Vector3f; import org.joml.Vector4f; import org.joml.Vector4fc; @@ -17,15 +17,14 @@ public class ClientTools { public static BakedQuad createQuad(Vec3 v1, Vec3 v2, Vec3 v3, Vec3 v4, TextureAtlasSprite sprite) { Vec3 normal = v3.subtract(v2).cross(v1.subtract(v2)).normalize(); - BakedQuad[] quad = new BakedQuad[1]; - QuadBakingVertexConsumer builder = new QuadBakingVertexConsumer(q -> quad[0] = q); + QuadBakingVertexConsumer builder = new QuadBakingVertexConsumer(); builder.setSprite(sprite); builder.setDirection(Direction.getNearest(normal.x, normal.y, normal.z)); putVertex(builder, normal, v1.x, v1.y, v1.z, 0, 0, sprite); - putVertex(builder, normal, v2.x, v2.y, v2.z, 0, 16, sprite); - putVertex(builder, normal, v3.x, v3.y, v3.z, 16, 16, sprite); - putVertex(builder, normal, v4.x, v4.y, v4.z, 16, 0, sprite); - return quad[0]; + putVertex(builder, normal, v2.x, v2.y, v2.z, 0, 1, sprite); + putVertex(builder, normal, v3.x, v3.y, v3.z, 1, 1, sprite); + putVertex(builder, normal, v4.x, v4.y, v4.z, 1, 0, sprite); + return builder.bakeQuad(); } private static void putVertex(VertexConsumer builder, Position normal, @@ -33,12 +32,11 @@ private static void putVertex(VertexConsumer builder, Position normal, TextureAtlasSprite sprite) { float iu = sprite.getU(u); float iv = sprite.getV(v); - builder.vertex(x, y, z) - .uv(iu, iv) - .uv2(0, 0) - .color(1.0f, 1.0f, 1.0f, 1.0f) - .normal((float) normal.x(), (float) normal.y(), (float) normal.z()) - .endVertex(); + builder.addVertex((float) x, (float) y, (float) z) + .setUv(iu, iv) + .setUv2(0, 0) + .setColor(1.0f, 1.0f, 1.0f, 1.0f) + .setNormal((float) normal.x(), (float) normal.y(), (float) normal.z()); } public static Vec3 v(double x, double y, double z) { diff --git a/src/main/java/igentuman/nc/util/DataGenUtil.java b/src/main/java/igentuman/nc/util/DataGenUtil.java index 1201e7a57..b29b49f29 100644 --- a/src/main/java/igentuman/nc/util/DataGenUtil.java +++ b/src/main/java/igentuman/nc/util/DataGenUtil.java @@ -7,7 +7,7 @@ import net.minecraft.server.packs.resources.Resource; import net.minecraft.tags.TagKey; import net.minecraft.world.item.Item; -import net.minecraftforge.common.data.ExistingFileHelper; +import net.neoforged.neoforge.common.data.ExistingFileHelper; import org.apache.commons.io.IOUtils; import java.io.IOException; @@ -78,6 +78,6 @@ private static ResourceLocation relative(ResourceLocation base, String relativeP { String basePath = base.getPath(); String lastDir = basePath.substring(0, basePath.lastIndexOf('/')+1); - return ResourceLocation.tryBuild(base.getNamespace(), lastDir+relativePath); + return ResourceLocation.fromNamespaceAndPath(base.getNamespace(), lastDir+relativePath); } } diff --git a/src/main/java/igentuman/nc/util/DataHandlerUtils.java b/src/main/java/igentuman/nc/util/DataHandlerUtils.java index e235fcc2b..cc9c6518d 100644 --- a/src/main/java/igentuman/nc/util/DataHandlerUtils.java +++ b/src/main/java/igentuman/nc/util/DataHandlerUtils.java @@ -1,10 +1,12 @@ package igentuman.nc.util; +import igentuman.api.platform.NCSerialization; import igentuman.nc.util.annotation.NothingNullByDefault; +import net.minecraft.core.HolderLookup; import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.ListTag; -import net.minecraftforge.common.util.INBTSerializable; -import net.minecraftforge.fluids.IFluidTank; +import net.neoforged.neoforge.common.util.INBTSerializable; +import net.neoforged.neoforge.fluids.IFluidTank; import java.util.List; @@ -17,27 +19,27 @@ private DataHandlerUtils() { /** * Helper to read and load a list of containers from a {@link ListTag} */ - public static void readContainers(List> containers, ListTag storedContainers) { - readContents(containers, storedContainers, getTagByType(containers)); + public static void readContainers(HolderLookup.Provider provider, List> containers, ListTag storedContainers) { + readContents(provider, containers, storedContainers, getTagByType(containers)); } /** * Helper to read and load a list of containers to a {@link ListTag} */ - public static ListTag writeContainers(List> containers) { - return writeContents(containers, getTagByType(containers)); + public static ListTag writeContainers(HolderLookup.Provider provider, List> containers) { + return writeContents(provider, containers, getTagByType(containers)); } /** * Helper to read and load a list of handler contents from a {@link ListTag} */ - public static void readContents(List> contents, ListTag storedContents, String key) { + public static void readContents(HolderLookup.Provider provider, List> contents, ListTag storedContents, String key) { int size = contents.size(); for (int tagCount = 0; tagCount < storedContents.size(); tagCount++) { CompoundTag tagCompound = storedContents.getCompound(tagCount); byte id = tagCompound.getByte(key); if (id >= 0 && id < size) { - contents.get(id).deserializeNBT(tagCompound); + NCSerialization.deserialize(contents.get(id), provider, tagCompound); } } } @@ -45,10 +47,10 @@ public static void readContents(List> co /** * Helper to read and load a list of handler contents to a {@link ListTag} */ - public static ListTag writeContents(List> contents, String key) { + public static ListTag writeContents(HolderLookup.Provider provider, List> contents, String key) { ListTag storedContents = new ListTag(); for (int tank = 0; tank < contents.size(); tank++) { - CompoundTag tagCompound = contents.get(tank).serializeNBT(); + CompoundTag tagCompound = NCSerialization.serialize(contents.get(tank), provider); if (!tagCompound.isEmpty()) { tagCompound.putByte(key, (byte) tank); storedContents.add(tagCompound); diff --git a/src/main/java/igentuman/nc/util/FileExtractor.java b/src/main/java/igentuman/nc/util/FileExtractor.java index 7a7aba263..005de5e67 100644 --- a/src/main/java/igentuman/nc/util/FileExtractor.java +++ b/src/main/java/igentuman/nc/util/FileExtractor.java @@ -3,7 +3,7 @@ import com.electronwill.nightconfig.core.CommentedConfig; import com.electronwill.nightconfig.core.file.FileConfig; import igentuman.nc.NuclearCraft; -import net.minecraftforge.fml.loading.FMLPaths; +import net.neoforged.fml.loading.FMLPaths; import java.io.File; import java.io.IOException; diff --git a/src/main/java/igentuman/nc/util/FluidTagEmptyCondition.java b/src/main/java/igentuman/nc/util/FluidTagEmptyCondition.java index 4eac3e0c2..6e9cee4d0 100644 --- a/src/main/java/igentuman/nc/util/FluidTagEmptyCondition.java +++ b/src/main/java/igentuman/nc/util/FluidTagEmptyCondition.java @@ -5,73 +5,48 @@ package igentuman.nc.util; -import com.google.gson.JsonObject; +import com.mojang.serialization.MapCodec; +import com.mojang.serialization.codecs.RecordCodecBuilder; import net.minecraft.core.registries.Registries; import net.minecraft.resources.ResourceLocation; import net.minecraft.tags.TagKey; -import net.minecraft.util.GsonHelper; import net.minecraft.world.level.material.Fluid; -import net.minecraftforge.common.crafting.conditions.ICondition; -import net.minecraftforge.common.crafting.conditions.IConditionSerializer; - -public class FluidTagEmptyCondition implements ICondition -{ - private static final ResourceLocation NAME = ResourceLocation.fromNamespaceAndPath("forge", "fluid_tag_empty"); - private final TagKey tag; - - public FluidTagEmptyCondition(String location) - { +import net.neoforged.neoforge.common.conditions.ICondition; + +public record FluidTagEmptyCondition(TagKey tag) implements ICondition { + public static final MapCodec CODEC = RecordCodecBuilder.mapCodec( + builder -> builder + .group( + ResourceLocation.CODEC.xmap( + loc -> TagKey.create(Registries.FLUID, loc), + TagKey::location + ).fieldOf("tag").forGetter(FluidTagEmptyCondition::tag)) + .apply(builder, FluidTagEmptyCondition::new)); + + public FluidTagEmptyCondition(String location) { this(ResourceLocation.tryParse(location)); } - public FluidTagEmptyCondition(String namespace, String path) - { + public FluidTagEmptyCondition(String namespace, String path) { this(ResourceLocation.fromNamespaceAndPath(namespace, path)); } - public FluidTagEmptyCondition(ResourceLocation tag) - { - this.tag = TagKey.create(Registries.FLUID, tag); - } - - @Override - public ResourceLocation getID() - { - return NAME; + public FluidTagEmptyCondition(ResourceLocation tag) { + this(TagKey.create(Registries.FLUID, tag)); } @Override - public boolean test(IContext context) - { + public boolean test(IContext context) { return context.getTag(tag).isEmpty(); } @Override - public String toString() - { - return "tag_empty(\"" + tag.location() + "\")"; + public MapCodec codec() { + return CODEC; } - public static class Serializer implements IConditionSerializer - { - public static final Serializer INSTANCE = new Serializer(); - - @Override - public void write(JsonObject json, FluidTagEmptyCondition value) - { - json.addProperty("tag", value.tag.location().toString()); - } - - @Override - public FluidTagEmptyCondition read(JsonObject json) - { - return new FluidTagEmptyCondition(ResourceLocation.tryParse(GsonHelper.getAsString(json, "tag"))); - } - - @Override - public ResourceLocation getID() - { - return FluidTagEmptyCondition.NAME; - } + @Override + public String toString() { + return "fluid_tag_empty(\"" + tag.location() + "\")"; } } diff --git a/src/main/java/igentuman/nc/util/GTCEUCompatibilityCondition.java b/src/main/java/igentuman/nc/util/GTCEUCompatibilityCondition.java index 42cc79313..88a51dc26 100644 --- a/src/main/java/igentuman/nc/util/GTCEUCompatibilityCondition.java +++ b/src/main/java/igentuman/nc/util/GTCEUCompatibilityCondition.java @@ -1,50 +1,30 @@ package igentuman.nc.util; -import com.google.gson.JsonObject; -import net.minecraft.resources.ResourceLocation; -import net.minecraftforge.common.crafting.conditions.ICondition; -import net.minecraftforge.common.crafting.conditions.IConditionSerializer; +import com.mojang.serialization.MapCodec; +import net.neoforged.neoforge.common.conditions.ICondition; -import static igentuman.nc.NuclearCraft.rl; import static igentuman.nc.block.entity.NuclearCraftBE.isGTEUCapEnabled; -import static igentuman.nc.handler.config.WorldConfig.DIMENSION_CONFIG; import static igentuman.nc.util.ModUtil.isGtLoaded; public class GTCEUCompatibilityCondition implements ICondition { - private static final ResourceLocation NAME = rl("gtceu_compat_enabled"); + public static final GTCEUCompatibilityCondition INSTANCE = new GTCEUCompatibilityCondition(); - public GTCEUCompatibilityCondition() { + public static final MapCodec CODEC = MapCodec.unit(INSTANCE).stable(); - } - - public ResourceLocation getID() { - return NAME; - } + public GTCEUCompatibilityCondition() {} + @Override public boolean test(IContext context) { return isGtLoaded() && isGTEUCapEnabled(); } - public String toString() { - return "is GT loaded and configured for compatibility"; + @Override + public MapCodec codec() { + return CODEC; } - public static class Serializer implements IConditionSerializer { - public static final Serializer INSTANCE = new Serializer(); - - public Serializer() { - } - - public void write(JsonObject json, GTCEUCompatibilityCondition value) { - - } - - public GTCEUCompatibilityCondition read(JsonObject json) { - return new GTCEUCompatibilityCondition(); - } - - public ResourceLocation getID() { - return GTCEUCompatibilityCondition.NAME; - } + @Override + public String toString() { + return "is GT loaded and configured for compatibility"; } -} \ No newline at end of file +} diff --git a/src/main/java/igentuman/nc/util/IgnoredIInventory.java b/src/main/java/igentuman/nc/util/IgnoredIInventory.java index d54106683..b4fc3b640 100644 --- a/src/main/java/igentuman/nc/util/IgnoredIInventory.java +++ b/src/main/java/igentuman/nc/util/IgnoredIInventory.java @@ -1,55 +1,22 @@ package igentuman.nc.util; -import net.minecraft.world.Container; -import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.crafting.RecipeInput; -public final class IgnoredIInventory implements Container { +public final class IgnoredIInventory implements RecipeInput { public static final IgnoredIInventory INSTANCE = new IgnoredIInventory(); private IgnoredIInventory() { } - @Override - public int getContainerSize() { - return 0; - } - - @Override - public boolean isEmpty() { - return true; - } - @Override public ItemStack getItem(int index) { return ItemStack.EMPTY; } @Override - public ItemStack removeItem(int index, int count) { - return ItemStack.EMPTY; - } - - @Override - public ItemStack removeItemNoUpdate(int index) { - return ItemStack.EMPTY; - } - - @Override - public void setItem(int index, ItemStack stack) { - } - - @Override - public void setChanged() { - } - - @Override - public boolean stillValid(Player player) { - return false; - } - - @Override - public void clearContent() { + public int size() { + return 0; } -} \ No newline at end of file +} diff --git a/src/main/java/igentuman/nc/util/ItemDataUtils.java b/src/main/java/igentuman/nc/util/ItemDataUtils.java index a05846842..f30fed0c0 100644 --- a/src/main/java/igentuman/nc/util/ItemDataUtils.java +++ b/src/main/java/igentuman/nc/util/ItemDataUtils.java @@ -1,10 +1,12 @@ package igentuman.nc.util; +import igentuman.api.platform.NCItemStacks; +import net.minecraft.core.HolderLookup; import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.ListTag; import net.minecraft.nbt.Tag; import net.minecraft.world.item.ItemStack; -import net.minecraftforge.common.util.INBTSerializable; +import net.neoforged.neoforge.common.util.INBTSerializable; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -18,20 +20,23 @@ public final class ItemDataUtils { private ItemDataUtils() { } + /** + * Returns a READ-ONLY copy of the NC_DATA sub-compound. + * Do NOT mutate the returned tag and expect changes to persist on the stack. + * For writes, use the dedicated setter methods which call modifyTag(). + */ @NotNull public static CompoundTag getDataMap(ItemStack stack) { - CompoundTag tag = stack.getOrCreateTag(); + CompoundTag tag = NCItemStacks.getTagCopy(stack); if (tag.contains(NBTConstants.NC_DATA, Tag.TAG_COMPOUND)) { return tag.getCompound(NBTConstants.NC_DATA); } - CompoundTag dataMap = new CompoundTag(); - tag.put(NBTConstants.NC_DATA, dataMap); - return dataMap; + return new CompoundTag(); } @Nullable public static CompoundTag getDataMapIfPresent(ItemStack stack) { - CompoundTag tag = stack.getTag(); + CompoundTag tag = NCItemStacks.getTag(stack); if (tag != null && tag.contains(NBTConstants.NC_DATA, Tag.TAG_COMPOUND)) { return tag.getCompound(NBTConstants.NC_DATA); } @@ -44,14 +49,19 @@ public static boolean hasData(ItemStack stack, String key, int type) { } public static void removeData(ItemStack stack, String key) { - CompoundTag dataMap = getDataMapIfPresent(stack); - if (dataMap != null) { - dataMap.remove(key); - if (dataMap.isEmpty()) { - //If our data map no longer has any elements after removing a piece of stored data - // then remove the data tag to make the stack nice and clean again - stack.removeTagKey(NBTConstants.NC_DATA); - } + CompoundTag existing = getDataMapIfPresent(stack); + if (existing != null) { + NCItemStacks.modifyTag(stack, tag -> { + if (tag.contains(NBTConstants.NC_DATA, Tag.TAG_COMPOUND)) { + CompoundTag dataMap = tag.getCompound(NBTConstants.NC_DATA); + dataMap.remove(key); + if (dataMap.isEmpty()) { + //If our data map no longer has any elements after removing a piece of stored data + // then remove the data tag to make the stack nice and clean again + tag.remove(NBTConstants.NC_DATA); + } + } + }); } } @@ -88,20 +98,36 @@ public static CompoundTag getCompound(ItemStack stack, String key) { return getDataValue(stack, dataMap -> dataMap.getCompound(key), new CompoundTag()); } + /** + * Gets or creates a sub-compound within the NC_DATA map. + * Note: the returned tag is a snapshot. Callers that mutate it must + * write it back via {@link #setCompound(ItemStack, String, CompoundTag)}. + */ public static CompoundTag getOrAddCompound(ItemStack stack, String key) { CompoundTag dataMap = getDataMap(stack); if (dataMap.contains(key, Tag.TAG_COMPOUND)) { return dataMap.getCompound(key); } CompoundTag compound = new CompoundTag(); - dataMap.put(key, compound); + // Persist the new empty compound back to the stack + NCItemStacks.modifyTag(stack, tag -> { + if (!tag.contains(NBTConstants.NC_DATA, Tag.TAG_COMPOUND)) { + tag.put(NBTConstants.NC_DATA, new CompoundTag()); + } + tag.getCompound(NBTConstants.NC_DATA).put(key, compound); + }); return compound; } public static void setCompoundIfPresent(ItemStack stack, String key, Consumer setter) { CompoundTag dataMap = getDataMapIfPresent(stack); if (dataMap != null && dataMap.contains(key, Tag.TAG_COMPOUND)) { - setter.accept(dataMap.getCompound(key)); + NCItemStacks.modifyTag(stack, tag -> { + CompoundTag ncData = tag.getCompound(NBTConstants.NC_DATA); + if (ncData.contains(key, Tag.TAG_COMPOUND)) { + setter.accept(ncData.getCompound(key)); + } + }); } } @@ -119,7 +145,12 @@ public static ListTag getList(ItemStack stack, String key) { } public static void setInt(ItemStack stack, String key, int i) { - getDataMap(stack).putInt(key, i); + NCItemStacks.modifyTag(stack, tag -> { + if (!tag.contains(NBTConstants.NC_DATA, Tag.TAG_COMPOUND)) { + tag.put(NBTConstants.NC_DATA, new CompoundTag()); + } + tag.getCompound(NBTConstants.NC_DATA).putInt(key, i); + }); } public static void setIntOrRemove(ItemStack stack, String key, int i) { @@ -131,7 +162,12 @@ public static void setIntOrRemove(ItemStack stack, String key, int i) { } public static void setLong(ItemStack stack, String key, long l) { - getDataMap(stack).putLong(key, l); + NCItemStacks.modifyTag(stack, tag -> { + if (!tag.contains(NBTConstants.NC_DATA, Tag.TAG_COMPOUND)) { + tag.put(NBTConstants.NC_DATA, new CompoundTag()); + } + tag.getCompound(NBTConstants.NC_DATA).putLong(key, l); + }); } public static void setLongOrRemove(ItemStack stack, String key, long l) { @@ -143,31 +179,61 @@ public static void setLongOrRemove(ItemStack stack, String key, long l) { } public static void setBoolean(ItemStack stack, String key, boolean b) { - getDataMap(stack).putBoolean(key, b); + NCItemStacks.modifyTag(stack, tag -> { + if (!tag.contains(NBTConstants.NC_DATA, Tag.TAG_COMPOUND)) { + tag.put(NBTConstants.NC_DATA, new CompoundTag()); + } + tag.getCompound(NBTConstants.NC_DATA).putBoolean(key, b); + }); } public static void setDouble(ItemStack stack, String key, double d) { - getDataMap(stack).putDouble(key, d); + NCItemStacks.modifyTag(stack, tag -> { + if (!tag.contains(NBTConstants.NC_DATA, Tag.TAG_COMPOUND)) { + tag.put(NBTConstants.NC_DATA, new CompoundTag()); + } + tag.getCompound(NBTConstants.NC_DATA).putDouble(key, d); + }); } public static void setString(ItemStack stack, String key, String s) { - getDataMap(stack).putString(key, s); + NCItemStacks.modifyTag(stack, tag -> { + if (!tag.contains(NBTConstants.NC_DATA, Tag.TAG_COMPOUND)) { + tag.put(NBTConstants.NC_DATA, new CompoundTag()); + } + tag.getCompound(NBTConstants.NC_DATA).putString(key, s); + }); } - public static void setCompound(ItemStack stack, String key, CompoundTag tag) { - getDataMap(stack).put(key, tag); + public static void setCompound(ItemStack stack, String key, CompoundTag compoundTag) { + NCItemStacks.modifyTag(stack, tag -> { + if (!tag.contains(NBTConstants.NC_DATA, Tag.TAG_COMPOUND)) { + tag.put(NBTConstants.NC_DATA, new CompoundTag()); + } + tag.getCompound(NBTConstants.NC_DATA).put(key, compoundTag); + }); } public static void setUUID(ItemStack stack, String key, @Nullable UUID uuid) { if (uuid == null) { removeData(stack, key); } else { - getDataMap(stack).putUUID(key, uuid); + NCItemStacks.modifyTag(stack, tag -> { + if (!tag.contains(NBTConstants.NC_DATA, Tag.TAG_COMPOUND)) { + tag.put(NBTConstants.NC_DATA, new CompoundTag()); + } + tag.getCompound(NBTConstants.NC_DATA).putUUID(key, uuid); + }); } } - public static void setList(ItemStack stack, String key, ListTag tag) { - getDataMap(stack).put(key, tag); + public static void setList(ItemStack stack, String key, ListTag listTag) { + NCItemStacks.modifyTag(stack, tag -> { + if (!tag.contains(NBTConstants.NC_DATA, Tag.TAG_COMPOUND)) { + tag.put(NBTConstants.NC_DATA, new CompoundTag()); + } + tag.getCompound(NBTConstants.NC_DATA).put(key, listTag); + }); } public static void setListOrRemove(ItemStack stack, String key, ListTag tag) { @@ -186,19 +252,24 @@ public static void setLongArrayOrRemove(ItemStack stack, String key, long[] arra if (array.length == 0) { removeData(stack, key); } else { - getDataMap(stack).putLongArray(key, array); + NCItemStacks.modifyTag(stack, tag -> { + if (!tag.contains(NBTConstants.NC_DATA, Tag.TAG_COMPOUND)) { + tag.put(NBTConstants.NC_DATA, new CompoundTag()); + } + tag.getCompound(NBTConstants.NC_DATA).putLongArray(key, array); + }); } } - public static void readContainers(ItemStack stack, String containerKey, List> containers) { + public static void readContainers(HolderLookup.Provider provider, ItemStack stack, String containerKey, List> containers) { if (!stack.isEmpty()) { - DataHandlerUtils.readContainers(containers, getList(stack, containerKey)); + DataHandlerUtils.readContainers(provider, containers, getList(stack, containerKey)); } } - public static void writeContainers(ItemStack stack, String containerKey, List> containers) { + public static void writeContainers(HolderLookup.Provider provider, ItemStack stack, String containerKey, List> containers) { if (!stack.isEmpty()) { - setListOrRemove(stack, containerKey, DataHandlerUtils.writeContainers(containers)); + setListOrRemove(stack, containerKey, DataHandlerUtils.writeContainers(provider, containers)); } } } \ No newline at end of file diff --git a/src/main/java/igentuman/nc/util/JSONUtil.java b/src/main/java/igentuman/nc/util/JSONUtil.java index 4ba208277..c9a139636 100644 --- a/src/main/java/igentuman/nc/util/JSONUtil.java +++ b/src/main/java/igentuman/nc/util/JSONUtil.java @@ -3,7 +3,7 @@ import com.google.gson.JsonArray; import com.google.gson.JsonElement; import com.google.gson.JsonParser; -import net.minecraftforge.fml.loading.FMLPaths; +import net.neoforged.fml.loading.FMLPaths; import java.io.*; import java.nio.file.Path; diff --git a/src/main/java/igentuman/nc/util/ModUtil.java b/src/main/java/igentuman/nc/util/ModUtil.java index a447f7126..44321a625 100644 --- a/src/main/java/igentuman/nc/util/ModUtil.java +++ b/src/main/java/igentuman/nc/util/ModUtil.java @@ -1,6 +1,6 @@ package igentuman.nc.util; -import net.minecraftforge.fml.ModList; +import net.neoforged.fml.ModList; public class ModUtil { protected static boolean initialized = false; diff --git a/src/main/java/igentuman/nc/util/NCProperties.java b/src/main/java/igentuman/nc/util/NCProperties.java index f0bb34b4f..9d901b0e7 100644 --- a/src/main/java/igentuman/nc/util/NCProperties.java +++ b/src/main/java/igentuman/nc/util/NCProperties.java @@ -8,7 +8,7 @@ import net.minecraft.world.level.block.state.properties.BooleanProperty; import net.minecraft.world.level.block.state.properties.DirectionProperty; import net.minecraft.world.level.block.state.properties.IntegerProperty; -import net.minecraftforge.client.model.data.ModelProperty; +import net.neoforged.neoforge.client.model.data.ModelProperty; import java.util.Arrays; import java.util.Collection; diff --git a/src/main/java/igentuman/nc/util/NcUtils.java b/src/main/java/igentuman/nc/util/NcUtils.java index cc4b05de4..6328e4323 100644 --- a/src/main/java/igentuman/nc/util/NcUtils.java +++ b/src/main/java/igentuman/nc/util/NcUtils.java @@ -18,10 +18,10 @@ import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.Blocks; import net.minecraft.world.level.material.Fluid; -import net.minecraftforge.fluids.FluidStack; -import net.minecraftforge.registries.ForgeRegistries; -import net.minecraftforge.registries.IForgeRegistry; -import net.minecraftforge.registries.RegistryObject; +import net.neoforged.neoforge.fluids.FluidStack; +import net.minecraft.core.registries.BuiltInRegistries; +import net.minecraft.core.Registry; +import net.neoforged.neoforge.registries.DeferredHolder; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -44,7 +44,7 @@ public final class NcUtils { private static final List warnedFails = new ArrayList<>(); public static ResourceLocation getName(ParticleType element) { - return getName(ForgeRegistries.PARTICLE_TYPES, element); + return getName(BuiltInRegistries.PARTICLE_TYPE, element); } public static ResourceLocation rlFromString(String name) { @@ -52,14 +52,14 @@ public static ResourceLocation rlFromString(String name) { } public static ResourceLocation getName(Item element) { - return getName(ForgeRegistries.ITEMS, element); + return getName(BuiltInRegistries.ITEM, element); } public static ResourceLocation getName(Fluid element) { - return getName(ForgeRegistries.FLUIDS, element); + return getName(BuiltInRegistries.FLUID, element); } - private static ResourceLocation getName(IForgeRegistry registry, T element) { + private static ResourceLocation getName(Registry registry, T element) { return registry.getKey(element); } public static String getPath(Item element) { @@ -67,7 +67,7 @@ public static String getPath(Item element) { } public static ResourceLocation getName(Block element) { - return getName(ForgeRegistries.BLOCKS, element); + return getName(BuiltInRegistries.BLOCK, element); } public static String getNamespace(Block element) { @@ -75,7 +75,7 @@ public static String getNamespace(Block element) { } public static ResourceLocation getName(MenuType element) { - return getName(ForgeRegistries.MENU_TYPES, element); + return getName(BuiltInRegistries.MENU, element); } /** * Gets the creator's modid if it exists, or falls back to the registry name. @@ -122,7 +122,7 @@ public static String getModId(@NotNull FluidStack stack) { Fluid fluid = stack.getFluid(); String modid = ""; try { - modid = ForgeRegistries.FLUIDS.getKey(fluid).getNamespace(); + modid = BuiltInRegistries.FLUID.getKey(fluid).getNamespace(); } catch (Exception e) { //todo find workaround return ""; @@ -202,7 +202,7 @@ public static List getParameterNames(@Nullable JsonObject classMethods, } return Collections.emptyList(); } - public static List>> ALL_ITEMS = List.of( + public static List>> ALL_ITEMS = List.of( NC_ITEMS, NC_PARTS, NC_GEMS, @@ -211,7 +211,7 @@ public static List getParameterNames(@Nullable JsonObject classMethods, NC_NUGGETS, ALL_NC_ITEMS ); - public static List>> ALL_BLOCKS = List.of( + public static List>> ALL_BLOCKS = List.of( NC_BLOCKS, FISSION_BLOCKS, FUSION_BLOCKS, @@ -222,7 +222,7 @@ public static List getParameterNames(@Nullable JsonObject classMethods, ); public static Block getNCBlock(String name) { - for(HashMap> map: ALL_BLOCKS) { + for(HashMap> map: ALL_BLOCKS) { if(map.containsKey(name)) { return map.get(name).get(); } @@ -237,7 +237,7 @@ public static Block getNCBlock(String name) public static Item getNCItem(String name) { - for(HashMap> map: ALL_ITEMS) { + for(HashMap> map: ALL_ITEMS) { if(map.containsKey(name)) { return map.get(name).get(); } diff --git a/src/main/java/igentuman/nc/util/ReactorPebble.java b/src/main/java/igentuman/nc/util/ReactorPebble.java index c86238ec6..404af378e 100644 --- a/src/main/java/igentuman/nc/util/ReactorPebble.java +++ b/src/main/java/igentuman/nc/util/ReactorPebble.java @@ -1,9 +1,11 @@ package igentuman.nc.util; +import net.minecraft.core.HolderLookup; import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.Tag; import net.minecraft.world.item.ItemStack; -import net.minecraftforge.common.util.INBTSerializable; +import igentuman.api.platform.NCSerialization; +import net.neoforged.neoforge.common.util.INBTSerializable; public class ReactorPebble implements INBTSerializable { @@ -43,7 +45,7 @@ public boolean isDepleted() { } @Override - public Tag serializeNBT() { + public Tag serializeNBT(HolderLookup.Provider provider) { CompoundTag tag = new CompoundTag(); tag.putInt("ticks", ticks); tag.putDouble("ticksProcessed", ticksProcessed); @@ -51,12 +53,12 @@ public Tag serializeNBT() { tag.putDouble("criticality", criticality); tag.putDouble("power", power); tag.putDouble("heat", heat); - tag.put("outputStack", outputStack.serializeNBT()); + tag.put("outputStack", NCSerialization.saveItemStack(outputStack, provider)); return tag; } @Override - public void deserializeNBT(Tag nbt) { + public void deserializeNBT(HolderLookup.Provider provider, Tag nbt) { if (nbt instanceof CompoundTag tag) { ticks = tag.getInt("ticks"); ticksProcessed = tag.getDouble("ticksProcessed"); @@ -64,7 +66,7 @@ public void deserializeNBT(Tag nbt) { criticality = tag.getDouble("criticality"); power = tag.getDouble("power"); heat = tag.getDouble("heat"); - outputStack = ItemStack.of(tag.getCompound("outputStack")); + outputStack = NCSerialization.loadItemStack(provider, tag.getCompound("outputStack")); } } } diff --git a/src/main/java/igentuman/nc/util/SerializerHelper.java b/src/main/java/igentuman/nc/util/SerializerHelper.java index ee3942839..3f9646368 100644 --- a/src/main/java/igentuman/nc/util/SerializerHelper.java +++ b/src/main/java/igentuman/nc/util/SerializerHelper.java @@ -2,18 +2,21 @@ import com.google.gson.*; import com.mojang.brigadier.exceptions.CommandSyntaxException; +import igentuman.api.platform.NCFluidStacks; +import igentuman.api.platform.NCItemStacks; import igentuman.nc.util.annotation.NothingNullByDefault; import igentuman.nc.util.math.FloatingLong; import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.TagParser; import net.minecraft.resources.ResourceLocation; import net.minecraft.util.GsonHelper; +import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; -import net.minecraft.world.item.crafting.ShapedRecipe; import net.minecraft.world.level.material.Fluid; import net.minecraft.world.level.material.Fluids; -import net.minecraftforge.fluids.FluidStack; -import net.minecraftforge.registries.ForgeRegistries; +import net.neoforged.neoforge.fluids.FluidStack; +import net.minecraft.core.registries.BuiltInRegistries; +import net.neoforged.neoforge.registries.NeoForgeRegistries; import org.jetbrains.annotations.NotNull; import static igentuman.nc.util.NcUtils.rlFromString; @@ -69,11 +72,37 @@ private static void validateKey(@NotNull JsonObject json, @NotNull String key) { */ public static ItemStack getItemStack(@NotNull JsonObject json, @NotNull String key) { validateKey(json, key); - return ShapedRecipe.itemStackFromJson(GsonHelper.getAsJsonObject(json, key)); + return deserializeItem(GsonHelper.getAsJsonObject(json, key)); } public static ItemStack getItemStack(@NotNull JsonObject json) { - return ShapedRecipe.itemStackFromJson(json); + return deserializeItem(json); + } + + /** + * Deserializes an ItemStack from a JsonObject. + * Replaces {@code ShapedRecipe.itemStackFromJson} which was removed in 1.21.1. + */ + private static ItemStack deserializeItem(@NotNull JsonObject json) { + String itemName = GsonHelper.getAsString(json, "item"); + Item item = BuiltInRegistries.ITEM.get(rlFromString(itemName)); + int count = GsonHelper.getAsInt(json, "count", 1); + ItemStack stack = new ItemStack(item, count); + if (json.has("nbt")) { + try { + JsonElement nbtElement = json.get("nbt"); + CompoundTag nbt; + if (nbtElement.isJsonObject()) { + nbt = TagParser.parseTag(GSON.toJson(nbtElement)); + } else { + nbt = TagParser.parseTag(GsonHelper.convertToString(nbtElement, "nbt")); + } + NCItemStacks.setTag(stack, nbt); + } catch (CommandSyntaxException e) { + throw new JsonSyntaxException("Invalid NBT entry for item '" + itemName + "'"); + } + } + return stack; } /** @@ -113,24 +142,13 @@ public static FluidStack deserializeFluid(@NotNull JsonObject json) { throw new JsonSyntaxException("Expected amount to be greater than zero."); } ResourceLocation resourceLocation = rlFromString(GsonHelper.getAsString(json, "fluid")); - Fluid fluid = ForgeRegistries.FLUIDS.getValue(resourceLocation); + Fluid fluid = BuiltInRegistries.FLUID.get(resourceLocation); if (fluid == null || fluid == Fluids.EMPTY) { throw new JsonSyntaxException("Invalid fluid type '" + resourceLocation + "'"); } - CompoundTag nbt = null; - if (json.has("nbt")) { - JsonElement jsonNBT = json.get("nbt"); - try { - if (jsonNBT.isJsonObject()) { - nbt = TagParser.parseTag(GSON.toJson(jsonNBT)); - } else { - nbt = TagParser.parseTag(GsonHelper.convertToString(jsonNBT, "nbt")); - } - } catch (CommandSyntaxException e) { - throw new JsonSyntaxException("Invalid NBT entry for fluid '" + resourceLocation + "'"); - } - } - return new FluidStack(fluid, amount, nbt); + // Note: FluidStack no longer stores NBT in 1.21.1. + // NBT data from legacy JSON is silently ignored. + return new FluidStack(fluid, amount); } @@ -143,12 +161,12 @@ public static FluidStack deserializeFluid(@NotNull JsonObject json) { */ public static JsonElement serializeItemStack(@NotNull ItemStack stack) { JsonObject json = new JsonObject(); - json.addProperty("item", ForgeRegistries.ITEMS.getKey(stack.getItem()).toString()); + json.addProperty("item", BuiltInRegistries.ITEM.getKey(stack.getItem()).toString()); if (stack.getCount() > 1) { json.addProperty("count", stack.getCount()); } - if (stack.hasTag()) { - json.addProperty("nbt", stack.getTag().toString()); + if (NCItemStacks.hasCustomData(stack)) { + json.addProperty("nbt", NCItemStacks.getTag(stack).toString()); } return json; } @@ -162,10 +180,10 @@ public static JsonElement serializeItemStack(@NotNull ItemStack stack) { */ public static JsonElement serializeFluidStack(@NotNull FluidStack stack) { JsonObject json = new JsonObject(); - json.addProperty("fluid", ForgeRegistries.FLUIDS.getKey(stack.getFluid()).toString()); + json.addProperty("fluid", BuiltInRegistries.FLUID.getKey(stack.getFluid()).toString()); json.addProperty("amount", stack.getAmount()); - if (stack.hasTag()) { - json.addProperty("nbt", stack.getTag().toString()); + if (NCFluidStacks.hasCustomData(stack)) { + json.addProperty("nbt", NCFluidStacks.getTag(stack).toString()); } return json; } diff --git a/src/main/java/igentuman/nc/util/StackUtils.java b/src/main/java/igentuman/nc/util/StackUtils.java index 42aa514ef..8baca972e 100644 --- a/src/main/java/igentuman/nc/util/StackUtils.java +++ b/src/main/java/igentuman/nc/util/StackUtils.java @@ -7,6 +7,8 @@ import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.AirItem; import net.minecraft.world.item.Item; +import igentuman.api.platform.NCIngredients; +import igentuman.api.platform.NCItemStacks; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.context.BlockPlaceContext; import net.minecraft.world.item.context.UseOnContext; @@ -15,8 +17,8 @@ import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.phys.BlockHitResult; import net.minecraft.world.phys.Vec3; -import net.minecraftforge.items.ItemHandlerHelper; -import net.minecraftforge.registries.ForgeRegistries; +import net.minecraft.core.registries.BuiltInRegistries; +import net.neoforged.neoforge.registries.NeoForgeRegistries; import org.jetbrains.annotations.Nullable; import java.util.ArrayList; @@ -38,7 +40,7 @@ public static ItemStack size(ItemStack stack, int size) { if (size <= 0 || stack.isEmpty()) { return ItemStack.EMPTY; } - return ItemHandlerHelper.copyStackWithSize(stack, size); + return NCItemStacks.copyWithCount(stack, size); } public static ItemStack resolveStackByModPriority(ItemStack[] items) { @@ -62,7 +64,7 @@ public static List getItemsByTagKey(String key) { List tmp = new ArrayList<>(); TagKey tag = TagKey.create(ITEM_REGISTRY, rlFromString(key)); - Ingredient ing = Ingredient.fromValues(Stream.of(new Ingredient.TagValue(tag))); + Ingredient ing = NCIngredients.ofTag(tag); for (ItemStack item: ing.getItems()) { tmp.add(item.getItem().toString()); } @@ -71,7 +73,7 @@ public static List getItemsByTagKey(String key) public static Item getItemByRegistryName(String id) { - return ForgeRegistries.ITEMS.getValue(rlFromString(id)); + return BuiltInRegistries.ITEM.get(rlFromString(id)); } private static final List allowedTools = new ArrayList<>(); diff --git a/src/main/java/igentuman/nc/util/TagUtil.java b/src/main/java/igentuman/nc/util/TagUtil.java index e67602f07..80c277809 100644 --- a/src/main/java/igentuman/nc/util/TagUtil.java +++ b/src/main/java/igentuman/nc/util/TagUtil.java @@ -1,18 +1,16 @@ package igentuman.nc.util; -import net.minecraft.nbt.CompoundTag; +import net.minecraft.core.Holder; +import net.minecraft.core.HolderSet; +import net.minecraft.core.Registry; import net.minecraft.resources.ResourceLocation; import net.minecraft.tags.TagKey; 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.material.Fluid; -import net.minecraftforge.fluids.FluidStack; -import net.minecraftforge.registries.ForgeRegistries; -import net.minecraftforge.registries.IForgeRegistry; -import net.minecraftforge.registries.tags.IReverseTag; -import net.minecraftforge.registries.tags.ITag; -import net.minecraftforge.registries.tags.ITagManager; +import net.neoforged.neoforge.fluids.FluidStack; +import net.minecraft.core.registries.BuiltInRegistries; import java.util.*; import java.util.stream.Collectors; @@ -57,19 +55,22 @@ public static Fluid getFirstMatchingFluidByTag(String key) public static FluidStack getFluidByName(String name) { - CompoundTag tag = new CompoundTag(); - tag.putString("FluidName", name); - tag.putInt("Amount", 1); - return FluidStack.loadFluidStackFromNBT(tag); + ResourceLocation rl = rlFromString(name); + Fluid fluid = BuiltInRegistries.FLUID.get(rl); + if (fluid == net.minecraft.world.level.material.Fluids.EMPTY) { + return FluidStack.EMPTY; + } + return new FluidStack(fluid, 1); } - public static HashSet getBlocksByTagKey(String key) - { + public static HashSet getBlocksByTagKey(String key) { HashSet tmp = new HashSet<>(); TagKey tag = TagKey.create(BLOCK_REGISTRY, rlFromString(key)); - for(Block holder : ForgeRegistries.BLOCKS.tags().getTag(tag).stream().toList()) { - tmp.add(holder); - } + BuiltInRegistries.BLOCK.getTag(tag).ifPresent(holders -> { + for (Holder holder : holders) { + tmp.add(holder.value()); + } + }); return tmp; } @@ -88,60 +89,90 @@ public static Block getSingleBlockByTagKey(String key) .orElse(Blocks.AIR); } - public static List getItemsByTagKey(String key) - { + public static List getItemsByTagKey(String key) { List tmp = new ArrayList<>(); TagKey tag = TagKey.create(ITEM_REGISTRY, rlFromString(key)); - for(Item holder : ForgeRegistries.ITEMS.tags().getTag(tag).stream().toList()) { - tmp.add(holder); - } + BuiltInRegistries.ITEM.getTag(tag).ifPresent(holders -> { + for (Holder holder : holders) { + tmp.add(holder.value()); + } + }); return tmp; } - public static ITagManager manager(IForgeRegistry registry) { - ITagManager tags = registry.tags(); - if (tags == null) { - throw new IllegalStateException("Expected " + registry.getRegistryName() + " to have tags."); - } - return tags; + /** + * Creates a TagKey for the given registry and resource location. + * Replacement for the old manager(registry).createTagKey(rl) pattern. + */ + public static TagKey createKey(Registry registry, ResourceLocation tag) { + return TagKey.create(registry.key(), tag); } - public static ITag tag(IForgeRegistry registry, TagKey key) { - return manager(registry).getTag(key); + /** + * Gets the tag contents from a registry by tag key. + * Returns an Optional containing the named holder set, or empty if the tag doesn't exist. + */ + public static Optional> getTag(Registry registry, TagKey key) { + return registry.getTag(key); } - public static TagKey createKey(IForgeRegistry registry, ResourceLocation tag) { - return manager(registry).createTagKey(tag); - } - - public static Set> tags(IForgeRegistry registry, TYPE element) { - return tags(manager(registry), element); + /** + * Gets all tag keys associated with the given element in the registry. + */ + public static Set> tags(Registry registry, TYPE element) { + Optional> holderOpt = registry.getResourceKey(element) + .flatMap(registry::getHolder); + if (holderOpt.isPresent()) { + return holderOpt.get().tags().collect(Collectors.toSet()); + } + return Set.of(); } - public static Set> tags(ITagManager tagManager, TYPE element) { - return tagsStream(tagManager, element).collect(Collectors.toSet()); + /** + * Gets a stream of tag keys associated with the given element in the registry. + */ + public static Stream> tagsStream(Registry registry, TYPE element) { + Optional> holderOpt = registry.getResourceKey(element) + .flatMap(registry::getHolder); + return holderOpt.map(ref -> ref.tags()).orElse(Stream.empty()); } - public static Stream> tagsStream(IForgeRegistry registry, TYPE element) { - return tagsStream(manager(registry), element); + /** + * Gets tag name resource locations for the given element. + */ + public static Set tagNames(Registry registry, TYPE element) { + return tagNames(tagsStream(registry, element)); } - public static Stream> tagsStream(ITagManager tagManager, TYPE element) { - return tagManager.getReverseTag(element) - .map(IReverseTag::getTagKeys) - .orElse(Stream.empty()); + public static Set tagNames(Stream> stream) { + return stream.map(TagKey::location) + .collect(Collectors.toUnmodifiableSet()); } - public static Set tagNames(IForgeRegistry registry, TYPE element) { - return tagNames(manager(registry), element); + /** + * Checks if a tag contains the given element. + */ + public static boolean tagContains(Registry registry, TagKey key, TYPE element) { + return registry.getTag(key) + .map(holders -> holders.stream().anyMatch(h -> h.value() == element)) + .orElse(false); } - public static Set tagNames(ITagManager tagManager, TYPE element) { - return tagNames(tagsStream(tagManager, element)); + /** + * Checks if a tag is empty (has no entries). + */ + public static boolean isTagEmpty(Registry registry, TagKey key) { + return registry.getTag(key) + .map(holders -> holders.size() == 0) + .orElse(true); } - public static Set tagNames(Stream> stream) { - return stream.map(TagKey::location) - .collect(Collectors.toUnmodifiableSet()); + /** + * Gets all elements in a tag as a list. + */ + public static List getTagElements(Registry registry, TagKey key) { + return registry.getTag(key) + .map(holders -> holders.stream().map(Holder::value).toList()) + .orElse(List.of()); } } diff --git a/src/main/java/igentuman/nc/util/TextureUtil.java b/src/main/java/igentuman/nc/util/TextureUtil.java index 22ddcafd5..21612feb3 100644 --- a/src/main/java/igentuman/nc/util/TextureUtil.java +++ b/src/main/java/igentuman/nc/util/TextureUtil.java @@ -2,8 +2,8 @@ import com.mojang.blaze3d.platform.NativeImage; import net.minecraft.resources.ResourceLocation; -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 java.awt.Color; import java.io.IOException; diff --git a/src/main/java/igentuman/nc/util/WastelandEnabledCondition.java b/src/main/java/igentuman/nc/util/WastelandEnabledCondition.java index f9cd976d0..2438a50c7 100644 --- a/src/main/java/igentuman/nc/util/WastelandEnabledCondition.java +++ b/src/main/java/igentuman/nc/util/WastelandEnabledCondition.java @@ -1,50 +1,29 @@ package igentuman.nc.util; -import com.google.gson.JsonObject; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.util.GsonHelper; -import net.minecraftforge.common.crafting.conditions.ICondition; -import net.minecraftforge.common.crafting.conditions.IConditionSerializer; -import net.minecraftforge.fml.ModList; - -import static igentuman.nc.NuclearCraft.rl; +import com.mojang.serialization.MapCodec; +import net.neoforged.neoforge.common.conditions.ICondition; + import static igentuman.nc.handler.config.WorldConfig.DIMENSION_CONFIG; public class WastelandEnabledCondition implements ICondition { - private static final ResourceLocation NAME = rl("wasteland_enabled"); + public static final WastelandEnabledCondition INSTANCE = new WastelandEnabledCondition(); - public WastelandEnabledCondition() { + public static final MapCodec CODEC = MapCodec.unit(INSTANCE).stable(); - } + public WastelandEnabledCondition() {} - public ResourceLocation getID() { - return NAME; + @Override + public boolean test(IContext context) { + return DIMENSION_CONFIG.registerWasteland.get(); } - public boolean test(ICondition.IContext context) { - return DIMENSION_CONFIG.registerWasteland.get(); + @Override + public MapCodec codec() { + return CODEC; } + @Override public String toString() { return "is wasteland dim enabled in config"; } - - public static class Serializer implements IConditionSerializer { - public static final Serializer INSTANCE = new Serializer(); - - public Serializer() { - } - - public void write(JsonObject json, WastelandEnabledCondition value) { - - } - - public WastelandEnabledCondition read(JsonObject json) { - return new WastelandEnabledCondition(); - } - - public ResourceLocation getID() { - return WastelandEnabledCondition.NAME; - } - } -} \ No newline at end of file +} diff --git a/src/main/java/igentuman/nc/util/builder/MultiblockRenderer.java b/src/main/java/igentuman/nc/util/builder/MultiblockRenderer.java index d6ac1a400..0ca006dd4 100644 --- a/src/main/java/igentuman/nc/util/builder/MultiblockRenderer.java +++ b/src/main/java/igentuman/nc/util/builder/MultiblockRenderer.java @@ -4,19 +4,16 @@ import com.mojang.blaze3d.systems.RenderSystem; import com.mojang.blaze3d.vertex.PoseStack; import net.minecraft.client.Minecraft; -import net.minecraft.client.renderer.GameRenderer; import net.minecraft.client.renderer.MultiBufferSource; import net.minecraft.client.renderer.ShaderInstance; import net.minecraft.client.renderer.block.BlockRenderDispatcher; -import net.minecraft.client.renderer.chunk.ChunkRenderDispatcher; import net.minecraft.client.renderer.texture.OverlayTexture; import net.minecraft.core.BlockPos; import net.minecraft.core.Vec3i; import net.minecraft.util.RandomSource; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.state.BlockState; -import net.minecraftforge.client.event.RegisterShadersEvent; -import net.minecraftforge.client.model.data.ModelData; +import net.neoforged.neoforge.client.model.data.ModelData; import org.joml.Quaternionf; import org.lwjgl.opengl.GL11; @@ -59,7 +56,7 @@ public static void render(HashMap structure, PoseStack stack, i stack.pushPose(); // Center within the provided x, y, w, h bounds stack.translate(x + w/2.0f, y + h/2.0f, 100); - RenderSystem.setShader(GameRenderer::getRendertypeTextShader); + // Apply isometric-style rotation for better viewing angle stack.mulPose(new Quaternionf().rotationX((float) Math.toRadians(30))); stack.mulPose(new Quaternionf().rotationY((float) Math.toRadians(-135))); @@ -79,7 +76,7 @@ public static void render(HashMap structure, PoseStack stack, i BlockState state = entry.getValue().defaultBlockState(); stack.pushPose(); - RenderSystem.setShader(GameRenderer::getRendertypeTextShader); + // Directly subtract 1 from each coordinate instead of using minPos stack.translate( pos.getX() - 1, diff --git a/src/main/java/igentuman/nc/util/capability/CapabilityUtils.java b/src/main/java/igentuman/nc/util/capability/CapabilityUtils.java index 9b5fd9ea5..abda63d80 100644 --- a/src/main/java/igentuman/nc/util/capability/CapabilityUtils.java +++ b/src/main/java/igentuman/nc/util/capability/CapabilityUtils.java @@ -1,44 +1,9 @@ package igentuman.nc.util.capability; -import net.minecraft.core.Direction; -import net.minecraftforge.common.capabilities.Capability; -import net.minecraftforge.common.capabilities.ICapabilityProvider; -import net.minecraftforge.common.util.LazyOptional; -import net.minecraftforge.common.util.NonNullConsumer; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; - -import java.util.Objects; - +/** + * Capability utilities. Most methods removed during NeoForge 1.21.1 migration + * since LazyOptional and ICapabilityProvider no longer exist. + */ public final class CapabilityUtils { - - private CapabilityUtils() { - } - - - @SuppressWarnings({"unchecked", "rawtypes"}) - public static void addListener(@NotNull LazyOptional lazyOptional, @NotNull NonNullConsumer listener) { - lazyOptional.addListener(listener); - } - - public static T getPresentCapability(ICapabilityProvider provider, Capability cap) - { - return Objects.requireNonNull(getCapability(provider, cap, null)); - } - - @Nullable - public static T getCapability(ICapabilityProvider provider, Capability cap) - { - return getCapability(provider, cap, null); - } - - @Nullable - public static T getCapability(ICapabilityProvider provider, Capability cap, @Nullable Direction side) - { - LazyOptional optional = provider.getCapability(cap, side); - if(optional.isPresent()) - return optional.orElseThrow(RuntimeException::new); - else - return null; - } -} \ No newline at end of file + private CapabilityUtils() {} +} diff --git a/src/main/java/igentuman/nc/util/capability/CustomEnergyStorage.java b/src/main/java/igentuman/nc/util/capability/CustomEnergyStorage.java index 2f1587240..402aa2308 100644 --- a/src/main/java/igentuman/nc/util/capability/CustomEnergyStorage.java +++ b/src/main/java/igentuman/nc/util/capability/CustomEnergyStorage.java @@ -1,12 +1,13 @@ package igentuman.nc.util.capability; +import igentuman.nc.compat.gregtech.GTUtils; +import net.minecraft.core.HolderLookup; import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.IntTag; import net.minecraft.nbt.Tag; -import net.minecraftforge.energy.EnergyStorage; +import net.neoforged.neoforge.energy.EnergyStorage; import static igentuman.nc.block.entity.NuclearCraftBE.isGTEUCapEnabled; -import static igentuman.nc.compat.gregtech.GTUtils.*; import static igentuman.nc.handler.config.CommonConfig.GTCEU_CONFIG; import static igentuman.nc.util.ModUtil.isGtLoaded; @@ -35,7 +36,12 @@ public CustomEnergyStorage(int capacity, int maxTransfer, int maxExtract, long o } public CustomEnergyStorage(int capacity, int maxTransfer, int maxExtract) { - this(capacity, maxTransfer, maxExtract, tierByFe(maxExtract), tierByFe(maxExtract), tierByFe(maxTransfer), tierByFe(maxTransfer)); + this(capacity, maxTransfer, maxExtract, defaultTier(maxExtract), defaultTier(maxExtract), defaultTier(maxTransfer), defaultTier(maxTransfer)); + } + + /** GT-independent tier calculation. Avoids loading GTUtils (and its GregTech imports) at construction time. */ + private static long defaultTier(int fe) { + return 3L; } public CustomEnergyStorage(int capacity, int maxTransfer, int maxExtract, boolean limit) { @@ -51,7 +57,7 @@ public CustomEnergyStorage setInputAmperage(long value) { public CustomEnergyStorage setOutputAmperage(long value) { //as only multiblock storages calls this method, we are applying limit for multiblock storages only if(isGtLoaded() && isGTEUCapEnabled() && GTCEU_CONFIG.LIMIT_FE_OUTPUT.get()) { - maxExtract = convert2FE(value * outputVoltage); + maxExtract = GTUtils.convert2FE(value * outputVoltage); } this.outputAmperage = value; return this; @@ -141,14 +147,16 @@ public void setMaxExtract(int i) { maxExtract = i; } - public Tag serializeNBT() { + @Override + public Tag serializeNBT(HolderLookup.Provider provider) { CompoundTag tag = new CompoundTag(); tag.putInt("energy", this.getEnergyStored()); tag.putInt("capacity", this.getMaxEnergyStored()); return tag; } - public void deserializeNBT(Tag nbt) { + @Override + public void deserializeNBT(HolderLookup.Provider provider, Tag nbt) { if (nbt instanceof IntTag intNbt) { this.energy = intNbt.getAsInt(); } else { @@ -179,7 +187,7 @@ public long getGTInputVoltage() { public int getMaxExtract() { if(isGtLoaded() && isGTEUCapEnabled()) { - return convert2FE(outputAmperage * outputVoltage); + return GTUtils.convert2FE(outputAmperage * outputVoltage); } return maxExtract; } diff --git a/src/main/java/igentuman/nc/util/capability/ItemCapabilityProvider.java b/src/main/java/igentuman/nc/util/capability/ItemCapabilityProvider.java index f8c8c4129..4181fede9 100644 --- a/src/main/java/igentuman/nc/util/capability/ItemCapabilityProvider.java +++ b/src/main/java/igentuman/nc/util/capability/ItemCapabilityProvider.java @@ -1,22 +1,19 @@ package igentuman.nc.util.capability; -import net.minecraft.core.Direction; +import igentuman.api.platform.NCItemStacks; +import igentuman.api.platform.NCSerialization; +import net.minecraft.core.HolderLookup; import net.minecraft.nbt.CompoundTag; import net.minecraft.world.item.ItemStack; -import net.minecraftforge.common.capabilities.Capability; -import net.minecraftforge.common.capabilities.ForgeCapabilities; -import net.minecraftforge.common.capabilities.ICapabilityProvider; -import net.minecraftforge.common.util.LazyOptional; -import net.minecraftforge.items.IItemHandler; +import net.neoforged.neoforge.items.IItemHandler; +import net.neoforged.neoforge.server.ServerLifecycleHooks; import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; -public class ItemCapabilityProvider implements ICapabilityProvider { - +public class ItemCapabilityProvider { + private final ItemStack stack; private final ItemInventoryHandler inventoryHandler; - private final LazyOptional inventoryOptional; - + public ItemCapabilityProvider(ItemStack stack, int inventorySize, int stackSize) { this.stack = stack; this.inventoryHandler = new ItemInventoryHandler(inventorySize, stackSize) { @@ -25,7 +22,7 @@ public void setStackInSlot(int slot, @NotNull ItemStack stack) { super.setStackInSlot(slot, stack); saveToNBT(); } - + @Override public @NotNull ItemStack insertItem(int slot, @NotNull ItemStack stack, boolean simulate) { ItemStack result = super.insertItem(slot, stack, simulate); @@ -34,7 +31,7 @@ public void setStackInSlot(int slot, @NotNull ItemStack stack) { } return result; } - + @Override public ItemStack extractItem(int slot, int amount, boolean simulate) { ItemStack result = super.extractItem(slot, amount, simulate); @@ -44,43 +41,34 @@ public ItemStack extractItem(int slot, int amount, boolean simulate) { return result; } }; - this.inventoryOptional = LazyOptional.of(() -> inventoryHandler); - - // Load existing data from NBT loadFromNBT(); } - - @NotNull - @Override - public LazyOptional getCapability(@NotNull Capability cap, @Nullable Direction side) { - if (cap == ForgeCapabilities.ITEM_HANDLER) { - return inventoryOptional.cast(); - } - return LazyOptional.empty(); + + public IItemHandler getItemHandler() { + return inventoryHandler; + } + + private HolderLookup.Provider registries() { + return ServerLifecycleHooks.getCurrentServer().registryAccess(); } - + private void loadFromNBT() { - CompoundTag tag = stack.getOrCreateTag(); + CompoundTag tag = NCItemStacks.getTagCopy(stack); if (tag.contains("Inventory")) { - inventoryHandler.deserializeNBT(tag.getCompound("Inventory")); + NCSerialization.deserialize(inventoryHandler, registries(), tag.getCompound("Inventory")); } } - + public void saveToNBT() { - CompoundTag tag = stack.getOrCreateTag(); - CompoundTag inventoryNBT = inventoryHandler.serializeNBT(); - tag.put("Inventory", inventoryNBT); - stack.setTag(tag); + CompoundTag inventoryNBT = NCSerialization.serialize(inventoryHandler, registries()); + NCItemStacks.modifyTag(stack, tag -> tag.put("Inventory", inventoryNBT)); } public ItemInventoryHandler getInventoryHandler() { return inventoryHandler; } - - /** - * Force save all data to NBT - useful for ensuring data persistence - */ + public void forceSave() { saveToNBT(); } -} \ No newline at end of file +} diff --git a/src/main/java/igentuman/nc/util/capability/ItemInventoryHandler.java b/src/main/java/igentuman/nc/util/capability/ItemInventoryHandler.java index af4cc414a..7888ad393 100644 --- a/src/main/java/igentuman/nc/util/capability/ItemInventoryHandler.java +++ b/src/main/java/igentuman/nc/util/capability/ItemInventoryHandler.java @@ -1,13 +1,15 @@ package igentuman.nc.util.capability; +import net.minecraft.core.HolderLookup; import net.minecraft.core.NonNullList; import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.ListTag; import net.minecraft.nbt.Tag; import net.minecraft.world.item.ItemStack; -import net.minecraftforge.common.util.INBTSerializable; -import net.minecraftforge.items.IItemHandlerModifiable; -import net.minecraftforge.items.ItemHandlerHelper; +import igentuman.api.platform.NCItemStacks; +import igentuman.api.platform.NCSerialization; +import net.neoforged.neoforge.common.util.INBTSerializable; +import net.neoforged.neoforge.items.IItemHandlerModifiable; import org.jetbrains.annotations.NotNull; import javax.annotation.Nonnull; @@ -66,11 +68,11 @@ public ItemStack extractItem(int slot, int amount, boolean simulate) { } } else { if (!simulate) { - this.stacks.set(slot, ItemHandlerHelper.copyStackWithSize(existing, existing.getCount() - toExtract)); + this.stacks.set(slot, NCItemStacks.copyWithCount(existing, existing.getCount() - toExtract)); // onContentsChanged(slot); } - return ItemHandlerHelper.copyStackWithSize(existing, toExtract); + return NCItemStacks.copyWithCount(existing, toExtract); } } @@ -87,7 +89,7 @@ public ItemStack insertItemInternal(int slot, @Nonnull ItemStack stack, boolean int limit = getSlotLimit(slot); if (!existing.isEmpty()) { - if (!ItemHandlerHelper.canItemStacksStack(stack, existing)) + if (!NCItemStacks.canStack(stack, existing)) return stack; limit -= existing.getCount(); @@ -100,13 +102,13 @@ public ItemStack insertItemInternal(int slot, @Nonnull ItemStack stack, boolean if (!simulate) { if (existing.isEmpty()) { - this.stacks.set(slot, reachedLimit ? ItemHandlerHelper.copyStackWithSize(stack, limit) : stack); + this.stacks.set(slot, reachedLimit ? NCItemStacks.copyWithCount(stack, limit) : stack); } else { existing.grow(reachedLimit ? limit : stack.getCount()); } } - return reachedLimit ? ItemHandlerHelper.copyStackWithSize(stack, stack.getCount() - limit) : ItemStack.EMPTY; + return reachedLimit ? NCItemStacks.copyWithCount(stack, stack.getCount() - limit) : ItemStack.EMPTY; } @Override @@ -137,21 +139,19 @@ public boolean isItemValid(int slot, @NotNull ItemStack stack) { * @param compoundTag The NBT tag to save to * @return The NBT tag with the ItemStack data */ - private CompoundTag saveItemStackWithLargeCount(ItemStack stack, CompoundTag compoundTag) { - CompoundTag saveTag = stack.save(compoundTag); + private CompoundTag saveItemStackWithLargeCount(ItemStack stack, HolderLookup.Provider provider) { + CompoundTag saveTag = (CompoundTag) NCSerialization.saveItemStack(stack, provider); saveTag.putInt("RealCount", stack.getCount()); return saveTag; } @Override - public CompoundTag serializeNBT() { + public CompoundTag serializeNBT(HolderLookup.Provider provider) { ListTag nbtTagList = new ListTag(); for (int i = 0; i < stacks.size(); i++) { if (!stacks.get(i).isEmpty()) { - CompoundTag itemTag = new CompoundTag(); + CompoundTag itemTag = saveItemStackWithLargeCount(stacks.get(i), provider); itemTag.putInt("Slot", i); - // Use custom save method to support large stack counts - saveItemStackWithLargeCount(stacks.get(i), itemTag); nbtTagList.add(itemTag); } } @@ -166,12 +166,12 @@ public void setSize(int size) { } @Override - public void deserializeNBT(CompoundTag nbt) { + public void deserializeNBT(HolderLookup.Provider provider, CompoundTag nbt) { // Clear existing stacks first for (int i = 0; i < stacks.size(); i++) { stacks.set(i, ItemStack.EMPTY); } - + // Load items from NBT ListTag tagList = nbt.getList("Items", Tag.TAG_COMPOUND); for (int i = 0; i < tagList.size(); i++) { @@ -180,13 +180,11 @@ public void deserializeNBT(CompoundTag nbt) { if (slot >= 0 && slot < stacks.size()) { // Load ItemStack preserving large stack counts - // First create the stack normally - ItemStack stack = ItemStack.of(itemTags); - + ItemStack stack = NCSerialization.loadItemStack(provider, itemTags); + // Then force the count to the original value if it was larger than the item's max stack size if (itemTags.contains("RealCount")) { int originalCount = itemTags.getInt("RealCount"); - // Always set the count to the original value, bypassing any validation stack.setCount(originalCount); } stacks.set(slot, stack); diff --git a/src/main/java/igentuman/nc/util/functions/ConstantPredicates.java b/src/main/java/igentuman/nc/util/functions/ConstantPredicates.java index 0667bf317..70f6f09f7 100644 --- a/src/main/java/igentuman/nc/util/functions/ConstantPredicates.java +++ b/src/main/java/igentuman/nc/util/functions/ConstantPredicates.java @@ -1,6 +1,6 @@ package igentuman.nc.util.functions; -import net.minecraftforge.common.util.TriPredicate; +import net.neoforged.neoforge.common.util.TriPredicate; import org.jetbrains.annotations.NotNull; import java.util.function.BiPredicate; diff --git a/src/main/java/igentuman/nc/util/insitu_leaching/IWorldVeinCapability.java b/src/main/java/igentuman/nc/util/insitu_leaching/IWorldVeinCapability.java index fe69be8c0..9a5a0b32e 100644 --- a/src/main/java/igentuman/nc/util/insitu_leaching/IWorldVeinCapability.java +++ b/src/main/java/igentuman/nc/util/insitu_leaching/IWorldVeinCapability.java @@ -2,7 +2,7 @@ import igentuman.nc.recipes.type.OreVeinRecipe; import net.minecraft.nbt.CompoundTag; -import net.minecraftforge.common.util.INBTSerializable; +import net.neoforged.neoforge.common.util.INBTSerializable; public interface IWorldVeinCapability extends INBTSerializable { diff --git a/src/main/java/igentuman/nc/util/insitu_leaching/OreVeinProvider.java b/src/main/java/igentuman/nc/util/insitu_leaching/OreVeinProvider.java index 0a3c237bb..6d63faf73 100644 --- a/src/main/java/igentuman/nc/util/insitu_leaching/OreVeinProvider.java +++ b/src/main/java/igentuman/nc/util/insitu_leaching/OreVeinProvider.java @@ -1,8 +1,11 @@ package igentuman.nc.util.insitu_leaching; +import igentuman.api.platform.NCRecipes; import igentuman.nc.recipes.NcRecipeType; +import igentuman.nc.recipes.type.NcRecipe; import igentuman.nc.recipes.type.OreVeinRecipe; import net.minecraft.server.level.ServerLevel; +import net.minecraft.world.item.crafting.RecipeType; import net.minecraft.world.level.Level; import java.util.HashMap; @@ -21,8 +24,9 @@ public class OreVeinProvider { @SuppressWarnings("unchecked") private OreVeinProvider(ServerLevel level) { this.level = level; - recipes = (List) level.getRecipeManager() - .getAllRecipesFor(NcRecipeType.ALL_RECIPES.get("nc_ore_veins").getRecipeType()); + NcRecipeType recipeType = (NcRecipeType) (NcRecipeType) + NcRecipeType.ALL_RECIPES.get("nc_ore_veins").getRecipeType(); + recipes = NCRecipes.getAllRecipesFor(level.getRecipeManager(), recipeType); } public boolean chunkContainsVein(int chunkX, int chunkZ) diff --git a/src/main/java/igentuman/nc/util/insitu_leaching/WorldVeinOres.java b/src/main/java/igentuman/nc/util/insitu_leaching/WorldVeinOres.java index c1cf5958a..e8ef40a21 100644 --- a/src/main/java/igentuman/nc/util/insitu_leaching/WorldVeinOres.java +++ b/src/main/java/igentuman/nc/util/insitu_leaching/WorldVeinOres.java @@ -1,6 +1,8 @@ package igentuman.nc.util.insitu_leaching; import igentuman.nc.recipes.type.OreVeinRecipe; +import igentuman.api.platform.NCSerialization; +import net.minecraft.core.HolderLookup; import net.minecraft.nbt.CompoundTag; import net.minecraft.server.level.ServerLevel; import net.minecraft.world.item.ItemStack; @@ -22,9 +24,9 @@ public WorldVeinOres(Level level) { this.level = (ServerLevel) level; } - public static WorldVeinOres deserialize(CompoundTag veins) { + public static WorldVeinOres deserialize(HolderLookup.Provider provider, CompoundTag veins) { WorldVeinOres worldVeins = new WorldVeinOres(); - worldVeins.deserializeNBT(veins); + NCSerialization.deserialize(worldVeins, provider, veins); return worldVeins; } @@ -61,7 +63,7 @@ public void mineBlock(int chunkX, int chunkZ) { } @Override - public CompoundTag serializeNBT() { + public CompoundTag serializeNBT(HolderLookup.Provider provider) { CompoundTag tag = new CompoundTag(); CompoundTag veinsTag = new CompoundTag(); for(long key : blocksInVein.keySet()) { @@ -72,7 +74,7 @@ public CompoundTag serializeNBT() { } @Override - public void deserializeNBT(CompoundTag nbt) { + public void deserializeNBT(HolderLookup.Provider provider, CompoundTag nbt) { CompoundTag veinsTag = nbt.getCompound("depletion"); for(String key : veinsTag.getAllKeys()) { blocksInVein.put(Long.parseLong(key), veinsTag.getInt(key)); diff --git a/src/main/java/igentuman/nc/util/insitu_leaching/WorldVeinsManager.java b/src/main/java/igentuman/nc/util/insitu_leaching/WorldVeinsManager.java index 9b2ecc3aa..3fbf576aa 100644 --- a/src/main/java/igentuman/nc/util/insitu_leaching/WorldVeinsManager.java +++ b/src/main/java/igentuman/nc/util/insitu_leaching/WorldVeinsManager.java @@ -1,5 +1,7 @@ package igentuman.nc.util.insitu_leaching; +import igentuman.api.platform.NCSerialization; +import net.minecraft.core.HolderLookup; import net.minecraft.nbt.CompoundTag; import net.minecraft.server.level.ServerLevel; import net.minecraft.server.level.ServerPlayer; @@ -32,19 +34,21 @@ public static WorldVeinsManager get(Level level) { throw new RuntimeException("Don't access this client-side!"); } DimensionDataStorage storage = ((ServerLevel) level).getDataStorage(); - return storage.computeIfAbsent(WorldVeinsManager::new, WorldVeinsManager::new, "nc_world_veins"); + return storage.computeIfAbsent( + new SavedData.Factory<>(WorldVeinsManager::new, WorldVeinsManager::new, null), + "nc_world_veins"); } - public WorldVeinsManager(CompoundTag tag) { + public WorldVeinsManager(CompoundTag tag, HolderLookup.Provider registries) { if(tag.contains("depletion")) { - worldVeinData = WorldVeinOres.deserialize(tag); + worldVeinData = WorldVeinOres.deserialize(registries, tag); } else { worldVeinData = new WorldVeinOres(); } } @Override - public @NotNull CompoundTag save(CompoundTag tag) { - return worldVeinData.serializeNBT(); + public @NotNull CompoundTag save(CompoundTag tag, HolderLookup.Provider registries) { + return NCSerialization.serialize(worldVeinData, registries); } } diff --git a/src/main/java/igentuman/nc/util/insitu_leaching/WorldVeinsProvider.java b/src/main/java/igentuman/nc/util/insitu_leaching/WorldVeinsProvider.java deleted file mode 100644 index 2a4eb8db3..000000000 --- a/src/main/java/igentuman/nc/util/insitu_leaching/WorldVeinsProvider.java +++ /dev/null @@ -1,77 +0,0 @@ -package igentuman.nc.util.insitu_leaching; - -import net.minecraft.core.Direction; -import net.minecraft.nbt.CompoundTag; -import net.minecraft.world.level.Level; -import net.minecraftforge.common.capabilities.*; -import net.minecraftforge.common.util.LazyOptional; -import net.minecraftforge.event.AttachCapabilitiesEvent; -import org.jetbrains.annotations.Nullable; - -import javax.annotation.Nonnull; - -import static igentuman.nc.NuclearCraft.rl; - -public class WorldVeinsProvider implements ICapabilitySerializable { - - public static Capability VEINS_CAP = CapabilityManager.get(new CapabilityToken<>(){}); - private WorldVeinOres veinsData = createVeinData(); - private final LazyOptional opt = LazyOptional.of(() -> createVeinData()); - public static boolean isTracking = false; - private Level level; - - public WorldVeinsProvider() { - } - - public WorldVeinsProvider(Level level) { - this.level = level; - } - - public static void attachVeinCapability(final AttachCapabilitiesEvent event) { - if (!event.getObject().isClientSide() && !event.getObject().getCapability(VEINS_CAP).isPresent()) { - event.addCapability(rl("veins"), new WorldVeinsProvider(event.getObject())); - isTracking = true; - } - } - - public static void stopTracking() { - isTracking = false; - } - - public static void startTracking() { - isTracking = true; - } - - @Nonnull - private WorldVeinOres createVeinData() { - if (veinsData == null) { - veinsData = new WorldVeinOres(); - } - return new WorldVeinOres(level); - } - - @Nonnull - @Override - public LazyOptional getCapability(@Nonnull Capability cap) { - if (cap == VEINS_CAP) { - return opt.cast(); - } - return LazyOptional.empty(); - } - - @Nonnull - @Override - public LazyOptional getCapability(@Nonnull Capability cap, @Nullable Direction side) { - return getCapability(cap); - } - - @Override - public CompoundTag serializeNBT() { - return veinsData.serializeNBT(); - } - - @Override - public void deserializeNBT(CompoundTag nbt) { - veinsData.deserializeNBT(nbt); - } -} diff --git a/src/main/java/igentuman/nc/util/math/FloatingLongSupplier.java b/src/main/java/igentuman/nc/util/math/FloatingLongSupplier.java index 11e03d08a..4c335cd68 100644 --- a/src/main/java/igentuman/nc/util/math/FloatingLongSupplier.java +++ b/src/main/java/igentuman/nc/util/math/FloatingLongSupplier.java @@ -1,6 +1,5 @@ package igentuman.nc.util.math; -import net.minecraftforge.common.util.NonNullSupplier; import org.jetbrains.annotations.NotNull; import java.util.function.Supplier; @@ -10,7 +9,7 @@ * easier to declare {@link Supplier}'s for {@link FloatingLong}s. */ @FunctionalInterface -public interface FloatingLongSupplier extends Supplier, NonNullSupplier { +public interface FloatingLongSupplier extends Supplier { @NotNull @Override diff --git a/src/main/java/igentuman/nc/util/render/CameraUtil.java b/src/main/java/igentuman/nc/util/render/CameraUtil.java index 5232ae4e3..5935e9dda 100644 --- a/src/main/java/igentuman/nc/util/render/CameraUtil.java +++ b/src/main/java/igentuman/nc/util/render/CameraUtil.java @@ -23,7 +23,6 @@ public static Vec3 worldToScreenPos(BlockPos pos, float partialTicks) { // Check if block is occluded Vec3 cameraPos = camera.getPosition(); Vec3 blockCenter = new Vec3(pos.getX() + 0.5, pos.getY() + 0.5, pos.getZ() + 0.5); - Vec3 direction = blockCenter.subtract(cameraPos); // Ray trace from camera to block HitResult hitResult = level.clip( @@ -47,7 +46,9 @@ public static Vec3 worldToScreenPos(BlockPos pos, float partialTicks) { float fov = (float) mc.options.fov().get(); Matrix4f projMatrix = mc.gameRenderer.getProjectionMatrix(fov); - Matrix4f modelViewMatrix = RenderSystem.getModelViewMatrix(); + // In 1.21.1, RenderSystem.getModelViewMatrix() is removed. + // Use an identity matrix — the view transform is already applied via the camera position subtraction above. + Matrix4f modelViewMatrix = new Matrix4f(); Vector4f screenPos = new Vector4f((float) viewPos.x, (float) viewPos.y, (float) viewPos.z, 1.0F); screenPos.mul(modelViewMatrix); diff --git a/src/main/java/igentuman/nc/world/BiomeFilterNether.java b/src/main/java/igentuman/nc/world/BiomeFilterNether.java index 1678c8c24..454ae800f 100644 --- a/src/main/java/igentuman/nc/world/BiomeFilterNether.java +++ b/src/main/java/igentuman/nc/world/BiomeFilterNether.java @@ -1,6 +1,7 @@ package igentuman.nc.world; import com.mojang.serialization.Codec; +import com.mojang.serialization.MapCodec; import net.minecraft.core.BlockPos; import net.minecraft.core.Holder; import net.minecraft.util.RandomSource; @@ -20,9 +21,7 @@ public class BiomeFilterNether extends PlacementModifier { private static final BiomeFilterNether INSTANCE = new BiomeFilterNether(); - public static Codec CODEC = Codec.unit(() -> { - return INSTANCE; - }); + public static MapCodec CODEC = MapCodec.unit(INSTANCE); private BiomeFilterNether() { } diff --git a/src/main/java/igentuman/nc/world/NCConfiguredFeatures.java b/src/main/java/igentuman/nc/world/NCConfiguredFeatures.java index 380cb2805..34eb52cc3 100644 --- a/src/main/java/igentuman/nc/world/NCConfiguredFeatures.java +++ b/src/main/java/igentuman/nc/world/NCConfiguredFeatures.java @@ -3,7 +3,7 @@ import igentuman.nc.content.materials.Ores; import igentuman.nc.world.ore.NCOre; import net.minecraft.core.registries.Registries; -import net.minecraft.data.worldgen.BootstapContext; +import net.minecraft.data.worldgen.BootstrapContext; import net.minecraft.data.worldgen.features.FeatureUtils; import net.minecraft.resources.ResourceKey; import net.minecraft.tags.BlockTags; @@ -15,7 +15,7 @@ import net.minecraft.world.level.levelgen.structure.templatesystem.BlockMatchTest; import net.minecraft.world.level.levelgen.structure.templatesystem.RuleTest; import net.minecraft.world.level.levelgen.structure.templatesystem.TagMatchTest; -import net.minecraftforge.registries.RegistryObject; +import net.neoforged.neoforge.registries.DeferredHolder; import java.util.ArrayList; import java.util.HashMap; @@ -33,7 +33,7 @@ public class NCConfiguredFeatures { public static final HashMap>> CONFIGURED_FEATURES = initFeatures(); - public static final RegistryObject> CONFIGURED_WASTELAND_RUINS = CONFIGURED.register("wasteland_ruins", () -> new ConfiguredFeature<>(WASTELAND_RUINS_FEATURE.get(), NoneFeatureConfiguration.INSTANCE)); + public static final DeferredHolder, ConfiguredFeature> CONFIGURED_WASTELAND_RUINS = CONFIGURED.register("wasteland_ruins", () -> new ConfiguredFeature<>(WASTELAND_RUINS_FEATURE.get(), NoneFeatureConfiguration.INSTANCE)); private static HashMap>> initFeatures() { HashMap>> features = new HashMap<>(); @@ -53,7 +53,7 @@ private static HashMap>> initFeatures return features; } - public static void bootstrap(BootstapContext> context) { + public static void bootstrap(BootstrapContext> context) { RuleTest stoneReplaceable = new TagMatchTest(BlockTags.STONE_ORE_REPLACEABLES); RuleTest deepslateReplaceables = new TagMatchTest(BlockTags.DEEPSLATE_ORE_REPLACEABLES); RuleTest netherrackReplacables = new BlockMatchTest(Blocks.NETHERRACK); @@ -131,7 +131,7 @@ public static void bootstrap(BootstapContext> context) { return ResourceKey.create(Registries.CONFIGURED_FEATURE, rl(name)); } - private static > void register(BootstapContext> context, + private static > void register(BootstrapContext> context, ResourceKey> key, F feature, FC configuration) { context.register(key, new ConfiguredFeature<>(feature, configuration)); } diff --git a/src/main/java/igentuman/nc/world/NCPlacedFeatures.java b/src/main/java/igentuman/nc/world/NCPlacedFeatures.java index 9e69610bd..fd78386c8 100644 --- a/src/main/java/igentuman/nc/world/NCPlacedFeatures.java +++ b/src/main/java/igentuman/nc/world/NCPlacedFeatures.java @@ -7,14 +7,14 @@ import net.minecraft.core.Holder; import net.minecraft.core.HolderGetter; import net.minecraft.core.registries.Registries; -import net.minecraft.data.worldgen.BootstapContext; +import net.minecraft.data.worldgen.BootstrapContext; import net.minecraft.data.worldgen.placement.PlacementUtils; import net.minecraft.resources.ResourceKey; import net.minecraft.world.level.levelgen.Heightmap; import net.minecraft.world.level.levelgen.VerticalAnchor; import net.minecraft.world.level.levelgen.feature.ConfiguredFeature; import net.minecraft.world.level.levelgen.placement.*; -import net.minecraftforge.registries.RegistryObject; +import net.neoforged.neoforge.registries.DeferredHolder; import java.util.HashMap; import java.util.List; @@ -28,7 +28,8 @@ public class NCPlacedFeatures { public static final HashMap> PLACED_FEATURES_KEYS = initPlaceFeatures(); - public static final RegistryObject WASTELAND_RUINS_PLACED_FEATURE = PLACED_FEATURES.register("wasteland_ruins", () -> new PlacedFeature(CONFIGURED_WASTELAND_RUINS.getHolder().get(), List.of())); + @SuppressWarnings("unchecked") + public static final DeferredHolder WASTELAND_RUINS_PLACED_FEATURE = PLACED_FEATURES.register("wasteland_ruins", () -> new PlacedFeature((Holder>) (Holder) CONFIGURED_WASTELAND_RUINS, List.of())); private static HashMap> initPlaceFeatures() { HashMap> map = new HashMap<>(); @@ -48,7 +49,7 @@ private static HashMap> initPlaceFeatures() { return map; } - public static void bootstrap(BootstapContext context) { + public static void bootstrap(BootstrapContext context) { HolderGetter> configuredFeatures = context.lookup(Registries.CONFIGURED_FEATURE); for(String name: Ores.all().keySet()) { @@ -122,7 +123,7 @@ private static ResourceKey registerKey(String name) { return ResourceKey.create(Registries.PLACED_FEATURE, rl(name)); } - private static void register(BootstapContext context, ResourceKey key, Holder> configuration, + private static void register(BootstrapContext context, ResourceKey key, Holder> configuration, List modifiers) { context.register(key, new PlacedFeature(configuration, List.copyOf(modifiers))); } diff --git a/src/main/java/igentuman/nc/world/OrePlacementModifier.java b/src/main/java/igentuman/nc/world/OrePlacementModifier.java index 314e76a68..1ef8d6ed3 100644 --- a/src/main/java/igentuman/nc/world/OrePlacementModifier.java +++ b/src/main/java/igentuman/nc/world/OrePlacementModifier.java @@ -1,6 +1,7 @@ package igentuman.nc.world; import com.mojang.serialization.Codec; +import com.mojang.serialization.MapCodec; import igentuman.nc.setup.registration.WorldGeneration; import igentuman.nc.world.dimension.Dimensions; import net.minecraft.core.BlockPos; @@ -23,9 +24,8 @@ public class OrePlacementModifier extends PlacementModifier { - public static final Codec CODEC = Codec.STRING.fieldOf("name") - .xmap(OrePlacementModifier::new, (modifier) -> modifier.name) - .codec(); + public static final MapCodec CODEC = Codec.STRING.fieldOf("name") + .xmap(OrePlacementModifier::new, (modifier) -> modifier.name); private final String name; private boolean register; @@ -64,15 +64,16 @@ public OrePlacementModifier(String name) { @Override public @NotNull Stream getPositions(PlacementContext context, RandomSource random, BlockPos pos) { int actualCount = determinePlacementCount(context, random); - int x = (pos.getX() >> 4 << 4) + random.nextInt(16); - int z = (pos.getZ() >> 4 << 4) + random.nextInt(16); if(actualCount == 0) { return Stream.empty(); } + // Pass through the input pos X,Z — InSquarePlacement.spread() in the + // placement chain handles the in-chunk randomization. Double-randomizing + // here pushed positions outside the WorldGenRegion and crashed BiomeFilter. return Stream.generate(() -> new BlockPos( - x, + pos.getX(), minHeight + random.nextInt(maxHeight - Math.max(minHeight, context.getMinGenY()) + 1), - z + pos.getZ() )).limit(actualCount); } diff --git a/src/main/java/igentuman/nc/world/biome/NCBiomeModifier.java b/src/main/java/igentuman/nc/world/biome/NCBiomeModifier.java index c24bf8500..ef0b21c53 100644 --- a/src/main/java/igentuman/nc/world/biome/NCBiomeModifier.java +++ b/src/main/java/igentuman/nc/world/biome/NCBiomeModifier.java @@ -4,17 +4,18 @@ import igentuman.nc.world.ore.NCOre; import net.minecraft.core.HolderSet; import net.minecraft.core.registries.Registries; -import net.minecraft.data.worldgen.BootstapContext; +import net.minecraft.data.worldgen.BootstrapContext; import net.minecraft.resources.ResourceKey; import net.minecraft.resources.ResourceLocation; import net.minecraft.tags.BiomeTags; import net.minecraft.tags.TagKey; import net.minecraft.world.level.biome.Biome; import net.minecraft.world.level.levelgen.GenerationStep; -import net.minecraftforge.common.Tags; -import net.minecraftforge.common.world.BiomeModifier; -import net.minecraftforge.common.world.ForgeBiomeModifiers; -import net.minecraftforge.registries.ForgeRegistries; +import net.neoforged.neoforge.common.Tags; +import net.neoforged.neoforge.common.world.BiomeModifier; +import net.neoforged.neoforge.common.world.BiomeModifiers; +import net.minecraft.core.registries.BuiltInRegistries; +import net.neoforged.neoforge.registries.NeoForgeRegistries; import java.util.HashMap; import java.util.List; @@ -43,31 +44,31 @@ private static HashMap> initBiomeModifiers() return map; } - public static void bootstrap(BootstapContext context) { + public static void bootstrap(BootstrapContext context) { var placedFeatures = context.lookup(Registries.PLACED_FEATURE); var biomes = context.lookup(Registries.BIOME); - TagKey everyBiome = TagKey.create(Registries.BIOME, ResourceLocation.fromNamespaceAndPath("forge", "biomes")); + TagKey everyBiome = TagKey.create(Registries.BIOME, ResourceLocation.fromNamespaceAndPath("c", "is_overworld")); for(String name: Ores.registered().keySet()) { NCOre ore = Ores.all().get(name); if(ore.config().dimensions.contains("minecraft:overworld")) { - context.register(BIOME_MODIFIERS.get(name), new ForgeBiomeModifiers.AddFeaturesBiomeModifier( + context.register(BIOME_MODIFIERS.get(name), new BiomeModifiers.AddFeaturesBiomeModifier( biomes.getOrThrow(everyBiome), HolderSet.direct(placedFeatures.getOrThrow(PLACED_FEATURES_KEYS.get(name))), GenerationStep.Decoration.UNDERGROUND_ORES)); - context.register(BIOME_MODIFIERS.get(name+"_wasteland"), new ForgeBiomeModifiers.AddFeaturesBiomeModifier( + context.register(BIOME_MODIFIERS.get(name+"_wasteland"), new BiomeModifiers.AddFeaturesBiomeModifier( biomes.getOrThrow(WASTELAND), HolderSet.direct(placedFeatures.getOrThrow(PLACED_FEATURES_KEYS.get(name+"_wasteland"))), GenerationStep.Decoration.UNDERGROUND_ORES)); } if(ore.config().dimensions.contains("minecraft:nether")) { - context.register(BIOME_MODIFIERS.get(name), new ForgeBiomeModifiers.AddFeaturesBiomeModifier( + context.register(BIOME_MODIFIERS.get(name), new BiomeModifiers.AddFeaturesBiomeModifier( biomes.getOrThrow(BiomeTags.IS_NETHER), HolderSet.direct(placedFeatures.getOrThrow(PLACED_FEATURES_KEYS.get(name))), GenerationStep.Decoration.UNDERGROUND_ORES)); } if(ore.config().dimensions.contains("minecraft:the_end")) { - context.register(BIOME_MODIFIERS.get(name), new ForgeBiomeModifiers.AddFeaturesBiomeModifier( + context.register(BIOME_MODIFIERS.get(name), new BiomeModifiers.AddFeaturesBiomeModifier( biomes.getOrThrow(BiomeTags.IS_END), HolderSet.direct(placedFeatures.getOrThrow(PLACED_FEATURES_KEYS.get(name))), GenerationStep.Decoration.UNDERGROUND_ORES)); @@ -75,28 +76,28 @@ public static void bootstrap(BootstapContext context) { } for(String name: List.of("uranium", "thorium")) { - context.register(BIOME_MODIFIERS.get(name+"_additional_wasteland"), new ForgeBiomeModifiers.AddFeaturesBiomeModifier( + context.register(BIOME_MODIFIERS.get(name+"_additional_wasteland"), new BiomeModifiers.AddFeaturesBiomeModifier( biomes.getOrThrow(WASTELAND), HolderSet.direct(placedFeatures.getOrThrow(PLACED_FEATURES_KEYS.get(name+"_additional_wasteland"))), GenerationStep.Decoration.UNDERGROUND_ORES)); } - context.register(BIOME_MODIFIERS.get("glowing_mushroom"), new ForgeBiomeModifiers.AddFeaturesBiomeModifier( + context.register(BIOME_MODIFIERS.get("glowing_mushroom"), new BiomeModifiers.AddFeaturesBiomeModifier( biomes.getOrThrow(BiomeTags.IS_NETHER), HolderSet.direct(placedFeatures.getOrThrow(PLACED_FEATURES_KEYS.get("glowing_mushroom"))), GenerationStep.Decoration.UNDERGROUND_DECORATION)); - context.register(BIOME_MODIFIERS.get("glowing_mushroom_wasteland"), new ForgeBiomeModifiers.AddFeaturesBiomeModifier( + context.register(BIOME_MODIFIERS.get("glowing_mushroom_wasteland"), new BiomeModifiers.AddFeaturesBiomeModifier( biomes.getOrThrow(WASTELAND), HolderSet.direct(placedFeatures.getOrThrow(PLACED_FEATURES_KEYS.get("glowing_mushroom_wasteland"))), GenerationStep.Decoration.VEGETAL_DECORATION)); - context.register(BIOME_MODIFIERS.get("wasteland_portal"), new ForgeBiomeModifiers.AddFeaturesBiomeModifier( + context.register(BIOME_MODIFIERS.get("wasteland_portal"), new BiomeModifiers.AddFeaturesBiomeModifier( biomes.getOrThrow(WASTELAND), HolderSet.direct(placedFeatures.getOrThrow(PLACED_FEATURES_KEYS.get("wasteland_portal"))), GenerationStep.Decoration.SURFACE_STRUCTURES)); - context.register(BIOME_MODIFIERS.get("wasteland_boss_lair"), new ForgeBiomeModifiers.AddFeaturesBiomeModifier( + context.register(BIOME_MODIFIERS.get("wasteland_boss_lair"), new BiomeModifiers.AddFeaturesBiomeModifier( biomes.getOrThrow(WASTELAND), HolderSet.direct(placedFeatures.getOrThrow(PLACED_FEATURES_KEYS.get("wasteland_boss_lair"))), GenerationStep.Decoration.SURFACE_STRUCTURES)); @@ -104,6 +105,6 @@ public static void bootstrap(BootstapContext context) { } private static ResourceKey registerKey(String name) { - return ResourceKey.create(ForgeRegistries.Keys.BIOME_MODIFIERS, rl(name)); + return ResourceKey.create(NeoForgeRegistries.Keys.BIOME_MODIFIERS, rl(name)); } } diff --git a/src/main/java/igentuman/nc/world/biome/NCDensityFunction.java b/src/main/java/igentuman/nc/world/biome/NCDensityFunction.java index e4c40aa5c..50679a2d4 100644 --- a/src/main/java/igentuman/nc/world/biome/NCDensityFunction.java +++ b/src/main/java/igentuman/nc/world/biome/NCDensityFunction.java @@ -1,26 +1,22 @@ package igentuman.nc.world.biome; -import com.mojang.serialization.Codec; -import com.mojang.serialization.Lifecycle; import com.mojang.serialization.MapCodec; -import net.minecraft.core.Holder; import net.minecraft.core.registries.Registries; -import net.minecraft.data.worldgen.BootstapContext; +import net.minecraft.data.worldgen.BootstrapContext; import net.minecraft.resources.ResourceKey; import net.minecraft.world.level.levelgen.DensityFunction; import net.minecraft.world.level.levelgen.DensityFunctions; import net.minecraft.world.level.levelgen.Noises; -import net.minecraftforge.registries.DeferredRegister; -import org.jetbrains.annotations.NotNull; +import net.neoforged.neoforge.registries.DeferredRegister; import static igentuman.nc.NuclearCraft.MODID; import static igentuman.nc.NuclearCraft.rl; public class NCDensityFunction { - public static final DeferredRegister> DENSITY_FUNCTION_TYPES = DeferredRegister.create(Registries.DENSITY_FUNCTION_TYPE, MODID); + public static final DeferredRegister> DENSITY_FUNCTION_TYPES = DeferredRegister.create(Registries.DENSITY_FUNCTION_TYPE, MODID); public static final ResourceKey WASTELAND_TERRAIN = ResourceKey.create(Registries.DENSITY_FUNCTION, rl("wasteland")); - public static void bootstrap(BootstapContext context) { + public static void bootstrap(BootstrapContext context) { DensityFunction baseNoise = DensityFunctions.noise( context.lookup(Registries.NOISE).getOrThrow(Noises.SURFACE), 0.5, 0.75 @@ -51,6 +47,6 @@ public static void bootstrap(BootstapContext context) { // Register the density function - context.register(WASTELAND_TERRAIN, finalTerrain, Lifecycle.stable()); + context.register(WASTELAND_TERRAIN, finalTerrain); } } diff --git a/src/main/java/igentuman/nc/world/biome/NCSurfaceRuleData.java b/src/main/java/igentuman/nc/world/biome/NCSurfaceRuleData.java index b0df38667..c72cda0ae 100644 --- a/src/main/java/igentuman/nc/world/biome/NCSurfaceRuleData.java +++ b/src/main/java/igentuman/nc/world/biome/NCSurfaceRuleData.java @@ -5,7 +5,7 @@ import net.minecraft.core.HolderGetter; import net.minecraft.core.Registry; import net.minecraft.core.registries.Registries; -import net.minecraft.data.worldgen.BootstapContext; +import net.minecraft.data.worldgen.BootstrapContext; import net.minecraft.resources.ResourceKey; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.level.block.Block; @@ -39,14 +39,14 @@ private static SurfaceRules.RuleSource makeStateRule(Block block) { public static final ResourceKey CUSTOM_OVERWORLD_NOISE_GEN = ResourceKey.create(Registries.NOISE_SETTINGS, rl("custom_overworld")); - public static void bootstrap(BootstapContext context) { + public static void bootstrap(BootstrapContext context) { context.register(CUSTOM_OVERWORLD_NOISE_GEN, makeCustomOverworldNoiseSettings(context)); } /** * Creates a custom NoiseGeneratorSettings that inherits from OVERWORLD but overrides specific properties */ - public static NoiseGeneratorSettings makeCustomOverworldNoiseSettings(BootstapContext context) { + public static NoiseGeneratorSettings makeCustomOverworldNoiseSettings(BootstrapContext context) { // Get the OVERWORLD NoiseGeneratorSettings HolderGetter noiseGenSettings = context.lookup(Registries.NOISE_SETTINGS); NoiseGeneratorSettings overworldSettings = NoiseGeneratorSettings.overworld(context, false, false); diff --git a/src/main/java/igentuman/nc/world/biome/WastelandBiome.java b/src/main/java/igentuman/nc/world/biome/WastelandBiome.java index 166988dd1..fb0c636a1 100644 --- a/src/main/java/igentuman/nc/world/biome/WastelandBiome.java +++ b/src/main/java/igentuman/nc/world/biome/WastelandBiome.java @@ -2,7 +2,7 @@ import net.minecraft.core.HolderGetter; import net.minecraft.data.worldgen.BiomeDefaultFeatures; -import net.minecraft.data.worldgen.BootstapContext; +import net.minecraft.data.worldgen.BootstrapContext; import net.minecraft.data.worldgen.placement.VegetationPlacements; import net.minecraft.world.entity.EntityType; import net.minecraft.world.entity.MobCategory; @@ -17,7 +17,7 @@ public class WastelandBiome { - public static void bootstrap(BootstapContext context) { + public static void bootstrap(BootstrapContext context) { HolderGetter placedFeatures = context.lookup(net.minecraft.core.registries.Registries.PLACED_FEATURE); HolderGetter> worldCarvers = context.lookup(net.minecraft.core.registries.Registries.CONFIGURED_CARVER); context.register(WASTELAND_BIOME, createWastelandBiome(placedFeatures, worldCarvers)); diff --git a/src/main/java/igentuman/nc/world/dimension/ChunkGeneratorWrapper.java b/src/main/java/igentuman/nc/world/dimension/ChunkGeneratorWrapper.java index bc39e34cb..b2fe9c232 100644 --- a/src/main/java/igentuman/nc/world/dimension/ChunkGeneratorWrapper.java +++ b/src/main/java/igentuman/nc/world/dimension/ChunkGeneratorWrapper.java @@ -13,7 +13,6 @@ import net.minecraft.world.level.levelgen.blending.Blender; import java.util.concurrent.CompletableFuture; -import java.util.concurrent.Executor; public abstract class ChunkGeneratorWrapper extends ChunkGenerator { public final ChunkGenerator delegate; @@ -50,8 +49,8 @@ public int getGenDepth() { } @Override - public CompletableFuture fillFromNoise(Executor executor, Blender blender, RandomState random, StructureManager structureManager, ChunkAccess chunkAccess) { - return this.delegate.fillFromNoise(executor, blender, random, structureManager, chunkAccess); + public CompletableFuture fillFromNoise(Blender blender, RandomState random, StructureManager structureManager, ChunkAccess chunkAccess) { + return this.delegate.fillFromNoise(blender, random, structureManager, chunkAccess); } @Override diff --git a/src/main/java/igentuman/nc/world/dimension/Dimensions.java b/src/main/java/igentuman/nc/world/dimension/Dimensions.java index 929875ed7..742fe7986 100644 --- a/src/main/java/igentuman/nc/world/dimension/Dimensions.java +++ b/src/main/java/igentuman/nc/world/dimension/Dimensions.java @@ -3,7 +3,7 @@ import com.mojang.datafixers.util.Pair; import net.minecraft.core.HolderGetter; import net.minecraft.core.registries.Registries; -import net.minecraft.data.worldgen.BootstapContext; +import net.minecraft.data.worldgen.BootstrapContext; import net.minecraft.resources.ResourceKey; import net.minecraft.tags.BlockTags; import net.minecraft.util.valueproviders.ConstantInt; @@ -33,7 +33,7 @@ public class Dimensions { public static final ResourceKey WASTELAND_KEY = ResourceKey.create(Registries.LEVEL_STEM, rl("wasteland")); public static final ResourceKey WASTELAND_DIM_TYPE = ResourceKey.create(Registries.DIMENSION_TYPE, rl("wasteland_type")); - public static void bootstrapType(BootstapContext context) { + public static void bootstrapType(BootstrapContext context) { // Register Wasteland dimension type with dynamic time like the Overworld context.register(WASTELAND_DIM_TYPE, new DimensionType( OptionalLong.empty(), @@ -53,7 +53,7 @@ public static void bootstrapType(BootstapContext context) { new DimensionType.MonsterSettings(false, false, UniformInt.of(0, 7), 0))); } - public static void bootstrapStem(BootstapContext context) { + public static void bootstrapStem(BootstrapContext context) { HolderGetter biomeRegistry = context.lookup(Registries.BIOME); HolderGetter dimTypes = context.lookup(Registries.DIMENSION_TYPE); HolderGetter noiseGenSettings = context.lookup(Registries.NOISE_SETTINGS); diff --git a/src/main/java/igentuman/nc/world/dimension/ModTeleporter.java b/src/main/java/igentuman/nc/world/dimension/ModTeleporter.java index 5557812f9..d8ff6394f 100644 --- a/src/main/java/igentuman/nc/world/dimension/ModTeleporter.java +++ b/src/main/java/igentuman/nc/world/dimension/ModTeleporter.java @@ -1,66 +1,55 @@ package igentuman.nc.world.dimension; import net.minecraft.core.BlockPos; -import net.minecraft.core.Direction; import net.minecraft.server.level.ServerLevel; import net.minecraft.world.entity.Entity; -import net.minecraft.world.level.portal.PortalInfo; +import net.minecraft.world.level.portal.DimensionTransition; import net.minecraft.world.phys.Vec3; -import net.minecraftforge.common.util.ITeleporter; -import java.util.function.Function; +public class ModTeleporter { -public class ModTeleporter implements ITeleporter { - - public static BlockPos thisPos = BlockPos.ZERO; + private final BlockPos targetPos; public ModTeleporter(BlockPos pos) { - thisPos = pos; + this.targetPos = pos; } - - @Override - public PortalInfo getPortalInfo(Entity entity, ServerLevel destWorld, Function defaultPortalInfo) { - BlockPos surfacePos = findSurface(destWorld, new BlockPos(thisPos.getX(), 256, thisPos.getZ())); - - return new PortalInfo( - new Vec3(surfacePos.getX() + 0.5, surfacePos.getY(), surfacePos.getZ() + 0.5), - Vec3.ZERO, - entity.getYRot(), - entity.getXRot() + + /** + * Creates a DimensionTransition for the given entity to teleport to the destination level. + * Finds a suitable surface position and places the entity there. + */ + public DimensionTransition createTransition(Entity entity, ServerLevel destination) { + BlockPos surfacePos = findSurface(destination, new BlockPos(targetPos.getX(), 256, targetPos.getZ())); + + Vec3 pos = new Vec3(surfacePos.getX() + 0.5, surfacePos.getY(), surfacePos.getZ() + 0.5); + + return new DimensionTransition( + destination, + pos, + Vec3.ZERO, + entity.getYRot(), + entity.getXRot(), + DimensionTransition.DO_NOTHING ); } - @Override - public Entity placeEntity(Entity entity, ServerLevel currentWorld, ServerLevel destinationWorld, - float yaw, Function repositionEntity) { - int y = 256; - BlockPos destinationPos = new BlockPos(thisPos.getX(), y, thisPos.getZ()); - - BlockPos surfacePos = findSurface(destinationWorld, destinationPos); - - entity.setPos(surfacePos.getX() + 0.5, surfacePos.getY(), surfacePos.getZ() + 0.5); - - entity = repositionEntity.apply(true); - return entity; - } - /** * Finds a suitable surface position by moving down from the starting position * until a solid block is found. */ private BlockPos findSurface(ServerLevel world, BlockPos startPos) { BlockPos pos = startPos; - + while (pos.getY() > 0) { boolean currentIsAir = world.isEmptyBlock(pos); boolean belowIsSolid = !world.isEmptyBlock(pos.below()); - + if (currentIsAir && belowIsSolid) { return pos; } pos = pos.below(); } - + return new BlockPos(startPos.getX(), 70, startPos.getZ()); } -} \ No newline at end of file +} diff --git a/src/main/java/igentuman/nc/world/ore/DimensionBiomeFilter.java b/src/main/java/igentuman/nc/world/ore/DimensionBiomeFilter.java index cc5fea271..45c22e6e5 100644 --- a/src/main/java/igentuman/nc/world/ore/DimensionBiomeFilter.java +++ b/src/main/java/igentuman/nc/world/ore/DimensionBiomeFilter.java @@ -27,9 +27,13 @@ public DimensionBiomeFilter(Predicate> levelTest) { @Override protected boolean shouldPlace(PlacementContext context, RandomSource random, BlockPos pos) { if (levelTest.test(context.getLevel().getLevel().dimension())) { - PlacedFeature placedfeature = context.topFeature().orElseThrow(() -> new IllegalStateException("Tried to biome check an unregistered feature")); - Holder biome = context.getLevel().getBiome(pos); - return biome.value().getGenerationSettings().hasFeature(placedfeature); + try { + PlacedFeature placedfeature = context.topFeature().orElseThrow(() -> new IllegalStateException("Tried to biome check an unregistered feature")); + Holder biome = context.getLevel().getBiome(pos); + return biome.value().getGenerationSettings().hasFeature(placedfeature); + } catch (Exception e) { + return false; + } } else { return false; } diff --git a/src/main/java/igentuman/nc/world/ore/OreGenerator.java b/src/main/java/igentuman/nc/world/ore/OreGenerator.java index ae0e2f38d..a38d18aec 100644 --- a/src/main/java/igentuman/nc/world/ore/OreGenerator.java +++ b/src/main/java/igentuman/nc/world/ore/OreGenerator.java @@ -4,7 +4,7 @@ import igentuman.nc.content.materials.Ores; import net.minecraft.core.Holder; import net.minecraft.core.registries.Registries; -import net.minecraft.data.worldgen.BootstapContext; +import net.minecraft.data.worldgen.BootstrapContext; import net.minecraft.resources.ResourceKey; import net.minecraft.resources.ResourceLocation; import net.minecraft.tags.BlockTags; @@ -68,7 +68,7 @@ private static ResourceKey registerKey(String name) { return ResourceKey.create(Registries.PLACED_FEATURE, rl(name)); } - private static void register(BootstapContext context, ResourceKey key, Holder> configuration, + private static void register(BootstrapContext context, ResourceKey key, Holder> configuration, List modifiers) { context.register(key, new PlacedFeature(configuration, List.copyOf(modifiers))); } diff --git a/src/main/java/igentuman/nc/world/placement/HeightmapChunkPlacement.java b/src/main/java/igentuman/nc/world/placement/HeightmapChunkPlacement.java index 65664aaa7..5137218ce 100644 --- a/src/main/java/igentuman/nc/world/placement/HeightmapChunkPlacement.java +++ b/src/main/java/igentuman/nc/world/placement/HeightmapChunkPlacement.java @@ -1,6 +1,7 @@ package igentuman.nc.world.placement; import com.mojang.serialization.Codec; +import com.mojang.serialization.MapCodec; import com.mojang.serialization.codecs.RecordCodecBuilder; import java.util.ArrayList; @@ -22,7 +23,7 @@ import static net.minecraft.world.level.block.Blocks.WATER; public class HeightmapChunkPlacement extends PlacementModifier { - public static final Codec CODEC = RecordCodecBuilder.create((p_191701_) -> p_191701_.group(Types.CODEC.fieldOf("heightmap").forGetter((p_191705_) -> p_191705_.heightmap)).apply(p_191701_, HeightmapChunkPlacement::new)); + public static final MapCodec CODEC = RecordCodecBuilder.mapCodec((p_191701_) -> p_191701_.group(Types.CODEC.fieldOf("heightmap").forGetter((p_191705_) -> p_191705_.heightmap)).apply(p_191701_, HeightmapChunkPlacement::new)); private final Heightmap.Types heightmap; private HeightmapChunkPlacement(Heightmap.Types p_191699_) { diff --git a/src/main/java/igentuman/nc/world/placement/NCPlacementModifierTypes.java b/src/main/java/igentuman/nc/world/placement/NCPlacementModifierTypes.java index 4069abdbf..10664b691 100644 --- a/src/main/java/igentuman/nc/world/placement/NCPlacementModifierTypes.java +++ b/src/main/java/igentuman/nc/world/placement/NCPlacementModifierTypes.java @@ -1,15 +1,19 @@ package igentuman.nc.world.placement; +import com.mojang.serialization.MapCodec; +import net.minecraft.world.level.levelgen.placement.PlacementModifier; import net.minecraft.world.level.levelgen.placement.PlacementModifierType; -import net.minecraftforge.registries.RegistryObject; +import net.neoforged.neoforge.registries.DeferredHolder; import static igentuman.nc.setup.registration.Registries.PLACEMENT_MODIFIER; public class NCPlacementModifierTypes { - public static final RegistryObject> HEIGHTMAP_CHUNK = - PLACEMENT_MODIFIER.register("heightmap_chunk", () -> - () -> HeightmapChunkPlacement.CODEC - ); + public static final DeferredHolder, PlacementModifierType> HEIGHTMAP_CHUNK = + PLACEMENT_MODIFIER.register("heightmap_chunk", () -> codec(HeightmapChunkPlacement.CODEC)); + + private static

PlacementModifierType

codec(MapCodec

mapCodec) { + return () -> mapCodec; + } public static void init() { } diff --git a/src/main/java/igentuman/nc/world/structure/ScientistHouseStructure.java b/src/main/java/igentuman/nc/world/structure/ScientistHouseStructure.java index 52a7c9d84..a1d3d2723 100644 --- a/src/main/java/igentuman/nc/world/structure/ScientistHouseStructure.java +++ b/src/main/java/igentuman/nc/world/structure/ScientistHouseStructure.java @@ -8,9 +8,10 @@ import net.minecraft.resources.ResourceLocation; import net.minecraft.world.level.levelgen.structure.pools.SinglePoolElement; import net.minecraft.world.level.levelgen.structure.pools.StructureTemplatePool; -import net.minecraftforge.event.TagsUpdatedEvent; -import net.minecraftforge.eventbus.api.SubscribeEvent; -import net.minecraftforge.fml.common.Mod; +import net.neoforged.neoforge.event.TagsUpdatedEvent; +import net.neoforged.bus.api.SubscribeEvent; +import net.neoforged.fml.common.EventBusSubscriber; +import net.neoforged.fml.common.Mod; import java.util.ArrayList; import java.util.Objects; @@ -20,7 +21,7 @@ import static igentuman.nc.handler.config.WorldConfig.VILLAGE_CONFIG; import static igentuman.nc.util.NcUtils.rlFromString; -@Mod.EventBusSubscriber(modid = MODID, bus = Mod.EventBusSubscriber.Bus.FORGE) +@EventBusSubscriber(modid = MODID) public class ScientistHouseStructure { @SubscribeEvent diff --git a/src/main/java/igentuman/nc/world/structure/WastelandBossLairFeature.java b/src/main/java/igentuman/nc/world/structure/WastelandBossLairFeature.java index 943ff04a3..f06c0c2e4 100644 --- a/src/main/java/igentuman/nc/world/structure/WastelandBossLairFeature.java +++ b/src/main/java/igentuman/nc/world/structure/WastelandBossLairFeature.java @@ -12,7 +12,8 @@ import net.minecraft.world.level.levelgen.structure.templatesystem.StructurePlaceSettings; import net.minecraft.world.level.levelgen.structure.templatesystem.StructureTemplate; import net.minecraft.world.level.levelgen.structure.templatesystem.StructureTemplateManager; -import net.minecraftforge.registries.RegistryObject; +import igentuman.api.platform.NCRegistration; +import net.neoforged.neoforge.registries.DeferredHolder; import static igentuman.nc.NuclearCraft.debugLog; import static igentuman.nc.NuclearCraft.rl; @@ -20,10 +21,9 @@ import static igentuman.nc.setup.registration.WorldGeneration.WASTELAND; public class WastelandBossLairFeature extends Feature { - public static final RegistryObject> WASTELAND_BOSS_LAIR_FEATURE = FEATURE_REGISTER.register( - "wasteland_boss_lair", - () -> new WastelandBossLairFeature(NoneFeatureConfiguration.CODEC) - ); + public static final DeferredHolder, WastelandBossLairFeature> WASTELAND_BOSS_LAIR_FEATURE = + NCRegistration.registerFeature(FEATURE_REGISTER, "wasteland_boss_lair", + () -> new WastelandBossLairFeature(NoneFeatureConfiguration.CODEC)); public WastelandBossLairFeature(Codec codec) { super(codec); diff --git a/src/main/java/igentuman/nc/world/structure/WastelandPortalFeature.java b/src/main/java/igentuman/nc/world/structure/WastelandPortalFeature.java index 6cf5f074f..8ba840374 100644 --- a/src/main/java/igentuman/nc/world/structure/WastelandPortalFeature.java +++ b/src/main/java/igentuman/nc/world/structure/WastelandPortalFeature.java @@ -12,7 +12,8 @@ import net.minecraft.world.level.levelgen.structure.templatesystem.StructurePlaceSettings; import net.minecraft.world.level.levelgen.structure.templatesystem.StructureTemplate; import net.minecraft.world.level.levelgen.structure.templatesystem.StructureTemplateManager; -import net.minecraftforge.registries.RegistryObject; +import igentuman.api.platform.NCRegistration; +import net.neoforged.neoforge.registries.DeferredHolder; import java.util.ArrayList; import java.util.List; @@ -25,10 +26,9 @@ import static igentuman.nc.setup.registration.WorldGeneration.WASTELAND; public class WastelandPortalFeature extends Feature { - public static final RegistryObject> WASTELAND_PORTAL_FEATURE = FEATURE_REGISTER.register( - "wasteland_portal", - () -> new WastelandPortalFeature(NoneFeatureConfiguration.CODEC) - ); + public static final DeferredHolder, WastelandPortalFeature> WASTELAND_PORTAL_FEATURE = + NCRegistration.registerFeature(FEATURE_REGISTER, "wasteland_portal", + () -> new WastelandPortalFeature(NoneFeatureConfiguration.CODEC)); public WastelandPortalFeature(Codec codec) { super(codec); diff --git a/src/main/java/igentuman/nc/world/structure/WastelandStructureFeature.java b/src/main/java/igentuman/nc/world/structure/WastelandStructureFeature.java index 7a943927a..ad3821b6b 100644 --- a/src/main/java/igentuman/nc/world/structure/WastelandStructureFeature.java +++ b/src/main/java/igentuman/nc/world/structure/WastelandStructureFeature.java @@ -12,7 +12,8 @@ import net.minecraft.world.level.levelgen.structure.templatesystem.StructurePlaceSettings; import net.minecraft.world.level.levelgen.structure.templatesystem.StructureTemplate; import net.minecraft.world.level.levelgen.structure.templatesystem.StructureTemplateManager; -import net.minecraftforge.registries.RegistryObject; +import igentuman.api.platform.NCRegistration; +import net.neoforged.neoforge.registries.DeferredHolder; import java.util.ArrayList; import java.util.HashMap; @@ -26,10 +27,9 @@ public class WastelandStructureFeature extends Feature { public static final List structures = new ArrayList<>(); - public static final RegistryObject> WASTELAND_RUINS_FEATURE = FEATURE_REGISTER.register( - "wasteland_ruins", - () -> new WastelandStructureFeature(NoneFeatureConfiguration.CODEC) - ); + public static final DeferredHolder, WastelandStructureFeature> WASTELAND_RUINS_FEATURE = + NCRegistration.registerFeature(FEATURE_REGISTER, "wasteland_ruins", + () -> new WastelandStructureFeature(NoneFeatureConfiguration.CODEC)); public WastelandStructureFeature(Codec codec) { super(codec); diff --git a/src/main/resources/META-INF/accesstransformer.cfg b/src/main/resources/META-INF/accesstransformer.cfg index 720398ee7..04933b31c 100644 --- a/src/main/resources/META-INF/accesstransformer.cfg +++ b/src/main/resources/META-INF/accesstransformer.cfg @@ -1,88 +1,93 @@ -public net.minecraft.client.KeyMapping f_90817_ # isDown +public net.minecraft.client.KeyMapping isDown -public-f net.minecraft.client.gui.screens.Screen m_6575_(Lnet/minecraft/client/Minecraft;II)V # init -public net.minecraft.client.renderer.PostChain f_110009_ +public-f net.minecraft.client.gui.screens.Screen init(Lnet/minecraft/client/Minecraft;II)V +public net.minecraft.client.renderer.PostChain passes #Client stuff that needs to be ATd to make "virtual" slots possible -protected net.minecraft.client.gui.screens.inventory.AbstractContainerScreen f_97717_ # quickCraftingType -protected net.minecraft.client.gui.screens.inventory.AbstractContainerScreen f_97718_ # quickCraftingButton -protected net.minecraft.client.gui.screens.inventory.AbstractContainerScreen f_97707_ # snapbackEnd -protected net.minecraft.client.gui.screens.inventory.AbstractContainerScreen f_97714_ # snapbackTime -protected net.minecraft.client.gui.screens.inventory.AbstractContainerScreen f_97715_ # snapbackItem -protected net.minecraft.client.gui.screens.inventory.AbstractContainerScreen f_97722_ # lastClickButton -protected net.minecraft.client.gui.screens.inventory.AbstractContainerScreen f_97723_ # doubleclick -protected net.minecraft.client.gui.screens.inventory.AbstractContainerScreen f_97724_ # lastQuickMoved -protected net.minecraft.client.gui.screens.inventory.AbstractContainerScreen f_97719_ # skipNextRelease -protected net.minecraft.client.gui.screens.inventory.AbstractContainerScreen f_97721_ # lastClickTime -protected net.minecraft.client.gui.screens.inventory.AbstractContainerScreen f_97709_ # lastClickSlot -protected net.minecraft.client.gui.screens.inventory.AbstractContainerScreen f_97710_ # isSplittingStack -protected net.minecraft.client.gui.screens.inventory.AbstractContainerScreen f_97706_ # clickedSlot -protected net.minecraft.client.gui.screens.inventory.AbstractContainerScreen f_97713_ # snapbackStartY -protected net.minecraft.client.gui.screens.inventory.AbstractContainerScreen f_97712_ # snapbackStartX -protected net.minecraft.client.gui.screens.inventory.AbstractContainerScreen f_97711_ # draggingItem -protected net.minecraft.client.gui.screens.inventory.AbstractContainerScreen m_97818_()V # recalculateQuickCraftRemaining -protected net.minecraft.client.gui.screens.inventory.AbstractContainerScreen m_97782_(Lnet/minecraft/world/item/ItemStack;IILjava/lang/String;)V # renderFloatingItem -protected net.minecraft.client.gui.screens.inventory.AbstractContainerScreen m_97744_(DD)Lnet/minecraft/world/inventory/Slot; # findSlot -protected net.minecraft.client.gui.screens.inventory.AbstractContainerScreen m_97774_(Lnet/minecraft/world/inventory/Slot;DD)Z # isHovering -protected net.minecraft.client.gui.screens.inventory.AbstractContainerScreen m_97799_(Lcom/mojang/blaze3d/vertex/PoseStack;Lnet/minecraft/world/inventory/Slot;)V # renderSlot -protected net.minecraft.client.gui.screens.inventory.AbstractContainerScreen m_97762_(I)V # checkHotbarMouseClicked - -public net.minecraft.client.model.AgeableListModel f_102007_ # scaleHead -public net.minecraft.client.model.AgeableListModel f_102010_ # babyHeadScale -public net.minecraft.client.model.AgeableListModel f_102011_ # babyBodyScale -public net.minecraft.client.model.AgeableListModel f_102012_ # bodyYOffset -public net.minecraft.client.model.AgeableListModel f_170338_ # babyYHeadOffset -public net.minecraft.client.model.AgeableListModel f_170339_ # babyZHeadOffset - -public net.minecraft.client.model.ArmorStandModel f_102139_ # shoulderStick -public net.minecraft.client.model.ArmorStandModel f_170353_ # rightBodyStick -public net.minecraft.client.model.ArmorStandModel f_170354_ # leftBodyStick - -public net.minecraft.client.model.PlayerModel f_103373_ # cloak -public net.minecraft.client.model.PlayerModel f_103379_ # ear - -public net.minecraft.client.model.geom.ModelPart$Cube f_104341_ # polygons +protected net.minecraft.client.gui.screens.inventory.AbstractContainerScreen quickCraftingType +protected net.minecraft.client.gui.screens.inventory.AbstractContainerScreen quickCraftingButton +protected net.minecraft.client.gui.screens.inventory.AbstractContainerScreen snapbackEnd +protected net.minecraft.client.gui.screens.inventory.AbstractContainerScreen snapbackTime +protected net.minecraft.client.gui.screens.inventory.AbstractContainerScreen snapbackItem +protected net.minecraft.client.gui.screens.inventory.AbstractContainerScreen lastClickButton +protected net.minecraft.client.gui.screens.inventory.AbstractContainerScreen doubleclick +protected net.minecraft.client.gui.screens.inventory.AbstractContainerScreen lastQuickMoved +protected net.minecraft.client.gui.screens.inventory.AbstractContainerScreen skipNextRelease +protected net.minecraft.client.gui.screens.inventory.AbstractContainerScreen lastClickTime +protected net.minecraft.client.gui.screens.inventory.AbstractContainerScreen lastClickSlot +protected net.minecraft.client.gui.screens.inventory.AbstractContainerScreen isSplittingStack +protected net.minecraft.client.gui.screens.inventory.AbstractContainerScreen clickedSlot +protected net.minecraft.client.gui.screens.inventory.AbstractContainerScreen snapbackStartY +protected net.minecraft.client.gui.screens.inventory.AbstractContainerScreen snapbackStartX +protected net.minecraft.client.gui.screens.inventory.AbstractContainerScreen draggingItem +protected net.minecraft.client.gui.screens.inventory.AbstractContainerScreen recalculateQuickCraftRemaining()V +protected net.minecraft.client.gui.screens.inventory.AbstractContainerScreen renderFloatingItem(Lnet/minecraft/client/gui/GuiGraphics;Lnet/minecraft/world/item/ItemStack;IILjava/lang/String;)V +protected net.minecraft.client.gui.screens.inventory.AbstractContainerScreen findSlot(DD)Lnet/minecraft/world/inventory/Slot; +protected net.minecraft.client.gui.screens.inventory.AbstractContainerScreen isHovering(Lnet/minecraft/world/inventory/Slot;DD)Z +protected net.minecraft.client.gui.screens.inventory.AbstractContainerScreen renderSlot(Lnet/minecraft/client/gui/GuiGraphics;Lnet/minecraft/world/inventory/Slot;)V +protected net.minecraft.client.gui.screens.inventory.AbstractContainerScreen checkHotbarMouseClicked(I)V + +public net.minecraft.client.model.AgeableListModel scaleHead +public net.minecraft.client.model.AgeableListModel babyHeadScale +public net.minecraft.client.model.AgeableListModel babyBodyScale +public net.minecraft.client.model.AgeableListModel bodyYOffset +public net.minecraft.client.model.AgeableListModel babyYHeadOffset +public net.minecraft.client.model.AgeableListModel babyZHeadOffset + +public net.minecraft.client.model.ArmorStandModel shoulderStick +public net.minecraft.client.model.ArmorStandModel rightBodyStick +public net.minecraft.client.model.ArmorStandModel leftBodyStick + +public net.minecraft.client.model.PlayerModel cloak +public net.minecraft.client.model.PlayerModel ear + +public net.minecraft.client.model.geom.ModelPart$Cube polygons public net.minecraft.client.model.geom.ModelPart$Vertex public net.minecraft.client.model.geom.ModelPart$Polygon -protected net.minecraft.client.particle.BubbleParticle (Lnet/minecraft/client/multiplayer/ClientLevel;DDDDDD)V #BubbleParticle constructor -protected net.minecraft.client.particle.FlameParticle (Lnet/minecraft/client/multiplayer/ClientLevel;DDDDDD)V #FlameParticle constructor -public net.minecraft.client.multiplayer.ClientLevel f_104562_ # levelRenderer -public net.minecraft.client.multiplayer.ClientLevel f_104561_ # connection -public net.minecraft.client.renderer.LevelRenderer f_109477_ # ticks -public net.minecraft.client.renderer.chunk.RenderChunkRegion f_112908_ # level - -public net.minecraft.client.renderer.entity.LivingEntityRenderer f_115291_ # layers -public net.minecraft.client.renderer.entity.layers.HumanoidArmorLayer f_117071_ # innerModel -public net.minecraft.client.renderer.entity.layers.HumanoidArmorLayer f_117072_ # outerModel - -public net.minecraft.client.renderer.LevelRenderer m_109637_(Lcom/mojang/blaze3d/vertex/PoseStack;Lcom/mojang/blaze3d/vertex/VertexConsumer;Lnet/minecraft/world/entity/Entity;DDDLnet/minecraft/core/BlockPos;Lnet/minecraft/world/level/block/state/BlockState;)V # renderHitOutline - -public net.minecraft.client.sounds.SoundManager f_120349_ # soundEngine -public net.minecraft.client.sounds.SoundEngine f_120231_ # listeners -public net.minecraft.client.sounds.SoundEngine f_120226_ # instanceToChannel - -public net.minecraft.server.network.ServerGamePacketListenerImpl f_9737_ # aboveGroundTickCount - -public net.minecraft.world.effect.MobEffectInstance f_19510_ # hiddenEffect -public net.minecraft.world.effect.MobEffectInstance m_19548_(Lnet/minecraft/world/effect/MobEffectInstance;)V # setDetailsFrom -public net.minecraft.world.effect.MobEffectInstance m_19579_()I # tickDownDuration - -public net.minecraft.world.entity.decoration.ArmorStand m_31678_(Z)V # setNoBasePlate -public net.minecraft.world.entity.Entity m_20285_()Z # isInRain -public net.minecraft.world.entity.LivingEntity f_20948_ # effectsDirty -public net.minecraft.world.entity.item.ItemEntity f_31985_ # age - -public net.minecraft.world.inventory.AbstractContainerMenu m_150445_()V # synchronizeCarriedToRemote - -protected net.minecraft.world.item.ArmorItem f_40380_ # ARMOR_MODIFIER_UUID_PER_SLOT - -public net.minecraft.world.level.Explosion f_46010_ # blockInteraction -public net.minecraft.world.level.Explosion f_46017_ # radius -public net.minecraft.world.level.biome.Biome m_47505_(Lnet/minecraft/core/BlockPos;)F # getTemperature -protected net.minecraft.world.level.block.entity.BlockEntity f_58856_ # blockState -public net.minecraft.world.level.block.state.BlockBehaviour$BlockStateBase f_60599_ # destroySpeed -public net.minecraft.world.level.block.state.BlockBehaviour$Properties f_60886_ # lightEmission -public net.minecraft.world.level.chunk.ChunkGenerator f_223020_ #featuresPerStep -public net.minecraft.world.level.levelgen.placement.PlacedFeature m_226368_(Lnet/minecraft/world/level/levelgen/placement/PlacementContext;Lnet/minecraft/util/RandomSource;Lnet/minecraft/core/BlockPos;)Z # placeWithContext - -public net.minecraft.world.phys.AABB m_82325_(Lnet/minecraft/world/phys/AABB;Lnet/minecraft/world/phys/Vec3;[DLnet/minecraft/core/Direction;DDD)Lnet/minecraft/core/Direction; # getDirection \ No newline at end of file +protected net.minecraft.client.particle.BubbleParticle (Lnet/minecraft/client/multiplayer/ClientLevel;DDDDDD)V +protected net.minecraft.client.particle.FlameParticle (Lnet/minecraft/client/multiplayer/ClientLevel;DDDDDD)V +public net.minecraft.client.multiplayer.ClientLevel levelRenderer +public net.minecraft.client.multiplayer.ClientLevel connection +public net.minecraft.client.renderer.LevelRenderer ticks +public net.minecraft.client.renderer.chunk.RenderChunkRegion level + +public net.minecraft.client.renderer.entity.LivingEntityRenderer layers +# NOTE: In 1.21, HumanoidArmorLayer was refactored to use EquipmentLayerRenderer. +# The innerModel/outerModel fields no longer exist. Comment out if not needed. +# If your mod still targets these, verify they exist in your NeoForge version. +public net.minecraft.client.renderer.entity.layers.HumanoidArmorLayer innerModel +public net.minecraft.client.renderer.entity.layers.HumanoidArmorLayer outerModel + +public net.minecraft.client.renderer.LevelRenderer renderHitOutline(Lnet/minecraft/client/gui/GuiGraphics;Lcom/mojang/blaze3d/vertex/VertexConsumer;Lnet/minecraft/world/entity/Entity;DDDLnet/minecraft/core/BlockPos;Lnet/minecraft/world/level/block/state/BlockState;)V + +public net.minecraft.client.sounds.SoundManager soundEngine +public net.minecraft.client.sounds.SoundEngine listeners +public net.minecraft.client.sounds.SoundEngine instanceToChannel + +public net.minecraft.server.network.ServerGamePacketListenerImpl aboveGroundTickCount + +public net.minecraft.world.effect.MobEffectInstance hiddenEffect +public net.minecraft.world.effect.MobEffectInstance setDetailsFrom(Lnet/minecraft/world/effect/MobEffectInstance;)V +public net.minecraft.world.effect.MobEffectInstance tickDownDuration()I + +public net.minecraft.world.entity.decoration.ArmorStand setNoBasePlate(Z)V +public net.minecraft.world.entity.Entity isInRain()Z +public net.minecraft.world.entity.LivingEntity effectsDirty +public net.minecraft.world.entity.item.ItemEntity age + +public net.minecraft.world.inventory.AbstractContainerMenu synchronizeCarriedToRemote()V + +# NOTE: ArmorItem.ARMOR_MODIFIER_UUID_PER_SLOT was removed in 1.21. +# Armor now uses data components and ResourceLocation-keyed AttributeModifiers. +# protected net.minecraft.world.item.ArmorItem ARMOR_MODIFIER_UUID_PER_SLOT + +public net.minecraft.world.level.Explosion blockInteraction +public net.minecraft.world.level.Explosion radius +public net.minecraft.world.level.biome.Biome getTemperature(Lnet/minecraft/core/BlockPos;)F +protected net.minecraft.world.level.block.entity.BlockEntity blockState +public net.minecraft.world.level.block.state.BlockBehaviour$BlockStateBase destroySpeed +public net.minecraft.world.level.block.state.BlockBehaviour$Properties lightEmission +public net.minecraft.world.level.chunk.ChunkGenerator featuresPerStep +public net.minecraft.world.level.levelgen.placement.PlacedFeature placeWithContext(Lnet/minecraft/world/level/levelgen/placement/PlacementContext;Lnet/minecraft/util/RandomSource;Lnet/minecraft/core/BlockPos;)Z + +public net.minecraft.world.phys.AABB getDirection(Lnet/minecraft/world/phys/AABB;Lnet/minecraft/world/phys/Vec3;[DLnet/minecraft/core/Direction;DDD)Lnet/minecraft/core/Direction; diff --git a/src/main/resources/META-INF/mods.toml b/src/main/resources/META-INF/mods.toml deleted file mode 100644 index c03898e58..000000000 --- a/src/main/resources/META-INF/mods.toml +++ /dev/null @@ -1,32 +0,0 @@ -modLoader="javafml" -loaderVersion="[43.3.10,)" -license="MIT" -issueTrackerURL="https://github.com/igentuman/NuclearCraft-Neoteric/issues" -[[mods]] -modId="nuclearcraft" -version="${version}" -displayName="Nuclearcraft Neoteric" -logoFile="logo.png" -credits="tomdodd4598, Lach01298" -authors="igentuman" -description=''' -A complex nuclear engineering mod for Minecraft -''' - -[[dependencies.nuclearcraft]] -modId="forge" -mandatory=true -versionRange="[43.3.10,)" -ordering="NONE" -side="BOTH" -[[dependencies.nuclearcraft]] -modId="minecraft" -mandatory=true -versionRange="[1.20.1,)" -ordering="NONE" -side="BOTH" -[[mixins]] -config = "nuclearcraft.mixins.json" - -[modproperties.nuclearcraft] -MixinConnector = "igentuman.nc.mixin.NuclearCraftMixinConnector" \ No newline at end of file diff --git a/src/main/resources/META-INF/neoforge.mods.toml b/src/main/resources/META-INF/neoforge.mods.toml new file mode 100644 index 000000000..7e4c3ccdb --- /dev/null +++ b/src/main/resources/META-INF/neoforge.mods.toml @@ -0,0 +1,32 @@ +modLoader = "javafml" +loaderVersion = "${loader_version_range}" +license = "MIT" +issueTrackerURL = "https://github.com/igentuman/NuclearCraft-Neoteric/issues" + +[[mods]] +modId = "${mod_id}" +version = "${mod_version}" +displayName = "Nuclearcraft Neoteric" +logoFile = "logo.png" +credits = "tomdodd4598, Lach01298" +authors = "igentuman" +description = ''' +A complex nuclear engineering mod for Minecraft +''' + +[[dependencies.${mod_id}]] +modId = "neoforge" +type = "required" +versionRange = "${neo_version_range}" +ordering = "NONE" +side = "BOTH" + +[[dependencies.${mod_id}]] +modId = "minecraft" +type = "required" +versionRange = "${mc_version_range}" +ordering = "NONE" +side = "BOTH" + +[[mixins]] +config = "nuclearcraft.mixins.json" diff --git a/src/main/resources/assets/emi/lang/en_us.json b/src/main/resources/assets/emi/lang/en_us.json index b3e0e0dcf..080c831a1 100644 --- a/src/main/resources/assets/emi/lang/en_us.json +++ b/src/main/resources/assets/emi/lang/en_us.json @@ -393,6 +393,36 @@ "tag.fluid.c.nitric_acid": "Nitric Acid", "tag.fluid.c.nuclear_waste": "Nuclear Waste", "tag.fluid.c.obsidian": "Obsidian", + "tag.fluid.c.ores.boron": "Boron (Ores)", + "tag.fluid.c.ores.boron_deepslate": "Boron Deepslate (Ores)", + "tag.fluid.c.ores.cobalt": "Cobalt (Ores)", + "tag.fluid.c.ores.cobalt_deepslate": "Cobalt Deepslate (Ores)", + "tag.fluid.c.ores.lithium": "Lithium (Ores)", + "tag.fluid.c.ores.lithium_deepslate": "Lithium Deepslate (Ores)", + "tag.fluid.c.ores.magnesium": "Magnesium (Ores)", + "tag.fluid.c.ores.magnesium_deepslate": "Magnesium Deepslate (Ores)", + "tag.fluid.c.ores.platinum_deepslate": "Platinum Deepslate (Ores)", + "tag.fluid.c.ores.silver": "Silver (Ores)", + "tag.fluid.c.ores.silver_deepslate": "Silver Deepslate (Ores)", + "tag.fluid.c.ores.thorium": "Thorium (Ores)", + "tag.fluid.c.ores.thorium_deepslate": "Thorium Deepslate (Ores)", + "tag.fluid.c.ores.uranium_deepslate": "Uranium Deepslate (Ores)", + "tag.fluid.c.ores.zinc": "Zinc (Ores)", + "tag.fluid.c.ores/boron": "Boron (Ores)", + "tag.fluid.c.ores/boron_deepslate": "Boron Deepslate (Ores)", + "tag.fluid.c.ores/cobalt": "Cobalt (Ores)", + "tag.fluid.c.ores/cobalt_deepslate": "Cobalt Deepslate (Ores)", + "tag.fluid.c.ores/lithium": "Lithium (Ores)", + "tag.fluid.c.ores/lithium_deepslate": "Lithium Deepslate (Ores)", + "tag.fluid.c.ores/magnesium": "Magnesium (Ores)", + "tag.fluid.c.ores/magnesium_deepslate": "Magnesium Deepslate (Ores)", + "tag.fluid.c.ores/platinum_deepslate": "Platinum Deepslate (Ores)", + "tag.fluid.c.ores/silver": "Silver (Ores)", + "tag.fluid.c.ores/silver_deepslate": "Silver Deepslate (Ores)", + "tag.fluid.c.ores/thorium": "Thorium (Ores)", + "tag.fluid.c.ores/thorium_deepslate": "Thorium Deepslate (Ores)", + "tag.fluid.c.ores/uranium_deepslate": "Uranium Deepslate (Ores)", + "tag.fluid.c.ores/zinc": "Zinc (Ores)", "tag.fluid.c.palladium": "Palladium", "tag.fluid.c.pasteurized_milk": "Pasteurized Milk", "tag.fluid.c.platinum": "Platinum", @@ -441,6 +471,42 @@ "tag.fluid.c.sodium_hydroxide_solution": "Sodium Hydroxide Solution", "tag.fluid.c.spent_nuclear_waste": "Spent Nuclear Waste", "tag.fluid.c.steel": "Steel", + "tag.fluid.c.storage_blocks.aluminum": "Aluminum (Storage Blocks)", + "tag.fluid.c.storage_blocks.americium241": "Americium241 (Storage Blocks)", + "tag.fluid.c.storage_blocks.beryllium": "Beryllium (Storage Blocks)", + "tag.fluid.c.storage_blocks.boron": "Boron (Storage Blocks)", + "tag.fluid.c.storage_blocks.californium250": "Californium250 (Storage Blocks)", + "tag.fluid.c.storage_blocks.cobalt": "Cobalt (Storage Blocks)", + "tag.fluid.c.storage_blocks.electrum": "Electrum (Storage Blocks)", + "tag.fluid.c.storage_blocks.graphite": "Graphite (Storage Blocks)", + "tag.fluid.c.storage_blocks.lithium": "Lithium (Storage Blocks)", + "tag.fluid.c.storage_blocks.magnesium": "Magnesium (Storage Blocks)", + "tag.fluid.c.storage_blocks.platinum": "Platinum (Storage Blocks)", + "tag.fluid.c.storage_blocks.plutonium238": "Plutonium238 (Storage Blocks)", + "tag.fluid.c.storage_blocks.silver": "Silver (Storage Blocks)", + "tag.fluid.c.storage_blocks.supercold_ice": "Supercold Ice (Storage Blocks)", + "tag.fluid.c.storage_blocks.thorium": "Thorium (Storage Blocks)", + "tag.fluid.c.storage_blocks.uranium238": "Uranium238 (Storage Blocks)", + "tag.fluid.c.storage_blocks.zinc": "Zinc (Storage Blocks)", + "tag.fluid.c.storage_blocks.zirconium": "Zirconium (Storage Blocks)", + "tag.fluid.c.storage_blocks/aluminum": "Aluminum (Storage Blocks)", + "tag.fluid.c.storage_blocks/americium241": "Americium241 (Storage Blocks)", + "tag.fluid.c.storage_blocks/beryllium": "Beryllium (Storage Blocks)", + "tag.fluid.c.storage_blocks/boron": "Boron (Storage Blocks)", + "tag.fluid.c.storage_blocks/californium250": "Californium250 (Storage Blocks)", + "tag.fluid.c.storage_blocks/cobalt": "Cobalt (Storage Blocks)", + "tag.fluid.c.storage_blocks/electrum": "Electrum (Storage Blocks)", + "tag.fluid.c.storage_blocks/graphite": "Graphite (Storage Blocks)", + "tag.fluid.c.storage_blocks/lithium": "Lithium (Storage Blocks)", + "tag.fluid.c.storage_blocks/magnesium": "Magnesium (Storage Blocks)", + "tag.fluid.c.storage_blocks/platinum": "Platinum (Storage Blocks)", + "tag.fluid.c.storage_blocks/plutonium238": "Plutonium238 (Storage Blocks)", + "tag.fluid.c.storage_blocks/silver": "Silver (Storage Blocks)", + "tag.fluid.c.storage_blocks/supercold_ice": "Supercold Ice (Storage Blocks)", + "tag.fluid.c.storage_blocks/thorium": "Thorium (Storage Blocks)", + "tag.fluid.c.storage_blocks/uranium238": "Uranium238 (Storage Blocks)", + "tag.fluid.c.storage_blocks/zinc": "Zinc (Storage Blocks)", + "tag.fluid.c.storage_blocks/zirconium": "Zirconium (Storage Blocks)", "tag.fluid.c.strontium_90": "Strontium 90", "tag.fluid.c.subliquid_matter": "Subliquid Matter", "tag.fluid.c.sugar": "Sugar", @@ -492,6 +558,1384 @@ "tag.fluid.c.zircaloy": "Zircaloy", "tag.fluid.c.zirconium": "Zirconium", "tag.fluid.c.zirconium_molybdenum": "Zirconium Molybdenum", + "tag.fluid.create.no_infinite_draining": "No Infinite Draining", + "tag.fluid.neoforge.aluminium": "Aluminium", + "tag.fluid.neoforge.aluminum": "Aluminum", + "tag.fluid.neoforge.aluminum_clean_slurry": "Aluminum Clean Slurry", + "tag.fluid.neoforge.aluminum_slurry": "Aluminum Slurry", + "tag.fluid.neoforge.americium.241": "Americium 241", + "tag.fluid.neoforge.americium.241_ni": "Americium 241 Nitride", + "tag.fluid.neoforge.americium.241_ox": "Americium 241 Oxide", + "tag.fluid.neoforge.americium.241_za": "Americium 241 ZA", + "tag.fluid.neoforge.americium.242": "Americium 242", + "tag.fluid.neoforge.americium.242_ni": "Americium 242 Nitride", + "tag.fluid.neoforge.americium.242_ox": "Americium 242 Oxide", + "tag.fluid.neoforge.americium.242_za": "Americium 242 ZA", + "tag.fluid.neoforge.americium.243": "Americium 243", + "tag.fluid.neoforge.americium.243_ni": "Americium 243 Nitride", + "tag.fluid.neoforge.americium.243_ox": "Americium 243 Oxide", + "tag.fluid.neoforge.americium.243_za": "Americium 243 ZA", + "tag.fluid.neoforge.americium/241": "Americium 241", + "tag.fluid.neoforge.americium/241_ni": "Americium 241 Nitride", + "tag.fluid.neoforge.americium/241_ox": "Americium 241 Oxide", + "tag.fluid.neoforge.americium/241_za": "Americium 241 ZA", + "tag.fluid.neoforge.americium/242": "Americium 242", + "tag.fluid.neoforge.americium/242_ni": "Americium 242 Nitride", + "tag.fluid.neoforge.americium/242_ox": "Americium 242 Oxide", + "tag.fluid.neoforge.americium/242_za": "Americium 242 ZA", + "tag.fluid.neoforge.americium/243": "Americium 243", + "tag.fluid.neoforge.americium/243_ni": "Americium 243 Nitride", + "tag.fluid.neoforge.americium/243_ox": "Americium 243 Oxide", + "tag.fluid.neoforge.americium/243_za": "Americium 243 ZA", + "tag.fluid.neoforge.ammonia": "Ammonia", + "tag.fluid.neoforge.aqua_regia_acid": "Aqua Regia Acid", + "tag.fluid.neoforge.argon": "Argon", + "tag.fluid.neoforge.arsenic": "Arsenic", + "tag.fluid.neoforge.berkelium.247": "Berkelium 247", + "tag.fluid.neoforge.berkelium.247_ni": "Berkelium 247 Nitride", + "tag.fluid.neoforge.berkelium.247_ox": "Berkelium 247 Oxide", + "tag.fluid.neoforge.berkelium.247_za": "Berkelium 247 ZA", + "tag.fluid.neoforge.berkelium.248": "Berkelium 248", + "tag.fluid.neoforge.berkelium.248_ni": "Berkelium 248 Nitride", + "tag.fluid.neoforge.berkelium.248_ox": "Berkelium 248 Oxide", + "tag.fluid.neoforge.berkelium.248_za": "Berkelium 248 ZA", + "tag.fluid.neoforge.berkelium/247": "Berkelium 247", + "tag.fluid.neoforge.berkelium/247_ni": "Berkelium 247 Nitride", + "tag.fluid.neoforge.berkelium/247_ox": "Berkelium 247 Oxide", + "tag.fluid.neoforge.berkelium/247_za": "Berkelium 247 ZA", + "tag.fluid.neoforge.berkelium/248": "Berkelium 248", + "tag.fluid.neoforge.berkelium/248_ni": "Berkelium 248 Nitride", + "tag.fluid.neoforge.berkelium/248_ox": "Berkelium 248 Oxide", + "tag.fluid.neoforge.berkelium/248_za": "Berkelium 248 ZA", + "tag.fluid.neoforge.beryllium": "Beryllium", + "tag.fluid.neoforge.beryllium_7": "Beryllium 7", + "tag.fluid.neoforge.beryllium_fluoride": "Beryllium Fluoride", + "tag.fluid.neoforge.borax_solution": "Borax Solution", + "tag.fluid.neoforge.boric_acid": "Boric Acid", + "tag.fluid.neoforge.boron": "Boron", + "tag.fluid.neoforge.boron.10": "Boron 10", + "tag.fluid.neoforge.boron.10_ni": "Boron 10 Nitride", + "tag.fluid.neoforge.boron.10_ox": "Boron 10 Oxide", + "tag.fluid.neoforge.boron.10_za": "Boron 10 ZA", + "tag.fluid.neoforge.boron.11": "Boron 11", + "tag.fluid.neoforge.boron.11_ni": "Boron 11 Nitride", + "tag.fluid.neoforge.boron.11_ox": "Boron 11 Oxide", + "tag.fluid.neoforge.boron.11_za": "Boron 11 ZA", + "tag.fluid.neoforge.boron/10": "Boron 10", + "tag.fluid.neoforge.boron/10_ni": "Boron 10 Nitride", + "tag.fluid.neoforge.boron/10_ox": "Boron 10 Oxide", + "tag.fluid.neoforge.boron/10_za": "Boron 10 ZA", + "tag.fluid.neoforge.boron/11": "Boron 11", + "tag.fluid.neoforge.boron/11_ni": "Boron 11 Nitride", + "tag.fluid.neoforge.boron/11_ox": "Boron 11 Oxide", + "tag.fluid.neoforge.boron/11_za": "Boron 11 ZA", + "tag.fluid.neoforge.boron_arsenide": "Boron Arsenide", + "tag.fluid.neoforge.boron_arsenide_solution": "Boron Arsenide Solution", + "tag.fluid.neoforge.boron_clean_slurry": "Boron Clean Slurry", + "tag.fluid.neoforge.boron_nitride_solution": "Boron Nitride Solution", + "tag.fluid.neoforge.boron_slurry": "Boron Slurry", + "tag.fluid.neoforge.bronze": "Bronze", + "tag.fluid.neoforge.caesium_137": "Caesium 137", + "tag.fluid.neoforge.calcium_48": "Calcium 48", + "tag.fluid.neoforge.calcium_sulfate_solution": "Calcium Sulfate Solution", + "tag.fluid.neoforge.californium.249": "Californium 249", + "tag.fluid.neoforge.californium.249_ni": "Californium 249 Nitride", + "tag.fluid.neoforge.californium.249_ox": "Californium 249 Oxide", + "tag.fluid.neoforge.californium.249_za": "Californium 249 ZA", + "tag.fluid.neoforge.californium.250": "Californium 250", + "tag.fluid.neoforge.californium.250_ni": "Californium 250 Nitride", + "tag.fluid.neoforge.californium.250_ox": "Californium 250 Oxide", + "tag.fluid.neoforge.californium.250_za": "Californium 250 ZA", + "tag.fluid.neoforge.californium.251": "Californium 251", + "tag.fluid.neoforge.californium.251_ni": "Californium 251 Nitride", + "tag.fluid.neoforge.californium.251_ox": "Californium 251 Oxide", + "tag.fluid.neoforge.californium.251_za": "Californium 251 ZA", + "tag.fluid.neoforge.californium.252": "Californium 252", + "tag.fluid.neoforge.californium.252_ni": "Californium 252 Nitride", + "tag.fluid.neoforge.californium.252_ox": "Californium 252 Oxide", + "tag.fluid.neoforge.californium.252_za": "Californium 252 ZA", + "tag.fluid.neoforge.californium/249": "Californium 249", + "tag.fluid.neoforge.californium/249_ni": "Californium 249 Nitride", + "tag.fluid.neoforge.californium/249_ox": "Californium 249 Oxide", + "tag.fluid.neoforge.californium/249_za": "Californium 249 ZA", + "tag.fluid.neoforge.californium/250": "Californium 250", + "tag.fluid.neoforge.californium/250_ni": "Californium 250 Nitride", + "tag.fluid.neoforge.californium/250_ox": "Californium 250 Oxide", + "tag.fluid.neoforge.californium/250_za": "Californium 250 ZA", + "tag.fluid.neoforge.californium/251": "Californium 251", + "tag.fluid.neoforge.californium/251_ni": "Californium 251 Nitride", + "tag.fluid.neoforge.californium/251_ox": "Californium 251 Oxide", + "tag.fluid.neoforge.californium/251_za": "Californium 251 ZA", + "tag.fluid.neoforge.californium/252": "Californium 252", + "tag.fluid.neoforge.californium/252_ni": "Californium 252 Nitride", + "tag.fluid.neoforge.californium/252_ox": "Californium 252 Oxide", + "tag.fluid.neoforge.californium/252_za": "Californium 252 ZA", + "tag.fluid.neoforge.carbon": "Carbon", + "tag.fluid.neoforge.carbon_dioxide": "Carbon Dioxide", + "tag.fluid.neoforge.carbon_manganese": "Carbon Manganese", + "tag.fluid.neoforge.carbon_monoxide": "Carbon Monoxide", + "tag.fluid.neoforge.chlorine": "Chlorine", + "tag.fluid.neoforge.chocolate_liquor": "Chocolate Liquor", + "tag.fluid.neoforge.cobalt": "Cobalt", + "tag.fluid.neoforge.cobalt_60": "Cobalt 60", + "tag.fluid.neoforge.cobalt_clean_slurry": "Cobalt Clean Slurry", + "tag.fluid.neoforge.cobalt_slurry": "Cobalt Slurry", + "tag.fluid.neoforge.cocoa_butter": "Cocoa Butter", + "tag.fluid.neoforge.condensate_water": "Condensate Water", + "tag.fluid.neoforge.copernicium.291": "Copernicium 291", + "tag.fluid.neoforge.copernicium.291_ni": "Copernicium 291 Nitride", + "tag.fluid.neoforge.copernicium.291_ox": "Copernicium 291 Oxide", + "tag.fluid.neoforge.copernicium.291_za": "Copernicium 291 ZA", + "tag.fluid.neoforge.copernicium/291": "Copernicium 291", + "tag.fluid.neoforge.copernicium/291_ni": "Copernicium 291 Nitride", + "tag.fluid.neoforge.copernicium/291_ox": "Copernicium 291 Oxide", + "tag.fluid.neoforge.copernicium/291_za": "Copernicium 291 ZA", + "tag.fluid.neoforge.copper": "Copper", + "tag.fluid.neoforge.copper_clean_slurry": "Copper Clean Slurry", + "tag.fluid.neoforge.copper_slurry": "Copper Slurry", + "tag.fluid.neoforge.corium": "Corium", + "tag.fluid.neoforge.cryotheum": "Cryotheum", + "tag.fluid.neoforge.curium.243": "Curium 243", + "tag.fluid.neoforge.curium.243_ni": "Curium 243 Nitride", + "tag.fluid.neoforge.curium.243_ox": "Curium 243 Oxide", + "tag.fluid.neoforge.curium.243_za": "Curium 243 ZA", + "tag.fluid.neoforge.curium.245": "Curium 245", + "tag.fluid.neoforge.curium.245_ni": "Curium 245 Nitride", + "tag.fluid.neoforge.curium.245_ox": "Curium 245 Oxide", + "tag.fluid.neoforge.curium.245_za": "Curium 245 ZA", + "tag.fluid.neoforge.curium.246": "Curium 246", + "tag.fluid.neoforge.curium.246_ni": "Curium 246 Nitride", + "tag.fluid.neoforge.curium.246_ox": "Curium 246 Oxide", + "tag.fluid.neoforge.curium.246_za": "Curium 246 ZA", + "tag.fluid.neoforge.curium.247": "Curium 247", + "tag.fluid.neoforge.curium.247_ni": "Curium 247 Nitride", + "tag.fluid.neoforge.curium.247_ox": "Curium 247 Oxide", + "tag.fluid.neoforge.curium.247_za": "Curium 247 ZA", + "tag.fluid.neoforge.curium/243": "Curium 243", + "tag.fluid.neoforge.curium/243_ni": "Curium 243 Nitride", + "tag.fluid.neoforge.curium/243_ox": "Curium 243 Oxide", + "tag.fluid.neoforge.curium/243_za": "Curium 243 ZA", + "tag.fluid.neoforge.curium/245": "Curium 245", + "tag.fluid.neoforge.curium/245_ni": "Curium 245 Nitride", + "tag.fluid.neoforge.curium/245_ox": "Curium 245 Oxide", + "tag.fluid.neoforge.curium/245_za": "Curium 245 ZA", + "tag.fluid.neoforge.curium/246": "Curium 246", + "tag.fluid.neoforge.curium/246_ni": "Curium 246 Nitride", + "tag.fluid.neoforge.curium/246_ox": "Curium 246 Oxide", + "tag.fluid.neoforge.curium/246_za": "Curium 246 ZA", + "tag.fluid.neoforge.curium/247": "Curium 247", + "tag.fluid.neoforge.curium/247_ni": "Curium 247 Nitride", + "tag.fluid.neoforge.curium/247_ox": "Curium 247 Oxide", + "tag.fluid.neoforge.curium/247_za": "Curium 247 ZA", + "tag.fluid.neoforge.dark_chocolate": "Dark Chocolate", + "tag.fluid.neoforge.depleted_fuel_americium_hea_242": "Depleted Fuel Americium HEA 242", + "tag.fluid.neoforge.depleted_fuel_americium_hea_242_ni": "Depleted Fuel Americium HEA 242 Nitride", + "tag.fluid.neoforge.depleted_fuel_americium_hea_242_ox": "Depleted Fuel Americium HEA 242 Oxide", + "tag.fluid.neoforge.depleted_fuel_americium_hea_242_za": "Depleted Fuel Americium HEA 242 ZA", + "tag.fluid.neoforge.depleted_fuel_americium_lea_242": "Depleted Fuel Americium LEA 242", + "tag.fluid.neoforge.depleted_fuel_americium_lea_242_ni": "Depleted Fuel Americium LEA 242 Nitride", + "tag.fluid.neoforge.depleted_fuel_americium_lea_242_ox": "Depleted Fuel Americium LEA 242 Oxide", + "tag.fluid.neoforge.depleted_fuel_americium_lea_242_za": "Depleted Fuel Americium LEA 242 ZA", + "tag.fluid.neoforge.depleted_fuel_berkelium_heb_248": "Depleted Fuel Berkelium HEB 248", + "tag.fluid.neoforge.depleted_fuel_berkelium_heb_248_ni": "Depleted Fuel Berkelium HEB 248 Nitride", + "tag.fluid.neoforge.depleted_fuel_berkelium_heb_248_ox": "Depleted Fuel Berkelium HEB 248 Oxide", + "tag.fluid.neoforge.depleted_fuel_berkelium_heb_248_za": "Depleted Fuel Berkelium HEB 248 ZA", + "tag.fluid.neoforge.depleted_fuel_berkelium_leb_248": "Depleted Fuel Berkelium LEB 248", + "tag.fluid.neoforge.depleted_fuel_berkelium_leb_248_ni": "Depleted Fuel Berkelium LEB 248 Nitride", + "tag.fluid.neoforge.depleted_fuel_berkelium_leb_248_ox": "Depleted Fuel Berkelium LEB 248 Oxide", + "tag.fluid.neoforge.depleted_fuel_berkelium_leb_248_za": "Depleted Fuel Berkelium LEB 248 ZA", + "tag.fluid.neoforge.depleted_fuel_californium_hecf_249": "Depleted Fuel Californium Hecf 249", + "tag.fluid.neoforge.depleted_fuel_californium_hecf_249_ni": "Depleted Fuel Californium Hecf 249 Nitride", + "tag.fluid.neoforge.depleted_fuel_californium_hecf_249_ox": "Depleted Fuel Californium Hecf 249 Oxide", + "tag.fluid.neoforge.depleted_fuel_californium_hecf_249_za": "Depleted Fuel Californium Hecf 249 ZA", + "tag.fluid.neoforge.depleted_fuel_californium_hecf_251": "Depleted Fuel Californium Hecf 251", + "tag.fluid.neoforge.depleted_fuel_californium_hecf_251_ni": "Depleted Fuel Californium Hecf 251 Nitride", + "tag.fluid.neoforge.depleted_fuel_californium_hecf_251_ox": "Depleted Fuel Californium Hecf 251 Oxide", + "tag.fluid.neoforge.depleted_fuel_californium_hecf_251_za": "Depleted Fuel Californium Hecf 251 ZA", + "tag.fluid.neoforge.depleted_fuel_californium_lecf_249": "Depleted Fuel Californium Lecf 249", + "tag.fluid.neoforge.depleted_fuel_californium_lecf_249_ni": "Depleted Fuel Californium Lecf 249 Nitride", + "tag.fluid.neoforge.depleted_fuel_californium_lecf_249_ox": "Depleted Fuel Californium Lecf 249 Oxide", + "tag.fluid.neoforge.depleted_fuel_californium_lecf_249_za": "Depleted Fuel Californium Lecf 249 ZA", + "tag.fluid.neoforge.depleted_fuel_californium_lecf_251": "Depleted Fuel Californium Lecf 251", + "tag.fluid.neoforge.depleted_fuel_californium_lecf_251_ni": "Depleted Fuel Californium Lecf 251 Nitride", + "tag.fluid.neoforge.depleted_fuel_californium_lecf_251_ox": "Depleted Fuel Californium Lecf 251 Oxide", + "tag.fluid.neoforge.depleted_fuel_californium_lecf_251_za": "Depleted Fuel Californium Lecf 251 ZA", + "tag.fluid.neoforge.depleted_fuel_curium_hecm_243": "Depleted Fuel Curium Hecm 243", + "tag.fluid.neoforge.depleted_fuel_curium_hecm_243_ni": "Depleted Fuel Curium Hecm 243 Nitride", + "tag.fluid.neoforge.depleted_fuel_curium_hecm_243_ox": "Depleted Fuel Curium Hecm 243 Oxide", + "tag.fluid.neoforge.depleted_fuel_curium_hecm_243_za": "Depleted Fuel Curium Hecm 243 ZA", + "tag.fluid.neoforge.depleted_fuel_curium_hecm_245": "Depleted Fuel Curium Hecm 245", + "tag.fluid.neoforge.depleted_fuel_curium_hecm_245_ni": "Depleted Fuel Curium Hecm 245 Nitride", + "tag.fluid.neoforge.depleted_fuel_curium_hecm_245_ox": "Depleted Fuel Curium Hecm 245 Oxide", + "tag.fluid.neoforge.depleted_fuel_curium_hecm_245_za": "Depleted Fuel Curium Hecm 245 ZA", + "tag.fluid.neoforge.depleted_fuel_curium_hecm_247": "Depleted Fuel Curium Hecm 247", + "tag.fluid.neoforge.depleted_fuel_curium_hecm_247_ni": "Depleted Fuel Curium Hecm 247 Nitride", + "tag.fluid.neoforge.depleted_fuel_curium_hecm_247_ox": "Depleted Fuel Curium Hecm 247 Oxide", + "tag.fluid.neoforge.depleted_fuel_curium_hecm_247_za": "Depleted Fuel Curium Hecm 247 ZA", + "tag.fluid.neoforge.depleted_fuel_curium_lecm_243": "Depleted Fuel Curium Lecm 243", + "tag.fluid.neoforge.depleted_fuel_curium_lecm_243_ni": "Depleted Fuel Curium Lecm 243 Nitride", + "tag.fluid.neoforge.depleted_fuel_curium_lecm_243_ox": "Depleted Fuel Curium Lecm 243 Oxide", + "tag.fluid.neoforge.depleted_fuel_curium_lecm_243_za": "Depleted Fuel Curium Lecm 243 ZA", + "tag.fluid.neoforge.depleted_fuel_curium_lecm_245": "Depleted Fuel Curium Lecm 245", + "tag.fluid.neoforge.depleted_fuel_curium_lecm_245_ni": "Depleted Fuel Curium Lecm 245 Nitride", + "tag.fluid.neoforge.depleted_fuel_curium_lecm_245_ox": "Depleted Fuel Curium Lecm 245 Oxide", + "tag.fluid.neoforge.depleted_fuel_curium_lecm_245_za": "Depleted Fuel Curium Lecm 245 ZA", + "tag.fluid.neoforge.depleted_fuel_curium_lecm_247": "Depleted Fuel Curium Lecm 247", + "tag.fluid.neoforge.depleted_fuel_curium_lecm_247_ni": "Depleted Fuel Curium Lecm 247 Nitride", + "tag.fluid.neoforge.depleted_fuel_curium_lecm_247_ox": "Depleted Fuel Curium Lecm 247 Oxide", + "tag.fluid.neoforge.depleted_fuel_curium_lecm_247_za": "Depleted Fuel Curium Lecm 247 ZA", + "tag.fluid.neoforge.depleted_fuel_mixed_mix_239": "Depleted Fuel Mixed MIX 239", + "tag.fluid.neoforge.depleted_fuel_mixed_mix_239_ni": "Depleted Fuel Mixed MIX 239 Nitride", + "tag.fluid.neoforge.depleted_fuel_mixed_mix_239_ox": "Depleted Fuel Mixed MIX 239 Oxide", + "tag.fluid.neoforge.depleted_fuel_mixed_mix_239_za": "Depleted Fuel Mixed MIX 239 ZA", + "tag.fluid.neoforge.depleted_fuel_mixed_mix_241": "Depleted Fuel Mixed MIX 241", + "tag.fluid.neoforge.depleted_fuel_mixed_mix_241_ni": "Depleted Fuel Mixed MIX 241 Nitride", + "tag.fluid.neoforge.depleted_fuel_mixed_mix_241_ox": "Depleted Fuel Mixed MIX 241 Oxide", + "tag.fluid.neoforge.depleted_fuel_mixed_mix_241_za": "Depleted Fuel Mixed MIX 241 ZA", + "tag.fluid.neoforge.depleted_fuel_neptunium_hen_236": "Depleted Fuel Neptunium HEN 236", + "tag.fluid.neoforge.depleted_fuel_neptunium_hen_236_ni": "Depleted Fuel Neptunium HEN 236 Nitride", + "tag.fluid.neoforge.depleted_fuel_neptunium_hen_236_ox": "Depleted Fuel Neptunium HEN 236 Oxide", + "tag.fluid.neoforge.depleted_fuel_neptunium_hen_236_za": "Depleted Fuel Neptunium HEN 236 ZA", + "tag.fluid.neoforge.depleted_fuel_neptunium_len_236": "Depleted Fuel Neptunium LEN 236", + "tag.fluid.neoforge.depleted_fuel_neptunium_len_236_ni": "Depleted Fuel Neptunium LEN 236 Nitride", + "tag.fluid.neoforge.depleted_fuel_neptunium_len_236_ox": "Depleted Fuel Neptunium LEN 236 Oxide", + "tag.fluid.neoforge.depleted_fuel_neptunium_len_236_za": "Depleted Fuel Neptunium LEN 236 ZA", + "tag.fluid.neoforge.depleted_fuel_plutonium_hep_239": "Depleted Fuel Plutonium HEP 239", + "tag.fluid.neoforge.depleted_fuel_plutonium_hep_239_ni": "Depleted Fuel Plutonium HEP 239 Nitride", + "tag.fluid.neoforge.depleted_fuel_plutonium_hep_239_ox": "Depleted Fuel Plutonium HEP 239 Oxide", + "tag.fluid.neoforge.depleted_fuel_plutonium_hep_239_za": "Depleted Fuel Plutonium HEP 239 ZA", + "tag.fluid.neoforge.depleted_fuel_plutonium_hep_241": "Depleted Fuel Plutonium HEP 241", + "tag.fluid.neoforge.depleted_fuel_plutonium_hep_241_ni": "Depleted Fuel Plutonium HEP 241 Nitride", + "tag.fluid.neoforge.depleted_fuel_plutonium_hep_241_ox": "Depleted Fuel Plutonium HEP 241 Oxide", + "tag.fluid.neoforge.depleted_fuel_plutonium_hep_241_za": "Depleted Fuel Plutonium HEP 241 ZA", + "tag.fluid.neoforge.depleted_fuel_plutonium_lep_239": "Depleted Fuel Plutonium LEP 239", + "tag.fluid.neoforge.depleted_fuel_plutonium_lep_239_ni": "Depleted Fuel Plutonium LEP 239 Nitride", + "tag.fluid.neoforge.depleted_fuel_plutonium_lep_239_ox": "Depleted Fuel Plutonium LEP 239 Oxide", + "tag.fluid.neoforge.depleted_fuel_plutonium_lep_239_za": "Depleted Fuel Plutonium LEP 239 ZA", + "tag.fluid.neoforge.depleted_fuel_plutonium_lep_241": "Depleted Fuel Plutonium LEP 241", + "tag.fluid.neoforge.depleted_fuel_plutonium_lep_241_ni": "Depleted Fuel Plutonium LEP 241 Nitride", + "tag.fluid.neoforge.depleted_fuel_plutonium_lep_241_ox": "Depleted Fuel Plutonium LEP 241 Oxide", + "tag.fluid.neoforge.depleted_fuel_plutonium_lep_241_za": "Depleted Fuel Plutonium LEP 241 ZA", + "tag.fluid.neoforge.depleted_fuel_thorium_tbu": "Depleted Fuel Thorium TBU", + "tag.fluid.neoforge.depleted_fuel_thorium_tbu_ni": "Depleted Fuel Thorium TBU Nitride", + "tag.fluid.neoforge.depleted_fuel_thorium_tbu_ox": "Depleted Fuel Thorium TBU Oxide", + "tag.fluid.neoforge.depleted_fuel_thorium_tbu_za": "Depleted Fuel Thorium TBU ZA", + "tag.fluid.neoforge.depleted_fuel_uranium_heu_233": "Depleted Fuel Uranium HEU 233", + "tag.fluid.neoforge.depleted_fuel_uranium_heu_233_ni": "Depleted Fuel Uranium HEU 233 Nitride", + "tag.fluid.neoforge.depleted_fuel_uranium_heu_233_ox": "Depleted Fuel Uranium HEU 233 Oxide", + "tag.fluid.neoforge.depleted_fuel_uranium_heu_233_za": "Depleted Fuel Uranium HEU 233 ZA", + "tag.fluid.neoforge.depleted_fuel_uranium_heu_235": "Depleted Fuel Uranium HEU 235", + "tag.fluid.neoforge.depleted_fuel_uranium_heu_235_ni": "Depleted Fuel Uranium HEU 235 Nitride", + "tag.fluid.neoforge.depleted_fuel_uranium_heu_235_ox": "Depleted Fuel Uranium HEU 235 Oxide", + "tag.fluid.neoforge.depleted_fuel_uranium_heu_235_za": "Depleted Fuel Uranium HEU 235 ZA", + "tag.fluid.neoforge.depleted_fuel_uranium_leu_233": "Depleted Fuel Uranium LEU 233", + "tag.fluid.neoforge.depleted_fuel_uranium_leu_233_ni": "Depleted Fuel Uranium LEU 233 Nitride", + "tag.fluid.neoforge.depleted_fuel_uranium_leu_233_ox": "Depleted Fuel Uranium LEU 233 Oxide", + "tag.fluid.neoforge.depleted_fuel_uranium_leu_233_za": "Depleted Fuel Uranium LEU 233 ZA", + "tag.fluid.neoforge.depleted_fuel_uranium_leu_235": "Depleted Fuel Uranium LEU 235", + "tag.fluid.neoforge.depleted_fuel_uranium_leu_235_ni": "Depleted Fuel Uranium LEU 235 Nitride", + "tag.fluid.neoforge.depleted_fuel_uranium_leu_235_ox": "Depleted Fuel Uranium LEU 235 Oxide", + "tag.fluid.neoforge.depleted_fuel_uranium_leu_235_za": "Depleted Fuel Uranium LEU 235 ZA", + "tag.fluid.neoforge.depleted_fuel_xenorium_xen_298": "Depleted Fuel Xenorium XEN 298", + "tag.fluid.neoforge.deuterium": "Deuterium", + "tag.fluid.neoforge.diborane": "Diborane", + "tag.fluid.neoforge.dusts.alugentum": "Alugentum (Dusts)", + "tag.fluid.neoforge.dusts.aluminium": "Aluminium (Dusts)", + "tag.fluid.neoforge.dusts.aluminum": "Aluminum (Dusts)", + "tag.fluid.neoforge.dusts.arsenic": "Arsenic (Dusts)", + "tag.fluid.neoforge.dusts.barium": "Barium (Dusts)", + "tag.fluid.neoforge.dusts.beryllium": "Beryllium (Dusts)", + "tag.fluid.neoforge.dusts.bismuth": "Bismuth (Dusts)", + "tag.fluid.neoforge.dusts.borax": "Borax (Dusts)", + "tag.fluid.neoforge.dusts.boron": "Boron (Dusts)", + "tag.fluid.neoforge.dusts.boron_arsenide": "Boron Arsenide (Dusts)", + "tag.fluid.neoforge.dusts.boron_nitride": "Boron Nitride (Dusts)", + "tag.fluid.neoforge.dusts.bronze": "Bronze (Dusts)", + "tag.fluid.neoforge.dusts.bscco": "Bscco (Dusts)", + "tag.fluid.neoforge.dusts.c_mn_blend": "C Mn Blend (Dusts)", + "tag.fluid.neoforge.dusts.caesium_137": "Caesium 137 (Dusts)", + "tag.fluid.neoforge.dusts.calcium": "Calcium (Dusts)", + "tag.fluid.neoforge.dusts.calcium_sulfate": "Calcium Sulfate (Dusts)", + "tag.fluid.neoforge.dusts.carbon_manganese": "Carbon Manganese (Dusts)", + "tag.fluid.neoforge.dusts.carobbiite": "Carobbiite (Dusts)", + "tag.fluid.neoforge.dusts.charcoal": "Charcoal (Dusts)", + "tag.fluid.neoforge.dusts.chromium": "Chromium (Dusts)", + "tag.fluid.neoforge.dusts.coal": "Coal (Dusts)", + "tag.fluid.neoforge.dusts.cobalt": "Cobalt (Dusts)", + "tag.fluid.neoforge.dusts.copper": "Copper (Dusts)", + "tag.fluid.neoforge.dusts.crystal_binder": "Crystal Binder (Dusts)", + "tag.fluid.neoforge.dusts.diamond": "Diamond (Dusts)", + "tag.fluid.neoforge.dusts.dimensional_blend": "Dimensional Blend (Dusts)", + "tag.fluid.neoforge.dusts.electrum": "Electrum (Dusts)", + "tag.fluid.neoforge.dusts.emerald": "Emerald (Dusts)", + "tag.fluid.neoforge.dusts.end_stone": "End Stone (Dusts)", + "tag.fluid.neoforge.dusts.enderium": "Enderium (Dusts)", + "tag.fluid.neoforge.dusts.energetic_blend": "Energetic Blend (Dusts)", + "tag.fluid.neoforge.dusts.erbium": "Erbium (Dusts)", + "tag.fluid.neoforge.dusts.europium_155": "Europium 155 (Dusts)", + "tag.fluid.neoforge.dusts.extreme": "Extreme (Dusts)", + "tag.fluid.neoforge.dusts.ferroboron": "Ferroboron (Dusts)", + "tag.fluid.neoforge.dusts.fluorite": "Fluorite (Dusts)", + "tag.fluid.neoforge.dusts.gadolinium": "Gadolinium (Dusts)", + "tag.fluid.neoforge.dusts.germanium": "Germanium (Dusts)", + "tag.fluid.neoforge.dusts.gold": "Gold (Dusts)", + "tag.fluid.neoforge.dusts.graphite": "Graphite (Dusts)", + "tag.fluid.neoforge.dusts.hafnium": "Hafnium (Dusts)", + "tag.fluid.neoforge.dusts.hard_carbon": "Hard Carbon (Dusts)", + "tag.fluid.neoforge.dusts.hsla_steel": "Hsla Steel (Dusts)", + "tag.fluid.neoforge.dusts.iodine": "Iodine (Dusts)", + "tag.fluid.neoforge.dusts.iridium": "Iridium (Dusts)", + "tag.fluid.neoforge.dusts.iron": "Iron (Dusts)", + "tag.fluid.neoforge.dusts.irradiated_borax": "Irradiated Borax (Dusts)", + "tag.fluid.neoforge.dusts.lapis": "Lapis (Dusts)", + "tag.fluid.neoforge.dusts.lead": "Lead (Dusts)", + "tag.fluid.neoforge.dusts.lead_platinum": "Lead Platinum (Dusts)", + "tag.fluid.neoforge.dusts.lithium": "Lithium (Dusts)", + "tag.fluid.neoforge.dusts.lithium_manganese_dioxide": "Lithium Manganese Dioxide (Dusts)", + "tag.fluid.neoforge.dusts.magnesium": "Magnesium (Dusts)", + "tag.fluid.neoforge.dusts.manganese": "Manganese (Dusts)", + "tag.fluid.neoforge.dusts.manganese_dioxide": "Manganese Dioxide (Dusts)", + "tag.fluid.neoforge.dusts.manganese_oxide": "Manganese Oxide (Dusts)", + "tag.fluid.neoforge.dusts.molybdenum": "Molybdenum (Dusts)", + "tag.fluid.neoforge.dusts.neodymium": "Neodymium (Dusts)", + "tag.fluid.neoforge.dusts.netherite": "Netherite (Dusts)", + "tag.fluid.neoforge.dusts.niobium": "Niobium (Dusts)", + "tag.fluid.neoforge.dusts.obsidian": "Obsidian (Dusts)", + "tag.fluid.neoforge.dusts.osmium": "Osmium (Dusts)", + "tag.fluid.neoforge.dusts.palladium": "Palladium (Dusts)", + "tag.fluid.neoforge.dusts.platinum": "Platinum (Dusts)", + "tag.fluid.neoforge.dusts.polonium": "Polonium (Dusts)", + "tag.fluid.neoforge.dusts.potassium": "Potassium (Dusts)", + "tag.fluid.neoforge.dusts.potassium_fluoride": "Potassium Fluoride (Dusts)", + "tag.fluid.neoforge.dusts.potassium_hydroxide": "Potassium Hydroxide (Dusts)", + "tag.fluid.neoforge.dusts.potassium_iodide": "Potassium Iodide (Dusts)", + "tag.fluid.neoforge.dusts.promethium_147": "Promethium 147 (Dusts)", + "tag.fluid.neoforge.dusts.protactinium_231": "Protactinium 231 (Dusts)", + "tag.fluid.neoforge.dusts.protactinium_233": "Protactinium 233 (Dusts)", + "tag.fluid.neoforge.dusts.purpur": "Purpur (Dusts)", + "tag.fluid.neoforge.dusts.pyrolitic_carbon": "Pyrolitic Carbon (Dusts)", + "tag.fluid.neoforge.dusts.quartz": "Quartz (Dusts)", + "tag.fluid.neoforge.dusts.radium": "Radium (Dusts)", + "tag.fluid.neoforge.dusts.rhodochrosite": "Rhodochrosite (Dusts)", + "tag.fluid.neoforge.dusts.ruthenium_106": "Ruthenium 106 (Dusts)", + "tag.fluid.neoforge.dusts.salt": "Salt (Dusts)", + "tag.fluid.neoforge.dusts.samarium": "Samarium (Dusts)", + "tag.fluid.neoforge.dusts.shibuichi": "Shibuichi (Dusts)", + "tag.fluid.neoforge.dusts.sic_sic_cmc": "Sic Sic Cmc (Dusts)", + "tag.fluid.neoforge.dusts.silicon_carbide": "Silicon Carbide (Dusts)", + "tag.fluid.neoforge.dusts.silver": "Silver (Dusts)", + "tag.fluid.neoforge.dusts.sodium": "Sodium (Dusts)", + "tag.fluid.neoforge.dusts.sodium_chloride": "Sodium Chloride (Dusts)", + "tag.fluid.neoforge.dusts.sodium_fluoride": "Sodium Fluoride (Dusts)", + "tag.fluid.neoforge.dusts.sodium_hydroxide": "Sodium Hydroxide (Dusts)", + "tag.fluid.neoforge.dusts.steel": "Steel (Dusts)", + "tag.fluid.neoforge.dusts.strontium": "Strontium (Dusts)", + "tag.fluid.neoforge.dusts.strontium_90": "Strontium 90 (Dusts)", + "tag.fluid.neoforge.dusts.sulfur": "Sulfur (Dusts)", + "tag.fluid.neoforge.dusts.tbp": "Tbp (Dusts)", + "tag.fluid.neoforge.dusts.terbium": "Terbium (Dusts)", + "tag.fluid.neoforge.dusts.thallium": "Thallium (Dusts)", + "tag.fluid.neoforge.dusts.thermoconducting": "Thermoconducting (Dusts)", + "tag.fluid.neoforge.dusts.thorium": "Thorium (Dusts)", + "tag.fluid.neoforge.dusts.tin": "Tin (Dusts)", + "tag.fluid.neoforge.dusts.tin_silver": "Tin Silver (Dusts)", + "tag.fluid.neoforge.dusts.titanium": "Titanium (Dusts)", + "tag.fluid.neoforge.dusts.tough_alloy": "Tough Alloy (Dusts)", + "tag.fluid.neoforge.dusts.tungsten": "Tungsten (Dusts)", + "tag.fluid.neoforge.dusts.uranium": "Uranium (Dusts)", + "tag.fluid.neoforge.dusts.villiaumite": "Villiaumite (Dusts)", + "tag.fluid.neoforge.dusts.yellowcake": "Yellowcake (Dusts)", + "tag.fluid.neoforge.dusts.ytterbium": "Ytterbium (Dusts)", + "tag.fluid.neoforge.dusts.yttrium": "Yttrium (Dusts)", + "tag.fluid.neoforge.dusts.zinc": "Zinc (Dusts)", + "tag.fluid.neoforge.dusts.zircaloy": "Zircaloy (Dusts)", + "tag.fluid.neoforge.dusts.zirconium": "Zirconium (Dusts)", + "tag.fluid.neoforge.dusts.zirconium_molybdenum": "Zirconium Molybdenum (Dusts)", + "tag.fluid.neoforge.dusts/alugentum": "Alugentum (Dusts)", + "tag.fluid.neoforge.dusts/aluminium": "Aluminium (Dusts)", + "tag.fluid.neoforge.dusts/aluminum": "Aluminum (Dusts)", + "tag.fluid.neoforge.dusts/arsenic": "Arsenic (Dusts)", + "tag.fluid.neoforge.dusts/barium": "Barium (Dusts)", + "tag.fluid.neoforge.dusts/beryllium": "Beryllium (Dusts)", + "tag.fluid.neoforge.dusts/bismuth": "Bismuth (Dusts)", + "tag.fluid.neoforge.dusts/borax": "Borax (Dusts)", + "tag.fluid.neoforge.dusts/boron": "Boron (Dusts)", + "tag.fluid.neoforge.dusts/boron_arsenide": "Boron Arsenide (Dusts)", + "tag.fluid.neoforge.dusts/boron_nitride": "Boron Nitride (Dusts)", + "tag.fluid.neoforge.dusts/bronze": "Bronze (Dusts)", + "tag.fluid.neoforge.dusts/bscco": "Bscco (Dusts)", + "tag.fluid.neoforge.dusts/c_mn_blend": "C Mn Blend (Dusts)", + "tag.fluid.neoforge.dusts/caesium_137": "Caesium 137 (Dusts)", + "tag.fluid.neoforge.dusts/calcium": "Calcium (Dusts)", + "tag.fluid.neoforge.dusts/calcium_sulfate": "Calcium Sulfate (Dusts)", + "tag.fluid.neoforge.dusts/carbon_manganese": "Carbon Manganese (Dusts)", + "tag.fluid.neoforge.dusts/carobbiite": "Carobbiite (Dusts)", + "tag.fluid.neoforge.dusts/charcoal": "Charcoal (Dusts)", + "tag.fluid.neoforge.dusts/chromium": "Chromium (Dusts)", + "tag.fluid.neoforge.dusts/coal": "Coal (Dusts)", + "tag.fluid.neoforge.dusts/cobalt": "Cobalt (Dusts)", + "tag.fluid.neoforge.dusts/copper": "Copper (Dusts)", + "tag.fluid.neoforge.dusts/crystal_binder": "Crystal Binder (Dusts)", + "tag.fluid.neoforge.dusts/diamond": "Diamond (Dusts)", + "tag.fluid.neoforge.dusts/dimensional_blend": "Dimensional Blend (Dusts)", + "tag.fluid.neoforge.dusts/electrum": "Electrum (Dusts)", + "tag.fluid.neoforge.dusts/emerald": "Emerald (Dusts)", + "tag.fluid.neoforge.dusts/end_stone": "End Stone (Dusts)", + "tag.fluid.neoforge.dusts/enderium": "Enderium (Dusts)", + "tag.fluid.neoforge.dusts/energetic_blend": "Energetic Blend (Dusts)", + "tag.fluid.neoforge.dusts/erbium": "Erbium (Dusts)", + "tag.fluid.neoforge.dusts/europium_155": "Europium 155 (Dusts)", + "tag.fluid.neoforge.dusts/extreme": "Extreme (Dusts)", + "tag.fluid.neoforge.dusts/ferroboron": "Ferroboron (Dusts)", + "tag.fluid.neoforge.dusts/fluorite": "Fluorite (Dusts)", + "tag.fluid.neoforge.dusts/gadolinium": "Gadolinium (Dusts)", + "tag.fluid.neoforge.dusts/germanium": "Germanium (Dusts)", + "tag.fluid.neoforge.dusts/gold": "Gold (Dusts)", + "tag.fluid.neoforge.dusts/graphite": "Graphite (Dusts)", + "tag.fluid.neoforge.dusts/hafnium": "Hafnium (Dusts)", + "tag.fluid.neoforge.dusts/hard_carbon": "Hard Carbon (Dusts)", + "tag.fluid.neoforge.dusts/hsla_steel": "Hsla Steel (Dusts)", + "tag.fluid.neoforge.dusts/iodine": "Iodine (Dusts)", + "tag.fluid.neoforge.dusts/iridium": "Iridium (Dusts)", + "tag.fluid.neoforge.dusts/iron": "Iron (Dusts)", + "tag.fluid.neoforge.dusts/irradiated_borax": "Irradiated Borax (Dusts)", + "tag.fluid.neoforge.dusts/lapis": "Lapis (Dusts)", + "tag.fluid.neoforge.dusts/lead": "Lead (Dusts)", + "tag.fluid.neoforge.dusts/lead_platinum": "Lead Platinum (Dusts)", + "tag.fluid.neoforge.dusts/lithium": "Lithium (Dusts)", + "tag.fluid.neoforge.dusts/lithium_manganese_dioxide": "Lithium Manganese Dioxide (Dusts)", + "tag.fluid.neoforge.dusts/magnesium": "Magnesium (Dusts)", + "tag.fluid.neoforge.dusts/manganese": "Manganese (Dusts)", + "tag.fluid.neoforge.dusts/manganese_dioxide": "Manganese Dioxide (Dusts)", + "tag.fluid.neoforge.dusts/manganese_oxide": "Manganese Oxide (Dusts)", + "tag.fluid.neoforge.dusts/molybdenum": "Molybdenum (Dusts)", + "tag.fluid.neoforge.dusts/neodymium": "Neodymium (Dusts)", + "tag.fluid.neoforge.dusts/netherite": "Netherite (Dusts)", + "tag.fluid.neoforge.dusts/niobium": "Niobium (Dusts)", + "tag.fluid.neoforge.dusts/obsidian": "Obsidian (Dusts)", + "tag.fluid.neoforge.dusts/osmium": "Osmium (Dusts)", + "tag.fluid.neoforge.dusts/palladium": "Palladium (Dusts)", + "tag.fluid.neoforge.dusts/platinum": "Platinum (Dusts)", + "tag.fluid.neoforge.dusts/polonium": "Polonium (Dusts)", + "tag.fluid.neoforge.dusts/potassium": "Potassium (Dusts)", + "tag.fluid.neoforge.dusts/potassium_fluoride": "Potassium Fluoride (Dusts)", + "tag.fluid.neoforge.dusts/potassium_hydroxide": "Potassium Hydroxide (Dusts)", + "tag.fluid.neoforge.dusts/potassium_iodide": "Potassium Iodide (Dusts)", + "tag.fluid.neoforge.dusts/promethium_147": "Promethium 147 (Dusts)", + "tag.fluid.neoforge.dusts/protactinium_231": "Protactinium 231 (Dusts)", + "tag.fluid.neoforge.dusts/protactinium_233": "Protactinium 233 (Dusts)", + "tag.fluid.neoforge.dusts/purpur": "Purpur (Dusts)", + "tag.fluid.neoforge.dusts/pyrolitic_carbon": "Pyrolitic Carbon (Dusts)", + "tag.fluid.neoforge.dusts/quartz": "Quartz (Dusts)", + "tag.fluid.neoforge.dusts/radium": "Radium (Dusts)", + "tag.fluid.neoforge.dusts/rhodochrosite": "Rhodochrosite (Dusts)", + "tag.fluid.neoforge.dusts/ruthenium_106": "Ruthenium 106 (Dusts)", + "tag.fluid.neoforge.dusts/salt": "Salt (Dusts)", + "tag.fluid.neoforge.dusts/samarium": "Samarium (Dusts)", + "tag.fluid.neoforge.dusts/shibuichi": "Shibuichi (Dusts)", + "tag.fluid.neoforge.dusts/sic_sic_cmc": "Sic Sic Cmc (Dusts)", + "tag.fluid.neoforge.dusts/silicon_carbide": "Silicon Carbide (Dusts)", + "tag.fluid.neoforge.dusts/silver": "Silver (Dusts)", + "tag.fluid.neoforge.dusts/sodium": "Sodium (Dusts)", + "tag.fluid.neoforge.dusts/sodium_chloride": "Sodium Chloride (Dusts)", + "tag.fluid.neoforge.dusts/sodium_fluoride": "Sodium Fluoride (Dusts)", + "tag.fluid.neoforge.dusts/sodium_hydroxide": "Sodium Hydroxide (Dusts)", + "tag.fluid.neoforge.dusts/steel": "Steel (Dusts)", + "tag.fluid.neoforge.dusts/strontium": "Strontium (Dusts)", + "tag.fluid.neoforge.dusts/strontium_90": "Strontium 90 (Dusts)", + "tag.fluid.neoforge.dusts/sulfur": "Sulfur (Dusts)", + "tag.fluid.neoforge.dusts/tbp": "Tbp (Dusts)", + "tag.fluid.neoforge.dusts/terbium": "Terbium (Dusts)", + "tag.fluid.neoforge.dusts/thallium": "Thallium (Dusts)", + "tag.fluid.neoforge.dusts/thermoconducting": "Thermoconducting (Dusts)", + "tag.fluid.neoforge.dusts/thorium": "Thorium (Dusts)", + "tag.fluid.neoforge.dusts/tin": "Tin (Dusts)", + "tag.fluid.neoforge.dusts/tin_silver": "Tin Silver (Dusts)", + "tag.fluid.neoforge.dusts/titanium": "Titanium (Dusts)", + "tag.fluid.neoforge.dusts/tough_alloy": "Tough Alloy (Dusts)", + "tag.fluid.neoforge.dusts/tungsten": "Tungsten (Dusts)", + "tag.fluid.neoforge.dusts/uranium": "Uranium (Dusts)", + "tag.fluid.neoforge.dusts/villiaumite": "Villiaumite (Dusts)", + "tag.fluid.neoforge.dusts/yellowcake": "Yellowcake (Dusts)", + "tag.fluid.neoforge.dusts/ytterbium": "Ytterbium (Dusts)", + "tag.fluid.neoforge.dusts/yttrium": "Yttrium (Dusts)", + "tag.fluid.neoforge.dusts/zinc": "Zinc (Dusts)", + "tag.fluid.neoforge.dusts/zircaloy": "Zircaloy (Dusts)", + "tag.fluid.neoforge.dusts/zirconium": "Zirconium (Dusts)", + "tag.fluid.neoforge.dusts/zirconium_molybdenum": "Zirconium Molybdenum (Dusts)", + "tag.fluid.neoforge.electrum": "Electrum", + "tag.fluid.neoforge.emergency_coolant": "Emergency Coolant", + "tag.fluid.neoforge.emergency_coolant_heated": "Emergency Coolant Heated", + "tag.fluid.neoforge.enderium": "Enderium", + "tag.fluid.neoforge.ethanol": "Ethanol", + "tag.fluid.neoforge.ethene": "Ethene", + "tag.fluid.neoforge.europium_155": "Europium 155", + "tag.fluid.neoforge.exhaust_steam": "Exhaust Steam", + "tag.fluid.neoforge.extreme": "Extreme", + "tag.fluid.neoforge.ferroboron": "Ferroboron", + "tag.fluid.neoforge.fissile_fuel": "Fissile Fuel", + "tag.fluid.neoforge.fluorine": "Fluorine", + "tag.fluid.neoforge.fluorite_water": "Fluorite Water", + "tag.fluid.neoforge.fluoromethane": "Fluoromethane", + "tag.fluid.neoforge.fuel_americium_hea_242": "Fuel Americium HEA 242", + "tag.fluid.neoforge.fuel_americium_hea_242_ni": "Fuel Americium HEA 242 Nitride", + "tag.fluid.neoforge.fuel_americium_hea_242_ox": "Fuel Americium HEA 242 Oxide", + "tag.fluid.neoforge.fuel_americium_hea_242_za": "Fuel Americium HEA 242 ZA", + "tag.fluid.neoforge.fuel_americium_lea_242": "Fuel Americium LEA 242", + "tag.fluid.neoforge.fuel_americium_lea_242_ni": "Fuel Americium LEA 242 Nitride", + "tag.fluid.neoforge.fuel_americium_lea_242_ox": "Fuel Americium LEA 242 Oxide", + "tag.fluid.neoforge.fuel_americium_lea_242_za": "Fuel Americium LEA 242 ZA", + "tag.fluid.neoforge.fuel_berkelium_heb_248": "Fuel Berkelium HEB 248", + "tag.fluid.neoforge.fuel_berkelium_heb_248_ni": "Fuel Berkelium HEB 248 Nitride", + "tag.fluid.neoforge.fuel_berkelium_heb_248_ox": "Fuel Berkelium HEB 248 Oxide", + "tag.fluid.neoforge.fuel_berkelium_heb_248_za": "Fuel Berkelium HEB 248 ZA", + "tag.fluid.neoforge.fuel_berkelium_leb_248": "Fuel Berkelium LEB 248", + "tag.fluid.neoforge.fuel_berkelium_leb_248_ni": "Fuel Berkelium LEB 248 Nitride", + "tag.fluid.neoforge.fuel_berkelium_leb_248_ox": "Fuel Berkelium LEB 248 Oxide", + "tag.fluid.neoforge.fuel_berkelium_leb_248_za": "Fuel Berkelium LEB 248 ZA", + "tag.fluid.neoforge.fuel_californium_hecf_249": "Fuel Californium Hecf 249", + "tag.fluid.neoforge.fuel_californium_hecf_249_ni": "Fuel Californium Hecf 249 Nitride", + "tag.fluid.neoforge.fuel_californium_hecf_249_ox": "Fuel Californium Hecf 249 Oxide", + "tag.fluid.neoforge.fuel_californium_hecf_249_za": "Fuel Californium Hecf 249 ZA", + "tag.fluid.neoforge.fuel_californium_hecf_251": "Fuel Californium Hecf 251", + "tag.fluid.neoforge.fuel_californium_hecf_251_ni": "Fuel Californium Hecf 251 Nitride", + "tag.fluid.neoforge.fuel_californium_hecf_251_ox": "Fuel Californium Hecf 251 Oxide", + "tag.fluid.neoforge.fuel_californium_hecf_251_za": "Fuel Californium Hecf 251 ZA", + "tag.fluid.neoforge.fuel_californium_lecf_249": "Fuel Californium Lecf 249", + "tag.fluid.neoforge.fuel_californium_lecf_249_ni": "Fuel Californium Lecf 249 Nitride", + "tag.fluid.neoforge.fuel_californium_lecf_249_ox": "Fuel Californium Lecf 249 Oxide", + "tag.fluid.neoforge.fuel_californium_lecf_249_za": "Fuel Californium Lecf 249 ZA", + "tag.fluid.neoforge.fuel_californium_lecf_251": "Fuel Californium Lecf 251", + "tag.fluid.neoforge.fuel_californium_lecf_251_ni": "Fuel Californium Lecf 251 Nitride", + "tag.fluid.neoforge.fuel_californium_lecf_251_ox": "Fuel Californium Lecf 251 Oxide", + "tag.fluid.neoforge.fuel_californium_lecf_251_za": "Fuel Californium Lecf 251 ZA", + "tag.fluid.neoforge.fuel_curium_hecm_243": "Fuel Curium Hecm 243", + "tag.fluid.neoforge.fuel_curium_hecm_243_ni": "Fuel Curium Hecm 243 Nitride", + "tag.fluid.neoforge.fuel_curium_hecm_243_ox": "Fuel Curium Hecm 243 Oxide", + "tag.fluid.neoforge.fuel_curium_hecm_243_za": "Fuel Curium Hecm 243 ZA", + "tag.fluid.neoforge.fuel_curium_hecm_245": "Fuel Curium Hecm 245", + "tag.fluid.neoforge.fuel_curium_hecm_245_ni": "Fuel Curium Hecm 245 Nitride", + "tag.fluid.neoforge.fuel_curium_hecm_245_ox": "Fuel Curium Hecm 245 Oxide", + "tag.fluid.neoforge.fuel_curium_hecm_245_za": "Fuel Curium Hecm 245 ZA", + "tag.fluid.neoforge.fuel_curium_hecm_247": "Fuel Curium Hecm 247", + "tag.fluid.neoforge.fuel_curium_hecm_247_ni": "Fuel Curium Hecm 247 Nitride", + "tag.fluid.neoforge.fuel_curium_hecm_247_ox": "Fuel Curium Hecm 247 Oxide", + "tag.fluid.neoforge.fuel_curium_hecm_247_za": "Fuel Curium Hecm 247 ZA", + "tag.fluid.neoforge.fuel_curium_lecm_243": "Fuel Curium Lecm 243", + "tag.fluid.neoforge.fuel_curium_lecm_243_ni": "Fuel Curium Lecm 243 Nitride", + "tag.fluid.neoforge.fuel_curium_lecm_243_ox": "Fuel Curium Lecm 243 Oxide", + "tag.fluid.neoforge.fuel_curium_lecm_243_za": "Fuel Curium Lecm 243 ZA", + "tag.fluid.neoforge.fuel_curium_lecm_245": "Fuel Curium Lecm 245", + "tag.fluid.neoforge.fuel_curium_lecm_245_ni": "Fuel Curium Lecm 245 Nitride", + "tag.fluid.neoforge.fuel_curium_lecm_245_ox": "Fuel Curium Lecm 245 Oxide", + "tag.fluid.neoforge.fuel_curium_lecm_245_za": "Fuel Curium Lecm 245 ZA", + "tag.fluid.neoforge.fuel_curium_lecm_247": "Fuel Curium Lecm 247", + "tag.fluid.neoforge.fuel_curium_lecm_247_ni": "Fuel Curium Lecm 247 Nitride", + "tag.fluid.neoforge.fuel_curium_lecm_247_ox": "Fuel Curium Lecm 247 Oxide", + "tag.fluid.neoforge.fuel_curium_lecm_247_za": "Fuel Curium Lecm 247 ZA", + "tag.fluid.neoforge.fuel_mixed_mix_239": "Fuel Mixed MIX 239", + "tag.fluid.neoforge.fuel_mixed_mix_239_ni": "Fuel Mixed MIX 239 Nitride", + "tag.fluid.neoforge.fuel_mixed_mix_239_ox": "Fuel Mixed MIX 239 Oxide", + "tag.fluid.neoforge.fuel_mixed_mix_239_za": "Fuel Mixed MIX 239 ZA", + "tag.fluid.neoforge.fuel_mixed_mix_241": "Fuel Mixed MIX 241", + "tag.fluid.neoforge.fuel_mixed_mix_241_ni": "Fuel Mixed MIX 241 Nitride", + "tag.fluid.neoforge.fuel_mixed_mix_241_ox": "Fuel Mixed MIX 241 Oxide", + "tag.fluid.neoforge.fuel_mixed_mix_241_za": "Fuel Mixed MIX 241 ZA", + "tag.fluid.neoforge.fuel_neptunium_hen_236": "Fuel Neptunium HEN 236", + "tag.fluid.neoforge.fuel_neptunium_hen_236_ni": "Fuel Neptunium HEN 236 Nitride", + "tag.fluid.neoforge.fuel_neptunium_hen_236_ox": "Fuel Neptunium HEN 236 Oxide", + "tag.fluid.neoforge.fuel_neptunium_hen_236_za": "Fuel Neptunium HEN 236 ZA", + "tag.fluid.neoforge.fuel_neptunium_len_236": "Fuel Neptunium LEN 236", + "tag.fluid.neoforge.fuel_neptunium_len_236_ni": "Fuel Neptunium LEN 236 Nitride", + "tag.fluid.neoforge.fuel_neptunium_len_236_ox": "Fuel Neptunium LEN 236 Oxide", + "tag.fluid.neoforge.fuel_neptunium_len_236_za": "Fuel Neptunium LEN 236 ZA", + "tag.fluid.neoforge.fuel_plutonium_hep_239": "Fuel Plutonium HEP 239", + "tag.fluid.neoforge.fuel_plutonium_hep_239_ni": "Fuel Plutonium HEP 239 Nitride", + "tag.fluid.neoforge.fuel_plutonium_hep_239_ox": "Fuel Plutonium HEP 239 Oxide", + "tag.fluid.neoforge.fuel_plutonium_hep_239_za": "Fuel Plutonium HEP 239 ZA", + "tag.fluid.neoforge.fuel_plutonium_hep_241": "Fuel Plutonium HEP 241", + "tag.fluid.neoforge.fuel_plutonium_hep_241_ni": "Fuel Plutonium HEP 241 Nitride", + "tag.fluid.neoforge.fuel_plutonium_hep_241_ox": "Fuel Plutonium HEP 241 Oxide", + "tag.fluid.neoforge.fuel_plutonium_hep_241_za": "Fuel Plutonium HEP 241 ZA", + "tag.fluid.neoforge.fuel_plutonium_lep_239": "Fuel Plutonium LEP 239", + "tag.fluid.neoforge.fuel_plutonium_lep_239_ni": "Fuel Plutonium LEP 239 Nitride", + "tag.fluid.neoforge.fuel_plutonium_lep_239_ox": "Fuel Plutonium LEP 239 Oxide", + "tag.fluid.neoforge.fuel_plutonium_lep_239_za": "Fuel Plutonium LEP 239 ZA", + "tag.fluid.neoforge.fuel_plutonium_lep_241": "Fuel Plutonium LEP 241", + "tag.fluid.neoforge.fuel_plutonium_lep_241_ni": "Fuel Plutonium LEP 241 Nitride", + "tag.fluid.neoforge.fuel_plutonium_lep_241_ox": "Fuel Plutonium LEP 241 Oxide", + "tag.fluid.neoforge.fuel_plutonium_lep_241_za": "Fuel Plutonium LEP 241 ZA", + "tag.fluid.neoforge.fuel_thorium_tbu": "Fuel Thorium TBU", + "tag.fluid.neoforge.fuel_thorium_tbu_ni": "Fuel Thorium TBU Nitride", + "tag.fluid.neoforge.fuel_thorium_tbu_ox": "Fuel Thorium TBU Oxide", + "tag.fluid.neoforge.fuel_thorium_tbu_za": "Fuel Thorium TBU ZA", + "tag.fluid.neoforge.fuel_uranium_heu_233": "Fuel Uranium HEU 233", + "tag.fluid.neoforge.fuel_uranium_heu_233_ni": "Fuel Uranium HEU 233 Nitride", + "tag.fluid.neoforge.fuel_uranium_heu_233_ox": "Fuel Uranium HEU 233 Oxide", + "tag.fluid.neoforge.fuel_uranium_heu_233_za": "Fuel Uranium HEU 233 ZA", + "tag.fluid.neoforge.fuel_uranium_heu_235": "Fuel Uranium HEU 235", + "tag.fluid.neoforge.fuel_uranium_heu_235_ni": "Fuel Uranium HEU 235 Nitride", + "tag.fluid.neoforge.fuel_uranium_heu_235_ox": "Fuel Uranium HEU 235 Oxide", + "tag.fluid.neoforge.fuel_uranium_heu_235_za": "Fuel Uranium HEU 235 ZA", + "tag.fluid.neoforge.fuel_uranium_leu_233": "Fuel Uranium LEU 233", + "tag.fluid.neoforge.fuel_uranium_leu_233_ni": "Fuel Uranium LEU 233 Nitride", + "tag.fluid.neoforge.fuel_uranium_leu_233_ox": "Fuel Uranium LEU 233 Oxide", + "tag.fluid.neoforge.fuel_uranium_leu_233_za": "Fuel Uranium LEU 233 ZA", + "tag.fluid.neoforge.fuel_uranium_leu_235": "Fuel Uranium LEU 235", + "tag.fluid.neoforge.fuel_uranium_leu_235_ni": "Fuel Uranium LEU 235 Nitride", + "tag.fluid.neoforge.fuel_uranium_leu_235_ox": "Fuel Uranium LEU 235 Oxide", + "tag.fluid.neoforge.fuel_uranium_leu_235_za": "Fuel Uranium LEU 235 ZA", + "tag.fluid.neoforge.fuel_xenorium_xen_298": "Fuel Xenorium XEN 298", + "tag.fluid.neoforge.gelatin": "Gelatin", + "tag.fluid.neoforge.gems.boron_arsenide": "Boron Arsenide (Gems)", + "tag.fluid.neoforge.gems.boron_nitride": "Boron Nitride (Gems)", + "tag.fluid.neoforge.gems.carobbiite": "Carobbiite (Gems)", + "tag.fluid.neoforge.gems.fluorite": "Fluorite (Gems)", + "tag.fluid.neoforge.gems.rhodochrosite": "Rhodochrosite (Gems)", + "tag.fluid.neoforge.gems.silicon": "Silicon (Gems)", + "tag.fluid.neoforge.gems.villiaumite": "Villiaumite (Gems)", + "tag.fluid.neoforge.gems/boron_arsenide": "Boron Arsenide (Gems)", + "tag.fluid.neoforge.gems/boron_nitride": "Boron Nitride (Gems)", + "tag.fluid.neoforge.gems/carobbiite": "Carobbiite (Gems)", + "tag.fluid.neoforge.gems/fluorite": "Fluorite (Gems)", + "tag.fluid.neoforge.gems/rhodochrosite": "Rhodochrosite (Gems)", + "tag.fluid.neoforge.gems/silicon": "Silicon (Gems)", + "tag.fluid.neoforge.gems/villiaumite": "Villiaumite (Gems)", + "tag.fluid.neoforge.glowstone": "Glowstone", + "tag.fluid.neoforge.gold": "Gold", + "tag.fluid.neoforge.gold_clean_slurry": "Gold Clean Slurry", + "tag.fluid.neoforge.gold_slurry": "Gold Slurry", + "tag.fluid.neoforge.hard_carbon": "Hard Carbon", + "tag.fluid.neoforge.heavy_water": "Heavy Water", + "tag.fluid.neoforge.helium": "Helium", + "tag.fluid.neoforge.helium_3": "Helium 3", + "tag.fluid.neoforge.high_pressure_steam": "High Pressure Steam", + "tag.fluid.neoforge.hsla_steel": "Hsla Steel", + "tag.fluid.neoforge.hydrated_gelatin": "Hydrated Gelatin", + "tag.fluid.neoforge.hydrochloric_acid": "Hydrochloric Acid", + "tag.fluid.neoforge.hydrofluoric_acid": "Hydrofluoric Acid", + "tag.fluid.neoforge.hydrogen": "Hydrogen", + "tag.fluid.neoforge.hydrogen_chloride": "Hydrogen Chloride", + "tag.fluid.neoforge.ice": "Ice", + "tag.fluid.neoforge.ingots.aluminium": "Aluminium (Ingots)", + "tag.fluid.neoforge.ingots.aluminum": "Aluminum (Ingots)", + "tag.fluid.neoforge.ingots.beryllium": "Beryllium (Ingots)", + "tag.fluid.neoforge.ingots.boron": "Boron (Ingots)", + "tag.fluid.neoforge.ingots.bronze": "Bronze (Ingots)", + "tag.fluid.neoforge.ingots.calcium": "Calcium (Ingots)", + "tag.fluid.neoforge.ingots.carbon_manganese": "Carbon Manganese (Ingots)", + "tag.fluid.neoforge.ingots.chromium": "Chromium (Ingots)", + "tag.fluid.neoforge.ingots.cobalt": "Cobalt (Ingots)", + "tag.fluid.neoforge.ingots.electrum": "Electrum (Ingots)", + "tag.fluid.neoforge.ingots.extreme": "Extreme (Ingots)", + "tag.fluid.neoforge.ingots.ferroboron": "Ferroboron (Ingots)", + "tag.fluid.neoforge.ingots.graphite": "Graphite (Ingots)", + "tag.fluid.neoforge.ingots.hafnium": "Hafnium (Ingots)", + "tag.fluid.neoforge.ingots.hard_carbon": "Hard Carbon (Ingots)", + "tag.fluid.neoforge.ingots.hsla_steel": "Hsla Steel (Ingots)", + "tag.fluid.neoforge.ingots.iridium": "Iridium (Ingots)", + "tag.fluid.neoforge.ingots.lead": "Lead (Ingots)", + "tag.fluid.neoforge.ingots.lead_platinum": "Lead Platinum (Ingots)", + "tag.fluid.neoforge.ingots.lithium": "Lithium (Ingots)", + "tag.fluid.neoforge.ingots.lithium_manganese_dioxide": "Lithium Manganese Dioxide (Ingots)", + "tag.fluid.neoforge.ingots.magnesium": "Magnesium (Ingots)", + "tag.fluid.neoforge.ingots.magnesium_diboride": "Magnesium Diboride (Ingots)", + "tag.fluid.neoforge.ingots.manganese": "Manganese (Ingots)", + "tag.fluid.neoforge.ingots.manganese_dioxide": "Manganese Dioxide (Ingots)", + "tag.fluid.neoforge.ingots.manganese_oxide": "Manganese Oxide (Ingots)", + "tag.fluid.neoforge.ingots.neutronium": "Neutronium (Ingots)", + "tag.fluid.neoforge.ingots.nichrome": "Nichrome (Ingots)", + "tag.fluid.neoforge.ingots.niobium": "Niobium (Ingots)", + "tag.fluid.neoforge.ingots.niobium_tin": "Niobium Tin (Ingots)", + "tag.fluid.neoforge.ingots.niobium_titanium": "Niobium Titanium (Ingots)", + "tag.fluid.neoforge.ingots.osmiridium": "Osmiridium (Ingots)", + "tag.fluid.neoforge.ingots.osmium": "Osmium (Ingots)", + "tag.fluid.neoforge.ingots.palladium": "Palladium (Ingots)", + "tag.fluid.neoforge.ingots.platinum": "Platinum (Ingots)", + "tag.fluid.neoforge.ingots.potassium": "Potassium (Ingots)", + "tag.fluid.neoforge.ingots.pyrolitic_carbon": "Pyrolitic Carbon (Ingots)", + "tag.fluid.neoforge.ingots.shibuichi": "Shibuichi (Ingots)", + "tag.fluid.neoforge.ingots.sic_sic_cmc": "Sic Sic Cmc (Ingots)", + "tag.fluid.neoforge.ingots.silicon_carbide": "Silicon Carbide (Ingots)", + "tag.fluid.neoforge.ingots.silver": "Silver (Ingots)", + "tag.fluid.neoforge.ingots.sodium": "Sodium (Ingots)", + "tag.fluid.neoforge.ingots.stainless_steel": "Stainless Steel (Ingots)", + "tag.fluid.neoforge.ingots.steel": "Steel (Ingots)", + "tag.fluid.neoforge.ingots.strontium": "Strontium (Ingots)", + "tag.fluid.neoforge.ingots.super_alloy": "Super Alloy (Ingots)", + "tag.fluid.neoforge.ingots.thermoconducting": "Thermoconducting (Ingots)", + "tag.fluid.neoforge.ingots.thorium": "Thorium (Ingots)", + "tag.fluid.neoforge.ingots.tin": "Tin (Ingots)", + "tag.fluid.neoforge.ingots.tin_silver": "Tin Silver (Ingots)", + "tag.fluid.neoforge.ingots.titanium": "Titanium (Ingots)", + "tag.fluid.neoforge.ingots.tough_alloy": "Tough Alloy (Ingots)", + "tag.fluid.neoforge.ingots.tungsten": "Tungsten (Ingots)", + "tag.fluid.neoforge.ingots.tungsten_carbide": "Tungsten Carbide (Ingots)", + "tag.fluid.neoforge.ingots.uranium": "Uranium (Ingots)", + "tag.fluid.neoforge.ingots.yttrium": "Yttrium (Ingots)", + "tag.fluid.neoforge.ingots.zinc": "Zinc (Ingots)", + "tag.fluid.neoforge.ingots.zircaloy": "Zircaloy (Ingots)", + "tag.fluid.neoforge.ingots.zirconium": "Zirconium (Ingots)", + "tag.fluid.neoforge.ingots.zirconium_molybdenum": "Zirconium Molybdenum (Ingots)", + "tag.fluid.neoforge.ingots/aluminium": "Aluminium (Ingots)", + "tag.fluid.neoforge.ingots/aluminum": "Aluminum (Ingots)", + "tag.fluid.neoforge.ingots/beryllium": "Beryllium (Ingots)", + "tag.fluid.neoforge.ingots/boron": "Boron (Ingots)", + "tag.fluid.neoforge.ingots/bronze": "Bronze (Ingots)", + "tag.fluid.neoforge.ingots/calcium": "Calcium (Ingots)", + "tag.fluid.neoforge.ingots/carbon_manganese": "Carbon Manganese (Ingots)", + "tag.fluid.neoforge.ingots/chromium": "Chromium (Ingots)", + "tag.fluid.neoforge.ingots/cobalt": "Cobalt (Ingots)", + "tag.fluid.neoforge.ingots/electrum": "Electrum (Ingots)", + "tag.fluid.neoforge.ingots/extreme": "Extreme (Ingots)", + "tag.fluid.neoforge.ingots/ferroboron": "Ferroboron (Ingots)", + "tag.fluid.neoforge.ingots/graphite": "Graphite (Ingots)", + "tag.fluid.neoforge.ingots/hafnium": "Hafnium (Ingots)", + "tag.fluid.neoforge.ingots/hard_carbon": "Hard Carbon (Ingots)", + "tag.fluid.neoforge.ingots/hsla_steel": "Hsla Steel (Ingots)", + "tag.fluid.neoforge.ingots/iridium": "Iridium (Ingots)", + "tag.fluid.neoforge.ingots/lead": "Lead (Ingots)", + "tag.fluid.neoforge.ingots/lead_platinum": "Lead Platinum (Ingots)", + "tag.fluid.neoforge.ingots/lithium": "Lithium (Ingots)", + "tag.fluid.neoforge.ingots/lithium_manganese_dioxide": "Lithium Manganese Dioxide (Ingots)", + "tag.fluid.neoforge.ingots/magnesium": "Magnesium (Ingots)", + "tag.fluid.neoforge.ingots/magnesium_diboride": "Magnesium Diboride (Ingots)", + "tag.fluid.neoforge.ingots/manganese": "Manganese (Ingots)", + "tag.fluid.neoforge.ingots/manganese_dioxide": "Manganese Dioxide (Ingots)", + "tag.fluid.neoforge.ingots/manganese_oxide": "Manganese Oxide (Ingots)", + "tag.fluid.neoforge.ingots/neutronium": "Neutronium (Ingots)", + "tag.fluid.neoforge.ingots/nichrome": "Nichrome (Ingots)", + "tag.fluid.neoforge.ingots/niobium": "Niobium (Ingots)", + "tag.fluid.neoforge.ingots/niobium_tin": "Niobium Tin (Ingots)", + "tag.fluid.neoforge.ingots/niobium_titanium": "Niobium Titanium (Ingots)", + "tag.fluid.neoforge.ingots/osmiridium": "Osmiridium (Ingots)", + "tag.fluid.neoforge.ingots/osmium": "Osmium (Ingots)", + "tag.fluid.neoforge.ingots/palladium": "Palladium (Ingots)", + "tag.fluid.neoforge.ingots/platinum": "Platinum (Ingots)", + "tag.fluid.neoforge.ingots/potassium": "Potassium (Ingots)", + "tag.fluid.neoforge.ingots/pyrolitic_carbon": "Pyrolitic Carbon (Ingots)", + "tag.fluid.neoforge.ingots/shibuichi": "Shibuichi (Ingots)", + "tag.fluid.neoforge.ingots/sic_sic_cmc": "Sic Sic Cmc (Ingots)", + "tag.fluid.neoforge.ingots/silicon_carbide": "Silicon Carbide (Ingots)", + "tag.fluid.neoforge.ingots/silver": "Silver (Ingots)", + "tag.fluid.neoforge.ingots/sodium": "Sodium (Ingots)", + "tag.fluid.neoforge.ingots/stainless_steel": "Stainless Steel (Ingots)", + "tag.fluid.neoforge.ingots/steel": "Steel (Ingots)", + "tag.fluid.neoforge.ingots/strontium": "Strontium (Ingots)", + "tag.fluid.neoforge.ingots/super_alloy": "Super Alloy (Ingots)", + "tag.fluid.neoforge.ingots/thermoconducting": "Thermoconducting (Ingots)", + "tag.fluid.neoforge.ingots/thorium": "Thorium (Ingots)", + "tag.fluid.neoforge.ingots/tin": "Tin (Ingots)", + "tag.fluid.neoforge.ingots/tin_silver": "Tin Silver (Ingots)", + "tag.fluid.neoforge.ingots/titanium": "Titanium (Ingots)", + "tag.fluid.neoforge.ingots/tough_alloy": "Tough Alloy (Ingots)", + "tag.fluid.neoforge.ingots/tungsten": "Tungsten (Ingots)", + "tag.fluid.neoforge.ingots/tungsten_carbide": "Tungsten Carbide (Ingots)", + "tag.fluid.neoforge.ingots/uranium": "Uranium (Ingots)", + "tag.fluid.neoforge.ingots/yttrium": "Yttrium (Ingots)", + "tag.fluid.neoforge.ingots/zinc": "Zinc (Ingots)", + "tag.fluid.neoforge.ingots/zircaloy": "Zircaloy (Ingots)", + "tag.fluid.neoforge.ingots/zirconium": "Zirconium (Ingots)", + "tag.fluid.neoforge.ingots/zirconium_molybdenum": "Zirconium Molybdenum (Ingots)", + "tag.fluid.neoforge.iridium_192": "Iridium 192", + "tag.fluid.neoforge.iron": "Iron", + "tag.fluid.neoforge.iron_clean_slurry": "Iron Clean Slurry", + "tag.fluid.neoforge.iron_slurry": "Iron Slurry", + "tag.fluid.neoforge.irradiated_borax_solution": "Irradiated Borax Solution", + "tag.fluid.neoforge.irradiated_boron": "Irradiated Boron", + "tag.fluid.neoforge.irradiated_lithium": "Irradiated Lithium", + "tag.fluid.neoforge.irradiated_sodium": "Irradiated Sodium", + "tag.fluid.neoforge.lapis": "Lapis", + "tag.fluid.neoforge.lead": "Lead", + "tag.fluid.neoforge.lead_clean_slurry": "Lead Clean Slurry", + "tag.fluid.neoforge.lead_platinum": "Lead Platinum", + "tag.fluid.neoforge.lead_slurry": "Lead Slurry", + "tag.fluid.neoforge.liquid_helium": "Liquid Helium", + "tag.fluid.neoforge.liquid_hydrogen": "Liquid Hydrogen", + "tag.fluid.neoforge.liquid_nitrogen": "Liquid Nitrogen", + "tag.fluid.neoforge.liquid_oxygen": "Liquid Oxygen", + "tag.fluid.neoforge.lithium": "Lithium", + "tag.fluid.neoforge.lithium.6": "Lithium 6", + "tag.fluid.neoforge.lithium.6_ni": "Lithium 6 Nitride", + "tag.fluid.neoforge.lithium.6_ox": "Lithium 6 Oxide", + "tag.fluid.neoforge.lithium.6_za": "Lithium 6 ZA", + "tag.fluid.neoforge.lithium.7": "Lithium 7", + "tag.fluid.neoforge.lithium.7_ni": "Lithium 7 Nitride", + "tag.fluid.neoforge.lithium.7_ox": "Lithium 7 Oxide", + "tag.fluid.neoforge.lithium.7_za": "Lithium 7 ZA", + "tag.fluid.neoforge.lithium/6": "Lithium 6", + "tag.fluid.neoforge.lithium/6_ni": "Lithium 6 Nitride", + "tag.fluid.neoforge.lithium/6_ox": "Lithium 6 Oxide", + "tag.fluid.neoforge.lithium/6_za": "Lithium 6 ZA", + "tag.fluid.neoforge.lithium/7": "Lithium 7", + "tag.fluid.neoforge.lithium/7_ni": "Lithium 7 Nitride", + "tag.fluid.neoforge.lithium/7_ox": "Lithium 7 Oxide", + "tag.fluid.neoforge.lithium/7_za": "Lithium 7 ZA", + "tag.fluid.neoforge.lithium_clean_slurry": "Lithium Clean Slurry", + "tag.fluid.neoforge.lithium_fluoride": "Lithium Fluoride", + "tag.fluid.neoforge.lithium_manganese_dioxide": "Lithium Manganese Dioxide", + "tag.fluid.neoforge.lithium_slurry": "Lithium Slurry", + "tag.fluid.neoforge.low_pressure_steam": "Low Pressure Steam", + "tag.fluid.neoforge.low_quality_steam": "Low Quality Steam", + "tag.fluid.neoforge.magnesium": "Magnesium", + "tag.fluid.neoforge.magnesium_24": "Magnesium 24", + "tag.fluid.neoforge.magnesium_26": "Magnesium 26", + "tag.fluid.neoforge.magnesium_clean_slurry": "Magnesium Clean Slurry", + "tag.fluid.neoforge.magnesium_diboride": "Magnesium Diboride", + "tag.fluid.neoforge.magnesium_slurry": "Magnesium Slurry", + "tag.fluid.neoforge.manganese": "Manganese", + "tag.fluid.neoforge.manganese_dioxide": "Manganese Dioxide", + "tag.fluid.neoforge.manganese_oxide": "Manganese Oxide", + "tag.fluid.neoforge.marshmallow": "Marshmallow", + "tag.fluid.neoforge.methanol": "Methanol", + "tag.fluid.neoforge.milk_chocolate": "Milk Chocolate", + "tag.fluid.neoforge.molten_aluminium": "Molten Aluminium", + "tag.fluid.neoforge.molten_aluminum": "Molten Aluminum", + "tag.fluid.neoforge.molten_arsenic": "Molten Arsenic", + "tag.fluid.neoforge.molten_beryllium": "Molten Beryllium", + "tag.fluid.neoforge.molten_beryllium_fluoride": "Molten Beryllium Fluoride", + "tag.fluid.neoforge.molten_boron": "Molten Boron", + "tag.fluid.neoforge.molten_boron_arsenide": "Molten Boron Arsenide", + "tag.fluid.neoforge.molten_bronze": "Molten Bronze", + "tag.fluid.neoforge.molten_caesium_137": "Molten Caesium 137", + "tag.fluid.neoforge.molten_carbon_manganese": "Molten Carbon Manganese", + "tag.fluid.neoforge.molten_cobalt": "Molten Cobalt", + "tag.fluid.neoforge.molten_cocoa_butter": "Molten Cocoa Butter", + "tag.fluid.neoforge.molten_copper": "Molten Copper", + "tag.fluid.neoforge.molten_corium": "Molten Corium", + "tag.fluid.neoforge.molten_cryotheum": "Molten Cryotheum", + "tag.fluid.neoforge.molten_electrum": "Molten Electrum", + "tag.fluid.neoforge.molten_enderium": "Molten Enderium", + "tag.fluid.neoforge.molten_ethanol": "Molten Ethanol", + "tag.fluid.neoforge.molten_europium_155": "Molten Europium 155", + "tag.fluid.neoforge.molten_extreme": "Molten Extreme", + "tag.fluid.neoforge.molten_ferroboron": "Molten Ferroboron", + "tag.fluid.neoforge.molten_fissile_fuel": "Molten Fissile Fuel", + "tag.fluid.neoforge.molten_gelatin": "Molten Gelatin", + "tag.fluid.neoforge.molten_glowstone": "Molten Glowstone", + "tag.fluid.neoforge.molten_gold": "Molten Gold", + "tag.fluid.neoforge.molten_hard_carbon": "Molten Hard Carbon", + "tag.fluid.neoforge.molten_hsla_steel": "Molten Hsla Steel", + "tag.fluid.neoforge.molten_hydrated_gelatin": "Molten Hydrated Gelatin", + "tag.fluid.neoforge.molten_hydrogen_chloride": "Molten Hydrogen Chloride", + "tag.fluid.neoforge.molten_ice": "Molten Ice", + "tag.fluid.neoforge.molten_iron": "Molten Iron", + "tag.fluid.neoforge.molten_irradiated_boron": "Molten Irradiated Boron", + "tag.fluid.neoforge.molten_irradiated_lithium": "Molten Irradiated Lithium", + "tag.fluid.neoforge.molten_irradiated_sodium": "Molten Irradiated Sodium", + "tag.fluid.neoforge.molten_lapis": "Molten Lapis", + "tag.fluid.neoforge.molten_lead": "Molten Lead", + "tag.fluid.neoforge.molten_lead_platinum": "Molten Lead Platinum", + "tag.fluid.neoforge.molten_lithium": "Molten Lithium", + "tag.fluid.neoforge.molten_lithium_fluoride": "Molten Lithium Fluoride", + "tag.fluid.neoforge.molten_lithium_manganese_dioxide": "Molten Lithium Manganese Dioxide", + "tag.fluid.neoforge.molten_magnesium": "Molten Magnesium", + "tag.fluid.neoforge.molten_magnesium_diboride": "Molten Magnesium Diboride", + "tag.fluid.neoforge.molten_manganese": "Molten Manganese", + "tag.fluid.neoforge.molten_manganese_dioxide": "Molten Manganese Dioxide", + "tag.fluid.neoforge.molten_manganese_oxide": "Molten Manganese Oxide", + "tag.fluid.neoforge.molten_marshmallow": "Molten Marshmallow", + "tag.fluid.neoforge.molten_methanol": "Molten Methanol", + "tag.fluid.neoforge.molten_molybdenum": "Molten Molybdenum", + "tag.fluid.neoforge.molten_nuclear_waste": "Molten Nuclear Waste", + "tag.fluid.neoforge.molten_obsidian": "Molten Obsidian", + "tag.fluid.neoforge.molten_palladium": "Molten Palladium", + "tag.fluid.neoforge.molten_platinum": "Molten Platinum", + "tag.fluid.neoforge.molten_polonium": "Molten Polonium", + "tag.fluid.neoforge.molten_potassium_hydroxide": "Molten Potassium Hydroxide", + "tag.fluid.neoforge.molten_potassium_iodide": "Molten Potassium Iodide", + "tag.fluid.neoforge.molten_promethium_147": "Molten Promethium 147", + "tag.fluid.neoforge.molten_purpur": "Molten Purpur", + "tag.fluid.neoforge.molten_radaway": "Molten Radaway", + "tag.fluid.neoforge.molten_radaway_slow": "Molten Radaway Slow", + "tag.fluid.neoforge.molten_redstone": "Molten Redstone", + "tag.fluid.neoforge.molten_redstone_ethanol": "Molten Redstone Ethanol", + "tag.fluid.neoforge.molten_ruthenium_106": "Molten Ruthenium 106", + "tag.fluid.neoforge.molten_shibuichi": "Molten Shibuichi", + "tag.fluid.neoforge.molten_sic_sic_cmc": "Molten Sic Sic Cmc", + "tag.fluid.neoforge.molten_silicon_carbide": "Molten Silicon Carbide", + "tag.fluid.neoforge.molten_silver": "Molten Silver", + "tag.fluid.neoforge.molten_slurry_ice": "Molten Slurry Ice", + "tag.fluid.neoforge.molten_sodium": "Molten Sodium", + "tag.fluid.neoforge.molten_sodium_hydroxide": "Molten Sodium Hydroxide", + "tag.fluid.neoforge.molten_spent_nuclear_waste": "Molten Spent Nuclear Waste", + "tag.fluid.neoforge.molten_steel": "Molten Steel", + "tag.fluid.neoforge.molten_strontium_90": "Molten Strontium 90", + "tag.fluid.neoforge.molten_sugar": "Molten Sugar", + "tag.fluid.neoforge.molten_sulfur": "Molten Sulfur", + "tag.fluid.neoforge.molten_thermoconducting": "Molten Thermoconducting", + "tag.fluid.neoforge.molten_thorium": "Molten Thorium", + "tag.fluid.neoforge.molten_tin": "Molten Tin", + "tag.fluid.neoforge.molten_tin_silver": "Molten Tin Silver", + "tag.fluid.neoforge.molten_tough_alloy": "Molten Tough Alloy", + "tag.fluid.neoforge.molten_uranium": "Molten Uranium", + "tag.fluid.neoforge.molten_uranium_oxide": "Molten Uranium Oxide", + "tag.fluid.neoforge.molten_zinc": "Molten Zinc", + "tag.fluid.neoforge.molten_zircaloy": "Molten Zircaloy", + "tag.fluid.neoforge.molten_zirconium": "Molten Zirconium", + "tag.fluid.neoforge.molten_zirconium_molybdenum": "Molten Zirconium Molybdenum", + "tag.fluid.neoforge.molybdenum": "Molybdenum", + "tag.fluid.neoforge.neon": "Neon", + "tag.fluid.neoforge.neptunium.236": "Neptunium 236", + "tag.fluid.neoforge.neptunium.236_ni": "Neptunium 236 Nitride", + "tag.fluid.neoforge.neptunium.236_ox": "Neptunium 236 Oxide", + "tag.fluid.neoforge.neptunium.236_za": "Neptunium 236 ZA", + "tag.fluid.neoforge.neptunium.237": "Neptunium 237", + "tag.fluid.neoforge.neptunium.237_ni": "Neptunium 237 Nitride", + "tag.fluid.neoforge.neptunium.237_ox": "Neptunium 237 Oxide", + "tag.fluid.neoforge.neptunium.237_za": "Neptunium 237 ZA", + "tag.fluid.neoforge.neptunium/236": "Neptunium 236", + "tag.fluid.neoforge.neptunium/236_ni": "Neptunium 236 Nitride", + "tag.fluid.neoforge.neptunium/236_ox": "Neptunium 236 Oxide", + "tag.fluid.neoforge.neptunium/236_za": "Neptunium 236 ZA", + "tag.fluid.neoforge.neptunium/237": "Neptunium 237", + "tag.fluid.neoforge.neptunium/237_ni": "Neptunium 237 Nitride", + "tag.fluid.neoforge.neptunium/237_ox": "Neptunium 237 Oxide", + "tag.fluid.neoforge.neptunium/237_za": "Neptunium 237 ZA", + "tag.fluid.neoforge.nickel_clean_slurry": "Nickel Clean Slurry", + "tag.fluid.neoforge.nickel_slurry": "Nickel Slurry", + "tag.fluid.neoforge.nitric_acid": "Nitric Acid", + "tag.fluid.neoforge.nitric_oxide": "Nitric Oxide", + "tag.fluid.neoforge.nitrogen": "Nitrogen", + "tag.fluid.neoforge.nitrogen_dioxide": "Nitrogen Dioxide", + "tag.fluid.neoforge.nuclear_waste": "Nuclear Waste", + "tag.fluid.neoforge.nuggets.aluminium": "Aluminium (Nuggets)", + "tag.fluid.neoforge.nuggets.aluminum": "Aluminum (Nuggets)", + "tag.fluid.neoforge.nuggets.beryllium": "Beryllium (Nuggets)", + "tag.fluid.neoforge.nuggets.boron": "Boron (Nuggets)", + "tag.fluid.neoforge.nuggets.bronze": "Bronze (Nuggets)", + "tag.fluid.neoforge.nuggets.cobalt": "Cobalt (Nuggets)", + "tag.fluid.neoforge.nuggets.electrum": "Electrum (Nuggets)", + "tag.fluid.neoforge.nuggets.lead": "Lead (Nuggets)", + "tag.fluid.neoforge.nuggets.lithium": "Lithium (Nuggets)", + "tag.fluid.neoforge.nuggets.magnesium": "Magnesium (Nuggets)", + "tag.fluid.neoforge.nuggets.platinum": "Platinum (Nuggets)", + "tag.fluid.neoforge.nuggets.silver": "Silver (Nuggets)", + "tag.fluid.neoforge.nuggets.steel": "Steel (Nuggets)", + "tag.fluid.neoforge.nuggets.thorium": "Thorium (Nuggets)", + "tag.fluid.neoforge.nuggets.tin": "Tin (Nuggets)", + "tag.fluid.neoforge.nuggets.uranium": "Uranium (Nuggets)", + "tag.fluid.neoforge.nuggets.zinc": "Zinc (Nuggets)", + "tag.fluid.neoforge.nuggets.zirconium": "Zirconium (Nuggets)", + "tag.fluid.neoforge.nuggets/aluminium": "Aluminium (Nuggets)", + "tag.fluid.neoforge.nuggets/aluminum": "Aluminum (Nuggets)", + "tag.fluid.neoforge.nuggets/beryllium": "Beryllium (Nuggets)", + "tag.fluid.neoforge.nuggets/boron": "Boron (Nuggets)", + "tag.fluid.neoforge.nuggets/bronze": "Bronze (Nuggets)", + "tag.fluid.neoforge.nuggets/cobalt": "Cobalt (Nuggets)", + "tag.fluid.neoforge.nuggets/electrum": "Electrum (Nuggets)", + "tag.fluid.neoforge.nuggets/lead": "Lead (Nuggets)", + "tag.fluid.neoforge.nuggets/lithium": "Lithium (Nuggets)", + "tag.fluid.neoforge.nuggets/magnesium": "Magnesium (Nuggets)", + "tag.fluid.neoforge.nuggets/platinum": "Platinum (Nuggets)", + "tag.fluid.neoforge.nuggets/silver": "Silver (Nuggets)", + "tag.fluid.neoforge.nuggets/steel": "Steel (Nuggets)", + "tag.fluid.neoforge.nuggets/thorium": "Thorium (Nuggets)", + "tag.fluid.neoforge.nuggets/tin": "Tin (Nuggets)", + "tag.fluid.neoforge.nuggets/uranium": "Uranium (Nuggets)", + "tag.fluid.neoforge.nuggets/zinc": "Zinc (Nuggets)", + "tag.fluid.neoforge.nuggets/zirconium": "Zirconium (Nuggets)", + "tag.fluid.neoforge.obsidian": "Obsidian", + "tag.fluid.neoforge.ores.boron": "Boron (Ores)", + "tag.fluid.neoforge.ores.cobalt": "Cobalt (Ores)", + "tag.fluid.neoforge.ores.lead": "Lead (Ores)", + "tag.fluid.neoforge.ores.lithium": "Lithium (Ores)", + "tag.fluid.neoforge.ores.magnesium": "Magnesium (Ores)", + "tag.fluid.neoforge.ores.platinum": "Platinum (Ores)", + "tag.fluid.neoforge.ores.silver": "Silver (Ores)", + "tag.fluid.neoforge.ores.thorium": "Thorium (Ores)", + "tag.fluid.neoforge.ores.tin": "Tin (Ores)", + "tag.fluid.neoforge.ores.uranium": "Uranium (Ores)", + "tag.fluid.neoforge.ores.zinc": "Zinc (Ores)", + "tag.fluid.neoforge.ores/boron": "Boron (Ores)", + "tag.fluid.neoforge.ores/cobalt": "Cobalt (Ores)", + "tag.fluid.neoforge.ores/lead": "Lead (Ores)", + "tag.fluid.neoforge.ores/lithium": "Lithium (Ores)", + "tag.fluid.neoforge.ores/magnesium": "Magnesium (Ores)", + "tag.fluid.neoforge.ores/platinum": "Platinum (Ores)", + "tag.fluid.neoforge.ores/silver": "Silver (Ores)", + "tag.fluid.neoforge.ores/thorium": "Thorium (Ores)", + "tag.fluid.neoforge.ores/tin": "Tin (Ores)", + "tag.fluid.neoforge.ores/uranium": "Uranium (Ores)", + "tag.fluid.neoforge.ores/zinc": "Zinc (Ores)", + "tag.fluid.neoforge.oxygen": "Oxygen", + "tag.fluid.neoforge.oxygen_difluoride": "Oxygen Difluoride", + "tag.fluid.neoforge.palladium": "Palladium", + "tag.fluid.neoforge.pasteurized_milk": "Pasteurized Milk", + "tag.fluid.neoforge.plates": "Plates", + "tag.fluid.neoforge.plates.aluminium": "Aluminium (Plates)", + "tag.fluid.neoforge.plates.aluminum": "Aluminum (Plates)", + "tag.fluid.neoforge.plates.beryllium": "Beryllium (Plates)", + "tag.fluid.neoforge.plates.boron": "Boron (Plates)", + "tag.fluid.neoforge.plates.bronze": "Bronze (Plates)", + "tag.fluid.neoforge.plates.cobalt": "Cobalt (Plates)", + "tag.fluid.neoforge.plates.copper": "Copper (Plates)", + "tag.fluid.neoforge.plates.electrum": "Electrum (Plates)", + "tag.fluid.neoforge.plates.extreme": "Extreme (Plates)", + "tag.fluid.neoforge.plates.ferroboron": "Ferroboron (Plates)", + "tag.fluid.neoforge.plates.graphite": "Graphite (Plates)", + "tag.fluid.neoforge.plates.hard_carbon": "Hard Carbon (Plates)", + "tag.fluid.neoforge.plates.hsla_steel": "Hsla Steel (Plates)", + "tag.fluid.neoforge.plates.iron": "Iron (Plates)", + "tag.fluid.neoforge.plates.lead": "Lead (Plates)", + "tag.fluid.neoforge.plates.lithium": "Lithium (Plates)", + "tag.fluid.neoforge.plates.lithium_manganese_dioxide": "Lithium Manganese Dioxide (Plates)", + "tag.fluid.neoforge.plates.magnesium": "Magnesium (Plates)", + "tag.fluid.neoforge.plates.manganese": "Manganese (Plates)", + "tag.fluid.neoforge.plates.netherite": "Netherite (Plates)", + "tag.fluid.neoforge.plates.palladium": "Palladium (Plates)", + "tag.fluid.neoforge.plates.platinum": "Platinum (Plates)", + "tag.fluid.neoforge.plates.sic_sic_cmc": "Sic Sic Cmc (Plates)", + "tag.fluid.neoforge.plates.silver": "Silver (Plates)", + "tag.fluid.neoforge.plates.steel": "Steel (Plates)", + "tag.fluid.neoforge.plates.thermoconducting": "Thermoconducting (Plates)", + "tag.fluid.neoforge.plates.thorium": "Thorium (Plates)", + "tag.fluid.neoforge.plates.tin": "Tin (Plates)", + "tag.fluid.neoforge.plates.tough_alloy": "Tough Alloy (Plates)", + "tag.fluid.neoforge.plates.uranium": "Uranium (Plates)", + "tag.fluid.neoforge.plates.zinc": "Zinc (Plates)", + "tag.fluid.neoforge.plates.zirconium": "Zirconium (Plates)", + "tag.fluid.neoforge.plates/aluminium": "Aluminium (Plates)", + "tag.fluid.neoforge.plates/aluminum": "Aluminum (Plates)", + "tag.fluid.neoforge.plates/beryllium": "Beryllium (Plates)", + "tag.fluid.neoforge.plates/boron": "Boron (Plates)", + "tag.fluid.neoforge.plates/bronze": "Bronze (Plates)", + "tag.fluid.neoforge.plates/cobalt": "Cobalt (Plates)", + "tag.fluid.neoforge.plates/copper": "Copper (Plates)", + "tag.fluid.neoforge.plates/electrum": "Electrum (Plates)", + "tag.fluid.neoforge.plates/extreme": "Extreme (Plates)", + "tag.fluid.neoforge.plates/ferroboron": "Ferroboron (Plates)", + "tag.fluid.neoforge.plates/graphite": "Graphite (Plates)", + "tag.fluid.neoforge.plates/hard_carbon": "Hard Carbon (Plates)", + "tag.fluid.neoforge.plates/hsla_steel": "Hsla Steel (Plates)", + "tag.fluid.neoforge.plates/iron": "Iron (Plates)", + "tag.fluid.neoforge.plates/lead": "Lead (Plates)", + "tag.fluid.neoforge.plates/lithium": "Lithium (Plates)", + "tag.fluid.neoforge.plates/lithium_manganese_dioxide": "Lithium Manganese Dioxide (Plates)", + "tag.fluid.neoforge.plates/magnesium": "Magnesium (Plates)", + "tag.fluid.neoforge.plates/manganese": "Manganese (Plates)", + "tag.fluid.neoforge.plates/netherite": "Netherite (Plates)", + "tag.fluid.neoforge.plates/palladium": "Palladium (Plates)", + "tag.fluid.neoforge.plates/platinum": "Platinum (Plates)", + "tag.fluid.neoforge.plates/sic_sic_cmc": "Sic Sic Cmc (Plates)", + "tag.fluid.neoforge.plates/silver": "Silver (Plates)", + "tag.fluid.neoforge.plates/steel": "Steel (Plates)", + "tag.fluid.neoforge.plates/thermoconducting": "Thermoconducting (Plates)", + "tag.fluid.neoforge.plates/thorium": "Thorium (Plates)", + "tag.fluid.neoforge.plates/tin": "Tin (Plates)", + "tag.fluid.neoforge.plates/tough_alloy": "Tough Alloy (Plates)", + "tag.fluid.neoforge.plates/uranium": "Uranium (Plates)", + "tag.fluid.neoforge.plates/zinc": "Zinc (Plates)", + "tag.fluid.neoforge.plates/zirconium": "Zirconium (Plates)", + "tag.fluid.neoforge.platinum": "Platinum", + "tag.fluid.neoforge.platinum_clean_slurry": "Platinum Clean Slurry", + "tag.fluid.neoforge.platinum_slurry": "Platinum Slurry", + "tag.fluid.neoforge.plutonium.238": "Plutonium 238", + "tag.fluid.neoforge.plutonium.238_ni": "Plutonium 238 Nitride", + "tag.fluid.neoforge.plutonium.238_ox": "Plutonium 238 Oxide", + "tag.fluid.neoforge.plutonium.238_za": "Plutonium 238 ZA", + "tag.fluid.neoforge.plutonium.239": "Plutonium 239", + "tag.fluid.neoforge.plutonium.239_ni": "Plutonium 239 Nitride", + "tag.fluid.neoforge.plutonium.239_ox": "Plutonium 239 Oxide", + "tag.fluid.neoforge.plutonium.239_za": "Plutonium 239 ZA", + "tag.fluid.neoforge.plutonium.241": "Plutonium 241", + "tag.fluid.neoforge.plutonium.241_ni": "Plutonium 241 Nitride", + "tag.fluid.neoforge.plutonium.241_ox": "Plutonium 241 Oxide", + "tag.fluid.neoforge.plutonium.241_za": "Plutonium 241 ZA", + "tag.fluid.neoforge.plutonium.242": "Plutonium 242", + "tag.fluid.neoforge.plutonium.242_ni": "Plutonium 242 Nitride", + "tag.fluid.neoforge.plutonium.242_ox": "Plutonium 242 Oxide", + "tag.fluid.neoforge.plutonium.242_za": "Plutonium 242 ZA", + "tag.fluid.neoforge.plutonium/238": "Plutonium 238", + "tag.fluid.neoforge.plutonium/238_ni": "Plutonium 238 Nitride", + "tag.fluid.neoforge.plutonium/238_ox": "Plutonium 238 Oxide", + "tag.fluid.neoforge.plutonium/238_za": "Plutonium 238 ZA", + "tag.fluid.neoforge.plutonium/239": "Plutonium 239", + "tag.fluid.neoforge.plutonium/239_ni": "Plutonium 239 Nitride", + "tag.fluid.neoforge.plutonium/239_ox": "Plutonium 239 Oxide", + "tag.fluid.neoforge.plutonium/239_za": "Plutonium 239 ZA", + "tag.fluid.neoforge.plutonium/241": "Plutonium 241", + "tag.fluid.neoforge.plutonium/241_ni": "Plutonium 241 Nitride", + "tag.fluid.neoforge.plutonium/241_ox": "Plutonium 241 Oxide", + "tag.fluid.neoforge.plutonium/241_za": "Plutonium 241 ZA", + "tag.fluid.neoforge.plutonium/242": "Plutonium 242", + "tag.fluid.neoforge.plutonium/242_ni": "Plutonium 242 Nitride", + "tag.fluid.neoforge.plutonium/242_ox": "Plutonium 242 Oxide", + "tag.fluid.neoforge.plutonium/242_za": "Plutonium 242 ZA", + "tag.fluid.neoforge.polonium": "Polonium", + "tag.fluid.neoforge.potassium_fluoride_solution": "Potassium Fluoride Solution", + "tag.fluid.neoforge.potassium_hydroxide": "Potassium Hydroxide", + "tag.fluid.neoforge.potassium_hydroxide_solution": "Potassium Hydroxide Solution", + "tag.fluid.neoforge.potassium_iodide": "Potassium Iodide", + "tag.fluid.neoforge.promethium_147": "Promethium 147", + "tag.fluid.neoforge.purpur": "Purpur", + "tag.fluid.neoforge.quantite": "Quantite", + "tag.fluid.neoforge.radaway": "Radaway", + "tag.fluid.neoforge.radaway_slow": "Radaway Slow", + "tag.fluid.neoforge.radon": "Radon", + "tag.fluid.neoforge.raw_materials.boron": "Boron (Raw Materials)", + "tag.fluid.neoforge.raw_materials.cobalt": "Cobalt (Raw Materials)", + "tag.fluid.neoforge.raw_materials.lead": "Lead (Raw Materials)", + "tag.fluid.neoforge.raw_materials.lithium": "Lithium (Raw Materials)", + "tag.fluid.neoforge.raw_materials.magnesium": "Magnesium (Raw Materials)", + "tag.fluid.neoforge.raw_materials.platinum": "Platinum (Raw Materials)", + "tag.fluid.neoforge.raw_materials.silver": "Silver (Raw Materials)", + "tag.fluid.neoforge.raw_materials.thorium": "Thorium (Raw Materials)", + "tag.fluid.neoforge.raw_materials.tin": "Tin (Raw Materials)", + "tag.fluid.neoforge.raw_materials.uranium": "Uranium (Raw Materials)", + "tag.fluid.neoforge.raw_materials.zinc": "Zinc (Raw Materials)", + "tag.fluid.neoforge.raw_materials/boron": "Boron (Raw Materials)", + "tag.fluid.neoforge.raw_materials/cobalt": "Cobalt (Raw Materials)", + "tag.fluid.neoforge.raw_materials/lead": "Lead (Raw Materials)", + "tag.fluid.neoforge.raw_materials/lithium": "Lithium (Raw Materials)", + "tag.fluid.neoforge.raw_materials/magnesium": "Magnesium (Raw Materials)", + "tag.fluid.neoforge.raw_materials/platinum": "Platinum (Raw Materials)", + "tag.fluid.neoforge.raw_materials/silver": "Silver (Raw Materials)", + "tag.fluid.neoforge.raw_materials/thorium": "Thorium (Raw Materials)", + "tag.fluid.neoforge.raw_materials/tin": "Tin (Raw Materials)", + "tag.fluid.neoforge.raw_materials/uranium": "Uranium (Raw Materials)", + "tag.fluid.neoforge.raw_materials/zinc": "Zinc (Raw Materials)", + "tag.fluid.neoforge.redstone": "Redstone", + "tag.fluid.neoforge.redstone_ethanol": "Redstone Ethanol", + "tag.fluid.neoforge.ruthenium_106": "Ruthenium 106", + "tag.fluid.neoforge.shibuichi": "Shibuichi", + "tag.fluid.neoforge.sic_sic_cmc": "Sic Sic Cmc", + "tag.fluid.neoforge.silicon_carbide": "Silicon Carbide", + "tag.fluid.neoforge.silver": "Silver", + "tag.fluid.neoforge.silver_clean_slurry": "Silver Clean Slurry", + "tag.fluid.neoforge.silver_slurry": "Silver Slurry", + "tag.fluid.neoforge.slurry_ice": "Slurry Ice", + "tag.fluid.neoforge.sodium": "Sodium", + "tag.fluid.neoforge.sodium_22": "Sodium 22", + "tag.fluid.neoforge.sodium_fluoride_solution": "Sodium Fluoride Solution", + "tag.fluid.neoforge.sodium_hydroxide": "Sodium Hydroxide", + "tag.fluid.neoforge.sodium_hydroxide_solution": "Sodium Hydroxide Solution", + "tag.fluid.neoforge.spent_nuclear_waste": "Spent Nuclear Waste", + "tag.fluid.neoforge.steam": "Steam", + "tag.fluid.neoforge.steel": "Steel", + "tag.fluid.neoforge.strontium_90": "Strontium 90", + "tag.fluid.neoforge.subliquid_matter": "Subliquid Matter", + "tag.fluid.neoforge.sugar": "Sugar", + "tag.fluid.neoforge.sulfur": "Sulfur", + "tag.fluid.neoforge.sulfur_dioxide": "Sulfur Dioxide", + "tag.fluid.neoforge.sulfur_trioxide": "Sulfur Trioxide", + "tag.fluid.neoforge.sulfuric_acid": "Sulfuric Acid", + "tag.fluid.neoforge.technical_water": "Technical Water", + "tag.fluid.neoforge.thermoconducting": "Thermoconducting", + "tag.fluid.neoforge.thorium": "Thorium", + "tag.fluid.neoforge.thorium.230": "Thorium 230", + "tag.fluid.neoforge.thorium.230_ni": "Thorium 230 Nitride", + "tag.fluid.neoforge.thorium.230_ox": "Thorium 230 Oxide", + "tag.fluid.neoforge.thorium.230_za": "Thorium 230 ZA", + "tag.fluid.neoforge.thorium.232": "Thorium 232", + "tag.fluid.neoforge.thorium.232_ni": "Thorium 232 Nitride", + "tag.fluid.neoforge.thorium.232_ox": "Thorium 232 Oxide", + "tag.fluid.neoforge.thorium.232_za": "Thorium 232 ZA", + "tag.fluid.neoforge.thorium/230": "Thorium 230", + "tag.fluid.neoforge.thorium/230_ni": "Thorium 230 Nitride", + "tag.fluid.neoforge.thorium/230_ox": "Thorium 230 Oxide", + "tag.fluid.neoforge.thorium/230_za": "Thorium 230 ZA", + "tag.fluid.neoforge.thorium/232": "Thorium 232", + "tag.fluid.neoforge.thorium/232_ni": "Thorium 232 Nitride", + "tag.fluid.neoforge.thorium/232_ox": "Thorium 232 Oxide", + "tag.fluid.neoforge.thorium/232_za": "Thorium 232 ZA", + "tag.fluid.neoforge.thorium_clean_slurry": "Thorium Clean Slurry", + "tag.fluid.neoforge.thorium_slurry": "Thorium Slurry", + "tag.fluid.neoforge.tin": "Tin", + "tag.fluid.neoforge.tin_clean_slurry": "Tin Clean Slurry", + "tag.fluid.neoforge.tin_silver": "Tin Silver", + "tag.fluid.neoforge.tin_slurry": "Tin Slurry", + "tag.fluid.neoforge.tough_alloy": "Tough Alloy", + "tag.fluid.neoforge.tritium": "Tritium", + "tag.fluid.neoforge.unsweetened_chocolate": "Unsweetened Chocolate", + "tag.fluid.neoforge.uranium": "Uranium", + "tag.fluid.neoforge.uranium.233": "Uranium 233", + "tag.fluid.neoforge.uranium.233_ni": "Uranium 233 Nitride", + "tag.fluid.neoforge.uranium.233_ox": "Uranium 233 Oxide", + "tag.fluid.neoforge.uranium.233_za": "Uranium 233 ZA", + "tag.fluid.neoforge.uranium.234": "Uranium 234", + "tag.fluid.neoforge.uranium.234_ni": "Uranium 234 Nitride", + "tag.fluid.neoforge.uranium.234_ox": "Uranium 234 Oxide", + "tag.fluid.neoforge.uranium.234_za": "Uranium 234 ZA", + "tag.fluid.neoforge.uranium.235": "Uranium 235", + "tag.fluid.neoforge.uranium.235_ni": "Uranium 235 Nitride", + "tag.fluid.neoforge.uranium.235_ox": "Uranium 235 Oxide", + "tag.fluid.neoforge.uranium.235_za": "Uranium 235 ZA", + "tag.fluid.neoforge.uranium.238": "Uranium 238", + "tag.fluid.neoforge.uranium.238_ni": "Uranium 238 Nitride", + "tag.fluid.neoforge.uranium.238_ox": "Uranium 238 Oxide", + "tag.fluid.neoforge.uranium.238_za": "Uranium 238 ZA", + "tag.fluid.neoforge.uranium/233": "Uranium 233", + "tag.fluid.neoforge.uranium/233_ni": "Uranium 233 Nitride", + "tag.fluid.neoforge.uranium/233_ox": "Uranium 233 Oxide", + "tag.fluid.neoforge.uranium/233_za": "Uranium 233 ZA", + "tag.fluid.neoforge.uranium/234": "Uranium 234", + "tag.fluid.neoforge.uranium/234_ni": "Uranium 234 Nitride", + "tag.fluid.neoforge.uranium/234_ox": "Uranium 234 Oxide", + "tag.fluid.neoforge.uranium/234_za": "Uranium 234 ZA", + "tag.fluid.neoforge.uranium/235": "Uranium 235", + "tag.fluid.neoforge.uranium/235_ni": "Uranium 235 Nitride", + "tag.fluid.neoforge.uranium/235_ox": "Uranium 235 Oxide", + "tag.fluid.neoforge.uranium/235_za": "Uranium 235 ZA", + "tag.fluid.neoforge.uranium/238": "Uranium 238", + "tag.fluid.neoforge.uranium/238_ni": "Uranium 238 Nitride", + "tag.fluid.neoforge.uranium/238_ox": "Uranium 238 Oxide", + "tag.fluid.neoforge.uranium/238_za": "Uranium 238 ZA", + "tag.fluid.neoforge.uranium_clean_slurry": "Uranium Clean Slurry", + "tag.fluid.neoforge.uranium_oxide": "Uranium Oxide", + "tag.fluid.neoforge.uranium_slurry": "Uranium Slurry", + "tag.fluid.neoforge.xenorium.298": "Xenorium 298", + "tag.fluid.neoforge.xenorium/298": "Xenorium 298", + "tag.fluid.neoforge.zinc": "Zinc", + "tag.fluid.neoforge.zinc_clean_slurry": "Zinc Clean Slurry", + "tag.fluid.neoforge.zinc_slurry": "Zinc Slurry", + "tag.fluid.neoforge.zircaloy": "Zircaloy", + "tag.fluid.neoforge.zirconium": "Zirconium", + "tag.fluid.neoforge.zirconium_molybdenum": "Zirconium Molybdenum", + "tag.fluid.nuclearcraft.accelerator_inner": "Accelerator Inner", + "tag.fluid.nuclearcraft.amplifiers": "Amplifiers", + "tag.fluid.nuclearcraft.depleted_reactor_fuel.americium.hea-242": "Americium HEA-242 (Depleted Reactor Fuel)", + "tag.fluid.nuclearcraft.depleted_reactor_fuel.americium.lea-242": "Americium LEA-242 (Depleted Reactor Fuel)", + "tag.fluid.nuclearcraft.depleted_reactor_fuel.berkelium.heb-248": "Berkelium HEB-248 (Depleted Reactor Fuel)", + "tag.fluid.nuclearcraft.depleted_reactor_fuel.berkelium.leb-248": "Berkelium LEB-248 (Depleted Reactor Fuel)", + "tag.fluid.nuclearcraft.depleted_reactor_fuel.californium.hecf-249": "Californium HECF-249 (Depleted Reactor Fuel)", + "tag.fluid.nuclearcraft.depleted_reactor_fuel.californium.hecf-251": "Californium HECF-251 (Depleted Reactor Fuel)", + "tag.fluid.nuclearcraft.depleted_reactor_fuel.californium.lecf-249": "Californium LECF-249 (Depleted Reactor Fuel)", + "tag.fluid.nuclearcraft.depleted_reactor_fuel.californium.lecf-251": "Californium LECF-251 (Depleted Reactor Fuel)", + "tag.fluid.nuclearcraft.depleted_reactor_fuel.curium.hecm-243": "Curium HECM-243 (Depleted Reactor Fuel)", + "tag.fluid.nuclearcraft.depleted_reactor_fuel.curium.hecm-245": "Curium HECM-245 (Depleted Reactor Fuel)", + "tag.fluid.nuclearcraft.depleted_reactor_fuel.curium.hecm-247": "Curium HECM-247 (Depleted Reactor Fuel)", + "tag.fluid.nuclearcraft.depleted_reactor_fuel.curium.lecm-243": "Curium LECM-243 (Depleted Reactor Fuel)", + "tag.fluid.nuclearcraft.depleted_reactor_fuel.curium.lecm-245": "Curium LECM-245 (Depleted Reactor Fuel)", + "tag.fluid.nuclearcraft.depleted_reactor_fuel.curium.lecm-247": "Curium LECM-247 (Depleted Reactor Fuel)", + "tag.fluid.nuclearcraft.depleted_reactor_fuel.mixed.mix-239": "Mixed MIX-239 (Depleted Reactor Fuel)", + "tag.fluid.nuclearcraft.depleted_reactor_fuel.mixed.mix-241": "Mixed MIX-241 (Depleted Reactor Fuel)", + "tag.fluid.nuclearcraft.depleted_reactor_fuel.neptunium.hen-236": "Neptunium HEN-236 (Depleted Reactor Fuel)", + "tag.fluid.nuclearcraft.depleted_reactor_fuel.neptunium.len-236": "Neptunium LEN-236 (Depleted Reactor Fuel)", + "tag.fluid.nuclearcraft.depleted_reactor_fuel.plutonium.hep-239": "Plutonium HEP-239 (Depleted Reactor Fuel)", + "tag.fluid.nuclearcraft.depleted_reactor_fuel.plutonium.hep-241": "Plutonium HEP-241 (Depleted Reactor Fuel)", + "tag.fluid.nuclearcraft.depleted_reactor_fuel.plutonium.lep-239": "Plutonium LEP-239 (Depleted Reactor Fuel)", + "tag.fluid.nuclearcraft.depleted_reactor_fuel.plutonium.lep-241": "Plutonium LEP-241 (Depleted Reactor Fuel)", + "tag.fluid.nuclearcraft.depleted_reactor_fuel.thorium.tbu": "Thorium TBU (Depleted Reactor Fuel)", + "tag.fluid.nuclearcraft.depleted_reactor_fuel.uranium.heu-233": "Uranium HEU-233 (Depleted Reactor Fuel)", + "tag.fluid.nuclearcraft.depleted_reactor_fuel.uranium.heu-235": "Uranium HEU-235 (Depleted Reactor Fuel)", + "tag.fluid.nuclearcraft.depleted_reactor_fuel.uranium.leu-233": "Uranium LEU-233 (Depleted Reactor Fuel)", + "tag.fluid.nuclearcraft.depleted_reactor_fuel.uranium.leu-235": "Uranium LEU-235 (Depleted Reactor Fuel)", + "tag.fluid.nuclearcraft.depleted_reactor_fuel.xenorium.xen-298": "Xenorium XEN-298 (Depleted Reactor Fuel)", + "tag.fluid.nuclearcraft.depleted_reactor_fuel/americium/hea-242": "Americium HEA-242 (Depleted Reactor Fuel)", + "tag.fluid.nuclearcraft.depleted_reactor_fuel/americium/lea-242": "Americium LEA-242 (Depleted Reactor Fuel)", + "tag.fluid.nuclearcraft.depleted_reactor_fuel/berkelium/heb-248": "Berkelium HEB-248 (Depleted Reactor Fuel)", + "tag.fluid.nuclearcraft.depleted_reactor_fuel/berkelium/leb-248": "Berkelium LEB-248 (Depleted Reactor Fuel)", + "tag.fluid.nuclearcraft.depleted_reactor_fuel/californium/hecf-249": "Californium HECF-249 (Depleted Reactor Fuel)", + "tag.fluid.nuclearcraft.depleted_reactor_fuel/californium/hecf-251": "Californium HECF-251 (Depleted Reactor Fuel)", + "tag.fluid.nuclearcraft.depleted_reactor_fuel/californium/lecf-249": "Californium LECF-249 (Depleted Reactor Fuel)", + "tag.fluid.nuclearcraft.depleted_reactor_fuel/californium/lecf-251": "Californium LECF-251 (Depleted Reactor Fuel)", + "tag.fluid.nuclearcraft.depleted_reactor_fuel/curium/hecm-243": "Curium HECM-243 (Depleted Reactor Fuel)", + "tag.fluid.nuclearcraft.depleted_reactor_fuel/curium/hecm-245": "Curium HECM-245 (Depleted Reactor Fuel)", + "tag.fluid.nuclearcraft.depleted_reactor_fuel/curium/hecm-247": "Curium HECM-247 (Depleted Reactor Fuel)", + "tag.fluid.nuclearcraft.depleted_reactor_fuel/curium/lecm-243": "Curium LECM-243 (Depleted Reactor Fuel)", + "tag.fluid.nuclearcraft.depleted_reactor_fuel/curium/lecm-245": "Curium LECM-245 (Depleted Reactor Fuel)", + "tag.fluid.nuclearcraft.depleted_reactor_fuel/curium/lecm-247": "Curium LECM-247 (Depleted Reactor Fuel)", + "tag.fluid.nuclearcraft.depleted_reactor_fuel/mixed/mix-239": "Mixed MIX-239 (Depleted Reactor Fuel)", + "tag.fluid.nuclearcraft.depleted_reactor_fuel/mixed/mix-241": "Mixed MIX-241 (Depleted Reactor Fuel)", + "tag.fluid.nuclearcraft.depleted_reactor_fuel/neptunium/hen-236": "Neptunium HEN-236 (Depleted Reactor Fuel)", + "tag.fluid.nuclearcraft.depleted_reactor_fuel/neptunium/len-236": "Neptunium LEN-236 (Depleted Reactor Fuel)", + "tag.fluid.nuclearcraft.depleted_reactor_fuel/plutonium/hep-239": "Plutonium HEP-239 (Depleted Reactor Fuel)", + "tag.fluid.nuclearcraft.depleted_reactor_fuel/plutonium/hep-241": "Plutonium HEP-241 (Depleted Reactor Fuel)", + "tag.fluid.nuclearcraft.depleted_reactor_fuel/plutonium/lep-239": "Plutonium LEP-239 (Depleted Reactor Fuel)", + "tag.fluid.nuclearcraft.depleted_reactor_fuel/plutonium/lep-241": "Plutonium LEP-241 (Depleted Reactor Fuel)", + "tag.fluid.nuclearcraft.depleted_reactor_fuel/thorium/tbu": "Thorium TBU (Depleted Reactor Fuel)", + "tag.fluid.nuclearcraft.depleted_reactor_fuel/uranium/heu-233": "Uranium HEU-233 (Depleted Reactor Fuel)", + "tag.fluid.nuclearcraft.depleted_reactor_fuel/uranium/heu-235": "Uranium HEU-235 (Depleted Reactor Fuel)", + "tag.fluid.nuclearcraft.depleted_reactor_fuel/uranium/leu-233": "Uranium LEU-233 (Depleted Reactor Fuel)", + "tag.fluid.nuclearcraft.depleted_reactor_fuel/uranium/leu-235": "Uranium LEU-235 (Depleted Reactor Fuel)", + "tag.fluid.nuclearcraft.depleted_reactor_fuel/xenorium/xen-298": "Xenorium XEN-298 (Depleted Reactor Fuel)", + "tag.fluid.nuclearcraft.electromagnets": "Electromagnets", + "tag.fluid.nuclearcraft.fission_reactor_casing": "Fission Reactor Casing", + "tag.fluid.nuclearcraft.fusion_reactor_casing": "Fusion Reactor Casing", + "tag.fluid.nuclearcraft.ion_sources.antideuterium": "Antideuterium (Ion Sources)", + "tag.fluid.nuclearcraft.ion_sources.antihelium": "Antihelium (Ion Sources)", + "tag.fluid.nuclearcraft.ion_sources.antihelium3": "Antihelium3 (Ion Sources)", + "tag.fluid.nuclearcraft.ion_sources.antihydrogen": "Antihydrogen (Ion Sources)", + "tag.fluid.nuclearcraft.ion_sources.antitritium": "Antitritium (Ion Sources)", + "tag.fluid.nuclearcraft.ion_sources.calcium_48": "Calcium 48 (Ion Sources)", + "tag.fluid.nuclearcraft.ion_sources.empty": "Empty (Ion Sources)", + "tag.fluid.nuclearcraft.ion_sources.glueballs": "Glueballs (Ion Sources)", + "tag.fluid.nuclearcraft.ion_sources.iridium_192": "Iridium 192 (Ion Sources)", + "tag.fluid.nuclearcraft.ion_sources.positronium": "Positronium (Ion Sources)", + "tag.fluid.nuclearcraft.ion_sources.tauonium": "Tauonium (Ion Sources)", + "tag.fluid.nuclearcraft.ion_sources.tungsten_filament": "Tungsten Filament (Ion Sources)", + "tag.fluid.nuclearcraft.ion_sources/antideuterium": "Antideuterium (Ion Sources)", + "tag.fluid.nuclearcraft.ion_sources/antihelium": "Antihelium (Ion Sources)", + "tag.fluid.nuclearcraft.ion_sources/antihelium3": "Antihelium3 (Ion Sources)", + "tag.fluid.nuclearcraft.ion_sources/antihydrogen": "Antihydrogen (Ion Sources)", + "tag.fluid.nuclearcraft.ion_sources/antitritium": "Antitritium (Ion Sources)", + "tag.fluid.nuclearcraft.ion_sources/calcium_48": "Calcium 48 (Ion Sources)", + "tag.fluid.nuclearcraft.ion_sources/empty": "Empty (Ion Sources)", + "tag.fluid.nuclearcraft.ion_sources/glueballs": "Glueballs (Ion Sources)", + "tag.fluid.nuclearcraft.ion_sources/iridium_192": "Iridium 192 (Ion Sources)", + "tag.fluid.nuclearcraft.ion_sources/positronium": "Positronium (Ion Sources)", + "tag.fluid.nuclearcraft.ion_sources/tauonium": "Tauonium (Ion Sources)", + "tag.fluid.nuclearcraft.ion_sources/tungsten_filament": "Tungsten Filament (Ion Sources)", + "tag.fluid.nuclearcraft.moderators": "Moderators", + "tag.fluid.nuclearcraft.music_discs": "Music Discs", + "tag.fluid.nuclearcraft.parts": "Parts", + "tag.fluid.nuclearcraft.reactor_fuel.americium.hea-242": "Americium HEA-242 (Reactor Fuel)", + "tag.fluid.nuclearcraft.reactor_fuel.americium.lea-242": "Americium LEA-242 (Reactor Fuel)", + "tag.fluid.nuclearcraft.reactor_fuel.berkelium.heb-248": "Berkelium HEB-248 (Reactor Fuel)", + "tag.fluid.nuclearcraft.reactor_fuel.berkelium.leb-248": "Berkelium LEB-248 (Reactor Fuel)", + "tag.fluid.nuclearcraft.reactor_fuel.californium.hecf-249": "Californium HECF-249 (Reactor Fuel)", + "tag.fluid.nuclearcraft.reactor_fuel.californium.hecf-251": "Californium HECF-251 (Reactor Fuel)", + "tag.fluid.nuclearcraft.reactor_fuel.californium.lecf-249": "Californium LECF-249 (Reactor Fuel)", + "tag.fluid.nuclearcraft.reactor_fuel.californium.lecf-251": "Californium LECF-251 (Reactor Fuel)", + "tag.fluid.nuclearcraft.reactor_fuel.curium.hecm-243": "Curium HECM-243 (Reactor Fuel)", + "tag.fluid.nuclearcraft.reactor_fuel.curium.hecm-245": "Curium HECM-245 (Reactor Fuel)", + "tag.fluid.nuclearcraft.reactor_fuel.curium.hecm-247": "Curium HECM-247 (Reactor Fuel)", + "tag.fluid.nuclearcraft.reactor_fuel.curium.lecm-243": "Curium LECM-243 (Reactor Fuel)", + "tag.fluid.nuclearcraft.reactor_fuel.curium.lecm-245": "Curium LECM-245 (Reactor Fuel)", + "tag.fluid.nuclearcraft.reactor_fuel.curium.lecm-247": "Curium LECM-247 (Reactor Fuel)", + "tag.fluid.nuclearcraft.reactor_fuel.mixed.mix-239": "Mixed MIX-239 (Reactor Fuel)", + "tag.fluid.nuclearcraft.reactor_fuel.mixed.mix-241": "Mixed MIX-241 (Reactor Fuel)", + "tag.fluid.nuclearcraft.reactor_fuel.neptunium.hen-236": "Neptunium HEN-236 (Reactor Fuel)", + "tag.fluid.nuclearcraft.reactor_fuel.neptunium.len-236": "Neptunium LEN-236 (Reactor Fuel)", + "tag.fluid.nuclearcraft.reactor_fuel.plutonium.hep-239": "Plutonium HEP-239 (Reactor Fuel)", + "tag.fluid.nuclearcraft.reactor_fuel.plutonium.hep-241": "Plutonium HEP-241 (Reactor Fuel)", + "tag.fluid.nuclearcraft.reactor_fuel.plutonium.lep-239": "Plutonium LEP-239 (Reactor Fuel)", + "tag.fluid.nuclearcraft.reactor_fuel.plutonium.lep-241": "Plutonium LEP-241 (Reactor Fuel)", + "tag.fluid.nuclearcraft.reactor_fuel.thorium.tbu": "Thorium TBU (Reactor Fuel)", + "tag.fluid.nuclearcraft.reactor_fuel.uranium.heu-233": "Uranium HEU-233 (Reactor Fuel)", + "tag.fluid.nuclearcraft.reactor_fuel.uranium.heu-235": "Uranium HEU-235 (Reactor Fuel)", + "tag.fluid.nuclearcraft.reactor_fuel.uranium.leu-233": "Uranium LEU-233 (Reactor Fuel)", + "tag.fluid.nuclearcraft.reactor_fuel.uranium.leu-235": "Uranium LEU-235 (Reactor Fuel)", + "tag.fluid.nuclearcraft.reactor_fuel.xenorium.xen-298": "Xenorium XEN-298 (Reactor Fuel)", + "tag.fluid.nuclearcraft.reactor_fuel/americium/hea-242": "Americium HEA-242 (Reactor Fuel)", + "tag.fluid.nuclearcraft.reactor_fuel/americium/lea-242": "Americium LEA-242 (Reactor Fuel)", + "tag.fluid.nuclearcraft.reactor_fuel/berkelium/heb-248": "Berkelium HEB-248 (Reactor Fuel)", + "tag.fluid.nuclearcraft.reactor_fuel/berkelium/leb-248": "Berkelium LEB-248 (Reactor Fuel)", + "tag.fluid.nuclearcraft.reactor_fuel/californium/hecf-249": "Californium HECF-249 (Reactor Fuel)", + "tag.fluid.nuclearcraft.reactor_fuel/californium/hecf-251": "Californium HECF-251 (Reactor Fuel)", + "tag.fluid.nuclearcraft.reactor_fuel/californium/lecf-249": "Californium LECF-249 (Reactor Fuel)", + "tag.fluid.nuclearcraft.reactor_fuel/californium/lecf-251": "Californium LECF-251 (Reactor Fuel)", + "tag.fluid.nuclearcraft.reactor_fuel/curium/hecm-243": "Curium HECM-243 (Reactor Fuel)", + "tag.fluid.nuclearcraft.reactor_fuel/curium/hecm-245": "Curium HECM-245 (Reactor Fuel)", + "tag.fluid.nuclearcraft.reactor_fuel/curium/hecm-247": "Curium HECM-247 (Reactor Fuel)", + "tag.fluid.nuclearcraft.reactor_fuel/curium/lecm-243": "Curium LECM-243 (Reactor Fuel)", + "tag.fluid.nuclearcraft.reactor_fuel/curium/lecm-245": "Curium LECM-245 (Reactor Fuel)", + "tag.fluid.nuclearcraft.reactor_fuel/curium/lecm-247": "Curium LECM-247 (Reactor Fuel)", + "tag.fluid.nuclearcraft.reactor_fuel/mixed/mix-239": "Mixed MIX-239 (Reactor Fuel)", + "tag.fluid.nuclearcraft.reactor_fuel/mixed/mix-241": "Mixed MIX-241 (Reactor Fuel)", + "tag.fluid.nuclearcraft.reactor_fuel/neptunium/hen-236": "Neptunium HEN-236 (Reactor Fuel)", + "tag.fluid.nuclearcraft.reactor_fuel/neptunium/len-236": "Neptunium LEN-236 (Reactor Fuel)", + "tag.fluid.nuclearcraft.reactor_fuel/plutonium/hep-239": "Plutonium HEP-239 (Reactor Fuel)", + "tag.fluid.nuclearcraft.reactor_fuel/plutonium/hep-241": "Plutonium HEP-241 (Reactor Fuel)", + "tag.fluid.nuclearcraft.reactor_fuel/plutonium/lep-239": "Plutonium LEP-239 (Reactor Fuel)", + "tag.fluid.nuclearcraft.reactor_fuel/plutonium/lep-241": "Plutonium LEP-241 (Reactor Fuel)", + "tag.fluid.nuclearcraft.reactor_fuel/thorium/tbu": "Thorium TBU (Reactor Fuel)", + "tag.fluid.nuclearcraft.reactor_fuel/uranium/heu-233": "Uranium HEU-233 (Reactor Fuel)", + "tag.fluid.nuclearcraft.reactor_fuel/uranium/heu-235": "Uranium HEU-235 (Reactor Fuel)", + "tag.fluid.nuclearcraft.reactor_fuel/uranium/leu-233": "Uranium LEU-233 (Reactor Fuel)", + "tag.fluid.nuclearcraft.reactor_fuel/uranium/leu-235": "Uranium LEU-235 (Reactor Fuel)", + "tag.fluid.nuclearcraft.reactor_fuel/xenorium/xen-298": "Xenorium XEN-298 (Reactor Fuel)", "tag.item.c.alugentum_dusts": "Alugentum Dusts", "tag.item.c.aluminum": "Aluminum", "tag.item.c.aluminum_clean_slurry": "Aluminum Clean Slurry", @@ -745,6 +2189,7 @@ "tag.item.c.diamond_dusts": "Diamond Dusts", "tag.item.c.dimensional_blend_dusts": "Dimensional Blend Dusts", "tag.item.c.dusts.alugentum": "Alugentum Dusts", + "tag.item.c.dusts.aluminium": "Aluminium Dusts", "tag.item.c.dusts.aluminum": "Aluminum Dusts", "tag.item.c.dusts.arsenic": "Arsenic Dusts", "tag.item.c.dusts.barium": "Barium Dusts", @@ -828,6 +2273,7 @@ "tag.item.c.dusts.silicon_carbide": "Silicon Carbide Dusts", "tag.item.c.dusts.silver": "Silver Dusts", "tag.item.c.dusts.sodium": "Sodium Dusts", + "tag.item.c.dusts.sodium_chloride": "Sodium Chloride Dusts", "tag.item.c.dusts.sodium_fluoride": "Sodium Fluoride Dusts", "tag.item.c.dusts.sodium_hydroxide": "Sodium Hydroxide Dusts", "tag.item.c.dusts.steel": "Steel Dusts", @@ -991,6 +2437,12 @@ "tag.item.c.fuel_xenorium_xen-298": "Fuel Xenorium Xen-298", "tag.item.c.gadolinium_dusts": "Gadolinium Dusts", "tag.item.c.gelatin": "Gelatin", + "tag.item.c.gems.boron_arsenide": "Boron Arsenide Gems", + "tag.item.c.gems.boron_nitride": "Boron Nitride Gems", + "tag.item.c.gems.carobbiite": "Carobbiite Gems", + "tag.item.c.gems.rhodochrosite": "Rhodochrosite Gems", + "tag.item.c.gems.silicon": "Silicon Gems", + "tag.item.c.gems.villiaumite": "Villiaumite Gems", "tag.item.c.germanium_dusts": "Germanium Dusts", "tag.item.c.glowstone": "Glowstone", "tag.item.c.gold": "Gold", @@ -1016,6 +2468,7 @@ "tag.item.c.hydrofluoric_acid": "Hydrofluoric Acid", "tag.item.c.hydrogen_chloride": "Hydrogen Chloride", "tag.item.c.ice": "Ice", + "tag.item.c.ingots.aluminium": "Aluminium Ingots", "tag.item.c.ingots.aluminum": "Aluminum Ingots", "tag.item.c.ingots.beryllium": "Beryllium Ingots", "tag.item.c.ingots.boron": "Boron Ingots", @@ -1171,6 +2624,7 @@ "tag.item.c.niobium_titanium_ingots": "Niobium Titanium Ingots", "tag.item.c.nitric_acid": "Nitric Acid", "tag.item.c.nuclear_waste": "Nuclear Waste", + "tag.item.c.nuggets.aluminium": "Aluminium Nuggets", "tag.item.c.nuggets.aluminum": "Aluminum Nuggets", "tag.item.c.nuggets.beryllium": "Beryllium Nuggets", "tag.item.c.nuggets.boron": "Boron Nuggets", @@ -1190,6 +2644,37 @@ "tag.item.c.nuggets.zirconium": "Zirconium Nuggets", "tag.item.c.obsidian": "Obsidian", "tag.item.c.obsidian_dusts": "Obsidian Dusts", + "tag.item.c.ores.boron": "Boron (Ores)", + "tag.item.c.ores.boron_deepslate": "Boron Deepslate (Ores)", + "tag.item.c.ores.cobalt": "Cobalt (Ores)", + "tag.item.c.ores.cobalt_deepslate": "Cobalt Deepslate (Ores)", + "tag.item.c.ores.lithium": "Lithium (Ores)", + "tag.item.c.ores.lithium_deepslate": "Lithium Deepslate (Ores)", + "tag.item.c.ores.magnesium": "Magnesium (Ores)", + "tag.item.c.ores.magnesium_deepslate": "Magnesium Deepslate (Ores)", + "tag.item.c.ores.platinum": "Platinum Ores", + "tag.item.c.ores.platinum_deepslate": "Platinum Deepslate (Ores)", + "tag.item.c.ores.silver": "Silver (Ores)", + "tag.item.c.ores.silver_deepslate": "Silver Deepslate (Ores)", + "tag.item.c.ores.thorium": "Thorium (Ores)", + "tag.item.c.ores.thorium_deepslate": "Thorium Deepslate (Ores)", + "tag.item.c.ores.uranium_deepslate": "Uranium Deepslate (Ores)", + "tag.item.c.ores.zinc": "Zinc (Ores)", + "tag.item.c.ores/boron": "Boron (Ores)", + "tag.item.c.ores/boron_deepslate": "Boron Deepslate (Ores)", + "tag.item.c.ores/cobalt": "Cobalt (Ores)", + "tag.item.c.ores/cobalt_deepslate": "Cobalt Deepslate (Ores)", + "tag.item.c.ores/lithium": "Lithium (Ores)", + "tag.item.c.ores/lithium_deepslate": "Lithium Deepslate (Ores)", + "tag.item.c.ores/magnesium": "Magnesium (Ores)", + "tag.item.c.ores/magnesium_deepslate": "Magnesium Deepslate (Ores)", + "tag.item.c.ores/platinum_deepslate": "Platinum Deepslate (Ores)", + "tag.item.c.ores/silver": "Silver (Ores)", + "tag.item.c.ores/silver_deepslate": "Silver Deepslate (Ores)", + "tag.item.c.ores/thorium": "Thorium (Ores)", + "tag.item.c.ores/thorium_deepslate": "Thorium Deepslate (Ores)", + "tag.item.c.ores/uranium_deepslate": "Uranium Deepslate (Ores)", + "tag.item.c.ores/zinc": "Zinc (Ores)", "tag.item.c.osmiridium_ingots": "Osmiridium Ingots", "tag.item.c.osmium_dusts": "Osmium Dusts", "tag.item.c.osmium_ingots": "Osmium Ingots", @@ -1198,6 +2683,7 @@ "tag.item.c.palladium_ingots": "Palladium Ingots", "tag.item.c.palladium_plates": "Palladium Plates", "tag.item.c.pasteurized_milk": "Pasteurized Milk", + "tag.item.c.plates.aluminium": "Aluminium Plates", "tag.item.c.plates.aluminum": "Aluminum Plates", "tag.item.c.plates.beryllium": "Beryllium Plates", "tag.item.c.plates.boron": "Boron Plates", @@ -1287,6 +2773,14 @@ "tag.item.c.raw_material.tin": "Tin Raw", "tag.item.c.raw_material.uranium": "Uranium Raw", "tag.item.c.raw_material.zinc": "Zinc Raw", + "tag.item.c.raw_materials.boron": "Raw Boron", + "tag.item.c.raw_materials.cobalt": "Raw Cobalt", + "tag.item.c.raw_materials.lithium": "Raw Lithium", + "tag.item.c.raw_materials.magnesium": "Raw Magnesium", + "tag.item.c.raw_materials.platinum": "Raw Platinum", + "tag.item.c.raw_materials.silver": "Raw Silver", + "tag.item.c.raw_materials.thorium": "Raw Thorium", + "tag.item.c.raw_materials.zinc": "Raw Zinc", "tag.item.c.redstone": "Redstone", "tag.item.c.redstone_ethanol": "Redstone Ethanol", "tag.item.c.rhodochrosite_dusts": "Rhodochrosite Dusts", @@ -1327,6 +2821,42 @@ "tag.item.c.steel_ingots": "Steel Ingots", "tag.item.c.steel_nuggets": "Steel Nuggets", "tag.item.c.steel_plates": "Steel Plates", + "tag.item.c.storage_blocks.aluminum": "Aluminum (Storage Blocks)", + "tag.item.c.storage_blocks.americium241": "Americium241 (Storage Blocks)", + "tag.item.c.storage_blocks.beryllium": "Beryllium (Storage Blocks)", + "tag.item.c.storage_blocks.boron": "Boron (Storage Blocks)", + "tag.item.c.storage_blocks.californium250": "Californium250 (Storage Blocks)", + "tag.item.c.storage_blocks.cobalt": "Cobalt (Storage Blocks)", + "tag.item.c.storage_blocks.electrum": "Electrum (Storage Blocks)", + "tag.item.c.storage_blocks.graphite": "Graphite (Storage Blocks)", + "tag.item.c.storage_blocks.lithium": "Lithium (Storage Blocks)", + "tag.item.c.storage_blocks.magnesium": "Magnesium (Storage Blocks)", + "tag.item.c.storage_blocks.platinum": "Platinum (Storage Blocks)", + "tag.item.c.storage_blocks.plutonium238": "Plutonium238 (Storage Blocks)", + "tag.item.c.storage_blocks.silver": "Silver (Storage Blocks)", + "tag.item.c.storage_blocks.supercold_ice": "Supercold Ice (Storage Blocks)", + "tag.item.c.storage_blocks.thorium": "Thorium (Storage Blocks)", + "tag.item.c.storage_blocks.uranium238": "Uranium238 (Storage Blocks)", + "tag.item.c.storage_blocks.zinc": "Zinc (Storage Blocks)", + "tag.item.c.storage_blocks.zirconium": "Zirconium (Storage Blocks)", + "tag.item.c.storage_blocks/aluminum": "Aluminum (Storage Blocks)", + "tag.item.c.storage_blocks/americium241": "Americium241 (Storage Blocks)", + "tag.item.c.storage_blocks/beryllium": "Beryllium (Storage Blocks)", + "tag.item.c.storage_blocks/boron": "Boron (Storage Blocks)", + "tag.item.c.storage_blocks/californium250": "Californium250 (Storage Blocks)", + "tag.item.c.storage_blocks/cobalt": "Cobalt (Storage Blocks)", + "tag.item.c.storage_blocks/electrum": "Electrum (Storage Blocks)", + "tag.item.c.storage_blocks/graphite": "Graphite (Storage Blocks)", + "tag.item.c.storage_blocks/lithium": "Lithium (Storage Blocks)", + "tag.item.c.storage_blocks/magnesium": "Magnesium (Storage Blocks)", + "tag.item.c.storage_blocks/platinum": "Platinum (Storage Blocks)", + "tag.item.c.storage_blocks/plutonium238": "Plutonium238 (Storage Blocks)", + "tag.item.c.storage_blocks/silver": "Silver (Storage Blocks)", + "tag.item.c.storage_blocks/supercold_ice": "Supercold Ice (Storage Blocks)", + "tag.item.c.storage_blocks/thorium": "Thorium (Storage Blocks)", + "tag.item.c.storage_blocks/uranium238": "Uranium238 (Storage Blocks)", + "tag.item.c.storage_blocks/zinc": "Zinc (Storage Blocks)", + "tag.item.c.storage_blocks/zirconium": "Zirconium (Storage Blocks)", "tag.item.c.strontium_90": "Strontium 90", "tag.item.c.strontium_90_dusts": "Strontium 90 Dusts", "tag.item.c.strontium_dusts": "Strontium Dusts", @@ -1428,6 +2958,1241 @@ "tag.item.c.zirconium_molybdenum_ingots": "Zirconium Molybdenum Ingots", "tag.item.c.zirconium_nuggets": "Zirconium Nuggets", "tag.item.c.zirconium_plates": "Zirconium Plates", + "tag.item.create.no_infinite_draining": "No Infinite Draining", + "tag.item.neoforge.aluminium": "Aluminium", + "tag.item.neoforge.aluminum": "Aluminum", + "tag.item.neoforge.aluminum_clean_slurry": "Aluminum Clean Slurry", + "tag.item.neoforge.aluminum_slurry": "Aluminum Slurry", + "tag.item.neoforge.americium.241": "Americium 241", + "tag.item.neoforge.americium.241_ni": "Americium 241 Nitride", + "tag.item.neoforge.americium.241_ox": "Americium 241 Oxide", + "tag.item.neoforge.americium.241_za": "Americium 241 ZA", + "tag.item.neoforge.americium.242": "Americium 242", + "tag.item.neoforge.americium.242_ni": "Americium 242 Nitride", + "tag.item.neoforge.americium.242_ox": "Americium 242 Oxide", + "tag.item.neoforge.americium.242_za": "Americium 242 ZA", + "tag.item.neoforge.americium.243": "Americium 243", + "tag.item.neoforge.americium.243_ni": "Americium 243 Nitride", + "tag.item.neoforge.americium.243_ox": "Americium 243 Oxide", + "tag.item.neoforge.americium.243_za": "Americium 243 ZA", + "tag.item.neoforge.americium/241": "Americium 241", + "tag.item.neoforge.americium/241_ni": "Americium 241 Nitride", + "tag.item.neoforge.americium/241_ox": "Americium 241 Oxide", + "tag.item.neoforge.americium/241_za": "Americium 241 ZA", + "tag.item.neoforge.americium/242": "Americium 242", + "tag.item.neoforge.americium/242_ni": "Americium 242 Nitride", + "tag.item.neoforge.americium/242_ox": "Americium 242 Oxide", + "tag.item.neoforge.americium/242_za": "Americium 242 ZA", + "tag.item.neoforge.americium/243": "Americium 243", + "tag.item.neoforge.americium/243_ni": "Americium 243 Nitride", + "tag.item.neoforge.americium/243_ox": "Americium 243 Oxide", + "tag.item.neoforge.americium/243_za": "Americium 243 ZA", + "tag.item.neoforge.ammonia": "Ammonia", + "tag.item.neoforge.aqua_regia_acid": "Aqua Regia Acid", + "tag.item.neoforge.argon": "Argon", + "tag.item.neoforge.arsenic": "Arsenic", + "tag.item.neoforge.berkelium.247": "Berkelium 247", + "tag.item.neoforge.berkelium.247_ni": "Berkelium 247 Nitride", + "tag.item.neoforge.berkelium.247_ox": "Berkelium 247 Oxide", + "tag.item.neoforge.berkelium.247_za": "Berkelium 247 ZA", + "tag.item.neoforge.berkelium.248": "Berkelium 248", + "tag.item.neoforge.berkelium.248_ni": "Berkelium 248 Nitride", + "tag.item.neoforge.berkelium.248_ox": "Berkelium 248 Oxide", + "tag.item.neoforge.berkelium.248_za": "Berkelium 248 ZA", + "tag.item.neoforge.berkelium/247": "Berkelium 247", + "tag.item.neoforge.berkelium/247_ni": "Berkelium 247 Nitride", + "tag.item.neoforge.berkelium/247_ox": "Berkelium 247 Oxide", + "tag.item.neoforge.berkelium/247_za": "Berkelium 247 ZA", + "tag.item.neoforge.berkelium/248": "Berkelium 248", + "tag.item.neoforge.berkelium/248_ni": "Berkelium 248 Nitride", + "tag.item.neoforge.berkelium/248_ox": "Berkelium 248 Oxide", + "tag.item.neoforge.berkelium/248_za": "Berkelium 248 ZA", + "tag.item.neoforge.beryllium": "Beryllium", + "tag.item.neoforge.beryllium_7": "Beryllium 7", + "tag.item.neoforge.beryllium_fluoride": "Beryllium Fluoride", + "tag.item.neoforge.borax_solution": "Borax Solution", + "tag.item.neoforge.boric_acid": "Boric Acid", + "tag.item.neoforge.boron": "Boron", + "tag.item.neoforge.boron.10": "Boron 10", + "tag.item.neoforge.boron.10_ni": "Boron 10 Nitride", + "tag.item.neoforge.boron.10_ox": "Boron 10 Oxide", + "tag.item.neoforge.boron.10_za": "Boron 10 ZA", + "tag.item.neoforge.boron.11": "Boron 11", + "tag.item.neoforge.boron.11_ni": "Boron 11 Nitride", + "tag.item.neoforge.boron.11_ox": "Boron 11 Oxide", + "tag.item.neoforge.boron.11_za": "Boron 11 ZA", + "tag.item.neoforge.boron/10": "Boron 10", + "tag.item.neoforge.boron/10_ni": "Boron 10 Nitride", + "tag.item.neoforge.boron/10_ox": "Boron 10 Oxide", + "tag.item.neoforge.boron/10_za": "Boron 10 ZA", + "tag.item.neoforge.boron/11": "Boron 11", + "tag.item.neoforge.boron/11_ni": "Boron 11 Nitride", + "tag.item.neoforge.boron/11_ox": "Boron 11 Oxide", + "tag.item.neoforge.boron/11_za": "Boron 11 ZA", + "tag.item.neoforge.boron_arsenide": "Boron Arsenide", + "tag.item.neoforge.boron_arsenide_solution": "Boron Arsenide Solution", + "tag.item.neoforge.boron_clean_slurry": "Boron Clean Slurry", + "tag.item.neoforge.boron_nitride_solution": "Boron Nitride Solution", + "tag.item.neoforge.boron_slurry": "Boron Slurry", + "tag.item.neoforge.bronze": "Bronze", + "tag.item.neoforge.caesium_137": "Caesium 137", + "tag.item.neoforge.calcium_48": "Calcium 48", + "tag.item.neoforge.calcium_sulfate_solution": "Calcium Sulfate Solution", + "tag.item.neoforge.californium.249": "Californium 249", + "tag.item.neoforge.californium.249_ni": "Californium 249 Nitride", + "tag.item.neoforge.californium.249_ox": "Californium 249 Oxide", + "tag.item.neoforge.californium.249_za": "Californium 249 ZA", + "tag.item.neoforge.californium.250": "Californium 250", + "tag.item.neoforge.californium.250_ni": "Californium 250 Nitride", + "tag.item.neoforge.californium.250_ox": "Californium 250 Oxide", + "tag.item.neoforge.californium.250_za": "Californium 250 ZA", + "tag.item.neoforge.californium.251": "Californium 251", + "tag.item.neoforge.californium.251_ni": "Californium 251 Nitride", + "tag.item.neoforge.californium.251_ox": "Californium 251 Oxide", + "tag.item.neoforge.californium.251_za": "Californium 251 ZA", + "tag.item.neoforge.californium.252": "Californium 252", + "tag.item.neoforge.californium.252_ni": "Californium 252 Nitride", + "tag.item.neoforge.californium.252_ox": "Californium 252 Oxide", + "tag.item.neoforge.californium.252_za": "Californium 252 ZA", + "tag.item.neoforge.californium/249": "Californium 249", + "tag.item.neoforge.californium/249_ni": "Californium 249 Nitride", + "tag.item.neoforge.californium/249_ox": "Californium 249 Oxide", + "tag.item.neoforge.californium/249_za": "Californium 249 ZA", + "tag.item.neoforge.californium/250": "Californium 250", + "tag.item.neoforge.californium/250_ni": "Californium 250 Nitride", + "tag.item.neoforge.californium/250_ox": "Californium 250 Oxide", + "tag.item.neoforge.californium/250_za": "Californium 250 ZA", + "tag.item.neoforge.californium/251": "Californium 251", + "tag.item.neoforge.californium/251_ni": "Californium 251 Nitride", + "tag.item.neoforge.californium/251_ox": "Californium 251 Oxide", + "tag.item.neoforge.californium/251_za": "Californium 251 ZA", + "tag.item.neoforge.californium/252": "Californium 252", + "tag.item.neoforge.californium/252_ni": "Californium 252 Nitride", + "tag.item.neoforge.californium/252_ox": "Californium 252 Oxide", + "tag.item.neoforge.californium/252_za": "Californium 252 ZA", + "tag.item.neoforge.carbon": "Carbon", + "tag.item.neoforge.carbon_dioxide": "Carbon Dioxide", + "tag.item.neoforge.carbon_manganese": "Carbon Manganese", + "tag.item.neoforge.carbon_monoxide": "Carbon Monoxide", + "tag.item.neoforge.chlorine": "Chlorine", + "tag.item.neoforge.chocolate_liquor": "Chocolate Liquor", + "tag.item.neoforge.cobalt": "Cobalt", + "tag.item.neoforge.cobalt_60": "Cobalt 60", + "tag.item.neoforge.cobalt_clean_slurry": "Cobalt Clean Slurry", + "tag.item.neoforge.cobalt_slurry": "Cobalt Slurry", + "tag.item.neoforge.cocoa_butter": "Cocoa Butter", + "tag.item.neoforge.condensate_water": "Condensate Water", + "tag.item.neoforge.copernicium.291": "Copernicium 291", + "tag.item.neoforge.copernicium.291_ni": "Copernicium 291 Nitride", + "tag.item.neoforge.copernicium.291_ox": "Copernicium 291 Oxide", + "tag.item.neoforge.copernicium.291_za": "Copernicium 291 ZA", + "tag.item.neoforge.copernicium/291": "Copernicium 291", + "tag.item.neoforge.copernicium/291_ni": "Copernicium 291 Nitride", + "tag.item.neoforge.copernicium/291_ox": "Copernicium 291 Oxide", + "tag.item.neoforge.copernicium/291_za": "Copernicium 291 ZA", + "tag.item.neoforge.copper": "Copper", + "tag.item.neoforge.copper_clean_slurry": "Copper Clean Slurry", + "tag.item.neoforge.copper_slurry": "Copper Slurry", + "tag.item.neoforge.corium": "Corium", + "tag.item.neoforge.cryotheum": "Cryotheum", + "tag.item.neoforge.curium.243": "Curium 243", + "tag.item.neoforge.curium.243_ni": "Curium 243 Nitride", + "tag.item.neoforge.curium.243_ox": "Curium 243 Oxide", + "tag.item.neoforge.curium.243_za": "Curium 243 ZA", + "tag.item.neoforge.curium.245": "Curium 245", + "tag.item.neoforge.curium.245_ni": "Curium 245 Nitride", + "tag.item.neoforge.curium.245_ox": "Curium 245 Oxide", + "tag.item.neoforge.curium.245_za": "Curium 245 ZA", + "tag.item.neoforge.curium.246": "Curium 246", + "tag.item.neoforge.curium.246_ni": "Curium 246 Nitride", + "tag.item.neoforge.curium.246_ox": "Curium 246 Oxide", + "tag.item.neoforge.curium.246_za": "Curium 246 ZA", + "tag.item.neoforge.curium.247": "Curium 247", + "tag.item.neoforge.curium.247_ni": "Curium 247 Nitride", + "tag.item.neoforge.curium.247_ox": "Curium 247 Oxide", + "tag.item.neoforge.curium.247_za": "Curium 247 ZA", + "tag.item.neoforge.curium/243": "Curium 243", + "tag.item.neoforge.curium/243_ni": "Curium 243 Nitride", + "tag.item.neoforge.curium/243_ox": "Curium 243 Oxide", + "tag.item.neoforge.curium/243_za": "Curium 243 ZA", + "tag.item.neoforge.curium/245": "Curium 245", + "tag.item.neoforge.curium/245_ni": "Curium 245 Nitride", + "tag.item.neoforge.curium/245_ox": "Curium 245 Oxide", + "tag.item.neoforge.curium/245_za": "Curium 245 ZA", + "tag.item.neoforge.curium/246": "Curium 246", + "tag.item.neoforge.curium/246_ni": "Curium 246 Nitride", + "tag.item.neoforge.curium/246_ox": "Curium 246 Oxide", + "tag.item.neoforge.curium/246_za": "Curium 246 ZA", + "tag.item.neoforge.curium/247": "Curium 247", + "tag.item.neoforge.curium/247_ni": "Curium 247 Nitride", + "tag.item.neoforge.curium/247_ox": "Curium 247 Oxide", + "tag.item.neoforge.curium/247_za": "Curium 247 ZA", + "tag.item.neoforge.dark_chocolate": "Dark Chocolate", + "tag.item.neoforge.depleted_fuel_americium_hea_242": "Depleted Fuel Americium HEA 242", + "tag.item.neoforge.depleted_fuel_americium_hea_242_ni": "Depleted Fuel Americium HEA 242 Nitride", + "tag.item.neoforge.depleted_fuel_americium_hea_242_ox": "Depleted Fuel Americium HEA 242 Oxide", + "tag.item.neoforge.depleted_fuel_americium_hea_242_za": "Depleted Fuel Americium HEA 242 ZA", + "tag.item.neoforge.depleted_fuel_americium_lea_242": "Depleted Fuel Americium LEA 242", + "tag.item.neoforge.depleted_fuel_americium_lea_242_ni": "Depleted Fuel Americium LEA 242 Nitride", + "tag.item.neoforge.depleted_fuel_americium_lea_242_ox": "Depleted Fuel Americium LEA 242 Oxide", + "tag.item.neoforge.depleted_fuel_americium_lea_242_za": "Depleted Fuel Americium LEA 242 ZA", + "tag.item.neoforge.depleted_fuel_berkelium_heb_248": "Depleted Fuel Berkelium HEB 248", + "tag.item.neoforge.depleted_fuel_berkelium_heb_248_ni": "Depleted Fuel Berkelium HEB 248 Nitride", + "tag.item.neoforge.depleted_fuel_berkelium_heb_248_ox": "Depleted Fuel Berkelium HEB 248 Oxide", + "tag.item.neoforge.depleted_fuel_berkelium_heb_248_za": "Depleted Fuel Berkelium HEB 248 ZA", + "tag.item.neoforge.depleted_fuel_berkelium_leb_248": "Depleted Fuel Berkelium LEB 248", + "tag.item.neoforge.depleted_fuel_berkelium_leb_248_ni": "Depleted Fuel Berkelium LEB 248 Nitride", + "tag.item.neoforge.depleted_fuel_berkelium_leb_248_ox": "Depleted Fuel Berkelium LEB 248 Oxide", + "tag.item.neoforge.depleted_fuel_berkelium_leb_248_za": "Depleted Fuel Berkelium LEB 248 ZA", + "tag.item.neoforge.depleted_fuel_californium_hecf_249": "Depleted Fuel Californium Hecf 249", + "tag.item.neoforge.depleted_fuel_californium_hecf_249_ni": "Depleted Fuel Californium Hecf 249 Nitride", + "tag.item.neoforge.depleted_fuel_californium_hecf_249_ox": "Depleted Fuel Californium Hecf 249 Oxide", + "tag.item.neoforge.depleted_fuel_californium_hecf_249_za": "Depleted Fuel Californium Hecf 249 ZA", + "tag.item.neoforge.depleted_fuel_californium_hecf_251": "Depleted Fuel Californium Hecf 251", + "tag.item.neoforge.depleted_fuel_californium_hecf_251_ni": "Depleted Fuel Californium Hecf 251 Nitride", + "tag.item.neoforge.depleted_fuel_californium_hecf_251_ox": "Depleted Fuel Californium Hecf 251 Oxide", + "tag.item.neoforge.depleted_fuel_californium_hecf_251_za": "Depleted Fuel Californium Hecf 251 ZA", + "tag.item.neoforge.depleted_fuel_californium_lecf_249": "Depleted Fuel Californium Lecf 249", + "tag.item.neoforge.depleted_fuel_californium_lecf_249_ni": "Depleted Fuel Californium Lecf 249 Nitride", + "tag.item.neoforge.depleted_fuel_californium_lecf_249_ox": "Depleted Fuel Californium Lecf 249 Oxide", + "tag.item.neoforge.depleted_fuel_californium_lecf_249_za": "Depleted Fuel Californium Lecf 249 ZA", + "tag.item.neoforge.depleted_fuel_californium_lecf_251": "Depleted Fuel Californium Lecf 251", + "tag.item.neoforge.depleted_fuel_californium_lecf_251_ni": "Depleted Fuel Californium Lecf 251 Nitride", + "tag.item.neoforge.depleted_fuel_californium_lecf_251_ox": "Depleted Fuel Californium Lecf 251 Oxide", + "tag.item.neoforge.depleted_fuel_californium_lecf_251_za": "Depleted Fuel Californium Lecf 251 ZA", + "tag.item.neoforge.depleted_fuel_curium_hecm_243": "Depleted Fuel Curium Hecm 243", + "tag.item.neoforge.depleted_fuel_curium_hecm_243_ni": "Depleted Fuel Curium Hecm 243 Nitride", + "tag.item.neoforge.depleted_fuel_curium_hecm_243_ox": "Depleted Fuel Curium Hecm 243 Oxide", + "tag.item.neoforge.depleted_fuel_curium_hecm_243_za": "Depleted Fuel Curium Hecm 243 ZA", + "tag.item.neoforge.depleted_fuel_curium_hecm_245": "Depleted Fuel Curium Hecm 245", + "tag.item.neoforge.depleted_fuel_curium_hecm_245_ni": "Depleted Fuel Curium Hecm 245 Nitride", + "tag.item.neoforge.depleted_fuel_curium_hecm_245_ox": "Depleted Fuel Curium Hecm 245 Oxide", + "tag.item.neoforge.depleted_fuel_curium_hecm_245_za": "Depleted Fuel Curium Hecm 245 ZA", + "tag.item.neoforge.depleted_fuel_curium_hecm_247": "Depleted Fuel Curium Hecm 247", + "tag.item.neoforge.depleted_fuel_curium_hecm_247_ni": "Depleted Fuel Curium Hecm 247 Nitride", + "tag.item.neoforge.depleted_fuel_curium_hecm_247_ox": "Depleted Fuel Curium Hecm 247 Oxide", + "tag.item.neoforge.depleted_fuel_curium_hecm_247_za": "Depleted Fuel Curium Hecm 247 ZA", + "tag.item.neoforge.depleted_fuel_curium_lecm_243": "Depleted Fuel Curium Lecm 243", + "tag.item.neoforge.depleted_fuel_curium_lecm_243_ni": "Depleted Fuel Curium Lecm 243 Nitride", + "tag.item.neoforge.depleted_fuel_curium_lecm_243_ox": "Depleted Fuel Curium Lecm 243 Oxide", + "tag.item.neoforge.depleted_fuel_curium_lecm_243_za": "Depleted Fuel Curium Lecm 243 ZA", + "tag.item.neoforge.depleted_fuel_curium_lecm_245": "Depleted Fuel Curium Lecm 245", + "tag.item.neoforge.depleted_fuel_curium_lecm_245_ni": "Depleted Fuel Curium Lecm 245 Nitride", + "tag.item.neoforge.depleted_fuel_curium_lecm_245_ox": "Depleted Fuel Curium Lecm 245 Oxide", + "tag.item.neoforge.depleted_fuel_curium_lecm_245_za": "Depleted Fuel Curium Lecm 245 ZA", + "tag.item.neoforge.depleted_fuel_curium_lecm_247": "Depleted Fuel Curium Lecm 247", + "tag.item.neoforge.depleted_fuel_curium_lecm_247_ni": "Depleted Fuel Curium Lecm 247 Nitride", + "tag.item.neoforge.depleted_fuel_curium_lecm_247_ox": "Depleted Fuel Curium Lecm 247 Oxide", + "tag.item.neoforge.depleted_fuel_curium_lecm_247_za": "Depleted Fuel Curium Lecm 247 ZA", + "tag.item.neoforge.depleted_fuel_mixed_mix_239": "Depleted Fuel Mixed MIX 239", + "tag.item.neoforge.depleted_fuel_mixed_mix_239_ni": "Depleted Fuel Mixed MIX 239 Nitride", + "tag.item.neoforge.depleted_fuel_mixed_mix_239_ox": "Depleted Fuel Mixed MIX 239 Oxide", + "tag.item.neoforge.depleted_fuel_mixed_mix_239_za": "Depleted Fuel Mixed MIX 239 ZA", + "tag.item.neoforge.depleted_fuel_mixed_mix_241": "Depleted Fuel Mixed MIX 241", + "tag.item.neoforge.depleted_fuel_mixed_mix_241_ni": "Depleted Fuel Mixed MIX 241 Nitride", + "tag.item.neoforge.depleted_fuel_mixed_mix_241_ox": "Depleted Fuel Mixed MIX 241 Oxide", + "tag.item.neoforge.depleted_fuel_mixed_mix_241_za": "Depleted Fuel Mixed MIX 241 ZA", + "tag.item.neoforge.depleted_fuel_neptunium_hen_236": "Depleted Fuel Neptunium HEN 236", + "tag.item.neoforge.depleted_fuel_neptunium_hen_236_ni": "Depleted Fuel Neptunium HEN 236 Nitride", + "tag.item.neoforge.depleted_fuel_neptunium_hen_236_ox": "Depleted Fuel Neptunium HEN 236 Oxide", + "tag.item.neoforge.depleted_fuel_neptunium_hen_236_za": "Depleted Fuel Neptunium HEN 236 ZA", + "tag.item.neoforge.depleted_fuel_neptunium_len_236": "Depleted Fuel Neptunium LEN 236", + "tag.item.neoforge.depleted_fuel_neptunium_len_236_ni": "Depleted Fuel Neptunium LEN 236 Nitride", + "tag.item.neoforge.depleted_fuel_neptunium_len_236_ox": "Depleted Fuel Neptunium LEN 236 Oxide", + "tag.item.neoforge.depleted_fuel_neptunium_len_236_za": "Depleted Fuel Neptunium LEN 236 ZA", + "tag.item.neoforge.depleted_fuel_plutonium_hep_239": "Depleted Fuel Plutonium HEP 239", + "tag.item.neoforge.depleted_fuel_plutonium_hep_239_ni": "Depleted Fuel Plutonium HEP 239 Nitride", + "tag.item.neoforge.depleted_fuel_plutonium_hep_239_ox": "Depleted Fuel Plutonium HEP 239 Oxide", + "tag.item.neoforge.depleted_fuel_plutonium_hep_239_za": "Depleted Fuel Plutonium HEP 239 ZA", + "tag.item.neoforge.depleted_fuel_plutonium_hep_241": "Depleted Fuel Plutonium HEP 241", + "tag.item.neoforge.depleted_fuel_plutonium_hep_241_ni": "Depleted Fuel Plutonium HEP 241 Nitride", + "tag.item.neoforge.depleted_fuel_plutonium_hep_241_ox": "Depleted Fuel Plutonium HEP 241 Oxide", + "tag.item.neoforge.depleted_fuel_plutonium_hep_241_za": "Depleted Fuel Plutonium HEP 241 ZA", + "tag.item.neoforge.depleted_fuel_plutonium_lep_239": "Depleted Fuel Plutonium LEP 239", + "tag.item.neoforge.depleted_fuel_plutonium_lep_239_ni": "Depleted Fuel Plutonium LEP 239 Nitride", + "tag.item.neoforge.depleted_fuel_plutonium_lep_239_ox": "Depleted Fuel Plutonium LEP 239 Oxide", + "tag.item.neoforge.depleted_fuel_plutonium_lep_239_za": "Depleted Fuel Plutonium LEP 239 ZA", + "tag.item.neoforge.depleted_fuel_plutonium_lep_241": "Depleted Fuel Plutonium LEP 241", + "tag.item.neoforge.depleted_fuel_plutonium_lep_241_ni": "Depleted Fuel Plutonium LEP 241 Nitride", + "tag.item.neoforge.depleted_fuel_plutonium_lep_241_ox": "Depleted Fuel Plutonium LEP 241 Oxide", + "tag.item.neoforge.depleted_fuel_plutonium_lep_241_za": "Depleted Fuel Plutonium LEP 241 ZA", + "tag.item.neoforge.depleted_fuel_thorium_tbu": "Depleted Fuel Thorium TBU", + "tag.item.neoforge.depleted_fuel_thorium_tbu_ni": "Depleted Fuel Thorium TBU Nitride", + "tag.item.neoforge.depleted_fuel_thorium_tbu_ox": "Depleted Fuel Thorium TBU Oxide", + "tag.item.neoforge.depleted_fuel_thorium_tbu_za": "Depleted Fuel Thorium TBU ZA", + "tag.item.neoforge.depleted_fuel_uranium_heu_233": "Depleted Fuel Uranium HEU 233", + "tag.item.neoforge.depleted_fuel_uranium_heu_233_ni": "Depleted Fuel Uranium HEU 233 Nitride", + "tag.item.neoforge.depleted_fuel_uranium_heu_233_ox": "Depleted Fuel Uranium HEU 233 Oxide", + "tag.item.neoforge.depleted_fuel_uranium_heu_233_za": "Depleted Fuel Uranium HEU 233 ZA", + "tag.item.neoforge.depleted_fuel_uranium_heu_235": "Depleted Fuel Uranium HEU 235", + "tag.item.neoforge.depleted_fuel_uranium_heu_235_ni": "Depleted Fuel Uranium HEU 235 Nitride", + "tag.item.neoforge.depleted_fuel_uranium_heu_235_ox": "Depleted Fuel Uranium HEU 235 Oxide", + "tag.item.neoforge.depleted_fuel_uranium_heu_235_za": "Depleted Fuel Uranium HEU 235 ZA", + "tag.item.neoforge.depleted_fuel_uranium_leu_233": "Depleted Fuel Uranium LEU 233", + "tag.item.neoforge.depleted_fuel_uranium_leu_233_ni": "Depleted Fuel Uranium LEU 233 Nitride", + "tag.item.neoforge.depleted_fuel_uranium_leu_233_ox": "Depleted Fuel Uranium LEU 233 Oxide", + "tag.item.neoforge.depleted_fuel_uranium_leu_233_za": "Depleted Fuel Uranium LEU 233 ZA", + "tag.item.neoforge.depleted_fuel_uranium_leu_235": "Depleted Fuel Uranium LEU 235", + "tag.item.neoforge.depleted_fuel_uranium_leu_235_ni": "Depleted Fuel Uranium LEU 235 Nitride", + "tag.item.neoforge.depleted_fuel_uranium_leu_235_ox": "Depleted Fuel Uranium LEU 235 Oxide", + "tag.item.neoforge.depleted_fuel_uranium_leu_235_za": "Depleted Fuel Uranium LEU 235 ZA", + "tag.item.neoforge.depleted_fuel_xenorium_xen_298": "Depleted Fuel Xenorium XEN 298", + "tag.item.neoforge.deuterium": "Deuterium", + "tag.item.neoforge.diborane": "Diborane", + "tag.item.neoforge.dusts.alugentum": "Alugentum (Dusts)", + "tag.item.neoforge.dusts.aluminium": "Aluminium (Dusts)", + "tag.item.neoforge.dusts.aluminum": "Aluminum (Dusts)", + "tag.item.neoforge.dusts.arsenic": "Arsenic (Dusts)", + "tag.item.neoforge.dusts.barium": "Barium (Dusts)", + "tag.item.neoforge.dusts.beryllium": "Beryllium (Dusts)", + "tag.item.neoforge.dusts.bismuth": "Bismuth (Dusts)", + "tag.item.neoforge.dusts.borax": "Borax (Dusts)", + "tag.item.neoforge.dusts.boron": "Boron (Dusts)", + "tag.item.neoforge.dusts.boron_arsenide": "Boron Arsenide (Dusts)", + "tag.item.neoforge.dusts.boron_nitride": "Boron Nitride (Dusts)", + "tag.item.neoforge.dusts.bronze": "Bronze (Dusts)", + "tag.item.neoforge.dusts.bscco": "Bscco (Dusts)", + "tag.item.neoforge.dusts.c_mn_blend": "C Mn Blend (Dusts)", + "tag.item.neoforge.dusts.caesium_137": "Caesium 137 (Dusts)", + "tag.item.neoforge.dusts.calcium": "Calcium (Dusts)", + "tag.item.neoforge.dusts.calcium_sulfate": "Calcium Sulfate (Dusts)", + "tag.item.neoforge.dusts.carbon_manganese": "Carbon Manganese (Dusts)", + "tag.item.neoforge.dusts.carobbiite": "Carobbiite (Dusts)", + "tag.item.neoforge.dusts.charcoal": "Charcoal (Dusts)", + "tag.item.neoforge.dusts.chromium": "Chromium (Dusts)", + "tag.item.neoforge.dusts.coal": "Coal (Dusts)", + "tag.item.neoforge.dusts.cobalt": "Cobalt (Dusts)", + "tag.item.neoforge.dusts.copper": "Copper (Dusts)", + "tag.item.neoforge.dusts.crystal_binder": "Crystal Binder (Dusts)", + "tag.item.neoforge.dusts.diamond": "Diamond (Dusts)", + "tag.item.neoforge.dusts.dimensional_blend": "Dimensional Blend (Dusts)", + "tag.item.neoforge.dusts.electrum": "Electrum (Dusts)", + "tag.item.neoforge.dusts.emerald": "Emerald (Dusts)", + "tag.item.neoforge.dusts.end_stone": "End Stone (Dusts)", + "tag.item.neoforge.dusts.enderium": "Enderium (Dusts)", + "tag.item.neoforge.dusts.energetic_blend": "Energetic Blend (Dusts)", + "tag.item.neoforge.dusts.erbium": "Erbium (Dusts)", + "tag.item.neoforge.dusts.europium_155": "Europium 155 (Dusts)", + "tag.item.neoforge.dusts.extreme": "Extreme (Dusts)", + "tag.item.neoforge.dusts.ferroboron": "Ferroboron (Dusts)", + "tag.item.neoforge.dusts.fluorite": "Fluorite (Dusts)", + "tag.item.neoforge.dusts.gadolinium": "Gadolinium (Dusts)", + "tag.item.neoforge.dusts.germanium": "Germanium (Dusts)", + "tag.item.neoforge.dusts.gold": "Gold (Dusts)", + "tag.item.neoforge.dusts.graphite": "Graphite (Dusts)", + "tag.item.neoforge.dusts.hafnium": "Hafnium (Dusts)", + "tag.item.neoforge.dusts.hard_carbon": "Hard Carbon (Dusts)", + "tag.item.neoforge.dusts.hsla_steel": "Hsla Steel (Dusts)", + "tag.item.neoforge.dusts.iodine": "Iodine (Dusts)", + "tag.item.neoforge.dusts.iridium": "Iridium (Dusts)", + "tag.item.neoforge.dusts.iron": "Iron (Dusts)", + "tag.item.neoforge.dusts.irradiated_borax": "Irradiated Borax (Dusts)", + "tag.item.neoforge.dusts.lapis": "Lapis (Dusts)", + "tag.item.neoforge.dusts.lead": "Lead (Dusts)", + "tag.item.neoforge.dusts.lead_platinum": "Lead Platinum (Dusts)", + "tag.item.neoforge.dusts.lithium": "Lithium (Dusts)", + "tag.item.neoforge.dusts.lithium_manganese_dioxide": "Lithium Manganese Dioxide (Dusts)", + "tag.item.neoforge.dusts.magnesium": "Magnesium (Dusts)", + "tag.item.neoforge.dusts.manganese": "Manganese (Dusts)", + "tag.item.neoforge.dusts.manganese_dioxide": "Manganese Dioxide (Dusts)", + "tag.item.neoforge.dusts.manganese_oxide": "Manganese Oxide (Dusts)", + "tag.item.neoforge.dusts.molybdenum": "Molybdenum (Dusts)", + "tag.item.neoforge.dusts.neodymium": "Neodymium (Dusts)", + "tag.item.neoforge.dusts.netherite": "Netherite (Dusts)", + "tag.item.neoforge.dusts.niobium": "Niobium (Dusts)", + "tag.item.neoforge.dusts.obsidian": "Obsidian (Dusts)", + "tag.item.neoforge.dusts.osmium": "Osmium (Dusts)", + "tag.item.neoforge.dusts.palladium": "Palladium (Dusts)", + "tag.item.neoforge.dusts.platinum": "Platinum (Dusts)", + "tag.item.neoforge.dusts.polonium": "Polonium (Dusts)", + "tag.item.neoforge.dusts.potassium": "Potassium (Dusts)", + "tag.item.neoforge.dusts.potassium_fluoride": "Potassium Fluoride (Dusts)", + "tag.item.neoforge.dusts.potassium_hydroxide": "Potassium Hydroxide (Dusts)", + "tag.item.neoforge.dusts.potassium_iodide": "Potassium Iodide (Dusts)", + "tag.item.neoforge.dusts.promethium_147": "Promethium 147 (Dusts)", + "tag.item.neoforge.dusts.protactinium_231": "Protactinium 231 (Dusts)", + "tag.item.neoforge.dusts.protactinium_233": "Protactinium 233 (Dusts)", + "tag.item.neoforge.dusts.purpur": "Purpur (Dusts)", + "tag.item.neoforge.dusts.pyrolitic_carbon": "Pyrolitic Carbon (Dusts)", + "tag.item.neoforge.dusts.quartz": "Quartz (Dusts)", + "tag.item.neoforge.dusts.radium": "Radium (Dusts)", + "tag.item.neoforge.dusts.rhodochrosite": "Rhodochrosite (Dusts)", + "tag.item.neoforge.dusts.ruthenium_106": "Ruthenium 106 (Dusts)", + "tag.item.neoforge.dusts.salt": "Salt (Dusts)", + "tag.item.neoforge.dusts.samarium": "Samarium (Dusts)", + "tag.item.neoforge.dusts.shibuichi": "Shibuichi (Dusts)", + "tag.item.neoforge.dusts.sic_sic_cmc": "Sic Sic Cmc (Dusts)", + "tag.item.neoforge.dusts.silicon_carbide": "Silicon Carbide (Dusts)", + "tag.item.neoforge.dusts.silver": "Silver (Dusts)", + "tag.item.neoforge.dusts.sodium": "Sodium (Dusts)", + "tag.item.neoforge.dusts.sodium_chloride": "Sodium Chloride (Dusts)", + "tag.item.neoforge.dusts.sodium_fluoride": "Sodium Fluoride (Dusts)", + "tag.item.neoforge.dusts.sodium_hydroxide": "Sodium Hydroxide (Dusts)", + "tag.item.neoforge.dusts.steel": "Steel (Dusts)", + "tag.item.neoforge.dusts.strontium": "Strontium (Dusts)", + "tag.item.neoforge.dusts.strontium_90": "Strontium 90 (Dusts)", + "tag.item.neoforge.dusts.sulfur": "Sulfur (Dusts)", + "tag.item.neoforge.dusts.tbp": "Tbp (Dusts)", + "tag.item.neoforge.dusts.terbium": "Terbium (Dusts)", + "tag.item.neoforge.dusts.thallium": "Thallium (Dusts)", + "tag.item.neoforge.dusts.thermoconducting": "Thermoconducting (Dusts)", + "tag.item.neoforge.dusts.thorium": "Thorium (Dusts)", + "tag.item.neoforge.dusts.tin": "Tin (Dusts)", + "tag.item.neoforge.dusts.tin_silver": "Tin Silver (Dusts)", + "tag.item.neoforge.dusts.titanium": "Titanium (Dusts)", + "tag.item.neoforge.dusts.tough_alloy": "Tough Alloy (Dusts)", + "tag.item.neoforge.dusts.tungsten": "Tungsten (Dusts)", + "tag.item.neoforge.dusts.uranium": "Uranium (Dusts)", + "tag.item.neoforge.dusts.villiaumite": "Villiaumite (Dusts)", + "tag.item.neoforge.dusts.yellowcake": "Yellowcake (Dusts)", + "tag.item.neoforge.dusts.ytterbium": "Ytterbium (Dusts)", + "tag.item.neoforge.dusts.yttrium": "Yttrium (Dusts)", + "tag.item.neoforge.dusts.zinc": "Zinc (Dusts)", + "tag.item.neoforge.dusts.zircaloy": "Zircaloy (Dusts)", + "tag.item.neoforge.dusts.zirconium": "Zirconium (Dusts)", + "tag.item.neoforge.dusts.zirconium_molybdenum": "Zirconium Molybdenum (Dusts)", + "tag.item.neoforge.dusts/alugentum": "Alugentum (Dusts)", + "tag.item.neoforge.dusts/aluminium": "Aluminium (Dusts)", + "tag.item.neoforge.dusts/aluminum": "Aluminum (Dusts)", + "tag.item.neoforge.dusts/arsenic": "Arsenic (Dusts)", + "tag.item.neoforge.dusts/barium": "Barium (Dusts)", + "tag.item.neoforge.dusts/beryllium": "Beryllium (Dusts)", + "tag.item.neoforge.dusts/bismuth": "Bismuth (Dusts)", + "tag.item.neoforge.dusts/borax": "Borax (Dusts)", + "tag.item.neoforge.dusts/boron": "Boron (Dusts)", + "tag.item.neoforge.dusts/boron_arsenide": "Boron Arsenide (Dusts)", + "tag.item.neoforge.dusts/boron_nitride": "Boron Nitride (Dusts)", + "tag.item.neoforge.dusts/bronze": "Bronze (Dusts)", + "tag.item.neoforge.dusts/bscco": "Bscco (Dusts)", + "tag.item.neoforge.dusts/c_mn_blend": "C Mn Blend (Dusts)", + "tag.item.neoforge.dusts/caesium_137": "Caesium 137 (Dusts)", + "tag.item.neoforge.dusts/calcium": "Calcium (Dusts)", + "tag.item.neoforge.dusts/calcium_sulfate": "Calcium Sulfate (Dusts)", + "tag.item.neoforge.dusts/carbon_manganese": "Carbon Manganese (Dusts)", + "tag.item.neoforge.dusts/carobbiite": "Carobbiite (Dusts)", + "tag.item.neoforge.dusts/charcoal": "Charcoal (Dusts)", + "tag.item.neoforge.dusts/chromium": "Chromium (Dusts)", + "tag.item.neoforge.dusts/coal": "Coal (Dusts)", + "tag.item.neoforge.dusts/cobalt": "Cobalt (Dusts)", + "tag.item.neoforge.dusts/copper": "Copper (Dusts)", + "tag.item.neoforge.dusts/crystal_binder": "Crystal Binder (Dusts)", + "tag.item.neoforge.dusts/diamond": "Diamond (Dusts)", + "tag.item.neoforge.dusts/dimensional_blend": "Dimensional Blend (Dusts)", + "tag.item.neoforge.dusts/electrum": "Electrum (Dusts)", + "tag.item.neoforge.dusts/emerald": "Emerald (Dusts)", + "tag.item.neoforge.dusts/end_stone": "End Stone (Dusts)", + "tag.item.neoforge.dusts/enderium": "Enderium (Dusts)", + "tag.item.neoforge.dusts/energetic_blend": "Energetic Blend (Dusts)", + "tag.item.neoforge.dusts/erbium": "Erbium (Dusts)", + "tag.item.neoforge.dusts/europium_155": "Europium 155 (Dusts)", + "tag.item.neoforge.dusts/extreme": "Extreme (Dusts)", + "tag.item.neoforge.dusts/ferroboron": "Ferroboron (Dusts)", + "tag.item.neoforge.dusts/fluorite": "Fluorite (Dusts)", + "tag.item.neoforge.dusts/gadolinium": "Gadolinium (Dusts)", + "tag.item.neoforge.dusts/germanium": "Germanium (Dusts)", + "tag.item.neoforge.dusts/gold": "Gold (Dusts)", + "tag.item.neoforge.dusts/graphite": "Graphite (Dusts)", + "tag.item.neoforge.dusts/hafnium": "Hafnium (Dusts)", + "tag.item.neoforge.dusts/hard_carbon": "Hard Carbon (Dusts)", + "tag.item.neoforge.dusts/hsla_steel": "Hsla Steel (Dusts)", + "tag.item.neoforge.dusts/iodine": "Iodine (Dusts)", + "tag.item.neoforge.dusts/iridium": "Iridium (Dusts)", + "tag.item.neoforge.dusts/iron": "Iron (Dusts)", + "tag.item.neoforge.dusts/irradiated_borax": "Irradiated Borax (Dusts)", + "tag.item.neoforge.dusts/lapis": "Lapis (Dusts)", + "tag.item.neoforge.dusts/lead": "Lead (Dusts)", + "tag.item.neoforge.dusts/lead_platinum": "Lead Platinum (Dusts)", + "tag.item.neoforge.dusts/lithium": "Lithium (Dusts)", + "tag.item.neoforge.dusts/lithium_manganese_dioxide": "Lithium Manganese Dioxide (Dusts)", + "tag.item.neoforge.dusts/magnesium": "Magnesium (Dusts)", + "tag.item.neoforge.dusts/manganese": "Manganese (Dusts)", + "tag.item.neoforge.dusts/manganese_dioxide": "Manganese Dioxide (Dusts)", + "tag.item.neoforge.dusts/manganese_oxide": "Manganese Oxide (Dusts)", + "tag.item.neoforge.dusts/molybdenum": "Molybdenum (Dusts)", + "tag.item.neoforge.dusts/neodymium": "Neodymium (Dusts)", + "tag.item.neoforge.dusts/netherite": "Netherite (Dusts)", + "tag.item.neoforge.dusts/niobium": "Niobium (Dusts)", + "tag.item.neoforge.dusts/obsidian": "Obsidian (Dusts)", + "tag.item.neoforge.dusts/osmium": "Osmium (Dusts)", + "tag.item.neoforge.dusts/palladium": "Palladium (Dusts)", + "tag.item.neoforge.dusts/platinum": "Platinum (Dusts)", + "tag.item.neoforge.dusts/polonium": "Polonium (Dusts)", + "tag.item.neoforge.dusts/potassium": "Potassium (Dusts)", + "tag.item.neoforge.dusts/potassium_fluoride": "Potassium Fluoride (Dusts)", + "tag.item.neoforge.dusts/potassium_hydroxide": "Potassium Hydroxide (Dusts)", + "tag.item.neoforge.dusts/potassium_iodide": "Potassium Iodide (Dusts)", + "tag.item.neoforge.dusts/promethium_147": "Promethium 147 (Dusts)", + "tag.item.neoforge.dusts/protactinium_231": "Protactinium 231 (Dusts)", + "tag.item.neoforge.dusts/protactinium_233": "Protactinium 233 (Dusts)", + "tag.item.neoforge.dusts/purpur": "Purpur (Dusts)", + "tag.item.neoforge.dusts/pyrolitic_carbon": "Pyrolitic Carbon (Dusts)", + "tag.item.neoforge.dusts/quartz": "Quartz (Dusts)", + "tag.item.neoforge.dusts/radium": "Radium (Dusts)", + "tag.item.neoforge.dusts/rhodochrosite": "Rhodochrosite (Dusts)", + "tag.item.neoforge.dusts/ruthenium_106": "Ruthenium 106 (Dusts)", + "tag.item.neoforge.dusts/salt": "Salt (Dusts)", + "tag.item.neoforge.dusts/samarium": "Samarium (Dusts)", + "tag.item.neoforge.dusts/shibuichi": "Shibuichi (Dusts)", + "tag.item.neoforge.dusts/sic_sic_cmc": "Sic Sic Cmc (Dusts)", + "tag.item.neoforge.dusts/silicon_carbide": "Silicon Carbide (Dusts)", + "tag.item.neoforge.dusts/silver": "Silver (Dusts)", + "tag.item.neoforge.dusts/sodium": "Sodium (Dusts)", + "tag.item.neoforge.dusts/sodium_chloride": "Sodium Chloride (Dusts)", + "tag.item.neoforge.dusts/sodium_fluoride": "Sodium Fluoride (Dusts)", + "tag.item.neoforge.dusts/sodium_hydroxide": "Sodium Hydroxide (Dusts)", + "tag.item.neoforge.dusts/steel": "Steel (Dusts)", + "tag.item.neoforge.dusts/strontium": "Strontium (Dusts)", + "tag.item.neoforge.dusts/strontium_90": "Strontium 90 (Dusts)", + "tag.item.neoforge.dusts/sulfur": "Sulfur (Dusts)", + "tag.item.neoforge.dusts/tbp": "Tbp (Dusts)", + "tag.item.neoforge.dusts/terbium": "Terbium (Dusts)", + "tag.item.neoforge.dusts/thallium": "Thallium (Dusts)", + "tag.item.neoforge.dusts/thermoconducting": "Thermoconducting (Dusts)", + "tag.item.neoforge.dusts/thorium": "Thorium (Dusts)", + "tag.item.neoforge.dusts/tin": "Tin (Dusts)", + "tag.item.neoforge.dusts/tin_silver": "Tin Silver (Dusts)", + "tag.item.neoforge.dusts/titanium": "Titanium (Dusts)", + "tag.item.neoforge.dusts/tough_alloy": "Tough Alloy (Dusts)", + "tag.item.neoforge.dusts/tungsten": "Tungsten (Dusts)", + "tag.item.neoforge.dusts/uranium": "Uranium (Dusts)", + "tag.item.neoforge.dusts/villiaumite": "Villiaumite (Dusts)", + "tag.item.neoforge.dusts/yellowcake": "Yellowcake (Dusts)", + "tag.item.neoforge.dusts/ytterbium": "Ytterbium (Dusts)", + "tag.item.neoforge.dusts/yttrium": "Yttrium (Dusts)", + "tag.item.neoforge.dusts/zinc": "Zinc (Dusts)", + "tag.item.neoforge.dusts/zircaloy": "Zircaloy (Dusts)", + "tag.item.neoforge.dusts/zirconium": "Zirconium (Dusts)", + "tag.item.neoforge.dusts/zirconium_molybdenum": "Zirconium Molybdenum (Dusts)", + "tag.item.neoforge.electrum": "Electrum", + "tag.item.neoforge.emergency_coolant": "Emergency Coolant", + "tag.item.neoforge.emergency_coolant_heated": "Emergency Coolant Heated", + "tag.item.neoforge.enderium": "Enderium", + "tag.item.neoforge.ethanol": "Ethanol", + "tag.item.neoforge.ethene": "Ethene", + "tag.item.neoforge.europium_155": "Europium 155", + "tag.item.neoforge.exhaust_steam": "Exhaust Steam", + "tag.item.neoforge.extreme": "Extreme", + "tag.item.neoforge.ferroboron": "Ferroboron", + "tag.item.neoforge.fissile_fuel": "Fissile Fuel", + "tag.item.neoforge.fluorine": "Fluorine", + "tag.item.neoforge.fluorite_water": "Fluorite Water", + "tag.item.neoforge.fluoromethane": "Fluoromethane", + "tag.item.neoforge.fuel_americium_hea_242": "Fuel Americium HEA 242", + "tag.item.neoforge.fuel_americium_hea_242_ni": "Fuel Americium HEA 242 Nitride", + "tag.item.neoforge.fuel_americium_hea_242_ox": "Fuel Americium HEA 242 Oxide", + "tag.item.neoforge.fuel_americium_hea_242_za": "Fuel Americium HEA 242 ZA", + "tag.item.neoforge.fuel_americium_lea_242": "Fuel Americium LEA 242", + "tag.item.neoforge.fuel_americium_lea_242_ni": "Fuel Americium LEA 242 Nitride", + "tag.item.neoforge.fuel_americium_lea_242_ox": "Fuel Americium LEA 242 Oxide", + "tag.item.neoforge.fuel_americium_lea_242_za": "Fuel Americium LEA 242 ZA", + "tag.item.neoforge.fuel_berkelium_heb_248": "Fuel Berkelium HEB 248", + "tag.item.neoforge.fuel_berkelium_heb_248_ni": "Fuel Berkelium HEB 248 Nitride", + "tag.item.neoforge.fuel_berkelium_heb_248_ox": "Fuel Berkelium HEB 248 Oxide", + "tag.item.neoforge.fuel_berkelium_heb_248_za": "Fuel Berkelium HEB 248 ZA", + "tag.item.neoforge.fuel_berkelium_leb_248": "Fuel Berkelium LEB 248", + "tag.item.neoforge.fuel_berkelium_leb_248_ni": "Fuel Berkelium LEB 248 Nitride", + "tag.item.neoforge.fuel_berkelium_leb_248_ox": "Fuel Berkelium LEB 248 Oxide", + "tag.item.neoforge.fuel_berkelium_leb_248_za": "Fuel Berkelium LEB 248 ZA", + "tag.item.neoforge.fuel_californium_hecf_249": "Fuel Californium Hecf 249", + "tag.item.neoforge.fuel_californium_hecf_249_ni": "Fuel Californium Hecf 249 Nitride", + "tag.item.neoforge.fuel_californium_hecf_249_ox": "Fuel Californium Hecf 249 Oxide", + "tag.item.neoforge.fuel_californium_hecf_249_za": "Fuel Californium Hecf 249 ZA", + "tag.item.neoforge.fuel_californium_hecf_251": "Fuel Californium Hecf 251", + "tag.item.neoforge.fuel_californium_hecf_251_ni": "Fuel Californium Hecf 251 Nitride", + "tag.item.neoforge.fuel_californium_hecf_251_ox": "Fuel Californium Hecf 251 Oxide", + "tag.item.neoforge.fuel_californium_hecf_251_za": "Fuel Californium Hecf 251 ZA", + "tag.item.neoforge.fuel_californium_lecf_249": "Fuel Californium Lecf 249", + "tag.item.neoforge.fuel_californium_lecf_249_ni": "Fuel Californium Lecf 249 Nitride", + "tag.item.neoforge.fuel_californium_lecf_249_ox": "Fuel Californium Lecf 249 Oxide", + "tag.item.neoforge.fuel_californium_lecf_249_za": "Fuel Californium Lecf 249 ZA", + "tag.item.neoforge.fuel_californium_lecf_251": "Fuel Californium Lecf 251", + "tag.item.neoforge.fuel_californium_lecf_251_ni": "Fuel Californium Lecf 251 Nitride", + "tag.item.neoforge.fuel_californium_lecf_251_ox": "Fuel Californium Lecf 251 Oxide", + "tag.item.neoforge.fuel_californium_lecf_251_za": "Fuel Californium Lecf 251 ZA", + "tag.item.neoforge.fuel_curium_hecm_243": "Fuel Curium Hecm 243", + "tag.item.neoforge.fuel_curium_hecm_243_ni": "Fuel Curium Hecm 243 Nitride", + "tag.item.neoforge.fuel_curium_hecm_243_ox": "Fuel Curium Hecm 243 Oxide", + "tag.item.neoforge.fuel_curium_hecm_243_za": "Fuel Curium Hecm 243 ZA", + "tag.item.neoforge.fuel_curium_hecm_245": "Fuel Curium Hecm 245", + "tag.item.neoforge.fuel_curium_hecm_245_ni": "Fuel Curium Hecm 245 Nitride", + "tag.item.neoforge.fuel_curium_hecm_245_ox": "Fuel Curium Hecm 245 Oxide", + "tag.item.neoforge.fuel_curium_hecm_245_za": "Fuel Curium Hecm 245 ZA", + "tag.item.neoforge.fuel_curium_hecm_247": "Fuel Curium Hecm 247", + "tag.item.neoforge.fuel_curium_hecm_247_ni": "Fuel Curium Hecm 247 Nitride", + "tag.item.neoforge.fuel_curium_hecm_247_ox": "Fuel Curium Hecm 247 Oxide", + "tag.item.neoforge.fuel_curium_hecm_247_za": "Fuel Curium Hecm 247 ZA", + "tag.item.neoforge.fuel_curium_lecm_243": "Fuel Curium Lecm 243", + "tag.item.neoforge.fuel_curium_lecm_243_ni": "Fuel Curium Lecm 243 Nitride", + "tag.item.neoforge.fuel_curium_lecm_243_ox": "Fuel Curium Lecm 243 Oxide", + "tag.item.neoforge.fuel_curium_lecm_243_za": "Fuel Curium Lecm 243 ZA", + "tag.item.neoforge.fuel_curium_lecm_245": "Fuel Curium Lecm 245", + "tag.item.neoforge.fuel_curium_lecm_245_ni": "Fuel Curium Lecm 245 Nitride", + "tag.item.neoforge.fuel_curium_lecm_245_ox": "Fuel Curium Lecm 245 Oxide", + "tag.item.neoforge.fuel_curium_lecm_245_za": "Fuel Curium Lecm 245 ZA", + "tag.item.neoforge.fuel_curium_lecm_247": "Fuel Curium Lecm 247", + "tag.item.neoforge.fuel_curium_lecm_247_ni": "Fuel Curium Lecm 247 Nitride", + "tag.item.neoforge.fuel_curium_lecm_247_ox": "Fuel Curium Lecm 247 Oxide", + "tag.item.neoforge.fuel_curium_lecm_247_za": "Fuel Curium Lecm 247 ZA", + "tag.item.neoforge.fuel_mixed_mix_239": "Fuel Mixed MIX 239", + "tag.item.neoforge.fuel_mixed_mix_239_ni": "Fuel Mixed MIX 239 Nitride", + "tag.item.neoforge.fuel_mixed_mix_239_ox": "Fuel Mixed MIX 239 Oxide", + "tag.item.neoforge.fuel_mixed_mix_239_za": "Fuel Mixed MIX 239 ZA", + "tag.item.neoforge.fuel_mixed_mix_241": "Fuel Mixed MIX 241", + "tag.item.neoforge.fuel_mixed_mix_241_ni": "Fuel Mixed MIX 241 Nitride", + "tag.item.neoforge.fuel_mixed_mix_241_ox": "Fuel Mixed MIX 241 Oxide", + "tag.item.neoforge.fuel_mixed_mix_241_za": "Fuel Mixed MIX 241 ZA", + "tag.item.neoforge.fuel_neptunium_hen_236": "Fuel Neptunium HEN 236", + "tag.item.neoforge.fuel_neptunium_hen_236_ni": "Fuel Neptunium HEN 236 Nitride", + "tag.item.neoforge.fuel_neptunium_hen_236_ox": "Fuel Neptunium HEN 236 Oxide", + "tag.item.neoforge.fuel_neptunium_hen_236_za": "Fuel Neptunium HEN 236 ZA", + "tag.item.neoforge.fuel_neptunium_len_236": "Fuel Neptunium LEN 236", + "tag.item.neoforge.fuel_neptunium_len_236_ni": "Fuel Neptunium LEN 236 Nitride", + "tag.item.neoforge.fuel_neptunium_len_236_ox": "Fuel Neptunium LEN 236 Oxide", + "tag.item.neoforge.fuel_neptunium_len_236_za": "Fuel Neptunium LEN 236 ZA", + "tag.item.neoforge.fuel_plutonium_hep_239": "Fuel Plutonium HEP 239", + "tag.item.neoforge.fuel_plutonium_hep_239_ni": "Fuel Plutonium HEP 239 Nitride", + "tag.item.neoforge.fuel_plutonium_hep_239_ox": "Fuel Plutonium HEP 239 Oxide", + "tag.item.neoforge.fuel_plutonium_hep_239_za": "Fuel Plutonium HEP 239 ZA", + "tag.item.neoforge.fuel_plutonium_hep_241": "Fuel Plutonium HEP 241", + "tag.item.neoforge.fuel_plutonium_hep_241_ni": "Fuel Plutonium HEP 241 Nitride", + "tag.item.neoforge.fuel_plutonium_hep_241_ox": "Fuel Plutonium HEP 241 Oxide", + "tag.item.neoforge.fuel_plutonium_hep_241_za": "Fuel Plutonium HEP 241 ZA", + "tag.item.neoforge.fuel_plutonium_lep_239": "Fuel Plutonium LEP 239", + "tag.item.neoforge.fuel_plutonium_lep_239_ni": "Fuel Plutonium LEP 239 Nitride", + "tag.item.neoforge.fuel_plutonium_lep_239_ox": "Fuel Plutonium LEP 239 Oxide", + "tag.item.neoforge.fuel_plutonium_lep_239_za": "Fuel Plutonium LEP 239 ZA", + "tag.item.neoforge.fuel_plutonium_lep_241": "Fuel Plutonium LEP 241", + "tag.item.neoforge.fuel_plutonium_lep_241_ni": "Fuel Plutonium LEP 241 Nitride", + "tag.item.neoforge.fuel_plutonium_lep_241_ox": "Fuel Plutonium LEP 241 Oxide", + "tag.item.neoforge.fuel_plutonium_lep_241_za": "Fuel Plutonium LEP 241 ZA", + "tag.item.neoforge.fuel_thorium_tbu": "Fuel Thorium TBU", + "tag.item.neoforge.fuel_thorium_tbu_ni": "Fuel Thorium TBU Nitride", + "tag.item.neoforge.fuel_thorium_tbu_ox": "Fuel Thorium TBU Oxide", + "tag.item.neoforge.fuel_thorium_tbu_za": "Fuel Thorium TBU ZA", + "tag.item.neoforge.fuel_uranium_heu_233": "Fuel Uranium HEU 233", + "tag.item.neoforge.fuel_uranium_heu_233_ni": "Fuel Uranium HEU 233 Nitride", + "tag.item.neoforge.fuel_uranium_heu_233_ox": "Fuel Uranium HEU 233 Oxide", + "tag.item.neoforge.fuel_uranium_heu_233_za": "Fuel Uranium HEU 233 ZA", + "tag.item.neoforge.fuel_uranium_heu_235": "Fuel Uranium HEU 235", + "tag.item.neoforge.fuel_uranium_heu_235_ni": "Fuel Uranium HEU 235 Nitride", + "tag.item.neoforge.fuel_uranium_heu_235_ox": "Fuel Uranium HEU 235 Oxide", + "tag.item.neoforge.fuel_uranium_heu_235_za": "Fuel Uranium HEU 235 ZA", + "tag.item.neoforge.fuel_uranium_leu_233": "Fuel Uranium LEU 233", + "tag.item.neoforge.fuel_uranium_leu_233_ni": "Fuel Uranium LEU 233 Nitride", + "tag.item.neoforge.fuel_uranium_leu_233_ox": "Fuel Uranium LEU 233 Oxide", + "tag.item.neoforge.fuel_uranium_leu_233_za": "Fuel Uranium LEU 233 ZA", + "tag.item.neoforge.fuel_uranium_leu_235": "Fuel Uranium LEU 235", + "tag.item.neoforge.fuel_uranium_leu_235_ni": "Fuel Uranium LEU 235 Nitride", + "tag.item.neoforge.fuel_uranium_leu_235_ox": "Fuel Uranium LEU 235 Oxide", + "tag.item.neoforge.fuel_uranium_leu_235_za": "Fuel Uranium LEU 235 ZA", + "tag.item.neoforge.fuel_xenorium_xen_298": "Fuel Xenorium XEN 298", + "tag.item.neoforge.gelatin": "Gelatin", + "tag.item.neoforge.gems.boron_arsenide": "Boron Arsenide (Gems)", + "tag.item.neoforge.gems.boron_nitride": "Boron Nitride (Gems)", + "tag.item.neoforge.gems.carobbiite": "Carobbiite (Gems)", + "tag.item.neoforge.gems.fluorite": "Fluorite (Gems)", + "tag.item.neoforge.gems.rhodochrosite": "Rhodochrosite (Gems)", + "tag.item.neoforge.gems.silicon": "Silicon (Gems)", + "tag.item.neoforge.gems.villiaumite": "Villiaumite (Gems)", + "tag.item.neoforge.gems/boron_arsenide": "Boron Arsenide (Gems)", + "tag.item.neoforge.gems/boron_nitride": "Boron Nitride (Gems)", + "tag.item.neoforge.gems/carobbiite": "Carobbiite (Gems)", + "tag.item.neoforge.gems/fluorite": "Fluorite (Gems)", + "tag.item.neoforge.gems/rhodochrosite": "Rhodochrosite (Gems)", + "tag.item.neoforge.gems/silicon": "Silicon (Gems)", + "tag.item.neoforge.gems/villiaumite": "Villiaumite (Gems)", + "tag.item.neoforge.glowstone": "Glowstone", + "tag.item.neoforge.gold": "Gold", + "tag.item.neoforge.gold_clean_slurry": "Gold Clean Slurry", + "tag.item.neoforge.gold_slurry": "Gold Slurry", + "tag.item.neoforge.hard_carbon": "Hard Carbon", + "tag.item.neoforge.heavy_water": "Heavy Water", + "tag.item.neoforge.helium": "Helium", + "tag.item.neoforge.helium_3": "Helium 3", + "tag.item.neoforge.high_pressure_steam": "High Pressure Steam", + "tag.item.neoforge.hsla_steel": "Hsla Steel", + "tag.item.neoforge.hydrated_gelatin": "Hydrated Gelatin", + "tag.item.neoforge.hydrochloric_acid": "Hydrochloric Acid", + "tag.item.neoforge.hydrofluoric_acid": "Hydrofluoric Acid", + "tag.item.neoforge.hydrogen": "Hydrogen", + "tag.item.neoforge.hydrogen_chloride": "Hydrogen Chloride", + "tag.item.neoforge.ice": "Ice", + "tag.item.neoforge.ingots.aluminium": "Aluminium (Ingots)", + "tag.item.neoforge.ingots.aluminum": "Aluminum (Ingots)", + "tag.item.neoforge.ingots.beryllium": "Beryllium (Ingots)", + "tag.item.neoforge.ingots.boron": "Boron (Ingots)", + "tag.item.neoforge.ingots.bronze": "Bronze (Ingots)", + "tag.item.neoforge.ingots.calcium": "Calcium (Ingots)", + "tag.item.neoforge.ingots.carbon_manganese": "Carbon Manganese (Ingots)", + "tag.item.neoforge.ingots.chromium": "Chromium (Ingots)", + "tag.item.neoforge.ingots.cobalt": "Cobalt (Ingots)", + "tag.item.neoforge.ingots.electrum": "Electrum (Ingots)", + "tag.item.neoforge.ingots.extreme": "Extreme (Ingots)", + "tag.item.neoforge.ingots.ferroboron": "Ferroboron (Ingots)", + "tag.item.neoforge.ingots.graphite": "Graphite (Ingots)", + "tag.item.neoforge.ingots.hafnium": "Hafnium (Ingots)", + "tag.item.neoforge.ingots.hard_carbon": "Hard Carbon (Ingots)", + "tag.item.neoforge.ingots.hsla_steel": "Hsla Steel (Ingots)", + "tag.item.neoforge.ingots.iridium": "Iridium (Ingots)", + "tag.item.neoforge.ingots.lead": "Lead (Ingots)", + "tag.item.neoforge.ingots.lead_platinum": "Lead Platinum (Ingots)", + "tag.item.neoforge.ingots.lithium": "Lithium (Ingots)", + "tag.item.neoforge.ingots.lithium_manganese_dioxide": "Lithium Manganese Dioxide (Ingots)", + "tag.item.neoforge.ingots.magnesium": "Magnesium (Ingots)", + "tag.item.neoforge.ingots.magnesium_diboride": "Magnesium Diboride (Ingots)", + "tag.item.neoforge.ingots.manganese": "Manganese (Ingots)", + "tag.item.neoforge.ingots.manganese_dioxide": "Manganese Dioxide (Ingots)", + "tag.item.neoforge.ingots.manganese_oxide": "Manganese Oxide (Ingots)", + "tag.item.neoforge.ingots.neutronium": "Neutronium (Ingots)", + "tag.item.neoforge.ingots.nichrome": "Nichrome (Ingots)", + "tag.item.neoforge.ingots.niobium": "Niobium (Ingots)", + "tag.item.neoforge.ingots.niobium_tin": "Niobium Tin (Ingots)", + "tag.item.neoforge.ingots.niobium_titanium": "Niobium Titanium (Ingots)", + "tag.item.neoforge.ingots.osmiridium": "Osmiridium (Ingots)", + "tag.item.neoforge.ingots.osmium": "Osmium (Ingots)", + "tag.item.neoforge.ingots.palladium": "Palladium (Ingots)", + "tag.item.neoforge.ingots.platinum": "Platinum (Ingots)", + "tag.item.neoforge.ingots.potassium": "Potassium (Ingots)", + "tag.item.neoforge.ingots.pyrolitic_carbon": "Pyrolitic Carbon (Ingots)", + "tag.item.neoforge.ingots.shibuichi": "Shibuichi (Ingots)", + "tag.item.neoforge.ingots.sic_sic_cmc": "Sic Sic Cmc (Ingots)", + "tag.item.neoforge.ingots.silicon_carbide": "Silicon Carbide (Ingots)", + "tag.item.neoforge.ingots.silver": "Silver (Ingots)", + "tag.item.neoforge.ingots.sodium": "Sodium (Ingots)", + "tag.item.neoforge.ingots.stainless_steel": "Stainless Steel (Ingots)", + "tag.item.neoforge.ingots.steel": "Steel (Ingots)", + "tag.item.neoforge.ingots.strontium": "Strontium (Ingots)", + "tag.item.neoforge.ingots.super_alloy": "Super Alloy (Ingots)", + "tag.item.neoforge.ingots.thermoconducting": "Thermoconducting (Ingots)", + "tag.item.neoforge.ingots.thorium": "Thorium (Ingots)", + "tag.item.neoforge.ingots.tin": "Tin (Ingots)", + "tag.item.neoforge.ingots.tin_silver": "Tin Silver (Ingots)", + "tag.item.neoforge.ingots.titanium": "Titanium (Ingots)", + "tag.item.neoforge.ingots.tough_alloy": "Tough Alloy (Ingots)", + "tag.item.neoforge.ingots.tungsten": "Tungsten (Ingots)", + "tag.item.neoforge.ingots.tungsten_carbide": "Tungsten Carbide (Ingots)", + "tag.item.neoforge.ingots.uranium": "Uranium (Ingots)", + "tag.item.neoforge.ingots.yttrium": "Yttrium (Ingots)", + "tag.item.neoforge.ingots.zinc": "Zinc (Ingots)", + "tag.item.neoforge.ingots.zircaloy": "Zircaloy (Ingots)", + "tag.item.neoforge.ingots.zirconium": "Zirconium (Ingots)", + "tag.item.neoforge.ingots.zirconium_molybdenum": "Zirconium Molybdenum (Ingots)", + "tag.item.neoforge.ingots/aluminium": "Aluminium (Ingots)", + "tag.item.neoforge.ingots/aluminum": "Aluminum (Ingots)", + "tag.item.neoforge.ingots/beryllium": "Beryllium (Ingots)", + "tag.item.neoforge.ingots/boron": "Boron (Ingots)", + "tag.item.neoforge.ingots/bronze": "Bronze (Ingots)", + "tag.item.neoforge.ingots/calcium": "Calcium (Ingots)", + "tag.item.neoforge.ingots/carbon_manganese": "Carbon Manganese (Ingots)", + "tag.item.neoforge.ingots/chromium": "Chromium (Ingots)", + "tag.item.neoforge.ingots/cobalt": "Cobalt (Ingots)", + "tag.item.neoforge.ingots/electrum": "Electrum (Ingots)", + "tag.item.neoforge.ingots/extreme": "Extreme (Ingots)", + "tag.item.neoforge.ingots/ferroboron": "Ferroboron (Ingots)", + "tag.item.neoforge.ingots/graphite": "Graphite (Ingots)", + "tag.item.neoforge.ingots/hafnium": "Hafnium (Ingots)", + "tag.item.neoforge.ingots/hard_carbon": "Hard Carbon (Ingots)", + "tag.item.neoforge.ingots/hsla_steel": "Hsla Steel (Ingots)", + "tag.item.neoforge.ingots/iridium": "Iridium (Ingots)", + "tag.item.neoforge.ingots/lead": "Lead (Ingots)", + "tag.item.neoforge.ingots/lead_platinum": "Lead Platinum (Ingots)", + "tag.item.neoforge.ingots/lithium": "Lithium (Ingots)", + "tag.item.neoforge.ingots/lithium_manganese_dioxide": "Lithium Manganese Dioxide (Ingots)", + "tag.item.neoforge.ingots/magnesium": "Magnesium (Ingots)", + "tag.item.neoforge.ingots/magnesium_diboride": "Magnesium Diboride (Ingots)", + "tag.item.neoforge.ingots/manganese": "Manganese (Ingots)", + "tag.item.neoforge.ingots/manganese_dioxide": "Manganese Dioxide (Ingots)", + "tag.item.neoforge.ingots/manganese_oxide": "Manganese Oxide (Ingots)", + "tag.item.neoforge.ingots/neutronium": "Neutronium (Ingots)", + "tag.item.neoforge.ingots/nichrome": "Nichrome (Ingots)", + "tag.item.neoforge.ingots/niobium": "Niobium (Ingots)", + "tag.item.neoforge.ingots/niobium_tin": "Niobium Tin (Ingots)", + "tag.item.neoforge.ingots/niobium_titanium": "Niobium Titanium (Ingots)", + "tag.item.neoforge.ingots/osmiridium": "Osmiridium (Ingots)", + "tag.item.neoforge.ingots/osmium": "Osmium (Ingots)", + "tag.item.neoforge.ingots/palladium": "Palladium (Ingots)", + "tag.item.neoforge.ingots/platinum": "Platinum (Ingots)", + "tag.item.neoforge.ingots/potassium": "Potassium (Ingots)", + "tag.item.neoforge.ingots/pyrolitic_carbon": "Pyrolitic Carbon (Ingots)", + "tag.item.neoforge.ingots/shibuichi": "Shibuichi (Ingots)", + "tag.item.neoforge.ingots/sic_sic_cmc": "Sic Sic Cmc (Ingots)", + "tag.item.neoforge.ingots/silicon_carbide": "Silicon Carbide (Ingots)", + "tag.item.neoforge.ingots/silver": "Silver (Ingots)", + "tag.item.neoforge.ingots/sodium": "Sodium (Ingots)", + "tag.item.neoforge.ingots/stainless_steel": "Stainless Steel (Ingots)", + "tag.item.neoforge.ingots/steel": "Steel (Ingots)", + "tag.item.neoforge.ingots/strontium": "Strontium (Ingots)", + "tag.item.neoforge.ingots/super_alloy": "Super Alloy (Ingots)", + "tag.item.neoforge.ingots/thermoconducting": "Thermoconducting (Ingots)", + "tag.item.neoforge.ingots/thorium": "Thorium (Ingots)", + "tag.item.neoforge.ingots/tin": "Tin (Ingots)", + "tag.item.neoforge.ingots/tin_silver": "Tin Silver (Ingots)", + "tag.item.neoforge.ingots/titanium": "Titanium (Ingots)", + "tag.item.neoforge.ingots/tough_alloy": "Tough Alloy (Ingots)", + "tag.item.neoforge.ingots/tungsten": "Tungsten (Ingots)", + "tag.item.neoforge.ingots/tungsten_carbide": "Tungsten Carbide (Ingots)", + "tag.item.neoforge.ingots/uranium": "Uranium (Ingots)", + "tag.item.neoforge.ingots/yttrium": "Yttrium (Ingots)", + "tag.item.neoforge.ingots/zinc": "Zinc (Ingots)", + "tag.item.neoforge.ingots/zircaloy": "Zircaloy (Ingots)", + "tag.item.neoforge.ingots/zirconium": "Zirconium (Ingots)", + "tag.item.neoforge.ingots/zirconium_molybdenum": "Zirconium Molybdenum (Ingots)", + "tag.item.neoforge.iridium_192": "Iridium 192", + "tag.item.neoforge.iron": "Iron", + "tag.item.neoforge.iron_clean_slurry": "Iron Clean Slurry", + "tag.item.neoforge.iron_slurry": "Iron Slurry", + "tag.item.neoforge.irradiated_borax_solution": "Irradiated Borax Solution", + "tag.item.neoforge.irradiated_boron": "Irradiated Boron", + "tag.item.neoforge.irradiated_lithium": "Irradiated Lithium", + "tag.item.neoforge.irradiated_sodium": "Irradiated Sodium", + "tag.item.neoforge.lapis": "Lapis", + "tag.item.neoforge.lead": "Lead", + "tag.item.neoforge.lead_clean_slurry": "Lead Clean Slurry", + "tag.item.neoforge.lead_platinum": "Lead Platinum", + "tag.item.neoforge.lead_slurry": "Lead Slurry", + "tag.item.neoforge.liquid_helium": "Liquid Helium", + "tag.item.neoforge.liquid_hydrogen": "Liquid Hydrogen", + "tag.item.neoforge.liquid_nitrogen": "Liquid Nitrogen", + "tag.item.neoforge.liquid_oxygen": "Liquid Oxygen", + "tag.item.neoforge.lithium": "Lithium", + "tag.item.neoforge.lithium.6": "Lithium 6", + "tag.item.neoforge.lithium.6_ni": "Lithium 6 Nitride", + "tag.item.neoforge.lithium.6_ox": "Lithium 6 Oxide", + "tag.item.neoforge.lithium.6_za": "Lithium 6 ZA", + "tag.item.neoforge.lithium.7": "Lithium 7", + "tag.item.neoforge.lithium.7_ni": "Lithium 7 Nitride", + "tag.item.neoforge.lithium.7_ox": "Lithium 7 Oxide", + "tag.item.neoforge.lithium.7_za": "Lithium 7 ZA", + "tag.item.neoforge.lithium/6": "Lithium 6", + "tag.item.neoforge.lithium/6_ni": "Lithium 6 Nitride", + "tag.item.neoforge.lithium/6_ox": "Lithium 6 Oxide", + "tag.item.neoforge.lithium/6_za": "Lithium 6 ZA", + "tag.item.neoforge.lithium/7": "Lithium 7", + "tag.item.neoforge.lithium/7_ni": "Lithium 7 Nitride", + "tag.item.neoforge.lithium/7_ox": "Lithium 7 Oxide", + "tag.item.neoforge.lithium/7_za": "Lithium 7 ZA", + "tag.item.neoforge.lithium_clean_slurry": "Lithium Clean Slurry", + "tag.item.neoforge.lithium_fluoride": "Lithium Fluoride", + "tag.item.neoforge.lithium_manganese_dioxide": "Lithium Manganese Dioxide", + "tag.item.neoforge.lithium_slurry": "Lithium Slurry", + "tag.item.neoforge.low_pressure_steam": "Low Pressure Steam", + "tag.item.neoforge.low_quality_steam": "Low Quality Steam", + "tag.item.neoforge.magnesium": "Magnesium", + "tag.item.neoforge.magnesium_24": "Magnesium 24", + "tag.item.neoforge.magnesium_26": "Magnesium 26", + "tag.item.neoforge.magnesium_clean_slurry": "Magnesium Clean Slurry", + "tag.item.neoforge.magnesium_diboride": "Magnesium Diboride", + "tag.item.neoforge.magnesium_slurry": "Magnesium Slurry", + "tag.item.neoforge.manganese": "Manganese", + "tag.item.neoforge.manganese_dioxide": "Manganese Dioxide", + "tag.item.neoforge.manganese_oxide": "Manganese Oxide", + "tag.item.neoforge.marshmallow": "Marshmallow", + "tag.item.neoforge.methanol": "Methanol", + "tag.item.neoforge.milk_chocolate": "Milk Chocolate", + "tag.item.neoforge.molten_aluminium": "Molten Aluminium", + "tag.item.neoforge.molten_aluminum": "Molten Aluminum", + "tag.item.neoforge.molten_arsenic": "Molten Arsenic", + "tag.item.neoforge.molten_beryllium": "Molten Beryllium", + "tag.item.neoforge.molten_beryllium_fluoride": "Molten Beryllium Fluoride", + "tag.item.neoforge.molten_boron": "Molten Boron", + "tag.item.neoforge.molten_boron_arsenide": "Molten Boron Arsenide", + "tag.item.neoforge.molten_bronze": "Molten Bronze", + "tag.item.neoforge.molten_caesium_137": "Molten Caesium 137", + "tag.item.neoforge.molten_carbon_manganese": "Molten Carbon Manganese", + "tag.item.neoforge.molten_cobalt": "Molten Cobalt", + "tag.item.neoforge.molten_cocoa_butter": "Molten Cocoa Butter", + "tag.item.neoforge.molten_copper": "Molten Copper", + "tag.item.neoforge.molten_corium": "Molten Corium", + "tag.item.neoforge.molten_cryotheum": "Molten Cryotheum", + "tag.item.neoforge.molten_electrum": "Molten Electrum", + "tag.item.neoforge.molten_enderium": "Molten Enderium", + "tag.item.neoforge.molten_ethanol": "Molten Ethanol", + "tag.item.neoforge.molten_europium_155": "Molten Europium 155", + "tag.item.neoforge.molten_extreme": "Molten Extreme", + "tag.item.neoforge.molten_ferroboron": "Molten Ferroboron", + "tag.item.neoforge.molten_fissile_fuel": "Molten Fissile Fuel", + "tag.item.neoforge.molten_gelatin": "Molten Gelatin", + "tag.item.neoforge.molten_glowstone": "Molten Glowstone", + "tag.item.neoforge.molten_gold": "Molten Gold", + "tag.item.neoforge.molten_hard_carbon": "Molten Hard Carbon", + "tag.item.neoforge.molten_hsla_steel": "Molten Hsla Steel", + "tag.item.neoforge.molten_hydrated_gelatin": "Molten Hydrated Gelatin", + "tag.item.neoforge.molten_hydrogen_chloride": "Molten Hydrogen Chloride", + "tag.item.neoforge.molten_ice": "Molten Ice", + "tag.item.neoforge.molten_iron": "Molten Iron", + "tag.item.neoforge.molten_irradiated_boron": "Molten Irradiated Boron", + "tag.item.neoforge.molten_irradiated_lithium": "Molten Irradiated Lithium", + "tag.item.neoforge.molten_irradiated_sodium": "Molten Irradiated Sodium", + "tag.item.neoforge.molten_lapis": "Molten Lapis", + "tag.item.neoforge.molten_lead": "Molten Lead", + "tag.item.neoforge.molten_lead_platinum": "Molten Lead Platinum", + "tag.item.neoforge.molten_lithium": "Molten Lithium", + "tag.item.neoforge.molten_lithium_fluoride": "Molten Lithium Fluoride", + "tag.item.neoforge.molten_lithium_manganese_dioxide": "Molten Lithium Manganese Dioxide", + "tag.item.neoforge.molten_magnesium": "Molten Magnesium", + "tag.item.neoforge.molten_magnesium_diboride": "Molten Magnesium Diboride", + "tag.item.neoforge.molten_manganese": "Molten Manganese", + "tag.item.neoforge.molten_manganese_dioxide": "Molten Manganese Dioxide", + "tag.item.neoforge.molten_manganese_oxide": "Molten Manganese Oxide", + "tag.item.neoforge.molten_marshmallow": "Molten Marshmallow", + "tag.item.neoforge.molten_methanol": "Molten Methanol", + "tag.item.neoforge.molten_molybdenum": "Molten Molybdenum", + "tag.item.neoforge.molten_nuclear_waste": "Molten Nuclear Waste", + "tag.item.neoforge.molten_obsidian": "Molten Obsidian", + "tag.item.neoforge.molten_palladium": "Molten Palladium", + "tag.item.neoforge.molten_platinum": "Molten Platinum", + "tag.item.neoforge.molten_polonium": "Molten Polonium", + "tag.item.neoforge.molten_potassium_hydroxide": "Molten Potassium Hydroxide", + "tag.item.neoforge.molten_potassium_iodide": "Molten Potassium Iodide", + "tag.item.neoforge.molten_promethium_147": "Molten Promethium 147", + "tag.item.neoforge.molten_purpur": "Molten Purpur", + "tag.item.neoforge.molten_radaway": "Molten Radaway", + "tag.item.neoforge.molten_radaway_slow": "Molten Radaway Slow", + "tag.item.neoforge.molten_redstone": "Molten Redstone", + "tag.item.neoforge.molten_redstone_ethanol": "Molten Redstone Ethanol", + "tag.item.neoforge.molten_ruthenium_106": "Molten Ruthenium 106", + "tag.item.neoforge.molten_shibuichi": "Molten Shibuichi", + "tag.item.neoforge.molten_sic_sic_cmc": "Molten Sic Sic Cmc", + "tag.item.neoforge.molten_silicon_carbide": "Molten Silicon Carbide", + "tag.item.neoforge.molten_silver": "Molten Silver", + "tag.item.neoforge.molten_slurry_ice": "Molten Slurry Ice", + "tag.item.neoforge.molten_sodium": "Molten Sodium", + "tag.item.neoforge.molten_sodium_hydroxide": "Molten Sodium Hydroxide", + "tag.item.neoforge.molten_spent_nuclear_waste": "Molten Spent Nuclear Waste", + "tag.item.neoforge.molten_steel": "Molten Steel", + "tag.item.neoforge.molten_strontium_90": "Molten Strontium 90", + "tag.item.neoforge.molten_sugar": "Molten Sugar", + "tag.item.neoforge.molten_sulfur": "Molten Sulfur", + "tag.item.neoforge.molten_thermoconducting": "Molten Thermoconducting", + "tag.item.neoforge.molten_thorium": "Molten Thorium", + "tag.item.neoforge.molten_tin": "Molten Tin", + "tag.item.neoforge.molten_tin_silver": "Molten Tin Silver", + "tag.item.neoforge.molten_tough_alloy": "Molten Tough Alloy", + "tag.item.neoforge.molten_uranium": "Molten Uranium", + "tag.item.neoforge.molten_uranium_oxide": "Molten Uranium Oxide", + "tag.item.neoforge.molten_zinc": "Molten Zinc", + "tag.item.neoforge.molten_zircaloy": "Molten Zircaloy", + "tag.item.neoforge.molten_zirconium": "Molten Zirconium", + "tag.item.neoforge.molten_zirconium_molybdenum": "Molten Zirconium Molybdenum", + "tag.item.neoforge.molybdenum": "Molybdenum", + "tag.item.neoforge.neon": "Neon", + "tag.item.neoforge.neptunium.236": "Neptunium 236", + "tag.item.neoforge.neptunium.236_ni": "Neptunium 236 Nitride", + "tag.item.neoforge.neptunium.236_ox": "Neptunium 236 Oxide", + "tag.item.neoforge.neptunium.236_za": "Neptunium 236 ZA", + "tag.item.neoforge.neptunium.237": "Neptunium 237", + "tag.item.neoforge.neptunium.237_ni": "Neptunium 237 Nitride", + "tag.item.neoforge.neptunium.237_ox": "Neptunium 237 Oxide", + "tag.item.neoforge.neptunium.237_za": "Neptunium 237 ZA", + "tag.item.neoforge.neptunium/236": "Neptunium 236", + "tag.item.neoforge.neptunium/236_ni": "Neptunium 236 Nitride", + "tag.item.neoforge.neptunium/236_ox": "Neptunium 236 Oxide", + "tag.item.neoforge.neptunium/236_za": "Neptunium 236 ZA", + "tag.item.neoforge.neptunium/237": "Neptunium 237", + "tag.item.neoforge.neptunium/237_ni": "Neptunium 237 Nitride", + "tag.item.neoforge.neptunium/237_ox": "Neptunium 237 Oxide", + "tag.item.neoforge.neptunium/237_za": "Neptunium 237 ZA", + "tag.item.neoforge.nickel_clean_slurry": "Nickel Clean Slurry", + "tag.item.neoforge.nickel_slurry": "Nickel Slurry", + "tag.item.neoforge.nitric_acid": "Nitric Acid", + "tag.item.neoforge.nitric_oxide": "Nitric Oxide", + "tag.item.neoforge.nitrogen": "Nitrogen", + "tag.item.neoforge.nitrogen_dioxide": "Nitrogen Dioxide", + "tag.item.neoforge.nuclear_waste": "Nuclear Waste", + "tag.item.neoforge.nuggets.aluminium": "Aluminium (Nuggets)", + "tag.item.neoforge.nuggets.aluminum": "Aluminum (Nuggets)", + "tag.item.neoforge.nuggets.beryllium": "Beryllium (Nuggets)", + "tag.item.neoforge.nuggets.boron": "Boron (Nuggets)", + "tag.item.neoforge.nuggets.bronze": "Bronze (Nuggets)", + "tag.item.neoforge.nuggets.cobalt": "Cobalt (Nuggets)", + "tag.item.neoforge.nuggets.electrum": "Electrum (Nuggets)", + "tag.item.neoforge.nuggets.lead": "Lead (Nuggets)", + "tag.item.neoforge.nuggets.lithium": "Lithium (Nuggets)", + "tag.item.neoforge.nuggets.magnesium": "Magnesium (Nuggets)", + "tag.item.neoforge.nuggets.platinum": "Platinum (Nuggets)", + "tag.item.neoforge.nuggets.silver": "Silver (Nuggets)", + "tag.item.neoforge.nuggets.steel": "Steel (Nuggets)", + "tag.item.neoforge.nuggets.thorium": "Thorium (Nuggets)", + "tag.item.neoforge.nuggets.tin": "Tin (Nuggets)", + "tag.item.neoforge.nuggets.uranium": "Uranium (Nuggets)", + "tag.item.neoforge.nuggets.zinc": "Zinc (Nuggets)", + "tag.item.neoforge.nuggets.zirconium": "Zirconium (Nuggets)", + "tag.item.neoforge.nuggets/aluminium": "Aluminium (Nuggets)", + "tag.item.neoforge.nuggets/aluminum": "Aluminum (Nuggets)", + "tag.item.neoforge.nuggets/beryllium": "Beryllium (Nuggets)", + "tag.item.neoforge.nuggets/boron": "Boron (Nuggets)", + "tag.item.neoforge.nuggets/bronze": "Bronze (Nuggets)", + "tag.item.neoforge.nuggets/cobalt": "Cobalt (Nuggets)", + "tag.item.neoforge.nuggets/electrum": "Electrum (Nuggets)", + "tag.item.neoforge.nuggets/lead": "Lead (Nuggets)", + "tag.item.neoforge.nuggets/lithium": "Lithium (Nuggets)", + "tag.item.neoforge.nuggets/magnesium": "Magnesium (Nuggets)", + "tag.item.neoforge.nuggets/platinum": "Platinum (Nuggets)", + "tag.item.neoforge.nuggets/silver": "Silver (Nuggets)", + "tag.item.neoforge.nuggets/steel": "Steel (Nuggets)", + "tag.item.neoforge.nuggets/thorium": "Thorium (Nuggets)", + "tag.item.neoforge.nuggets/tin": "Tin (Nuggets)", + "tag.item.neoforge.nuggets/uranium": "Uranium (Nuggets)", + "tag.item.neoforge.nuggets/zinc": "Zinc (Nuggets)", + "tag.item.neoforge.nuggets/zirconium": "Zirconium (Nuggets)", + "tag.item.neoforge.obsidian": "Obsidian", + "tag.item.neoforge.ores.boron": "Boron (Ores)", + "tag.item.neoforge.ores.cobalt": "Cobalt (Ores)", + "tag.item.neoforge.ores.lead": "Lead (Ores)", + "tag.item.neoforge.ores.lithium": "Lithium (Ores)", + "tag.item.neoforge.ores.magnesium": "Magnesium (Ores)", + "tag.item.neoforge.ores.platinum": "Platinum (Ores)", + "tag.item.neoforge.ores.silver": "Silver (Ores)", + "tag.item.neoforge.ores.thorium": "Thorium (Ores)", + "tag.item.neoforge.ores.tin": "Tin (Ores)", + "tag.item.neoforge.ores.uranium": "Uranium (Ores)", + "tag.item.neoforge.ores.zinc": "Zinc (Ores)", + "tag.item.neoforge.ores/boron": "Boron (Ores)", + "tag.item.neoforge.ores/cobalt": "Cobalt (Ores)", + "tag.item.neoforge.ores/lead": "Lead (Ores)", + "tag.item.neoforge.ores/lithium": "Lithium (Ores)", + "tag.item.neoforge.ores/magnesium": "Magnesium (Ores)", + "tag.item.neoforge.ores/platinum": "Platinum (Ores)", + "tag.item.neoforge.ores/silver": "Silver (Ores)", + "tag.item.neoforge.ores/thorium": "Thorium (Ores)", + "tag.item.neoforge.ores/tin": "Tin (Ores)", + "tag.item.neoforge.ores/uranium": "Uranium (Ores)", + "tag.item.neoforge.ores/zinc": "Zinc (Ores)", + "tag.item.neoforge.oxygen": "Oxygen", + "tag.item.neoforge.oxygen_difluoride": "Oxygen Difluoride", + "tag.item.neoforge.palladium": "Palladium", + "tag.item.neoforge.pasteurized_milk": "Pasteurized Milk", + "tag.item.neoforge.plates": "Plates", + "tag.item.neoforge.plates.aluminium": "Aluminium (Plates)", + "tag.item.neoforge.plates.aluminum": "Aluminum (Plates)", + "tag.item.neoforge.plates.beryllium": "Beryllium (Plates)", + "tag.item.neoforge.plates.boron": "Boron (Plates)", + "tag.item.neoforge.plates.bronze": "Bronze (Plates)", + "tag.item.neoforge.plates.cobalt": "Cobalt (Plates)", + "tag.item.neoforge.plates.copper": "Copper (Plates)", + "tag.item.neoforge.plates.electrum": "Electrum (Plates)", + "tag.item.neoforge.plates.extreme": "Extreme (Plates)", + "tag.item.neoforge.plates.ferroboron": "Ferroboron (Plates)", + "tag.item.neoforge.plates.graphite": "Graphite (Plates)", + "tag.item.neoforge.plates.hard_carbon": "Hard Carbon (Plates)", + "tag.item.neoforge.plates.hsla_steel": "Hsla Steel (Plates)", + "tag.item.neoforge.plates.iron": "Iron (Plates)", + "tag.item.neoforge.plates.lead": "Lead (Plates)", + "tag.item.neoforge.plates.lithium": "Lithium (Plates)", + "tag.item.neoforge.plates.lithium_manganese_dioxide": "Lithium Manganese Dioxide (Plates)", + "tag.item.neoforge.plates.magnesium": "Magnesium (Plates)", + "tag.item.neoforge.plates.manganese": "Manganese (Plates)", + "tag.item.neoforge.plates.netherite": "Netherite (Plates)", + "tag.item.neoforge.plates.palladium": "Palladium (Plates)", + "tag.item.neoforge.plates.platinum": "Platinum (Plates)", + "tag.item.neoforge.plates.sic_sic_cmc": "Sic Sic Cmc (Plates)", + "tag.item.neoforge.plates.silver": "Silver (Plates)", + "tag.item.neoforge.plates.steel": "Steel (Plates)", + "tag.item.neoforge.plates.thermoconducting": "Thermoconducting (Plates)", + "tag.item.neoforge.plates.thorium": "Thorium (Plates)", + "tag.item.neoforge.plates.tin": "Tin (Plates)", + "tag.item.neoforge.plates.tough_alloy": "Tough Alloy (Plates)", + "tag.item.neoforge.plates.uranium": "Uranium (Plates)", + "tag.item.neoforge.plates.zinc": "Zinc (Plates)", + "tag.item.neoforge.plates.zirconium": "Zirconium (Plates)", + "tag.item.neoforge.plates/aluminium": "Aluminium (Plates)", + "tag.item.neoforge.plates/aluminum": "Aluminum (Plates)", + "tag.item.neoforge.plates/beryllium": "Beryllium (Plates)", + "tag.item.neoforge.plates/boron": "Boron (Plates)", + "tag.item.neoforge.plates/bronze": "Bronze (Plates)", + "tag.item.neoforge.plates/cobalt": "Cobalt (Plates)", + "tag.item.neoforge.plates/copper": "Copper (Plates)", + "tag.item.neoforge.plates/electrum": "Electrum (Plates)", + "tag.item.neoforge.plates/extreme": "Extreme (Plates)", + "tag.item.neoforge.plates/ferroboron": "Ferroboron (Plates)", + "tag.item.neoforge.plates/graphite": "Graphite (Plates)", + "tag.item.neoforge.plates/hard_carbon": "Hard Carbon (Plates)", + "tag.item.neoforge.plates/hsla_steel": "Hsla Steel (Plates)", + "tag.item.neoforge.plates/iron": "Iron (Plates)", + "tag.item.neoforge.plates/lead": "Lead (Plates)", + "tag.item.neoforge.plates/lithium": "Lithium (Plates)", + "tag.item.neoforge.plates/lithium_manganese_dioxide": "Lithium Manganese Dioxide (Plates)", + "tag.item.neoforge.plates/magnesium": "Magnesium (Plates)", + "tag.item.neoforge.plates/manganese": "Manganese (Plates)", + "tag.item.neoforge.plates/netherite": "Netherite (Plates)", + "tag.item.neoforge.plates/palladium": "Palladium (Plates)", + "tag.item.neoforge.plates/platinum": "Platinum (Plates)", + "tag.item.neoforge.plates/sic_sic_cmc": "Sic Sic Cmc (Plates)", + "tag.item.neoforge.plates/silver": "Silver (Plates)", + "tag.item.neoforge.plates/steel": "Steel (Plates)", + "tag.item.neoforge.plates/thermoconducting": "Thermoconducting (Plates)", + "tag.item.neoforge.plates/thorium": "Thorium (Plates)", + "tag.item.neoforge.plates/tin": "Tin (Plates)", + "tag.item.neoforge.plates/tough_alloy": "Tough Alloy (Plates)", + "tag.item.neoforge.plates/uranium": "Uranium (Plates)", + "tag.item.neoforge.plates/zinc": "Zinc (Plates)", + "tag.item.neoforge.plates/zirconium": "Zirconium (Plates)", + "tag.item.neoforge.platinum": "Platinum", + "tag.item.neoforge.platinum_clean_slurry": "Platinum Clean Slurry", + "tag.item.neoforge.platinum_slurry": "Platinum Slurry", + "tag.item.neoforge.plutonium.238": "Plutonium 238", + "tag.item.neoforge.plutonium.238_ni": "Plutonium 238 Nitride", + "tag.item.neoforge.plutonium.238_ox": "Plutonium 238 Oxide", + "tag.item.neoforge.plutonium.238_za": "Plutonium 238 ZA", + "tag.item.neoforge.plutonium.239": "Plutonium 239", + "tag.item.neoforge.plutonium.239_ni": "Plutonium 239 Nitride", + "tag.item.neoforge.plutonium.239_ox": "Plutonium 239 Oxide", + "tag.item.neoforge.plutonium.239_za": "Plutonium 239 ZA", + "tag.item.neoforge.plutonium.241": "Plutonium 241", + "tag.item.neoforge.plutonium.241_ni": "Plutonium 241 Nitride", + "tag.item.neoforge.plutonium.241_ox": "Plutonium 241 Oxide", + "tag.item.neoforge.plutonium.241_za": "Plutonium 241 ZA", + "tag.item.neoforge.plutonium.242": "Plutonium 242", + "tag.item.neoforge.plutonium.242_ni": "Plutonium 242 Nitride", + "tag.item.neoforge.plutonium.242_ox": "Plutonium 242 Oxide", + "tag.item.neoforge.plutonium.242_za": "Plutonium 242 ZA", + "tag.item.neoforge.plutonium/238": "Plutonium 238", + "tag.item.neoforge.plutonium/238_ni": "Plutonium 238 Nitride", + "tag.item.neoforge.plutonium/238_ox": "Plutonium 238 Oxide", + "tag.item.neoforge.plutonium/238_za": "Plutonium 238 ZA", + "tag.item.neoforge.plutonium/239": "Plutonium 239", + "tag.item.neoforge.plutonium/239_ni": "Plutonium 239 Nitride", + "tag.item.neoforge.plutonium/239_ox": "Plutonium 239 Oxide", + "tag.item.neoforge.plutonium/239_za": "Plutonium 239 ZA", + "tag.item.neoforge.plutonium/241": "Plutonium 241", + "tag.item.neoforge.plutonium/241_ni": "Plutonium 241 Nitride", + "tag.item.neoforge.plutonium/241_ox": "Plutonium 241 Oxide", + "tag.item.neoforge.plutonium/241_za": "Plutonium 241 ZA", + "tag.item.neoforge.plutonium/242": "Plutonium 242", + "tag.item.neoforge.plutonium/242_ni": "Plutonium 242 Nitride", + "tag.item.neoforge.plutonium/242_ox": "Plutonium 242 Oxide", + "tag.item.neoforge.plutonium/242_za": "Plutonium 242 ZA", + "tag.item.neoforge.polonium": "Polonium", + "tag.item.neoforge.potassium_fluoride_solution": "Potassium Fluoride Solution", + "tag.item.neoforge.potassium_hydroxide": "Potassium Hydroxide", + "tag.item.neoforge.potassium_hydroxide_solution": "Potassium Hydroxide Solution", + "tag.item.neoforge.potassium_iodide": "Potassium Iodide", + "tag.item.neoforge.promethium_147": "Promethium 147", + "tag.item.neoforge.purpur": "Purpur", + "tag.item.neoforge.quantite": "Quantite", + "tag.item.neoforge.radaway": "Radaway", + "tag.item.neoforge.radaway_slow": "Radaway Slow", + "tag.item.neoforge.radon": "Radon", + "tag.item.neoforge.raw_materials.boron": "Boron (Raw Materials)", + "tag.item.neoforge.raw_materials.cobalt": "Cobalt (Raw Materials)", + "tag.item.neoforge.raw_materials.lead": "Lead (Raw Materials)", + "tag.item.neoforge.raw_materials.lithium": "Lithium (Raw Materials)", + "tag.item.neoforge.raw_materials.magnesium": "Magnesium (Raw Materials)", + "tag.item.neoforge.raw_materials.platinum": "Platinum (Raw Materials)", + "tag.item.neoforge.raw_materials.silver": "Silver (Raw Materials)", + "tag.item.neoforge.raw_materials.thorium": "Thorium (Raw Materials)", + "tag.item.neoforge.raw_materials.tin": "Tin (Raw Materials)", + "tag.item.neoforge.raw_materials.uranium": "Uranium (Raw Materials)", + "tag.item.neoforge.raw_materials.zinc": "Zinc (Raw Materials)", + "tag.item.neoforge.raw_materials/boron": "Boron (Raw Materials)", + "tag.item.neoforge.raw_materials/cobalt": "Cobalt (Raw Materials)", + "tag.item.neoforge.raw_materials/lead": "Lead (Raw Materials)", + "tag.item.neoforge.raw_materials/lithium": "Lithium (Raw Materials)", + "tag.item.neoforge.raw_materials/magnesium": "Magnesium (Raw Materials)", + "tag.item.neoforge.raw_materials/platinum": "Platinum (Raw Materials)", + "tag.item.neoforge.raw_materials/silver": "Silver (Raw Materials)", + "tag.item.neoforge.raw_materials/thorium": "Thorium (Raw Materials)", + "tag.item.neoforge.raw_materials/tin": "Tin (Raw Materials)", + "tag.item.neoforge.raw_materials/uranium": "Uranium (Raw Materials)", + "tag.item.neoforge.raw_materials/zinc": "Zinc (Raw Materials)", + "tag.item.neoforge.redstone": "Redstone", + "tag.item.neoforge.redstone_ethanol": "Redstone Ethanol", + "tag.item.neoforge.ruthenium_106": "Ruthenium 106", + "tag.item.neoforge.shibuichi": "Shibuichi", + "tag.item.neoforge.sic_sic_cmc": "Sic Sic Cmc", + "tag.item.neoforge.silicon_carbide": "Silicon Carbide", + "tag.item.neoforge.silver": "Silver", + "tag.item.neoforge.silver_clean_slurry": "Silver Clean Slurry", + "tag.item.neoforge.silver_slurry": "Silver Slurry", + "tag.item.neoforge.slurry_ice": "Slurry Ice", + "tag.item.neoforge.sodium": "Sodium", + "tag.item.neoforge.sodium_22": "Sodium 22", + "tag.item.neoforge.sodium_fluoride_solution": "Sodium Fluoride Solution", + "tag.item.neoforge.sodium_hydroxide": "Sodium Hydroxide", + "tag.item.neoforge.sodium_hydroxide_solution": "Sodium Hydroxide Solution", + "tag.item.neoforge.spent_nuclear_waste": "Spent Nuclear Waste", + "tag.item.neoforge.steam": "Steam", + "tag.item.neoforge.steel": "Steel", + "tag.item.neoforge.strontium_90": "Strontium 90", + "tag.item.neoforge.subliquid_matter": "Subliquid Matter", + "tag.item.neoforge.sugar": "Sugar", + "tag.item.neoforge.sulfur": "Sulfur", + "tag.item.neoforge.sulfur_dioxide": "Sulfur Dioxide", + "tag.item.neoforge.sulfur_trioxide": "Sulfur Trioxide", + "tag.item.neoforge.sulfuric_acid": "Sulfuric Acid", + "tag.item.neoforge.technical_water": "Technical Water", + "tag.item.neoforge.thermoconducting": "Thermoconducting", + "tag.item.neoforge.thorium": "Thorium", + "tag.item.neoforge.thorium.230": "Thorium 230", + "tag.item.neoforge.thorium.230_ni": "Thorium 230 Nitride", + "tag.item.neoforge.thorium.230_ox": "Thorium 230 Oxide", + "tag.item.neoforge.thorium.230_za": "Thorium 230 ZA", + "tag.item.neoforge.thorium.232": "Thorium 232", + "tag.item.neoforge.thorium.232_ni": "Thorium 232 Nitride", + "tag.item.neoforge.thorium.232_ox": "Thorium 232 Oxide", + "tag.item.neoforge.thorium.232_za": "Thorium 232 ZA", + "tag.item.neoforge.thorium/230": "Thorium 230", + "tag.item.neoforge.thorium/230_ni": "Thorium 230 Nitride", + "tag.item.neoforge.thorium/230_ox": "Thorium 230 Oxide", + "tag.item.neoforge.thorium/230_za": "Thorium 230 ZA", + "tag.item.neoforge.thorium/232": "Thorium 232", + "tag.item.neoforge.thorium/232_ni": "Thorium 232 Nitride", + "tag.item.neoforge.thorium/232_ox": "Thorium 232 Oxide", + "tag.item.neoforge.thorium/232_za": "Thorium 232 ZA", + "tag.item.neoforge.thorium_clean_slurry": "Thorium Clean Slurry", + "tag.item.neoforge.thorium_slurry": "Thorium Slurry", + "tag.item.neoforge.tin": "Tin", + "tag.item.neoforge.tin_clean_slurry": "Tin Clean Slurry", + "tag.item.neoforge.tin_silver": "Tin Silver", + "tag.item.neoforge.tin_slurry": "Tin Slurry", + "tag.item.neoforge.tough_alloy": "Tough Alloy", + "tag.item.neoforge.tritium": "Tritium", + "tag.item.neoforge.unsweetened_chocolate": "Unsweetened Chocolate", + "tag.item.neoforge.uranium": "Uranium", + "tag.item.neoforge.uranium.233": "Uranium 233", + "tag.item.neoforge.uranium.233_ni": "Uranium 233 Nitride", + "tag.item.neoforge.uranium.233_ox": "Uranium 233 Oxide", + "tag.item.neoforge.uranium.233_za": "Uranium 233 ZA", + "tag.item.neoforge.uranium.234": "Uranium 234", + "tag.item.neoforge.uranium.234_ni": "Uranium 234 Nitride", + "tag.item.neoforge.uranium.234_ox": "Uranium 234 Oxide", + "tag.item.neoforge.uranium.234_za": "Uranium 234 ZA", + "tag.item.neoforge.uranium.235": "Uranium 235", + "tag.item.neoforge.uranium.235_ni": "Uranium 235 Nitride", + "tag.item.neoforge.uranium.235_ox": "Uranium 235 Oxide", + "tag.item.neoforge.uranium.235_za": "Uranium 235 ZA", + "tag.item.neoforge.uranium.238": "Uranium 238", + "tag.item.neoforge.uranium.238_ni": "Uranium 238 Nitride", + "tag.item.neoforge.uranium.238_ox": "Uranium 238 Oxide", + "tag.item.neoforge.uranium.238_za": "Uranium 238 ZA", + "tag.item.neoforge.uranium/233": "Uranium 233", + "tag.item.neoforge.uranium/233_ni": "Uranium 233 Nitride", + "tag.item.neoforge.uranium/233_ox": "Uranium 233 Oxide", + "tag.item.neoforge.uranium/233_za": "Uranium 233 ZA", + "tag.item.neoforge.uranium/234": "Uranium 234", + "tag.item.neoforge.uranium/234_ni": "Uranium 234 Nitride", + "tag.item.neoforge.uranium/234_ox": "Uranium 234 Oxide", + "tag.item.neoforge.uranium/234_za": "Uranium 234 ZA", + "tag.item.neoforge.uranium/235": "Uranium 235", + "tag.item.neoforge.uranium/235_ni": "Uranium 235 Nitride", + "tag.item.neoforge.uranium/235_ox": "Uranium 235 Oxide", + "tag.item.neoforge.uranium/235_za": "Uranium 235 ZA", + "tag.item.neoforge.uranium/238": "Uranium 238", + "tag.item.neoforge.uranium/238_ni": "Uranium 238 Nitride", + "tag.item.neoforge.uranium/238_ox": "Uranium 238 Oxide", + "tag.item.neoforge.uranium/238_za": "Uranium 238 ZA", + "tag.item.neoforge.uranium_clean_slurry": "Uranium Clean Slurry", + "tag.item.neoforge.uranium_oxide": "Uranium Oxide", + "tag.item.neoforge.uranium_slurry": "Uranium Slurry", + "tag.item.neoforge.xenorium.298": "Xenorium 298", + "tag.item.neoforge.xenorium/298": "Xenorium 298", + "tag.item.neoforge.zinc": "Zinc", + "tag.item.neoforge.zinc_clean_slurry": "Zinc Clean Slurry", + "tag.item.neoforge.zinc_slurry": "Zinc Slurry", + "tag.item.neoforge.zircaloy": "Zircaloy", + "tag.item.neoforge.zirconium": "Zirconium", + "tag.item.neoforge.zirconium_molybdenum": "Zirconium Molybdenum", + "tag.item.nuclearcraft.accelerator_inner": "Accelerator Inner", "tag.item.nuclearcraft.aluminum": "Aluminum", "tag.item.nuclearcraft.aluminum_clean_slurry": "Aluminum Clean Slurry", "tag.item.nuclearcraft.aluminum_slurry": "Aluminum Slurry", @@ -1443,6 +4208,7 @@ "tag.item.nuclearcraft.americium.243_ni": "Americium 243 Ni", "tag.item.nuclearcraft.americium.243_ox": "Americium 243 Ox", "tag.item.nuclearcraft.americium.243_za": "Americium 243 Za", + "tag.item.nuclearcraft.amplifiers": "Amplifiers", "tag.item.nuclearcraft.aqua_regia_acid": "Aqua Regia Acid", "tag.item.nuclearcraft.arsenic": "Arsenic", "tag.item.nuclearcraft.berkelium.247": "Berkelium 247", @@ -1635,34 +4401,91 @@ "tag.item.nuclearcraft.depleted_fuel_uranium_leu-235_ox": "Depleted Fuel Uranium Leu-235 Ox", "tag.item.nuclearcraft.depleted_fuel_uranium_leu-235_za": "Depleted Fuel Uranium Leu-235 Za", "tag.item.nuclearcraft.depleted_fuel_xenorium_xen-298": "Depleted Fuel Xenorium Xen-298", + "tag.item.nuclearcraft.depleted_reactor_fuel.americium.hea-242": "Americium HEA-242 (Depleted Reactor Fuel)", + "tag.item.nuclearcraft.depleted_reactor_fuel.americium.lea-242": "Americium LEA-242 (Depleted Reactor Fuel)", "tag.item.nuclearcraft.depleted_reactor_fuel.americiumhea-242": "Americiumhea-242", "tag.item.nuclearcraft.depleted_reactor_fuel.americiumlea-242": "Americiumlea-242", + "tag.item.nuclearcraft.depleted_reactor_fuel.berkelium.heb-248": "Berkelium HEB-248 (Depleted Reactor Fuel)", + "tag.item.nuclearcraft.depleted_reactor_fuel.berkelium.leb-248": "Berkelium LEB-248 (Depleted Reactor Fuel)", "tag.item.nuclearcraft.depleted_reactor_fuel.berkeliumheb-248": "Berkeliumheb-248", "tag.item.nuclearcraft.depleted_reactor_fuel.berkeliumleb-248": "Berkeliumleb-248", + "tag.item.nuclearcraft.depleted_reactor_fuel.californium.hecf-249": "Californium HECF-249 (Depleted Reactor Fuel)", + "tag.item.nuclearcraft.depleted_reactor_fuel.californium.hecf-251": "Californium HECF-251 (Depleted Reactor Fuel)", + "tag.item.nuclearcraft.depleted_reactor_fuel.californium.lecf-249": "Californium LECF-249 (Depleted Reactor Fuel)", + "tag.item.nuclearcraft.depleted_reactor_fuel.californium.lecf-251": "Californium LECF-251 (Depleted Reactor Fuel)", "tag.item.nuclearcraft.depleted_reactor_fuel.californiumhecf-249": "Californiumhecf-249", "tag.item.nuclearcraft.depleted_reactor_fuel.californiumhecf-251": "Californiumhecf-251", "tag.item.nuclearcraft.depleted_reactor_fuel.californiumlecf-249": "Californiumlecf-249", "tag.item.nuclearcraft.depleted_reactor_fuel.californiumlecf-251": "Californiumlecf-251", + "tag.item.nuclearcraft.depleted_reactor_fuel.curium.hecm-243": "Curium HECM-243 (Depleted Reactor Fuel)", + "tag.item.nuclearcraft.depleted_reactor_fuel.curium.hecm-245": "Curium HECM-245 (Depleted Reactor Fuel)", + "tag.item.nuclearcraft.depleted_reactor_fuel.curium.hecm-247": "Curium HECM-247 (Depleted Reactor Fuel)", + "tag.item.nuclearcraft.depleted_reactor_fuel.curium.lecm-243": "Curium LECM-243 (Depleted Reactor Fuel)", + "tag.item.nuclearcraft.depleted_reactor_fuel.curium.lecm-245": "Curium LECM-245 (Depleted Reactor Fuel)", + "tag.item.nuclearcraft.depleted_reactor_fuel.curium.lecm-247": "Curium LECM-247 (Depleted Reactor Fuel)", "tag.item.nuclearcraft.depleted_reactor_fuel.curiumhecm-243": "Curiumhecm-243", "tag.item.nuclearcraft.depleted_reactor_fuel.curiumhecm-245": "Curiumhecm-245", "tag.item.nuclearcraft.depleted_reactor_fuel.curiumhecm-247": "Curiumhecm-247", "tag.item.nuclearcraft.depleted_reactor_fuel.curiumlecm-243": "Curiumlecm-243", "tag.item.nuclearcraft.depleted_reactor_fuel.curiumlecm-245": "Curiumlecm-245", "tag.item.nuclearcraft.depleted_reactor_fuel.curiumlecm-247": "Curiumlecm-247", + "tag.item.nuclearcraft.depleted_reactor_fuel.mixed.mix-239": "Mixed MIX-239 (Depleted Reactor Fuel)", + "tag.item.nuclearcraft.depleted_reactor_fuel.mixed.mix-241": "Mixed MIX-241 (Depleted Reactor Fuel)", "tag.item.nuclearcraft.depleted_reactor_fuel.mixedmix-239": "Mixedmix-239", "tag.item.nuclearcraft.depleted_reactor_fuel.mixedmix-241": "Mixedmix-241", + "tag.item.nuclearcraft.depleted_reactor_fuel.neptunium.hen-236": "Neptunium HEN-236 (Depleted Reactor Fuel)", + "tag.item.nuclearcraft.depleted_reactor_fuel.neptunium.len-236": "Neptunium LEN-236 (Depleted Reactor Fuel)", "tag.item.nuclearcraft.depleted_reactor_fuel.neptuniumhen-236": "Neptuniumhen-236", "tag.item.nuclearcraft.depleted_reactor_fuel.neptuniumlen-236": "Neptuniumlen-236", + "tag.item.nuclearcraft.depleted_reactor_fuel.plutonium.hep-239": "Plutonium HEP-239 (Depleted Reactor Fuel)", + "tag.item.nuclearcraft.depleted_reactor_fuel.plutonium.hep-241": "Plutonium HEP-241 (Depleted Reactor Fuel)", + "tag.item.nuclearcraft.depleted_reactor_fuel.plutonium.lep-239": "Plutonium LEP-239 (Depleted Reactor Fuel)", + "tag.item.nuclearcraft.depleted_reactor_fuel.plutonium.lep-241": "Plutonium LEP-241 (Depleted Reactor Fuel)", "tag.item.nuclearcraft.depleted_reactor_fuel.plutoniumhep-239": "Plutoniumhep-239", "tag.item.nuclearcraft.depleted_reactor_fuel.plutoniumhep-241": "Plutoniumhep-241", "tag.item.nuclearcraft.depleted_reactor_fuel.plutoniumlep-239": "Plutoniumlep-239", "tag.item.nuclearcraft.depleted_reactor_fuel.plutoniumlep-241": "Plutoniumlep-241", + "tag.item.nuclearcraft.depleted_reactor_fuel.thorium.tbu": "Thorium TBU (Depleted Reactor Fuel)", "tag.item.nuclearcraft.depleted_reactor_fuel.thoriumtbu": "Thoriumtbu", + "tag.item.nuclearcraft.depleted_reactor_fuel.uranium.heu-233": "Uranium HEU-233 (Depleted Reactor Fuel)", + "tag.item.nuclearcraft.depleted_reactor_fuel.uranium.heu-235": "Uranium HEU-235 (Depleted Reactor Fuel)", + "tag.item.nuclearcraft.depleted_reactor_fuel.uranium.leu-233": "Uranium LEU-233 (Depleted Reactor Fuel)", + "tag.item.nuclearcraft.depleted_reactor_fuel.uranium.leu-235": "Uranium LEU-235 (Depleted Reactor Fuel)", "tag.item.nuclearcraft.depleted_reactor_fuel.uraniumheu-233": "Uraniumheu-233", "tag.item.nuclearcraft.depleted_reactor_fuel.uraniumheu-235": "Uraniumheu-235", "tag.item.nuclearcraft.depleted_reactor_fuel.uraniumleu-233": "Uraniumleu-233", "tag.item.nuclearcraft.depleted_reactor_fuel.uraniumleu-235": "Uraniumleu-235", + "tag.item.nuclearcraft.depleted_reactor_fuel.xenorium.xen-298": "Xenorium XEN-298 (Depleted Reactor Fuel)", "tag.item.nuclearcraft.depleted_reactor_fuel.xenoriumxen-298": "Xenoriumxen-298", + "tag.item.nuclearcraft.depleted_reactor_fuel/americium/hea-242": "Americium HEA-242 (Depleted Reactor Fuel)", + "tag.item.nuclearcraft.depleted_reactor_fuel/americium/lea-242": "Americium LEA-242 (Depleted Reactor Fuel)", + "tag.item.nuclearcraft.depleted_reactor_fuel/berkelium/heb-248": "Berkelium HEB-248 (Depleted Reactor Fuel)", + "tag.item.nuclearcraft.depleted_reactor_fuel/berkelium/leb-248": "Berkelium LEB-248 (Depleted Reactor Fuel)", + "tag.item.nuclearcraft.depleted_reactor_fuel/californium/hecf-249": "Californium HECF-249 (Depleted Reactor Fuel)", + "tag.item.nuclearcraft.depleted_reactor_fuel/californium/hecf-251": "Californium HECF-251 (Depleted Reactor Fuel)", + "tag.item.nuclearcraft.depleted_reactor_fuel/californium/lecf-249": "Californium LECF-249 (Depleted Reactor Fuel)", + "tag.item.nuclearcraft.depleted_reactor_fuel/californium/lecf-251": "Californium LECF-251 (Depleted Reactor Fuel)", + "tag.item.nuclearcraft.depleted_reactor_fuel/curium/hecm-243": "Curium HECM-243 (Depleted Reactor Fuel)", + "tag.item.nuclearcraft.depleted_reactor_fuel/curium/hecm-245": "Curium HECM-245 (Depleted Reactor Fuel)", + "tag.item.nuclearcraft.depleted_reactor_fuel/curium/hecm-247": "Curium HECM-247 (Depleted Reactor Fuel)", + "tag.item.nuclearcraft.depleted_reactor_fuel/curium/lecm-243": "Curium LECM-243 (Depleted Reactor Fuel)", + "tag.item.nuclearcraft.depleted_reactor_fuel/curium/lecm-245": "Curium LECM-245 (Depleted Reactor Fuel)", + "tag.item.nuclearcraft.depleted_reactor_fuel/curium/lecm-247": "Curium LECM-247 (Depleted Reactor Fuel)", + "tag.item.nuclearcraft.depleted_reactor_fuel/mixed/mix-239": "Mixed MIX-239 (Depleted Reactor Fuel)", + "tag.item.nuclearcraft.depleted_reactor_fuel/mixed/mix-241": "Mixed MIX-241 (Depleted Reactor Fuel)", + "tag.item.nuclearcraft.depleted_reactor_fuel/neptunium/hen-236": "Neptunium HEN-236 (Depleted Reactor Fuel)", + "tag.item.nuclearcraft.depleted_reactor_fuel/neptunium/len-236": "Neptunium LEN-236 (Depleted Reactor Fuel)", + "tag.item.nuclearcraft.depleted_reactor_fuel/plutonium/hep-239": "Plutonium HEP-239 (Depleted Reactor Fuel)", + "tag.item.nuclearcraft.depleted_reactor_fuel/plutonium/hep-241": "Plutonium HEP-241 (Depleted Reactor Fuel)", + "tag.item.nuclearcraft.depleted_reactor_fuel/plutonium/lep-239": "Plutonium LEP-239 (Depleted Reactor Fuel)", + "tag.item.nuclearcraft.depleted_reactor_fuel/plutonium/lep-241": "Plutonium LEP-241 (Depleted Reactor Fuel)", + "tag.item.nuclearcraft.depleted_reactor_fuel/thorium/tbu": "Thorium TBU (Depleted Reactor Fuel)", + "tag.item.nuclearcraft.depleted_reactor_fuel/uranium/heu-233": "Uranium HEU-233 (Depleted Reactor Fuel)", + "tag.item.nuclearcraft.depleted_reactor_fuel/uranium/heu-235": "Uranium HEU-235 (Depleted Reactor Fuel)", + "tag.item.nuclearcraft.depleted_reactor_fuel/uranium/leu-233": "Uranium LEU-233 (Depleted Reactor Fuel)", + "tag.item.nuclearcraft.depleted_reactor_fuel/uranium/leu-235": "Uranium LEU-235 (Depleted Reactor Fuel)", + "tag.item.nuclearcraft.depleted_reactor_fuel/xenorium/xen-298": "Xenorium XEN-298 (Depleted Reactor Fuel)", + "tag.item.nuclearcraft.electromagnets": "Electromagnets", "tag.item.nuclearcraft.electrum": "Electrum", "tag.item.nuclearcraft.emergency_coolant": "Emergency Coolant", "tag.item.nuclearcraft.emergency_coolant_heated": "Emergency Coolant Heated", @@ -1672,6 +4495,7 @@ "tag.item.nuclearcraft.extreme": "Extreme", "tag.item.nuclearcraft.ferroboron": "Ferroboron", "tag.item.nuclearcraft.fissile_fuel": "Fissile Fuel", + "tag.item.nuclearcraft.fission_reactor_casing": "Fission Reactor Casing", "tag.item.nuclearcraft.fluorite_water": "Fluorite Water", "tag.item.nuclearcraft.fuel_americium_hea-242": "Fuel Americium Hea-242", "tag.item.nuclearcraft.fuel_americium_hea-242_ni": "Fuel Americium Hea-242 Ni", @@ -1782,6 +4606,7 @@ "tag.item.nuclearcraft.fuel_uranium_leu-235_ox": "Fuel Uranium Leu-235 Ox", "tag.item.nuclearcraft.fuel_uranium_leu-235_za": "Fuel Uranium Leu-235 Za", "tag.item.nuclearcraft.fuel_xenorium_xen-298": "Fuel Xenorium Xen-298", + "tag.item.nuclearcraft.fusion_reactor_casing": "Fusion Reactor Casing", "tag.item.nuclearcraft.gelatin": "Gelatin", "tag.item.nuclearcraft.glowstone": "Glowstone", "tag.item.nuclearcraft.gold": "Gold", @@ -1795,6 +4620,30 @@ "tag.item.nuclearcraft.hydrofluoric_acid": "Hydrofluoric Acid", "tag.item.nuclearcraft.hydrogen_chloride": "Hydrogen Chloride", "tag.item.nuclearcraft.ice": "Ice", + "tag.item.nuclearcraft.ion_sources.antideuterium": "Antideuterium (Ion Sources)", + "tag.item.nuclearcraft.ion_sources.antihelium": "Antihelium (Ion Sources)", + "tag.item.nuclearcraft.ion_sources.antihelium3": "Antihelium3 (Ion Sources)", + "tag.item.nuclearcraft.ion_sources.antihydrogen": "Antihydrogen (Ion Sources)", + "tag.item.nuclearcraft.ion_sources.antitritium": "Antitritium (Ion Sources)", + "tag.item.nuclearcraft.ion_sources.calcium_48": "Calcium 48 (Ion Sources)", + "tag.item.nuclearcraft.ion_sources.empty": "Empty (Ion Sources)", + "tag.item.nuclearcraft.ion_sources.glueballs": "Glueballs (Ion Sources)", + "tag.item.nuclearcraft.ion_sources.iridium_192": "Iridium 192 (Ion Sources)", + "tag.item.nuclearcraft.ion_sources.positronium": "Positronium (Ion Sources)", + "tag.item.nuclearcraft.ion_sources.tauonium": "Tauonium (Ion Sources)", + "tag.item.nuclearcraft.ion_sources.tungsten_filament": "Tungsten Filament (Ion Sources)", + "tag.item.nuclearcraft.ion_sources/antideuterium": "Antideuterium (Ion Sources)", + "tag.item.nuclearcraft.ion_sources/antihelium": "Antihelium (Ion Sources)", + "tag.item.nuclearcraft.ion_sources/antihelium3": "Antihelium3 (Ion Sources)", + "tag.item.nuclearcraft.ion_sources/antihydrogen": "Antihydrogen (Ion Sources)", + "tag.item.nuclearcraft.ion_sources/antitritium": "Antitritium (Ion Sources)", + "tag.item.nuclearcraft.ion_sources/calcium_48": "Calcium 48 (Ion Sources)", + "tag.item.nuclearcraft.ion_sources/empty": "Empty (Ion Sources)", + "tag.item.nuclearcraft.ion_sources/glueballs": "Glueballs (Ion Sources)", + "tag.item.nuclearcraft.ion_sources/iridium_192": "Iridium 192 (Ion Sources)", + "tag.item.nuclearcraft.ion_sources/positronium": "Positronium (Ion Sources)", + "tag.item.nuclearcraft.ion_sources/tauonium": "Tauonium (Ion Sources)", + "tag.item.nuclearcraft.ion_sources/tungsten_filament": "Tungsten Filament (Ion Sources)", "tag.item.nuclearcraft.iridium_192": "Iridium 192", "tag.item.nuclearcraft.iron": "Iron", "tag.item.nuclearcraft.iron_clean_slurry": "Iron Clean Slurry", @@ -1965,7 +4814,9 @@ "tag.item.nuclearcraft.marshmallow": "Marshmallow", "tag.item.nuclearcraft.methanol": "Methanol", "tag.item.nuclearcraft.milk_chocolate": "Milk Chocolate", + "tag.item.nuclearcraft.moderators": "Moderators", "tag.item.nuclearcraft.molybdenum": "Molybdenum", + "tag.item.nuclearcraft.music_discs": "Music Discs", "tag.item.nuclearcraft.neptunium.236": "Neptunium 236", "tag.item.nuclearcraft.neptunium.236_ni": "Neptunium 236 Ni", "tag.item.nuclearcraft.neptunium.236_ox": "Neptunium 236 Ox", @@ -1980,6 +4831,7 @@ "tag.item.nuclearcraft.nuclear_waste": "Nuclear Waste", "tag.item.nuclearcraft.obsidian": "Obsidian", "tag.item.nuclearcraft.palladium": "Palladium", + "tag.item.nuclearcraft.parts": "Parts", "tag.item.nuclearcraft.pasteurized_milk": "Pasteurized Milk", "tag.item.nuclearcraft.platinum": "Platinum", "tag.item.nuclearcraft.platinum_clean_slurry": "Platinum Clean Slurry", @@ -2010,34 +4862,90 @@ "tag.item.nuclearcraft.quantite": "Quantite", "tag.item.nuclearcraft.radaway": "Radaway", "tag.item.nuclearcraft.radaway_slow": "Radaway Slow", + "tag.item.nuclearcraft.reactor_fuel.americium.hea-242": "Americium HEA-242 (Reactor Fuel)", + "tag.item.nuclearcraft.reactor_fuel.americium.lea-242": "Americium LEA-242 (Reactor Fuel)", "tag.item.nuclearcraft.reactor_fuel.americiumhea-242": "Americiumhea-242", "tag.item.nuclearcraft.reactor_fuel.americiumlea-242": "Americiumlea-242", + "tag.item.nuclearcraft.reactor_fuel.berkelium.heb-248": "Berkelium HEB-248 (Reactor Fuel)", + "tag.item.nuclearcraft.reactor_fuel.berkelium.leb-248": "Berkelium LEB-248 (Reactor Fuel)", "tag.item.nuclearcraft.reactor_fuel.berkeliumheb-248": "Berkeliumheb-248", "tag.item.nuclearcraft.reactor_fuel.berkeliumleb-248": "Berkeliumleb-248", + "tag.item.nuclearcraft.reactor_fuel.californium.hecf-249": "Californium HECF-249 (Reactor Fuel)", + "tag.item.nuclearcraft.reactor_fuel.californium.hecf-251": "Californium HECF-251 (Reactor Fuel)", + "tag.item.nuclearcraft.reactor_fuel.californium.lecf-249": "Californium LECF-249 (Reactor Fuel)", + "tag.item.nuclearcraft.reactor_fuel.californium.lecf-251": "Californium LECF-251 (Reactor Fuel)", "tag.item.nuclearcraft.reactor_fuel.californiumhecf-249": "Californiumhecf-249", "tag.item.nuclearcraft.reactor_fuel.californiumhecf-251": "Californiumhecf-251", "tag.item.nuclearcraft.reactor_fuel.californiumlecf-249": "Californiumlecf-249", "tag.item.nuclearcraft.reactor_fuel.californiumlecf-251": "Californiumlecf-251", + "tag.item.nuclearcraft.reactor_fuel.curium.hecm-243": "Curium HECM-243 (Reactor Fuel)", + "tag.item.nuclearcraft.reactor_fuel.curium.hecm-245": "Curium HECM-245 (Reactor Fuel)", + "tag.item.nuclearcraft.reactor_fuel.curium.hecm-247": "Curium HECM-247 (Reactor Fuel)", + "tag.item.nuclearcraft.reactor_fuel.curium.lecm-243": "Curium LECM-243 (Reactor Fuel)", + "tag.item.nuclearcraft.reactor_fuel.curium.lecm-245": "Curium LECM-245 (Reactor Fuel)", + "tag.item.nuclearcraft.reactor_fuel.curium.lecm-247": "Curium LECM-247 (Reactor Fuel)", "tag.item.nuclearcraft.reactor_fuel.curiumhecm-243": "Curiumhecm-243", "tag.item.nuclearcraft.reactor_fuel.curiumhecm-245": "Curiumhecm-245", "tag.item.nuclearcraft.reactor_fuel.curiumhecm-247": "Curiumhecm-247", "tag.item.nuclearcraft.reactor_fuel.curiumlecm-243": "Curiumlecm-243", "tag.item.nuclearcraft.reactor_fuel.curiumlecm-245": "Curiumlecm-245", "tag.item.nuclearcraft.reactor_fuel.curiumlecm-247": "Curiumlecm-247", + "tag.item.nuclearcraft.reactor_fuel.mixed.mix-239": "Mixed MIX-239 (Reactor Fuel)", + "tag.item.nuclearcraft.reactor_fuel.mixed.mix-241": "Mixed MIX-241 (Reactor Fuel)", "tag.item.nuclearcraft.reactor_fuel.mixedmix-239": "Mixedmix-239", "tag.item.nuclearcraft.reactor_fuel.mixedmix-241": "Mixedmix-241", + "tag.item.nuclearcraft.reactor_fuel.neptunium.hen-236": "Neptunium HEN-236 (Reactor Fuel)", + "tag.item.nuclearcraft.reactor_fuel.neptunium.len-236": "Neptunium LEN-236 (Reactor Fuel)", "tag.item.nuclearcraft.reactor_fuel.neptuniumhen-236": "Neptuniumhen-236", "tag.item.nuclearcraft.reactor_fuel.neptuniumlen-236": "Neptuniumlen-236", + "tag.item.nuclearcraft.reactor_fuel.plutonium.hep-239": "Plutonium HEP-239 (Reactor Fuel)", + "tag.item.nuclearcraft.reactor_fuel.plutonium.hep-241": "Plutonium HEP-241 (Reactor Fuel)", + "tag.item.nuclearcraft.reactor_fuel.plutonium.lep-239": "Plutonium LEP-239 (Reactor Fuel)", + "tag.item.nuclearcraft.reactor_fuel.plutonium.lep-241": "Plutonium LEP-241 (Reactor Fuel)", "tag.item.nuclearcraft.reactor_fuel.plutoniumhep-239": "Plutoniumhep-239", "tag.item.nuclearcraft.reactor_fuel.plutoniumhep-241": "Plutoniumhep-241", "tag.item.nuclearcraft.reactor_fuel.plutoniumlep-239": "Plutoniumlep-239", "tag.item.nuclearcraft.reactor_fuel.plutoniumlep-241": "Plutoniumlep-241", + "tag.item.nuclearcraft.reactor_fuel.thorium.tbu": "Thorium TBU (Reactor Fuel)", "tag.item.nuclearcraft.reactor_fuel.thoriumtbu": "Thoriumtbu", + "tag.item.nuclearcraft.reactor_fuel.uranium.heu-233": "Uranium HEU-233 (Reactor Fuel)", + "tag.item.nuclearcraft.reactor_fuel.uranium.heu-235": "Uranium HEU-235 (Reactor Fuel)", + "tag.item.nuclearcraft.reactor_fuel.uranium.leu-233": "Uranium LEU-233 (Reactor Fuel)", + "tag.item.nuclearcraft.reactor_fuel.uranium.leu-235": "Uranium LEU-235 (Reactor Fuel)", "tag.item.nuclearcraft.reactor_fuel.uraniumheu-233": "Uraniumheu-233", "tag.item.nuclearcraft.reactor_fuel.uraniumheu-235": "Uraniumheu-235", "tag.item.nuclearcraft.reactor_fuel.uraniumleu-233": "Uraniumleu-233", "tag.item.nuclearcraft.reactor_fuel.uraniumleu-235": "Uraniumleu-235", + "tag.item.nuclearcraft.reactor_fuel.xenorium.xen-298": "Xenorium XEN-298 (Reactor Fuel)", "tag.item.nuclearcraft.reactor_fuel.xenoriumxen-298": "Xenoriumxen-298", + "tag.item.nuclearcraft.reactor_fuel/americium/hea-242": "Americium HEA-242 (Reactor Fuel)", + "tag.item.nuclearcraft.reactor_fuel/americium/lea-242": "Americium LEA-242 (Reactor Fuel)", + "tag.item.nuclearcraft.reactor_fuel/berkelium/heb-248": "Berkelium HEB-248 (Reactor Fuel)", + "tag.item.nuclearcraft.reactor_fuel/berkelium/leb-248": "Berkelium LEB-248 (Reactor Fuel)", + "tag.item.nuclearcraft.reactor_fuel/californium/hecf-249": "Californium HECF-249 (Reactor Fuel)", + "tag.item.nuclearcraft.reactor_fuel/californium/hecf-251": "Californium HECF-251 (Reactor Fuel)", + "tag.item.nuclearcraft.reactor_fuel/californium/lecf-249": "Californium LECF-249 (Reactor Fuel)", + "tag.item.nuclearcraft.reactor_fuel/californium/lecf-251": "Californium LECF-251 (Reactor Fuel)", + "tag.item.nuclearcraft.reactor_fuel/curium/hecm-243": "Curium HECM-243 (Reactor Fuel)", + "tag.item.nuclearcraft.reactor_fuel/curium/hecm-245": "Curium HECM-245 (Reactor Fuel)", + "tag.item.nuclearcraft.reactor_fuel/curium/hecm-247": "Curium HECM-247 (Reactor Fuel)", + "tag.item.nuclearcraft.reactor_fuel/curium/lecm-243": "Curium LECM-243 (Reactor Fuel)", + "tag.item.nuclearcraft.reactor_fuel/curium/lecm-245": "Curium LECM-245 (Reactor Fuel)", + "tag.item.nuclearcraft.reactor_fuel/curium/lecm-247": "Curium LECM-247 (Reactor Fuel)", + "tag.item.nuclearcraft.reactor_fuel/mixed/mix-239": "Mixed MIX-239 (Reactor Fuel)", + "tag.item.nuclearcraft.reactor_fuel/mixed/mix-241": "Mixed MIX-241 (Reactor Fuel)", + "tag.item.nuclearcraft.reactor_fuel/neptunium/hen-236": "Neptunium HEN-236 (Reactor Fuel)", + "tag.item.nuclearcraft.reactor_fuel/neptunium/len-236": "Neptunium LEN-236 (Reactor Fuel)", + "tag.item.nuclearcraft.reactor_fuel/plutonium/hep-239": "Plutonium HEP-239 (Reactor Fuel)", + "tag.item.nuclearcraft.reactor_fuel/plutonium/hep-241": "Plutonium HEP-241 (Reactor Fuel)", + "tag.item.nuclearcraft.reactor_fuel/plutonium/lep-239": "Plutonium LEP-239 (Reactor Fuel)", + "tag.item.nuclearcraft.reactor_fuel/plutonium/lep-241": "Plutonium LEP-241 (Reactor Fuel)", + "tag.item.nuclearcraft.reactor_fuel/thorium/tbu": "Thorium TBU (Reactor Fuel)", + "tag.item.nuclearcraft.reactor_fuel/uranium/heu-233": "Uranium HEU-233 (Reactor Fuel)", + "tag.item.nuclearcraft.reactor_fuel/uranium/heu-235": "Uranium HEU-235 (Reactor Fuel)", + "tag.item.nuclearcraft.reactor_fuel/uranium/leu-233": "Uranium LEU-233 (Reactor Fuel)", + "tag.item.nuclearcraft.reactor_fuel/uranium/leu-235": "Uranium LEU-235 (Reactor Fuel)", + "tag.item.nuclearcraft.reactor_fuel/xenorium/xen-298": "Xenorium XEN-298 (Reactor Fuel)", "tag.item.nuclearcraft.redstone": "Redstone", "tag.item.nuclearcraft.redstone_ethanol": "Redstone Ethanol", "tag.item.nuclearcraft.ruthenium_106": "Ruthenium 106", @@ -2128,4 +5036,4 @@ "tag.item.nuclearcraft.zircaloy": "Zircaloy", "tag.item.nuclearcraft.zirconium": "Zirconium", "tag.item.nuclearcraft.zirconium_molybdenum": "Zirconium Molybdenum" -} \ No newline at end of file +} diff --git a/src/main/resources/assets/nuclearcraft/blockstates/black_hole.json b/src/main/resources/assets/nuclearcraft/blockstates/black_hole.json new file mode 100644 index 000000000..ff2c647f5 --- /dev/null +++ b/src/main/resources/assets/nuclearcraft/blockstates/black_hole.json @@ -0,0 +1,10 @@ +{ + "variants": { + "powered=false": { + "model": "nuclearcraft:block/dummy" + }, + "powered=true": { + "model": "nuclearcraft:block/dummy" + } + } +} diff --git a/src/main/resources/assets/nuclearcraft/lang/ru_ru.json b/src/main/resources/assets/nuclearcraft/lang/ru_ru.json index 53513f57c..e270a4ff0 100644 --- a/src/main/resources/assets/nuclearcraft/lang/ru_ru.json +++ b/src/main/resources/assets/nuclearcraft/lang/ru_ru.json @@ -1760,7 +1760,7 @@ "item.nuclearcraft.gelatin_bucket": "Ведро Желатина", "item.nuclearcraft.germanium_dust": "Германиевая пыль", "item.nuclearcraft.glowstone_bucket": "Ведро светокамня", - "item.nuclearcraft.glueballs": "Клеевые шарики", + "item.nuclearcraft.glueballs": "Глюоны", "item.nuclearcraft.gold_bucket": "Ведро Золота", "item.nuclearcraft.gold_clean_slurry_bucket": "Ведро Чистого Золотого Раствора", "item.nuclearcraft.gold_dust": "Золотая пыль", @@ -2757,5 +2757,6 @@ "tooltip.nc.magnet.disable": "Выключить автоподбор", "tooltip.nc.magnet.enable": "Включить автоподбор", "tooltip.nc.wasteland.disabled": "Пустоши отключены", - "tooltip.nc.wasteland.portal.descr": "Телепортирует игрока в пустоши" + "tooltip.nc.wasteland.portal.descr": "Телепортирует игрока в пустоши", + "tooltip.nc.accelerator.too_hot": "Ускоритель слишком горячий" } \ No newline at end of file diff --git a/src/main/resources/assets/nuclearcraft/shaders/core/rendertype_blackhole.json b/src/main/resources/assets/nuclearcraft/shaders/core/rendertype_blackhole.json index edfc6285f..1848c67aa 100644 --- a/src/main/resources/assets/nuclearcraft/shaders/core/rendertype_blackhole.json +++ b/src/main/resources/assets/nuclearcraft/shaders/core/rendertype_blackhole.json @@ -63,22 +63,6 @@ 1.0 ] }, - { - "name": "IViewRotMat", - "type": "matrix3x3", - "count": 9, - "values": [ - 1.0, - 0.0, - 0.0, - 0.0, - 1.0, - 0.0, - 0.0, - 0.0, - 1.0 - ] - }, { "name": "ColorModulator", "type": "float", diff --git a/src/main/resources/assets/nuclearcraft/shaders/core/rendertype_blackhole.vsh b/src/main/resources/assets/nuclearcraft/shaders/core/rendertype_blackhole.vsh index e57cceb0c..8e290f589 100644 --- a/src/main/resources/assets/nuclearcraft/shaders/core/rendertype_blackhole.vsh +++ b/src/main/resources/assets/nuclearcraft/shaders/core/rendertype_blackhole.vsh @@ -8,7 +8,6 @@ in vec2 UV0; uniform mat4 ModelViewMat; uniform mat4 ProjMat; -uniform mat3 IViewRotMat; uniform int FogShape; out float vertexDistance; @@ -18,7 +17,7 @@ out vec2 texCoord0; void main() { gl_Position = ProjMat * ModelViewMat * vec4(Position, 1.0); - vertexDistance = fog_distance(ModelViewMat, IViewRotMat * Position, FogShape); + vertexDistance = fog_distance(Position, FogShape); vertexColor = Color; texCoord0 = UV0; } \ No newline at end of file diff --git a/src/main/resources/data/forge/tags/worldgen/biome/biomes.json b/src/main/resources/data/forge/tags/worldgen/biome/biomes.json deleted file mode 100644 index dd13e1714..000000000 --- a/src/main/resources/data/forge/tags/worldgen/biome/biomes.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "values": [ - "#forge:is_dry", - "#forge:is_wet", - "#forge:is_hot", - "#forge:is_cold", - "#forge:is_rare", - "#forge:is_water" - ] -} \ No newline at end of file diff --git a/src/main/resources/data/industrialforegoing/recipes/laser_drill_ore/raw_materials/boron.json b/src/main/resources/data/industrialforegoing/recipes/laser_drill_ore/raw_materials/boron.json index a90dd0d6c..aae361e20 100644 --- a/src/main/resources/data/industrialforegoing/recipes/laser_drill_ore/raw_materials/boron.json +++ b/src/main/resources/data/industrialforegoing/recipes/laser_drill_ore/raw_materials/boron.json @@ -1,17 +1,17 @@ { - "type": "forge:conditional", + "type": "neoforge:conditional", "recipes": [ { "conditions": [ { - "type": "forge:not", + "type": "neoforge:not", "value": { - "type": "forge:tag_empty", - "tag": "forge:raw_materials/boron" + "type": "neoforge:tag_empty", + "tag": "c:raw_materials/boron" } }, { - "type": "forge:mod_loaded", + "type": "neoforge:mod_loaded", "modid": "industrialforegoing" } ], @@ -21,7 +21,7 @@ "item": "industrialforegoing:laser_lens10" }, "output": { - "tag": "forge:raw_materials/boron" + "tag": "c:raw_materials/boron" }, "pointer": 0, "rarity": [ diff --git a/src/main/resources/data/industrialforegoing/recipes/laser_drill_ore/raw_materials/magnesium.json b/src/main/resources/data/industrialforegoing/recipes/laser_drill_ore/raw_materials/magnesium.json index eaad8a83b..c25405f6e 100644 --- a/src/main/resources/data/industrialforegoing/recipes/laser_drill_ore/raw_materials/magnesium.json +++ b/src/main/resources/data/industrialforegoing/recipes/laser_drill_ore/raw_materials/magnesium.json @@ -1,17 +1,17 @@ { - "type": "forge:conditional", + "type": "neoforge:conditional", "recipes": [ { "conditions": [ { - "type": "forge:not", + "type": "neoforge:not", "value": { - "type": "forge:tag_empty", - "tag": "forge:raw_materials/magnesium" + "type": "neoforge:tag_empty", + "tag": "c:raw_materials/magnesium" } }, { - "type": "forge:mod_loaded", + "type": "neoforge:mod_loaded", "modid": "industrialforegoing" } ], @@ -21,7 +21,7 @@ "item": "industrialforegoing:laser_lens14" }, "output": { - "tag": "forge:raw_materials/magnesium" + "tag": "c:raw_materials/magnesium" }, "pointer": 0, "rarity": [ diff --git a/src/main/resources/data/industrialforegoing/recipes/laser_drill_ore/raw_materials/thorium.json b/src/main/resources/data/industrialforegoing/recipes/laser_drill_ore/raw_materials/thorium.json index 4e0f63a49..59ac5b623 100644 --- a/src/main/resources/data/industrialforegoing/recipes/laser_drill_ore/raw_materials/thorium.json +++ b/src/main/resources/data/industrialforegoing/recipes/laser_drill_ore/raw_materials/thorium.json @@ -1,17 +1,17 @@ { - "type": "forge:conditional", + "type": "neoforge:conditional", "recipes": [ { "conditions": [ { - "type": "forge:not", + "type": "neoforge:not", "value": { - "type": "forge:tag_empty", - "tag": "forge:raw_materials/thorium" + "type": "neoforge:tag_empty", + "tag": "c:raw_materials/thorium" } }, { - "type": "forge:mod_loaded", + "type": "neoforge:mod_loaded", "modid": "industrialforegoing" } ], @@ -21,7 +21,7 @@ "item": "industrialforegoing:laser_lens15" }, "output": { - "tag": "forge:raw_materials/thorium" + "tag": "c:raw_materials/thorium" }, "pointer": 0, "rarity": [ diff --git a/src/main/resources/data/industrialforegoing/recipes/laser_drill_ore/raw_materials/zinc.json b/src/main/resources/data/industrialforegoing/recipes/laser_drill_ore/raw_materials/zinc.json index 3984b841d..0b08d2795 100644 --- a/src/main/resources/data/industrialforegoing/recipes/laser_drill_ore/raw_materials/zinc.json +++ b/src/main/resources/data/industrialforegoing/recipes/laser_drill_ore/raw_materials/zinc.json @@ -1,17 +1,17 @@ { - "type": "forge:conditional", + "type": "neoforge:conditional", "recipes": [ { "conditions": [ { - "type": "forge:not", + "type": "neoforge:not", "value": { - "type": "forge:tag_empty", - "tag": "forge:raw_materials/zinc" + "type": "neoforge:tag_empty", + "tag": "c:raw_materials/zinc" } }, { - "type": "forge:mod_loaded", + "type": "neoforge:mod_loaded", "modid": "industrialforegoing" } ], @@ -21,7 +21,7 @@ "item": "industrialforegoing:laser_lens4" }, "output": { - "tag": "forge:raw_materials/zinc" + "tag": "c:raw_materials/zinc" }, "pointer": 0, "rarity": [ diff --git a/src/main/resources/data/nuclearcraft/advancements/root.json b/src/main/resources/data/nuclearcraft/advancements/root.json index e49a0e496..6056b081a 100644 --- a/src/main/resources/data/nuclearcraft/advancements/root.json +++ b/src/main/resources/data/nuclearcraft/advancements/root.json @@ -21,7 +21,7 @@ "conditions": { "items": [ { - "tag": "forge:ingots/uranium" + "tag": "c:ingots/uranium" } ] } diff --git a/src/main/resources/data/nuclearcraft/dimension/wasteland.json b/src/main/resources/data/nuclearcraft/dimension/wasteland.json index 77f80bd1f..916d17e0f 100644 --- a/src/main/resources/data/nuclearcraft/dimension/wasteland.json +++ b/src/main/resources/data/nuclearcraft/dimension/wasteland.json @@ -1,5 +1,5 @@ { - "forge:conditions": [ + "neoforge:conditions": [ { "type": "nuclearcraft:wasteland_enabled" } diff --git a/src/main/resources/data/nuclearcraft/dimension_type/wasteland_type.json b/src/main/resources/data/nuclearcraft/dimension_type/wasteland_type.json index 08662fbbf..9d4db3974 100644 --- a/src/main/resources/data/nuclearcraft/dimension_type/wasteland_type.json +++ b/src/main/resources/data/nuclearcraft/dimension_type/wasteland_type.json @@ -1,5 +1,5 @@ { - "forge:conditions": [ + "neoforge:conditions": [ { "type": "nuclearcraft:wasteland_enabled" } @@ -18,10 +18,8 @@ "monster_spawn_block_light_limit": 0, "monster_spawn_light_level": { "type": "minecraft:uniform", - "value": { - "max_inclusive": 7, - "min_inclusive": 0 - } + "max_inclusive": 7, + "min_inclusive": 0 }, "natural": false, "piglin_safe": false, diff --git a/src/main/resources/data/nuclearcraft/forge/biome_modifier/wasteland_ruins.json b/src/main/resources/data/nuclearcraft/forge/biome_modifier/wasteland_ruins.json index e4ea0476a..1cf057af9 100644 --- a/src/main/resources/data/nuclearcraft/forge/biome_modifier/wasteland_ruins.json +++ b/src/main/resources/data/nuclearcraft/forge/biome_modifier/wasteland_ruins.json @@ -1,5 +1,5 @@ { - "type": "forge:add_features", + "type": "neoforge:add_features", "biomes": "#nuclearcraft:wasteland", "features": [ "nuclearcraft:wasteland_ruins" diff --git a/src/main/resources/data/nuclearcraft/recipes/alloy_smelter/enderio_conductive_alloy.json b/src/main/resources/data/nuclearcraft/recipes/alloy_smelter/enderio_conductive_alloy.json index 6cabcb2d8..7077cb0ae 100644 --- a/src/main/resources/data/nuclearcraft/recipes/alloy_smelter/enderio_conductive_alloy.json +++ b/src/main/resources/data/nuclearcraft/recipes/alloy_smelter/enderio_conductive_alloy.json @@ -1,10 +1,10 @@ { - "type": "forge:conditional", + "type": "neoforge:conditional", "recipes": [ { "conditions": [ { - "type": "forge:mod_loaded", + "type": "neoforge:mod_loaded", "modid": "enderio" } ], @@ -12,10 +12,10 @@ "type": "nuclearcraft:alloy_smelter", "input": [ { - "tag": "forge:ingots/copper_alloy" + "tag": "c:ingots/copper_alloy" }, { - "tag": "forge:ingots/lithium" + "tag": "c:ingots/lithium" } ], "output": [ diff --git a/src/main/resources/data/nuclearcraft/recipes/alloy_smelter/enderio_copper_alloy.json b/src/main/resources/data/nuclearcraft/recipes/alloy_smelter/enderio_copper_alloy.json index 6af574e96..4f266213e 100644 --- a/src/main/resources/data/nuclearcraft/recipes/alloy_smelter/enderio_copper_alloy.json +++ b/src/main/resources/data/nuclearcraft/recipes/alloy_smelter/enderio_copper_alloy.json @@ -1,10 +1,10 @@ { - "type": "forge:conditional", + "type": "neoforge:conditional", "recipes": [ { "conditions": [ { - "type": "forge:mod_loaded", + "type": "neoforge:mod_loaded", "modid": "enderio" } ], @@ -12,10 +12,10 @@ "type": "nuclearcraft:alloy_smelter", "input": [ { - "tag": "forge:ingots/copper" + "tag": "c:ingots/copper" }, { - "tag": "forge:silicon" + "tag": "c:silicon" } ], "output": [ diff --git a/src/main/resources/data/nuclearcraft/recipes/alloy_smelter/enderio_dark_steel_alloy.json b/src/main/resources/data/nuclearcraft/recipes/alloy_smelter/enderio_dark_steel_alloy.json index e08eb46a1..2cc4b59bf 100644 --- a/src/main/resources/data/nuclearcraft/recipes/alloy_smelter/enderio_dark_steel_alloy.json +++ b/src/main/resources/data/nuclearcraft/recipes/alloy_smelter/enderio_dark_steel_alloy.json @@ -1,10 +1,10 @@ { - "type": "forge:conditional", + "type": "neoforge:conditional", "recipes": [ { "conditions": [ { - "type": "forge:mod_loaded", + "type": "neoforge:mod_loaded", "modid": "enderio" } ], @@ -12,10 +12,10 @@ "type": "nuclearcraft:alloy_smelter", "input": [ { - "tag": "forge:ingots/steel" + "tag": "c:ingots/steel" }, { - "tag": "forge:obsidian" + "tag": "c:obsidian" } ], "output": [ diff --git a/src/main/resources/data/nuclearcraft/recipes/alloy_smelter/enderio_energetic_alloy.json b/src/main/resources/data/nuclearcraft/recipes/alloy_smelter/enderio_energetic_alloy.json index 8601998df..72114a6da 100644 --- a/src/main/resources/data/nuclearcraft/recipes/alloy_smelter/enderio_energetic_alloy.json +++ b/src/main/resources/data/nuclearcraft/recipes/alloy_smelter/enderio_energetic_alloy.json @@ -1,10 +1,10 @@ { - "type": "forge:conditional", + "type": "neoforge:conditional", "recipes": [ { "conditions": [ { - "type": "forge:mod_loaded", + "type": "neoforge:mod_loaded", "modid": "enderio" } ], @@ -12,10 +12,10 @@ "type": "nuclearcraft:alloy_smelter", "input": [ { - "tag": "forge:dusts/energetic_blend" + "tag": "c:dusts/energetic_blend" }, { - "tag": "forge:ingots/gold", + "tag": "c:ingots/gold", "count": 2 } ], diff --git a/src/main/resources/data/nuclearcraft/recipes/alloy_smelter/enderio_pulsating_alloy.json b/src/main/resources/data/nuclearcraft/recipes/alloy_smelter/enderio_pulsating_alloy.json index 374d6b731..74ee89055 100644 --- a/src/main/resources/data/nuclearcraft/recipes/alloy_smelter/enderio_pulsating_alloy.json +++ b/src/main/resources/data/nuclearcraft/recipes/alloy_smelter/enderio_pulsating_alloy.json @@ -1,10 +1,10 @@ { - "type": "forge:conditional", + "type": "neoforge:conditional", "recipes": [ { "conditions": [ { - "type": "forge:mod_loaded", + "type": "neoforge:mod_loaded", "modid": "enderio" } ], @@ -12,10 +12,10 @@ "type": "nuclearcraft:alloy_smelter", "input": [ { - "tag": "forge:ingots/iron" + "tag": "c:ingots/iron" }, { - "tag": "forge:ender_pearls" + "tag": "c:ender_pearls" } ], "output": [ diff --git a/src/main/resources/data/nuclearcraft/recipes/alloy_smelter/enderio_redstone_alloy.json b/src/main/resources/data/nuclearcraft/recipes/alloy_smelter/enderio_redstone_alloy.json index f0165bb32..317a1abed 100644 --- a/src/main/resources/data/nuclearcraft/recipes/alloy_smelter/enderio_redstone_alloy.json +++ b/src/main/resources/data/nuclearcraft/recipes/alloy_smelter/enderio_redstone_alloy.json @@ -1,10 +1,10 @@ { - "type": "forge:conditional", + "type": "neoforge:conditional", "recipes": [ { "conditions": [ { - "type": "forge:mod_loaded", + "type": "neoforge:mod_loaded", "modid": "enderio" } ], @@ -12,10 +12,10 @@ "type": "nuclearcraft:alloy_smelter", "input": [ { - "tag": "forge:dusts/redstone" + "tag": "c:dusts/redstone" }, { - "tag": "forge:silicon" + "tag": "c:silicon" } ], "output": [ diff --git a/src/main/resources/data/nuclearcraft/recipes/alloy_smelter/enderio_soularium.json b/src/main/resources/data/nuclearcraft/recipes/alloy_smelter/enderio_soularium.json index 4a6516eaf..86c67fc3e 100644 --- a/src/main/resources/data/nuclearcraft/recipes/alloy_smelter/enderio_soularium.json +++ b/src/main/resources/data/nuclearcraft/recipes/alloy_smelter/enderio_soularium.json @@ -1,10 +1,10 @@ { - "type": "forge:conditional", + "type": "neoforge:conditional", "recipes": [ { "conditions": [ { - "type": "forge:mod_loaded", + "type": "neoforge:mod_loaded", "modid": "enderio" } ], @@ -15,7 +15,7 @@ "item": "minecraft:soul_sand" }, { - "tag": "forge:ingots/gold" + "tag": "c:ingots/gold" } ], "output": [ diff --git a/src/main/resources/data/nuclearcraft/recipes/alloy_smelter/thermal_cured_rubber.json b/src/main/resources/data/nuclearcraft/recipes/alloy_smelter/thermal_cured_rubber.json index 1f85288e1..dfe3d846f 100644 --- a/src/main/resources/data/nuclearcraft/recipes/alloy_smelter/thermal_cured_rubber.json +++ b/src/main/resources/data/nuclearcraft/recipes/alloy_smelter/thermal_cured_rubber.json @@ -1,10 +1,10 @@ { - "type": "forge:conditional", + "type": "neoforge:conditional", "recipes": [ { "conditions": [ { - "type": "forge:mod_loaded", + "type": "neoforge:mod_loaded", "modid": "thermal_expansion" } ], @@ -15,7 +15,7 @@ "item": "thermal:rubber" }, { - "tag": "forge:dusts/sulfur" + "tag": "c:dusts/sulfur" } ], "output": [ diff --git a/src/main/resources/data/nuclearcraft/recipes/alloy_smelter/thermal_enderium.json b/src/main/resources/data/nuclearcraft/recipes/alloy_smelter/thermal_enderium.json index 47b45e2b4..2a492f410 100644 --- a/src/main/resources/data/nuclearcraft/recipes/alloy_smelter/thermal_enderium.json +++ b/src/main/resources/data/nuclearcraft/recipes/alloy_smelter/thermal_enderium.json @@ -1,10 +1,10 @@ { - "type": "forge:conditional", + "type": "neoforge:conditional", "recipes": [ { "conditions": [ { - "type": "forge:mod_loaded", + "type": "neoforge:mod_loaded", "modid": "thermal_expansion" } ], @@ -12,10 +12,10 @@ "type": "nuclearcraft:alloy_smelter", "input": [ { - "tag": "forge:ingots/hard_carbon" + "tag": "c:ingots/hard_carbon" }, { - "tag": "forge:ender_pearls", + "tag": "c:ender_pearls", "count": 2 } ], diff --git a/src/main/resources/data/nuclearcraft/recipes/alloy_smelter/thermal_enderium_glass.json b/src/main/resources/data/nuclearcraft/recipes/alloy_smelter/thermal_enderium_glass.json index 71cef067d..60a9d2d74 100644 --- a/src/main/resources/data/nuclearcraft/recipes/alloy_smelter/thermal_enderium_glass.json +++ b/src/main/resources/data/nuclearcraft/recipes/alloy_smelter/thermal_enderium_glass.json @@ -1,10 +1,10 @@ { - "type": "forge:conditional", + "type": "neoforge:conditional", "recipes": [ { "conditions": [ { - "type": "forge:mod_loaded", + "type": "neoforge:mod_loaded", "modid": "thermal_expansion" } ], @@ -15,7 +15,7 @@ "item": "thermal:obsidian_glass" }, { - "tag": "forge:ingots/enderium" + "tag": "c:ingots/enderium" } ], "output": [ diff --git a/src/main/resources/data/nuclearcraft/recipes/alloy_smelter/thermal_lumium.json b/src/main/resources/data/nuclearcraft/recipes/alloy_smelter/thermal_lumium.json index 711b11ef8..2356449f4 100644 --- a/src/main/resources/data/nuclearcraft/recipes/alloy_smelter/thermal_lumium.json +++ b/src/main/resources/data/nuclearcraft/recipes/alloy_smelter/thermal_lumium.json @@ -1,10 +1,10 @@ { - "type": "forge:conditional", + "type": "neoforge:conditional", "recipes": [ { "conditions": [ { - "type": "forge:mod_loaded", + "type": "neoforge:mod_loaded", "modid": "thermal_expansion" } ], @@ -12,10 +12,10 @@ "type": "nuclearcraft:alloy_smelter", "input": [ { - "tag": "forge:ingots/tin_silver" + "tag": "c:ingots/tin_silver" }, { - "tag": "forge:dusts/glowstone" + "tag": "c:dusts/glowstone" } ], "output": [ diff --git a/src/main/resources/data/nuclearcraft/recipes/alloy_smelter/thermal_lumium_glass.json b/src/main/resources/data/nuclearcraft/recipes/alloy_smelter/thermal_lumium_glass.json index 4ca21d452..5028fcde0 100644 --- a/src/main/resources/data/nuclearcraft/recipes/alloy_smelter/thermal_lumium_glass.json +++ b/src/main/resources/data/nuclearcraft/recipes/alloy_smelter/thermal_lumium_glass.json @@ -1,10 +1,10 @@ { - "type": "forge:conditional", + "type": "neoforge:conditional", "recipes": [ { "conditions": [ { - "type": "forge:mod_loaded", + "type": "neoforge:mod_loaded", "modid": "thermal_expansion" } ], @@ -15,7 +15,7 @@ "item": "thermal:obsidian_glass" }, { - "tag": "forge:ingots/lumium" + "tag": "c:ingots/lumium" } ], "output": [ diff --git a/src/main/resources/data/nuclearcraft/recipes/alloy_smelter/thermal_obsidian_glass.json b/src/main/resources/data/nuclearcraft/recipes/alloy_smelter/thermal_obsidian_glass.json index 2b37bbaf4..85642f04f 100644 --- a/src/main/resources/data/nuclearcraft/recipes/alloy_smelter/thermal_obsidian_glass.json +++ b/src/main/resources/data/nuclearcraft/recipes/alloy_smelter/thermal_obsidian_glass.json @@ -1,10 +1,10 @@ { - "type": "forge:conditional", + "type": "neoforge:conditional", "recipes": [ { "conditions": [ { - "type": "forge:mod_loaded", + "type": "neoforge:mod_loaded", "modid": "thermal_expansion" } ], @@ -12,10 +12,10 @@ "type": "nuclearcraft:alloy_smelter", "input": [ { - "tag": "forge:obsidian" + "tag": "c:obsidian" }, { - "tag": "forge:dusts/energetic_blend" + "tag": "c:dusts/energetic_blend" } ], "output": [ diff --git a/src/main/resources/data/nuclearcraft/recipes/alloy_smelter/thermal_signalum.json b/src/main/resources/data/nuclearcraft/recipes/alloy_smelter/thermal_signalum.json index b99851025..0dd2caed0 100644 --- a/src/main/resources/data/nuclearcraft/recipes/alloy_smelter/thermal_signalum.json +++ b/src/main/resources/data/nuclearcraft/recipes/alloy_smelter/thermal_signalum.json @@ -1,10 +1,10 @@ { - "type": "forge:conditional", + "type": "neoforge:conditional", "recipes": [ { "conditions": [ { - "type": "forge:mod_loaded", + "type": "neoforge:mod_loaded", "modid": "thermal_expansion" } ], @@ -12,10 +12,10 @@ "type": "nuclearcraft:alloy_smelter", "input": [ { - "tag": "forge:ingots/silver" + "tag": "c:ingots/silver" }, { - "tag": "forge:ingots/extreme" + "tag": "c:ingots/extreme" } ], "output": [ diff --git a/src/main/resources/data/nuclearcraft/recipes/alloy_smelter/thermal_signalum_glass.json b/src/main/resources/data/nuclearcraft/recipes/alloy_smelter/thermal_signalum_glass.json index ef3d4ef49..0b4d97485 100644 --- a/src/main/resources/data/nuclearcraft/recipes/alloy_smelter/thermal_signalum_glass.json +++ b/src/main/resources/data/nuclearcraft/recipes/alloy_smelter/thermal_signalum_glass.json @@ -1,10 +1,10 @@ { - "type": "forge:conditional", + "type": "neoforge:conditional", "recipes": [ { "conditions": [ { - "type": "forge:mod_loaded", + "type": "neoforge:mod_loaded", "modid": "thermal_expansion" } ], @@ -15,7 +15,7 @@ "item": "thermal:obsidian_glass" }, { - "tag": "forge:ingots/signalum" + "tag": "c:ingots/signalum" } ], "output": [ diff --git a/src/main/resources/data/nuclearcraft/recipes/assembler/ae2_calculation_processor.json b/src/main/resources/data/nuclearcraft/recipes/assembler/ae2_calculation_processor.json index 62364a16d..950b130fa 100644 --- a/src/main/resources/data/nuclearcraft/recipes/assembler/ae2_calculation_processor.json +++ b/src/main/resources/data/nuclearcraft/recipes/assembler/ae2_calculation_processor.json @@ -1,10 +1,10 @@ { - "type": "forge:conditional", + "type": "neoforge:conditional", "recipes": [ { "conditions": [ { - "type": "forge:mod_loaded", + "type": "neoforge:mod_loaded", "modid": "ae2" } ], @@ -15,7 +15,7 @@ "item": "ae2:printed_calculation_processor" }, { - "tag": "forge:dusts/energetic_blend" + "tag": "c:dusts/energetic_blend" }, { "item": "ae2:printed_silicon" diff --git a/src/main/resources/data/nuclearcraft/recipes/assembler/ae2_engineering_processor.json b/src/main/resources/data/nuclearcraft/recipes/assembler/ae2_engineering_processor.json index 2dbe97ac4..e2695e957 100644 --- a/src/main/resources/data/nuclearcraft/recipes/assembler/ae2_engineering_processor.json +++ b/src/main/resources/data/nuclearcraft/recipes/assembler/ae2_engineering_processor.json @@ -1,10 +1,10 @@ { - "type": "forge:conditional", + "type": "neoforge:conditional", "recipes": [ { "conditions": [ { - "type": "forge:mod_loaded", + "type": "neoforge:mod_loaded", "modid": "ae2" } ], @@ -15,7 +15,7 @@ "item": "ae2:printed_engineering_processor" }, { - "tag": "forge:dusts/energetic_blend" + "tag": "c:dusts/energetic_blend" }, { "item": "ae2:printed_silicon" diff --git a/src/main/resources/data/nuclearcraft/recipes/assembler/ae2_logic_processor.json b/src/main/resources/data/nuclearcraft/recipes/assembler/ae2_logic_processor.json index c50ec5ee1..d6f83fcaa 100644 --- a/src/main/resources/data/nuclearcraft/recipes/assembler/ae2_logic_processor.json +++ b/src/main/resources/data/nuclearcraft/recipes/assembler/ae2_logic_processor.json @@ -1,10 +1,10 @@ { - "type": "forge:conditional", + "type": "neoforge:conditional", "recipes": [ { "conditions": [ { - "type": "forge:mod_loaded", + "type": "neoforge:mod_loaded", "modid": "ae2" } ], @@ -15,7 +15,7 @@ "item": "ae2:printed_logic_processor" }, { - "tag": "forge:dusts/energetic_blend" + "tag": "c:dusts/energetic_blend" }, { "item": "ae2:printed_silicon" diff --git a/src/main/resources/data/nuclearcraft/recipes/centrifuge/termal_crude_oil.json b/src/main/resources/data/nuclearcraft/recipes/centrifuge/termal_crude_oil.json index a2b70ebf0..d03251282 100644 --- a/src/main/resources/data/nuclearcraft/recipes/centrifuge/termal_crude_oil.json +++ b/src/main/resources/data/nuclearcraft/recipes/centrifuge/termal_crude_oil.json @@ -1,10 +1,10 @@ { - "type": "forge:conditional", + "type": "neoforge:conditional", "recipes": [ { "conditions": [ { - "type": "forge:mod_loaded", + "type": "neoforge:mod_loaded", "modid": "thermal_expansion" } ], @@ -13,7 +13,7 @@ "inputFluids": [ { "amount": 1000, - "tag": "forge:crude_oil" + "tag": "neoforge:crude_oil" } ], "outputFluids": [ diff --git a/src/main/resources/data/nuclearcraft/recipes/centrifuge/thermal_sap.json b/src/main/resources/data/nuclearcraft/recipes/centrifuge/thermal_sap.json index a3607cdb3..38ae1a921 100644 --- a/src/main/resources/data/nuclearcraft/recipes/centrifuge/thermal_sap.json +++ b/src/main/resources/data/nuclearcraft/recipes/centrifuge/thermal_sap.json @@ -1,10 +1,10 @@ { - "type": "forge:conditional", + "type": "neoforge:conditional", "recipes": [ { "conditions": [ { - "type": "forge:mod_loaded", + "type": "neoforge:mod_loaded", "modid": "thermal_expansion" } ], diff --git a/src/main/resources/data/nuclearcraft/recipes/chamber_terminal_tier_1.json b/src/main/resources/data/nuclearcraft/recipes/chamber_terminal_tier_1.json index dbf0ee112..7c885ad6c 100644 --- a/src/main/resources/data/nuclearcraft/recipes/chamber_terminal_tier_1.json +++ b/src/main/resources/data/nuclearcraft/recipes/chamber_terminal_tier_1.json @@ -1,5 +1,5 @@ { - "type": "forge:conditional", + "type": "neoforge:conditional", "recipes": [ { "conditions": [ diff --git a/src/main/resources/data/nuclearcraft/recipes/extractor/thermal_honeycomb.json b/src/main/resources/data/nuclearcraft/recipes/extractor/thermal_honeycomb.json index e244e4379..efe7b150e 100644 --- a/src/main/resources/data/nuclearcraft/recipes/extractor/thermal_honeycomb.json +++ b/src/main/resources/data/nuclearcraft/recipes/extractor/thermal_honeycomb.json @@ -1,10 +1,10 @@ { - "type": "forge:conditional", + "type": "neoforge:conditional", "recipes": [ { "conditions": [ { - "type": "forge:mod_loaded", + "type": "neoforge:mod_loaded", "modid": "thermal_expansion" } ], diff --git a/src/main/resources/data/nuclearcraft/recipes/fission_controller_tier_1.json b/src/main/resources/data/nuclearcraft/recipes/fission_controller_tier_1.json index 36c4a7893..6b897e0d0 100644 --- a/src/main/resources/data/nuclearcraft/recipes/fission_controller_tier_1.json +++ b/src/main/resources/data/nuclearcraft/recipes/fission_controller_tier_1.json @@ -1,5 +1,5 @@ { - "type": "forge:conditional", + "type": "neoforge:conditional", "recipes": [ { "conditions": [ diff --git a/src/main/resources/data/nuclearcraft/recipes/fusion_core_tier_1.json b/src/main/resources/data/nuclearcraft/recipes/fusion_core_tier_1.json index d4e002e50..e74bbdf73 100644 --- a/src/main/resources/data/nuclearcraft/recipes/fusion_core_tier_1.json +++ b/src/main/resources/data/nuclearcraft/recipes/fusion_core_tier_1.json @@ -1,5 +1,5 @@ { - "type": "forge:conditional", + "type": "neoforge:conditional", "recipes": [ { "conditions": [ diff --git a/src/main/resources/data/nuclearcraft/recipes/llinear_accelerator_controller_tier_1.json b/src/main/resources/data/nuclearcraft/recipes/llinear_accelerator_controller_tier_1.json index 7ce1f06d7..9091ec32f 100644 --- a/src/main/resources/data/nuclearcraft/recipes/llinear_accelerator_controller_tier_1.json +++ b/src/main/resources/data/nuclearcraft/recipes/llinear_accelerator_controller_tier_1.json @@ -1,5 +1,5 @@ { - "type": "forge:conditional", + "type": "neoforge:conditional", "recipes": [ { "conditions": [ diff --git a/src/main/resources/data/nuclearcraft/recipes/manufactory/exdeorum_boron_chunk.json b/src/main/resources/data/nuclearcraft/recipes/manufactory/exdeorum_boron_chunk.json index 8b6c9864c..693d2a60e 100644 --- a/src/main/resources/data/nuclearcraft/recipes/manufactory/exdeorum_boron_chunk.json +++ b/src/main/resources/data/nuclearcraft/recipes/manufactory/exdeorum_boron_chunk.json @@ -1,10 +1,10 @@ { - "type": "forge:conditional", + "type": "neoforge:conditional", "recipes": [ { "conditions": [ { - "type": "forge:mod_loaded", + "type": "neoforge:mod_loaded", "modid": "exdeorum" } ], diff --git a/src/main/resources/data/nuclearcraft/recipes/manufactory/exdeorum_cobalt_chunk.json b/src/main/resources/data/nuclearcraft/recipes/manufactory/exdeorum_cobalt_chunk.json index 3ca652164..39d7ee26e 100644 --- a/src/main/resources/data/nuclearcraft/recipes/manufactory/exdeorum_cobalt_chunk.json +++ b/src/main/resources/data/nuclearcraft/recipes/manufactory/exdeorum_cobalt_chunk.json @@ -1,10 +1,10 @@ { - "type": "forge:conditional", + "type": "neoforge:conditional", "recipes": [ { "conditions": [ { - "type": "forge:mod_loaded", + "type": "neoforge:mod_loaded", "modid": "exdeorum" } ], diff --git a/src/main/resources/data/nuclearcraft/recipes/manufactory/exdeorum_copper_chunk.json b/src/main/resources/data/nuclearcraft/recipes/manufactory/exdeorum_copper_chunk.json index 2f75b1c8e..f81188717 100644 --- a/src/main/resources/data/nuclearcraft/recipes/manufactory/exdeorum_copper_chunk.json +++ b/src/main/resources/data/nuclearcraft/recipes/manufactory/exdeorum_copper_chunk.json @@ -1,10 +1,10 @@ { - "type": "forge:conditional", + "type": "neoforge:conditional", "recipes": [ { "conditions": [ { - "type": "forge:mod_loaded", + "type": "neoforge:mod_loaded", "modid": "exdeorum" } ], diff --git a/src/main/resources/data/nuclearcraft/recipes/manufactory/exdeorum_gold_chunk.json b/src/main/resources/data/nuclearcraft/recipes/manufactory/exdeorum_gold_chunk.json index b5cb3aba8..729cd5f20 100644 --- a/src/main/resources/data/nuclearcraft/recipes/manufactory/exdeorum_gold_chunk.json +++ b/src/main/resources/data/nuclearcraft/recipes/manufactory/exdeorum_gold_chunk.json @@ -1,10 +1,10 @@ { - "type": "forge:conditional", + "type": "neoforge:conditional", "recipes": [ { "conditions": [ { - "type": "forge:mod_loaded", + "type": "neoforge:mod_loaded", "modid": "exdeorum" } ], diff --git a/src/main/resources/data/nuclearcraft/recipes/manufactory/exdeorum_iron_chunk.json b/src/main/resources/data/nuclearcraft/recipes/manufactory/exdeorum_iron_chunk.json index a85e4f0ed..0d83ae0cb 100644 --- a/src/main/resources/data/nuclearcraft/recipes/manufactory/exdeorum_iron_chunk.json +++ b/src/main/resources/data/nuclearcraft/recipes/manufactory/exdeorum_iron_chunk.json @@ -1,10 +1,10 @@ { - "type": "forge:conditional", + "type": "neoforge:conditional", "recipes": [ { "conditions": [ { - "type": "forge:mod_loaded", + "type": "neoforge:mod_loaded", "modid": "exdeorum" } ], diff --git a/src/main/resources/data/nuclearcraft/recipes/manufactory/exdeorum_lead_chunk.json b/src/main/resources/data/nuclearcraft/recipes/manufactory/exdeorum_lead_chunk.json index 2d3f6e835..a99b4116d 100644 --- a/src/main/resources/data/nuclearcraft/recipes/manufactory/exdeorum_lead_chunk.json +++ b/src/main/resources/data/nuclearcraft/recipes/manufactory/exdeorum_lead_chunk.json @@ -1,10 +1,10 @@ { - "type": "forge:conditional", + "type": "neoforge:conditional", "recipes": [ { "conditions": [ { - "type": "forge:mod_loaded", + "type": "neoforge:mod_loaded", "modid": "exdeorum" } ], diff --git a/src/main/resources/data/nuclearcraft/recipes/manufactory/exdeorum_lithium_chunk.json b/src/main/resources/data/nuclearcraft/recipes/manufactory/exdeorum_lithium_chunk.json index 7b9f2245b..1f47e1a15 100644 --- a/src/main/resources/data/nuclearcraft/recipes/manufactory/exdeorum_lithium_chunk.json +++ b/src/main/resources/data/nuclearcraft/recipes/manufactory/exdeorum_lithium_chunk.json @@ -1,10 +1,10 @@ { - "type": "forge:conditional", + "type": "neoforge:conditional", "recipes": [ { "conditions": [ { - "type": "forge:mod_loaded", + "type": "neoforge:mod_loaded", "modid": "exdeorum" } ], diff --git a/src/main/resources/data/nuclearcraft/recipes/manufactory/exdeorum_magnesium_chunk.json b/src/main/resources/data/nuclearcraft/recipes/manufactory/exdeorum_magnesium_chunk.json index adca86025..65ac9d0d8 100644 --- a/src/main/resources/data/nuclearcraft/recipes/manufactory/exdeorum_magnesium_chunk.json +++ b/src/main/resources/data/nuclearcraft/recipes/manufactory/exdeorum_magnesium_chunk.json @@ -1,10 +1,10 @@ { - "type": "forge:conditional", + "type": "neoforge:conditional", "recipes": [ { "conditions": [ { - "type": "forge:mod_loaded", + "type": "neoforge:mod_loaded", "modid": "exdeorum" } ], diff --git a/src/main/resources/data/nuclearcraft/recipes/manufactory/exdeorum_osmium_chunk.json b/src/main/resources/data/nuclearcraft/recipes/manufactory/exdeorum_osmium_chunk.json index ea0fe5a87..16ff198ed 100644 --- a/src/main/resources/data/nuclearcraft/recipes/manufactory/exdeorum_osmium_chunk.json +++ b/src/main/resources/data/nuclearcraft/recipes/manufactory/exdeorum_osmium_chunk.json @@ -1,10 +1,10 @@ { - "type": "forge:conditional", + "type": "neoforge:conditional", "recipes": [ { "conditions": [ { - "type": "forge:mod_loaded", + "type": "neoforge:mod_loaded", "modid": "exdeorum" } ], diff --git a/src/main/resources/data/nuclearcraft/recipes/manufactory/exdeorum_platinum_chunk.json b/src/main/resources/data/nuclearcraft/recipes/manufactory/exdeorum_platinum_chunk.json index 08c838ed5..f2d6f1945 100644 --- a/src/main/resources/data/nuclearcraft/recipes/manufactory/exdeorum_platinum_chunk.json +++ b/src/main/resources/data/nuclearcraft/recipes/manufactory/exdeorum_platinum_chunk.json @@ -1,10 +1,10 @@ { - "type": "forge:conditional", + "type": "neoforge:conditional", "recipes": [ { "conditions": [ { - "type": "forge:mod_loaded", + "type": "neoforge:mod_loaded", "modid": "exdeorum" } ], diff --git a/src/main/resources/data/nuclearcraft/recipes/manufactory/exdeorum_silver_chunk.json b/src/main/resources/data/nuclearcraft/recipes/manufactory/exdeorum_silver_chunk.json index fab0813ad..f68187c8d 100644 --- a/src/main/resources/data/nuclearcraft/recipes/manufactory/exdeorum_silver_chunk.json +++ b/src/main/resources/data/nuclearcraft/recipes/manufactory/exdeorum_silver_chunk.json @@ -1,10 +1,10 @@ { - "type": "forge:conditional", + "type": "neoforge:conditional", "recipes": [ { "conditions": [ { - "type": "forge:mod_loaded", + "type": "neoforge:mod_loaded", "modid": "exdeorum" } ], diff --git a/src/main/resources/data/nuclearcraft/recipes/manufactory/exdeorum_thorium_chunk.json b/src/main/resources/data/nuclearcraft/recipes/manufactory/exdeorum_thorium_chunk.json index 9163b013a..272703b61 100644 --- a/src/main/resources/data/nuclearcraft/recipes/manufactory/exdeorum_thorium_chunk.json +++ b/src/main/resources/data/nuclearcraft/recipes/manufactory/exdeorum_thorium_chunk.json @@ -1,10 +1,10 @@ { - "type": "forge:conditional", + "type": "neoforge:conditional", "recipes": [ { "conditions": [ { - "type": "forge:mod_loaded", + "type": "neoforge:mod_loaded", "modid": "exdeorum" } ], diff --git a/src/main/resources/data/nuclearcraft/recipes/manufactory/exdeorum_tin_chunk.json b/src/main/resources/data/nuclearcraft/recipes/manufactory/exdeorum_tin_chunk.json index d83363bc1..d0bdc696a 100644 --- a/src/main/resources/data/nuclearcraft/recipes/manufactory/exdeorum_tin_chunk.json +++ b/src/main/resources/data/nuclearcraft/recipes/manufactory/exdeorum_tin_chunk.json @@ -1,10 +1,10 @@ { - "type": "forge:conditional", + "type": "neoforge:conditional", "recipes": [ { "conditions": [ { - "type": "forge:mod_loaded", + "type": "neoforge:mod_loaded", "modid": "exdeorum" } ], diff --git a/src/main/resources/data/nuclearcraft/recipes/manufactory/exdeorum_uranium_chunk.json b/src/main/resources/data/nuclearcraft/recipes/manufactory/exdeorum_uranium_chunk.json index dccde1336..77873b549 100644 --- a/src/main/resources/data/nuclearcraft/recipes/manufactory/exdeorum_uranium_chunk.json +++ b/src/main/resources/data/nuclearcraft/recipes/manufactory/exdeorum_uranium_chunk.json @@ -1,10 +1,10 @@ { - "type": "forge:conditional", + "type": "neoforge:conditional", "recipes": [ { "conditions": [ { - "type": "forge:mod_loaded", + "type": "neoforge:mod_loaded", "modid": "exdeorum" } ], diff --git a/src/main/resources/data/nuclearcraft/recipes/manufactory/exdeorum_zinc_chunk.json b/src/main/resources/data/nuclearcraft/recipes/manufactory/exdeorum_zinc_chunk.json index acee814a6..825ec10d4 100644 --- a/src/main/resources/data/nuclearcraft/recipes/manufactory/exdeorum_zinc_chunk.json +++ b/src/main/resources/data/nuclearcraft/recipes/manufactory/exdeorum_zinc_chunk.json @@ -1,10 +1,10 @@ { - "type": "forge:conditional", + "type": "neoforge:conditional", "recipes": [ { "conditions": [ { - "type": "forge:mod_loaded", + "type": "neoforge:mod_loaded", "modid": "exdeorum" } ], diff --git a/src/main/resources/data/nuclearcraft/recipes/manufactory/thermal_apatite.json b/src/main/resources/data/nuclearcraft/recipes/manufactory/thermal_apatite.json index b8c78e204..0ff3872da 100644 --- a/src/main/resources/data/nuclearcraft/recipes/manufactory/thermal_apatite.json +++ b/src/main/resources/data/nuclearcraft/recipes/manufactory/thermal_apatite.json @@ -1,10 +1,10 @@ { - "type": "forge:conditional", + "type": "neoforge:conditional", "recipes": [ { "conditions": [ { - "type": "forge:mod_loaded", + "type": "neoforge:mod_loaded", "modid": "thermal_expansion" } ], @@ -12,7 +12,7 @@ "type": "nuclearcraft:manufactory", "input": [ { - "tag": "forge:gems/apatite" + "tag": "c:gems/apatite" } ], "output": [ diff --git a/src/main/resources/data/nuclearcraft/recipes/manufactory/thermal_basalz_rod.json b/src/main/resources/data/nuclearcraft/recipes/manufactory/thermal_basalz_rod.json index 8242621cc..3fbef512e 100644 --- a/src/main/resources/data/nuclearcraft/recipes/manufactory/thermal_basalz_rod.json +++ b/src/main/resources/data/nuclearcraft/recipes/manufactory/thermal_basalz_rod.json @@ -1,10 +1,10 @@ { - "type": "forge:conditional", + "type": "neoforge:conditional", "recipes": [ { "conditions": [ { - "type": "forge:mod_loaded", + "type": "neoforge:mod_loaded", "modid": "thermal_expansion" } ], diff --git a/src/main/resources/data/nuclearcraft/recipes/manufactory/thermal_blitz_rod.json b/src/main/resources/data/nuclearcraft/recipes/manufactory/thermal_blitz_rod.json index 300593afb..f8d5eb46b 100644 --- a/src/main/resources/data/nuclearcraft/recipes/manufactory/thermal_blitz_rod.json +++ b/src/main/resources/data/nuclearcraft/recipes/manufactory/thermal_blitz_rod.json @@ -1,10 +1,10 @@ { - "type": "forge:conditional", + "type": "neoforge:conditional", "recipes": [ { "conditions": [ { - "type": "forge:mod_loaded", + "type": "neoforge:mod_loaded", "modid": "thermal_expansion" } ], diff --git a/src/main/resources/data/nuclearcraft/recipes/manufactory/thermal_blizz_rod.json b/src/main/resources/data/nuclearcraft/recipes/manufactory/thermal_blizz_rod.json index 72a3b9ed4..2bf85137a 100644 --- a/src/main/resources/data/nuclearcraft/recipes/manufactory/thermal_blizz_rod.json +++ b/src/main/resources/data/nuclearcraft/recipes/manufactory/thermal_blizz_rod.json @@ -1,10 +1,10 @@ { - "type": "forge:conditional", + "type": "neoforge:conditional", "recipes": [ { "conditions": [ { - "type": "forge:mod_loaded", + "type": "neoforge:mod_loaded", "modid": "thermal_expansion" } ], diff --git a/src/main/resources/data/nuclearcraft/recipes/manufactory/thermal_cinnabar.json b/src/main/resources/data/nuclearcraft/recipes/manufactory/thermal_cinnabar.json index 8faeace4e..686e690f1 100644 --- a/src/main/resources/data/nuclearcraft/recipes/manufactory/thermal_cinnabar.json +++ b/src/main/resources/data/nuclearcraft/recipes/manufactory/thermal_cinnabar.json @@ -1,17 +1,17 @@ { - "type": "forge:conditional", + "type": "neoforge:conditional", "recipes": [ { "conditions": [ { - "type": "forge:mod_loaded", + "type": "neoforge:mod_loaded", "modid": "thermal_expansion" } ], "recipe": { "type": "nuclearcraft:manufactory", "input": [{ - "tag": "forge:gems/cinnabar" + "tag": "c:gems/cinnabar" }], "output": [ { diff --git a/src/main/resources/data/nuclearcraft/recipes/manufactory/thermal_enderium.json b/src/main/resources/data/nuclearcraft/recipes/manufactory/thermal_enderium.json index c6872f33a..e01f50153 100644 --- a/src/main/resources/data/nuclearcraft/recipes/manufactory/thermal_enderium.json +++ b/src/main/resources/data/nuclearcraft/recipes/manufactory/thermal_enderium.json @@ -1,17 +1,17 @@ { - "type": "forge:conditional", + "type": "neoforge:conditional", "recipes": [ { "conditions": [ { - "type": "forge:mod_loaded", + "type": "neoforge:mod_loaded", "modid": "thermal_expansion" } ], "recipe": { "type": "nuclearcraft:manufactory", "input": [{ - "tag": "forge:ingots/enderium" + "tag": "c:ingots/enderium" }], "output": [ { diff --git a/src/main/resources/data/nuclearcraft/recipes/manufactory/thermal_lumium.json b/src/main/resources/data/nuclearcraft/recipes/manufactory/thermal_lumium.json index a2d2be30c..9730429f0 100644 --- a/src/main/resources/data/nuclearcraft/recipes/manufactory/thermal_lumium.json +++ b/src/main/resources/data/nuclearcraft/recipes/manufactory/thermal_lumium.json @@ -1,17 +1,17 @@ { - "type": "forge:conditional", + "type": "neoforge:conditional", "recipes": [ { "conditions": [ { - "type": "forge:mod_loaded", + "type": "neoforge:mod_loaded", "modid": "thermal_expansion" } ], "recipe": { "type": "nuclearcraft:manufactory", "input": [{ - "tag": "forge:ingots/lumium" + "tag": "c:ingots/lumium" }], "output": [ { diff --git a/src/main/resources/data/nuclearcraft/recipes/manufactory/thermal_niter.json b/src/main/resources/data/nuclearcraft/recipes/manufactory/thermal_niter.json index 65bf69335..923fed4af 100644 --- a/src/main/resources/data/nuclearcraft/recipes/manufactory/thermal_niter.json +++ b/src/main/resources/data/nuclearcraft/recipes/manufactory/thermal_niter.json @@ -1,17 +1,17 @@ { - "type": "forge:conditional", + "type": "neoforge:conditional", "recipes": [ { "conditions": [ { - "type": "forge:mod_loaded", + "type": "neoforge:mod_loaded", "modid": "thermal_expansion" } ], "recipe": { "type": "nuclearcraft:manufactory", "input": [{ - "tag": "forge:gems/niter" + "tag": "c:gems/niter" }], "output": [ { diff --git a/src/main/resources/data/nuclearcraft/recipes/manufactory/thermal_signalum.json b/src/main/resources/data/nuclearcraft/recipes/manufactory/thermal_signalum.json index 35343abb9..d5b8e286d 100644 --- a/src/main/resources/data/nuclearcraft/recipes/manufactory/thermal_signalum.json +++ b/src/main/resources/data/nuclearcraft/recipes/manufactory/thermal_signalum.json @@ -1,17 +1,17 @@ { - "type": "forge:conditional", + "type": "neoforge:conditional", "recipes": [ { "conditions": [ { - "type": "forge:mod_loaded", + "type": "neoforge:mod_loaded", "modid": "thermal_expansion" } ], "recipe": { "type": "nuclearcraft:manufactory", "input": [{ - "tag": "forge:ingots/signalum" + "tag": "c:ingots/signalum" }], "output": [ { diff --git a/src/main/resources/data/nuclearcraft/recipes/patchouli_book.json b/src/main/resources/data/nuclearcraft/recipes/patchouli_book.json index b3cc71204..1cd931eec 100644 --- a/src/main/resources/data/nuclearcraft/recipes/patchouli_book.json +++ b/src/main/resources/data/nuclearcraft/recipes/patchouli_book.json @@ -3,7 +3,7 @@ "category": "misc", "ingredients": [ { - "tag": "forge:ingots/uranium" + "tag": "c:ingots/uranium" }, { "item": "minecraft:book" diff --git a/src/main/resources/data/nuclearcraft/recipes/pressurizer/press_lumium_ingot_to_plate.json b/src/main/resources/data/nuclearcraft/recipes/pressurizer/press_lumium_ingot_to_plate.json index 65fc32ff1..5c772c252 100644 --- a/src/main/resources/data/nuclearcraft/recipes/pressurizer/press_lumium_ingot_to_plate.json +++ b/src/main/resources/data/nuclearcraft/recipes/pressurizer/press_lumium_ingot_to_plate.json @@ -1,10 +1,10 @@ { - "type": "forge:conditional", + "type": "neoforge:conditional", "recipes": [ { "conditions": [ { - "type": "forge:mod_loaded", + "type": "neoforge:mod_loaded", "modid": "thermal_expansion" } ], @@ -12,7 +12,7 @@ "type": "nuclearcraft:pressurizer", "input": [ { - "tag": "forge:ingots/lumium" + "tag": "c:ingots/lumium" } ], "output": [ diff --git a/src/main/resources/data/nuclearcraft/recipes/pressurizer/press_signalum_ingot_to_plate.json b/src/main/resources/data/nuclearcraft/recipes/pressurizer/press_signalum_ingot_to_plate.json index 7a6bb7aad..4365df2b3 100644 --- a/src/main/resources/data/nuclearcraft/recipes/pressurizer/press_signalum_ingot_to_plate.json +++ b/src/main/resources/data/nuclearcraft/recipes/pressurizer/press_signalum_ingot_to_plate.json @@ -1,10 +1,10 @@ { - "type": "forge:conditional", + "type": "neoforge:conditional", "recipes": [ { "conditions": [ { - "type": "forge:mod_loaded", + "type": "neoforge:mod_loaded", "modid": "thermal_expansion" } ], @@ -12,7 +12,7 @@ "type": "nuclearcraft:pressurizer", "input": [ { - "tag": "forge:ingots/signalum" + "tag": "c:ingots/signalum" } ], "output": [ diff --git a/src/main/resources/data/nuclearcraft/recipes/target_chamber_controller_tier_1.json b/src/main/resources/data/nuclearcraft/recipes/target_chamber_controller_tier_1.json index 5f544af3c..5846aabfb 100644 --- a/src/main/resources/data/nuclearcraft/recipes/target_chamber_controller_tier_1.json +++ b/src/main/resources/data/nuclearcraft/recipes/target_chamber_controller_tier_1.json @@ -1,5 +1,5 @@ { - "type": "forge:conditional", + "type": "neoforge:conditional", "recipes": [ { "conditions": [ diff --git a/src/main/resources/data/nuclearcraft/recipes/toroidal_accelerator_controller_tier_1.json b/src/main/resources/data/nuclearcraft/recipes/toroidal_accelerator_controller_tier_1.json index 5ba61021f..94aef8ce9 100644 --- a/src/main/resources/data/nuclearcraft/recipes/toroidal_accelerator_controller_tier_1.json +++ b/src/main/resources/data/nuclearcraft/recipes/toroidal_accelerator_controller_tier_1.json @@ -1,5 +1,5 @@ { - "type": "forge:conditional", + "type": "neoforge:conditional", "recipes": [ { "conditions": [ diff --git a/src/main/resources/data/nuclearcraft/recipes/turbine_controller_tier_1.json b/src/main/resources/data/nuclearcraft/recipes/turbine_controller_tier_1.json index 1d601fab5..7138b8c51 100644 --- a/src/main/resources/data/nuclearcraft/recipes/turbine_controller_tier_1.json +++ b/src/main/resources/data/nuclearcraft/recipes/turbine_controller_tier_1.json @@ -1,5 +1,5 @@ { - "type": "forge:conditional", + "type": "neoforge:conditional", "recipes": [ { "conditions": [ diff --git a/src/main/resources/kubejs.plugins.txt b/src/main/resources/kubejs.plugins.txt deleted file mode 100644 index 6907e4fa9..000000000 --- a/src/main/resources/kubejs.plugins.txt +++ /dev/null @@ -1 +0,0 @@ -igentuman.nc.compat.kubejs.NuclearCraftKubeJSPlugin \ No newline at end of file diff --git a/src/main/resources/nuclearcraft.mixins.json b/src/main/resources/nuclearcraft.mixins.json index 278099bb7..ae12a372a 100644 --- a/src/main/resources/nuclearcraft.mixins.json +++ b/src/main/resources/nuclearcraft.mixins.json @@ -1,22 +1,18 @@ { "required": true, "package": "igentuman.nc.mixin", - "compatibilityLevel": "JAVA_17", - "refmap": "nuclearcraft.refmap.json", + "compatibilityLevel": "JAVA_21", "mixins": [ - "KubeJSRecipesEventJSMixin", "LightningRodBlockMixin", - "MekRadiationManager", - "ParticleStackKubeJSMixin", "TemplatePoolAccess", "OverworldBiomeBuilderInvoker", - "OverworldBiomeBuilderMixin" + "OverworldBiomeBuilderMixin", + "MekRadiationManager", + "MekRadiationUtil" ], "server": [ - ], "client": [ - ], "minVersion": "0.8" -} \ No newline at end of file +}