diff --git a/src/main/java/org/ultramine/mods/bukkit/EventImplProgress.java b/src/main/java/org/ultramine/mods/bukkit/EventImplProgress.java index ef8efe5..f2d0198 100644 --- a/src/main/java/org/ultramine/mods/bukkit/EventImplProgress.java +++ b/src/main/java/org/ultramine/mods/bukkit/EventImplProgress.java @@ -75,7 +75,7 @@ reg(false, org.bukkit.event.block.BlockSpreadEvent.class); reg(false, org.bukkit.event.block.EntityBlockFormEvent.class); reg(true, org.bukkit.event.block.LeavesDecayEvent.class); - reg(false, org.bukkit.event.block.NotePlayEvent.class); + reg(true, org.bukkit.event.block.NotePlayEvent.class); reg(true, org.bukkit.event.block.SignChangeEvent.class); reg(false, org.bukkit.event.enchantment.EnchantItemEvent.class); reg(false, org.bukkit.event.enchantment.PrepareItemEnchantEvent.class); diff --git a/src/main/java/org/ultramine/mods/bukkit/mixin/tileentity/MixinTileEntityNote.java b/src/main/java/org/ultramine/mods/bukkit/mixin/tileentity/MixinTileEntityNote.java new file mode 100644 index 0000000..78059e8 --- /dev/null +++ b/src/main/java/org/ultramine/mods/bukkit/mixin/tileentity/MixinTileEntityNote.java @@ -0,0 +1,25 @@ +package org.ultramine.mods.bukkit.mixin.tileentity; + +import net.minecraft.block.Block; +import net.minecraft.tileentity.TileEntityNote; +import net.minecraft.world.World; +import org.bukkit.craftbukkit.event.CraftEventFactory; +import org.bukkit.event.block.NotePlayEvent; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Redirect; + +@Mixin(TileEntityNote.class) +public class MixinTileEntityNote +{ + /** + * @author AtomicInteger + */ + @Redirect(method = "triggerNote", at = @At(value = "INVOKE", target = "Lnet/minecraft/world/World;addBlockEvent(IIILnet/minecraft/block/Block;II)V")) + public void addBlockEventRedirect(World world, int x, int y, int z, Block block, int instrument, int note) + { + NotePlayEvent event = CraftEventFactory.callNotePlayEvent(world, x, y, z, (byte) instrument, (byte) note); + if (!event.isCancelled()) + world.addBlockEvent(x, y, z, block, event.getInstrument().getType(), event.getNote().getId()); + } +} \ No newline at end of file diff --git a/src/main/resources/mixin.umbukkitimpl.json b/src/main/resources/mixin.umbukkitimpl.json index a7a210f..4fd38ca 100644 --- a/src/main/resources/mixin.umbukkitimpl.json +++ b/src/main/resources/mixin.umbukkitimpl.json @@ -48,6 +48,7 @@ "network.MixinC08PacketPlayerBlockPlacement", "tileentity.MixinTileEntityBrewingStand", "tileentity.MixinTileEntitySkull", + "tileentity.MixinTileEntityNote", "world.MixinChunk", "world.MixinWorld", "world.MixinWorldServer",