diff options
author | Tahg <tahgtahv@gmail.com> | 2011-03-07 13:52:25 -0500 |
---|---|---|
committer | Tahg <tahgtahv@gmail.com> | 2011-03-10 13:06:59 -0500 |
commit | 9428907e624aefaaaafa1e2d8704553f18d4c1e8 (patch) | |
tree | 803535e47f31e9230282cb3bc445c7aa80464fe3 /src/main/java/net/minecraft/server/BlockSign.java | |
parent | 39acc5817ef7433062172c541964c814cfdb76f2 (diff) | |
download | craftbukkit-9428907e624aefaaaafa1e2d8704553f18d4c1e8.tar craftbukkit-9428907e624aefaaaafa1e2d8704553f18d4c1e8.tar.gz craftbukkit-9428907e624aefaaaafa1e2d8704553f18d4c1e8.tar.lz craftbukkit-9428907e624aefaaaafa1e2d8704553f18d4c1e8.tar.xz craftbukkit-9428907e624aefaaaafa1e2d8704553f18d4c1e8.zip |
Add redstone events to common blocks
Diffstat (limited to 'src/main/java/net/minecraft/server/BlockSign.java')
-rw-r--r-- | src/main/java/net/minecraft/server/BlockSign.java | 119 |
1 files changed, 119 insertions, 0 deletions
diff --git a/src/main/java/net/minecraft/server/BlockSign.java b/src/main/java/net/minecraft/server/BlockSign.java new file mode 100644 index 00000000..48747867 --- /dev/null +++ b/src/main/java/net/minecraft/server/BlockSign.java @@ -0,0 +1,119 @@ +package net.minecraft.server; + +import java.util.Random; +import org.bukkit.craftbukkit.CraftServer; +import org.bukkit.craftbukkit.CraftWorld; +import org.bukkit.block.Block; +import org.bukkit.event.block.BlockRedstoneEvent; + +public class BlockSign extends BlockContainer { + + private Class a; + private boolean b; + + protected BlockSign(int i, Class oclass, boolean flag) { + super(i, Material.WOOD); + this.b = flag; + this.textureId = 4; + this.a = oclass; + float f = 0.25F; + float f1 = 1.0F; + + this.a(0.5F - f, 0.0F, 0.5F - f, 0.5F + f, f1, 0.5F + f); + } + + public AxisAlignedBB d(World world, int i, int j, int k) { + return null; + } + + public void a(IBlockAccess iblockaccess, int i, int j, int k) { + if (!this.b) { + int l = iblockaccess.getData(i, j, k); + float f = 0.28125F; + float f1 = 0.78125F; + float f2 = 0.0F; + float f3 = 1.0F; + float f4 = 0.125F; + + this.a(0.0F, 0.0F, 0.0F, 1.0F, 1.0F, 1.0F); + if (l == 2) { + this.a(f2, f, 1.0F - f4, f3, f1, 1.0F); + } + + if (l == 3) { + this.a(f2, f, 0.0F, f3, f1, f4); + } + + if (l == 4) { + this.a(1.0F - f4, f, f2, 1.0F, f1, f3); + } + + if (l == 5) { + this.a(0.0F, f, f2, f4, f1, f3); + } + } + } + + public boolean a() { + return false; + } + + protected TileEntity a_() { + try { + return (TileEntity) this.a.newInstance(); + } catch (Exception exception) { + throw new RuntimeException(exception); + } + } + + public int a(int i, Random random) { + return Item.SIGN.id; + } + + public void a(World world, int i, int j, int k, int l) { + boolean flag = false; + + if (this.b) { + if (!world.getMaterial(i, j - 1, k).isBuildable()) { + flag = true; + } + } else { + int i1 = world.getData(i, j, k); + + flag = true; + if (i1 == 2 && world.getMaterial(i, j, k + 1).isBuildable()) { + flag = false; + } + + if (i1 == 3 && world.getMaterial(i, j, k - 1).isBuildable()) { + flag = false; + } + + if (i1 == 4 && world.getMaterial(i + 1, j, k).isBuildable()) { + flag = false; + } + + if (i1 == 5 && world.getMaterial(i - 1, j, k).isBuildable()) { + flag = false; + } + } + + if (flag) { + this.b_(world, i, j, k, world.getData(i, j, k)); + world.e(i, j, k, 0); + } + + super.a(world, i, j, k, l); + + //Craftbukkit start + if(net.minecraft.server.Block.byId[l].c()) { + CraftWorld craftWorld = ((WorldServer) world).getWorld(); + CraftServer server = ((WorldServer) world).getServer(); + Block block = craftWorld.getBlockAt(i, j, k); + int power = block.getBlockPower(); + BlockRedstoneEvent eventRedstone = new BlockRedstoneEvent(block, power, power); + server.getPluginManager().callEvent(eventRedstone); + } + //Craftbukkit end + } +} |