From 5ede9ce5f749c16816b74d7286c0a62cb111e937 Mon Sep 17 00:00:00 2001 From: "gjmcferrin@gmail.com" Date: Fri, 29 Mar 2013 17:04:29 -0400 Subject: [PATCH] Add missing calls to BlockRedstoneEvent. Adds BUKKIT-3926 This adds calls to BlockRedstoneEvent for the new daylight sensor and trapped chest blocks. Note that the redstone level for trapped chests cannot be modified, as it is based on the number of players currently viewing the chest's inventory. --- .../server/BlockDaylightDetector.java | 1 + .../net/minecraft/server/TileEntityChest.java | 26 +++++++++++++++++++ 2 files changed, 27 insertions(+) diff --git a/src/main/java/net/minecraft/server/BlockDaylightDetector.java b/src/main/java/net/minecraft/server/BlockDaylightDetector.java index 84e93f4153..fc31262eba 100644 --- a/src/main/java/net/minecraft/server/BlockDaylightDetector.java +++ b/src/main/java/net/minecraft/server/BlockDaylightDetector.java @@ -48,6 +48,7 @@ public class BlockDaylightDetector extends BlockContainer { } if (l != i1) { + i1 = org.bukkit.craftbukkit.event.CraftEventFactory.callRedstoneChange(world, i, j, k, l, i1).getNewCurrent(); // CraftBukkit - Call BlockRedstoneEvent world.setData(i, j, k, i1, 3); } } diff --git a/src/main/java/net/minecraft/server/TileEntityChest.java b/src/main/java/net/minecraft/server/TileEntityChest.java index b179ddf2af..e529bf47f4 100644 --- a/src/main/java/net/minecraft/server/TileEntityChest.java +++ b/src/main/java/net/minecraft/server/TileEntityChest.java @@ -339,18 +339,44 @@ public class TileEntityChest extends TileEntity implements IInventory { this.h = 0; } + int oldPower = Math.max(0, Math.min(15, this.h)); // CraftBukkit - Get power before new viewer is added + ++this.h; if (this.world == null) return; // CraftBukkit this.world.playNote(this.x, this.y, this.z, this.q().id, 1, this.h); + + // CraftBukkit start - Call redstone event + if (this.q().id == Block.TRAPPED_CHEST.id) { + int newPower = Math.max(0, Math.min(15, this.h)); + + if (oldPower != newPower) { + org.bukkit.craftbukkit.event.CraftEventFactory.callRedstoneChange(world, this.x, this.y, this.z, oldPower, newPower); + } + } + // CraftBukkit end + this.world.applyPhysics(this.x, this.y, this.z, this.q().id); this.world.applyPhysics(this.x, this.y - 1, this.z, this.q().id); } public void g() { if (this.q() != null && this.q() instanceof BlockChest) { + int oldPower = Math.max(0, Math.min(15, this.h)); // CraftBukkit - Get power before new viewer is added + --this.h; if (this.world == null) return; // CraftBukkit this.world.playNote(this.x, this.y, this.z, this.q().id, 1, this.h); + + // CraftBukkit start - Call redstone event + if (this.q().id == Block.TRAPPED_CHEST.id) { + int newPower = Math.max(0, Math.min(15, this.h)); + + if (oldPower != newPower) { + org.bukkit.craftbukkit.event.CraftEventFactory.callRedstoneChange(world, this.x, this.y, this.z, oldPower, newPower); + } + } + // CraftBukkit end + this.world.applyPhysics(this.x, this.y, this.z, this.q().id); this.world.applyPhysics(this.x, this.y - 1, this.z, this.q().id); }