summaryrefslogtreecommitdiffstats
path: root/src/main/java/net/minecraft/server/BlockDoor.java
diff options
context:
space:
mode:
authorEvilSeph <evilseph@unaligned.org>2011-06-27 23:10:32 -0400
committerEvilSeph <evilseph@unaligned.org>2011-06-30 13:11:47 -0400
commitf518ced9adc7f2423e8bef4f3f2956709b934044 (patch)
tree0f55f04bc7dfca1bf58d4d04888ac3f8041c00f3 /src/main/java/net/minecraft/server/BlockDoor.java
parent61a7a0633c9a4229288031f915867afac3df6422 (diff)
downloadcraftbukkit-f518ced9adc7f2423e8bef4f3f2956709b934044.tar
craftbukkit-f518ced9adc7f2423e8bef4f3f2956709b934044.tar.gz
craftbukkit-f518ced9adc7f2423e8bef4f3f2956709b934044.tar.lz
craftbukkit-f518ced9adc7f2423e8bef4f3f2956709b934044.tar.xz
craftbukkit-f518ced9adc7f2423e8bef4f3f2956709b934044.zip
Fixed BlockRedstone event firing too many times under certain circumstances.
Diffstat (limited to 'src/main/java/net/minecraft/server/BlockDoor.java')
-rw-r--r--src/main/java/net/minecraft/server/BlockDoor.java13
1 files changed, 6 insertions, 7 deletions
diff --git a/src/main/java/net/minecraft/server/BlockDoor.java b/src/main/java/net/minecraft/server/BlockDoor.java
index 9cb066bb..60973530 100644
--- a/src/main/java/net/minecraft/server/BlockDoor.java
+++ b/src/main/java/net/minecraft/server/BlockDoor.java
@@ -163,8 +163,6 @@ public class BlockDoor extends Block {
this.g(world, i, j, k, i1);
}
} else if (l > 0 && Block.byId[l].isPowerSource()) {
- boolean flag1 = world.isBlockIndirectlyPowered(i, j, k) || world.isBlockIndirectlyPowered(i, j + 1, k);
-
// CraftBukkit start
org.bukkit.World bworld = world.getWorld();
org.bukkit.block.Block block = bworld.getBlockAt(i, j, k);
@@ -173,14 +171,15 @@ public class BlockDoor extends Block {
int power = block.getBlockPower();
int powerTop = blockTop.getBlockPower();
if (powerTop > power) power = powerTop;
+ int oldPower = (world.getData(i, j, k) & 4) > 0 ? 15 : 0;
- BlockRedstoneEvent eventRedstone = new BlockRedstoneEvent(block, (world.getData(i, j, k) & 4) > 0 ? 15 : 0, power);
- world.getServer().getPluginManager().callEvent(eventRedstone);
+ if (oldPower == 0 ^ power == 0) {
+ BlockRedstoneEvent eventRedstone = new BlockRedstoneEvent(block, oldPower, power);
+ world.getServer().getPluginManager().callEvent(eventRedstone);
- flag1 = eventRedstone.getNewCurrent() > 0;
+ this.setDoor(world, i, j, k, eventRedstone.getNewCurrent() > 0);
+ }
// CraftBukkit end
-
- this.setDoor(world, i, j, k, flag1);
}
}
}