register dispenser behaviors in DispenserBlock.getBehaviorForItem(...)

This commit is contained in:
DeadlyMC committed 2019-09-15 21:22:50 +05:30
1 parent 8d97b5bf01
commit d985aa1059
3 files changed
+25 -22

No files matched your search

@@ -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());
}
}
@@ -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<DispenserBehavior> cir)
{
Item item = stack.getItem();
if (item == Items.CACTUS)
cir.setReturnValue(new BlockRotator.CactusDispenserBehaviour());
}
}