Skip to content

Commit 19d6bb1

Browse files
authored
Merge pull request #8 from Runakai1/Terminal
Terminal
2 parents 1998750 + 05b8538 commit 19d6bb1

File tree

11 files changed

+117
-8
lines changed

11 files changed

+117
-8
lines changed

src/main/java/com/glodblock/github/client/gui/GuiBaseFluidPatternTerminalEx.java

Lines changed: 35 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@
1111
import com.glodblock.github.FluidCraft;
1212
import com.glodblock.github.client.gui.container.FCBasePartContainerEx;
1313
import com.glodblock.github.network.CPacketFluidPatternTermBtns;
14-
import com.glodblock.github.util.Ae2ReflectClient;
1514
import com.glodblock.github.util.ModAndClassUtil;
1615
import com.glodblock.github.util.NameConst;
1716
import net.minecraft.client.gui.GuiButton;
@@ -24,11 +23,15 @@ public class GuiBaseFluidPatternTerminalEx extends GuiFCBaseMonitor {
2423

2524
private static final String SUBSITUTION_DISABLE = "0";
2625
private static final String SUBSITUTION_ENABLE = "1";
26+
private static final String PRIORITY_DISABLE = "0";
27+
private static final String PRIORITY_ENABLE = "1";
2728

2829
public FCBasePartContainerEx container;
2930

3031
private GuiImgButton substitutionsEnabledBtn;
3132
private GuiImgButton substitutionsDisabledBtn;
33+
private GuiFCImgButton fluidPrioritizedEnabledBtn;
34+
private GuiFCImgButton fluidPrioritizedDisabledBtn;
3235
private GuiImgButton encodeBtn;
3336
private GuiImgButton invertBtn;
3437
private GuiImgButton clearBtn;
@@ -65,6 +68,10 @@ else if( this.substitutionsEnabledBtn == btn || this.substitutionsDisabledBtn ==
6568
{
6669
FluidCraft.proxy.netHandler.sendToServer( new CPacketFluidPatternTermBtns( "PatternTerminalEx.Substitute", this.substitutionsEnabledBtn == btn ? SUBSITUTION_DISABLE : SUBSITUTION_ENABLE ) );
6770
}
71+
else if( this.fluidPrioritizedEnabledBtn == btn || this.fluidPrioritizedDisabledBtn == btn )
72+
{
73+
FluidCraft.proxy.netHandler.sendToServer( new CPacketFluidPatternTermBtns( "PatternTerminalEx.Prioritize", container.prioritize ? PRIORITY_DISABLE : PRIORITY_ENABLE ) );
74+
}
6875
else if( this.invertBtn == btn )
6976
{
7077
FluidCraft.proxy.netHandler.sendToServer( new CPacketFluidPatternTermBtns( "PatternTerminalEx.Invert", container.inverted ? "0" : "1" ) );
@@ -93,6 +100,14 @@ public void initGui()
93100
this.substitutionsDisabledBtn.setHalfSize( true );
94101
this.buttonList.add( this.substitutionsDisabledBtn );
95102

103+
this.fluidPrioritizedEnabledBtn = new GuiFCImgButton( this.guiLeft + 97, this.guiTop + this.ySize - 143, "FORCE_PRIO", "DO_PRIO" );
104+
this.fluidPrioritizedEnabledBtn.setHalfSize( true );
105+
this.buttonList.add( this.fluidPrioritizedEnabledBtn );
106+
107+
this.fluidPrioritizedDisabledBtn = new GuiFCImgButton( this.guiLeft + 97, this.guiTop + this.ySize - 143, "NOT_PRIO", "DONT_PRIO" );
108+
this.fluidPrioritizedDisabledBtn.setHalfSize( true );
109+
this.buttonList.add( this.fluidPrioritizedDisabledBtn );
110+
96111
invertBtn = new GuiImgButton( this.guiLeft + 87, this.guiTop + this.ySize - 153, Settings.ACTIONS, container.inverted ? PatternSlotConfig.C_4_16 : PatternSlotConfig.C_16_4);
97112
invertBtn.setHalfSize( true );
98113
this.buttonList.add( this.invertBtn );
@@ -137,6 +152,16 @@ public void drawFG( final int offsetX, final int offsetY, final int mouseX, fina
137152
this.substitutionsEnabledBtn.visible = false;
138153
this.substitutionsDisabledBtn.visible = true;
139154
}
155+
if( this.container.prioritize )
156+
{
157+
this.fluidPrioritizedEnabledBtn.visible = false;
158+
this.fluidPrioritizedDisabledBtn.visible = true;
159+
}
160+
else
161+
{
162+
this.fluidPrioritizedEnabledBtn.visible = true;
163+
this.fluidPrioritizedDisabledBtn.visible = false;
164+
}
140165

141166
if ( this.container.combine )
142167
{
@@ -184,11 +209,20 @@ public void drawScreen( final int mouseX, final int mouseY, final float btn )
184209
substitutionsEnabledBtn.visible = false;
185210
substitutionsDisabledBtn.visible = true;
186211
}
212+
if (container.prioritize) {
213+
fluidPrioritizedEnabledBtn.visible = true;
214+
fluidPrioritizedDisabledBtn.visible = false;
215+
} else {
216+
fluidPrioritizedEnabledBtn.visible = false;
217+
fluidPrioritizedDisabledBtn.visible = true;
218+
}
187219

188220
final int offset = container.inverted? 18 * -3: 0;
189221

190222
substitutionsEnabledBtn.xPosition = this.guiLeft + 97 + offset;
191223
substitutionsDisabledBtn.xPosition = this.guiLeft + 97 + offset;
224+
fluidPrioritizedEnabledBtn.xPosition = this.guiLeft + 97 + offset;
225+
fluidPrioritizedDisabledBtn.xPosition = this.guiLeft + 97 + offset;
192226
doubleBtn.xPosition = this.guiLeft + 97 + offset;
193227
clearBtn.xPosition = this.guiLeft + 87 + offset;
194228
invertBtn.xPosition = this.guiLeft + 87 + offset;

src/main/java/com/glodblock/github/client/gui/GuiFCImgButton.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,8 @@ public GuiFCImgButton( final int x, final int y, final String idx, final String
3737
appearances = new HashMap<>();
3838
this.registerApp( 0, "NOT_COMBINE", "DONT_COMBINE", "not_combine" );
3939
this.registerApp( 1, "FORCE_COMBINE", "DO_COMBINE", "combine" );
40+
this.registerApp( 2, "FORCE_PRIO", "DO_PRIO", "prio" );
41+
this.registerApp( 3, "NOT_PRIO", "DONT_PRIO", "not_prio" );
4042
}
4143
}
4244

src/main/java/com/glodblock/github/client/gui/GuiFCPriority.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ public class GuiFCPriority extends AEBaseGui
3434
private GuiButton plus10;
3535
private GuiButton plus100;
3636
private GuiButton plus1000;
37+
private GuiButton plus10000;
3738
private GuiButton minus1;
3839
private GuiButton minus10;
3940
private GuiButton minus100;
@@ -56,16 +57,20 @@ public void initGui()
5657
final int b = AEConfig.instance.priorityByStacksAmounts( 1 );
5758
final int c = AEConfig.instance.priorityByStacksAmounts( 2 );
5859
final int d = AEConfig.instance.priorityByStacksAmounts( 3 );
60+
final int e = AEConfig.instance.priorityByStacksAmounts( 4 );
5961

6062
this.buttonList.add( this.plus1 = new GuiButton( 0, this.guiLeft + 20, this.guiTop + 32, 22, 20, "+" + a ) );
6163
this.buttonList.add( this.plus10 = new GuiButton( 0, this.guiLeft + 48, this.guiTop + 32, 28, 20, "+" + b ) );
6264
this.buttonList.add( this.plus100 = new GuiButton( 0, this.guiLeft + 82, this.guiTop + 32, 32, 20, "+" + c ) );
6365
this.buttonList.add( this.plus1000 = new GuiButton( 0, this.guiLeft + 120, this.guiTop + 32, 38, 20, "+" + d ) );
66+
this.buttonList.add( this.plus10000 = new GuiButton( 0, this.guiLeft + 140, this.guiTop + 32, 42, 20, "+" + e ) );
67+
6468

6569
this.buttonList.add( this.minus1 = new GuiButton( 0, this.guiLeft + 20, this.guiTop + 69, 22, 20, "-" + a ) );
6670
this.buttonList.add( this.minus10 = new GuiButton( 0, this.guiLeft + 48, this.guiTop + 69, 28, 20, "-" + b ) );
6771
this.buttonList.add( this.minus100 = new GuiButton( 0, this.guiLeft + 82, this.guiTop + 69, 32, 20, "-" + c ) );
6872
this.buttonList.add( this.minus1000 = new GuiButton( 0, this.guiLeft + 120, this.guiTop + 69, 38, 20, "-" + d ) );
73+
this.buttonList.add( this.plus10000 = new GuiButton( 0, this.guiLeft + 140, this.guiTop + 32, 42, 20, "+" + e ) );
6974

7075
ItemStack myIcon = null;
7176
final Object target = ( (AEBaseContainer) this.inventorySlots ).getTarget();

src/main/java/com/glodblock/github/client/gui/container/FCBasePartContainerEx.java

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,8 @@ public void setHidden(boolean hide) {
6868
public boolean inverted;
6969
@GuiSync( 96 + (17-9) + 17 )
7070
public int activePage = 0;
71+
@GuiSync( 96 + (17-9) + 13 )
72+
public boolean prioritize = false;
7173

7274
public FCBasePartContainerEx(final InventoryPlayer ip, final ITerminalHost monitorable )
7375
{
@@ -207,6 +209,11 @@ else if( output == null )
207209
encodedValue.setTag( "out", tagOut );
208210
encodedValue.setBoolean( "substitute", this.isSubstitute() );
209211

212+
encodedValue.setTag( "in", tagIn );
213+
encodedValue.setTag( "out", tagOut );
214+
encodedValue.setBoolean( "piroritize", this.isPrioritize() );
215+
216+
210217
output.setTagCompound( encodedValue );
211218
}
212219

@@ -305,7 +312,8 @@ public void detectAndSendChanges()
305312
if( Platform.isServer() )
306313
{
307314
this.substitute = this.patternTerminal.isSubstitution();
308-
this.combine = this.patternTerminal.shouldCombine();
315+
this.combine = this.patternTerminal.shouldCombine(); //Check out
316+
this.prioritize = this.patternTerminal.isPrioritize();
309317
if (inverted != patternTerminal.isInverted() || activePage != patternTerminal.getActivePage()) {
310318
inverted = patternTerminal.isInverted();
311319
activePage = patternTerminal.getActivePage();
@@ -386,6 +394,8 @@ private boolean isSubstitute()
386394
return this.substitute;
387395
}
388396

397+
private boolean isPrioritize() { return this.prioritize; }
398+
389399
static boolean canDoubleStacks(SlotFake[] slots)
390400
{
391401
List<SlotFake> enabledSlots = Arrays.stream(slots).filter(SlotFake::isEnabled).collect(Collectors.toList());
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
package com.glodblock.github.client.gui.container;
2+
3+
4+
import akka.actor.Status;
5+
6+
import java.lang.reflect.Type;
7+
8+
public enum FluidPrioritization {
9+
ENABLED,
10+
DISABLED;
11+
12+
}

src/main/java/com/glodblock/github/common/parts/PartFluidPatternTerminalEx.java

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ public class PartFluidPatternTerminalEx extends FCBasePart {
3939

4040
private boolean substitute = false;
4141
private boolean combine = false;
42+
private boolean prioritize = false;
4243
private boolean inverted = false;
4344
private int activePage = 0;
4445

@@ -80,14 +81,15 @@ public boolean onPartActivate(final EntityPlayer player, final Vec3 pos ) {
8081
public void readFromNBT( final NBTTagCompound data )
8182
{
8283
super.readFromNBT( data );
83-
84+
8485
this.setSubstitution( data.getBoolean( "substitute" ) );
8586
this.setCombineMode( data.getBoolean("combine") );
8687
this.pattern.readFromNBT( data, "pattern" );
8788
this.output.readFromNBT( data, "outputList" );
8889
this.crafting.readFromNBT( data, "craftingGrid" );
8990

9091
this.setSubstitution( data.getBoolean( "substitute" ) );
92+
this.setPrioritization( data.getBoolean( "priorization") );
9193
this.setInverted( data.getBoolean( "inverted" ) );
9294
this.setActivePage( data.getInteger( "activePage" ) );
9395
}
@@ -96,13 +98,13 @@ public void readFromNBT( final NBTTagCompound data )
9698
public void writeToNBT( final NBTTagCompound data )
9799
{
98100
super.writeToNBT( data );
99-
101+
100102
data.setBoolean( "substitute", this.substitute );
101103
data.setBoolean( "combine", this.combine );
102104
this.pattern.writeToNBT( data, "pattern" );
103105
this.output.writeToNBT( data, "outputList" );
104106
this.crafting.writeToNBT( data, "craftingGrid" );
105-
107+
data.setBoolean("priorization", this.prioritize);
106108
data.setBoolean( "substitute", this.substitute );
107109
data.setBoolean( "inverted", this.inverted );
108110
data.setInteger( "activePage", this.activePage );
@@ -221,10 +223,19 @@ public boolean isSubstitution()
221223
return this.substitute;
222224
}
223225

226+
public boolean isPrioritize()
227+
{
228+
return this.prioritize;
229+
}
230+
224231
public void setSubstitution( boolean canSubstitute )
225232
{
226233
this.substitute = canSubstitute;
227234
}
235+
public void setPrioritization( boolean canPrioritize )
236+
{
237+
this.prioritize = canPrioritize;
238+
}
228239

229240
public void onChangeCrafting(IAEItemStack[] newCrafting, IAEItemStack[] newOutput) {
230241
IInventory crafting = this.getInventoryByName("crafting");

src/main/java/com/glodblock/github/nei/FluidPatternTerminalRecipeTransferHandler.java

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,10 @@
44
import codechicken.nei.recipe.IRecipeHandler;
55
import codechicken.nei.recipe.TemplateRecipeHandler;
66
import com.glodblock.github.FluidCraft;
7+
import com.glodblock.github.client.gui.GuiBaseFluidPatternTerminalEx;
78
import com.glodblock.github.client.gui.GuiFluidPatternTerminal;
89
import com.glodblock.github.client.gui.GuiFluidPatternTerminalEx;
10+
import com.glodblock.github.client.gui.container.FluidPrioritization;
911
import com.glodblock.github.nei.object.OrderStack;
1012
import com.glodblock.github.nei.recipes.FluidRecipe;
1113
import com.glodblock.github.network.CPacketTransferRecipe;
@@ -30,7 +32,11 @@ public class FluidPatternTerminalRecipeTransferHandler implements IOverlayHandle
3032
@Override
3133
public void overlayRecipe(GuiContainer firstGui, IRecipeHandler recipe, int recipeIndex, boolean shift) {
3234
if (isCorrectGui(firstGui)) {
33-
List<OrderStack<?>> in = FluidRecipe.getPackageInputs(recipe, recipeIndex);
35+
boolean priority = false;
36+
if (firstGui instanceof GuiBaseFluidPatternTerminalEx) {
37+
priority = ((GuiBaseFluidPatternTerminalEx)firstGui).container.prioritize;
38+
}
39+
List<OrderStack<?>> in = FluidRecipe.getPackageInputs(recipe, recipeIndex, priority);
3440
List<OrderStack<?>> out = FluidRecipe.getPackageOutputs(recipe, recipeIndex, !notUseOther(recipe));
3541
boolean craft = shouldCraft(recipe);
3642
FluidCraft.proxy.netHandler.sendToServer(new CPacketTransferRecipe(in, out, craft));

src/main/java/com/glodblock/github/nei/recipes/FluidRecipe.java

Lines changed: 23 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,11 @@
66
import com.glodblock.github.nei.object.IRecipeExtractor;
77
import com.glodblock.github.nei.object.IRecipeExtractorLegacy;
88
import com.glodblock.github.nei.object.OrderStack;
9+
import gregtech.common.items.GT_FluidDisplayItem;
10+
import net.minecraft.item.ItemStack;
11+
import net.minecraft.server.MinecraftServer;
12+
import net.minecraft.util.ChatComponentText;
13+
import net.minecraftforge.fluids.FluidStack;
914

1015
import java.util.ArrayList;
1116
import java.util.Collections;
@@ -24,14 +29,30 @@ public static void addRecipeMap(String recipeIdentifier, IRecipeExtractor extrac
2429
}
2530
}
2631

27-
public static List<OrderStack<?>> getPackageInputs(IRecipeHandler recipe, int index) {
32+
public static List<OrderStack<?>> getPackageInputs(IRecipeHandler recipe, int index, boolean priority) {
2833
TemplateRecipeHandler tRecipe = (TemplateRecipeHandler) recipe;
2934
if (tRecipe == null || !IdentifierMap.containsKey(tRecipe.getOverlayIdentifier())) return new ArrayList<>();
3035
if (tRecipe.getOverlayIdentifier() == null) return getPackageInputsLegacy(recipe, index);
3136
IRecipeExtractor extractor = IdentifierMap.get(tRecipe.getOverlayIdentifier());
3237
if (extractor == null) return new ArrayList<>();
3338
List<PositionedStack> tmp = new ArrayList<>(tRecipe.getIngredientStacks(index));
34-
return extractor.getInputIngredients(tmp, recipe, index);
39+
List<OrderStack<?>> out = extractor.getInputIngredients(tmp, recipe, index);
40+
if (priority) {
41+
List<OrderStack<?>> reordered = new ArrayList<>();
42+
byte numFluids = 0;
43+
for (OrderStack<?> orderStack : out) {
44+
if (orderStack != null && orderStack.getStack() instanceof FluidStack) {
45+
reordered.add(new OrderStack(orderStack.getStack(), numFluids++));
46+
}
47+
}
48+
for (OrderStack<?> orderStack : out) {
49+
if (orderStack != null && orderStack.getStack() instanceof ItemStack) {
50+
reordered.add(new OrderStack(orderStack.getStack(), numFluids++));
51+
}
52+
}
53+
return reordered;
54+
}
55+
return out;
3556
}
3657

3758
public static List<OrderStack<?>> getPackageOutputs(IRecipeHandler recipe, int index, boolean useOther) {

src/main/java/com/glodblock/github/network/CPacketFluidPatternTermBtns.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -112,6 +112,9 @@ public IMessage onMessage(CPacketFluidPatternTermBtns message, MessageContext ct
112112
case "PatternTerminalEx.ActivePage":
113113
cpt.getPatternTerminal().setActivePage(Integer.parseInt(Value));
114114
break;
115+
case "PatternTerminalEx.Prioritize":
116+
cpt.getPatternTerminal().setPrioritization(Value.equals("1"));
117+
break;
115118
}
116119
} else if(Name.equals( "Terminal.Cpu" ) && c instanceof ContainerFluidCraftConfirm) {
117120
final ContainerFluidCraftConfirm qk = (ContainerFluidCraftConfirm) c;

src/main/resources/assets/ae2fc/lang/en_US.lang

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,11 @@ ae2fc.tooltip.not_combine.hint=Disabled
4040
ae2fc.tooltip.combine=Merge the same items
4141
ae2fc.tooltip.combine.hint=Enabled
4242

43+
ae2fc.tooltip.not_prio=Allow fluids to be placed first
44+
ae2fc.tooltip.not_prio.hint=Enabled
45+
ae2fc.tooltip.prio=Allow fluids to be placed first
46+
ae2fc.tooltip.prio.hint=Disabled
47+
4348
ae2fc.gui.part_fluid_pattern_terminal=Fluid Pattern Terminal
4449
ae2fc.gui.part_fluid_pattern_terminal_ex=Fluid Processing Pattern Terminal
4550
ae2fc.gui.fluid_pattern_encoder=Fluid Pattern Encoder

0 commit comments

Comments
 (0)