From abe354f682addcea6d79aed004c4fa1c6c659fbb Mon Sep 17 00:00:00 2001 From: calmilamsy Date: Tue, 22 Apr 2025 16:23:41 +0100 Subject: [PATCH 1/2] Fix --- .../sltest/block/Blocks.java | 6 +++- .../sltest/level/gen/ChunkListener.java | 7 +++++ .../api/registry/tag/BlockTags.java | 1 + .../mixin/block/LeavesBlockMixin.java | 28 +++++++++++++++++++ .../resources/station-blocks-v0.mixins.json | 1 + 5 files changed, 42 insertions(+), 1 deletion(-) create mode 100644 station-blocks-v0/src/main/java/net/modificationstation/stationapi/mixin/block/LeavesBlockMixin.java diff --git a/src/test/java/net/modificationstation/sltest/block/Blocks.java b/src/test/java/net/modificationstation/sltest/block/Blocks.java index 882fd7902..3c2929a01 100644 --- a/src/test/java/net/modificationstation/sltest/block/Blocks.java +++ b/src/test/java/net/modificationstation/sltest/block/Blocks.java @@ -7,6 +7,8 @@ import net.modificationstation.stationapi.api.event.registry.BlockRegistryEvent; import net.modificationstation.stationapi.api.mod.entrypoint.EntrypointManager; import net.modificationstation.stationapi.api.template.block.TemplateBlock; +import net.modificationstation.stationapi.api.template.block.TemplateLeavesBlock; +import net.modificationstation.stationapi.api.template.block.TemplateLogBlock; import net.modificationstation.stationapi.api.util.Identifier; import java.lang.invoke.MethodHandles; @@ -25,7 +27,9 @@ public enum Blocks { ALTAR("altar", "altar", id -> new BlockAltar(id, Material.STONE).setHardness(3)), VARIATION_BLOCK("variation_block", "variationBlock", id -> new VariationBlock(id, Material.STONE).setHardness(.5F).setSoundGroup(Block.DEFAULT_SOUND_GROUP).disableAutoItemRegistration()), EMISSION_CHECKER("emission_checker", "emissionChecker", LampBlock::new), - INDISPENSABLE_BLOCK("indispensable_block", "indispensableBlock", IndispensableBlock::new); + INDISPENSABLE_BLOCK("indispensable_block", "indispensableBlock", IndispensableBlock::new), + MODDED_LEAVES("modded_leaves", "moddedLeaves", id -> new TemplateLeavesBlock(id, 52)), + MODDED_LOG("modded_log", "moddedLog", TemplateLogBlock::new); private final Runnable register; private Block block; diff --git a/src/test/java/net/modificationstation/sltest/level/gen/ChunkListener.java b/src/test/java/net/modificationstation/sltest/level/gen/ChunkListener.java index f636ae32a..eac2a84fc 100644 --- a/src/test/java/net/modificationstation/sltest/level/gen/ChunkListener.java +++ b/src/test/java/net/modificationstation/sltest/level/gen/ChunkListener.java @@ -1,6 +1,8 @@ package net.modificationstation.sltest.level.gen; import net.mine_diver.unsafeevents.listener.EventListener; +import net.minecraft.block.Block; +import net.modificationstation.sltest.block.Blocks; import net.modificationstation.stationapi.api.event.world.gen.WorldGenEvent; public class ChunkListener { @@ -11,5 +13,10 @@ public void populate(WorldGenEvent.ChunkDecoration event) { // for (int z = 0; z < 16; z++) // if ((event.biome == Biome.FOREST || event.biome == Biome.SEASONAL_FOREST) && event.random.nextBoolean()) // event.level.setTile(event.x + x, 90, event.z + z, BlockBase.DIAMOND_BLOCK.id); + // Modded leaves and log test + event.world.setBlock(event.x, 100, event.z, Blocks.MODDED_LOG.get().id); + event.world.setBlock(event.x + 1, 100, event.z, Block.LEAVES.id); + event.world.setBlock(event.x + 2, 100, event.z, Blocks.MODDED_LEAVES.get().id); + event.world.setBlock(event.x + 3, 100, event.z, Block.LEAVES.id); } } diff --git a/station-blocks-v0/src/main/java/net/modificationstation/stationapi/api/registry/tag/BlockTags.java b/station-blocks-v0/src/main/java/net/modificationstation/stationapi/api/registry/tag/BlockTags.java index 19722b49c..e0169befa 100644 --- a/station-blocks-v0/src/main/java/net/modificationstation/stationapi/api/registry/tag/BlockTags.java +++ b/station-blocks-v0/src/main/java/net/modificationstation/stationapi/api/registry/tag/BlockTags.java @@ -11,6 +11,7 @@ public final class BlockTags { public static final TagKey LOGS = of("logs"), + LEAVES = of("leaves"), PLANKS = of("planks"), INFINIBURN = of("infiniburn"); diff --git a/station-blocks-v0/src/main/java/net/modificationstation/stationapi/mixin/block/LeavesBlockMixin.java b/station-blocks-v0/src/main/java/net/modificationstation/stationapi/mixin/block/LeavesBlockMixin.java new file mode 100644 index 000000000..cc5bbf2ff --- /dev/null +++ b/station-blocks-v0/src/main/java/net/modificationstation/stationapi/mixin/block/LeavesBlockMixin.java @@ -0,0 +1,28 @@ +package net.modificationstation.stationapi.mixin.block; + +import com.llamalad7.mixinextras.injector.wrapoperation.Operation; +import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation; +import net.minecraft.block.Block; +import net.minecraft.block.LeavesBlock; +import net.minecraft.world.World; +import net.modificationstation.stationapi.api.block.BlockState; +import net.modificationstation.stationapi.api.registry.tag.BlockTags; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; + +@Mixin(LeavesBlock.class) +public class LeavesBlockMixin { + + @WrapOperation(method = "onTick", at = @At(value = "INVOKE", target = "Lnet/minecraft/world/World;getBlockId(III)I")) + private int makeModdedLogsAndLeavesWork(World instance, int x, int y, int z, Operation original) { + BlockState state = instance.getBlockState(x, y, z); + if (state.isIn(BlockTags.LOGS)) { + return Block.LOG.id; + } + if (state.isIn(BlockTags.LEAVES)) { + return Block.LEAVES.id; + } + + return original.call(instance, x, y, z); + } +} diff --git a/station-blocks-v0/src/main/resources/station-blocks-v0.mixins.json b/station-blocks-v0/src/main/resources/station-blocks-v0.mixins.json index 018fece12..109b74423 100644 --- a/station-blocks-v0/src/main/resources/station-blocks-v0.mixins.json +++ b/station-blocks-v0/src/main/resources/station-blocks-v0.mixins.json @@ -7,6 +7,7 @@ "BlockItemMixin", "BlockMixin", "FireBlockMixin", + "LeavesBlockMixin", "SecondaryBlockItemMixin", "StatsMixin" ], From 7e3063e608137b5f783230fd9c041e5a959a075e Mon Sep 17 00:00:00 2001 From: calmilamsy Date: Tue, 22 Apr 2025 16:23:56 +0100 Subject: [PATCH 2/2] And comment this out cause it's ugly --- .../modificationstation/sltest/level/gen/ChunkListener.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/test/java/net/modificationstation/sltest/level/gen/ChunkListener.java b/src/test/java/net/modificationstation/sltest/level/gen/ChunkListener.java index eac2a84fc..a344ea74c 100644 --- a/src/test/java/net/modificationstation/sltest/level/gen/ChunkListener.java +++ b/src/test/java/net/modificationstation/sltest/level/gen/ChunkListener.java @@ -15,8 +15,8 @@ public void populate(WorldGenEvent.ChunkDecoration event) { // event.level.setTile(event.x + x, 90, event.z + z, BlockBase.DIAMOND_BLOCK.id); // Modded leaves and log test event.world.setBlock(event.x, 100, event.z, Blocks.MODDED_LOG.get().id); - event.world.setBlock(event.x + 1, 100, event.z, Block.LEAVES.id); - event.world.setBlock(event.x + 2, 100, event.z, Blocks.MODDED_LEAVES.get().id); - event.world.setBlock(event.x + 3, 100, event.z, Block.LEAVES.id); +// event.world.setBlock(event.x + 1, 100, event.z, Block.LEAVES.id); +// event.world.setBlock(event.x + 2, 100, event.z, Blocks.MODDED_LEAVES.get().id); +// event.world.setBlock(event.x + 3, 100, event.z, Block.LEAVES.id); } }