mirror of
https://github.com/PaperMC/Paper.git
synced 2024-12-12 04:06:52 +01:00
6e71f41536
Upstream has released updates that appear to apply and compile correctly. This update has not been tested by PaperMC and as with ANY update, please do your own testing CraftBukkit Changes: 65247583f SPIGOT-7857: Improve ItemMeta block data deserialization 05d80500d SPIGOT-7857: Fix spurious internal NBT tag when deserializing BlockStateMeta cebb58e9a SPIGOT-7804: Fix written book serialization efcdd5d38 SPIGOT-7794: Cancelling InventoryItemMoveEvent destroys items b568ba572 SPIGOT-7789: Fix NPE in CraftMetaFirework applyToItem f057cf449 Remove outdated build delay Spigot Changes: f6a48054 SPIGOT-7835: Fix issue with custom hopper settings bb63b137 Rebuild patches e1142b4d Rebuild patches
55 lines
3.6 KiB
Diff
55 lines
3.6 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: Kieran Wallbanks <kieran.wallbanks@gmail.com>
|
|
Date: Mon, 21 Jun 2021 14:23:50 +0100
|
|
Subject: [PATCH] Fix NotePlayEvent
|
|
|
|
== AT ==
|
|
public org.bukkit.craftbukkit.block.data.CraftBlockData toNMS(Ljava/lang/Enum;Ljava/lang/Class;)Ljava/lang/Enum;
|
|
|
|
diff --git a/src/main/java/net/minecraft/world/level/block/NoteBlock.java b/src/main/java/net/minecraft/world/level/block/NoteBlock.java
|
|
index 6215f096849f48843d6e25875b8b71f6827ec0a5..f77d51d10e01fc4eaf5516c05c8be0ef7a425893 100644
|
|
--- a/src/main/java/net/minecraft/world/level/block/NoteBlock.java
|
|
+++ b/src/main/java/net/minecraft/world/level/block/NoteBlock.java
|
|
@@ -94,11 +94,12 @@ public class NoteBlock extends Block {
|
|
private void playNote(@Nullable Entity entity, BlockState state, Level world, BlockPos pos) {
|
|
if (((NoteBlockInstrument) state.getValue(NoteBlock.INSTRUMENT)).worksAboveNoteBlock() || world.getBlockState(pos.above()).isAir()) {
|
|
// CraftBukkit start
|
|
- 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()) {
|
|
- return;
|
|
- }
|
|
+ // 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()) {
|
|
+ // return;
|
|
+ // }
|
|
// 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.gameEvent(entity, (Holder) GameEvent.NOTE_BLOCK_PLAY, pos);
|
|
}
|
|
@@ -138,10 +139,14 @@ public class NoteBlock extends Block {
|
|
@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);
|
|
@@ -160,7 +165,7 @@ public class NoteBlock extends Block {
|
|
|
|
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());
|