107 lines
3.6 KiB
Java
107 lines
3.6 KiB
Java
package universalelectricity.prefab.multiblock;
|
|
|
|
import com.google.common.io.ByteArrayDataInput;
|
|
import net.minecraft.entity.player.EntityPlayer;
|
|
import net.minecraft.nbt.NBTTagCompound;
|
|
import net.minecraft.network.NetworkManager;
|
|
import net.minecraft.network.Packet;
|
|
import net.minecraft.network.play.server.S35PacketUpdateTileEntity;
|
|
import net.minecraft.network.play.server.S3FPacketCustomPayload;
|
|
import net.minecraft.tileentity.TileEntity;
|
|
import net.minecraft.world.World;
|
|
import universalelectricity.core.vector.Vector3;
|
|
import universalelectricity.prefab.multiblock.BlockMulti;
|
|
import universalelectricity.prefab.multiblock.IMultiBlock;
|
|
|
|
public class TileEntityMulti extends TileEntity {
|
|
|
|
public Vector3 mainBlockPosition;
|
|
public String channel;
|
|
|
|
|
|
public TileEntityMulti() {}
|
|
|
|
public TileEntityMulti(String channel) {
|
|
this.channel = channel;
|
|
}
|
|
|
|
public void setMainBlock(Vector3 mainBlock) {
|
|
this.mainBlockPosition = mainBlock;
|
|
if(!this.worldObj.isRemote) {
|
|
this.worldObj.markBlockForUpdate(this.xCoord, this.yCoord, this.zCoord);
|
|
}
|
|
|
|
}
|
|
|
|
/*@Override
|
|
public Packet getDescriptionPacket() {
|
|
if(this.mainBlockPosition == null) {
|
|
return null;
|
|
} else {
|
|
if(this.channel == null || this.channel == "" && this.getBlockType() instanceof BlockMulti) {
|
|
this.channel = ((BlockMulti)this.getBlockType()).channel;
|
|
}
|
|
|
|
return PacketManager.getPacket(this.channel, this, new Object[]{Integer.valueOf(this.mainBlockPosition.intX()), Integer.valueOf(this.mainBlockPosition.intY()), Integer.valueOf(this.mainBlockPosition.intZ())});
|
|
}
|
|
}*/
|
|
|
|
public void onBlockRemoval() {
|
|
if(this.mainBlockPosition != null) {
|
|
TileEntity tileEntity = this.worldObj.getTileEntity(this.mainBlockPosition.intX(), this.mainBlockPosition.intY(), this.mainBlockPosition.intZ());
|
|
if(tileEntity != null && tileEntity instanceof IMultiBlock) {
|
|
IMultiBlock mainBlock = (IMultiBlock)tileEntity;
|
|
if(mainBlock != null) {
|
|
mainBlock.onDestroy(this);
|
|
}
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
public boolean onBlockActivated(World par1World, int x, int y, int z, EntityPlayer par5EntityPlayer) {
|
|
if(this.mainBlockPosition != null) {
|
|
TileEntity tileEntity = this.worldObj.getTileEntity(this.mainBlockPosition.intX(), this.mainBlockPosition.intY(), this.mainBlockPosition.intZ());
|
|
if(tileEntity != null && tileEntity instanceof IMultiBlock) {
|
|
return ((IMultiBlock)tileEntity).onActivated(par5EntityPlayer);
|
|
}
|
|
}
|
|
|
|
return false;
|
|
}
|
|
|
|
@Override
|
|
public void readFromNBT(NBTTagCompound nbt) {
|
|
super.readFromNBT(nbt);
|
|
this.mainBlockPosition = Vector3.readFromNBT(nbt.getCompoundTag("mainBlockPosition"));
|
|
}
|
|
|
|
@Override
|
|
public void writeToNBT(NBTTagCompound nbt) {
|
|
super.writeToNBT(nbt);
|
|
if(this.mainBlockPosition != null) {
|
|
nbt.setTag("mainBlockPosition", this.mainBlockPosition.writeToNBT(new NBTTagCompound()));
|
|
}
|
|
|
|
}
|
|
|
|
public boolean canUpdate() {
|
|
return false;
|
|
}
|
|
|
|
/*@Override
|
|
public void handlePacketData(NetworkManager network, int packetType, S3FPacketCustomPayload packet, EntityPlayer player, ByteArrayDataInput dataStream) {
|
|
try {
|
|
this.mainBlockPosition = new Vector3((double)dataStream.readInt(), (double)dataStream.readInt(), (double)dataStream.readInt());
|
|
} catch (Exception var7) {
|
|
var7.printStackTrace();
|
|
}
|
|
}*/
|
|
|
|
@Override
|
|
public void onDataPacket(NetworkManager net, S35PacketUpdateTileEntity pkt) {
|
|
|
|
}
|
|
|
|
}
|