From 3d2097eb2701dbe2895b449b5c13bca800ea796f Mon Sep 17 00:00:00 2001 From: Marc Hannappel Date: Thu, 6 Jun 2019 18:47:16 +0200 Subject: [PATCH] Fix for shulker dispenser behaviour Fixes the behaviour of dispensers to remove 2 shulker boxes from a stack instead of 1 --- ...BlockPlacementDispenserBehaviourMixin.java | 21 +++++++++++++++++++ src/main/resources/carpet.mixins.json | 4 +++- 2 files changed, 24 insertions(+), 1 deletion(-) create mode 100644 src/main/java/carpet/mixins/BlockPlacementDispenserBehaviourMixin.java diff --git a/src/main/java/carpet/mixins/BlockPlacementDispenserBehaviourMixin.java b/src/main/java/carpet/mixins/BlockPlacementDispenserBehaviourMixin.java new file mode 100644 index 00000000..37af7460 --- /dev/null +++ b/src/main/java/carpet/mixins/BlockPlacementDispenserBehaviourMixin.java @@ -0,0 +1,21 @@ +package carpet.mixins; + +import carpet.CarpetSettings; +import net.minecraft.block.dispenser.BlockPlacementDispenserBehavior; +import net.minecraft.item.ItemStack; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Redirect; + +@Mixin(BlockPlacementDispenserBehavior.class) +public class BlockPlacementDispenserBehaviourMixin +{ + @Redirect(method = "dispenseSilently", at = @At(value="INVOKE", target="Lnet/minecraft/item/ItemStack;decrement(I)V")) + private void cancleDoubleDecrement(ItemStack stack, int amount) + { + if (!CarpetSettings.b_stackableShulkerBoxes) + { + stack.decrement(amount); + } + } +} diff --git a/src/main/resources/carpet.mixins.json b/src/main/resources/carpet.mixins.json index 762535d6..a76129f4 100644 --- a/src/main/resources/carpet.mixins.json +++ b/src/main/resources/carpet.mixins.json @@ -79,7 +79,9 @@ "PistonBlock_movableTEMixin", "PistonBlockEntity_movableTEMixin", "World_movableTEMixin", - "WorldChunk_movableTEMixin" + "WorldChunk_movableTEMixin", + + "BlockPlacementDispenserBehaviourMixin", ], "client": [ "MinecraftClientMixin",