From 5ada5ddec34af65c322a3353e3d56182233ef280 Mon Sep 17 00:00:00 2001 From: asdflj <854865755@qq.com> Date: Thu, 9 Feb 2023 15:31:01 +0800 Subject: [PATCH] add Wireless Pattern Terminal Ex --- .../github/client/gui/GuiFCImgButton.java | 1 + .../client/gui/GuiFluidPatternExWireless.java | 12 + .../github/client/gui/base/FCBaseMEGui.java | 13 + .../ContainerFluidPatternExWireless.java | 41 +++ .../item/ItemWirelessUltraTerminal.java | 11 +- .../github/inventory/gui/GuiType.java | 12 + .../WirelessPatternTerminalExInventory.java | 328 ++++++++++++++++++ .../glodblock/github/nei/NEI_FC_Config.java | 9 +- .../resources/assets/ae2fc/lang/en_US.lang | 3 + .../resources/assets/ae2fc/lang/zh_CN.lang | 3 + .../assets/ae2fc/textures/gui/states1.png | Bin 1240 -> 1456 bytes 11 files changed, 423 insertions(+), 10 deletions(-) create mode 100644 src/main/java/com/glodblock/github/client/gui/GuiFluidPatternExWireless.java create mode 100644 src/main/java/com/glodblock/github/client/gui/container/ContainerFluidPatternExWireless.java create mode 100644 src/main/java/com/glodblock/github/inventory/item/WirelessPatternTerminalExInventory.java diff --git a/src/main/java/com/glodblock/github/client/gui/GuiFCImgButton.java b/src/main/java/com/glodblock/github/client/gui/GuiFCImgButton.java index 9d16d45b..2d28896b 100644 --- a/src/main/java/com/glodblock/github/client/gui/GuiFCImgButton.java +++ b/src/main/java/com/glodblock/github/client/gui/GuiFCImgButton.java @@ -56,6 +56,7 @@ public class GuiFCImgButton extends GuiButton implements ITooltip { this.registerApp(12, "PATTERN_TEM", "YES", "pattern_terminal_w"); this.registerApp(13, "ESSENTIA_TEM", "YES", "essentia_terminal_w"); this.registerApp(14, "INTERFACE_TEM", "YES", "interface_terminal_w"); + this.registerApp(15, "PATTERN_EX_TEM", "YES", "pattern_terminal_ex_w"); } } diff --git a/src/main/java/com/glodblock/github/client/gui/GuiFluidPatternExWireless.java b/src/main/java/com/glodblock/github/client/gui/GuiFluidPatternExWireless.java new file mode 100644 index 00000000..2f12f1e3 --- /dev/null +++ b/src/main/java/com/glodblock/github/client/gui/GuiFluidPatternExWireless.java @@ -0,0 +1,12 @@ +package com.glodblock.github.client.gui; + +import net.minecraft.entity.player.InventoryPlayer; + +import com.glodblock.github.inventory.item.IWirelessTerminal; + +public class GuiFluidPatternExWireless extends GuiFluidPatternTerminalEx { + + public GuiFluidPatternExWireless(InventoryPlayer inventoryPlayer, IWirelessTerminal te) { + super(inventoryPlayer, te); + } +} diff --git a/src/main/java/com/glodblock/github/client/gui/base/FCBaseMEGui.java b/src/main/java/com/glodblock/github/client/gui/base/FCBaseMEGui.java index ea5990ff..8bd2c44f 100644 --- a/src/main/java/com/glodblock/github/client/gui/base/FCBaseMEGui.java +++ b/src/main/java/com/glodblock/github/client/gui/base/FCBaseMEGui.java @@ -22,6 +22,7 @@ public abstract class FCBaseMEGui extends AEBaseMEGui { protected GuiFCImgButton PatternTerminal; protected GuiFCImgButton EssentiaTerminal; protected GuiFCImgButton InterfaceTerminal; + protected GuiFCImgButton PatternTerminaleEx; protected List termBtns = new ArrayList<>(); protected boolean drawSwitchGuiBtn; @@ -75,6 +76,16 @@ public abstract class FCBaseMEGui extends AEBaseMEGui { this.setOffsetY(this.getOffsetY() + 20); termBtns.add(this.PatternTerminal); } + if (!(this instanceof GuiFluidPatternExWireless)) { + this.buttonList.add( + this.PatternTerminaleEx = new GuiFCImgButton( + this.guiLeft - 18, + this.getOffsetY(), + "PATTERN_EX_TEM", + "YES")); + this.setOffsetY(this.getOffsetY() + 20); + termBtns.add(this.PatternTerminaleEx); + } if (!(this instanceof GuiFluidPortableCell)) { this.buttonList.add( this.FluidTerminal = new GuiFCImgButton(this.guiLeft - 18, this.getOffsetY(), "FLUID_TEM", "YES")); @@ -121,6 +132,8 @@ public abstract class FCBaseMEGui extends AEBaseMEGui { ItemWirelessUltraTerminal.switchTerminal(this.mc.thePlayer, GuiType.WIRELESS_FLUID_PATTERN_TERMINAL); } else if (btn == this.InterfaceTerminal) { ItemWirelessUltraTerminal.switchTerminal(this.mc.thePlayer, GuiType.WIRELESS_INTERFACE_TERMINAL); + } else if (btn == this.PatternTerminaleEx) { + ItemWirelessUltraTerminal.switchTerminal(this.mc.thePlayer, GuiType.WIRELESS_FLUID_PATTERN_TERMINAL_EX); } } super.actionPerformed(btn); diff --git a/src/main/java/com/glodblock/github/client/gui/container/ContainerFluidPatternExWireless.java b/src/main/java/com/glodblock/github/client/gui/container/ContainerFluidPatternExWireless.java new file mode 100644 index 00000000..008110d4 --- /dev/null +++ b/src/main/java/com/glodblock/github/client/gui/container/ContainerFluidPatternExWireless.java @@ -0,0 +1,41 @@ +package com.glodblock.github.client.gui.container; + +import net.minecraft.entity.player.InventoryPlayer; + +import com.glodblock.github.inventory.item.IWirelessTerminal; +import com.glodblock.github.util.Util; + +public class ContainerFluidPatternExWireless extends ContainerFluidPatternTerminalEx { + + private double powerMultiplier = 0.5; + private final IWirelessTerminal civ; + private int ticks = 0; + private final int slot; + + public ContainerFluidPatternExWireless(InventoryPlayer ip, IWirelessTerminal monitorable) { + super(ip, monitorable); + if (monitorable != null) { + final int slotIndex = monitorable.getInventorySlot(); + this.lockPlayerInventorySlot(slotIndex); + this.slot = slotIndex; + } else { + this.slot = -1; + this.lockPlayerInventorySlot(ip.currentItem); + } + this.civ = monitorable; + } + + public void detectAndSendChanges() { + this.ticks = Util + .drainItemPower(this, this.getPlayerInv(), this.slot, this.ticks, this.getPowerMultiplier(), this.civ); + super.detectAndSendChanges(); + } + + private double getPowerMultiplier() { + return this.powerMultiplier; + } + + void setPowerMultiplier(final double powerMultiplier) { + this.powerMultiplier = powerMultiplier; + } +} diff --git a/src/main/java/com/glodblock/github/common/item/ItemWirelessUltraTerminal.java b/src/main/java/com/glodblock/github/common/item/ItemWirelessUltraTerminal.java index 90e9b0e9..b272c612 100644 --- a/src/main/java/com/glodblock/github/common/item/ItemWirelessUltraTerminal.java +++ b/src/main/java/com/glodblock/github/common/item/ItemWirelessUltraTerminal.java @@ -23,10 +23,7 @@ import com.glodblock.github.FluidCraft; import com.glodblock.github.common.tabs.FluidCraftingTabs; import com.glodblock.github.inventory.InventoryHandler; import com.glodblock.github.inventory.gui.GuiType; -import com.glodblock.github.inventory.item.WirelessCraftingTerminalInventory; -import com.glodblock.github.inventory.item.WirelessFluidTerminalInventory; -import com.glodblock.github.inventory.item.WirelessInterfaceTerminalInventory; -import com.glodblock.github.inventory.item.WirelessPatternTerminalInventory; +import com.glodblock.github.inventory.item.*; import com.glodblock.github.loader.IRegister; import com.glodblock.github.network.CPacketSwitchGuis; import com.glodblock.github.util.BlockPos; @@ -52,6 +49,7 @@ public class ItemWirelessUltraTerminal extends ItemBaseWirelessTerminal setTextureName(FluidCraft.resource(NameConst.ITEM_WIRELESS_ULTRA_TERMINAL).toString()); guis.add(GuiType.WIRELESS_CRAFTING_TERMINAL); guis.add(GuiType.WIRELESS_FLUID_PATTERN_TERMINAL); + guis.add(GuiType.WIRELESS_FLUID_PATTERN_TERMINAL_EX); guis.add(GuiType.WIRELESS_FLUID_TERMINAL); guis.add(GuiType.WIRELESS_INTERFACE_TERMINAL); if (ModAndClassUtil.ThE) { @@ -97,8 +95,7 @@ public class ItemWirelessUltraTerminal extends ItemBaseWirelessTerminal } if (gui == GuiType.WIRELESS_FLUID_PATTERN_TERMINAL) { return new WirelessPatternTerminalInventory(stack, x, gridNode, player); - } - if (gui == GuiType.WIRELESS_CRAFTING_TERMINAL) { + } else if (gui == GuiType.WIRELESS_CRAFTING_TERMINAL) { return new WirelessCraftingTerminalInventory(stack, x, gridNode, player); } else if (ModAndClassUtil.ThE && gui == GuiType.WIRELESS_ESSENTIA_TERMINAL) { return new WirelessFluidTerminalInventory(stack, x, gridNode, player); @@ -106,6 +103,8 @@ public class ItemWirelessUltraTerminal extends ItemBaseWirelessTerminal return new WirelessFluidTerminalInventory(stack, x, gridNode, player); } else if (gui == GuiType.WIRELESS_INTERFACE_TERMINAL) { return new WirelessInterfaceTerminalInventory(stack, x, gridNode, player); + } else if (gui == GuiType.WIRELESS_FLUID_PATTERN_TERMINAL_EX) { + return new WirelessPatternTerminalExInventory(stack, x, gridNode, player); } else { this.setMode(GuiType.WIRELESS_FLUID_TERMINAL, stack); // set as default mode return new WirelessFluidTerminalInventory(stack, x, gridNode, player); diff --git a/src/main/java/com/glodblock/github/inventory/gui/GuiType.java b/src/main/java/com/glodblock/github/inventory/gui/GuiType.java index 1bb16547..733d76fc 100644 --- a/src/main/java/com/glodblock/github/inventory/gui/GuiType.java +++ b/src/main/java/com/glodblock/github/inventory/gui/GuiType.java @@ -247,6 +247,18 @@ public enum GuiType { return new GuiFluidPatternWireless(player.inventory, inv); } }), + WIRELESS_FLUID_PATTERN_TERMINAL_EX(new ItemGuiFactory(IWirelessTerminal.class) { + + @Override + protected Object createServerGui(EntityPlayer player, IWirelessTerminal inv) { + return new ContainerFluidPatternExWireless(player.inventory, inv); + } + + @Override + protected Object createClientGui(EntityPlayer player, IWirelessTerminal inv) { + return new GuiFluidPatternExWireless(player.inventory, inv); + } + }), WIRELESS_INTERFACE_TERMINAL(new ItemGuiFactory(IWirelessTerminal.class) { @Override diff --git a/src/main/java/com/glodblock/github/inventory/item/WirelessPatternTerminalExInventory.java b/src/main/java/com/glodblock/github/inventory/item/WirelessPatternTerminalExInventory.java new file mode 100644 index 00000000..20a80efa --- /dev/null +++ b/src/main/java/com/glodblock/github/inventory/item/WirelessPatternTerminalExInventory.java @@ -0,0 +1,328 @@ +package com.glodblock.github.inventory.item; + +import java.util.ArrayList; +import java.util.List; +import java.util.Objects; + +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.inventory.IInventory; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraftforge.common.util.ForgeDirection; + +import appeng.api.config.*; +import appeng.api.implementations.items.IAEItemPowerStorage; +import appeng.api.networking.IGridNode; +import appeng.api.storage.IMEInventoryHandler; +import appeng.api.storage.IMEMonitor; +import appeng.api.storage.MEMonitorHandler; +import appeng.api.storage.StorageChannel; +import appeng.api.storage.data.IAEFluidStack; +import appeng.api.storage.data.IAEItemStack; +import appeng.api.util.AECableType; +import appeng.api.util.IConfigManager; +import appeng.items.contents.WirelessTerminalViewCells; +import appeng.items.tools.powered.ToolWirelessTerminal; +import appeng.tile.inventory.AppEngInternalInventory; +import appeng.tile.inventory.InvOperation; +import appeng.util.ConfigManager; +import appeng.util.Platform; + +import com.glodblock.github.common.item.ItemFluidPacket; +import com.glodblock.github.inventory.ItemBiggerAppEngInventory; +import com.glodblock.github.inventory.WirelessFluidPatternTerminalPatterns; +import com.glodblock.github.util.Util; + +public class WirelessPatternTerminalExInventory extends MEMonitorHandler + implements IWirelessPatternTerminal { + + private final ItemStack target; + private final IAEItemPowerStorage ips; + private final int inventorySlot; + private final AppEngInternalInventory viewCell; + private final StorageChannel channel; + private final IGridNode grid; + + protected AppEngInternalInventory crafting; + protected AppEngInternalInventory output; + protected final WirelessFluidPatternTerminalPatterns pattern; + + protected boolean craftingMode = false; + protected boolean substitute = false; + protected boolean combine = false; + protected boolean prioritize = false; + protected boolean inverted = false; + protected boolean beSubstitute = false; + protected int activePage = 0; + + @SuppressWarnings("unchecked") + public WirelessPatternTerminalExInventory(final ItemStack is, final int slot, IGridNode gridNode, + EntityPlayer player) { + super( + (IMEInventoryHandler) Objects + .requireNonNull(Util.getWirelessInv(is, player, StorageChannel.ITEMS))); + this.ips = (ToolWirelessTerminal) is.getItem(); + this.grid = gridNode; + this.target = is; + this.inventorySlot = slot; + this.viewCell = new WirelessTerminalViewCells(is); + this.channel = StorageChannel.ITEMS; + this.pattern = new WirelessFluidPatternTerminalPatterns(is); + this.crafting = new ItemBiggerAppEngInventory(is, "crafting_ex", 32); + this.output = new ItemBiggerAppEngInventory(is, "output_ex", 32); + } + + public StorageChannel getChannel() { + return this.channel; + } + + @Override + public ItemStack getItemStack() { + return this.target; + } + + @Override + public double extractAEPower(double amt, Actionable mode, PowerMultiplier usePowerMultiplier) { + amt = usePowerMultiplier.multiply(amt); + if (mode == Actionable.SIMULATE) { + return usePowerMultiplier.divide(Math.min(amt, this.ips.getAECurrentPower(this.target))); + } + return usePowerMultiplier.divide(this.ips.extractAEPower(this.target, amt)); + } + + @Override + public IMEMonitor getItemInventory() { + return this; + } + + @Override + public IMEMonitor getFluidInventory() { + return null; + } + + public void readFromNBT() { + NBTTagCompound data = Platform.openNbtData(this.target); + this.setSubstitution(data.getBoolean("substitute")); + this.setCombineMode(data.getBoolean("combine")); + this.setBeSubstitute(data.getBoolean("beSubstitute")); + this.setPrioritization(data.getBoolean("priorization")); + this.setInverted(data.getBoolean("inverted")); + this.setActivePage(data.getInteger("activePage")); + } + + public void writeToNBT() { + NBTTagCompound data = Platform.openNbtData(this.target); + data.setBoolean("substitute", this.substitute); + data.setBoolean("combine", this.combine); + data.setBoolean("beSubstitute", this.beSubstitute); + data.setBoolean("priorization", this.prioritize); + data.setBoolean("inverted", this.inverted); + data.setInteger("activePage", this.activePage); + } + + @Override + public IConfigManager getConfigManager() { + final ConfigManager out = new ConfigManager((manager, settingName, newValue) -> { + final NBTTagCompound data = Platform.openNbtData(this.target); + manager.writeToNBT(data); + }); + out.registerSetting(Settings.SORT_BY, SortOrder.NAME); + out.registerSetting(Settings.VIEW_MODE, ViewItems.ALL); + out.registerSetting(Settings.SORT_DIRECTION, SortDir.ASCENDING); + out.readFromNBT((NBTTagCompound) Platform.openNbtData(this.target).copy()); + this.readFromNBT(); + return out; + } + + @Override + public int getInventorySlot() { + return this.inventorySlot; + } + + @Override + public IInventory getViewCellStorage() { + return this.viewCell; + } + + @Override + public IGridNode getGridNode(ForgeDirection dir) { + return this.grid; + } + + @Override + public AECableType getCableConnectionType(ForgeDirection dir) { + return AECableType.NONE; + } + + @Override + public void securityBreak() { + this.getGridNode(ForgeDirection.UNKNOWN).getMachine().securityBreak(); + } + + @Override + public void saveChanges() { + // NO-OP + } + + @Override + public void onChangeInventory(IInventory inv, int slot, InvOperation mc, ItemStack removedStack, + ItemStack newStack) { + // NO-OP + } + + private void fixCraftingRecipes() { + if (this.craftingMode) { + for (int x = 0; x < this.crafting.getSizeInventory(); x++) { + final ItemStack is = this.crafting.getStackInSlot(x); + if (is != null) { + is.stackSize = 1; + } + } + } + } + + @Override + public boolean isInverted() { + return this.inverted; + } + + @Override + public IInventory getInventoryByName(String name) { + if (name.equals("crafting")) { + return this.crafting; + } + + if (name.equals("output")) { + return this.output; + } + + if (name.equals("pattern")) { + return this.pattern; + } + + return null; + } + + @Override + public boolean canBeSubstitute() { + return this.beSubstitute; + } + + @Override + public boolean isPrioritize() { + return this.prioritize; + } + + @Override + public boolean isSubstitution() { + return this.substitute; + } + + @Override + public boolean shouldCombine() { + return this.combine; + } + + @Override + public void onChangeCrafting(IAEItemStack[] newCrafting, IAEItemStack[] newOutput) { + IInventory crafting = this.getInventoryByName("crafting"); + IInventory output = this.getInventoryByName("output"); + if (crafting instanceof AppEngInternalInventory && output instanceof AppEngInternalInventory) { + for (int x = 0; x < crafting.getSizeInventory() && x < newCrafting.length; x++) { + final IAEItemStack item = newCrafting[x]; + crafting.setInventorySlotContents(x, item == null ? null : item.getItemStack()); + } + for (int x = 0; x < output.getSizeInventory() && x < newOutput.length; x++) { + final IAEItemStack item = newOutput[x]; + output.setInventorySlotContents(x, item == null ? null : item.getItemStack()); + } + } + } + + @Override + public void setCraftingRecipe(boolean craftingMode) { + this.craftingMode = craftingMode; + this.fixCraftingRecipes(); + } + + @Override + public void setSubstitution(boolean canSubstitute) { + this.substitute = canSubstitute; + } + + @Override + public void setBeSubstitute(boolean canBeSubstitute) { + this.beSubstitute = canBeSubstitute; + } + + @Override + public void setCombineMode(boolean shouldCombine) { + this.combine = shouldCombine; + } + + @Override + public void setPrioritization(boolean canPrioritize) { + this.prioritize = canPrioritize; + } + + @Override + public void setInverted(boolean inverted) { + this.inverted = inverted; + } + + @Override + public int getActivePage() { + return this.activePage; + } + + @Override + public void setActivePage(int activePage) { + this.activePage = activePage; + } + + @Override + public boolean isCraftingRecipe() { + return this.craftingMode; + } + + @Override + public void sortCraftingItems() { + List items = new ArrayList(); + List fluids = new ArrayList(); + for (ItemStack is : this.crafting) { + if (is == null) continue; + if (is.getItem() instanceof ItemFluidPacket) { + fluids.add(is); + } else { + items.add(is); + } + } + if (this.prioritize) { + fluids.addAll(items); + items.clear(); + } else { + items.addAll(fluids); + fluids.clear(); + } + + for (int i = 0; i < this.crafting.getSizeInventory(); i++) { + if (this.crafting.getStackInSlot(i) == null) break; + if (items.isEmpty()) { + this.crafting.setInventorySlotContents(i, fluids.get(i)); + } else { + this.crafting.setInventorySlotContents(i, items.get(i)); + } + } + saveChanges(); + } + + @Override + public void saveSettings() { + this.writeToNBT(); + } + + @Override + public IGridNode getActionableNode() { + return this.grid; + } +} diff --git a/src/main/java/com/glodblock/github/nei/NEI_FC_Config.java b/src/main/java/com/glodblock/github/nei/NEI_FC_Config.java index d8209f8a..aa27665c 100644 --- a/src/main/java/com/glodblock/github/nei/NEI_FC_Config.java +++ b/src/main/java/com/glodblock/github/nei/NEI_FC_Config.java @@ -4,10 +4,7 @@ import codechicken.nei.api.API; import codechicken.nei.api.IConfigureNEI; import com.glodblock.github.FluidCraft; -import com.glodblock.github.client.gui.GuiFluidCraftingWireless; -import com.glodblock.github.client.gui.GuiFluidPatternTerminal; -import com.glodblock.github.client.gui.GuiFluidPatternTerminalEx; -import com.glodblock.github.client.gui.GuiFluidPatternWireless; +import com.glodblock.github.client.gui.*; import com.glodblock.github.nei.recipes.FluidRecipe; public class NEI_FC_Config implements IConfigureNEI { @@ -25,6 +22,10 @@ public class NEI_FC_Config implements IConfigureNEI { GuiFluidPatternWireless.class, FluidPatternTerminalRecipeTransferHandler.INSTANCE, identifier); + API.registerGuiOverlayHandler( + GuiFluidPatternExWireless.class, + FluidPatternTerminalRecipeTransferHandler.INSTANCE, + identifier); API.registerGuiOverlayHandler( GuiFluidPatternTerminal.class, FluidPatternTerminalRecipeTransferHandler.INSTANCE, diff --git a/src/main/resources/assets/ae2fc/lang/en_US.lang b/src/main/resources/assets/ae2fc/lang/en_US.lang index 7e6603da..a5e20d0f 100644 --- a/src/main/resources/assets/ae2fc/lang/en_US.lang +++ b/src/main/resources/assets/ae2fc/lang/en_US.lang @@ -19,6 +19,7 @@ item.wireless_ultra_terminal.WIRELESS_FLUID_PATTERN_TERMINAL.name=Universal Wire item.wireless_ultra_terminal.WIRELESS_FLUID_TERMINAL.name=Universal Wireless Terminal - Fluid item.wireless_ultra_terminal.WIRELESS_ESSENTIA_TERMINAL.name=Universal Wireless Terminal - Essentia item.wireless_ultra_terminal.WIRELESS_INTERFACE_TERMINAL.name=Universal Wireless Terminal - Interface +item.wireless_ultra_terminal.WIRELESS_FLUID_PATTERN_TERMINAL_EX.name=Universal Wireless Terminal - Processing Pattern item.fluid_packet.name=Fluid Packet item.fluid_storage.1.name=%s1k%s ME Fluid Storage Cell item.fluid_storage.4.name=%s4k%s ME Fluid Storage Cell @@ -81,6 +82,7 @@ ae2fc.tooltip.ultra_terminal.WIRELESS_FLUID_PATTERN_TERMINAL=Mode: Pattern Termi ae2fc.tooltip.ultra_terminal.WIRELESS_FLUID_TERMINAL=Mode: Fluid Terminal ae2fc.tooltip.ultra_terminal.WIRELESS_ESSENTIA_TERMINAL=Mode: Essentia Terminal ae2fc.tooltip.ultra_terminal.WIRELESS_INTERFACE_TERMINAL=Mode: Interface Terminal +ae2fc.tooltip.ultra_terminal.WIRELESS_FLUID_PATTERN_TERMINAL_EX=Mode: Processing Pattern Terminal ae2fc.tooltip.ultra_terminal=Right click + sneaking to switch mode. ae2fc.tooltip.cell_contents=Contains Fluid: @@ -102,6 +104,7 @@ ae2fc.tooltip.craft_terminal_w=Crafting Terminal ae2fc.tooltip.pattern_terminal_w=Pattern Terminal ae2fc.tooltip.essentia_terminal_w=Essentia Terminal ae2fc.tooltip.interface_terminal_w=Interface Terminal +ae2fc.tooltip.pattern_terminal_ex_w=Processing Pattern Terminal ae2fc.tooltip.wireless.installed=Installed Card: ae2fc.tooltip.not_prio=Allow fluids to be placed first diff --git a/src/main/resources/assets/ae2fc/lang/zh_CN.lang b/src/main/resources/assets/ae2fc/lang/zh_CN.lang index d5c4c563..1d3164ae 100644 --- a/src/main/resources/assets/ae2fc/lang/zh_CN.lang +++ b/src/main/resources/assets/ae2fc/lang/zh_CN.lang @@ -19,6 +19,7 @@ item.wireless_ultra_terminal.WIRELESS_FLUID_PATTERN_TERMINAL.name=无线ME通用 item.wireless_ultra_terminal.WIRELESS_FLUID_TERMINAL.name=无线ME通用终端 - 流体 item.wireless_ultra_terminal.WIRELESS_ESSENTIA_TERMINAL.name=无线ME通用终端 - 源质 item.wireless_ultra_terminal.WIRELESS_INTERFACE_TERMINAL.name=无线ME通用终端 - 接口 +item.wireless_ultra_terminal.WIRELESS_FLUID_PATTERN_TERMINAL_EX.name=无线ME通用终端 - 增广样板 item.fluid_packet.name=流体封包 item.fluid_storage.1.name=%s1k%s-ME流体存储元件 item.fluid_storage.4.name=%s4k%s-ME流体存储元件 @@ -81,6 +82,7 @@ ae2fc.tooltip.ultra_terminal.WIRELESS_FLUID_PATTERN_TERMINAL=模式: 样板 ae2fc.tooltip.ultra_terminal.WIRELESS_FLUID_TERMINAL=模式: 流体 ae2fc.tooltip.ultra_terminal.WIRELESS_ESSENTIA_TERMINAL=模式: 源质 ae2fc.tooltip.ultra_terminal.WIRELESS_INTERFACE_TERMINAL=模式: 接口 +ae2fc.tooltip.ultra_terminal.WIRELESS_FLUID_PATTERN_TERMINAL_EX=模式: 增广样板 ae2fc.tooltip.ultra_terminal=Shift右击切换模式。 ae2fc.tooltip.cell_contents=内含流体: @@ -102,6 +104,7 @@ ae2fc.tooltip.craft_terminal_w=合成终端 ae2fc.tooltip.pattern_terminal_w=样板终端 ae2fc.tooltip.essentia_terminal_w=源质终端 ae2fc.tooltip.interface_terminal_w=接口终端 +ae2fc.tooltip.pattern_terminal_ex_w=增广样板终端 ae2fc.tooltip.wireless.installed=已安装的卡: ae2fc.tooltip.not_prio=优先放置流体 diff --git a/src/main/resources/assets/ae2fc/textures/gui/states1.png b/src/main/resources/assets/ae2fc/textures/gui/states1.png index 72de76cf2787c020b89f9ca2365507cf5241084f..e300fa7264dee5cf68b2419feede9c5e61eed6c1 100644 GIT binary patch delta 1439 zcmV;Q1z`Hv39t*0BYy>VNklruY7mjdER&5y>EUJpHXXTtGHfY zU#Ic&XMCCPIl#o9du@Q~>l-`|ZEk*+{=Rj=bwuaDJ8z}joAtCq|I#6!4SaJg=OH3H z0P<(Q$hgD-c7J4WAnkDi9HMg6pL(%h*mobsD6&)MA@|2_J-z(ON2RfM?trLPm%VgT z{9dPHT6>y~>!!Kn5qU;FpZ7Q*`p%!RWhWwRKq}k6UZjo4>*BgtEcjmVO+{ z2|Nlo@*s=I&(F_OcXzjFuyGH47$et2RDNeRo29s?)Hpn9rta+{p z++)Y&IT7E}h-htXO=KY!i;3%vjSUg~a)5*&6|{#2TV75XSXDrf!I>~cUS3YM4(Rap zN^hk@YXS(#q*>=^a^%$w&EtS9BV<7aG7uym27ii_3)N(spk_jax{;Boh;z9drBW$j zLq3&4-C=9Z1U4%<>ZFN0qwHBoh8+FRLv^%q;d7eRXcMwLujx~uMf;XJRawX*5cw~pbM{dJa0EP z)_<2CTIY?+ZlUP8w|Re?e){EiW5I*)C-IA9Sw$fe*ynEa+b2()^vy9k0P;AYj*X4s zTx7@N@jxe@dAgB$-+nL9Nyc}RmyCTJd7=X4zbzf*oQXJ7;B46*0PGd9N)qJJ^ar^+c%LWn+&6zZm?LnN}tDwD}*$E4Gx zP0EV+<0eP`_GFzPer)c0(YO3Yl8&5S&}O3SD#YiaYN4Ja^8v@$<>h6&<#0>IZ@^g0 z5wTD^Sw4`Ce5|NMMk;!GdPGx!qE>S|TvWjL9zRezl`u2-Xrdn_&cyG`}-sk|%J3(uG zxkKIKbfT%LNu+9PYs(lM%cd&_`bBeh{Y1@kCnhGG4CHEjLdyAl#Q7i+gn!-LU5ZBi zYM+^z3Fik52aSa4}vOblZ--H z17whnPG+H8g@SaCYdH&{DPo39&{WVeLXm+W&FjX7QbIDRN>?KaivyJqHp*(Bxz&XK tT@C0^33=eakJF!@`%RoGYZw9%{Rh3wWOrYyR*C=s002ovPDHLkV1j8%yVU>y delta 1221 zcmV;$1Umb$3)l&eBYy;+NklAl(phY61;Cv`yMjs5DhX1EnQW zv)Pf~mwn?m-@I>j_Fs4W!MFQn=9`({d++zY@9jFS>r%VnIDd}F;KcE?B6od#Q=Fi< zCUUu4O$GJBOGhb}JE~NWG%vylfE{5R%3P^fm#hzl&UM+mM>hhtO+phB z6H4P;ycmc)fGm(!%*evj)Ra0GZ~#cB)6_jUPp7ks-nom{h)x}!r;03F0+45dKwn>< z?=`rl*MA7?t$RiW1d9DeZ zW5@J+5`m`?(dOo+%0ecSQO7$wJ1Y9s00}`V7|$%WzML|!s(>JaGhvIozMP5VaIiSl3S0C6J&d2Z^kFH~$eVSP}! ze2}dE{{GMbbTlRQ2MCoAqK}rs+|(o_692K9nVAvijEx;^Qcfar15g!Ji;rr5@|@rC5KQZsNZrE8%Qw&AX@8#ZryE8Z&NG8c7Hl- zt*_S9)y|-?cG_|2N?U&rJlcM@?t5ovXDbqFpdW9>{U8#CQmI7AWKiu33k%WzR(YNP zVTNu?h@AscwE0+aCLTX2HF9C(B^kvk0}??JBCj9E#sQr?2%4mAGKyslkVQI@%wo9; zh3Ov0dKO|+#0;IFt)O+pA_HNXmp