thaumic-machinery/src/main/java/net/anvilcraft/thaummach/tiles/TileConduitValve.java

102 lines
3.4 KiB
Java

package net.anvilcraft.thaummach.tiles;
import dev.tilera.auracore.api.HelperLocation;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.network.NetworkManager;
import net.minecraft.network.Packet;
import net.minecraft.network.play.server.S35PacketUpdateTileEntity;
public class TileConduitValve extends TileConduit {
public boolean open = false;
private boolean prevPower;
@Override
public void updateEntity() {
if (!super.worldObj.isRemote) {
this.calculateSuction();
if (!this.open) {
this.setSuction(0);
}
if (this.getSuction((HelperLocation) null) > 0) {
this.equalizeWithNeighbours();
}
if (super.prevPure != super.pureVis || super.prevTaint != super.taintedVis) {
super.worldObj.markBlockForUpdate(
super.xCoord, super.yCoord, super.zCoord
);
super.prevPure = super.pureVis;
super.prevTaint = super.taintedVis;
}
if (this.gettingPower()) {
this.prevPower = true;
this.open = false;
this.worldObj.markBlockForUpdate(this.xCoord, this.yCoord, this.zCoord);
super.worldObj.notifyBlocksOfNeighborChange(
super.xCoord, super.yCoord, super.zCoord, this.getBlockType()
);
}
if (!this.gettingPower() && this.prevPower) {
this.open = true;
this.prevPower = false;
this.worldObj.markBlockForUpdate(this.xCoord, this.yCoord, this.zCoord);
super.worldObj.notifyBlocksOfNeighborChange(
super.xCoord, super.yCoord, super.zCoord, this.getBlockType()
);
}
}
}
protected boolean gettingPower() {
return super.worldObj.isBlockIndirectlyGettingPowered(
super.xCoord, super.yCoord, super.zCoord
)
|| super.worldObj.isBlockIndirectlyGettingPowered(
super.xCoord, super.yCoord + 1, super.zCoord
);
}
@Override
public void readFromNBT(NBTTagCompound nbttagcompound) {
super.readFromNBT(nbttagcompound);
this.open = nbttagcompound.getBoolean("open");
}
@Override
public void writeToNBT(NBTTagCompound nbttagcompound) {
super.writeToNBT(nbttagcompound);
nbttagcompound.setBoolean("open", this.open);
}
@Override
public Packet getDescriptionPacket() {
NBTTagCompound nbt = new NBTTagCompound();
nbt.setBoolean("open", this.open);
nbt.setFloat("pureVis", this.pureVis);
nbt.setFloat("taintedVis", this.taintedVis);
return new S35PacketUpdateTileEntity(
this.xCoord, this.yCoord, this.zCoord, this.getBlockMetadata(), nbt
);
}
@Override
public void onDataPacket(NetworkManager net, S35PacketUpdateTileEntity pkt) {
NBTTagCompound nbt = pkt.func_148857_g();
this.open = nbt.getBoolean("open");
this.pureVis = nbt.getFloat("pureVis");
this.taintedVis = nbt.getFloat("taintedVis");
System.out.println(this.pureVis + this.taintedVis);
this.worldObj.markBlockRangeForRenderUpdate(
this.xCoord, this.yCoord, this.zCoord, this.xCoord, this.yCoord, this.zCoord
);
}
}