From 09c1c49529468192372277659d5c4827bac62b15 Mon Sep 17 00:00:00 2001 From: asdflj <854865755@qq.com> Date: Fri, 17 Feb 2023 11:34:07 +0800 Subject: [PATCH] pattern terminal add auto fill blank pattern --- .../github/client/gui/GuiFCImgButton.java | 2 + .../client/gui/base/FCGuiEncodeTerminal.java | 27 +++++++++++++ .../base/FCContainerEncodeTerminal.java | 37 ++++++++++++++++++ .../parts/base/FCFluidEncodeTerminal.java | 13 ++++++ .../inventory/item/IItemPatternTerminal.java | 4 ++ .../WirelessPatternTerminalExInventory.java | 13 ++++++ .../WirelessPatternTerminalInventory.java | 13 ++++++ .../network/CPacketFluidPatternTermBtns.java | 3 ++ .../resources/assets/ae2fc/lang/en_US.lang | 5 ++- .../resources/assets/ae2fc/lang/zh_CN.lang | 8 +++- .../assets/ae2fc/textures/gui/states1.png | Bin 1456 -> 2024 bytes 11 files changed, 122 insertions(+), 3 deletions(-) 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 2d28896b..d731d906 100644 --- a/src/main/java/com/glodblock/github/client/gui/GuiFCImgButton.java +++ b/src/main/java/com/glodblock/github/client/gui/GuiFCImgButton.java @@ -57,6 +57,8 @@ public class GuiFCImgButton extends GuiButton implements ITooltip { 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"); + this.registerApp(16, "FILL_PATTERN", "DO_FILL", "fill_pattern"); + this.registerApp(17, "NOT_FILL_PATTERN", "DONT_FILL", "not_fill_pattern"); } } diff --git a/src/main/java/com/glodblock/github/client/gui/base/FCGuiEncodeTerminal.java b/src/main/java/com/glodblock/github/client/gui/base/FCGuiEncodeTerminal.java index 2815f3d0..5b67b48b 100644 --- a/src/main/java/com/glodblock/github/client/gui/base/FCGuiEncodeTerminal.java +++ b/src/main/java/com/glodblock/github/client/gui/base/FCGuiEncodeTerminal.java @@ -51,6 +51,8 @@ public abstract class FCGuiEncodeTerminal extends GuiItemMonitor { protected GuiImgButton beSubstitutionsDisabledBtn; protected GuiFCImgButton combineEnableBtn; protected GuiFCImgButton combineDisableBtn; + protected GuiFCImgButton autoFillPatternEnableBtn; + protected GuiFCImgButton autoFillPatternDisableBtn; protected final GuiScrollbar processingScrollBar = new GuiScrollbar(); protected final AppEngRenderItem stackSizeRenderer = Ae2ReflectClient.getStackSizeRenderer(this); @@ -62,6 +64,24 @@ public abstract class FCGuiEncodeTerminal extends GuiItemMonitor { setReservedSpace(81); } + @Override + public void initGui() { + super.initGui(); + this.buttonList.add( + this.autoFillPatternEnableBtn = new GuiFCImgButton( + this.guiLeft - 18, + this.offsetY, + "FILL_PATTERN", + "DO_FILL")); + this.buttonList.add( + this.autoFillPatternDisableBtn = new GuiFCImgButton( + this.guiLeft - 18, + this.offsetY, + "NOT_FILL_PATTERN", + "DONT_FILL")); + this.offsetY += 20; + } + @Override protected void actionPerformed(final GuiButton btn) { super.actionPerformed(btn); @@ -108,6 +128,11 @@ public abstract class FCGuiEncodeTerminal extends GuiItemMonitor { } else if (ModAndClassUtil.isBeSubstitutionsButton && beSubstitutionsEnabledBtn == btn) { FluidCraft.proxy.netHandler .sendToServer(new CPacketFluidPatternTermBtns("PatternTerminal.beSubstitute", "0")); + } else if (this.autoFillPatternDisableBtn == btn || this.autoFillPatternEnableBtn == btn) { + FluidCraft.proxy.netHandler.sendToServer( + new CPacketFluidPatternTermBtns( + "PatternTerminal.AutoFillerPattern", + this.autoFillPatternDisableBtn == btn ? "1" : "0")); } } @@ -124,6 +149,8 @@ public abstract class FCGuiEncodeTerminal extends GuiItemMonitor { updateButton(this.beSubstitutionsDisabledBtn, !this.container.beSubstitute); updateButton(this.fluidPrioritizedEnabledBtn, this.container.prioritize); updateButton(this.fluidPrioritizedDisabledBtn, !this.container.prioritize); + updateButton(this.autoFillPatternEnableBtn, this.container.autoFillPattern); + updateButton(this.autoFillPatternDisableBtn, !this.container.autoFillPattern); super.drawFG(offsetX, offsetY, mouseX, mouseY); } diff --git a/src/main/java/com/glodblock/github/client/gui/container/base/FCContainerEncodeTerminal.java b/src/main/java/com/glodblock/github/client/gui/container/base/FCContainerEncodeTerminal.java index 58be4050..14137f6d 100644 --- a/src/main/java/com/glodblock/github/client/gui/container/base/FCContainerEncodeTerminal.java +++ b/src/main/java/com/glodblock/github/client/gui/container/base/FCContainerEncodeTerminal.java @@ -18,6 +18,7 @@ import net.minecraftforge.fluids.FluidStack; import net.minecraftforge.fluids.IFluidContainerItem; import appeng.api.AEApi; +import appeng.api.config.Actionable; import appeng.api.definitions.IDefinitions; import appeng.api.storage.ITerminalHost; import appeng.api.storage.data.IAEItemStack; @@ -75,6 +76,9 @@ public abstract class FCContainerEncodeTerminal extends ContainerItemMonitor @GuiSync(91) public boolean prioritize = false; + @GuiSync(90) + public boolean autoFillPattern = false; + public FCContainerEncodeTerminal(final InventoryPlayer ip, final ITerminalHost monitorable) { super(ip, monitorable); this.patternTerminal = (IItemPatternTerminal) monitorable; @@ -302,6 +306,7 @@ public abstract class FCContainerEncodeTerminal extends ContainerItemMonitor } this.patternSlotOUT.putStack(null); } + fillPattern(); } public void encodeAllItemAndMoveToInventory() { @@ -315,9 +320,40 @@ public abstract class FCContainerEncodeTerminal extends ContainerItemMonitor this.patternSlotOUT.putStack(null); this.patternSlotIN.putStack(null); } + fillPattern(); + } + + private void fillPattern() { + if (this.autoFillPattern && this.getHost().getItemInventory() != null) { + // try to use me network item to fill pattern input slot + final IDefinitions definitions = AEApi.instance().definitions(); + int fillStackSize = this.patternSlotIN.getHasStack() ? 64 - this.patternSlotIN.getStack().stackSize : 64; + if (fillStackSize == 0) return; + for (ItemStack blankPattern : definitions.materials().blankPattern().maybeStack(fillStackSize).asSet()) { + IAEItemStack iBlankPattern = AEApi.instance().storage().createItemStack(blankPattern); + if (this.patternSlotIN.getHasStack() && !iBlankPattern.isSameType(this.patternSlotIN.getStack())) + continue; + IAEItemStack out = this.getHost().getItemInventory() + .extractItems(iBlankPattern, Actionable.SIMULATE, this.getActionSource()); + if (out != null) { + this.getHost().getItemInventory() + .extractItems(iBlankPattern, Actionable.MODULATE, this.getActionSource()); + ItemStack outPattern; + if (this.patternSlotIN.getHasStack()) { + outPattern = this.patternSlotIN.getStack().copy(); + outPattern.stackSize += out.getItemStack().stackSize; + } else { + outPattern = out.getItemStack(); + } + this.patternSlotIN.putStack(outPattern); + return; + } + } + } } public void encode() { + fillPattern(); if (!checkHasFluidPattern()) { encodeItemPattern(); return; @@ -454,6 +490,7 @@ public abstract class FCContainerEncodeTerminal extends ContainerItemMonitor this.combine = this.patternTerminal.shouldCombine(); this.beSubstitute = this.patternTerminal.canBeSubstitute(); this.prioritize = this.patternTerminal.isPrioritize(); + this.autoFillPattern = this.patternTerminal.isAutoFillPattern(); } } diff --git a/src/main/java/com/glodblock/github/common/parts/base/FCFluidEncodeTerminal.java b/src/main/java/com/glodblock/github/common/parts/base/FCFluidEncodeTerminal.java index 0a04948a..1cdb7f54 100644 --- a/src/main/java/com/glodblock/github/common/parts/base/FCFluidEncodeTerminal.java +++ b/src/main/java/com/glodblock/github/common/parts/base/FCFluidEncodeTerminal.java @@ -25,6 +25,7 @@ public abstract class FCFluidEncodeTerminal extends FCPart implements IItemPatte protected boolean prioritize = false; protected boolean inverted = false; protected boolean beSubstitute = false; + protected boolean autoFillPattern = false; protected int activePage = 0; public FCFluidEncodeTerminal(ItemStack is) { @@ -51,6 +52,7 @@ public abstract class FCFluidEncodeTerminal extends FCPart implements IItemPatte this.setPrioritization(data.getBoolean("priorization")); this.setInverted(data.getBoolean("inverted")); this.setActivePage(data.getInteger("activePage")); + this.setAutoFillPattern(data.getBoolean("autoFillPattern")); this.pattern.readFromNBT(data, "pattern"); this.output.readFromNBT(data, "outputList"); this.crafting.readFromNBT(data, "craftingGrid"); @@ -66,6 +68,7 @@ public abstract class FCFluidEncodeTerminal extends FCPart implements IItemPatte data.setBoolean("substitute", this.substitute); data.setBoolean("inverted", this.inverted); data.setInteger("activePage", this.activePage); + data.setBoolean("autoFillPattern", this.autoFillPattern); this.pattern.writeToNBT(data, "pattern"); this.output.writeToNBT(data, "outputList"); this.crafting.writeToNBT(data, "craftingGrid"); @@ -204,4 +207,14 @@ public abstract class FCFluidEncodeTerminal extends FCPart implements IItemPatte } saveChanges(); } + + @Override + public boolean isAutoFillPattern() { + return this.autoFillPattern; + } + + @Override + public void setAutoFillPattern(boolean canFill) { + this.autoFillPattern = canFill; + } } diff --git a/src/main/java/com/glodblock/github/inventory/item/IItemPatternTerminal.java b/src/main/java/com/glodblock/github/inventory/item/IItemPatternTerminal.java index 4ba4f335..730530f2 100644 --- a/src/main/java/com/glodblock/github/inventory/item/IItemPatternTerminal.java +++ b/src/main/java/com/glodblock/github/inventory/item/IItemPatternTerminal.java @@ -35,4 +35,8 @@ public interface IItemPatternTerminal extends IItemTerminal { boolean isCraftingRecipe(); void sortCraftingItems(); + + boolean isAutoFillPattern(); + + void setAutoFillPattern(boolean canFill); } diff --git a/src/main/java/com/glodblock/github/inventory/item/WirelessPatternTerminalExInventory.java b/src/main/java/com/glodblock/github/inventory/item/WirelessPatternTerminalExInventory.java index f24b99a1..7c94898e 100644 --- a/src/main/java/com/glodblock/github/inventory/item/WirelessPatternTerminalExInventory.java +++ b/src/main/java/com/glodblock/github/inventory/item/WirelessPatternTerminalExInventory.java @@ -56,6 +56,7 @@ public class WirelessPatternTerminalExInventory extends MEMonitorHandlerZa6@$LthIB}x9zHs3J zwr}|`QPiw9C+yX@ekv#A3x41VpCw@D|2!;i*OqQcpxMb`wlk;i0BHC z{6|}pIpTy;WPeqCT|fzPDAcX~;8V3y?(Q!~>~=wb+@--HOnv5Ue{5G5iCW{b2B+lj zF-*70jhJbhmLpHgD|B>p1Qd{cTRs%J5-}w(RBryZ16N}&$m>id9eTk}e?EyHQtvql z{1+(8lPoQN{P=Oqnl(!{%Dl%uj?r_XP=9AbLj#s9S$`tsblK+tI=9chCV%7cI9gj< ztyCE*v^G)fkU7RgRaMo95^B`A38<=?Afuqr?4%NeQbgf_^1WGUyYs<}b3JTcLR(07 zh0xlyYh{e9rqGSds|*RPlNLJAP2rKK1jZ^WAwO}Tp?9|PWat`XU=yeA-e zMUa>>Wq(TGHSE)K1bPmzvaDXcI@hu7tt%mpOe%)YnKNgs39Leht=J*kLg?1Di#eI( z=?N9{DkpePDW=bfg`NhWy}ey}p}f3YUSGX>Ra$>IFoYN?Z2b;dFQ*EuDkP|&JmIpu zUQVqF*zm>KntX@e5lBcUt>T>lFzn6O4A!h3N_I? zeSi9NqzccLJ|Rj${1cfBoH=@FcvlVh21gBg2I9rjxZ|?u&Cn zbDRp0Ja?!YH*Vy?1WSo5ZU6QLDm!MyO(n3{vl=bwZN%>s((Hs^~AYz=SDPMN7fU~#sKhmyJy-| zl7EQHGH{}{75$x^^8ShC{(h!19fvpypvO*JCz}uXfC8rFNnV`_o8)KC71=ZBAuvRw zzS8 z8aYPaj}v>3?1NVgynH2ruC6W_GP)9zCr_6D0I~1ozY}sS=R{fC7CN>tlL~zI*#*p= zx*V5}Ov;@K+bnN8pMTe}bm>y;+_}^D#PYBw*vB!$Au?$T3j<#8J-|InNg;Yh_v6y> zC-LgE_pO$>=LdO-HNolc}gr7segu^>h#2pY)xkbm^pIS<`sLbrU?>yKhR z{PTIWCb&+CSyfo)St|D|*e$KSZQC}#^PN^y7R7<1favqbn)3ss@~lP(eUVX#-hQyr z@+NHO^8xfh)_I1KUV$o;aetL#|Ml>+dVNklruY7mjdER&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=s002ovPDHLkV1nfCyXyb|