diff --git a/src/main/java/mekanism/client/gui/GuiSideConfiguration.java b/src/main/java/mekanism/client/gui/GuiSideConfiguration.java index 5f8ea466c..44d2b38c9 100644 --- a/src/main/java/mekanism/client/gui/GuiSideConfiguration.java +++ b/src/main/java/mekanism/client/gui/GuiSideConfiguration.java @@ -158,7 +158,15 @@ public class GuiSideConfiguration extends GuiMekanism String title = currentType.localize() + " " + MekanismUtils.localize("gui.config"); fontRendererObj.drawString(title, (xSize/2)-(fontRendererObj.getStringWidth(title)/2), 5, 0x404040); - fontRendererObj.drawString(MekanismUtils.localize("gui.eject") + ": " + (configurable.getConfig().isEjecting(currentType) ? "On" : "Off"), 53, 17, 0x00CD00); + + if(configurable.getConfig().canEject(currentType)) + { + fontRendererObj.drawString(MekanismUtils.localize("gui.eject") + ": " + (configurable.getConfig().isEjecting(currentType) ? "On" : "Off"), 53, 17, 0x00CD00); + } + else { + fontRendererObj.drawString(MekanismUtils.localize("gui.noEject"), 53, 17, 0x00CD00); + } + fontRendererObj.drawString(MekanismUtils.localize("gui.slots"), 77, 81, 0x787878); for(int i = 0; i < slotPosMap.size(); i++) diff --git a/src/main/java/mekanism/common/SideData.java b/src/main/java/mekanism/common/SideData.java index 909fd7d5f..082b9d93f 100644 --- a/src/main/java/mekanism/common/SideData.java +++ b/src/main/java/mekanism/common/SideData.java @@ -9,10 +9,26 @@ public class SideData /** Int[] of available side slots */ public int[] availableSlots; + + /** EnergyState representing this SideData */ + public EnergyState energyState; public SideData(EnumColor colour, int[] slots) { color = colour; availableSlots = slots; } + + public SideData(EnumColor colour, EnergyState state) + { + color = colour; + energyState = state; + } + + public static enum EnergyState + { + INPUT, + OUTPUT, + OFF; + } } diff --git a/src/main/java/mekanism/common/tile/TileEntityAdvancedElectricMachine.java b/src/main/java/mekanism/common/tile/TileEntityAdvancedElectricMachine.java index 7a00130b5..0d9ddd35f 100644 --- a/src/main/java/mekanism/common/tile/TileEntityAdvancedElectricMachine.java +++ b/src/main/java/mekanism/common/tile/TileEntityAdvancedElectricMachine.java @@ -68,7 +68,7 @@ public abstract class TileEntityAdvancedElectricMachine sideConfigs = new HashMap(); public Map> sideOutputs = new HashMap>(); public Map ejecting = new HashMap(); + public Map canEject = new HashMap(); public List transmissions = new ArrayList(); @@ -35,11 +38,40 @@ public class TileComponentConfig implements ITileComponent { sideOutputs.put(transmission.ordinal(), new ArrayList()); ejecting.put(transmission.ordinal(), false); + canEject.put(transmission.ordinal(), true); } tile.components.add(this); } + public void setCanEject(TransmissionType type, boolean eject) + { + canEject.put(type.ordinal(), eject); + } + + public boolean canEject(TransmissionType type) + { + return canEject.get(type.ordinal()); + } + + public void setIOEnergyConfig() + { + addOutput(TransmissionType.ENERGY, new SideData(EnumColor.GREY, EnergyState.OFF)); + addOutput(TransmissionType.ENERGY, new SideData(EnumColor.DARK_GREEN, EnergyState.INPUT)); + addOutput(TransmissionType.ENERGY, new SideData(EnumColor.DARK_RED, EnergyState.OUTPUT)); + + setConfig(TransmissionType.ENERGY, new byte[] {1, 1, 2, 1, 1, 1}); + } + + public void setInputEnergyConfig() + { + addOutput(TransmissionType.ENERGY, new SideData(EnumColor.GREY, EnergyState.OFF)); + addOutput(TransmissionType.ENERGY, new SideData(EnumColor.DARK_GREEN, EnergyState.INPUT)); + + setConfig(TransmissionType.ENERGY, new byte[] {1, 1, 1, 1, 1, 1}); + setCanEject(TransmissionType.ENERGY, false); + } + public void setConfig(TransmissionType type, byte[] config) { sideConfigs.put(type.ordinal(), config); @@ -85,8 +117,11 @@ public class TileComponentConfig implements ITileComponent { for(TransmissionType type : transmissions) { - sideConfigs.put(type.ordinal(), nbtTags.getByteArray("config" + type.ordinal())); - ejecting.put(type.ordinal(), nbtTags.getBoolean("ejecting" + type.ordinal())); + if(nbtTags.getByteArray("config" + type.ordinal()).length > 0) + { + sideConfigs.put(type.ordinal(), nbtTags.getByteArray("config" + type.ordinal())); + ejecting.put(type.ordinal(), nbtTags.getBoolean("ejecting" + type.ordinal())); + } } } } @@ -96,7 +131,10 @@ public class TileComponentConfig implements ITileComponent { for(TransmissionType type : transmissions) { - dataStream.readBytes(sideConfigs.get(type.ordinal())); + byte[] array = new byte[6]; + dataStream.readBytes(array); + + sideConfigs.put(type.ordinal(), array); ejecting.put(type.ordinal(), dataStream.readBoolean()); } } diff --git a/src/main/resources/assets/mekanism/lang/en_US.lang b/src/main/resources/assets/mekanism/lang/en_US.lang index 8e16daa7f..8d119f10b 100644 --- a/src/main/resources/assets/mekanism/lang/en_US.lang +++ b/src/main/resources/assets/mekanism/lang/en_US.lang @@ -431,6 +431,7 @@ gui.providers=providers gui.structure=Structure gui.dynamicTank=Dynamic Tank gui.visuals=Visuals +gui.noEject=Can't Eject gui.reactor.injectionRate=Injection Rate