mirror of
https://github.com/PaperMC/Paper.git
synced 2025-01-01 05:47:45 +01:00
Fix NotePlayEvent
== AT == public org.bukkit.craftbukkit.block.data.CraftBlockData toNMS(Ljava/lang/Enum;Ljava/lang/Class;)Ljava/lang/Enum;
This commit is contained in:
parent
a17ed327b3
commit
e764b2b7f4
@ -8,16 +8,42 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
world.setBlock(pos, (BlockState) state.setValue(NoteBlock.POWERED, flag1), 3);
|
world.setBlock(pos, (BlockState) state.setValue(NoteBlock.POWERED, flag1), 3);
|
||||||
@@ -94,6 +95,12 @@
|
@@ -94,6 +95,13 @@
|
||||||
|
|
||||||
private void playNote(@Nullable Entity entity, BlockState state, Level world, BlockPos pos) {
|
private void playNote(@Nullable Entity entity, BlockState state, Level world, BlockPos pos) {
|
||||||
if (((NoteBlockInstrument) state.getValue(NoteBlock.INSTRUMENT)).worksAboveNoteBlock() || world.getBlockState(pos.above()).isAir()) {
|
if (((NoteBlockInstrument) state.getValue(NoteBlock.INSTRUMENT)).worksAboveNoteBlock() || world.getBlockState(pos.above()).isAir()) {
|
||||||
+ // CraftBukkit start
|
+ // CraftBukkit start
|
||||||
+ org.bukkit.event.block.NotePlayEvent event = org.bukkit.craftbukkit.event.CraftEventFactory.callNotePlayEvent(world, pos, state.getValue(NoteBlock.INSTRUMENT), state.getValue(NoteBlock.NOTE));
|
+ // org.bukkit.event.block.NotePlayEvent event = org.bukkit.craftbukkit.event.CraftEventFactory.callNotePlayEvent(world, pos, state.getValue(NoteBlock.INSTRUMENT), state.getValue(NoteBlock.NOTE));
|
||||||
+ if (event.isCancelled()) {
|
+ // if (event.isCancelled()) {
|
||||||
+ return;
|
+ // return;
|
||||||
+ }
|
+ // }
|
||||||
+ // CraftBukkit end
|
+ // CraftBukkit end
|
||||||
|
+ // Paper - move NotePlayEvent call to fix instrument/note changes; TODO any way to cancel the game event?
|
||||||
world.blockEvent(pos, this, 0, 0);
|
world.blockEvent(pos, this, 0, 0);
|
||||||
world.gameEvent(entity, (Holder) GameEvent.NOTE_BLOCK_PLAY, pos);
|
world.gameEvent(entity, (Holder) GameEvent.NOTE_BLOCK_PLAY, pos);
|
||||||
}
|
}
|
||||||
|
@@ -132,10 +140,14 @@
|
||||||
|
@Override
|
||||||
|
protected boolean triggerEvent(BlockState state, Level world, BlockPos pos, int type, int data) {
|
||||||
|
NoteBlockInstrument blockpropertyinstrument = (NoteBlockInstrument) state.getValue(NoteBlock.INSTRUMENT);
|
||||||
|
+ // Paper start - move NotePlayEvent call to fix instrument/note changes
|
||||||
|
+ org.bukkit.event.block.NotePlayEvent event = org.bukkit.craftbukkit.event.CraftEventFactory.callNotePlayEvent(world, pos, blockpropertyinstrument, state.getValue(NOTE));
|
||||||
|
+ if (event.isCancelled()) return false;
|
||||||
|
+ // Paper end - move NotePlayEvent call to fix instrument/note changes
|
||||||
|
float f;
|
||||||
|
|
||||||
|
if (blockpropertyinstrument.isTunable()) {
|
||||||
|
- int k = (Integer) state.getValue(NoteBlock.NOTE);
|
||||||
|
+ int k = event.getNote().getId(); // Paper - move NotePlayEvent call to fix instrument/note changes
|
||||||
|
|
||||||
|
f = NoteBlock.getPitchFromNote(k);
|
||||||
|
world.addParticle(ParticleTypes.NOTE, (double) pos.getX() + 0.5D, (double) pos.getY() + 1.2D, (double) pos.getZ() + 0.5D, (double) k / 24.0D, 0.0D, 0.0D);
|
||||||
|
@@ -154,7 +166,7 @@
|
||||||
|
|
||||||
|
holder = Holder.direct(SoundEvent.createVariableRangeEvent(minecraftkey));
|
||||||
|
} else {
|
||||||
|
- holder = blockpropertyinstrument.getSoundEvent();
|
||||||
|
+ holder = org.bukkit.craftbukkit.block.data.CraftBlockData.toNMS(event.getInstrument(), NoteBlockInstrument.class).getSoundEvent(); // Paper - move NotePlayEvent call to fix instrument/note changes
|
||||||
|
}
|
||||||
|
|
||||||
|
world.playSeededSound((Player) null, (double) pos.getX() + 0.5D, (double) pos.getY() + 0.5D, (double) pos.getZ() + 0.5D, holder, SoundSource.RECORDS, 3.0F, f, world.random.nextLong());
|
||||||
|
Loading…
Reference in New Issue
Block a user