From 91f17f9b3de9e18b9b382c0fedaa72ad1af136c4 Mon Sep 17 00:00:00 2001 From: calmilamsy Date: Sat, 29 Mar 2025 17:00:10 +0000 Subject: [PATCH 1/3] Yeet --- .../stationapi/mixin/item/CropBlockMixin.java | 20 +++++++++++++++++++ .../resources/station-items-v0.mixins.json | 1 + 2 files changed, 21 insertions(+) create mode 100644 station-items-v0/src/main/java/net/modificationstation/stationapi/mixin/item/CropBlockMixin.java diff --git a/station-items-v0/src/main/java/net/modificationstation/stationapi/mixin/item/CropBlockMixin.java b/station-items-v0/src/main/java/net/modificationstation/stationapi/mixin/item/CropBlockMixin.java new file mode 100644 index 000000000..6b959754d --- /dev/null +++ b/station-items-v0/src/main/java/net/modificationstation/stationapi/mixin/item/CropBlockMixin.java @@ -0,0 +1,20 @@ +package net.modificationstation.stationapi.mixin.item; + +import net.minecraft.block.CropBlock; +import net.minecraft.world.World; +import net.modificationstation.stationapi.api.block.BlockState; +import net.modificationstation.stationapi.api.block.StationBlock; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Shadow; + +@Mixin(CropBlock.class) +public abstract class CropBlockMixin implements StationBlock { + + @Shadow public abstract void method_996(World world, int i, int j, int k); + + @Override + public boolean onBonemealUse(World world, int x, int y, int z, BlockState state) { + method_996(world, x, y, z); // Full grows crop. + return true; + } +} diff --git a/station-items-v0/src/main/resources/station-items-v0.mixins.json b/station-items-v0/src/main/resources/station-items-v0.mixins.json index 2fd54f374..bfe59e1a4 100644 --- a/station-items-v0/src/main/resources/station-items-v0.mixins.json +++ b/station-items-v0/src/main/resources/station-items-v0.mixins.json @@ -5,6 +5,7 @@ "compatibilityLevel": "JAVA_17", "mixins": [ "BlockMixin", + "CropBlockMixin", "DyeItemMixin", "EntityAccessor", "EntityMixin", From ad8b0110f59b0a83d1d9deaa33416ff6183092c7 Mon Sep 17 00:00:00 2001 From: calmilamsy Date: Sun, 6 Apr 2025 22:08:47 +0100 Subject: [PATCH 2/3] Also do sapling, also fix multiplayer --- .../stationapi/mixin/item/CropBlockMixin.java | 4 ++- .../mixin/item/SaplingBlockMixin.java | 27 +++++++++++++++++++ .../resources/station-items-v0.mixins.json | 1 + 3 files changed, 31 insertions(+), 1 deletion(-) create mode 100644 station-items-v0/src/main/java/net/modificationstation/stationapi/mixin/item/SaplingBlockMixin.java diff --git a/station-items-v0/src/main/java/net/modificationstation/stationapi/mixin/item/CropBlockMixin.java b/station-items-v0/src/main/java/net/modificationstation/stationapi/mixin/item/CropBlockMixin.java index 6b959754d..2d02b8a9d 100644 --- a/station-items-v0/src/main/java/net/modificationstation/stationapi/mixin/item/CropBlockMixin.java +++ b/station-items-v0/src/main/java/net/modificationstation/stationapi/mixin/item/CropBlockMixin.java @@ -14,7 +14,9 @@ public abstract class CropBlockMixin implements StationBlock { @Override public boolean onBonemealUse(World world, int x, int y, int z, BlockState state) { - method_996(world, x, y, z); // Full grows crop. + if (!world.isRemote) { + method_996(world, x, y, z); // Full grows crop. + } return true; } } diff --git a/station-items-v0/src/main/java/net/modificationstation/stationapi/mixin/item/SaplingBlockMixin.java b/station-items-v0/src/main/java/net/modificationstation/stationapi/mixin/item/SaplingBlockMixin.java new file mode 100644 index 000000000..986d28ca5 --- /dev/null +++ b/station-items-v0/src/main/java/net/modificationstation/stationapi/mixin/item/SaplingBlockMixin.java @@ -0,0 +1,27 @@ +package net.modificationstation.stationapi.mixin.item; + +import net.minecraft.block.SaplingBlock; +import net.minecraft.world.World; +import net.modificationstation.stationapi.api.block.BlockState; +import net.modificationstation.stationapi.api.block.StationBlock; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Shadow; +import org.spongepowered.asm.mixin.Unique; + +import java.util.Random; + +@Mixin(SaplingBlock.class) +public abstract class SaplingBlockMixin implements StationBlock { + @Unique + private static final Random RANDOM = new Random(); + + @Shadow public abstract void method_533(World world, int x, int y, int z, Random random); + + @Override + public boolean onBonemealUse(World world, int x, int y, int z, BlockState state) { + if (!world.isRemote) { + method_533(world, x, y, z, RANDOM); + } + return true; + } +} diff --git a/station-items-v0/src/main/resources/station-items-v0.mixins.json b/station-items-v0/src/main/resources/station-items-v0.mixins.json index bfe59e1a4..a014b3d47 100644 --- a/station-items-v0/src/main/resources/station-items-v0.mixins.json +++ b/station-items-v0/src/main/resources/station-items-v0.mixins.json @@ -14,6 +14,7 @@ "ItemStackMixin", "PlayerEntityMixin", "PlayerInventoryMixin", + "SaplingBlockMixin", "ScreenHandlerMixin", "StatsMixin", "dispenser.block.DispenserBlockMixin", From 4a7a5ef242053f8f8b65460b354facd8c05a9f98 Mon Sep 17 00:00:00 2001 From: mineLdiver Date: Tue, 17 Jun 2025 22:11:23 +0500 Subject: [PATCH 3/3] Use the appropriate random --- .../stationapi/mixin/item/SaplingBlockMixin.java | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/station-items-v0/src/main/java/net/modificationstation/stationapi/mixin/item/SaplingBlockMixin.java b/station-items-v0/src/main/java/net/modificationstation/stationapi/mixin/item/SaplingBlockMixin.java index 986d28ca5..6ff61d71b 100644 --- a/station-items-v0/src/main/java/net/modificationstation/stationapi/mixin/item/SaplingBlockMixin.java +++ b/station-items-v0/src/main/java/net/modificationstation/stationapi/mixin/item/SaplingBlockMixin.java @@ -6,21 +6,17 @@ import net.modificationstation.stationapi.api.block.StationBlock; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; -import org.spongepowered.asm.mixin.Unique; import java.util.Random; @Mixin(SaplingBlock.class) public abstract class SaplingBlockMixin implements StationBlock { - @Unique - private static final Random RANDOM = new Random(); - @Shadow public abstract void method_533(World world, int x, int y, int z, Random random); @Override public boolean onBonemealUse(World world, int x, int y, int z, BlockState state) { if (!world.isRemote) { - method_533(world, x, y, z, RANDOM); + method_533(world, x, y, z, world.field_214); } return true; }