Add BlockRedstoneEvent to Redstone Lamps, Addresses BUKKIT-1431

This commit is contained in:
feildmaster 2012-04-02 09:01:48 -05:00
parent ed8cf5196e
commit a963880bd8
2 changed files with 26 additions and 0 deletions

View File

@ -2,6 +2,11 @@ package net.minecraft.server;
import java.util.Random; import java.util.Random;
// CraftBukkit start
import org.bukkit.craftbukkit.event.CraftEventFactory;
import org.bukkit.event.block.BlockRedstoneEvent;
// CraftBukkit end
public class BlockRedstoneLamp extends Block { public class BlockRedstoneLamp extends Block {
private final boolean a; private final boolean a;
@ -20,6 +25,11 @@ public class BlockRedstoneLamp extends Block {
if (this.a && !world.isBlockIndirectlyPowered(i, j, k)) { if (this.a && !world.isBlockIndirectlyPowered(i, j, k)) {
world.c(i, j, k, this.id, 4); world.c(i, j, k, this.id, 4);
} else if (!this.a && world.isBlockIndirectlyPowered(i, j, k)) { } else if (!this.a && world.isBlockIndirectlyPowered(i, j, k)) {
// CraftBukkit start
if (CraftEventFactory.callRedstoneChange(world, i, j, k, 0, 15).getNewCurrent() != 15) {
return;
}
// CraftBukkit end
world.setTypeId(i, j, k, Block.REDSTONE_LAMP_ON.id); world.setTypeId(i, j, k, Block.REDSTONE_LAMP_ON.id);
} }
} }
@ -30,6 +40,11 @@ public class BlockRedstoneLamp extends Block {
if (this.a && !world.isBlockIndirectlyPowered(i, j, k)) { if (this.a && !world.isBlockIndirectlyPowered(i, j, k)) {
world.c(i, j, k, this.id, 4); world.c(i, j, k, this.id, 4);
} else if (!this.a && world.isBlockIndirectlyPowered(i, j, k)) { } else if (!this.a && world.isBlockIndirectlyPowered(i, j, k)) {
// CraftBukkit start
if (CraftEventFactory.callRedstoneChange(world, i, j, k, 0, 15).getNewCurrent() != 15) {
return;
}
// CraftBukkit end
world.setTypeId(i, j, k, Block.REDSTONE_LAMP_ON.id); world.setTypeId(i, j, k, Block.REDSTONE_LAMP_ON.id);
} }
} }
@ -37,6 +52,11 @@ public class BlockRedstoneLamp extends Block {
public void a(World world, int i, int j, int k, Random random) { public void a(World world, int i, int j, int k, Random random) {
if (!world.isStatic && this.a && !world.isBlockIndirectlyPowered(i, j, k)) { if (!world.isStatic && this.a && !world.isBlockIndirectlyPowered(i, j, k)) {
// CraftBukkit start
if (CraftEventFactory.callRedstoneChange(world, i, j, k, 15, 0).getNewCurrent() != 0) {
return;
}
// CraftBukkit end
world.setTypeId(i, j, k, Block.REDSTONE_LAMP_OFF.id); world.setTypeId(i, j, k, Block.REDSTONE_LAMP_OFF.id);
} }
} }

View File

@ -510,4 +510,10 @@ public class CraftEventFactory {
Bukkit.getPluginManager().callEvent(event); Bukkit.getPluginManager().callEvent(event);
return event; return event;
} }
public static BlockRedstoneEvent callRedstoneChange(World world, int x, int y, int z, int oldCurrent, int newCurrent) {
BlockRedstoneEvent event = new BlockRedstoneEvent(world.getWorld().getBlockAt(x, y, z), oldCurrent, newCurrent);
world.getServer().getPluginManager().callEvent(event);
return event;
}
} }