diff --git a/common/mekanism/client/gui/GuiDigitalMiner.java b/common/mekanism/client/gui/GuiDigitalMiner.java index 484e621d5..ec28c0bea 100644 --- a/common/mekanism/client/gui/GuiDigitalMiner.java +++ b/common/mekanism/client/gui/GuiDigitalMiner.java @@ -35,6 +35,8 @@ public class GuiDigitalMiner extends GuiMekanism guiElements.add(new GuiRedstoneControl(this, tileEntity, MekanismUtils.getResource(ResourceType.GUI, "GuiDigitalMiner.png"))); guiElements.add(new GuiUpgradeManagement(this, tileEntity, MekanismUtils.getResource(ResourceType.GUI, "GuiDigitalMiner.png"))); + + ySize+=64; } @Override @@ -107,6 +109,21 @@ public class GuiDigitalMiner extends GuiMekanism else { drawTexturedModalRect(guiWidth + 147, guiHeight + 63, 176 + 4 + 14, 14, 14, 14); } + + if(xAxis >= 144 && xAxis <= 160 && yAxis >= 27 && yAxis <= 43) + { + GL11.glPushMatrix(); + GL11.glDisable(GL11.GL_LIGHTING); + GL11.glDisable(GL11.GL_DEPTH_TEST); + + int x = guiWidth + 144; + int y = guiHeight + 27; + drawGradientRect(x, y, x + 16, y + 16, -2130706433, -2130706433); + + GL11.glEnable(GL11.GL_LIGHTING); + GL11.glEnable(GL11.GL_DEPTH_TEST); + GL11.glPopMatrix(); + } } @Override @@ -139,18 +156,37 @@ public class GuiDigitalMiner extends GuiMekanism PacketHandler.sendPacket(Transmission.SERVER, new PacketTileEntity().setParams(Object3D.get(tileEntity), data)); } - if(xAxis >= 12 && xAxis <= 28 && yAxis >= 19 && yAxis <= 35) + if(xAxis >= 144 && xAxis <= 160 && yAxis >= 27 && yAxis <= 43) { + boolean doNull = false; ItemStack stack = mc.thePlayer.inventory.getItemStack(); + ItemStack toUse = null; if(stack != null && !Keyboard.isKeyDown(Keyboard.KEY_LSHIFT)) { - tileEntity.replaceStack = stack.copy(); - tileEntity.replaceStack.stackSize = 1; + toUse = stack.copy(); } else if(stack == null && Keyboard.isKeyDown(Keyboard.KEY_LSHIFT)) { - tileEntity.replaceStack = null; + doNull = true; + } + + if(stack != null || doNull) + { + ArrayList data = new ArrayList(); + data.add(2); + + if(stack != null) + { + data.add(true); + data.add(stack.itemID); + data.add(stack.getItemDamage()); + } + else { + data.add(false); + } + + PacketHandler.sendPacket(Transmission.SERVER, new PacketTileEntity().setParams(Object3D.get(tileEntity), data)); } mc.sndManager.playSoundFX("random.click", 1.0F, 1.0F); diff --git a/common/mekanism/client/gui/GuiDigitalMinerConfig.java b/common/mekanism/client/gui/GuiDigitalMinerConfig.java index 971613fc4..007e2be14 100644 --- a/common/mekanism/client/gui/GuiDigitalMinerConfig.java +++ b/common/mekanism/client/gui/GuiDigitalMinerConfig.java @@ -21,10 +21,12 @@ import mekanism.common.tileentity.TileEntityDigitalMiner; import mekanism.common.util.MekanismUtils; import mekanism.common.util.MekanismUtils.ResourceType; import net.minecraft.client.gui.GuiButton; +import net.minecraft.client.gui.GuiTextField; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; import net.minecraftforge.oredict.OreDictionary; +import org.lwjgl.input.Keyboard; import org.lwjgl.opengl.GL11; public class GuiDigitalMinerConfig extends GuiMekanism @@ -41,6 +43,10 @@ public class GuiDigitalMinerConfig extends GuiMekanism public float scroll; + private GuiTextField radiusField; + private GuiTextField minField; + private GuiTextField maxField; + public GuiDigitalMinerConfig(EntityPlayer player, TileEntityDigitalMiner tentity) { super(new ContainerNull(player, tentity)); @@ -67,6 +73,10 @@ public class GuiDigitalMinerConfig extends GuiMekanism { super.updateScreen(); + radiusField.updateCursorCounter(); + minField.updateCursorCounter(); + maxField.updateCursorCounter(); + if(stackSwitch > 0) { stackSwitch--; @@ -231,6 +241,22 @@ public class GuiDigitalMinerConfig extends GuiMekanism buttonList.clear(); buttonList.add(new GuiButton(0, guiWidth + 56, guiHeight + 136, 54, 20, "ItemStack")); buttonList.add(new GuiButton(1, guiWidth + 110, guiHeight + 136, 43, 20, "OreDict")); + + String prevRad = !radiusField.getText().equals("") ? radiusField.getText() : "" + tileEntity.radius; + String prevMin = !minField.getText().equals("") ? minField.getText() : "" + tileEntity.minY; + String prevMax = !maxField.getText().equals("") ? maxField.getText() : "" + tileEntity.maxY; + + radiusField = new GuiTextField(fontRenderer, guiWidth + 11, guiHeight + 67, 20, 11); + radiusField.setMaxStringLength(3); + radiusField.setText(prevRad); + + minField = new GuiTextField(fontRenderer, guiWidth + 11, guiHeight + 79, 20, 11); + minField.setMaxStringLength(3); + minField.setText(prevMin); + + maxField = new GuiTextField(fontRenderer, guiWidth + 11, guiHeight + 91, 20, 11); + maxField.setMaxStringLength(3); + maxField.setText(prevMax); } @Override @@ -261,6 +287,12 @@ public class GuiDigitalMinerConfig extends GuiMekanism fontRenderer.drawString("IS: " + getItemStackFilters().size(), 11, 37, 0x00CD00); fontRenderer.drawString("OD: " + getOreDictFilters().size(), 11, 46, 0x00CD00); + fontRenderer.drawString("Radius: " + tileEntity.radius, 11, 58, 0x00CD00); + + fontRenderer.drawString("Min Y: " + tileEntity.minY, 11, 70, 0x00CD00); + + fontRenderer.drawString("Max Y: " + tileEntity.maxY, 11, 82, 0x00CD00); + fontRenderer.drawString("Default:", 12, 126, 0x00CD00); for(int i = 0; i < 4; i++) @@ -372,8 +404,28 @@ public class GuiDigitalMinerConfig extends GuiMekanism else { drawTexturedModalRect(guiWidth + 12, guiHeight + 84, 176 + 14, 14, 14, 14); } + + radiusField.drawTextBox(); + minField.drawTextBox(); + maxField.drawTextBox(); } + @Override + public void keyTyped(char c, int i) + { + if((!radiusField.isFocused() && !minField.isFocused() && !maxField.isFocused()) || i == Keyboard.KEY_ESCAPE) + { + super.keyTyped(c, i); + } + + if(Character.isDigit(c) || i == Keyboard.KEY_BACK || i == Keyboard.KEY_DELETE || i == Keyboard.KEY_LEFT || i == Keyboard.KEY_RIGHT) + { + radiusField.textboxKeyTyped(c, i); + minField.textboxKeyTyped(c, i); + maxField.textboxKeyTyped(c, i); + } + } + public ArrayList getItemStackFilters() { ArrayList list = new ArrayList(); diff --git a/common/mekanism/common/inventory/container/ContainerDigitalMiner.java b/common/mekanism/common/inventory/container/ContainerDigitalMiner.java index 12cba0c32..6ccd58318 100644 --- a/common/mekanism/common/inventory/container/ContainerDigitalMiner.java +++ b/common/mekanism/common/inventory/container/ContainerDigitalMiner.java @@ -2,6 +2,7 @@ package mekanism.common.inventory.container; import mekanism.common.inventory.slot.SlotElectricChest; import mekanism.common.inventory.slot.SlotEnergy.SlotDischarge; +import mekanism.common.item.ItemMachineUpgrade; import mekanism.common.tileentity.TileEntityDigitalMiner; import mekanism.common.util.ChargeUtils; import net.minecraft.entity.player.EntityPlayer; @@ -23,7 +24,7 @@ public class ContainerDigitalMiner extends Container { for(int slotX = 0; slotX < 9; slotX++) { - addSlotToContainer(new Slot(tentity, slotX + slotY * 9, 8 + slotX * 18, 26 + slotY * 18)); + addSlotToContainer(new Slot(tentity, slotX + slotY * 9, 8 + slotX * 18, 80 + slotY * 18)); } } @@ -35,13 +36,13 @@ public class ContainerDigitalMiner extends Container { for(int slotY = 0; slotY < 9; ++slotY) { - addSlotToContainer(new SlotElectricChest(inventory, slotY + slotX * 9 + 9, 8 + slotY * 18, 148 + slotX * 18)); + addSlotToContainer(new Slot(inventory, slotY + slotX * 9 + 9, 8 + slotY * 18, 148 + slotX * 18)); } } for(slotX = 0; slotX < 9; ++slotX) { - addSlotToContainer(new SlotElectricChest(inventory, slotX, 8 + slotX * 18, 206)); + addSlotToContainer(new Slot(inventory, slotX, 8 + slotX * 18, 206)); } tileEntity.openChest(); @@ -76,32 +77,35 @@ public class ContainerDigitalMiner extends Container if(ChargeUtils.canBeDischarged(slotStack)) { - if(slotID != 54) + if(slotID != 27) { - if(!mergeItemStack(slotStack, 54, 55, false)) + if(!mergeItemStack(slotStack, 27, 28, false)) { return null; } } - else if(slotID == 54) + else if(slotID == 27) { - if(!mergeItemStack(slotStack, 55, inventorySlots.size(), true)) + if(!mergeItemStack(slotStack, 29, inventorySlots.size(), true)) { return null; } } } - else { - if(slotID < 54) + else if(slotStack.getItem() instanceof ItemMachineUpgrade) + { + if(slotID != 27 && slotID != 28) { - if(!mergeItemStack(slotStack, 55, inventorySlots.size(), true)) + if(!mergeItemStack(slotStack, 28, 29, false)) { return null; } } - else if(!mergeItemStack(slotStack, 0, 54, false)) - { - return null; + else { + if(!mergeItemStack(slotStack, 29, inventorySlots.size(), true)) + { + return null; + } } } diff --git a/common/mekanism/common/tileentity/TileEntityDigitalMiner.java b/common/mekanism/common/tileentity/TileEntityDigitalMiner.java index 3b7b9249f..068573211 100644 --- a/common/mekanism/common/tileentity/TileEntityDigitalMiner.java +++ b/common/mekanism/common/tileentity/TileEntityDigitalMiner.java @@ -43,8 +43,8 @@ public class TileEntityDigitalMiner extends TileEntityElectricBlock implements I public int radius; - public int minY; - public int maxY; + public int minY = 0; + public int maxY = 60; public boolean doEject = false; public boolean doPull = false; @@ -195,6 +195,18 @@ public class TileEntityDigitalMiner extends TileEntityElectricBlock implements I { doPull = !doPull; } + else if(type == 2) + { + boolean doNull = dataStream.readBoolean(); + + if(!doNull) + { + replaceStack = new ItemStack(dataStream.readInt(), 1, dataStream.readInt()); + } + else { + replaceStack = null; + } + } } super.handlePacketData(dataStream); @@ -251,6 +263,7 @@ public class TileEntityDigitalMiner extends TileEntityElectricBlock implements I super.getNetworkedData(data); data.add(0); + data.add(radius); data.add(minY); data.add(maxY); @@ -260,6 +273,13 @@ public class TileEntityDigitalMiner extends TileEntityElectricBlock implements I data.add(oresToMine.size()); data.add(controlType.ordinal()); + data.add(filters.size()); + + for(MinerFilter filter : filters) + { + filter.write(data); + } + return data; } @@ -268,6 +288,7 @@ public class TileEntityDigitalMiner extends TileEntityElectricBlock implements I super.getNetworkedData(data); data.add(1); + data.add(radius); data.add(minY); data.add(maxY); @@ -277,11 +298,6 @@ public class TileEntityDigitalMiner extends TileEntityElectricBlock implements I data.add(oresToMine.size()); data.add(controlType.ordinal()); - for(MinerFilter filter : filters) - { - filter.write(data); - } - return data; } diff --git a/resources/assets/mekanism/gui/GuiDigitalMinerConfig.png b/resources/assets/mekanism/gui/GuiDigitalMinerConfig.png index 56efb5e5d..471a69dc3 100644 Binary files a/resources/assets/mekanism/gui/GuiDigitalMinerConfig.png and b/resources/assets/mekanism/gui/GuiDigitalMinerConfig.png differ