diff --git a/src/api/java/appeng/api/config/ActionItems.java b/src/api/java/appeng/api/config/ActionItems.java index 0107c5639..0d8ea51c9 100644 --- a/src/api/java/appeng/api/config/ActionItems.java +++ b/src/api/java/appeng/api/config/ActionItems.java @@ -26,5 +26,20 @@ package appeng.api.config; public enum ActionItems { - WRENCH, CLOSE, STASH, ENCODE, SUBSTITUTION, MULTIPLY_BY_TWO, MULTIPLY_BY_THREE, INCREASE_BY_ONE, DIVIDE_BY_TWO, DIVIDE_BY_THREE, DECREASE_BY_ONE, MAX_COUNT + WRENCH, + CLOSE, + STASH, + ENCODE, + SUBSTITUTION, + MULTIPLY_BY_TWO, + MULTIPLY_BY_THREE, + INCREASE_BY_ONE, + DIVIDE_BY_TWO, + DIVIDE_BY_THREE, + DECREASE_BY_ONE, + MAX_COUNT, + FREE_MOLECULAR_SLOT_SHORTCUT, + TOGGLE_SHOW_FULL_INTERFACES_ON, + TOGGLE_SHOW_FULL_INTERFACES_OFF, + HIGHLIGHT_INTERFACE } \ No newline at end of file diff --git a/src/main/java/appeng/client/gui/implementations/GuiInterfaceTerminal.java b/src/main/java/appeng/client/gui/implementations/GuiInterfaceTerminal.java index c7e074249..54ac3e9f3 100644 --- a/src/main/java/appeng/client/gui/implementations/GuiInterfaceTerminal.java +++ b/src/main/java/appeng/client/gui/implementations/GuiInterfaceTerminal.java @@ -22,13 +22,15 @@ package appeng.client.gui.implementations; import java.io.IOException; import java.util.*; +import appeng.api.config.ActionItems; +import appeng.api.config.Settings; +import appeng.client.gui.widgets.GuiImgButton; import appeng.util.BlockPosUtils; import com.google.common.collect.HashMultimap; import net.minecraft.client.gui.GuiButton; import net.minecraft.client.renderer.GlStateManager; import net.minecraft.entity.player.InventoryPlayer; -import net.minecraft.inventory.Slot; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagList; @@ -58,7 +60,7 @@ public class GuiInterfaceTerminal extends AEBaseGui private static final int LINES_ON_PAGE = 6; // TODO: copied from GuiMEMonitorable. It looks not changed, maybe unneeded? - private final int offsetX = 9; + private final int offsetX = 21; private final HashMap byId = new HashMap<>(); private final HashMultimap byName = HashMultimap.create(); @@ -83,8 +85,8 @@ public class GuiInterfaceTerminal extends AEBaseGui this.partInterfaceTerminal = te; final GuiScrollbar scrollbar = new GuiScrollbar(); this.setScrollBar( scrollbar ); - this.xSize = 195; - this.ySize = 236; + this.xSize = 208; + this.ySize = 256; } @Override @@ -92,19 +94,18 @@ public class GuiInterfaceTerminal extends AEBaseGui { super.initGui(); - this.getScrollBar().setLeft( 175 ); + this.getScrollBar().setLeft( 190 ); this.getScrollBar().setHeight( 106 ); - this.getScrollBar().setTop( 32 ); + this.getScrollBar().setTop( 51 ); - this.searchFieldInputs = new MEGuiTextField( this.fontRenderer, this.guiLeft + Math.max( 16, this.offsetX ), this.guiTop + 18, 65, 12 ); + this.searchFieldInputs = new MEGuiTextField( this.fontRenderer, this.guiLeft + Math.max( 32, this.offsetX ), this.guiTop + 25, 65, 12 ); this.searchFieldInputs.setEnableBackgroundDrawing( false ); this.searchFieldInputs.setMaxStringLength( 25 ); this.searchFieldInputs.setTextColor( 0xFFFFFF ); this.searchFieldInputs.setVisible( true ); this.searchFieldInputs.setFocused( false ); -// this.searchFieldOutputs = new MEGuiTextField( this.fontRenderer, this.guiLeft + Math.max( 105, this.offsetX ), this.guiTop + 4, 65, 12 ); - this.searchFieldOutputs = new MEGuiTextField( this.fontRenderer, this.guiLeft + Math.max( 94, this.offsetX ), this.guiTop + 18, 65, 12 ); + this.searchFieldOutputs = new MEGuiTextField( this.fontRenderer, this.guiLeft + Math.max( 32, this.offsetX ), this.guiTop + 38, 65, 12 ); this.searchFieldOutputs.setEnableBackgroundDrawing( false ); this.searchFieldOutputs.setMaxStringLength( 25 ); this.searchFieldOutputs.setTextColor( 0xFFFFFF ); @@ -122,32 +123,35 @@ public class GuiInterfaceTerminal extends AEBaseGui super.onGuiClosed(); } + @Override + protected boolean isPointInRegion( int rectX, int rectY, int rectWidth, int rectHeight, int pointX, int pointY ) + { + if( searchFieldInputs.isMouseIn( pointX, pointY ) ) drawTooltip( pointX - guiLeft - offsetX, pointY - guiTop , "Inputs OR names" ); + else if( searchFieldOutputs.isMouseIn( pointX, pointY ) ) drawTooltip( pointX - guiLeft - offsetX, pointY - guiTop, "Outputs OR names" ); + return super.isPointInRegion( rectX, rectY, rectWidth, rectHeight, pointX, pointY ); + } + @Override public void drawFG( final int offsetX, final int offsetY, final int mouseX, final int mouseY ) { this.buttonList.clear(); this.fontRenderer.drawString( this.getGuiDisplayName( GuiText.InterfaceTerminal.getLocal() ), 8, 6, 4210752 ); - this.fontRenderer.drawString( GuiText.inventory.getLocal(), 8, this.ySize - 96 + 3, 4210752 ); + this.fontRenderer.drawString( GuiText.inventory.getLocal(), offsetX, this.ySize - 96 + 3, 4210752 ); final int ex = this.getScrollBar().getCurrentScroll(); - this.guiButtonNextAssembler = new GuiButton( -1, guiLeft + 110, guiTop + 4, 12, 12, "M" ); + this.guiButtonNextAssembler = new GuiImgButton(guiLeft + 123, guiTop + 25,Settings.ACTIONS, ActionItems.FREE_MOLECULAR_SLOT_SHORTCUT); this.buttonList.add( guiButtonNextAssembler ); - this.guiButtonHide = new GuiButton( -1, guiLeft + 128, guiTop + 4, 60, 12, "Hide Full" ); + guiButtonHide = new GuiImgButton( guiLeft + 141, guiTop + 25,Settings.ACTIONS, this.partInterfaceTerminal.onlyInterfacesWithFreeSlots ? + ActionItems.TOGGLE_SHOW_FULL_INTERFACES_OFF : + ActionItems.TOGGLE_SHOW_FULL_INTERFACES_ON); this.buttonList.add( guiButtonHide ); - final Iterator o = this.inventorySlots.inventorySlots.iterator(); - while( o.hasNext() ) - { - if( o.next() instanceof SlotDisconnected ) - { - o.remove(); - } - } + this.inventorySlots.inventorySlots.removeIf( slot -> slot instanceof SlotDisconnected ); - int offset = 32; + int offset = 51; for( int x = 0; x < LINES_ON_PAGE && ex + x < this.lines.size(); x++ ) { final Object lineObj = this.lines.get( ex + x ); @@ -156,9 +160,10 @@ public class GuiInterfaceTerminal extends AEBaseGui final ClientDCInternalInv inv = (ClientDCInternalInv) lineObj; for( int z = 0; z < inv.getInventory().getSlots(); z++ ) { - this.inventorySlots.inventorySlots.add( new SlotDisconnected( inv, z, z * 18 + 8, 1 + offset ) ); + this.inventorySlots.inventorySlots.add( new SlotDisconnected( inv, z, z * 18 + 22, 1 + offset ) ); } - GuiButton guiButton = new GuiButton( x, guiLeft + 1, guiTop + offset + 3, 8, 10, "?" ); + + GuiButton guiButton = new GuiImgButton(guiLeft + 4, guiTop + offset + 1, Settings.ACTIONS, ActionItems.HIGHLIGHT_INTERFACE); guiButtonHashMap.put( guiButton , inv); this.buttonList.add( guiButton ); @@ -177,7 +182,7 @@ public class GuiInterfaceTerminal extends AEBaseGui name = name.substring( 0, name.length() - 1 ); } - this.fontRenderer.drawString( name, 10, 6 + offset, 4210752 ); + this.fontRenderer.drawString( name, 22, 6 + offset, 4210752 ); } offset += 18; } @@ -213,7 +218,7 @@ public class GuiInterfaceTerminal extends AEBaseGui BlockPos blockPos = blockPosHashMap.get( guiButtonHashMap.get( this.selectedButton ) ); BlockPos blockPos2 = mc.player.getPosition(); hilightBlock( blockPos, System.currentTimeMillis() + 500 * BlockPosUtils.getDistance(blockPos, blockPos2) ); - mc.player.sendStatusMessage( new TextComponentString( "The interface is now highlighted at " + "X: " + blockPos.getX() + "Y: " + blockPos.getY() + "Z: " + blockPos.getZ() ), false ); + mc.player.sendStatusMessage( new TextComponentString( "The interface is now highlighted at " + "X: " + blockPos.getX() + " Y: " + blockPos.getY() + " Z: " + blockPos.getZ() ), false ); mc.player.closeScreen(); } @@ -245,7 +250,7 @@ public class GuiInterfaceTerminal extends AEBaseGui this.bindTexture( "guis/newinterfaceterminal.png" ); this.drawTexturedModalRect( offsetX, offsetY, 0, 0, this.xSize, this.ySize ); - int offset = 32; + int offset = 51; final int ex = this.getScrollBar().getCurrentScroll(); for( int x = 0; x < LINES_ON_PAGE && ex + x < this.lines.size(); x++ ) @@ -257,7 +262,7 @@ public class GuiInterfaceTerminal extends AEBaseGui GlStateManager.color( 1, 1, 1, 1 ); final int width = inv.getInventory().getSlots() * 18; - this.drawTexturedModalRect( offsetX + 7, offsetY + offset, 7, 153, width, 18 ); + this.drawTexturedModalRect( offsetX + 20, offsetY + offset, 20, 173, width, 18 ); } offset += 18; } diff --git a/src/main/java/appeng/client/gui/widgets/GuiImgButton.java b/src/main/java/appeng/client/gui/widgets/GuiImgButton.java index 4f992b3d1..d060b584c 100644 --- a/src/main/java/appeng/client/gui/widgets/GuiImgButton.java +++ b/src/main/java/appeng/client/gui/widgets/GuiImgButton.java @@ -142,6 +142,11 @@ public class GuiImgButton extends GuiButton implements ITooltip this.registerApp( 11 + 4 * 16, Settings.ACTIONS, ActionItems.DECREASE_BY_ONE, ButtonToolTips.DecreaseByOne, ButtonToolTips.DecreaseByOneDesc ); this.registerApp( 12 + 4 * 16, Settings.ACTIONS, ActionItems.MAX_COUNT, ButtonToolTips.MaxCount, ButtonToolTips.MaxCountDesc ); + this.registerApp( 6 + 5 * 16, Settings.ACTIONS, ActionItems.FREE_MOLECULAR_SLOT_SHORTCUT, ButtonToolTips.FreeMolecularSlotShortcut, ButtonToolTips.FreeMolecularSlotShortcutDesc ); + this.registerApp( 7 + 5 * 16, Settings.ACTIONS, ActionItems.TOGGLE_SHOW_FULL_INTERFACES_ON, ButtonToolTips.ToggleShowFullInterfaces, ButtonToolTips.ToggleShowFullInterfacesOnDesc ); + this.registerApp( 8 + 5 * 16, Settings.ACTIONS, ActionItems.TOGGLE_SHOW_FULL_INTERFACES_OFF, ButtonToolTips.ToggleShowFullInterfaces, ButtonToolTips.ToggleShowFullInterfacesOffDesc ); + this.registerApp( 6 + 6 * 16, Settings.ACTIONS, ActionItems.HIGHLIGHT_INTERFACE, ButtonToolTips.HighlightInterface, "" ); + this.registerApp( 8, Settings.ACTIONS, ActionItems.ENCODE, ButtonToolTips.Encode, ButtonToolTips.EncodeDescription ); this.registerApp( 4 + 3 * 16, Settings.ACTIONS, ItemSubstitution.ENABLED, ButtonToolTips.Substitutions, ButtonToolTips.SubstitutionsDescEnabled ); this.registerApp( 7 + 3 * 16, Settings.ACTIONS, ItemSubstitution.DISABLED, ButtonToolTips.Substitutions, ButtonToolTips.SubstitutionsDescDisabled ); diff --git a/src/main/java/appeng/container/implementations/ContainerInterfaceTerminal.java b/src/main/java/appeng/container/implementations/ContainerInterfaceTerminal.java index d7d52a89a..78a397430 100644 --- a/src/main/java/appeng/container/implementations/ContainerInterfaceTerminal.java +++ b/src/main/java/appeng/container/implementations/ContainerInterfaceTerminal.java @@ -80,7 +80,7 @@ public final class ContainerInterfaceTerminal extends AEBaseContainer this.grid = anchor.getActionableNode().getGrid(); } - this.bindPlayerInventory( ip, 0, 236 - /* height of player inventory */82 ); + this.bindPlayerInventory( ip, 14, 256 - /* height of player inventory */82 ); } @Override @@ -258,7 +258,7 @@ public final class ContainerInterfaceTerminal extends AEBaseContainer if( hasItemInHand ) { ItemStack extra = playerHand.removeItems( 1, ItemStack.EMPTY, null ); - if( !extra.isEmpty() ) + if( !extra.isEmpty() && !interfaceSlot.containsItems()) { extra = interfaceSlot.addItems( extra ); } diff --git a/src/main/java/appeng/core/localization/ButtonToolTips.java b/src/main/java/appeng/core/localization/ButtonToolTips.java index 77083b5e1..03afa271a 100644 --- a/src/main/java/appeng/core/localization/ButtonToolTips.java +++ b/src/main/java/appeng/core/localization/ButtonToolTips.java @@ -19,6 +19,7 @@ package appeng.core.localization; +import appeng.api.config.SchedulingMode; import net.minecraft.util.text.translation.I18n; @@ -151,6 +152,13 @@ public enum ButtonToolTips DecreaseByOneDesc, MaxCount, MaxCountDesc, + FreeMolecularSlotShortcut, + FreeMolecularSlotShortcutDesc, + ToggleShowFullInterfaces, + ToggleShowFullInterfacesOnDesc, + ToggleShowFullInterfacesOffDesc, + HighlightInterface, + HighlightInterfaceDesc, // Used in the tooltips of the items in the terminal, when moused over ItemsStored, diff --git a/src/main/java/appeng/core/sync/packets/PacketJEIRecipe.java b/src/main/java/appeng/core/sync/packets/PacketJEIRecipe.java index 1075d97fd..19e900252 100644 --- a/src/main/java/appeng/core/sync/packets/PacketJEIRecipe.java +++ b/src/main/java/appeng/core/sync/packets/PacketJEIRecipe.java @@ -262,9 +262,12 @@ public class PacketJEIRecipe extends AppEngPacket } } } - if( currentItem.isEmpty() && this.recipe[x] != null) + if (!cct.useRealItems()) { - currentItem = this.recipe[x][0].copy(); + if( currentItem.isEmpty() && this.recipe[x] != null ) + { + currentItem = this.recipe[x][0].copy(); + } } } ItemHandlerUtil.setStackInSlot( craftMatrix, x, currentItem ); diff --git a/src/main/resources/assets/appliedenergistics2/lang/en_us.lang b/src/main/resources/assets/appliedenergistics2/lang/en_us.lang index 7419d2ee3..d1c595417 100644 --- a/src/main/resources/assets/appliedenergistics2/lang/en_us.lang +++ b/src/main/resources/assets/appliedenergistics2/lang/en_us.lang @@ -363,6 +363,12 @@ gui.tooltips.appliedenergistics2.DecreaseByOne=Decrease one gui.tooltips.appliedenergistics2.DecreaseByOneDesc=Will try to add decrease the items set in the crafting slots by one DOES NOT MAINTAIN INGREDIENT RATIO gui.tooltips.appliedenergistics2.MaxCount=Maximize slot count gui.tooltips.appliedenergistics2.MaxCountDesc=Will maximize the output maintaing the input ratio of the items set in the crafting slots +gui.tooltips.appliedenergistics2.FreeMolecularSlotShortcut=Show Crafting interfaces with free slots +gui.tooltips.appliedenergistics2.FreeMolecularSlotShortcutDesc=Shortcut that toggles interfaces with free slots and searches for molecular assemblers +gui.tooltips.appliedenergistics2.ToggleShowFullInterfaces=Toggles showing interfaces with full slots +gui.tooltips.appliedenergistics2.ToggleShowFullInterfacesOnDesc=Showing all interfaces +gui.tooltips.appliedenergistics2.ToggleShowFullInterfacesOffDesc=Showing only interfaces with free slots +gui.tooltips.appliedenergistics2.HighlightInterface=Highlight interface // Units gui.appliedenergistics2.units.appliedenergstics=AE diff --git a/src/main/resources/assets/appliedenergistics2/textures/guis/newinterfaceterminal.png b/src/main/resources/assets/appliedenergistics2/textures/guis/newinterfaceterminal.png index aed3dec25..9d0f70c42 100644 Binary files a/src/main/resources/assets/appliedenergistics2/textures/guis/newinterfaceterminal.png and b/src/main/resources/assets/appliedenergistics2/textures/guis/newinterfaceterminal.png differ diff --git a/src/main/resources/assets/appliedenergistics2/textures/guis/states.png b/src/main/resources/assets/appliedenergistics2/textures/guis/states.png index 6afe646bc..7092ea744 100644 Binary files a/src/main/resources/assets/appliedenergistics2/textures/guis/states.png and b/src/main/resources/assets/appliedenergistics2/textures/guis/states.png differ