Add BlockRedstoneEvent to Redstone Lamps, Addresses BUKKIT-1431
Dieser Commit ist enthalten in:
Ursprung
ed8cf5196e
Commit
a963880bd8
@ -2,6 +2,11 @@ package net.minecraft.server;
|
||||
|
||||
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 {
|
||||
|
||||
private final boolean a;
|
||||
@ -20,6 +25,11 @@ public class BlockRedstoneLamp extends Block {
|
||||
if (this.a && !world.isBlockIndirectlyPowered(i, j, k)) {
|
||||
world.c(i, j, k, this.id, 4);
|
||||
} 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);
|
||||
}
|
||||
}
|
||||
@ -30,6 +40,11 @@ public class BlockRedstoneLamp extends Block {
|
||||
if (this.a && !world.isBlockIndirectlyPowered(i, j, k)) {
|
||||
world.c(i, j, k, this.id, 4);
|
||||
} 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);
|
||||
}
|
||||
}
|
||||
@ -37,6 +52,11 @@ public class BlockRedstoneLamp extends Block {
|
||||
|
||||
public void a(World world, int i, int j, int k, Random random) {
|
||||
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);
|
||||
}
|
||||
}
|
||||
|
@ -510,4 +510,10 @@ public class CraftEventFactory {
|
||||
Bukkit.getPluginManager().callEvent(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;
|
||||
}
|
||||
}
|
||||
|
In neuem Issue referenzieren
Einen Benutzer sperren