package openmods.events.network; import java.io.DataInput; import java.io.DataOutput; import java.io.IOException; import java.util.List; import net.minecraft.tileentity.TileEntity; import net.minecraft.world.World; import openmods.network.DimCoord; import openmods.network.event.NetworkEvent; import openmods.network.event.NetworkEventManager; import openmods.utils.WorldUtils; public abstract class BlockEventPacket extends NetworkEvent { public int dimension; public int xCoord; public int yCoord; public int zCoord; public BlockEventPacket() {} public BlockEventPacket(int dimension, int xCoord, int yCoord, int zCoord) { this.dimension = dimension; this.xCoord = xCoord; this.yCoord = yCoord; this.zCoord = zCoord; } public BlockEventPacket(TileEntity tile) { this(tile.getWorldObj().provider.dimensionId, tile.xCoord, tile.yCoord, tile.zCoord); } @Override protected void readFromStream(DataInput input) throws IOException { dimension = input.readInt(); xCoord = input.readInt(); yCoord = input.readInt(); zCoord = input.readInt(); } @Override protected void writeToStream(DataOutput output) throws IOException { output.writeInt(dimension); output.writeInt(xCoord); output.writeInt(yCoord); output.writeInt(zCoord); } @Override protected void appendLogInfo(List<String> info) { info.add(String.format("%d -> %d,%d,%d", dimension, xCoord, yCoord, zCoord)); } public void sendToWatchers() { NetworkEventManager.INSTANCE.dispatcher().senders.block.sendMessage(this, getDimCoords()); } public DimCoord getDimCoords() { return new DimCoord(dimension, xCoord, yCoord, zCoord); } public World getWorld() { return WorldUtils.getWorld(dimension); } }