From d985aa1059c5ab68b230675e277dae54dbafed27 Mon Sep 17 00:00:00 2001 From: DeadlyMC Date: Sun, 15 Sep 2019 21:22:50 +0530 Subject: [PATCH] register dispenser behaviors in DispenserBlock.getBehaviorForItem(...) --- .../DispenserBehaviour_cactusMixin.java | 21 ---------------- .../mixins/DispenserBlock_cactusMixin.java | 24 +++++++++++++++++++ src/main/resources/carpet.mixins.json | 2 +- 3 files changed, 25 insertions(+), 22 deletions(-) delete mode 100644 src/main/java/carpet/mixins/DispenserBehaviour_cactusMixin.java create mode 100644 src/main/java/carpet/mixins/DispenserBlock_cactusMixin.java diff --git a/src/main/java/carpet/mixins/DispenserBehaviour_cactusMixin.java b/src/main/java/carpet/mixins/DispenserBehaviour_cactusMixin.java deleted file mode 100644 index d2695686..00000000 --- a/src/main/java/carpet/mixins/DispenserBehaviour_cactusMixin.java +++ /dev/null @@ -1,21 +0,0 @@ -package carpet.mixins; - -import carpet.helpers.BlockRotator; -import net.minecraft.block.Blocks; -import net.minecraft.block.DispenserBlock; -import net.minecraft.block.dispenser.DispenserBehavior; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Inject; -import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; - -@Mixin(DispenserBehavior.class) -public interface DispenserBehaviour_cactusMixin -{ - @SuppressWarnings("PublicStaticMixinMember") - @Inject(method = "registerDefaults", at = @At("HEAD")) - static void addBlockRotator(CallbackInfo ci) - { - DispenserBlock.registerBehavior(Blocks.CACTUS.asItem(), new BlockRotator.CactusDispenserBehaviour()); - } -} diff --git a/src/main/java/carpet/mixins/DispenserBlock_cactusMixin.java b/src/main/java/carpet/mixins/DispenserBlock_cactusMixin.java new file mode 100644 index 00000000..ec386f71 --- /dev/null +++ b/src/main/java/carpet/mixins/DispenserBlock_cactusMixin.java @@ -0,0 +1,24 @@ +package carpet.mixins; + +import carpet.helpers.BlockRotator; +import net.minecraft.block.DispenserBlock; +import net.minecraft.block.dispenser.DispenserBehavior; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.item.Items; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; + +@Mixin(DispenserBlock.class) +public abstract class DispenserBlock_cactusMixin +{ + @Inject(method = "getBehaviorForItem", at = @At("HEAD"), cancellable = true) + private void registerCarpetBehaviors(ItemStack stack, CallbackInfoReturnable cir) + { + Item item = stack.getItem(); + if (item == Items.CACTUS) + cir.setReturnValue(new BlockRotator.CactusDispenserBehaviour()); + } +} diff --git a/src/main/resources/carpet.mixins.json b/src/main/resources/carpet.mixins.json index 680cf64e..71c2a233 100644 --- a/src/main/resources/carpet.mixins.json +++ b/src/main/resources/carpet.mixins.json @@ -79,7 +79,7 @@ "ServerPlayerInteractionManager_cactusMixin", "HopperBlock_cactusMixin", "ItemUsageContext_cactusMixin", - "DispenserBehaviour_cactusMixin", + "DispenserBlock_cactusMixin", "ServerPlayNetworkHandler_antiCheatDisabledMixin",