package mods.eln.sixnode.electricalbreaker; import mods.eln.cable.CableRenderDescriptor; import mods.eln.misc.*; import mods.eln.node.six.SixNodeDescriptor; import mods.eln.node.six.SixNodeElementInventory; import mods.eln.node.six.SixNodeElementRender; import mods.eln.node.six.SixNodeEntity; import mods.eln.sixnode.electricalcable.ElectricalCableDescriptor; import net.minecraft.client.gui.GuiScreen; import net.minecraft.entity.player.EntityPlayer; import java.io.ByteArrayOutputStream; import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.IOException; public class ElectricalBreakerRender extends SixNodeElementRender { SixNodeElementInventory inventory = new SixNodeElementInventory(1, 64, this); ElectricalBreakerDescriptor descriptor; long time; RcInterpolator interpol; float uMin, uMax; boolean boot = true; float switchAlpha = 0; public boolean switchState; CableRenderDescriptor cableRender; public ElectricalBreakerRender(SixNodeEntity tileEntity, Direction side, SixNodeDescriptor descriptor) { super(tileEntity, side, descriptor); this.descriptor = (ElectricalBreakerDescriptor) descriptor; time = System.currentTimeMillis(); interpol = new RcInterpolator(this.descriptor.speed); } @Override public void draw() { super.draw(); front.glRotateOnX(); descriptor.draw(interpol.get(), UtilsClient.distanceFromClientPlayer(tileEntity)); } @Override public void refresh(float deltaT) { interpol.setTarget(switchState ? 1f : 0f); interpol.step(deltaT); } @Override public CableRenderDescriptor getCableRender(LRDU lrdu) { return cableRender; } @Override public void publishUnserialize(DataInputStream stream) { super.publishUnserialize(stream); Utils.println("Front : " + front); try { switchState = stream.readBoolean(); uMax = stream.readFloat(); uMin = stream.readFloat(); ElectricalCableDescriptor desc = (ElectricalCableDescriptor) ElectricalCableDescriptor.getDescriptor(Utils.unserialiseItemStack(stream), ElectricalCableDescriptor.class); if (desc == null) cableRender = null; else cableRender = desc.render; } catch (IOException e) { e.printStackTrace(); } if (boot) { interpol.setValue(switchState ? 1f : 0f); } boot = false; } public void clientSetVoltageMin(float value) { try { ByteArrayOutputStream bos = new ByteArrayOutputStream(); DataOutputStream stream = new DataOutputStream(bos); preparePacketForServer(stream); stream.writeByte(ElectricalBreakerElement.setVoltageMinId); stream.writeFloat(value); sendPacketToServer(bos); } catch (IOException e) { e.printStackTrace(); } } public void clientSetVoltageMax(float value) { try { ByteArrayOutputStream bos = new ByteArrayOutputStream(); DataOutputStream stream = new DataOutputStream(bos); preparePacketForServer(stream); stream.writeByte(ElectricalBreakerElement.setVoltageMaxId); stream.writeFloat(value); sendPacketToServer(bos); } catch (IOException e) { e.printStackTrace(); } } public void clientToogleSwitch() { try { ByteArrayOutputStream bos = new ByteArrayOutputStream(); DataOutputStream stream = new DataOutputStream(bos); preparePacketForServer(stream); stream.writeByte(ElectricalBreakerElement.toogleSwitchId); sendPacketToServer(bos); } catch (IOException e) { e.printStackTrace(); } } @Override public GuiScreen newGuiDraw(Direction side, EntityPlayer player) { return new ElectricalBreakerGui(player, inventory, this); } }