package fi.dy.masa.enderutilities.gui.client; import java.io.IOException; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.GuiButton; import net.minecraft.client.resources.I18n; import net.minecraft.inventory.Slot; import net.minecraftforge.event.entity.player.ItemTooltipEvent; import net.minecraftforge.fml.common.Mod; import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.items.IItemHandler; import fi.dy.masa.enderutilities.config.Configs; import fi.dy.masa.enderutilities.gui.client.base.GuiContainerLargeStacks; import fi.dy.masa.enderutilities.gui.client.button.GuiButtonStateCallback; import fi.dy.masa.enderutilities.gui.client.button.GuiButtonStateCallback.ButtonState; import fi.dy.masa.enderutilities.gui.client.button.IButtonStateCallback; import fi.dy.masa.enderutilities.inventory.container.ContainerBarrel; import fi.dy.masa.enderutilities.network.PacketHandler; import fi.dy.masa.enderutilities.network.message.MessageGuiAction; import fi.dy.masa.enderutilities.reference.ReferenceGuiIds; import fi.dy.masa.enderutilities.tileentity.TileEntityBarrel; import fi.dy.masa.enderutilities.util.EUStringUtils; @Mod.EventBusSubscriber(Side.CLIENT) public class GuiBarrel extends GuiContainerLargeStacks implements IButtonStateCallback { private final TileEntityBarrel tebarrel; private final IItemHandler upgradeInv; public GuiBarrel(ContainerBarrel container, TileEntityBarrel te) { super(container, 176, 175, "gui.container.barrel"); this.tebarrel = te; this.infoArea = new InfoArea(160, 17, 11, 11, "enderutilities.gui.infoarea.barrel", Integer.valueOf(Configs.barrelCapacityUpgradeStacksPer)); this.upgradeInv = container.getUpgradeInventory(); this.scaledStackSizeTextInventories.add(container.inventory); } @Override public void initGui() { super.initGui(); this.createButtons(); } @Override protected void drawGuiContainerForegroundLayer(int mouseX, int mouseY) { this.fontRenderer.drawString(I18n.format("enderutilities.container.barrel"), 8, 5, 0x404040); this.fontRenderer.drawString(I18n.format("container.inventory"), 8, 80, 0x404040); } @Override protected void drawGuiContainerBackgroundLayer(float gameTicks, int mouseX, int mouseY) { super.drawGuiContainerBackgroundLayer(gameTicks, mouseX, mouseY); int x = (this.width - this.xSize) / 2; int y = (this.height - this.ySize) / 2; for (int i = 0; i < this.upgradeInv.getSlots(); i++) { // Draw the upgrade slot backgrounds for empty slots if (this.upgradeInv.getStackInSlot(i).isEmpty()) { this.drawTexturedModalRect(x + 44 + i * 18, y + 59, 176, i * 16, 16, 16); } } // Draw the Creative mode button highlight when it's active if (this.tebarrel.isCreative()) { this.bindTexture(this.guiTextureWidgets); this.drawTexturedModalRect(x + 161, y + 5, 120, 24, 10, 10); } this.drawLockedSlotBackgrounds(this.tebarrel.getInventoryBarrel()); this.drawTemplateStacks(this.tebarrel.getInventoryBarrel()); } protected void createButtons() { this.buttonList.clear(); int x = (this.width - this.xSize) / 2; int y = (this.height - this.ySize) / 2; this.buttonList.add(new GuiButtonStateCallback(1, x + 162, y + 6, 8, 8, 8, 0, this.guiTextureWidgets, this, ButtonState.createTranslate(0, 40, "enderutilities.gui.label.msu.creative.disabled"), ButtonState.createTranslate(0, 112, "enderutilities.gui.label.msu.creative.enabled"))); } @Override protected void actionPerformed(GuiButton button) throws IOException { if (button.id == 1 && this.player.capabilities.isCreativeMode) { PacketHandler.INSTANCE.sendToServer(new MessageGuiAction(this.tebarrel.getWorld().provider.getDimension(), this.tebarrel.getPos(), ReferenceGuiIds.GUI_ID_TILE_ENTITY_GENERIC, TileEntityBarrel.GUI_ACTION_TOGGLE_CREATIVE_MODE, 0)); } } @Override public int getButtonStateIndex(int callbackId) { if (callbackId == 1) { return this.tebarrel.isCreative() ? 1 : 0; } return 0; } @Override public boolean isButtonEnabled(int callbackId) { return true; } @SubscribeEvent public static void onTooltipEvent(ItemTooltipEvent event) { if (Minecraft.getMinecraft().currentScreen instanceof GuiBarrel && event.getEntityPlayer() != null && event.getEntityPlayer().openContainer instanceof ContainerBarrel) { ContainerBarrel container = (ContainerBarrel) event.getEntityPlayer().openContainer; GuiBarrel gui = (GuiBarrel) Minecraft.getMinecraft().currentScreen; Slot slot = gui.getSlotUnderMouse(); if (slot != null && slot.getHasStack() && container.getCustomInventorySlotRange().contains(slot.slotNumber)) { String size = EUStringUtils.formatNumberWithKSeparators(slot.getStack().getCount()); event.getToolTip().add(size + " " + I18n.format("enderutilities.tooltip.item.items")); } } } }