From 104d6fc34d1018211d90d3876d4c15e8f34e833d Mon Sep 17 00:00:00 2001 From: PrototypeTrousers Date: Fri, 12 Aug 2022 23:01:35 -0300 Subject: [PATCH] Implement Interface Configuration Terminal --- ...=> GuiInterfaceConfigurationTerminal.java} | 82 ++++++------------ ...tainerInterfaceConfigurationTerminal.java} | 15 ++-- .../appeng/core/api/definitions/ApiParts.java | 4 +- src/main/java/appeng/core/sync/GuiBridge.java | 2 +- .../sync/packets/PacketCompressedNBT.java | 6 +- .../sync/packets/PacketInventoryAction.java | 8 +- .../java/appeng/items/parts/PartType.java | 2 +- ...> PartInterfaceConfigurationTerminal.java} | 10 +-- .../appliedenergistics2/lang/en_us.lang | 1 + .../interface_configuration_terminal.json | 9 ++ .../interface_configuration_terminal_off.json | 8 ++ .../interface_configuration_terminal_on.json | 76 ++++++++++++++++ .../terminals_interface_configuration.json | 19 ++++ ...minals_interface_configuration_revert.json | 19 ++++ .../guis/interfaceconfigurationterminal.png | Bin 0 -> 11891 bytes ...nterface_configuration_terminal_bright.png | Bin 0 -> 5123 bytes .../interface_configuration_terminal_dark.png | Bin 0 -> 205 bytes ...nterface_configuration_terminal_medium.png | Bin 0 -> 5092 bytes 18 files changed, 182 insertions(+), 79 deletions(-) rename src/main/java/appeng/client/gui/implementations/{GuiConfiguringTerminal.java => GuiInterfaceConfigurationTerminal.java} (88%) rename src/main/java/appeng/container/implementations/{ContainerConfiguringTerminal.java => ContainerInterfaceConfigurationTerminal.java} (95%) rename src/main/java/appeng/parts/reporting/{PartConfiguringTerminal.java => PartInterfaceConfigurationTerminal.java} (87%) create mode 100644 src/main/resources/assets/appliedenergistics2/models/item/part/interface_configuration_terminal.json create mode 100644 src/main/resources/assets/appliedenergistics2/models/part/interface_configuration_terminal_off.json create mode 100644 src/main/resources/assets/appliedenergistics2/models/part/interface_configuration_terminal_on.json create mode 100644 src/main/resources/assets/appliedenergistics2/recipes/network/parts/terminals_interface_configuration.json create mode 100644 src/main/resources/assets/appliedenergistics2/recipes/network/parts/terminals_interface_configuration_revert.json create mode 100644 src/main/resources/assets/appliedenergistics2/textures/guis/interfaceconfigurationterminal.png create mode 100644 src/main/resources/assets/appliedenergistics2/textures/parts/interface_configuration_terminal_bright.png create mode 100644 src/main/resources/assets/appliedenergistics2/textures/parts/interface_configuration_terminal_dark.png create mode 100644 src/main/resources/assets/appliedenergistics2/textures/parts/interface_configuration_terminal_medium.png diff --git a/src/main/java/appeng/client/gui/implementations/GuiConfiguringTerminal.java b/src/main/java/appeng/client/gui/implementations/GuiInterfaceConfigurationTerminal.java similarity index 88% rename from src/main/java/appeng/client/gui/implementations/GuiConfiguringTerminal.java rename to src/main/java/appeng/client/gui/implementations/GuiInterfaceConfigurationTerminal.java index 9bfc99b2d..11386a198 100644 --- a/src/main/java/appeng/client/gui/implementations/GuiConfiguringTerminal.java +++ b/src/main/java/appeng/client/gui/implementations/GuiInterfaceConfigurationTerminal.java @@ -26,23 +26,14 @@ import java.util.List; import appeng.api.config.ActionItems; import appeng.api.config.Settings; -import appeng.api.config.Upgrades; -import appeng.api.storage.data.IAEItemStack; import appeng.client.gui.widgets.GuiImgButton; -import appeng.client.me.SlotME; -import appeng.container.AEBaseContainer; -import appeng.container.implementations.ContainerConfiguringTerminal; +import appeng.container.implementations.ContainerInterfaceConfigurationTerminal; import appeng.container.interfaces.IJEIGhostIngredients; -import appeng.container.slot.SlotFake; import appeng.core.sync.network.NetworkHandler; import appeng.core.sync.packets.PacketInventoryAction; -import appeng.core.worlddata.IWorldPlayerMapping; import appeng.helpers.DualityInterface; import appeng.helpers.InventoryAction; -import appeng.parts.misc.PartInterface; -import appeng.parts.reporting.PartConfiguringTerminal; -import appeng.tile.inventory.AppEngInternalInventory; -import appeng.tile.misc.TileInterface; +import appeng.parts.reporting.PartInterfaceConfigurationTerminal; import appeng.util.BlockPosUtils; import appeng.util.item.AEItemStack; import com.google.common.collect.HashMultimap; @@ -54,7 +45,6 @@ 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; import appeng.api.AEApi; import appeng.api.storage.channels.IItemStorageChannel; @@ -63,9 +53,7 @@ import appeng.client.gui.widgets.GuiScrollbar; import appeng.client.gui.widgets.MEGuiTextField; import appeng.client.me.ClientDCInternalInv; import appeng.client.me.SlotDisconnected; -import appeng.container.implementations.ContainerInterfaceTerminal; import appeng.core.localization.GuiText; -import appeng.parts.reporting.PartInterfaceTerminal; import appeng.util.Platform; import net.minecraft.nbt.NBTUtil; import net.minecraft.util.math.BlockPos; @@ -77,7 +65,7 @@ import org.lwjgl.input.Mouse; import static appeng.client.render.BlockPosHighlighter.hilightBlock; -public class GuiConfiguringTerminal extends AEBaseGui implements IJEIGhostIngredients +public class GuiInterfaceConfigurationTerminal extends AEBaseGui implements IJEIGhostIngredients { private static final int LINES_ON_PAGE = 6; @@ -98,19 +86,19 @@ public class GuiConfiguringTerminal extends AEBaseGui implements IJEIGhostIngred private boolean refreshList = false; private MEGuiTextField searchFieldInputs; - private PartConfiguringTerminal partInterfaceTerminal; + private PartInterfaceConfigurationTerminal partInterfaceTerminal; private HashMap dimHashMap = new HashMap<>(); public Map, Object> mapTargetSlot = new HashMap<>(); - public GuiConfiguringTerminal( final InventoryPlayer inventoryPlayer, final PartConfiguringTerminal te ) + public GuiInterfaceConfigurationTerminal( final InventoryPlayer inventoryPlayer, final PartInterfaceConfigurationTerminal te ) { - super( new ContainerConfiguringTerminal( inventoryPlayer, te ) ); + super( new ContainerInterfaceConfigurationTerminal( inventoryPlayer, te ) ); this.partInterfaceTerminal = te; final GuiScrollbar scrollbar = new GuiScrollbar(); this.setScrollBar( scrollbar ); this.xSize = 208; - this.ySize = 255; + this.ySize = 235; } @Override @@ -120,9 +108,9 @@ public class GuiConfiguringTerminal extends AEBaseGui implements IJEIGhostIngred this.getScrollBar().setLeft( 189 ); this.getScrollBar().setHeight( 106 ); - this.getScrollBar().setTop( 51 ); + this.getScrollBar().setTop( 31 ); - this.searchFieldInputs = new MEGuiTextField( this.fontRenderer, this.guiLeft + Math.max( 32, this.offsetX ), this.guiTop + 25, 65, 12 ); + this.searchFieldInputs = new MEGuiTextField( this.fontRenderer, this.guiLeft + Math.max( 32, this.offsetX ), this.guiTop + 17, 65, 12 ); this.searchFieldInputs.setEnableBackgroundDrawing( false ); this.searchFieldInputs.setMaxStringLength( 25 ); this.searchFieldInputs.setTextColor( 0xFFFFFF ); @@ -151,7 +139,7 @@ public class GuiConfiguringTerminal extends AEBaseGui implements IJEIGhostIngred this.inventorySlots.inventorySlots.removeIf( slot -> slot instanceof SlotDisconnected ); - int offset = 52; + int offset = 30; int linesDraw = 0; for( int x = 0; x < LINES_ON_PAGE && linesDraw < LINES_ON_PAGE && currentScroll + x < this.lines.size(); x++ ) { @@ -270,10 +258,10 @@ public class GuiConfiguringTerminal extends AEBaseGui implements IJEIGhostIngred @Override public void drawBG( final int offsetX, final int offsetY, final int mouseX, final int mouseY ) { - this.bindTexture( "guis/newinterfaceterminal.png" ); + this.bindTexture( "guis/interfaceconfigurationterminal.png" ); this.drawTexturedModalRect( offsetX, offsetY, 0, 0, this.xSize, this.ySize ); - int offset = 51; + int offset = 29; final int ex = this.getScrollBar().getCurrentScroll(); int linesDraw = 0; for( int x = 0; x < LINES_ON_PAGE && linesDraw < LINES_ON_PAGE && ex + x < this.lines.size(); x++ ) @@ -288,7 +276,7 @@ public class GuiConfiguringTerminal extends AEBaseGui implements IJEIGhostIngred for( int row = 0; row < 1 + extraLines && linesDraw < LINES_ON_PAGE; ++row ) { - this.drawTexturedModalRect( offsetX + 20, offsetY + offset, 20, 173, width, 18 ); + this.drawTexturedModalRect( offsetX + 20, offsetY + offset, 20, 170, width, 18 ); offset += 18; linesDraw++; } @@ -461,42 +449,26 @@ public class GuiConfiguringTerminal extends AEBaseGui implements IJEIGhostIngred return false; } - final NBTTagCompound encodedValue = itemStack.getTagCompound(); - - if( encodedValue == null ) - { - return false; - } - - NBTTagList tag = encodedValue.getTagList( "in", 10 ); - boolean foundMatchingItemStack = false; - for( int i = 0; i < tag.tagCount(); i++ ) - { - final ItemStack parsedItemStack = new ItemStack( tag.getCompoundTagAt( i ) ); - if( !parsedItemStack.isEmpty() ) - { - final String displayName = Platform - .getItemDisplayName( AEApi.instance().storage().getStorageChannel( IItemStorageChannel.class ).createStack( parsedItemStack ) ) - .toLowerCase(); + final String displayName = Platform + .getItemDisplayName( AEApi.instance().storage().getStorageChannel( IItemStorageChannel.class ).createStack( itemStack ) ) + .toLowerCase(); - for( String term : searchTerm.split( " " ) ) + for( String term : searchTerm.split( " " ) ) + { + if( term.length() > 1 && ( term.startsWith( "-" ) || term.startsWith( "!" ) ) ) + { + term = term.substring( 1 ); + if( displayName.contains( term ) ) { - if( term.length() > 1 && ( term.startsWith( "-" ) || term.startsWith( "!" ) ) ) - { - term = term.substring( 1 ); - if( displayName.contains( term ) ) - { - return false; - } - } - else if( displayName.contains( term ) ) - { - foundMatchingItemStack = true; - } + return false; } } + else if( displayName.contains( term ) ) + { + foundMatchingItemStack = true; + } } return foundMatchingItemStack; } diff --git a/src/main/java/appeng/container/implementations/ContainerConfiguringTerminal.java b/src/main/java/appeng/container/implementations/ContainerInterfaceConfigurationTerminal.java similarity index 95% rename from src/main/java/appeng/container/implementations/ContainerConfiguringTerminal.java rename to src/main/java/appeng/container/implementations/ContainerInterfaceConfigurationTerminal.java index 06b07eecc..3d58757ad 100644 --- a/src/main/java/appeng/container/implementations/ContainerConfiguringTerminal.java +++ b/src/main/java/appeng/container/implementations/ContainerInterfaceConfigurationTerminal.java @@ -24,7 +24,7 @@ import java.util.HashMap; import java.util.Map; import java.util.Map.Entry; -import appeng.parts.reporting.PartConfiguringTerminal; +import appeng.parts.reporting.PartInterfaceConfigurationTerminal; import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.entity.player.InventoryPlayer; import net.minecraft.item.ItemStack; @@ -47,15 +47,12 @@ import appeng.helpers.InventoryAction; import appeng.parts.misc.PartInterface; import appeng.tile.inventory.AppEngInternalInventory; import appeng.tile.misc.TileInterface; -import appeng.util.InventoryAdaptor; import appeng.util.Platform; import appeng.util.helpers.ItemHandlerUtil; -import appeng.util.inv.AdaptorItemHandler; -import appeng.util.inv.WrapperCursorItemHandler; import appeng.util.inv.WrapperRangeItemHandler; -public final class ContainerConfiguringTerminal extends AEBaseContainer +public final class ContainerInterfaceConfigurationTerminal extends AEBaseContainer { /** @@ -68,7 +65,7 @@ public final class ContainerConfiguringTerminal extends AEBaseContainer private IGrid grid; private NBTTagCompound data = new NBTTagCompound(); - public ContainerConfiguringTerminal( final InventoryPlayer ip, final PartConfiguringTerminal anchor ) + public ContainerInterfaceConfigurationTerminal( final InventoryPlayer ip, final PartInterfaceConfigurationTerminal anchor ) { super( ip, anchor ); @@ -77,7 +74,7 @@ public final class ContainerConfiguringTerminal extends AEBaseContainer this.grid = anchor.getActionableNode().getGrid(); } - this.bindPlayerInventory( ip, 14, 256 - /* height of player inventory */82 ); + this.bindPlayerInventory( ip, 14, 235 - /* height of player inventory */82 ); } @Override @@ -250,7 +247,9 @@ public final class ContainerConfiguringTerminal extends AEBaseContainer } else { - ItemHandlerUtil.setStackInSlot( theSlot, 0, player.inventory.getItemStack().copy() ); + ItemStack configuredStack = player.inventory.getItemStack().copy(); + configuredStack.setCount( 1 ); + ItemHandlerUtil.setStackInSlot( theSlot, 0, configuredStack ); } } diff --git a/src/main/java/appeng/core/api/definitions/ApiParts.java b/src/main/java/appeng/core/api/definitions/ApiParts.java index bd80fc901..3a1f984c7 100644 --- a/src/main/java/appeng/core/api/definitions/ApiParts.java +++ b/src/main/java/appeng/core/api/definitions/ApiParts.java @@ -80,7 +80,7 @@ public final class ApiParts implements IParts private final IItemDefinition interfaceTerminal; private final IItemDefinition patternTerminal; private final IItemDefinition expandedProcessingPatternTerminal; - private final IItemDefinition configuringInterfaceTerminal; + private final IItemDefinition interfaceConfigurationTerminal; private final IItemDefinition craftingTerminal; private final IItemDefinition terminal; private final IItemDefinition storageMonitor; @@ -143,7 +143,7 @@ public final class ApiParts implements IParts this.interfaceTerminal = new DamagedItemDefinition( "part.terminal.interface", itemPart.createPart( PartType.INTERFACE_TERMINAL ) ); this.patternTerminal = new DamagedItemDefinition( "part.terminal.pattern", itemPart.createPart( PartType.PATTERN_TERMINAL ) ); this.expandedProcessingPatternTerminal = new DamagedItemDefinition( "part.terminal.expanded_processing_pattern", itemPart.createPart( PartType.EXPANDED_PROCESSING_PATTERN_TERMINAL ) ); - this.configuringInterfaceTerminal = new DamagedItemDefinition( "part.terminal.configuring_interface_terminal", itemPart.createPart( PartType.CONFIGURING_INTERFACE_TERMINAL ) ); + this.interfaceConfigurationTerminal = new DamagedItemDefinition( "part.terminal.interface_configuration_terminal", itemPart.createPart( PartType.INTERFACE_CONFIGURATION_TERMINAL ) ); this.craftingTerminal = new DamagedItemDefinition( "part.terminal.crafting", itemPart.createPart( PartType.CRAFTING_TERMINAL ) ); this.terminal = new DamagedItemDefinition( "part.terminal", itemPart.createPart( PartType.TERMINAL ) ); this.storageMonitor = new DamagedItemDefinition( "part.monitor.storage", itemPart.createPart( PartType.STORAGE_MONITOR ) ); diff --git a/src/main/java/appeng/core/sync/GuiBridge.java b/src/main/java/appeng/core/sync/GuiBridge.java index d27da3d48..37d935d18 100644 --- a/src/main/java/appeng/core/sync/GuiBridge.java +++ b/src/main/java/appeng/core/sync/GuiBridge.java @@ -179,7 +179,7 @@ public enum GuiBridge implements IGuiHandler GUI_CRAFTING_STATUS( ContainerCraftingStatus.class, ITerminalHost.class, GuiHostType.ITEM_OR_WORLD, SecurityPermissions.CRAFT ), - GUI_CONFIG_INTERFACE_TERMINAL( ContainerConfiguringTerminal.class, PartConfiguringTerminal.class, GuiHostType.WORLD, SecurityPermissions.BUILD ); + GUI_INTERFACE_CONFIGURATION_TERMINAL( ContainerInterfaceConfigurationTerminal.class, PartInterfaceConfigurationTerminal.class, GuiHostType.WORLD, SecurityPermissions.BUILD ); private final Class tileClass; private final Class containerClass; diff --git a/src/main/java/appeng/core/sync/packets/PacketCompressedNBT.java b/src/main/java/appeng/core/sync/packets/PacketCompressedNBT.java index c89c6433d..c661f5b1c 100644 --- a/src/main/java/appeng/core/sync/packets/PacketCompressedNBT.java +++ b/src/main/java/appeng/core/sync/packets/PacketCompressedNBT.java @@ -27,7 +27,7 @@ import java.io.OutputStream; import java.util.zip.GZIPInputStream; import java.util.zip.GZIPOutputStream; -import appeng.client.gui.implementations.GuiConfiguringTerminal; +import appeng.client.gui.implementations.GuiInterfaceConfigurationTerminal; import io.netty.buffer.ByteBuf; import io.netty.buffer.Unpooled; @@ -114,9 +114,9 @@ public class PacketCompressedNBT extends AppEngPacket { ( (GuiInterfaceTerminal) gs ).postUpdate( this.in ); } - else if( gs instanceof GuiConfiguringTerminal ) + else if( gs instanceof GuiInterfaceConfigurationTerminal ) { - ( (GuiConfiguringTerminal) gs ).postUpdate( this.in ); + ( (GuiInterfaceConfigurationTerminal) gs ).postUpdate( this.in ); } } } diff --git a/src/main/java/appeng/core/sync/packets/PacketInventoryAction.java b/src/main/java/appeng/core/sync/packets/PacketInventoryAction.java index 150717f48..e273df7c4 100644 --- a/src/main/java/appeng/core/sync/packets/PacketInventoryAction.java +++ b/src/main/java/appeng/core/sync/packets/PacketInventoryAction.java @@ -24,8 +24,8 @@ import java.util.Collections; import appeng.api.storage.data.IAEFluidStack; import appeng.client.me.SlotDisconnected; -import appeng.container.implementations.ContainerConfiguringTerminal; -import appeng.container.implementations.ContainerConfiguringTerminal.ConfigTracker; +import appeng.container.implementations.ContainerInterfaceConfigurationTerminal; +import appeng.container.implementations.ContainerInterfaceConfigurationTerminal.ConfigTracker; import appeng.container.slot.IJEITargetSlot; import appeng.container.slot.SlotFake; import appeng.core.AELog; @@ -223,9 +223,9 @@ public class PacketInventoryAction extends AppEngPacket } } } - else if( sender.openContainer instanceof ContainerConfiguringTerminal ) + else if( sender.openContainer instanceof ContainerInterfaceConfigurationTerminal ) { - ConfigTracker inv = ( (ContainerConfiguringTerminal) sender.openContainer ).getSlotByID( this.id ); + ConfigTracker inv = ( (ContainerInterfaceConfigurationTerminal) sender.openContainer ).getSlotByID( this.id ); final IItemHandler theSlot = new WrapperRangeItemHandler( inv.getServer(), 0, slot + 1 ); ItemHandlerUtil.setStackInSlot( theSlot, this.slot, this.slotItem.createItemStack() ); diff --git a/src/main/java/appeng/items/parts/PartType.java b/src/main/java/appeng/items/parts/PartType.java index 1bb8400c7..b4fe37eb3 100644 --- a/src/main/java/appeng/items/parts/PartType.java +++ b/src/main/java/appeng/items/parts/PartType.java @@ -285,7 +285,7 @@ public enum PartType INTERFACE_TERMINAL( 480, "interface_terminal", EnumSet.of( AEFeature.INTERFACE_TERMINAL ), EnumSet.noneOf( IntegrationType.class ), PartInterfaceTerminal.class ), FLUID_TERMINAL( 520, "fluid_terminal", EnumSet.of( AEFeature.FLUID_TERMINAL ), EnumSet.noneOf( IntegrationType.class ), PartFluidTerminal.class ), - CONFIGURING_INTERFACE_TERMINAL( 521, "configuring_interface_terminal", EnumSet.of( AEFeature.INTERFACE_TERMINAL ), EnumSet.noneOf( IntegrationType.class ), PartConfiguringTerminal.class ); + INTERFACE_CONFIGURATION_TERMINAL( 521, "interface_configuration_terminal", EnumSet.of( AEFeature.INTERFACE_TERMINAL ), EnumSet.noneOf( IntegrationType.class ), PartInterfaceConfigurationTerminal.class ); private final int baseDamage; private final Set features; diff --git a/src/main/java/appeng/parts/reporting/PartConfiguringTerminal.java b/src/main/java/appeng/parts/reporting/PartInterfaceConfigurationTerminal.java similarity index 87% rename from src/main/java/appeng/parts/reporting/PartConfiguringTerminal.java rename to src/main/java/appeng/parts/reporting/PartInterfaceConfigurationTerminal.java index 15d156fc2..44c73f0f3 100644 --- a/src/main/java/appeng/parts/reporting/PartConfiguringTerminal.java +++ b/src/main/java/appeng/parts/reporting/PartInterfaceConfigurationTerminal.java @@ -33,20 +33,20 @@ import appeng.parts.PartModel; import appeng.util.Platform; -public class PartConfiguringTerminal extends AbstractPartDisplay +public class PartInterfaceConfigurationTerminal extends AbstractPartDisplay { @PartModels - public static final ResourceLocation MODEL_OFF = new ResourceLocation( AppEng.MOD_ID, "part/interface_terminal_off" ); + public static final ResourceLocation MODEL_OFF = new ResourceLocation( AppEng.MOD_ID, "part/interface_configuration_terminal_off" ); @PartModels - public static final ResourceLocation MODEL_ON = new ResourceLocation( AppEng.MOD_ID, "part/interface_terminal_on" ); + public static final ResourceLocation MODEL_ON = new ResourceLocation( AppEng.MOD_ID, "part/interface_configuration_terminal_on" ); public static final IPartModel MODELS_OFF = new PartModel( MODEL_BASE, MODEL_OFF, MODEL_STATUS_OFF ); public static final IPartModel MODELS_ON = new PartModel( MODEL_BASE, MODEL_ON, MODEL_STATUS_ON ); public static final IPartModel MODELS_HAS_CHANNEL = new PartModel( MODEL_BASE, MODEL_ON, MODEL_STATUS_HAS_CHANNEL ); public String in = ""; - public PartConfiguringTerminal( final ItemStack is ) + public PartInterfaceConfigurationTerminal( final ItemStack is ) { super( is ); } @@ -58,7 +58,7 @@ public class PartConfiguringTerminal extends AbstractPartDisplay { if( Platform.isServer() ) { - Platform.openGUI( player, this.getHost().getTile(), this.getSide(), GuiBridge.GUI_CONFIG_INTERFACE_TERMINAL ); + Platform.openGUI( player, this.getHost().getTile(), this.getSide(), GuiBridge.GUI_INTERFACE_CONFIGURATION_TERMINAL ); } } return true; diff --git a/src/main/resources/assets/appliedenergistics2/lang/en_us.lang b/src/main/resources/assets/appliedenergistics2/lang/en_us.lang index 64732d60f..b19d5d619 100644 --- a/src/main/resources/assets/appliedenergistics2/lang/en_us.lang +++ b/src/main/resources/assets/appliedenergistics2/lang/en_us.lang @@ -549,6 +549,7 @@ item.appliedenergistics2.multi_part.inverted_toggle_bus.name=ME Inverted Toggle item.appliedenergistics2.multi_part.toggle_bus.name=ME Toggle Bus item.appliedenergistics2.multi_part.crafting_monitor.name=ME Crafting Monitor item.appliedenergistics2.multi_part.interface_terminal.name=ME Interface Terminal +item.appliedenergistics2.multi_part.interface_configuration_terminal.name=ME Configuration Interface Terminal item.appliedenergistics2.multi_part.fluid_terminal.name=ME Fluid Terminal item.appliedenergistics2.multi_part.invalid_type.name=Disabled Item diff --git a/src/main/resources/assets/appliedenergistics2/models/item/part/interface_configuration_terminal.json b/src/main/resources/assets/appliedenergistics2/models/item/part/interface_configuration_terminal.json new file mode 100644 index 000000000..19fd32603 --- /dev/null +++ b/src/main/resources/assets/appliedenergistics2/models/item/part/interface_configuration_terminal.json @@ -0,0 +1,9 @@ +{ + "parent": "appliedenergistics2:item/part/display", + "textures": { + "front": "appliedenergistics2:items/part/interface_terminal", + "front_bright": "appliedenergistics2:parts/interface_configuration_terminal_bright", + "front_medium": "appliedenergistics2:parts/interface_configuration_terminal_medium", + "front_dark": "appliedenergistics2:parts/interface_configuration_terminal_dark" + } +} diff --git a/src/main/resources/assets/appliedenergistics2/models/part/interface_configuration_terminal_off.json b/src/main/resources/assets/appliedenergistics2/models/part/interface_configuration_terminal_off.json new file mode 100644 index 000000000..eb01e4de3 --- /dev/null +++ b/src/main/resources/assets/appliedenergistics2/models/part/interface_configuration_terminal_off.json @@ -0,0 +1,8 @@ +{ + "parent": "appliedenergistics2:part/display_off", + "textures": { + "lightsBright": "appliedenergistics2:parts/interface_configuration_terminal_bright", + "lightsMedium": "appliedenergistics2:parts/interface_configuration_terminal_medium", + "lightsDark": "appliedenergistics2:parts/interface_configuration_terminal_dark" + } +} diff --git a/src/main/resources/assets/appliedenergistics2/models/part/interface_configuration_terminal_on.json b/src/main/resources/assets/appliedenergistics2/models/part/interface_configuration_terminal_on.json new file mode 100644 index 000000000..5ca04a281 --- /dev/null +++ b/src/main/resources/assets/appliedenergistics2/models/part/interface_configuration_terminal_on.json @@ -0,0 +1,76 @@ +{ + "ae2_uvl_marker": true, + "textures": { + "lightsBright": "appliedenergistics2:parts/interface_configuration_terminal_bright", + "lightsMedium": "appliedenergistics2:parts/interface_configuration_terminal_medium", + "lightsDark": "appliedenergistics2:parts/interface_configuration_terminal_dark" + }, + "elements": [ + { + "from": [ + 2, + 2, + 0 + ], + "to": [ + 14, + 14, + 2 + ], + "faces": { + "north": { + "texture": "#lightsBright", + "tintindex": 3, + "uvlightmap": { + "sky": 0.007, + "block": 0.007 + } + } + } + }, + { + "from": [ + 2, + 2, + 0 + ], + "to": [ + 14, + 14, + 2 + ], + "faces": { + "north": { + "texture": "#lightsMedium", + "tintindex": 2, + "uvlightmap": { + "sky": 0.007, + "block": 0.007 + } + } + } + }, + { + "from": [ + 2, + 2, + 0 + ], + "to": [ + 14, + 14, + 2 + ], + "faces": { + "north": { + "texture": "#lightsDark", + "tintindex": 1, + "uvlightmap": { + "sky": 0.007, + "block": 0.007 + } + } + } + } + ] +} diff --git a/src/main/resources/assets/appliedenergistics2/recipes/network/parts/terminals_interface_configuration.json b/src/main/resources/assets/appliedenergistics2/recipes/network/parts/terminals_interface_configuration.json new file mode 100644 index 000000000..ea7635284 --- /dev/null +++ b/src/main/resources/assets/appliedenergistics2/recipes/network/parts/terminals_interface_configuration.json @@ -0,0 +1,19 @@ +{ + "conditions": [ + { + "type": "minecraft:item_exists", + "item": "appliedenergistics2:interface" + } + ], + "result": { + "type": "appliedenergistics2:part", + "part": "part.interface_terminal" + }, + "type": "appliedenergistics2:part_shapeless", + "ingredients": [ + { + "type": "appliedenergistics2:part", + "part": "part.interface_configuration_terminal" + } + ] +} diff --git a/src/main/resources/assets/appliedenergistics2/recipes/network/parts/terminals_interface_configuration_revert.json b/src/main/resources/assets/appliedenergistics2/recipes/network/parts/terminals_interface_configuration_revert.json new file mode 100644 index 000000000..86d943ca7 --- /dev/null +++ b/src/main/resources/assets/appliedenergistics2/recipes/network/parts/terminals_interface_configuration_revert.json @@ -0,0 +1,19 @@ +{ + "conditions": [ + { + "type": "minecraft:item_exists", + "item": "appliedenergistics2:interface" + } + ], + "result": { + "type": "appliedenergistics2:part", + "part": "part.interface_configuration_terminal" + }, + "type": "appliedenergistics2:part_shapeless", + "ingredients": [ + { + "type": "appliedenergistics2:part", + "part": "part.interface_terminal" + } + ] +} diff --git a/src/main/resources/assets/appliedenergistics2/textures/guis/interfaceconfigurationterminal.png b/src/main/resources/assets/appliedenergistics2/textures/guis/interfaceconfigurationterminal.png new file mode 100644 index 0000000000000000000000000000000000000000..5245ad09d8bdeb3a648bdf0196750c198909f476 GIT binary patch literal 11891 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 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/appliedenergistics2/textures/parts/interface_configuration_terminal_dark.png b/src/main/resources/assets/appliedenergistics2/textures/parts/interface_configuration_terminal_dark.png new file mode 100644 index 0000000000000000000000000000000000000000..8affc2651889fe6e1c426dad9276ee29dd4fd495 GIT binary patch literal 205 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s7SkfJR9T^xl_H+M9WMyDr zP)PO&@?~JCQe$9fXklRZ#lXPO@PdJ%)PRBERRRNp)eHs(@q#(K0&N%=7&r?&B8wRq z_?Ce%WBZ+z`3wvUQYEetCBgY=CFO}lsSE*$nRz98ey$-3WyX4@dWMGXpPkGZ7#L(d zT^vI!{F5cp9@q;w%(P%M%yK)(!LDqiXlTH|kXpe1QQ@(?1p@;EgQu&X%Q~loCIFG` BGHd_< literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/appliedenergistics2/textures/parts/interface_configuration_terminal_medium.png b/src/main/resources/assets/appliedenergistics2/textures/parts/interface_configuration_terminal_medium.png new file mode 100644 index 0000000000000000000000000000000000000000..822abb253add77d7fe6b03737fba12bdfbba5aba GIT binary patch literal 5092 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 literal 0 HcmV?d00001