diff --git a/src/main/java/org/ultramine/mods/bukkit/EventImplProgress.java b/src/main/java/org/ultramine/mods/bukkit/EventImplProgress.java index 108ba51..e1fac12 100644 --- a/src/main/java/org/ultramine/mods/bukkit/EventImplProgress.java +++ b/src/main/java/org/ultramine/mods/bukkit/EventImplProgress.java @@ -64,7 +64,7 @@ reg(true, org.bukkit.event.block.BlockFadeEvent.class); reg(true, org.bukkit.event.block.BlockFormEvent.class); reg(true, org.bukkit.event.block.BlockFromToEvent.class); - reg(false, org.bukkit.event.block.BlockGrowEvent.class); + reg(true, org.bukkit.event.block.BlockGrowEvent.class); reg(false, org.bukkit.event.block.BlockIgniteEvent.class); reg(false, org.bukkit.event.block.BlockMultiPlaceEvent.class); reg(false, org.bukkit.event.block.BlockPhysicsEvent.class); diff --git a/src/main/java/org/ultramine/mods/bukkit/mixin/block/MixinBlockCactus.java b/src/main/java/org/ultramine/mods/bukkit/mixin/block/MixinBlockCactus.java new file mode 100644 index 0000000..0b4e977 --- /dev/null +++ b/src/main/java/org/ultramine/mods/bukkit/mixin/block/MixinBlockCactus.java @@ -0,0 +1,20 @@ +package org.ultramine.mods.bukkit.mixin.block; + +import net.minecraft.block.Block; +import net.minecraft.block.BlockCactus; +import net.minecraft.world.World; +import org.bukkit.craftbukkit.event.CraftEventFactory; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Redirect; + +@Mixin(BlockCactus.class) +public class MixinBlockCactus +{ + @Redirect(method = "updateTick", at = @At(value = "INVOKE", target = "Lnet/minecraft/world/World;setBlock(IIILnet/minecraft/block/Block;)Z")) + public boolean setBlockRedirect(World world, int x, int y, int z, Block block) + { + CraftEventFactory.handleBlockGrowEvent(world, x, y, z, block, 0); + return false; + } +} diff --git a/src/main/java/org/ultramine/mods/bukkit/mixin/block/MixinBlockCocoa.java b/src/main/java/org/ultramine/mods/bukkit/mixin/block/MixinBlockCocoa.java new file mode 100644 index 0000000..fdfb2ce --- /dev/null +++ b/src/main/java/org/ultramine/mods/bukkit/mixin/block/MixinBlockCocoa.java @@ -0,0 +1,26 @@ +package org.ultramine.mods.bukkit.mixin.block; + +import net.minecraft.block.BlockCocoa; +import net.minecraft.block.BlockDirectional; +import net.minecraft.block.material.Material; +import net.minecraft.world.World; +import org.bukkit.craftbukkit.event.CraftEventFactory; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Redirect; + +@Mixin(BlockCocoa.class) +public class MixinBlockCocoa extends BlockDirectional +{ + protected MixinBlockCocoa(Material p_i45401_1_) + { + super(p_i45401_1_); + } + + @Redirect(method = "updateTick", at = @At(value = "INVOKE", target = "Lnet/minecraft/world/World;setBlockMetadataWithNotify(IIIII)Z")) + public boolean setBlockMetadataWithNotifyRedirect(World world, int x, int y, int z, int data, int p_72921_5_) + { + CraftEventFactory.handleBlockGrowEvent(world, x, y, z, this, data); + return false; + } +} diff --git a/src/main/java/org/ultramine/mods/bukkit/mixin/block/MixinBlockCrops.java b/src/main/java/org/ultramine/mods/bukkit/mixin/block/MixinBlockCrops.java new file mode 100644 index 0000000..89ef2e0 --- /dev/null +++ b/src/main/java/org/ultramine/mods/bukkit/mixin/block/MixinBlockCrops.java @@ -0,0 +1,20 @@ +package org.ultramine.mods.bukkit.mixin.block; + +import net.minecraft.block.BlockBush; +import net.minecraft.block.BlockCrops; +import net.minecraft.world.World; +import org.bukkit.craftbukkit.event.CraftEventFactory; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Redirect; + +@Mixin(BlockCrops.class) +public class MixinBlockCrops extends BlockBush +{ + @Redirect(method = "updateTick", at = @At(value = "INVOKE", target = "Lnet/minecraft/world/World;setBlockMetadataWithNotify(IIIII)Z")) + public boolean setBlockMetadataWithNotifyRedirect(World world, int x, int y, int z, int data, int p_149674_5_) + { + CraftEventFactory.handleBlockGrowEvent(world, x, y, z, this, data); + return false; + } +} diff --git a/src/main/java/org/ultramine/mods/bukkit/mixin/block/MixinBlockNetherWart.java b/src/main/java/org/ultramine/mods/bukkit/mixin/block/MixinBlockNetherWart.java new file mode 100644 index 0000000..6406799 --- /dev/null +++ b/src/main/java/org/ultramine/mods/bukkit/mixin/block/MixinBlockNetherWart.java @@ -0,0 +1,20 @@ +package org.ultramine.mods.bukkit.mixin.block; + +import net.minecraft.block.BlockBush; +import net.minecraft.block.BlockNetherWart; +import net.minecraft.world.World; +import org.bukkit.craftbukkit.event.CraftEventFactory; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Redirect; + +@Mixin(BlockNetherWart.class) +public class MixinBlockNetherWart extends BlockBush +{ + @Redirect(method = "updateTick", at = @At(value = "INVOKE", target = "Lnet/minecraft/world/World;setBlockMetadataWithNotify(IIIII)Z")) + public boolean setBlockMetadataWithNotifyRedirect(World world, int x, int y, int z, int data, int p_149674_5_) + { + CraftEventFactory.handleBlockGrowEvent(world, x, y, z, this, data); + return false; + } +} diff --git a/src/main/java/org/ultramine/mods/bukkit/mixin/block/MixinBlockReed.java b/src/main/java/org/ultramine/mods/bukkit/mixin/block/MixinBlockReed.java new file mode 100644 index 0000000..1c0e740 --- /dev/null +++ b/src/main/java/org/ultramine/mods/bukkit/mixin/block/MixinBlockReed.java @@ -0,0 +1,20 @@ +package org.ultramine.mods.bukkit.mixin.block; + +import net.minecraft.block.Block; +import net.minecraft.block.BlockReed; +import net.minecraft.world.World; +import org.bukkit.craftbukkit.event.CraftEventFactory; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Redirect; + +@Mixin(BlockReed.class) +public class MixinBlockReed +{ + @Redirect(method = "updateTick", at = @At(value = "INVOKE", target = "Lnet/minecraft/world/World;setBlock(IIILnet/minecraft/block/Block;)Z")) + public boolean setBlockRedirect(World world, int x, int y, int z, Block block) + { + CraftEventFactory.handleBlockGrowEvent(world, x, y, z, block, 0); + return false; + } +} diff --git a/src/main/java/org/ultramine/mods/bukkit/mixin/block/MixinBlockStem.java b/src/main/java/org/ultramine/mods/bukkit/mixin/block/MixinBlockStem.java new file mode 100644 index 0000000..37fc40a --- /dev/null +++ b/src/main/java/org/ultramine/mods/bukkit/mixin/block/MixinBlockStem.java @@ -0,0 +1,28 @@ +package org.ultramine.mods.bukkit.mixin.block; + +import net.minecraft.block.Block; +import net.minecraft.block.BlockBush; +import net.minecraft.block.BlockStem; +import net.minecraft.world.World; +import org.bukkit.craftbukkit.event.CraftEventFactory; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Redirect; + +@Mixin(BlockStem.class) +public class MixinBlockStem extends BlockBush +{ + @Redirect(method = "updateTick", at = @At(value = "INVOKE", target = "Lnet/minecraft/world/World;setBlockMetadataWithNotify(IIIII)Z")) + public boolean setBlockMetadataWithNotifyRedirect(World world, int x, int y, int z, int data, int p_149674_5_) + { + CraftEventFactory.handleBlockGrowEvent(world, x, y, z, this, data); + return false; + } + + @Redirect(method = "updateTick", at = @At(value = "INVOKE", target = "Lnet/minecraft/world/World;setBlock(IIILnet/minecraft/block/Block;)Z")) + public boolean setBlockRedirect(World world, int x, int y, int z, Block block) + { + CraftEventFactory.handleBlockGrowEvent(world, x, y, z, block, 0); + return false; + } +} diff --git a/src/main/resources/mixin.umbukkitimpl.json b/src/main/resources/mixin.umbukkitimpl.json index 8f8718a..7bd2671 100644 --- a/src/main/resources/mixin.umbukkitimpl.json +++ b/src/main/resources/mixin.umbukkitimpl.json @@ -19,6 +19,12 @@ "block.MixinBlockMycelium", "block.MixinBlockDynamicLiquid", "block.MixinBlockDragonEgg", + "block.MixinBlockCactus", + "block.MixinBlockCocoa", + "block.MixinBlockCrops", + "block.MixinBlockNetherWart", + "block.MixinBlockReed", + "block.MixinBlockStem", "entity.MixinEntity", "entity.MixinEntityLiving", "entity.MixinEntityLivingBase",