package appeng.container.implementations; import java.io.IOException; import net.minecraft.client.gui.GuiTextField; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.entity.player.InventoryPlayer; import net.minecraft.inventory.ICrafting; import net.minecraft.inventory.IInventory; import appeng.api.config.FuzzyMode; import appeng.api.config.LevelType; import appeng.api.config.RedstoneMode; import appeng.api.config.SecurityPermissions; import appeng.api.config.Settings; import appeng.container.slot.SlotFakeTypeOnly; import appeng.container.slot.SlotRestrictedInput; import appeng.container.slot.SlotRestrictedInput.PlaceableItemType; import appeng.core.AELog; import appeng.core.sync.network.NetworkHandler; import appeng.core.sync.packets.PacketProgressBar; import appeng.parts.automation.PartLevelEmitter; import appeng.util.Platform; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; public class ContainerLevelEmitter extends ContainerUpgradeable { PartLevelEmitter lvlEmitter; long EmitterValue = -1; @SideOnly(Side.CLIENT) public GuiTextField textField; @SideOnly(Side.CLIENT) public void setTextField(GuiTextField level) { textField = level; textField.setText( "" + EmitterValue ); } public ContainerLevelEmitter(InventoryPlayer ip, PartLevelEmitter te) { super( ip, te ); lvlEmitter = te; } @Override public int availableUpgrades() { return 1; } @Override protected boolean supportCapacity() { return false; } public void setLevel(long l, EntityPlayer player) { lvlEmitter.setReportingValue( l ); EmitterValue = l; } @Override protected void setupConfig() { int x = 80 + 44; int y = 40; IInventory upgrades = myte.getInventoryByName( "upgrades" ); if ( availableUpgrades() > 0 ) addSlotToContainer( (new SlotRestrictedInput( PlaceableItemType.UPGRADES, upgrades, 0, 187, 8 + 18 * 0 )).setNotDraggable() ); if ( availableUpgrades() > 1 ) addSlotToContainer( (new SlotRestrictedInput( PlaceableItemType.UPGRADES, upgrades, 1, 187, 8 + 18 * 1 )).setNotDraggable() ); if ( availableUpgrades() > 2 ) addSlotToContainer( (new SlotRestrictedInput( PlaceableItemType.UPGRADES, upgrades, 2, 187, 8 + 18 * 2 )).setNotDraggable() ); if ( availableUpgrades() > 3 ) addSlotToContainer( (new SlotRestrictedInput( PlaceableItemType.UPGRADES, upgrades, 3, 187, 8 + 18 * 3 )).setNotDraggable() ); IInventory inv = myte.getInventoryByName( "config" ); addSlotToContainer( new SlotFakeTypeOnly( inv, 0, x, y ) ); } public LevelType lvType; @Override public void detectAndSendChanges() { verifyPermissions( SecurityPermissions.BUILD, false ); if ( Platform.isServer() ) { for (int i = 0; i < this.crafters.size(); ++i) { ICrafting icrafting = (ICrafting) this.crafters.get( i ); if ( this.rsMode != this.myte.getConfigManager().getSetting( Settings.REDSTONE_EMITTER ) ) { icrafting.sendProgressBarUpdate( this, 0, (int) this.myte.getConfigManager().getSetting( Settings.REDSTONE_EMITTER ).ordinal() ); } if ( this.fzMode != this.myte.getConfigManager().getSetting( Settings.FUZZY_MODE ) ) { icrafting.sendProgressBarUpdate( this, 1, (int) this.myte.getConfigManager().getSetting( Settings.FUZZY_MODE ).ordinal() ); } if ( this.lvType != this.myte.getConfigManager().getSetting( Settings.LEVEL_TYPE ) ) { icrafting.sendProgressBarUpdate( this, 2, (int) this.myte.getConfigManager().getSetting( Settings.LEVEL_TYPE ).ordinal() ); } if ( this.EmitterValue != lvlEmitter.getReportingValue() ) { try { NetworkHandler.instance.sendTo( new PacketProgressBar( 3, lvlEmitter.getReportingValue() ), (EntityPlayerMP) icrafting ); } catch (IOException e) { AELog.error( e ); } // icrafting.sendProgressBarUpdate( this, 2, (int) lvlEmitter.getReportingValue() ); } } this.EmitterValue = lvlEmitter.getReportingValue(); this.lvType = (LevelType) this.myte.getConfigManager().getSetting( Settings.LEVEL_TYPE ); this.fzMode = (FuzzyMode) this.myte.getConfigManager().getSetting( Settings.FUZZY_MODE ); this.rsMode = (RedstoneMode) this.myte.getConfigManager().getSetting( Settings.REDSTONE_EMITTER ); } standardDetectAndSendChanges(); } @Override public void updateProgressBar(int idx, int value) { super.updateProgressBar( idx, value ); if ( idx == 2 ) { lvType = LevelType.values()[value]; } } @Override public void updateFullProgressBar(int idx, long value) { super.updateFullProgressBar( idx, value ); if ( idx == 3 ) { EmitterValue = value; if ( textField != null ) textField.setText( "" + EmitterValue ); } } }