icbm/src/main/java/icbm/zhapin/zhapin/TExplosive.java
2022-11-09 22:15:45 +01:00

87 lines
2.8 KiB
Java

package icbm.zhapin.zhapin;
import icbm.api.explosion.IExplosive;
import icbm.api.explosion.IExplosiveContainer;
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.tileentity.TileEntity;
import net.minecraft.world.IBlockAccess;
import net.minecraft.world.World;
import net.minecraftforge.common.util.ForgeDirection;
import universalelectricity.prefab.implement.IRotatable;
public class TExplosive
extends TileEntity implements IExplosiveContainer, IRotatable {
public boolean exploding;
public int explosiveId;
public TExplosive() {
this.exploding = false;
this.explosiveId = 0;
}
@Override
public boolean canUpdate() {
return false;
}
@Override
public void readFromNBT(final NBTTagCompound par1NBTTagCompound) {
super.readFromNBT(par1NBTTagCompound);
this.explosiveId = par1NBTTagCompound.getInteger("explosiveID");
}
@Override
public void writeToNBT(final NBTTagCompound par1NBTTagCompound) {
super.writeToNBT(par1NBTTagCompound);
par1NBTTagCompound.setInteger("explosiveID", this.explosiveId);
}
// TODO: WTF
// else if (ID == 2 && !this.worldObj.isRemote &&
// player.inventory.getCurrentItem().getItem() instanceof ItRemoteDetonator) {
// final ItemStack itemStack = player.inventory.getCurrentItem();
// BExplosives.yinZha(this.worldObj, this.xCoord, this.yCoord,
// this.zCoord, this.haoMa, 0);
// ICBMExplosion.itYaoKong.onProvide(ElectricityPack.getFromWatts(1500.0,
// ICBMExplosion.itYaoKong.getVoltage(itemStack)), itemStack);
// }
@Override
public void onDataPacket(NetworkManager net, S35PacketUpdateTileEntity pkt) {
NBTTagCompound nbt = pkt.func_148857_g();
this.explosiveId = nbt.getInteger("explosiveID");
}
@Override
public Packet getDescriptionPacket() {
NBTTagCompound nbt = new NBTTagCompound();
nbt.setInteger("explosiveID", this.explosiveId);
return new S35PacketUpdateTileEntity(this.xCoord, this.yCoord, this.zCoord,
this.getBlockMetadata(), nbt);
}
@Override
public ForgeDirection getDirection(final IBlockAccess world, final int x,
final int y, final int z) {
return ForgeDirection.getOrientation(this.getBlockMetadata());
}
@Override
public void setDirection(final World world, final int x, final int y,
final int z, final ForgeDirection facingDirection) {
this.worldObj.setBlockMetadataWithNotify(
this.xCoord, this.yCoord, this.zCoord, facingDirection.ordinal(), 2);
}
@Override
public IExplosive getExplosiveType() {
return ZhaPin.list[this.explosiveId];
}
}