From 043b22e6def173fd12f2855aec98b6f282839826 Mon Sep 17 00:00:00 2001 From: tmvkrpxl0 Date: Sun, 5 Apr 2026 15:17:04 +0900 Subject: [PATCH 01/11] Fix texture error of girder_base.json --- .../createaddition/models/block/connector/girder_base.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/resources/assets/createaddition/models/block/connector/girder_base.json b/src/main/resources/assets/createaddition/models/block/connector/girder_base.json index cde67163c..2daabcce6 100644 --- a/src/main/resources/assets/createaddition/models/block/connector/girder_base.json +++ b/src/main/resources/assets/createaddition/models/block/connector/girder_base.json @@ -2,7 +2,7 @@ "credit": "Made with Blockbench", "textures": { "0": "create:block/girder", - "particle": "create:block/chute_block" + "particle": "create:block/industrial_iron_block" }, "elements": [ { From a6912434def318e13a03acaec2dea97d898ab52a Mon Sep 17 00:00:00 2001 From: tmvkrpxl0 Date: Fri, 10 Apr 2026 03:50:50 +0900 Subject: [PATCH 02/11] Bump MDG and Gradle Version --- build.gradle | 2 +- gradle/wrapper/gradle-wrapper.properties | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/build.gradle b/build.gradle index 7929aabc8..dbeb97821 100644 --- a/build.gradle +++ b/build.gradle @@ -1,7 +1,7 @@ plugins { id 'java-library' id 'maven-publish' - id 'net.neoforged.moddev' version '2.0.99' + id 'net.neoforged.moddev' version '2.0.141' id 'idea' } diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index cea7a793a..19a6bdeb8 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.12-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-9.3.0-bin.zip networkTimeout=10000 validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME From f224bb4e34c17962a24403737e28a07330ccade3 Mon Sep 17 00:00:00 2001 From: tmvkrpxl0 Date: Thu, 16 Apr 2026 01:15:46 +0900 Subject: [PATCH 03/11] Added flammable tag --- .../datagen/TagProvider/CAFluidTagProvider.java | 15 +++++++++++++-- .../datagen/TagProvider/CATagRegister.java | 1 + 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/mrh0/createaddition/datagen/TagProvider/CAFluidTagProvider.java b/src/main/java/com/mrh0/createaddition/datagen/TagProvider/CAFluidTagProvider.java index 05a0c9450..2b85db6c4 100644 --- a/src/main/java/com/mrh0/createaddition/datagen/TagProvider/CAFluidTagProvider.java +++ b/src/main/java/com/mrh0/createaddition/datagen/TagProvider/CAFluidTagProvider.java @@ -5,11 +5,10 @@ import net.minecraft.core.HolderLookup; import net.minecraft.data.PackOutput; import net.minecraft.data.tags.FluidTagsProvider; -import net.minecraft.tags.FluidTags; -import net.minecraft.world.level.material.Fluid; import net.neoforged.neoforge.common.data.ExistingFileHelper; import org.jetbrains.annotations.Nullable; +import java.util.List; import java.util.concurrent.CompletableFuture; public class CAFluidTagProvider extends FluidTagsProvider { @@ -28,6 +27,18 @@ protected void addTags(HolderLookup.Provider provider) { CAFluids.SEED_OIL.getSource() ); + var ignites = tag(CATagRegister.Fluids.IGNITES); + List.of( + CATagRegister.Fluids.BIOFUEL, + CATagRegister.Fluids.CREOSOTE, + CATagRegister.Fluids.CRUDE_OIL, + CATagRegister.Fluids.PLANTOIL, + CATagRegister.Fluids.ETHANOL, + CATagRegister.Fluids.GASOLINE, + CATagRegister.Fluids.DIESEL, + CATagRegister.Fluids.BIODIESEL + ).forEach(ignites::addOptionalTag); + /* tag(FluidTags.WATER).add( CAFluids.SEED_OIL.get(), diff --git a/src/main/java/com/mrh0/createaddition/datagen/TagProvider/CATagRegister.java b/src/main/java/com/mrh0/createaddition/datagen/TagProvider/CATagRegister.java index fbb442ef8..d627c2402 100644 --- a/src/main/java/com/mrh0/createaddition/datagen/TagProvider/CATagRegister.java +++ b/src/main/java/com/mrh0/createaddition/datagen/TagProvider/CATagRegister.java @@ -115,6 +115,7 @@ public static class Fluids { public static final TagKey GASOLINE = commonTags("gasoline"); public static final TagKey DIESEL = commonTags("diesel"); public static final TagKey BIODIESEL = commonTags("biodiesel"); + public static final TagKey IGNITES = commonTags("ignites"); public static TagKey commonTags(String folder, String name) { return FluidTags.create(ResourceLocation.fromNamespaceAndPath("c", String.format("%s/%s", folder, name))); From 3a4b31e5412aaf9cd6abb5275f1c4a6262b0a77c Mon Sep 17 00:00:00 2001 From: tmvkrpxl0 Date: Thu, 16 Apr 2026 13:40:54 +0900 Subject: [PATCH 04/11] Rerun datagen --- .../data/createaddition/recipe/filling/cake.json | 4 ++-- .../createaddition/recipe/filling/chocolate_cake.json | 2 +- .../data/createaddition/recipe/filling/honey_cake.json | 4 ++-- .../createaddition/recipe/liquid_burning/biodiesel.json | 4 ++-- .../createaddition/recipe/liquid_burning/biofuel.json | 8 ++++---- .../createaddition/recipe/liquid_burning/creosote.json | 4 ++-- .../createaddition/recipe/liquid_burning/crude_oil.json | 4 ++-- .../data/createaddition/recipe/liquid_burning/diesel.json | 4 ++-- .../createaddition/recipe/liquid_burning/ethanol.json | 4 ++-- .../createaddition/recipe/liquid_burning/gasoline.json | 4 ++-- .../data/createaddition/recipe/liquid_burning/lava.json | 4 ++-- .../createaddition/recipe/liquid_burning/plantoil.json | 4 ++-- .../createaddition/recipe/mixing/biomass_from_crops.json | 4 ++-- .../recipe/mixing/biomass_from_flowers.json | 4 ++-- .../recipe/mixing/biomass_from_honeycomb.json | 4 ++-- .../createaddition/recipe/mixing/biomass_from_leaves.json | 4 ++-- .../recipe/mixing/biomass_from_plant_foods.json | 4 ++-- .../createaddition/recipe/mixing/biomass_from_plants.json | 4 ++-- .../recipe/mixing/biomass_from_saplings.json | 4 ++-- .../recipe/mixing/biomass_from_stricks.json | 4 ++-- .../data/createaddition/recipe/mixing/netherrack.json | 4 ++-- 21 files changed, 43 insertions(+), 43 deletions(-) diff --git a/src/generated/resources/data/createaddition/recipe/filling/cake.json b/src/generated/resources/data/createaddition/recipe/filling/cake.json index 322ca0045..cbb40149e 100644 --- a/src/generated/resources/data/createaddition/recipe/filling/cake.json +++ b/src/generated/resources/data/createaddition/recipe/filling/cake.json @@ -5,9 +5,9 @@ "item": "createaddition:cake_base_baked" }, { - "type": "fluid_tag", + "type": "neoforge:tag", "amount": 1000, - "fluid_tag": "c:milk" + "tag": "c:milk" } ], "results": [ diff --git a/src/generated/resources/data/createaddition/recipe/filling/chocolate_cake.json b/src/generated/resources/data/createaddition/recipe/filling/chocolate_cake.json index a87e49feb..df9b46b70 100644 --- a/src/generated/resources/data/createaddition/recipe/filling/chocolate_cake.json +++ b/src/generated/resources/data/createaddition/recipe/filling/chocolate_cake.json @@ -5,7 +5,7 @@ "item": "createaddition:cake_base_baked" }, { - "type": "fluid_stack", + "type": "neoforge:single", "amount": 500, "fluid": "create:chocolate" } diff --git a/src/generated/resources/data/createaddition/recipe/filling/honey_cake.json b/src/generated/resources/data/createaddition/recipe/filling/honey_cake.json index 6d9e4d5e8..f90c7c3b0 100644 --- a/src/generated/resources/data/createaddition/recipe/filling/honey_cake.json +++ b/src/generated/resources/data/createaddition/recipe/filling/honey_cake.json @@ -5,9 +5,9 @@ "item": "createaddition:cake_base_baked" }, { - "type": "fluid_tag", + "type": "neoforge:tag", "amount": 500, - "fluid_tag": "c:honey" + "tag": "c:honey" } ], "results": [ diff --git a/src/generated/resources/data/createaddition/recipe/liquid_burning/biodiesel.json b/src/generated/resources/data/createaddition/recipe/liquid_burning/biodiesel.json index e35361675..a43d1af15 100644 --- a/src/generated/resources/data/createaddition/recipe/liquid_burning/biodiesel.json +++ b/src/generated/resources/data/createaddition/recipe/liquid_burning/biodiesel.json @@ -9,9 +9,9 @@ "burn_time": 24000, "ingredients": [ { - "type": "fluid_tag", + "type": "neoforge:tag", "amount": 1000, - "fluid_tag": "c:biodiesel" + "tag": "c:biodiesel" } ], "results": [] diff --git a/src/generated/resources/data/createaddition/recipe/liquid_burning/biofuel.json b/src/generated/resources/data/createaddition/recipe/liquid_burning/biofuel.json index 44ae60bbd..fed76a68c 100644 --- a/src/generated/resources/data/createaddition/recipe/liquid_burning/biofuel.json +++ b/src/generated/resources/data/createaddition/recipe/liquid_burning/biofuel.json @@ -1,13 +1,13 @@ { "type": "createaddition:liquid_burning", - "burn_time": 24000, + "burn_time": 2400, "ingredients": [ { - "type": "fluid_tag", + "type": "neoforge:tag", "amount": 1000, - "fluid_tag": "c:biofuel" + "tag": "c:biofuel" } ], "results": [], "superheated": true -} +} \ No newline at end of file diff --git a/src/generated/resources/data/createaddition/recipe/liquid_burning/creosote.json b/src/generated/resources/data/createaddition/recipe/liquid_burning/creosote.json index 5ba8a2ff8..92377806b 100644 --- a/src/generated/resources/data/createaddition/recipe/liquid_burning/creosote.json +++ b/src/generated/resources/data/createaddition/recipe/liquid_burning/creosote.json @@ -9,9 +9,9 @@ "burn_time": 4800, "ingredients": [ { - "type": "fluid_tag", + "type": "neoforge:tag", "amount": 1000, - "fluid_tag": "c:creosote" + "tag": "c:creosote" } ], "results": [] diff --git a/src/generated/resources/data/createaddition/recipe/liquid_burning/crude_oil.json b/src/generated/resources/data/createaddition/recipe/liquid_burning/crude_oil.json index c0356d73a..abb22eb2c 100644 --- a/src/generated/resources/data/createaddition/recipe/liquid_burning/crude_oil.json +++ b/src/generated/resources/data/createaddition/recipe/liquid_burning/crude_oil.json @@ -9,9 +9,9 @@ "burn_time": 9600, "ingredients": [ { - "type": "fluid_tag", + "type": "neoforge:tag", "amount": 1000, - "fluid_tag": "c:crude_oil" + "tag": "c:crude_oil" } ], "results": [] diff --git a/src/generated/resources/data/createaddition/recipe/liquid_burning/diesel.json b/src/generated/resources/data/createaddition/recipe/liquid_burning/diesel.json index 7e2500120..4b2ca45fa 100644 --- a/src/generated/resources/data/createaddition/recipe/liquid_burning/diesel.json +++ b/src/generated/resources/data/createaddition/recipe/liquid_burning/diesel.json @@ -9,9 +9,9 @@ "burn_time": 24000, "ingredients": [ { - "type": "fluid_tag", + "type": "neoforge:tag", "amount": 1000, - "fluid_tag": "c:diesel" + "tag": "c:diesel" } ], "results": [] diff --git a/src/generated/resources/data/createaddition/recipe/liquid_burning/ethanol.json b/src/generated/resources/data/createaddition/recipe/liquid_burning/ethanol.json index 70b3bd279..06ef496eb 100644 --- a/src/generated/resources/data/createaddition/recipe/liquid_burning/ethanol.json +++ b/src/generated/resources/data/createaddition/recipe/liquid_burning/ethanol.json @@ -9,9 +9,9 @@ "burn_time": 8000, "ingredients": [ { - "type": "fluid_tag", + "type": "neoforge:tag", "amount": 1000, - "fluid_tag": "c:ethanol" + "tag": "c:ethanol" } ], "results": [] diff --git a/src/generated/resources/data/createaddition/recipe/liquid_burning/gasoline.json b/src/generated/resources/data/createaddition/recipe/liquid_burning/gasoline.json index be61e3e8b..057925f55 100644 --- a/src/generated/resources/data/createaddition/recipe/liquid_burning/gasoline.json +++ b/src/generated/resources/data/createaddition/recipe/liquid_burning/gasoline.json @@ -9,9 +9,9 @@ "burn_time": 24000, "ingredients": [ { - "type": "fluid_tag", + "type": "neoforge:tag", "amount": 1000, - "fluid_tag": "c:gasoline" + "tag": "c:gasoline" } ], "results": [] diff --git a/src/generated/resources/data/createaddition/recipe/liquid_burning/lava.json b/src/generated/resources/data/createaddition/recipe/liquid_burning/lava.json index 72aa69dbe..db123c5d7 100644 --- a/src/generated/resources/data/createaddition/recipe/liquid_burning/lava.json +++ b/src/generated/resources/data/createaddition/recipe/liquid_burning/lava.json @@ -3,9 +3,9 @@ "burn_time": 20000, "ingredients": [ { - "type": "fluid_tag", + "type": "neoforge:tag", "amount": 1000, - "fluid_tag": "minecraft:lava" + "tag": "minecraft:lava" } ], "results": [] diff --git a/src/generated/resources/data/createaddition/recipe/liquid_burning/plantoil.json b/src/generated/resources/data/createaddition/recipe/liquid_burning/plantoil.json index 1a93e3fbe..d4fb6c2a7 100644 --- a/src/generated/resources/data/createaddition/recipe/liquid_burning/plantoil.json +++ b/src/generated/resources/data/createaddition/recipe/liquid_burning/plantoil.json @@ -3,9 +3,9 @@ "burn_time": 4800, "ingredients": [ { - "type": "fluid_tag", + "type": "neoforge:tag", "amount": 1000, - "fluid_tag": "c:plantoil" + "tag": "c:plantoil" } ], "results": [] diff --git a/src/generated/resources/data/createaddition/recipe/mixing/biomass_from_crops.json b/src/generated/resources/data/createaddition/recipe/mixing/biomass_from_crops.json index e99a5fab3..c04c2509d 100644 --- a/src/generated/resources/data/createaddition/recipe/mixing/biomass_from_crops.json +++ b/src/generated/resources/data/createaddition/recipe/mixing/biomass_from_crops.json @@ -9,9 +9,9 @@ "tag": "c:crops" }, { - "type": "fluid_tag", + "type": "neoforge:tag", "amount": 100, - "fluid_tag": "c:plantoil" + "tag": "c:plantoil" } ], "results": [ diff --git a/src/generated/resources/data/createaddition/recipe/mixing/biomass_from_flowers.json b/src/generated/resources/data/createaddition/recipe/mixing/biomass_from_flowers.json index 1a56d1773..331da7ad8 100644 --- a/src/generated/resources/data/createaddition/recipe/mixing/biomass_from_flowers.json +++ b/src/generated/resources/data/createaddition/recipe/mixing/biomass_from_flowers.json @@ -9,9 +9,9 @@ "tag": "minecraft:flowers" }, { - "type": "fluid_tag", + "type": "neoforge:tag", "amount": 100, - "fluid_tag": "c:plantoil" + "tag": "c:plantoil" } ], "results": [ diff --git a/src/generated/resources/data/createaddition/recipe/mixing/biomass_from_honeycomb.json b/src/generated/resources/data/createaddition/recipe/mixing/biomass_from_honeycomb.json index 90a307663..607f930e2 100644 --- a/src/generated/resources/data/createaddition/recipe/mixing/biomass_from_honeycomb.json +++ b/src/generated/resources/data/createaddition/recipe/mixing/biomass_from_honeycomb.json @@ -6,9 +6,9 @@ "item": "minecraft:honeycomb" }, { - "type": "fluid_tag", + "type": "neoforge:tag", "amount": 100, - "fluid_tag": "c:plantoil" + "tag": "c:plantoil" } ], "results": [ diff --git a/src/generated/resources/data/createaddition/recipe/mixing/biomass_from_leaves.json b/src/generated/resources/data/createaddition/recipe/mixing/biomass_from_leaves.json index d56c4747d..dea910afa 100644 --- a/src/generated/resources/data/createaddition/recipe/mixing/biomass_from_leaves.json +++ b/src/generated/resources/data/createaddition/recipe/mixing/biomass_from_leaves.json @@ -12,9 +12,9 @@ "tag": "minecraft:leaves" }, { - "type": "fluid_tag", + "type": "neoforge:tag", "amount": 100, - "fluid_tag": "c:plantoil" + "tag": "c:plantoil" } ], "results": [ diff --git a/src/generated/resources/data/createaddition/recipe/mixing/biomass_from_plant_foods.json b/src/generated/resources/data/createaddition/recipe/mixing/biomass_from_plant_foods.json index 435276260..b3380df85 100644 --- a/src/generated/resources/data/createaddition/recipe/mixing/biomass_from_plant_foods.json +++ b/src/generated/resources/data/createaddition/recipe/mixing/biomass_from_plant_foods.json @@ -9,9 +9,9 @@ "tag": "createaddition:plant_foods" }, { - "type": "fluid_tag", + "type": "neoforge:tag", "amount": 100, - "fluid_tag": "c:plantoil" + "tag": "c:plantoil" } ], "results": [ diff --git a/src/generated/resources/data/createaddition/recipe/mixing/biomass_from_plants.json b/src/generated/resources/data/createaddition/recipe/mixing/biomass_from_plants.json index b77ab4173..db2e838fe 100644 --- a/src/generated/resources/data/createaddition/recipe/mixing/biomass_from_plants.json +++ b/src/generated/resources/data/createaddition/recipe/mixing/biomass_from_plants.json @@ -12,9 +12,9 @@ "tag": "createaddition:plants" }, { - "type": "fluid_tag", + "type": "neoforge:tag", "amount": 100, - "fluid_tag": "c:plantoil" + "tag": "c:plantoil" } ], "results": [ diff --git a/src/generated/resources/data/createaddition/recipe/mixing/biomass_from_saplings.json b/src/generated/resources/data/createaddition/recipe/mixing/biomass_from_saplings.json index 83c39690f..3d2031a02 100644 --- a/src/generated/resources/data/createaddition/recipe/mixing/biomass_from_saplings.json +++ b/src/generated/resources/data/createaddition/recipe/mixing/biomass_from_saplings.json @@ -12,9 +12,9 @@ "tag": "minecraft:saplings" }, { - "type": "fluid_tag", + "type": "neoforge:tag", "amount": 100, - "fluid_tag": "c:plantoil" + "tag": "c:plantoil" } ], "results": [ diff --git a/src/generated/resources/data/createaddition/recipe/mixing/biomass_from_stricks.json b/src/generated/resources/data/createaddition/recipe/mixing/biomass_from_stricks.json index a3b39a224..2d78134b4 100644 --- a/src/generated/resources/data/createaddition/recipe/mixing/biomass_from_stricks.json +++ b/src/generated/resources/data/createaddition/recipe/mixing/biomass_from_stricks.json @@ -27,9 +27,9 @@ "item": "minecraft:stick" }, { - "type": "fluid_tag", + "type": "neoforge:tag", "amount": 100, - "fluid_tag": "c:plantoil" + "tag": "c:plantoil" } ], "results": [ diff --git a/src/generated/resources/data/createaddition/recipe/mixing/netherrack.json b/src/generated/resources/data/createaddition/recipe/mixing/netherrack.json index 8ec139022..7881070d3 100644 --- a/src/generated/resources/data/createaddition/recipe/mixing/netherrack.json +++ b/src/generated/resources/data/createaddition/recipe/mixing/netherrack.json @@ -8,9 +8,9 @@ "item": "create:cinder_flour" }, { - "type": "fluid_tag", + "type": "neoforge:tag", "amount": 25, - "fluid_tag": "minecraft:lava" + "tag": "minecraft:lava" } ], "results": [ From aefea4a252c492a657ef7a64121d09479e3e08ef Mon Sep 17 00:00:00 2001 From: tmvkrpxl0 Date: Thu, 16 Apr 2026 13:41:19 +0900 Subject: [PATCH 05/11] Disable annotation processor since runtime is now deobfuscated --- build.gradle | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index dbeb97821..52505e993 100644 --- a/build.gradle +++ b/build.gradle @@ -191,7 +191,6 @@ dependencies { // For more info: // http://www.gradle.org/docs/current/userguide/artifact_dependencies_tutorial.html // http://www.gradle.org/docs/current/userguide/dependency_management.html - annotationProcessor "org.spongepowered:mixin:0.8.5:processor" } // This block of code expands all declared replace properties in the specified resource targets. @@ -237,6 +236,9 @@ tasks.withType(JavaCompile).configureEach { options.encoding = 'UTF-8' // Use the UTF-8 charset for Java compilation options.warnings = false } +tasks.named("processResources", ProcessResources) { + duplicatesStrategy = DuplicatesStrategy.WARN +} // IDEA no longer automatically downloads sources/javadoc jars for dependencies, so we need to explicitly enable the behavior. idea { From 3e493271af0a261a9d495c58d3545134e9af330d Mon Sep 17 00:00:00 2001 From: tmvkrpxl0 Date: Thu, 16 Apr 2026 13:49:29 +0900 Subject: [PATCH 06/11] Fix translation keys in ko_kr.json --- .../assets/createaddition/lang/ko_kr.json | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/src/main/resources/assets/createaddition/lang/ko_kr.json b/src/main/resources/assets/createaddition/lang/ko_kr.json index e7577708b..baebb6325 100644 --- a/src/main/resources/assets/createaddition/lang/ko_kr.json +++ b/src/main/resources/assets/createaddition/lang/ko_kr.json @@ -36,7 +36,7 @@ "item.createaddition.diamond_grit": "다이아몬드 그릿", "item.createaddition.diamond_grit_sandpaper": "다이아몬드 그릿 사포", - "item.createaddition.diamond_grit_sandpaper.tooltip": "다이아몬드 그릿 사포", + "item.createaddition.diamond_grit_sandpaper.tooltip.summary": "다이아몬드 그릿 사포", "item.createaddition.zinc_sheet": "아연 판", @@ -109,7 +109,7 @@ "item.createaddition.spool": "빈 전선 타래", "item.createaddition.spool.nbt": "연결 위치를 저장합니다.", - "item.createaddition.spool.tooltip": "전선 타래", + "item.createaddition.spool.tooltip.summary": "전선 타래", "item.createaddition.spool.tooltip.condition1": "연결된 두 단자를 우클릭", "item.createaddition.spool.tooltip.behaviour1": "연결된 전선을 제거합니다. 사용 후 _전선이 감긴 타래_가 남습니다.", @@ -211,7 +211,7 @@ "block.createaddition.liquid_blaze_burner": "빨대를 문 블레이즈 버너", - "itemGroup.createaddition:main":"Create Crafts & Additions", + "itemGroup.createaddition.main":"Create Crafts & Additions", "createaddition.ponder.tag.electric": "전기 기구", "createaddition.ponder.tag.electric.description": "전기를 사용하는 장치입니다.", @@ -287,12 +287,12 @@ "createaddition.schedule.condition.energy_threshold": "에너지 저장소 조건", "createaddition.schedule.condition.threshold.unit": "Kfe", "createaddition.schedule.condition.threshold.energy": "에너지", - - "death.attack.barbed_wire": "%1$s이(가) 철조망을 넘으려 했습니다", - "death.attack.barbed_wire.player": "%1$s이(가) %2$s와(과) 싸우다가 철조망을 넘으려 했습니다", + + "death.attack.createaddition.barbed_wire": "%1$s이(가) 철조망을 넘으려 했습니다", + "death.attack.createaddition.barbed_wire.player": "%1$s이(가) %2$s와(과) 싸우다가 철조망을 넘으려 했습니다", "effect.createaddition.shocking":"쇼크", - "death.attack.tesla_coil": "%1$s이(가) 치명적인 전기 충격을 받았습니다", - "death.attack.tesla_coil.player": "%1$s이(가) %2$s와(과) 싸우다가 치명적인 전기 충격을 받았습니다", + "death.attack.createaddition.tesla_coil": "%1$s이(가) 치명적인 전기 충격을 받았습니다", + "death.attack.createaddition.tesla_coil.player": "%1$s이(가) %2$s와(과) 싸우다가 치명적인 전기 충격을 받았습니다", "effect.createaddition.shocking.description": "이동 속도를 심각하게 감소시킵니다" } From 0d13505b596b363d86e497e190ca0d7b4db2952f Mon Sep 17 00:00:00 2001 From: tmvkrpxl0 Date: Thu, 16 Apr 2026 16:15:40 +0900 Subject: [PATCH 07/11] Fluids can now set on fire with tag --- .../resources/data/c/tags/fluid/ignites.json | 36 +++++ .../mixin/BaseFireBlockMixin.java | 33 +++++ .../createaddition/mixin/FireBlockMixin.java | 33 +++++ .../mixin/FlowingFluidMixin.java | 137 ++++++++++++++++++ src/main/resources/createaddition.mixins.json | 21 +-- 5 files changed, 251 insertions(+), 9 deletions(-) create mode 100644 src/generated/resources/data/c/tags/fluid/ignites.json create mode 100644 src/main/java/com/mrh0/createaddition/mixin/BaseFireBlockMixin.java create mode 100644 src/main/java/com/mrh0/createaddition/mixin/FireBlockMixin.java create mode 100644 src/main/java/com/mrh0/createaddition/mixin/FlowingFluidMixin.java diff --git a/src/generated/resources/data/c/tags/fluid/ignites.json b/src/generated/resources/data/c/tags/fluid/ignites.json new file mode 100644 index 000000000..e29a81a7e --- /dev/null +++ b/src/generated/resources/data/c/tags/fluid/ignites.json @@ -0,0 +1,36 @@ +{ + "values": [ + { + "id": "#c:biofuel", + "required": false + }, + { + "id": "#c:creosote", + "required": false + }, + { + "id": "#c:crude_oil", + "required": false + }, + { + "id": "#c:plantoil", + "required": false + }, + { + "id": "#c:ethanol", + "required": false + }, + { + "id": "#c:gasoline", + "required": false + }, + { + "id": "#c:diesel", + "required": false + }, + { + "id": "#c:biodiesel", + "required": false + } + ] +} \ No newline at end of file diff --git a/src/main/java/com/mrh0/createaddition/mixin/BaseFireBlockMixin.java b/src/main/java/com/mrh0/createaddition/mixin/BaseFireBlockMixin.java new file mode 100644 index 000000000..3af644861 --- /dev/null +++ b/src/main/java/com/mrh0/createaddition/mixin/BaseFireBlockMixin.java @@ -0,0 +1,33 @@ +package com.mrh0.createaddition.mixin; + +import com.llamalad7.mixinextras.injector.wrapoperation.Operation; +import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation; +import com.mrh0.createaddition.datagen.TagProvider.CATagRegister; +import net.minecraft.world.level.block.BaseFireBlock; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.material.FluidState; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; + +@Mixin(BaseFireBlock.class) +public class BaseFireBlockMixin { + + @WrapOperation( + method = "canBePlacedAt(Lnet/minecraft/world/level/Level;Lnet/minecraft/core/BlockPos;Lnet/minecraft/core/Direction;)Z", + at = @At( + value = "INVOKE", + target = "Lnet/minecraft/world/level/block/state/BlockState;isAir()Z" + ) + ) + private static boolean canPlaceFire(BlockState state, Operation original) { + boolean isAir = original.call(state); + FluidState fluid = state.getFluidState(); + if (fluid.isEmpty()) { + return isAir; + } + + boolean ignites = fluid.is(CATagRegister.Fluids.IGNITES); + + return isAir || ignites; + } +} diff --git a/src/main/java/com/mrh0/createaddition/mixin/FireBlockMixin.java b/src/main/java/com/mrh0/createaddition/mixin/FireBlockMixin.java new file mode 100644 index 000000000..0ebb77147 --- /dev/null +++ b/src/main/java/com/mrh0/createaddition/mixin/FireBlockMixin.java @@ -0,0 +1,33 @@ +package com.mrh0.createaddition.mixin; + +import com.llamalad7.mixinextras.injector.wrapoperation.Operation; +import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation; +import com.mrh0.createaddition.datagen.TagProvider.CATagRegister; +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; +import net.minecraft.world.level.BlockGetter; +import net.minecraft.world.level.block.FireBlock; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.material.FluidState; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; + +@Mixin(FireBlock.class) +public class FireBlockMixin { + @WrapOperation( + method = "canCatchFire(Lnet/minecraft/world/level/BlockGetter;Lnet/minecraft/core/BlockPos;Lnet/minecraft/core/Direction;)Z", + at = @At( + value = "INVOKE", + target = "Lnet/minecraft/world/level/block/state/BlockState;isFlammable(Lnet/minecraft/world/level/BlockGetter;Lnet/minecraft/core/BlockPos;Lnet/minecraft/core/Direction;)Z" + ) + ) + private static boolean igniteFluid(BlockState instance, BlockGetter level, BlockPos blockPos, Direction direction, Operation original) { + boolean isFlammableBlock = original.call(instance, level, blockPos, direction); + if (isFlammableBlock) { + return true; + } + + FluidState fluidState = level.getFluidState(blockPos); + return fluidState.is(CATagRegister.Fluids.IGNITES); + } +} diff --git a/src/main/java/com/mrh0/createaddition/mixin/FlowingFluidMixin.java b/src/main/java/com/mrh0/createaddition/mixin/FlowingFluidMixin.java new file mode 100644 index 000000000..00f517219 --- /dev/null +++ b/src/main/java/com/mrh0/createaddition/mixin/FlowingFluidMixin.java @@ -0,0 +1,137 @@ +package com.mrh0.createaddition.mixin; + +import com.llamalad7.mixinextras.injector.wrapmethod.WrapMethod; +import com.llamalad7.mixinextras.injector.wrapoperation.Operation; +import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation; +import com.mrh0.createaddition.datagen.TagProvider.CATagRegister; +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; +import net.minecraft.core.particles.ParticleTypes; +import net.minecraft.sounds.SoundEvents; +import net.minecraft.sounds.SoundSource; +import net.minecraft.tags.BlockTags; +import net.minecraft.world.level.BlockGetter; +import net.minecraft.world.level.GameRules; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.LevelAccessor; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.material.FlowingFluid; +import net.minecraft.world.level.material.Fluid; +import net.minecraft.world.level.material.FluidState; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Unique; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +@Mixin(FlowingFluid.class) +public class FlowingFluidMixin { + + @Unique + private void ca_ignite(Level level, BlockPos pos, FluidState state) { + if (!level.getGameRules().getBoolean(GameRules.RULE_DOFIRETICK)) { + return; + } + + if (!state.is(CATagRegister.Fluids.IGNITES)) { + return; + } + + BlockPos.MutableBlockPos mutable = pos.mutable(); + Direction fireFace = Direction.Plane.HORIZONTAL.stream().filter(adjacent -> { + mutable.setWithOffset(pos, adjacent); + return level.getBlockState(mutable).is(BlockTags.FIRE); + }).findAny().orElse(null); + + if (fireFace == null) { + return; + } + + BlockPos firePos = pos.relative(fireFace); + BlockState fire = level.getBlockState(firePos); + if (fire.canSurvive(level, firePos)) { + level.setBlockAndUpdate(pos, fire); + level.playSound( + null, + pos, + SoundEvents.FIRE_EXTINGUISH, + SoundSource.BLOCKS, + 0.5F, + 2.6F + (level.random.nextFloat() - level.random.nextFloat()) * 0.8F + ); + } + } + + @Inject( + method = "tick(Lnet/minecraft/world/level/Level;Lnet/minecraft/core/BlockPos;Lnet/minecraft/world/level/material/FluidState;)V", + at = @At("RETURN") + ) + private void injectIgnite(Level level, BlockPos pos, FluidState state, CallbackInfo ci) { + ca_ignite(level, pos, state); + } + + @WrapMethod( + method = "canSpreadTo(Lnet/minecraft/world/level/BlockGetter;Lnet/minecraft/core/BlockPos;Lnet/minecraft/world/level/block/state/BlockState;Lnet/minecraft/core/Direction;Lnet/minecraft/core/BlockPos;Lnet/minecraft/world/level/block/state/BlockState;Lnet/minecraft/world/level/material/FluidState;Lnet/minecraft/world/level/material/Fluid;)Z" + ) + private boolean protectFire( + BlockGetter level, + BlockPos fromPos, + BlockState fromBlockState, + Direction direction, + BlockPos toPos, + BlockState toBlockState, + FluidState toFluidState, + Fluid fluid, + Operation original + ) { + boolean canSpreadTo = original.call(level, fromPos, fromBlockState, direction, toPos, toBlockState, toFluidState, fluid); + if (!canSpreadTo) { + return false; + } + + if (direction == Direction.DOWN) { + return true; + } + + boolean ignites = fluid.is(CATagRegister.Fluids.IGNITES); + if (!ignites) { + return true; + } + + return !toBlockState.is(BlockTags.FIRE); + } + + @WrapOperation( + method = "spreadTo(Lnet/minecraft/world/level/LevelAccessor;Lnet/minecraft/core/BlockPos;Lnet/minecraft/world/level/block/state/BlockState;Lnet/minecraft/core/Direction;Lnet/minecraft/world/level/material/FluidState;)V", + at = @At( + value = "INVOKE", + target = "Lnet/minecraft/world/level/LevelAccessor;setBlock(Lnet/minecraft/core/BlockPos;Lnet/minecraft/world/level/block/state/BlockState;I)Z" + ) + ) + private boolean propagateFireUp( + LevelAccessor level, + BlockPos blockPos, + BlockState fluidBlockState, + int i, + Operation original, + LevelAccessor duplicate1, + BlockPos duplicate2, + BlockState toReplace, + Direction direction, + FluidState fluidState + ) { + boolean result = original.call(level, blockPos, fluidBlockState, i); + if (level instanceof Level) { + if (!((Level) level).getGameRules().getBoolean(GameRules.RULE_DOFIRETICK)) { + return result; + } + } + + + if (direction == Direction.DOWN && fluidState.is(CATagRegister.Fluids.IGNITES) && toReplace.is(BlockTags.FIRE)) { + BlockPos fluidPos = blockPos.above(); + level.setBlock(fluidPos, toReplace, 3); + } + return result; + } +} diff --git a/src/main/resources/createaddition.mixins.json b/src/main/resources/createaddition.mixins.json index b522a45c5..d967a7471 100644 --- a/src/main/resources/createaddition.mixins.json +++ b/src/main/resources/createaddition.mixins.json @@ -1,11 +1,14 @@ { - "required": true, - "priority": 1000, - "package": "com.mrh0.createaddition.mixin", - "compatibilityLevel": "JAVA_17", - "mixins": [ - "BlockMovementChecksMixin", - "ContraptionMixin" - ], - "minVersion": "0.8.5" + "required": true, + "priority": 1000, + "package": "com.mrh0.createaddition.mixin", + "compatibilityLevel": "JAVA_17", + "mixins": [ + "BaseFireBlockMixin", + "BlockMovementChecksMixin", + "ContraptionMixin", + "FireBlockMixin", + "FlowingFluidMixin" + ], + "minVersion": "0.8.5" } From 18388a07a4b4d61be1c6ecfa148efc46be6e3ada Mon Sep 17 00:00:00 2001 From: tmvkrpxl0 Date: Fri, 17 Apr 2026 08:09:47 +0900 Subject: [PATCH 08/11] Improve fire physics --- .../createaddition/fire/IFlammableFluid.java | 10 +++ .../createaddition/mixin/FireBlockMixin.java | 76 +++++++++++++++++++ .../mixin/FlowingFluidMixin.java | 64 +++------------- 3 files changed, 95 insertions(+), 55 deletions(-) create mode 100644 src/main/java/com/mrh0/createaddition/fire/IFlammableFluid.java diff --git a/src/main/java/com/mrh0/createaddition/fire/IFlammableFluid.java b/src/main/java/com/mrh0/createaddition/fire/IFlammableFluid.java new file mode 100644 index 000000000..39d343ee1 --- /dev/null +++ b/src/main/java/com/mrh0/createaddition/fire/IFlammableFluid.java @@ -0,0 +1,10 @@ +package com.mrh0.createaddition.fire; + +import net.minecraft.core.BlockPos; +import net.minecraft.world.level.LevelAccessor; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.material.FluidState; + +public interface IFlammableFluid { + BlockState onBurned(LevelAccessor level, BlockState fireState, BlockPos fluidPos, FluidState original); +} diff --git a/src/main/java/com/mrh0/createaddition/mixin/FireBlockMixin.java b/src/main/java/com/mrh0/createaddition/mixin/FireBlockMixin.java index 0ebb77147..f1533ba61 100644 --- a/src/main/java/com/mrh0/createaddition/mixin/FireBlockMixin.java +++ b/src/main/java/com/mrh0/createaddition/mixin/FireBlockMixin.java @@ -1,11 +1,16 @@ package com.mrh0.createaddition.mixin; +import com.llamalad7.mixinextras.injector.ModifyExpressionValue; import com.llamalad7.mixinextras.injector.wrapoperation.Operation; import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation; +import com.llamalad7.mixinextras.sugar.Local; import com.mrh0.createaddition.datagen.TagProvider.CATagRegister; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; +import net.minecraft.server.level.ServerLevel; import net.minecraft.world.level.BlockGetter; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.LevelReader; import net.minecraft.world.level.block.FireBlock; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.material.FluidState; @@ -30,4 +35,75 @@ private static boolean igniteFluid(BlockState instance, BlockGetter level, Block FluidState fluidState = level.getFluidState(blockPos); return fluidState.is(CATagRegister.Fluids.IGNITES); } + + @ModifyExpressionValue( + method = "getIgniteOdds(Lnet/minecraft/world/level/LevelReader;Lnet/minecraft/core/BlockPos;)I", + at = @At(value = "INVOKE", target = "Ljava/lang/Math;max(II)I") + ) + private int considerFluidFireSpreadSpeed(int igniteOdd, LevelReader level, BlockPos origin, @Local Direction direction) { + BlockPos fluidPos = origin.relative(direction); + + FluidState fluidState = level.getFluidState(fluidPos); + if (fluidState.isEmpty()) { + return igniteOdd; + } + if (!fluidState.is(CATagRegister.Fluids.IGNITES)) { + return igniteOdd; + } + int fireSpeed = 75; + if (level instanceof Level weatherLevel) { + if (weatherLevel.isRainingAt(fluidPos)) { + fireSpeed = 100; + } + } + + return Math.max(igniteOdd, fireSpeed); + } + + @ModifyExpressionValue( + method = "checkBurnOut(Lnet/minecraft/world/level/Level;Lnet/minecraft/core/BlockPos;ILnet/minecraft/util/RandomSource;ILnet/minecraft/core/Direction;)V", + at = @At(value = "INVOKE", target = "Lnet/minecraft/world/level/block/state/BlockState;getFlammability(Lnet/minecraft/world/level/BlockGetter;Lnet/minecraft/core/BlockPos;Lnet/minecraft/core/Direction;)I") + ) + private int considerFluidFlammability(int original, Level level, BlockPos pos) { + FluidState fluidState = level.getFluidState(pos); + if (fluidState.isEmpty()) { + return original; + } + + if (!fluidState.is(CATagRegister.Fluids.IGNITES)) { + return original; + } + + int flammability = 250; + if (level.isRainingAt(pos)) { + flammability = 300; + } + + return Math.max(original, flammability); + } + + @ModifyExpressionValue( + method = "tick(Lnet/minecraft/world/level/block/state/BlockState;Lnet/minecraft/server/level/ServerLevel;Lnet/minecraft/core/BlockPos;Lnet/minecraft/util/RandomSource;)V", + at = @At(value = "INVOKE", target = "Lnet/minecraft/world/level/block/state/BlockState;isFireSource(Lnet/minecraft/world/level/LevelReader;Lnet/minecraft/core/BlockPos;Lnet/minecraft/core/Direction;)Z") + ) + private boolean keepFire( + boolean original, + @Local(argsOnly = true) ServerLevel level, + @Local(argsOnly = true) BlockPos pos + ) { + if (original) { + return true; + } + + return Direction.Plane.HORIZONTAL.stream().anyMatch(direction -> { + BlockPos fluidPos = pos.relative(direction); + FluidState fluid = level.getFluidState(fluidPos); + + if (fluid.isEmpty()) { + return false; + } + + return fluid.is(CATagRegister.Fluids.IGNITES); + }); + } } diff --git a/src/main/java/com/mrh0/createaddition/mixin/FlowingFluidMixin.java b/src/main/java/com/mrh0/createaddition/mixin/FlowingFluidMixin.java index 00f517219..cd94f5911 100644 --- a/src/main/java/com/mrh0/createaddition/mixin/FlowingFluidMixin.java +++ b/src/main/java/com/mrh0/createaddition/mixin/FlowingFluidMixin.java @@ -6,9 +6,6 @@ import com.mrh0.createaddition.datagen.TagProvider.CATagRegister; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; -import net.minecraft.core.particles.ParticleTypes; -import net.minecraft.sounds.SoundEvents; -import net.minecraft.sounds.SoundSource; import net.minecraft.tags.BlockTags; import net.minecraft.world.level.BlockGetter; import net.minecraft.world.level.GameRules; @@ -19,57 +16,10 @@ import net.minecraft.world.level.material.Fluid; import net.minecraft.world.level.material.FluidState; import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.Unique; import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Inject; -import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; @Mixin(FlowingFluid.class) public class FlowingFluidMixin { - - @Unique - private void ca_ignite(Level level, BlockPos pos, FluidState state) { - if (!level.getGameRules().getBoolean(GameRules.RULE_DOFIRETICK)) { - return; - } - - if (!state.is(CATagRegister.Fluids.IGNITES)) { - return; - } - - BlockPos.MutableBlockPos mutable = pos.mutable(); - Direction fireFace = Direction.Plane.HORIZONTAL.stream().filter(adjacent -> { - mutable.setWithOffset(pos, adjacent); - return level.getBlockState(mutable).is(BlockTags.FIRE); - }).findAny().orElse(null); - - if (fireFace == null) { - return; - } - - BlockPos firePos = pos.relative(fireFace); - BlockState fire = level.getBlockState(firePos); - if (fire.canSurvive(level, firePos)) { - level.setBlockAndUpdate(pos, fire); - level.playSound( - null, - pos, - SoundEvents.FIRE_EXTINGUISH, - SoundSource.BLOCKS, - 0.5F, - 2.6F + (level.random.nextFloat() - level.random.nextFloat()) * 0.8F - ); - } - } - - @Inject( - method = "tick(Lnet/minecraft/world/level/Level;Lnet/minecraft/core/BlockPos;Lnet/minecraft/world/level/material/FluidState;)V", - at = @At("RETURN") - ) - private void injectIgnite(Level level, BlockPos pos, FluidState state, CallbackInfo ci) { - ca_ignite(level, pos, state); - } - @WrapMethod( method = "canSpreadTo(Lnet/minecraft/world/level/BlockGetter;Lnet/minecraft/core/BlockPos;Lnet/minecraft/world/level/block/state/BlockState;Lnet/minecraft/core/Direction;Lnet/minecraft/core/BlockPos;Lnet/minecraft/world/level/block/state/BlockState;Lnet/minecraft/world/level/material/FluidState;Lnet/minecraft/world/level/material/Fluid;)Z" ) @@ -108,7 +58,7 @@ private boolean protectFire( target = "Lnet/minecraft/world/level/LevelAccessor;setBlock(Lnet/minecraft/core/BlockPos;Lnet/minecraft/world/level/block/state/BlockState;I)Z" ) ) - private boolean propagateFireUp( + private boolean spreadFire( LevelAccessor level, BlockPos blockPos, BlockState fluidBlockState, @@ -117,7 +67,7 @@ private boolean propagateFireUp( LevelAccessor duplicate1, BlockPos duplicate2, BlockState toReplace, - Direction direction, + Direction flowDirection, FluidState fluidState ) { boolean result = original.call(level, blockPos, fluidBlockState, i); @@ -128,9 +78,13 @@ private boolean propagateFireUp( } - if (direction == Direction.DOWN && fluidState.is(CATagRegister.Fluids.IGNITES) && toReplace.is(BlockTags.FIRE)) { - BlockPos fluidPos = blockPos.above(); - level.setBlock(fluidPos, toReplace, 3); + if (flowDirection == Direction.DOWN && fluidState.is(CATagRegister.Fluids.IGNITES) && toReplace.is(BlockTags.FIRE)) { + Direction.Plane.HORIZONTAL.stream().forEach(direction -> { + BlockPos side = blockPos.relative(direction); + if (level.isEmptyBlock(side) && toReplace.canSurvive(level, side)) { + level.setBlock(side, toReplace, 3); + } + }); } return result; } From 6af9b4fceaff7ccfd2628a56b29fbdfc31b9f086 Mon Sep 17 00:00:00 2001 From: tmvkrpxl0 Date: Fri, 17 Apr 2026 09:46:54 +0900 Subject: [PATCH 09/11] Remove unneeded interface --- .../mrh0/createaddition/fire/IFlammableFluid.java | 10 ---------- .../createaddition/mixin/FireBlockInvoker.java | 14 ++++++++++++++ .../createaddition/mixin/FlowingFluidMixin.java | 9 ++++++++- src/main/resources/createaddition.mixins.json | 1 + 4 files changed, 23 insertions(+), 11 deletions(-) delete mode 100644 src/main/java/com/mrh0/createaddition/fire/IFlammableFluid.java create mode 100644 src/main/java/com/mrh0/createaddition/mixin/FireBlockInvoker.java diff --git a/src/main/java/com/mrh0/createaddition/fire/IFlammableFluid.java b/src/main/java/com/mrh0/createaddition/fire/IFlammableFluid.java deleted file mode 100644 index 39d343ee1..000000000 --- a/src/main/java/com/mrh0/createaddition/fire/IFlammableFluid.java +++ /dev/null @@ -1,10 +0,0 @@ -package com.mrh0.createaddition.fire; - -import net.minecraft.core.BlockPos; -import net.minecraft.world.level.LevelAccessor; -import net.minecraft.world.level.block.state.BlockState; -import net.minecraft.world.level.material.FluidState; - -public interface IFlammableFluid { - BlockState onBurned(LevelAccessor level, BlockState fireState, BlockPos fluidPos, FluidState original); -} diff --git a/src/main/java/com/mrh0/createaddition/mixin/FireBlockInvoker.java b/src/main/java/com/mrh0/createaddition/mixin/FireBlockInvoker.java new file mode 100644 index 000000000..e92a2605d --- /dev/null +++ b/src/main/java/com/mrh0/createaddition/mixin/FireBlockInvoker.java @@ -0,0 +1,14 @@ +package com.mrh0.createaddition.mixin; + +import net.minecraft.core.BlockPos; +import net.minecraft.world.level.BlockGetter; +import net.minecraft.world.level.block.FireBlock; +import net.minecraft.world.level.block.state.BlockState; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.gen.Invoker; + +@Mixin(FireBlock.class) +public interface FireBlockInvoker { + @Invoker("getStateForPlacement") + BlockState invokeSpreadPlacement(BlockGetter level, BlockPos pos); +} diff --git a/src/main/java/com/mrh0/createaddition/mixin/FlowingFluidMixin.java b/src/main/java/com/mrh0/createaddition/mixin/FlowingFluidMixin.java index cd94f5911..0d4ac085f 100644 --- a/src/main/java/com/mrh0/createaddition/mixin/FlowingFluidMixin.java +++ b/src/main/java/com/mrh0/createaddition/mixin/FlowingFluidMixin.java @@ -11,6 +11,7 @@ import net.minecraft.world.level.GameRules; import net.minecraft.world.level.Level; import net.minecraft.world.level.LevelAccessor; +import net.minecraft.world.level.block.FireBlock; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.material.FlowingFluid; import net.minecraft.world.level.material.Fluid; @@ -82,7 +83,13 @@ private boolean spreadFire( Direction.Plane.HORIZONTAL.stream().forEach(direction -> { BlockPos side = blockPos.relative(direction); if (level.isEmptyBlock(side) && toReplace.canSurvive(level, side)) { - level.setBlock(side, toReplace, 3); + BlockState fireState; + if (toReplace.getBlock() instanceof FireBlock fire) { + fireState = ((FireBlockInvoker)fire).invokeSpreadPlacement(level, side); + } else { + fireState = toReplace.getBlock().defaultBlockState(); + } + level.setBlock(side, fireState, 3); } }); } diff --git a/src/main/resources/createaddition.mixins.json b/src/main/resources/createaddition.mixins.json index d967a7471..dd370a5c1 100644 --- a/src/main/resources/createaddition.mixins.json +++ b/src/main/resources/createaddition.mixins.json @@ -7,6 +7,7 @@ "BaseFireBlockMixin", "BlockMovementChecksMixin", "ContraptionMixin", + "FireBlockInvoker", "FireBlockMixin", "FlowingFluidMixin" ], From eb5eff39836cfab033ae630f551bf137cfc14a36 Mon Sep 17 00:00:00 2001 From: tmvkrpxl0 Date: Fri, 17 Apr 2026 17:00:21 +0900 Subject: [PATCH 10/11] Add translation for ignites tag --- src/main/resources/assets/createaddition/lang/en_us.json | 4 +++- src/main/resources/assets/createaddition/lang/ko_kr.json | 4 +++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/src/main/resources/assets/createaddition/lang/en_us.json b/src/main/resources/assets/createaddition/lang/en_us.json index 6304809d0..44f9257af 100644 --- a/src/main/resources/assets/createaddition/lang/en_us.json +++ b/src/main/resources/assets/createaddition/lang/en_us.json @@ -325,5 +325,7 @@ "effect.createaddition.shocking.description": "Causes severely reduced movement speed", "createaddition.subtitle.loud_zap": "Tesla Coil zaps", - "createaddition.subtitle.little_zap": "Tesla Coil sparks" + "createaddition.subtitle.little_zap": "Tesla Coil sparks", + + "tag.fluid.createaddition.ignites": "Ignitable fluids" } diff --git a/src/main/resources/assets/createaddition/lang/ko_kr.json b/src/main/resources/assets/createaddition/lang/ko_kr.json index baebb6325..65d89d60c 100644 --- a/src/main/resources/assets/createaddition/lang/ko_kr.json +++ b/src/main/resources/assets/createaddition/lang/ko_kr.json @@ -294,5 +294,7 @@ "effect.createaddition.shocking":"쇼크", "death.attack.createaddition.tesla_coil": "%1$s이(가) 치명적인 전기 충격을 받았습니다", "death.attack.createaddition.tesla_coil.player": "%1$s이(가) %2$s와(과) 싸우다가 치명적인 전기 충격을 받았습니다", - "effect.createaddition.shocking.description": "이동 속도를 심각하게 감소시킵니다" + "effect.createaddition.shocking.description": "이동 속도를 심각하게 감소시킵니다", + + "tag.fluid.createaddition.ignites": "점화 가능 액체" } From afcd352fe43fc8695e5a0f63b86d0821972201ff Mon Sep 17 00:00:00 2001 From: tmvkrpxl0 Date: Fri, 17 Apr 2026 17:22:48 +0900 Subject: [PATCH 11/11] Fix "ignites" tag translation key --- src/main/resources/assets/createaddition/lang/en_us.json | 2 +- src/main/resources/assets/createaddition/lang/ko_kr.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/resources/assets/createaddition/lang/en_us.json b/src/main/resources/assets/createaddition/lang/en_us.json index 44f9257af..8f8e24cb1 100644 --- a/src/main/resources/assets/createaddition/lang/en_us.json +++ b/src/main/resources/assets/createaddition/lang/en_us.json @@ -327,5 +327,5 @@ "createaddition.subtitle.loud_zap": "Tesla Coil zaps", "createaddition.subtitle.little_zap": "Tesla Coil sparks", - "tag.fluid.createaddition.ignites": "Ignitable fluids" + "tag.fluid.c.ignites": "Ignitable fluids" } diff --git a/src/main/resources/assets/createaddition/lang/ko_kr.json b/src/main/resources/assets/createaddition/lang/ko_kr.json index 65d89d60c..8facd2e0d 100644 --- a/src/main/resources/assets/createaddition/lang/ko_kr.json +++ b/src/main/resources/assets/createaddition/lang/ko_kr.json @@ -296,5 +296,5 @@ "death.attack.createaddition.tesla_coil.player": "%1$s이(가) %2$s와(과) 싸우다가 치명적인 전기 충격을 받았습니다", "effect.createaddition.shocking.description": "이동 속도를 심각하게 감소시킵니다", - "tag.fluid.createaddition.ignites": "점화 가능 액체" + "tag.fluid.c.ignites": "점화 가능 액체" }