mirror of
https://github.com/PaperMC/Paper.git
synced 2024-12-02 13:07:06 +01:00
Add BlockRedstoneEvent to Redstone Lamps, Addresses BUKKIT-1431
This commit is contained in:
parent
ed8cf5196e
commit
a963880bd8
2 changed files with 26 additions and 0 deletions
|
@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -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;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue