diff --git a/src/main/java/com/cricketcraft/chisel/network/message/MessageAutoChisel.java b/src/main/java/com/cricketcraft/chisel/network/message/MessageAutoChisel.java new file mode 100644 index 00000000..d667e84d --- /dev/null +++ b/src/main/java/com/cricketcraft/chisel/network/message/MessageAutoChisel.java @@ -0,0 +1,33 @@ +package com.cricketcraft.chisel.network.message; + +import net.minecraft.tileentity.TileEntity; + +import com.cricketcraft.chisel.block.tileentity.TileEntityAutoChisel; +import com.cricketcraft.chisel.network.message.base.MessageCoords; + +import cpw.mods.fml.common.network.simpleimpl.IMessage; +import cpw.mods.fml.common.network.simpleimpl.IMessageHandler; +import cpw.mods.fml.common.network.simpleimpl.MessageContext; + +public class MessageAutoChisel extends MessageCoords { + + public MessageAutoChisel() { + } + + public MessageAutoChisel(TileEntityAutoChisel tile) { + super(tile); + } + + public static class Handler implements IMessageHandler { + + public IMessage onMessage(MessageAutoChisel message, MessageContext ctx) { + + TileEntity te = message.getTileEntity(ctx); + if (te instanceof TileEntityAutoChisel) { + ((TileEntityAutoChisel) te).doChiselAnim(); + } + return null; + } + } + +} diff --git a/src/main/java/com/cricketcraft/chisel/network/message/base/MessageCoords.java b/src/main/java/com/cricketcraft/chisel/network/message/base/MessageCoords.java new file mode 100644 index 00000000..0bf50c3f --- /dev/null +++ b/src/main/java/com/cricketcraft/chisel/network/message/base/MessageCoords.java @@ -0,0 +1,61 @@ +package com.cricketcraft.chisel.network.message.base; + +import io.netty.buffer.ByteBuf; +import net.minecraft.block.Block; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.world.World; + +import com.cricketcraft.chisel.Chisel; + +import cpw.mods.fml.common.network.simpleimpl.IMessage; +import cpw.mods.fml.common.network.simpleimpl.MessageContext; +import cpw.mods.fml.relauncher.Side; + +public abstract class MessageCoords implements IMessage { + + public int x, y, z; + + protected MessageCoords() { + ; + } + + protected MessageCoords(int x, int y, int z) { + this.x = x; + this.y = y; + this.z = z; + } + + protected MessageCoords(TileEntity te) { + this(te.xCoord, te.yCoord, te.zCoord); + } + + @Override + public void toBytes(ByteBuf buf) { + buf.writeInt(x); + buf.writeInt(y); + buf.writeInt(z); + } + + @Override + public void fromBytes(ByteBuf buf) { + this.x = buf.readInt(); + this.y = buf.readInt(); + this.z = buf.readInt(); + } + + protected Block getBlock(MessageContext ctx) { + return getWorld(ctx).getBlock(x, y, z); + } + + protected TileEntity getTileEntity(MessageContext ctx) { + return getWorld(ctx).getTileEntity(x, y, z); + } + + protected World getWorld(MessageContext ctx) { + if (ctx.side == Side.CLIENT) { + return Chisel.proxy.getClientWorld(); + } else { + return ctx.getServerHandler().playerEntity.worldObj; + } + } +}