268 lines
9.4 KiB
Java
268 lines
9.4 KiB
Java
package mekanism.client.gui;
|
|
|
|
import java.util.List;
|
|
|
|
import mekanism.common.Mekanism;
|
|
import mekanism.common.PacketHandler;
|
|
import mekanism.common.PacketHandler.Transmission;
|
|
import mekanism.common.inventory.container.ContainerRobitRepair;
|
|
import mekanism.common.network.PacketRobit;
|
|
import mekanism.common.network.PacketRobit.RobitPacketType;
|
|
import mekanism.common.util.MekanismUtils;
|
|
import mekanism.common.util.MekanismUtils.ResourceType;
|
|
import net.minecraft.client.gui.GuiTextField;
|
|
import net.minecraft.client.gui.inventory.GuiContainer;
|
|
import net.minecraft.entity.player.InventoryPlayer;
|
|
import net.minecraft.inventory.Container;
|
|
import net.minecraft.inventory.ContainerRepair;
|
|
import net.minecraft.inventory.ICrafting;
|
|
import net.minecraft.item.ItemStack;
|
|
import net.minecraft.network.packet.Packet250CustomPayload;
|
|
import net.minecraft.util.StatCollector;
|
|
import net.minecraft.world.World;
|
|
|
|
import org.lwjgl.input.Keyboard;
|
|
import org.lwjgl.opengl.GL11;
|
|
|
|
import cpw.mods.fml.relauncher.Side;
|
|
import cpw.mods.fml.relauncher.SideOnly;
|
|
|
|
@SideOnly(Side.CLIENT)
|
|
public class GuiRobitRepair extends GuiContainer implements ICrafting
|
|
{
|
|
public int entityId;
|
|
private ContainerRepair repairContainer;
|
|
private GuiTextField itemNameField;
|
|
private InventoryPlayer playerInventory;
|
|
|
|
public GuiRobitRepair(InventoryPlayer inventory, World world, int id)
|
|
{
|
|
super(new ContainerRobitRepair(inventory, world));
|
|
xSize += 25;
|
|
entityId = id;
|
|
playerInventory = inventory;
|
|
repairContainer = (ContainerRobitRepair)inventorySlots;
|
|
}
|
|
|
|
@Override
|
|
public void initGui()
|
|
{
|
|
super.initGui();
|
|
Keyboard.enableRepeatEvents(true);
|
|
int i = (width - xSize) / 2;
|
|
int j = (height - ySize) / 2;
|
|
itemNameField = new GuiTextField(fontRenderer, i + 62, j + 24, 103, 12);
|
|
itemNameField.setTextColor(-1);
|
|
itemNameField.setDisabledTextColour(-1);
|
|
itemNameField.setEnableBackgroundDrawing(false);
|
|
itemNameField.setMaxStringLength(30);
|
|
inventorySlots.removeCraftingFromCrafters(this);
|
|
inventorySlots.addCraftingToCrafters(this);
|
|
}
|
|
|
|
@Override
|
|
public void onGuiClosed()
|
|
{
|
|
super.onGuiClosed();
|
|
Keyboard.enableRepeatEvents(false);
|
|
inventorySlots.removeCraftingFromCrafters(this);
|
|
}
|
|
|
|
@Override
|
|
protected void drawGuiContainerForegroundLayer(int mouseX, int mouseY)
|
|
{
|
|
GL11.glDisable(GL11.GL_LIGHTING);
|
|
fontRenderer.drawString(StatCollector.translateToLocal("container.repair"), 60, 6, 4210752);
|
|
|
|
if(repairContainer.maximumCost > 0)
|
|
{
|
|
int k = 8453920;
|
|
boolean flag = true;
|
|
String s = StatCollector.translateToLocalFormatted("container.repair.cost", new Object[] {Integer.valueOf(repairContainer.maximumCost)});
|
|
|
|
if(repairContainer.maximumCost >= 40 && !mc.thePlayer.capabilities.isCreativeMode)
|
|
{
|
|
s = StatCollector.translateToLocal("container.repair.expensive");
|
|
k = 16736352;
|
|
}
|
|
else if(!repairContainer.getSlot(2).getHasStack())
|
|
{
|
|
flag = false;
|
|
}
|
|
else if(!repairContainer.getSlot(2).canTakeStack(playerInventory.player))
|
|
{
|
|
k = 16736352;
|
|
}
|
|
|
|
if(flag)
|
|
{
|
|
int l = -16777216 | (k & 16579836) >> 2 | k & -16777216;
|
|
int i1 = (xSize - 25) - 8 - fontRenderer.getStringWidth(s);
|
|
byte b0 = 67;
|
|
|
|
if(fontRenderer.getUnicodeFlag())
|
|
{
|
|
drawRect(i1 - 3, b0 - 2, (xSize - 25) - 7, b0 + 10, -16777216);
|
|
drawRect(i1 - 2, b0 - 1, (xSize - 25) - 8, b0 + 9, -12895429);
|
|
}
|
|
else {
|
|
fontRenderer.drawString(s, i1, b0 + 1, l);
|
|
fontRenderer.drawString(s, i1 + 1, b0, l);
|
|
fontRenderer.drawString(s, i1 + 1, b0 + 1, l);
|
|
}
|
|
|
|
fontRenderer.drawString(s, i1, b0, k);
|
|
}
|
|
}
|
|
|
|
GL11.glEnable(GL11.GL_LIGHTING);
|
|
}
|
|
|
|
@Override
|
|
protected void keyTyped(char par1, int par2)
|
|
{
|
|
if(itemNameField.textboxKeyTyped(par1, par2))
|
|
{
|
|
repairContainer.updateItemName(itemNameField.getText());
|
|
mc.thePlayer.sendQueue.addToSendQueue(new Packet250CustomPayload("MC|ItemName", itemNameField.getText().getBytes()));
|
|
}
|
|
else {
|
|
super.keyTyped(par1, par2);
|
|
}
|
|
}
|
|
|
|
@Override
|
|
protected void mouseClicked(int mouseX, int mouseY, int button)
|
|
{
|
|
super.mouseClicked(mouseX, mouseY, button);
|
|
itemNameField.mouseClicked(mouseX, mouseY, button);
|
|
|
|
if(button == 0)
|
|
{
|
|
int xAxis = (mouseX - (width - xSize) / 2);
|
|
int yAxis = (mouseY - (height - ySize) / 2);
|
|
|
|
if(xAxis >= 179 && xAxis <= 197 && yAxis >= 10 && yAxis <= 28)
|
|
{
|
|
mc.sndManager.playSoundFX("random.click", 1.0F, 1.0F);
|
|
PacketHandler.sendPacket(Transmission.SERVER, new PacketRobit().setParams(RobitPacketType.GUI, 0, entityId));
|
|
mc.thePlayer.openGui(Mekanism.instance, 21, mc.theWorld, entityId, 0, 0);
|
|
}
|
|
else if(xAxis >= 179 && xAxis <= 197 && yAxis >= 30 && yAxis <= 48)
|
|
{
|
|
mc.sndManager.playSoundFX("random.click", 1.0F, 1.0F);
|
|
PacketHandler.sendPacket(Transmission.SERVER, new PacketRobit().setParams(RobitPacketType.GUI, 1, entityId));
|
|
mc.thePlayer.openGui(Mekanism.instance, 22, mc.theWorld, entityId, 0, 0);
|
|
}
|
|
else if(xAxis >= 179 && xAxis <= 197 && yAxis >= 50 && yAxis <= 68)
|
|
{
|
|
mc.sndManager.playSoundFX("random.click", 1.0F, 1.0F);
|
|
PacketHandler.sendPacket(Transmission.SERVER, new PacketRobit().setParams(RobitPacketType.GUI, 2, entityId));
|
|
mc.thePlayer.openGui(Mekanism.instance, 23, mc.theWorld, entityId, 0, 0);
|
|
}
|
|
else if(xAxis >= 179 && xAxis <= 197 && yAxis >= 70 && yAxis <= 88)
|
|
{
|
|
mc.sndManager.playSoundFX("random.click", 1.0F, 1.0F);
|
|
PacketHandler.sendPacket(Transmission.SERVER, new PacketRobit().setParams(RobitPacketType.GUI, 3, entityId));
|
|
mc.thePlayer.openGui(Mekanism.instance, 24, mc.theWorld, entityId, 0, 0);
|
|
}
|
|
else if(xAxis >= 179 && xAxis <= 197 && yAxis >= 90 && yAxis <= 108)
|
|
{
|
|
mc.sndManager.playSoundFX("random.click", 1.0F, 1.0F);
|
|
}
|
|
}
|
|
}
|
|
|
|
@Override
|
|
public void drawScreen(int mouseX, int mouseY, float par3)
|
|
{
|
|
super.drawScreen(mouseX, mouseY, par3);
|
|
GL11.glDisable(GL11.GL_LIGHTING);
|
|
itemNameField.drawTextBox();
|
|
}
|
|
|
|
@Override
|
|
protected void drawGuiContainerBackgroundLayer(float par1, int mouseX, int mouseY)
|
|
{
|
|
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
|
|
mc.renderEngine.bindTexture(MekanismUtils.getResource(ResourceType.GUI, "GuiRobitRepair.png"));
|
|
int guiWidth = (width - xSize) / 2;
|
|
int guiHeight = (height - ySize) / 2;
|
|
drawTexturedModalRect(guiWidth, guiHeight, 0, 0, xSize, ySize);
|
|
|
|
int xAxis = (mouseX - (width - xSize) / 2);
|
|
int yAxis = (mouseY - (height - ySize) / 2);
|
|
|
|
if(xAxis >= 179 && xAxis <= 197 && yAxis >= 10 && yAxis <= 28)
|
|
{
|
|
drawTexturedModalRect(guiWidth + 179, guiHeight + 10, 176 + 25, 0, 18, 18);
|
|
}
|
|
else {
|
|
drawTexturedModalRect(guiWidth + 179, guiHeight + 10, 176 + 25, 18, 18, 18);
|
|
}
|
|
|
|
if(xAxis >= 179 && xAxis <= 197 && yAxis >= 30 && yAxis <= 48)
|
|
{
|
|
drawTexturedModalRect(guiWidth + 179, guiHeight + 30, 176 + 25, 36, 18, 18);
|
|
}
|
|
else {
|
|
drawTexturedModalRect(guiWidth + 179, guiHeight + 30, 176 + 25, 54, 18, 18);
|
|
}
|
|
|
|
if(xAxis >= 179 && xAxis <= 197 && yAxis >= 50 && yAxis <= 68)
|
|
{
|
|
drawTexturedModalRect(guiWidth + 179, guiHeight + 50, 176 + 25, 72, 18, 18);
|
|
}
|
|
else {
|
|
drawTexturedModalRect(guiWidth + 179, guiHeight + 50, 176 + 25, 90, 18, 18);
|
|
}
|
|
|
|
if(xAxis >= 179 && xAxis <= 197 && yAxis >= 70 && yAxis <= 88)
|
|
{
|
|
drawTexturedModalRect(guiWidth + 179, guiHeight + 70, 176 + 25, 108, 18, 18);
|
|
}
|
|
else {
|
|
drawTexturedModalRect(guiWidth + 179, guiHeight + 70, 176 + 25, 126, 18, 18);
|
|
}
|
|
|
|
if(xAxis >= 179 && xAxis <= 197 && yAxis >= 90 && yAxis <= 108)
|
|
{
|
|
drawTexturedModalRect(guiWidth + 179, guiHeight + 90, 176 + 25, 144, 18, 18);
|
|
}
|
|
else {
|
|
drawTexturedModalRect(guiWidth + 179, guiHeight + 90, 176 + 25, 162, 18, 18);
|
|
}
|
|
|
|
drawTexturedModalRect(guiWidth + 59, guiHeight + 20, 0, ySize + (repairContainer.getSlot(0).getHasStack() ? 0 : 16), 110, 16);
|
|
|
|
if((repairContainer.getSlot(0).getHasStack() || repairContainer.getSlot(1).getHasStack()) && !repairContainer.getSlot(2).getHasStack())
|
|
{
|
|
drawTexturedModalRect(guiWidth + 99, guiHeight + 45, xSize + 18, 36, 28, 21);
|
|
}
|
|
}
|
|
|
|
@Override
|
|
public void sendContainerAndContentsToPlayer(Container container, List list)
|
|
{
|
|
sendSlotContents(container, 0, container.getSlot(0).getStack());
|
|
}
|
|
|
|
@Override
|
|
public void sendSlotContents(Container container, int slotID, ItemStack itemstack)
|
|
{
|
|
if(slotID == 0)
|
|
{
|
|
itemNameField.setText(itemstack == null ? "" : itemstack.getDisplayName());
|
|
itemNameField.setEnabled(itemstack != null);
|
|
|
|
if(itemstack != null)
|
|
{
|
|
repairContainer.updateItemName(itemNameField.getText());
|
|
mc.thePlayer.sendQueue.addToSendQueue(new Packet250CustomPayload("MC|ItemName", itemNameField.getText().getBytes()));
|
|
}
|
|
}
|
|
}
|
|
|
|
@Override
|
|
public void sendProgressBarUpdate(Container par1Container, int par2, int par3) {}
|
|
}
|