Skip to content

Commit 866b19b

Browse files
authored
Make Leaves' Log Check Work With Modded Logs and Leaves (#186)
* Fix * And comment this out cause it's ugly
1 parent 5c048d2 commit 866b19b

5 files changed

Lines changed: 42 additions & 1 deletion

File tree

src/test/java/net/modificationstation/sltest/block/Blocks.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@
77
import net.modificationstation.stationapi.api.event.registry.BlockRegistryEvent;
88
import net.modificationstation.stationapi.api.mod.entrypoint.EntrypointManager;
99
import net.modificationstation.stationapi.api.template.block.TemplateBlock;
10+
import net.modificationstation.stationapi.api.template.block.TemplateLeavesBlock;
11+
import net.modificationstation.stationapi.api.template.block.TemplateLogBlock;
1012
import net.modificationstation.stationapi.api.util.Identifier;
1113

1214
import java.lang.invoke.MethodHandles;
@@ -25,7 +27,9 @@ public enum Blocks {
2527
ALTAR("altar", "altar", id -> new BlockAltar(id, Material.STONE).setHardness(3)),
2628
VARIATION_BLOCK("variation_block", "variationBlock", id -> new VariationBlock(id, Material.STONE).setHardness(.5F).setSoundGroup(Block.DEFAULT_SOUND_GROUP).disableAutoItemRegistration()),
2729
EMISSION_CHECKER("emission_checker", "emissionChecker", LampBlock::new),
28-
INDISPENSABLE_BLOCK("indispensable_block", "indispensableBlock", IndispensableBlock::new);
30+
INDISPENSABLE_BLOCK("indispensable_block", "indispensableBlock", IndispensableBlock::new),
31+
MODDED_LEAVES("modded_leaves", "moddedLeaves", id -> new TemplateLeavesBlock(id, 52)),
32+
MODDED_LOG("modded_log", "moddedLog", TemplateLogBlock::new);
2933

3034
private final Runnable register;
3135
private Block block;

src/test/java/net/modificationstation/sltest/level/gen/ChunkListener.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
package net.modificationstation.sltest.level.gen;
22

33
import net.mine_diver.unsafeevents.listener.EventListener;
4+
import net.minecraft.block.Block;
5+
import net.modificationstation.sltest.block.Blocks;
46
import net.modificationstation.stationapi.api.event.world.gen.WorldGenEvent;
57

68
public class ChunkListener {
@@ -11,5 +13,10 @@ public void populate(WorldGenEvent.ChunkDecoration event) {
1113
// for (int z = 0; z < 16; z++)
1214
// if ((event.biome == Biome.FOREST || event.biome == Biome.SEASONAL_FOREST) && event.random.nextBoolean())
1315
// event.level.setTile(event.x + x, 90, event.z + z, BlockBase.DIAMOND_BLOCK.id);
16+
// Modded leaves and log test
17+
event.world.setBlock(event.x, 100, event.z, Blocks.MODDED_LOG.get().id);
18+
// event.world.setBlock(event.x + 1, 100, event.z, Block.LEAVES.id);
19+
// event.world.setBlock(event.x + 2, 100, event.z, Blocks.MODDED_LEAVES.get().id);
20+
// event.world.setBlock(event.x + 3, 100, event.z, Block.LEAVES.id);
1421
}
1522
}

station-blocks-v0/src/main/java/net/modificationstation/stationapi/api/registry/tag/BlockTags.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
public final class BlockTags {
1212
public static final TagKey<Block>
1313
LOGS = of("logs"),
14+
LEAVES = of("leaves"),
1415
PLANKS = of("planks"),
1516
INFINIBURN = of("infiniburn");
1617

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
package net.modificationstation.stationapi.mixin.block;
2+
3+
import com.llamalad7.mixinextras.injector.wrapoperation.Operation;
4+
import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation;
5+
import net.minecraft.block.Block;
6+
import net.minecraft.block.LeavesBlock;
7+
import net.minecraft.world.World;
8+
import net.modificationstation.stationapi.api.block.BlockState;
9+
import net.modificationstation.stationapi.api.registry.tag.BlockTags;
10+
import org.spongepowered.asm.mixin.Mixin;
11+
import org.spongepowered.asm.mixin.injection.At;
12+
13+
@Mixin(LeavesBlock.class)
14+
public class LeavesBlockMixin {
15+
16+
@WrapOperation(method = "onTick", at = @At(value = "INVOKE", target = "Lnet/minecraft/world/World;getBlockId(III)I"))
17+
private int makeModdedLogsAndLeavesWork(World instance, int x, int y, int z, Operation<Integer> original) {
18+
BlockState state = instance.getBlockState(x, y, z);
19+
if (state.isIn(BlockTags.LOGS)) {
20+
return Block.LOG.id;
21+
}
22+
if (state.isIn(BlockTags.LEAVES)) {
23+
return Block.LEAVES.id;
24+
}
25+
26+
return original.call(instance, x, y, z);
27+
}
28+
}

station-blocks-v0/src/main/resources/station-blocks-v0.mixins.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
"BlockItemMixin",
88
"BlockMixin",
99
"FireBlockMixin",
10+
"LeavesBlockMixin",
1011
"SecondaryBlockItemMixin",
1112
"StatsMixin"
1213
],

0 commit comments

Comments
 (0)