package mcjty.rftools.blocks.spawner; import mcjty.lib.container.GenericGuiContainer; import mcjty.lib.gui.Window; import mcjty.lib.gui.layout.HorizontalAlignment; import mcjty.lib.gui.layout.PositionalLayout; import mcjty.lib.gui.widgets.*; import mcjty.lib.gui.widgets.Label; import mcjty.lib.gui.widgets.Panel; import mcjty.rftools.RFTools; import mcjty.rftools.network.RFToolsMessages; import net.minecraft.init.Blocks; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.ResourceLocation; import net.minecraftforge.common.util.ForgeDirection; import java.awt.*; import java.util.List; public class GuiSpawner extends GenericGuiContainer<SpawnerTileEntity> { public static final int SPAWNER_WIDTH = 180; public static final int SPAWNER_HEIGHT = 152; private EnergyBar energyBar; private BlockRender blocks[] = new BlockRender[3]; private Label labels[] = new Label[3]; private Label name; private Label rfTick; private static final ResourceLocation iconLocation = new ResourceLocation(RFTools.MODID, "textures/gui/spawner.png"); public GuiSpawner(SpawnerTileEntity spawnerTileEntity, SpawnerContainer container) { super(RFTools.instance, RFToolsMessages.INSTANCE, spawnerTileEntity, container, RFTools.GUI_MANUAL_MAIN, "spawner"); spawnerTileEntity.setCurrentRF(spawnerTileEntity.getEnergyStored(ForgeDirection.DOWN)); xSize = SPAWNER_WIDTH; ySize = SPAWNER_HEIGHT; } @Override public void initGui() { super.initGui(); int maxEnergyStored = tileEntity.getMaxEnergyStored(ForgeDirection.DOWN); energyBar = new EnergyBar(mc, this).setVertical().setMaxValue(maxEnergyStored).setLayoutHint(new PositionalLayout.PositionalHint(10, 7, 8, 54)).setShowText(false); energyBar.setValue(tileEntity.getCurrentRF()); blocks[0] = new BlockRender(mc, this).setLayoutHint(new PositionalLayout.PositionalHint(110, 5, 18, 18)); blocks[1] = new BlockRender(mc, this).setLayoutHint(new PositionalLayout.PositionalHint(110, 25, 18, 18)); blocks[2] = new BlockRender(mc, this).setLayoutHint(new PositionalLayout.PositionalHint(110, 45, 18, 18)); labels[0] = new Label(mc, this).setHorizontalAlignment(HorizontalAlignment.ALIGH_LEFT); labels[0].setLayoutHint(new PositionalLayout.PositionalHint(130, 5, 40, 18)); labels[1] = new Label(mc, this).setHorizontalAlignment(HorizontalAlignment.ALIGH_LEFT); labels[1].setLayoutHint(new PositionalLayout.PositionalHint(130, 25, 40, 18)); labels[2] = new Label(mc, this).setHorizontalAlignment(HorizontalAlignment.ALIGH_LEFT); labels[2].setLayoutHint(new PositionalLayout.PositionalHint(130, 45, 40, 18)); name = new Label(mc, this).setHorizontalAlignment(HorizontalAlignment.ALIGH_LEFT); name.setLayoutHint(new PositionalLayout.PositionalHint(28, 31, 78, 16)); rfTick = new Label(mc, this).setHorizontalAlignment(HorizontalAlignment.ALIGH_LEFT); rfTick.setLayoutHint(new PositionalLayout.PositionalHint(28, 47, 78, 16)); Widget toplevel = new Panel(mc, this).setBackground(iconLocation).setLayout(new PositionalLayout()).addChild(energyBar). addChild(blocks[0]).addChild(labels[0]). addChild(blocks[1]).addChild(labels[1]). addChild(blocks[2]).addChild(labels[2]). addChild(rfTick).addChild(name); toplevel.setBounds(new Rectangle(guiLeft, guiTop, xSize, ySize)); window = new Window(this, toplevel); tileEntity.requestRfFromServer(RFToolsMessages.INSTANCE); } private void showSyringeInfo() { for (int i = 0 ; i < 3 ; i++) { blocks[i].setRenderItem(null); labels[i].setText(""); } name.setText(""); rfTick.setText(""); ItemStack stack = tileEntity.getStackInSlot(SpawnerContainer.SLOT_SYRINGE); if (stack == null || stack.stackSize == 0) { return; } NBTTagCompound tagCompound = stack.getTagCompound(); if (tagCompound != null) { String mob = tagCompound.getString("mobName"); if (mob != null && !mob.isEmpty()) { name.setText(mob); rfTick.setText(SpawnerConfiguration.mobSpawnRf.get(mob) + "RF"); int i = 0; List<SpawnerConfiguration.MobSpawnAmount> list = SpawnerConfiguration.mobSpawnAmounts.get(mob); for (SpawnerConfiguration.MobSpawnAmount spawnAmount : list) { ItemStack b = spawnAmount.getObject(); float amount = spawnAmount.getAmount(); if (b == null) { blocks[i].setRenderItem(new ItemStack(Blocks.leaves, 1, 0)); } else { blocks[i].setRenderItem(b); } labels[i].setText(Float.toString(amount)); i++; } } } } @Override protected void drawGuiContainerBackgroundLayer(float v, int i, int i2) { showSyringeInfo(); drawWindow(); int currentRF = tileEntity.getCurrentRF(); energyBar.setValue(currentRF); tileEntity.requestRfFromServer(RFToolsMessages.INSTANCE); } }