package zmaster587.advancedRocketry.tile; import io.netty.buffer.ByteBuf; import java.util.LinkedList; import java.util.List; import cpw.mods.fml.relauncher.Side; import zmaster587.advancedRocketry.inventory.TextureResources; import zmaster587.libVulpes.inventory.modules.IModularInventory; import zmaster587.libVulpes.inventory.modules.IToggleButton; import zmaster587.libVulpes.inventory.modules.ModuleBase; import zmaster587.libVulpes.inventory.modules.ModuleToggleSwitch; import zmaster587.libVulpes.network.PacketHandler; import zmaster587.libVulpes.network.PacketMachine; import zmaster587.libVulpes.util.INetworkMachine; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; public class TileDrill extends TileEntity implements IModularInventory, IToggleButton, INetworkMachine { private float distanceExtended; private boolean extended; private ModuleToggleSwitch toggleSwitch; public TileDrill() { distanceExtended = 0; } public float getDistanceExtended() { return distanceExtended; } public void setDistanceExtended(float distance) { this.distanceExtended = distance; } @Override public boolean canUpdate() { return false;//super.canUpdate(); } public boolean drillExtended() { return extended; } public void setDrillExtended(boolean value) { extended = value; distanceExtended = value ? 1f : 0f; } @Override public List<ModuleBase> getModules(int id, EntityPlayer player) { List<ModuleBase> modules = new LinkedList<ModuleBase>(); modules.add(toggleSwitch = new ModuleToggleSwitch(160, 5, 0, "", this, zmaster587.libVulpes.inventory.TextureResources.buttonToggleImage, 11, 26, drillExtended())); return modules; } @Override public String getModularInventoryName() { return "tile.drill.name"; } @Override public boolean canInteractWithContainer(EntityPlayer entity) { return true; } @Override public void onInventoryButtonPressed(int buttonId) { if(buttonId == 0) { this.setDrillExtended(toggleSwitch.getState()); PacketHandler.sendToServer(new PacketMachine(this,(byte)0)); } } @Override public void stateUpdated(ModuleBase module) { if(module == toggleSwitch) setDrillExtended(toggleSwitch.getState()); } @Override public void writeDataToNetwork(ByteBuf out, byte id) { out.writeBoolean(extended); } @Override public void readDataFromNetwork(ByteBuf in, byte packetId, NBTTagCompound nbt) { nbt.setBoolean("enabled", in.readBoolean()); } @Override public void useNetworkData(EntityPlayer player, Side side, byte id, NBTTagCompound nbt) { setDrillExtended(nbt.getBoolean("enabled")); toggleSwitch.setToggleState(drillExtended()); //Last ditch effort to update the toggle switch when it's flipped if(!worldObj.isRemote) PacketHandler.sendToNearby(new PacketMachine(this, (byte)0), worldObj.provider.dimensionId, xCoord, yCoord, zCoord, 64); } @Override public void writeToNBT(NBTTagCompound nbt) { super.writeToNBT(nbt); nbt.setFloat("extendAmt", distanceExtended); nbt.setBoolean("extended", extended); } @Override public void readFromNBT(NBTTagCompound nbt) { super.readFromNBT(nbt); distanceExtended = nbt.getFloat("extendAmt"); extended = nbt.getBoolean("extended"); } }