From bea29331a347d20b09e6ad2a52bacb7bc2b1954d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Salom=C3=A3o?= Date: Fri, 4 Jun 2021 16:10:00 -0300 Subject: [PATCH] implement pattern expansion cards for interfaces Maximum of 4 rows Uses 4x the previous tier for crafting operations (4 rows = 64 interfaces consumption) --- src/api/java/appeng/api/config/Upgrades.java | 3 +- .../appeng/api/definitions/IMaterials.java | 2 + .../gui/implementations/GuiInterface.java | 17 ++-- .../implementations/GuiInterfaceTerminal.java | 85 +++++++++++------- .../implementations/ContainerInterface.java | 37 ++++++-- .../ContainerInterfaceTerminal.java | 4 + src/main/java/appeng/core/Registration.java | 2 + .../core/api/definitions/ApiMaterials.java | 5 ++ .../java/appeng/helpers/DualityInterface.java | 34 ++++--- .../appeng/items/materials/ItemMaterial.java | 2 + .../appeng/items/materials/MaterialType.java | 5 +- .../implementations/CraftingCPUCluster.java | 7 ++ .../parts/automation/UpgradeInventory.java | 37 +++++++- .../inventory/AppEngInternalInventory.java | 2 +- .../appliedenergistics2/lang/en_us.lang | 1 + .../item/material_card_pattern_expansion.json | 6 ++ .../materials/cardpatternexpansion.json | 49 ++++++++++ .../textures/guis/newinterface.png | Bin 0 -> 17369 bytes .../textures/guis/newinterface1.png | Bin 0 -> 17543 bytes .../textures/guis/newinterface2.png | Bin 0 -> 17495 bytes .../textures/guis/newinterface3.png | Bin 0 -> 17302 bytes .../items/material_card_pattern_expansion.png | Bin 0 -> 6193 bytes 22 files changed, 235 insertions(+), 63 deletions(-) create mode 100644 src/main/resources/assets/appliedenergistics2/models/item/material_card_pattern_expansion.json create mode 100644 src/main/resources/assets/appliedenergistics2/recipes/materials/cardpatternexpansion.json create mode 100644 src/main/resources/assets/appliedenergistics2/textures/guis/newinterface.png create mode 100644 src/main/resources/assets/appliedenergistics2/textures/guis/newinterface1.png create mode 100644 src/main/resources/assets/appliedenergistics2/textures/guis/newinterface2.png create mode 100644 src/main/resources/assets/appliedenergistics2/textures/guis/newinterface3.png create mode 100644 src/main/resources/assets/appliedenergistics2/textures/items/material_card_pattern_expansion.png diff --git a/src/api/java/appeng/api/config/Upgrades.java b/src/api/java/appeng/api/config/Upgrades.java index 228b7b5c8..606ab700e 100644 --- a/src/api/java/appeng/api/config/Upgrades.java +++ b/src/api/java/appeng/api/config/Upgrades.java @@ -46,7 +46,8 @@ public enum Upgrades */ FUZZY( 1 ), SPEED( 1 ), - INVERTER( 1 ); + INVERTER( 1 ), + PATTERN_EXPANSION(1); private final int tier; private final Map supportedMax = new HashMap<>(); diff --git a/src/api/java/appeng/api/definitions/IMaterials.java b/src/api/java/appeng/api/definitions/IMaterials.java index 5fcab30dc..dc62679de 100644 --- a/src/api/java/appeng/api/definitions/IMaterials.java +++ b/src/api/java/appeng/api/definitions/IMaterials.java @@ -89,6 +89,8 @@ public interface IMaterials IItemDefinition cardCapacity(); + IItemDefinition cardPatternExpansion(); + IItemDefinition cardFuzzy(); IItemDefinition cardInverter(); diff --git a/src/main/java/appeng/client/gui/implementations/GuiInterface.java b/src/main/java/appeng/client/gui/implementations/GuiInterface.java index d479901d2..94c0a6e68 100644 --- a/src/main/java/appeng/client/gui/implementations/GuiInterface.java +++ b/src/main/java/appeng/client/gui/implementations/GuiInterface.java @@ -50,7 +50,7 @@ public class GuiInterface extends GuiUpgradeable public GuiInterface( final InventoryPlayer inventoryPlayer, final IInterfaceHost te ) { super( new ContainerInterface( inventoryPlayer, te ) ); - this.ySize = 211; + this.ySize = 256; } @Override @@ -62,8 +62,7 @@ public class GuiInterface extends GuiUpgradeable this.BlockMode = new GuiImgButton( this.guiLeft - 18, this.guiTop + 8, Settings.BLOCK, YesNo.NO ); this.buttonList.add( this.BlockMode ); - this.interfaceMode = new GuiToggleButton( this.guiLeft - 18, this.guiTop + 26, 84, 85, GuiText.InterfaceTerminal - .getLocal(), GuiText.InterfaceTerminalHint.getLocal() ); + this.interfaceMode = new GuiToggleButton( this.guiLeft - 18, this.guiTop + 26, 84, 85, GuiText.InterfaceTerminal.getLocal(), GuiText.InterfaceTerminalHint.getLocal() ); this.buttonList.add( this.interfaceMode ); } @@ -86,13 +85,20 @@ public class GuiInterface extends GuiUpgradeable this.fontRenderer.drawString( GuiText.StoredItems.getLocal(), 8, 6 + 60 + 7, 4210752 ); this.fontRenderer.drawString( GuiText.Patterns.getLocal(), 8, 6 + 73 + 7, 4210752 ); - this.fontRenderer.drawString( GuiText.inventory.getLocal(), 8, this.ySize - 96 + 3, 4210752 ); } @Override protected String getBackground() { - return "guis/interface.png"; + int upgrades = ( (ContainerInterface) this.cvb ).getPatternUpgrades(); + if( upgrades == 0 ) + { + return "guis/newinterface.png"; + } + else + { + return "guis/newinterface" + upgrades + ".png"; + } } @Override @@ -117,4 +123,5 @@ public class GuiInterface extends GuiUpgradeable NetworkHandler.instance().sendToServer( new PacketConfigButton( this.BlockMode.getSetting(), backwards ) ); } } + } diff --git a/src/main/java/appeng/client/gui/implementations/GuiInterfaceTerminal.java b/src/main/java/appeng/client/gui/implementations/GuiInterfaceTerminal.java index 659c1d7b1..452e6fafb 100644 --- a/src/main/java/appeng/client/gui/implementations/GuiInterfaceTerminal.java +++ b/src/main/java/appeng/client/gui/implementations/GuiInterfaceTerminal.java @@ -24,8 +24,13 @@ import java.util.*; import appeng.api.config.ActionItems; import appeng.api.config.Settings; +import appeng.api.config.Upgrades; import appeng.client.gui.widgets.GuiImgButton; import appeng.core.worlddata.IWorldPlayerMapping; +import appeng.helpers.DualityInterface; +import appeng.parts.misc.PartInterface; +import appeng.tile.inventory.AppEngInternalInventory; +import appeng.tile.misc.TileInterface; import appeng.util.BlockPosUtils; import com.google.common.collect.HashMultimap; @@ -69,6 +74,7 @@ public class GuiInterfaceTerminal extends AEBaseGui private final HashMultimap byName = HashMultimap.create(); private final HashMap blockPosHashMap = new HashMap<>(); private final HashMap guiButtonHashMap = new HashMap<>(); + private final Map numUpgradesMap = new HashMap<>(); private final ArrayList names = new ArrayList<>(); private final ArrayList lines = new ArrayList<>(); private final Set matchedStacks = new HashSet<>(); @@ -91,7 +97,7 @@ public class GuiInterfaceTerminal extends AEBaseGui final GuiScrollbar scrollbar = new GuiScrollbar(); this.setScrollBar( scrollbar ); this.xSize = 208; - this.ySize = 256; + this.ySize = 255; } @Override @@ -136,36 +142,43 @@ public class GuiInterfaceTerminal extends AEBaseGui this.fontRenderer.drawString( this.getGuiDisplayName( GuiText.InterfaceTerminal.getLocal() ), 8, 6, 4210752 ); this.fontRenderer.drawString( GuiText.inventory.getLocal(), this.offsetX + 2, this.ySize - 96 + 3, 4210752 ); - final int ex = this.getScrollBar().getCurrentScroll(); + final int currentScroll = this.getScrollBar().getCurrentScroll(); - this.guiButtonNextAssembler = new GuiImgButton(guiLeft + 123, guiTop + 25,Settings.ACTIONS, ActionItems.FREE_MOLECULAR_SLOT_SHORTCUT); + this.guiButtonNextAssembler = new GuiImgButton( guiLeft + 123, guiTop + 25, Settings.ACTIONS, ActionItems.FREE_MOLECULAR_SLOT_SHORTCUT ); this.buttonList.add( guiButtonNextAssembler ); - guiButtonHide = new GuiImgButton( guiLeft + 141, guiTop + 25,Settings.ACTIONS, this.partInterfaceTerminal.onlyInterfacesWithFreeSlots ? - ActionItems.TOGGLE_SHOW_FULL_INTERFACES_OFF : - ActionItems.TOGGLE_SHOW_FULL_INTERFACES_ON); + 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 ); this.inventorySlots.inventorySlots.removeIf( slot -> slot instanceof SlotDisconnected ); - int offset = 51; - for( int x = 0; x < LINES_ON_PAGE && ex + x < this.lines.size(); x++ ) + int offset = 52; + int linesDraw = 0; + for( int x = 0; x < LINES_ON_PAGE && linesDraw < LINES_ON_PAGE && currentScroll + x < this.lines.size(); x++ ) { - final Object lineObj = this.lines.get( ex + x ); + final Object lineObj = this.lines.get( currentScroll + x ); if( lineObj instanceof ClientDCInternalInv ) { final ClientDCInternalInv inv = (ClientDCInternalInv) lineObj; - for( int z = 0; z < inv.getInventory().getSlots(); z++ ) - { - this.inventorySlots.inventorySlots.add( new SlotDisconnected( inv, z, z * 18 + 22, 1 + offset ) ); - if (this.matchedStacks.contains(inv.getInventory().getStackInSlot(z))) - drawRect( z * 18 + 22, 1 + offset, z * 18 + 22 + 16, 1 + offset + 16, 0x2A00FF00 ); - } - GuiButton guiButton = new GuiImgButton(guiLeft + 4, guiTop + offset + 1, Settings.ACTIONS, ActionItems.HIGHLIGHT_INTERFACE); - guiButtonHashMap.put( guiButton , inv); + GuiButton guiButton = new GuiImgButton( guiLeft + 4, guiTop + offset, Settings.ACTIONS, ActionItems.HIGHLIGHT_INTERFACE ); + guiButtonHashMap.put( guiButton, inv ); this.buttonList.add( guiButton ); + int extraLines = numUpgradesMap.get( inv ); + for( int row = 0; row < 1 + extraLines && linesDraw < LINES_ON_PAGE ; ++row ) + { + for( int z = 0; z < 9 ; z++ ) + { + this.inventorySlots.inventorySlots.add( new SlotDisconnected( inv, z + ( row * 9 ), ( z * 18 + 22 ), offset ) ); + if( this.matchedStacks.contains( inv.getInventory().getStackInSlot( z + ( row * 9 ) ) ) ) + { + drawRect( z * 18 + 22, offset, z * 18 + 22 + 16, offset + 16, 0x2A00FF00 ); + } + } + linesDraw++; + offset += 18; + } } else if( lineObj instanceof String ) { @@ -176,17 +189,17 @@ public class GuiInterfaceTerminal extends AEBaseGui name = name + " (" + rows + ')'; } - while( name.length() > 2 && this.fontRenderer.getStringWidth( name ) > 155 ) + while ( name.length() > 2 && this.fontRenderer.getStringWidth( name ) > 155 ) { name = name.substring( 0, name.length() - 1 ); } - - this.fontRenderer.drawString( name, this.offsetX + 2, 6 + offset, 4210752 ); + this.fontRenderer.drawString( name, this.offsetX + 2, 5 + offset, 4210752 ); + linesDraw++; + offset += 18; } - offset += 18; } - if( searchFieldInputs.isMouseIn( mouseX , mouseY ) ) drawTooltip( Mouse.getEventX() * this.width / this.mc.displayWidth - offsetX, mouseY - guiTop, "Inputs OR names" ); + if( searchFieldInputs.isMouseIn( mouseX, mouseY ) ) drawTooltip( Mouse.getEventX() * this.width / this.mc.displayWidth - offsetX, mouseY - guiTop, "Inputs OR names" ); else if( searchFieldOutputs.isMouseIn( mouseX, mouseY ) ) drawTooltip( Mouse.getEventX() * this.width / this.mc.displayWidth - offsetX, mouseY - guiTop, "Outputs OR names" ); } @@ -264,19 +277,28 @@ public class GuiInterfaceTerminal extends AEBaseGui int offset = 51; final int ex = this.getScrollBar().getCurrentScroll(); - - for( int x = 0; x < LINES_ON_PAGE && ex + x < this.lines.size(); x++ ) + int linesDraw = 0; + for( int x = 0; x < LINES_ON_PAGE && linesDraw < LINES_ON_PAGE && ex + x < this.lines.size(); x++ ) { final Object lineObj = this.lines.get( ex + x ); if( lineObj instanceof ClientDCInternalInv ) { - final ClientDCInternalInv inv = (ClientDCInternalInv) lineObj; - GlStateManager.color( 1, 1, 1, 1 ); - final int width = inv.getInventory().getSlots() * 18; - this.drawTexturedModalRect( offsetX + 20, offsetY + offset, 20, 173, width, 18 ); + final int width = 9 * 18; + + int extraLines = numUpgradesMap.get( lineObj ); + + for( int row = 0; row < 1 + extraLines && linesDraw < LINES_ON_PAGE; ++row ) + { + this.drawTexturedModalRect( offsetX + 20, offsetY + offset , 20, 173, width, 18 ); + offset += 18; + linesDraw++; + } + } + else { + offset += 18; + linesDraw++; } - offset += 18; } if( this.searchFieldInputs != null ) @@ -337,6 +359,7 @@ public class GuiInterfaceTerminal extends AEBaseGui final ClientDCInternalInv current = this.getById( id, invData.getLong( "sortBy" ), invData.getString( "un" ) ); blockPosHashMap.put( current, NBTUtil.getPosFromTag( invData.getCompoundTag( "pos" )) ); dimHashMap.put( current, invData.getInteger( "dim" )); + numUpgradesMap.put( current, invData.getInteger("numUpgrades")); for( int x = 0; x < current.getInventory().getSlots(); x++ ) { @@ -458,7 +481,7 @@ public class GuiInterfaceTerminal extends AEBaseGui this.lines.addAll( clientInventories ); } - this.getScrollBar().setRange( 0, this.lines.size() - LINES_ON_PAGE, 2 ); + this.getScrollBar().setRange( 0, this.lines.size() - 1, 1 ); } private boolean itemStackMatchesSearchTerm( final ItemStack itemStack, final String searchTerm,int pass ) @@ -548,7 +571,7 @@ public class GuiInterfaceTerminal extends AEBaseGui if( o == null ) { - this.byId.put( id, o = new ClientDCInternalInv( 9, id, sortBy, string ) ); + this.byId.put( id, o = new ClientDCInternalInv( DualityInterface.NUMBER_OF_PATTERN_SLOTS, id, sortBy, string ) ); this.refreshList = true; } diff --git a/src/main/java/appeng/container/implementations/ContainerInterface.java b/src/main/java/appeng/container/implementations/ContainerInterface.java index b38bb2c13..a19d4fa3b 100644 --- a/src/main/java/appeng/container/implementations/ContainerInterface.java +++ b/src/main/java/appeng/container/implementations/ContainerInterface.java @@ -19,6 +19,8 @@ package appeng.container.implementations; +import appeng.api.config.Upgrades; +import appeng.container.slot.*; import net.minecraft.entity.player.InventoryPlayer; import appeng.api.config.SecurityPermissions; @@ -26,14 +28,11 @@ import appeng.api.config.Settings; import appeng.api.config.YesNo; import appeng.api.util.IConfigManager; import appeng.container.guisync.GuiSync; -import appeng.container.slot.SlotFake; -import appeng.container.slot.SlotNormal; -import appeng.container.slot.SlotRestrictedInput; import appeng.helpers.DualityInterface; import appeng.helpers.IInterfaceHost; -public class ContainerInterface extends ContainerUpgradeable +public class ContainerInterface extends ContainerUpgradeable implements IOptionalSlotHost { private final DualityInterface myDuality; @@ -50,10 +49,13 @@ public class ContainerInterface extends ContainerUpgradeable this.myDuality = te.getInterfaceDuality(); - for( int x = 0; x < DualityInterface.NUMBER_OF_PATTERN_SLOTS; x++ ) + for (int row = 0 ; row < 4 ; ++row) { - this.addSlotToContainer( new SlotRestrictedInput( SlotRestrictedInput.PlacableItemType.ENCODED_PATTERN, this.myDuality - .getPatterns(), x, 8 + 18 * x, 90 + 7, this.getInventoryPlayer() ).setStackLimit( 1 ) ); + for( int x = 0; x < 9; x++ ) + { + this.addSlotToContainer( new OptionalSlotRestrictedInput( SlotRestrictedInput.PlacableItemType.ENCODED_PATTERN, this.myDuality + .getPatterns(), this, x + row * 9, 8 + 18 * x, 97 + ( 18 * row ), row, this.getInventoryPlayer() ).setStackLimit( 1 ) ); + } } for( int x = 0; x < DualityInterface.NUMBER_OF_CONFIG_SLOTS; x++ ) @@ -70,7 +72,7 @@ public class ContainerInterface extends ContainerUpgradeable @Override protected int getHeight() { - return 211; + return 256; } @Override @@ -82,7 +84,19 @@ public class ContainerInterface extends ContainerUpgradeable @Override public int availableUpgrades() { - return 1; + return 4; + } + + @Override + public boolean isSlotEnabled( final int idx ) + { + return myDuality.getInstalledUpgrades(Upgrades.PATTERN_EXPANSION) >= idx; + } + + @Override + protected boolean supportCapacity() + { + return true; } @Override @@ -118,4 +132,9 @@ public class ContainerInterface extends ContainerUpgradeable { this.iTermMode = iTermMode; } + + public int getPatternUpgrades() + { + return this.myDuality.getInstalledUpgrades( Upgrades.PATTERN_EXPANSION ); + } } diff --git a/src/main/java/appeng/container/implementations/ContainerInterfaceTerminal.java b/src/main/java/appeng/container/implementations/ContainerInterfaceTerminal.java index 1e7b73956..a9ce85fac 100644 --- a/src/main/java/appeng/container/implementations/ContainerInterfaceTerminal.java +++ b/src/main/java/appeng/container/implementations/ContainerInterfaceTerminal.java @@ -24,6 +24,7 @@ import java.util.HashMap; import java.util.Map; import java.util.Map.Entry; +import appeng.api.config.Upgrades; import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.entity.player.InventoryPlayer; import net.minecraft.item.ItemStack; @@ -405,6 +406,7 @@ public final class ContainerInterfaceTerminal extends AEBaseContainer tag.setString( "un", inv.unlocalizedName ); tag.setTag( "pos", NBTUtil.createPosTag( inv.pos ) ); tag.setInteger( "dim", inv.dim ); + tag.setInteger( "numUpgrades", inv.numUpgrades ); } for( int x = 0; x < length; x++ ) @@ -437,6 +439,7 @@ public final class ContainerInterfaceTerminal extends AEBaseContainer private final IItemHandler server; private final BlockPos pos; private final int dim; + private final int numUpgrades; public InvTracker( final DualityInterface dual, final IItemHandler patterns, final String unlocalizedName ) { @@ -446,6 +449,7 @@ public final class ContainerInterfaceTerminal extends AEBaseContainer this.sortBy = dual.getSortValue(); this.pos = dual.getLocation().getPos(); this.dim = dual.getLocation().getWorld().provider.getDimension(); + this.numUpgrades = dual.getInstalledUpgrades( Upgrades.PATTERN_EXPANSION); } } diff --git a/src/main/java/appeng/core/Registration.java b/src/main/java/appeng/core/Registration.java index 20f4dd98a..4cdb7dd03 100644 --- a/src/main/java/appeng/core/Registration.java +++ b/src/main/java/appeng/core/Registration.java @@ -363,6 +363,8 @@ final class Registration // Interface Upgrades.CRAFTING.registerItem( parts.iface(), 1 ); Upgrades.CRAFTING.registerItem( blocks.iface(), 1 ); + Upgrades.PATTERN_EXPANSION.registerItem( parts.iface(), 3 ); + Upgrades.PATTERN_EXPANSION.registerItem( blocks.iface(), 3 ); // IO Port! Upgrades.SPEED.registerItem( blocks.iOPort(), 3 ); diff --git a/src/main/java/appeng/core/api/definitions/ApiMaterials.java b/src/main/java/appeng/core/api/definitions/ApiMaterials.java index 292848510..9d29dd152 100644 --- a/src/main/java/appeng/core/api/definitions/ApiMaterials.java +++ b/src/main/java/appeng/core/api/definitions/ApiMaterials.java @@ -86,6 +86,7 @@ public final class ApiMaterials implements IMaterials private final IItemDefinition cardRedstone; private final IItemDefinition cardSpeed; private final IItemDefinition cardCapacity; + private final IItemDefinition cardPatternExpansion; private final IItemDefinition cardFuzzy; private final IItemDefinition cardInverter; private final IItemDefinition cardCrafting; @@ -204,6 +205,7 @@ public final class ApiMaterials implements IMaterials this.cardRedstone = new DamagedItemDefinition( "material.card.redstone", materials.createMaterial( MaterialType.CARD_REDSTONE ) ); this.cardSpeed = new DamagedItemDefinition( "material.card.acceleration", materials.createMaterial( MaterialType.CARD_SPEED ) ); this.cardCapacity = new DamagedItemDefinition( "material.card.capacity", materials.createMaterial( MaterialType.CARD_CAPACITY ) ); + this.cardPatternExpansion = new DamagedItemDefinition( "material.card.pattern.expansion", materials.createMaterial(MaterialType.CARD_PATTERN_EXPANSION) ); this.cardFuzzy = new DamagedItemDefinition( "material.card.fuzzy", materials.createMaterial( MaterialType.CARD_FUZZY ) ); this.cardInverter = new DamagedItemDefinition( "material.card.inverter", materials.createMaterial( MaterialType.CARD_INVERTER ) ); this.cardCrafting = new DamagedItemDefinition( "material.card.crafting", materials.createMaterial( MaterialType.CARD_CRAFTING ) ); @@ -424,6 +426,9 @@ public final class ApiMaterials implements IMaterials return this.cardCapacity; } + @Override + public IItemDefinition cardPatternExpansion(){ return this.cardPatternExpansion;} + @Override public IItemDefinition cardFuzzy() { diff --git a/src/main/java/appeng/helpers/DualityInterface.java b/src/main/java/appeng/helpers/DualityInterface.java index fa3c202eb..53cf889a0 100644 --- a/src/main/java/appeng/helpers/DualityInterface.java +++ b/src/main/java/appeng/helpers/DualityInterface.java @@ -20,7 +20,6 @@ package appeng.helpers; import java.util.*; -import java.util.stream.Collectors; import javax.annotation.Nullable; @@ -33,8 +32,6 @@ import de.ellpeck.actuallyadditions.api.tile.IPhantomTile; import gregtech.api.block.machines.BlockMachine; import gregtech.api.metatileentity.MetaTileEntity; import gregtech.api.metatileentity.MetaTileEntityHolder; -import gregtech.api.metatileentity.TieredMetaTileEntity; -import gregtech.api.metatileentity.WorkableTieredMetaTileEntity; import net.minecraft.block.Block; import net.minecraft.block.state.IBlockState; import net.minecraft.init.Items; @@ -115,7 +112,7 @@ public class DualityInterface implements IGridTickable, IStorageMonitorable, IIn public static final int NUMBER_OF_STORAGE_SLOTS = 9; public static final int NUMBER_OF_CONFIG_SLOTS = 9; - public static final int NUMBER_OF_PATTERN_SLOTS = 9; + public static final int NUMBER_OF_PATTERN_SLOTS = 36; private static final Collection BAD_BLOCKS = new HashSet<>( 100 ); private final IAEItemStack[] requireWork = { null, null, null, null, null, null, null, null, null }; @@ -151,7 +148,7 @@ public class DualityInterface implements IGridTickable, IStorageMonitorable, IIn this.gridProxy = networkProxy; this.gridProxy.setFlags( GridFlags.REQUIRE_CHANNEL ); - this.upgrades = new StackUpgradeInventory( this.gridProxy.getMachineRepresentation(), this, 1 ); + this.upgrades = new StackUpgradeInventory( this.gridProxy.getMachineRepresentation(), this, 4); this.cm.registerSetting( Settings.BLOCK, YesNo.NO ); this.cm.registerSetting( Settings.INTERFACE_TERMINAL, YesNo.YES ); @@ -279,10 +276,11 @@ public class DualityInterface implements IGridTickable, IStorageMonitorable, IIn } this.waitingToSendFacing = null; - final NBTTagCompound waitingListSided = data.getCompoundTag("sidedWaitList"); + final NBTTagCompound waitingListSided = data.getCompoundTag( "sidedWaitList" ); - for (EnumFacing s : EnumFacing.values()) - if (waitingListSided.hasKey( s.name() )) { + for( EnumFacing s : EnumFacing.values() ) + if( waitingListSided.hasKey( s.name() ) ) + { NBTTagList w = waitingListSided.getTagList( s.name(), 10 ); for( int x = 0; x < w.tagCount(); x++ ) { @@ -290,12 +288,21 @@ public class DualityInterface implements IGridTickable, IStorageMonitorable, IIn if( c != null ) { final ItemStack is = new ItemStack( c ); - this.addToSendListFacing( is , EnumFacing.getFront( s.getIndex() ) ); + this.addToSendListFacing( is, EnumFacing.getFront( s.getIndex() ) ); } } } this.craftingTracker.readFromNBT( data ); + + // fix upgrade slot size mismatch + NBTTagCompound up = data.getCompoundTag( "upgrades" ); + if( up.hasKey( "Size" ) && up.getInteger( "Size" ) != this.upgrades.getSlots() ) + { + up.setInteger( "Size", this.upgrades.getSlots() ); + this.upgrades.writeToNBT( up, "upgrades" ); + } + this.upgrades.readFromNBT( data, "upgrades" ); this.config.readFromNBT( data, "config" ); this.patterns.readFromNBT( data, "patterns" ); @@ -400,9 +407,8 @@ public class DualityInterface implements IGridTickable, IStorageMonitorable, IIn private void updateCraftingList() { - final Boolean[] accountedFor = { false, false, false, false, false, false, false, false, false }; // 9... - - assert ( accountedFor.length == this.patterns.getSlots() ); + final Boolean[] accountedFor = new Boolean[this.patterns.getSlots()]; + Arrays.fill( accountedFor, false ); if( !this.gridProxy.isReady() ) { @@ -417,7 +423,7 @@ public class DualityInterface implements IGridTickable, IStorageMonitorable, IIn final ICraftingPatternDetails details = i.next(); boolean found = false; - for( int x = 0; x < accountedFor.length; x++ ) + for( int x = 0; x < accountedFor.length ; x++ ) { final ItemStack is = this.patterns.getStackInSlot( x ); if( details.getPattern() == is ) @@ -433,7 +439,7 @@ public class DualityInterface implements IGridTickable, IStorageMonitorable, IIn } } - for( int x = 0; x < accountedFor.length; x++ ) + for( int x = 0; x < accountedFor.length ; x++ ) { if( !accountedFor[x] ) { diff --git a/src/main/java/appeng/items/materials/ItemMaterial.java b/src/main/java/appeng/items/materials/ItemMaterial.java index 1945d2259..cca661f20 100644 --- a/src/main/java/appeng/items/materials/ItemMaterial.java +++ b/src/main/java/appeng/items/materials/ItemMaterial.java @@ -164,6 +164,8 @@ public final class ItemMaterial extends AEBaseItem implements IStorageComponent, return Upgrades.INVERTER; case CARD_CRAFTING: return Upgrades.CRAFTING; + case CARD_PATTERN_EXPANSION: + return Upgrades.PATTERN_EXPANSION; default: return null; } diff --git a/src/main/java/appeng/items/materials/MaterialType.java b/src/main/java/appeng/items/materials/MaterialType.java index 01e42d439..bc31f9c28 100644 --- a/src/main/java/appeng/items/materials/MaterialType.java +++ b/src/main/java/appeng/items/materials/MaterialType.java @@ -118,7 +118,10 @@ public enum MaterialType FLUID_CELL1K_PART( 54, "material_fluid_cell1k_part", EnumSet.of( AEFeature.STORAGE_CELLS ) ), FLUID_CELL4K_PART( 55, "material_fluid_cell4k_part", EnumSet.of( AEFeature.STORAGE_CELLS ) ), FLUID_CELL16K_PART( 56, "material_fluid_cell16k_part", EnumSet.of( AEFeature.STORAGE_CELLS ) ), - FLUID_CELL64K_PART( 57, "material_fluid_cell64k_part", EnumSet.of( AEFeature.STORAGE_CELLS ) ); + FLUID_CELL64K_PART( 57, "material_fluid_cell64k_part", EnumSet.of( AEFeature.STORAGE_CELLS ) ), + + CARD_PATTERN_EXPANSION( 58, "material_card_pattern_expansion", EnumSet.of( AEFeature.ADVANCED_CARDS ) ); + private final Set features; private final ModelResourceLocation model; diff --git a/src/main/java/appeng/me/cluster/implementations/CraftingCPUCluster.java b/src/main/java/appeng/me/cluster/implementations/CraftingCPUCluster.java index d4be8c266..d7b081d0a 100644 --- a/src/main/java/appeng/me/cluster/implementations/CraftingCPUCluster.java +++ b/src/main/java/appeng/me/cluster/implementations/CraftingCPUCluster.java @@ -23,6 +23,8 @@ import java.util.*; import java.util.Map.Entry; import java.util.stream.Collectors; +import appeng.api.config.Upgrades; +import appeng.helpers.DualityInterface; import com.google.common.collect.ImmutableList; import net.minecraft.inventory.InventoryCrafting; @@ -671,6 +673,11 @@ public final class CraftingCPUCluster implements IAECluster, ICraftingCPU } } + if (m instanceof DualityInterface ) + { + sum *= ( Math.pow( 4, ( (DualityInterface) m ).getInstalledUpgrades( Upgrades.PATTERN_EXPANSION ) ) ); + } + // power... if( eg.extractAEPower( sum, Actionable.MODULATE, PowerMultiplier.CONFIG ) < sum - 0.01 ) { diff --git a/src/main/java/appeng/parts/automation/UpgradeInventory.java b/src/main/java/appeng/parts/automation/UpgradeInventory.java index 152f787d1..9e3f589c3 100644 --- a/src/main/java/appeng/parts/automation/UpgradeInventory.java +++ b/src/main/java/appeng/parts/automation/UpgradeInventory.java @@ -19,7 +19,13 @@ package appeng.parts.automation; +import javax.annotation.Nonnull; +import appeng.container.slot.SlotRestrictedInput; +import appeng.core.Api; +import appeng.helpers.DualityInterface; +import appeng.util.inv.ItemHandlerIterator; import net.minecraft.init.Items; +import net.minecraft.inventory.Slot; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; @@ -45,6 +51,7 @@ public abstract class UpgradeInventory extends AppEngInternalInventory implement private int capacityUpgrades = 0; private int inverterUpgrades = 0; private int craftingUpgrades = 0; + private int patternExpansionUpgrades = 0; public UpgradeInventory( final IAEAppEngInventory parent, final int s ) { @@ -81,6 +88,8 @@ public abstract class UpgradeInventory extends AppEngInternalInventory implement return this.inverterUpgrades; case CRAFTING: return this.craftingUpgrades; + case PATTERN_EXPANSION: + return this.patternExpansionUpgrades; default: return 0; } @@ -91,7 +100,7 @@ public abstract class UpgradeInventory extends AppEngInternalInventory implement private void updateUpgradeInfo() { this.cached = true; - this.inverterUpgrades = this.capacityUpgrades = this.redstoneUpgrades = this.speedUpgrades = this.fuzzyUpgrades = this.craftingUpgrades = 0; + this.patternExpansionUpgrades = this.inverterUpgrades = this.capacityUpgrades = this.redstoneUpgrades = this.speedUpgrades = this.fuzzyUpgrades = this.craftingUpgrades = 0; for( final ItemStack is : this ) { @@ -121,6 +130,9 @@ public abstract class UpgradeInventory extends AppEngInternalInventory implement case CRAFTING: this.craftingUpgrades++; break; + case PATTERN_EXPANSION: + this.patternExpansionUpgrades++; + break; default: break; } @@ -132,6 +144,7 @@ public abstract class UpgradeInventory extends AppEngInternalInventory implement this.speedUpgrades = Math.min( this.speedUpgrades, this.getMaxInstalled( Upgrades.SPEED ) ); this.inverterUpgrades = Math.min( this.inverterUpgrades, this.getMaxInstalled( Upgrades.INVERTER ) ); this.craftingUpgrades = Math.min( this.craftingUpgrades, this.getMaxInstalled( Upgrades.CRAFTING ) ); + this.patternExpansionUpgrades = Math.min( this.patternExpansionUpgrades, this.getMaxInstalled( Upgrades.PATTERN_EXPANSION ) ); } @Override @@ -160,6 +173,28 @@ public abstract class UpgradeInventory extends AppEngInternalInventory implement } } + @Nonnull + @Override + public ItemStack extractItem( int slot, int amount, boolean simulate ) + { + if( patternExpansionUpgrades > 0 ) + { + if( parent instanceof DualityInterface ) + { + IItemHandler patternInv = ( (DualityInterface) parent ).getPatterns(); + for( int invSlot = 0; invSlot < patternInv.getSlots(); invSlot++ ) + { + ItemStack is = patternInv.getStackInSlot( invSlot ); + if( invSlot > patternExpansionUpgrades * 9 && !is.isEmpty() ) + { + return ItemStack.EMPTY; + } + } + } + } + return super.extractItem( slot, amount, simulate ); + } + private class UpgradeInvFilter implements IAEItemFilter { diff --git a/src/main/java/appeng/tile/inventory/AppEngInternalInventory.java b/src/main/java/appeng/tile/inventory/AppEngInternalInventory.java index 1e47b00fe..a4267cd5d 100644 --- a/src/main/java/appeng/tile/inventory/AppEngInternalInventory.java +++ b/src/main/java/appeng/tile/inventory/AppEngInternalInventory.java @@ -206,7 +206,7 @@ public class AppEngInternalInventory extends ItemStackHandler implements Iterabl this.enableClientEvents = enableClientEvents; } - private IAEAppEngInventory getTileEntity() + public IAEAppEngInventory getTileEntity() { return this.te; } diff --git a/src/main/resources/assets/appliedenergistics2/lang/en_us.lang b/src/main/resources/assets/appliedenergistics2/lang/en_us.lang index d1c595417..9cfe44d0b 100644 --- a/src/main/resources/assets/appliedenergistics2/lang/en_us.lang +++ b/src/main/resources/assets/appliedenergistics2/lang/en_us.lang @@ -450,6 +450,7 @@ item.appliedenergistics2.material.basic_card.name=Basic Card item.appliedenergistics2.material.blank_pattern.name=Blank Pattern item.appliedenergistics2.material.calculation_processor.name=Calculation Processor item.appliedenergistics2.material.card_capacity.name=Capacity Card +item.appliedenergistics2.material.card_pattern_expansion.name=Pattern Expansion Card item.appliedenergistics2.material.card_fuzzy.name=Fuzzy Card item.appliedenergistics2.material.card_inverter.name=Inverter Card item.appliedenergistics2.material.card_redstone.name=Redstone Card diff --git a/src/main/resources/assets/appliedenergistics2/models/item/material_card_pattern_expansion.json b/src/main/resources/assets/appliedenergistics2/models/item/material_card_pattern_expansion.json new file mode 100644 index 000000000..dc17419ab --- /dev/null +++ b/src/main/resources/assets/appliedenergistics2/models/item/material_card_pattern_expansion.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "appliedenergistics2:items/material_card_pattern_expansion" + } +} diff --git a/src/main/resources/assets/appliedenergistics2/recipes/materials/cardpatternexpansion.json b/src/main/resources/assets/appliedenergistics2/recipes/materials/cardpatternexpansion.json new file mode 100644 index 000000000..b05e517c0 --- /dev/null +++ b/src/main/resources/assets/appliedenergistics2/recipes/materials/cardpatternexpansion.json @@ -0,0 +1,49 @@ +{ + "conditions": [ + { + "type": "forge:and", + "values": [ + { + "type": "appliedenergistics2:material_exists", + "material": "material.card_capacity" + }, + { + "type": "appliedenergistics2:material_exists", + "material": "material.basic_card" + } + ] + } + ], + "result": { + "type": "appliedenergistics2:part", + "part": "material.card_pattern_expansion" + }, + "type": "appliedenergistics2:part_shaped", + "pattern": [ + "ci" + ], + "ingredients": [ + { + "type": "appliedenergistics2:part", + "part": "material.advanced_card" + }, + { + "key": "#" + } + ], + "key": { + "i": [ + { + "item": "appliedenergistics2:interface" + }, + { + "type": "appliedenergistics2:part", + "part": "part.interface" + }], + "c": { + "type": "appliedenergistics2:part", + "part": "material.advanced_card" + } + + } +} diff --git a/src/main/resources/assets/appliedenergistics2/textures/guis/newinterface.png b/src/main/resources/assets/appliedenergistics2/textures/guis/newinterface.png new file mode 100644 index 0000000000000000000000000000000000000000..6ac5f4a8d9876d387eea26e32be14e594a83afd2 GIT binary patch literal 17369 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 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/appliedenergistics2/textures/guis/newinterface2.png b/src/main/resources/assets/appliedenergistics2/textures/guis/newinterface2.png new file mode 100644 index 0000000000000000000000000000000000000000..3a7a0a841019a4c4d575d8149853a5a927f00e46 GIT binary patch literal 17495 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 bubfXAGvXbQ?|?ue8+$LV#UkwY=_0&fuC!> zgy|`BKU5ANOYPm?6`nFpG^CV8Eeu~&3pksPa z@@qiA-XGH6-QCxIouGc}&m*oKCHzhYUYzj&$yAbI^F!74oBj|2&POX_l(qn4T^O~Dvktf$?4sCEpp>MHfdSw z$7_oHV(kAc+90vGqmZoL}1a$lR2wA0!` zlm1#%Fmkl zAIrG9^!2PD3DZ{15xRI_6<75hA~}|L@Xor?>uk*>b=5%A#WT$!^Z-OP-lUS*-ak zbv!X7dB==7_2OsGwftgskUeo|q1TSbXY#C0?VF=F*T;U^&y9v%SbI)+! zg@IilQrd0yefo3wSNbECVe{CX_)cYc%g zTr;V)qG--U=IajDOyRc5*V|v;3*7Dc`}hvg^?IEF&X!kCdv7*+E><8Zck|+nvx!qz zi?px5S<15Y#Je7o&!>(^PoB%sYI3u=c7}|Mvus)E+~9EGV0|_1zN_b%A}{@W(OhRK zziO9(TfW}}SGT{%0s_yzT{5G;QhUZr=UVf(6LT+b@7ebDr(U+c$f|Oa*A;7?o%T9% z%`RbblRanH+u3Ko%`UJ~-6P|*Ywek^*H`wpU1Gf(^j><(E7>#br-FBvXB=N4b=c>% zLX@8H^xwC0svDxNN!I`QApcNX%>Gby>&iUCZK9Y>0N%yk~|KAP$4{d|wVObV-~qMf>&@r$M-{V~&H>mJW3k9aWCQF-bN zbv~i)pJLOZXNdAlt(ax8WQEjI?#$_;=c4Ca4Qe%gcQRh$M3%Pay2~*FCDXg^5gN7Nhd>Dl#er=3Q)AH`(Xd$?%J8NXO&E55?t{3=r(&d zhW~m2>u-JgzA^W@Kf`~vvbC?_UhacOyH=j8KJb*!;Kvg0wkIBO zvz+wU_sqX&p4!kDy`cK++qE0}FS9GS#_HZ@U~fN=F>llL+k1Ae-nza1yveWMj79!M z%lp(OePLkWpOYC9Q4-ZxN)4{^3rViZPPR-@vbW>1sj#ZZEyztRNmQuF&B-ga zs<2f8n`@Ot;j4hQnKSxuqjGOvkG!? zgBnqkl4h%vQBqQ1rLSLJUanVete0Puu5V~*X{m2uq;F)TTa=QfTU?n}l31aeSF8*& z0%C?sYH@N=W`YUn^e0|}%^NOLNn4F)hUy)d#Z>VRWpPP%KqqxMi z3}GKu9mOG)1*!T$sm1xFMaikIWvO{3%E*=$-K<>3l$xqHqu>v!VO_R-ylgv$Y zladWmbWKuBOm&kC&C+yD4AYX$Qj;uGlG4(UjPlGYE=kNwP6ZiNkz1gbnVDjhW{_fH zVqlb{YnYO1u4`hJoUEIeYH6x#VUnC^lA4m7YHpN>WQ2cFW_o5`Vh*yaKt`oxrdTB> zrsq8HCFv%an5CqeCK;qAr5S^b0>y)sV}Pfvl98SPLL?w3 zu_P_ODA!ggJTosPzq}YB6_S~o8eEbH3N}MCBO?nVb2C#*6AN>5Q%i)Ru+*aB%=|o% zsfGr6Mn+(nlw>Qn{G!~%5?iIr+{E-${erx7ummV#to(~IQ}ap^LAk?L$q+1Fky~Kp zT$Gwvl3x^(pPyr^1ahr{k)ELeI8!OufU<{cMTwP9ell1iSaE8K9XLmU^Q}{2x;~g| zqmNH9hDpI0`Q>?FjgY*H#~g%GxG9cBCFS`=+5ScTNm;4MCHT$3rWkHgP-=Q+aY<37 zCjn2Psk4D3SdYx&lKi4dB>RI?3n4s+w{kMUL8YJoE(WX;lOe%hoLH8c0*(R&m{f8` zVqSV`imehfv%$nOu_RR5M)*qeN3vP=ZNIOhPri zI6tkVJh3R%F+DY}#8$~YGq(U7&k7pQ^rwlczC0rpl(-Cx40R36bPY^G3{9+z%&m+q zl_0ULV51KzVPU?t0hK|%zE;TLVFN0otUN&pF}Sp#ASW}m2of^jbQ7Ff2rAi;uE5!rD;gDS|y z&5p}PA6y%PYDP#{fNCaMVrc54r4Fdh=l#NADT7CBNuNN2?81p<`978NlFP&_deb_*tb$^RarxSNcfE=)SN*yYbT%TG4;U(Pp94azy) zWO26Ra!+pLf+}S7d8#!~Ku4@@IdQY<00qUA<_^E*=Iq`}aLk z&(Ho9{`#-mRcND@*OqJUnhZLVUhH9NusHi9QKGFSQR9Kd**;D;`}cRuUaLtkE!Zk1 zwAM5#n=yOsdF>Z&`RDJR=vJ9DPlCZ`RhQ@Cil;L7s#ktnr6C!|zG&6&UiIjmw>@Tm z4dQsUS6I}&_QU;qaq$JclPaeKyqEoY&#+%;&v&M2B7PIM9KP~ScZIdjbU)+zmt99s U%oeVQ0ga$|y85}Sb4q9e0IoZI3jhEB literal 0 HcmV?d00001