Skip to content

Commit cb63af8

Browse files
committed
Input parts code dedup pt1
1 parent 0656f02 commit cb63af8

25 files changed

+601
-701
lines changed

src/main/java/gregtech/api/capability/impl/GhostCircuitItemStackHandler.java

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
import net.minecraftforge.items.IItemHandlerModifiable;
1313

1414
import org.jetbrains.annotations.NotNull;
15+
import org.jetbrains.annotations.Nullable;
1516

1617
import java.util.ArrayList;
1718
import java.util.List;
@@ -29,8 +30,15 @@ public class GhostCircuitItemStackHandler extends GTItemStackHandler
2930
private int circuitValue = NO_CONFIG;
3031
private ItemStack circuitStack = ItemStack.EMPTY;
3132

32-
public GhostCircuitItemStackHandler(MetaTileEntity metaTileEntity) {
33+
public GhostCircuitItemStackHandler(@NotNull MetaTileEntity metaTileEntity) {
34+
this(metaTileEntity, metaTileEntity);
35+
}
36+
37+
public GhostCircuitItemStackHandler(@NotNull MetaTileEntity metaTileEntity, @Nullable MetaTileEntity mteToNotify) {
3338
super(metaTileEntity);
39+
if (mteToNotify != null) {
40+
notifiableEntities.add(mteToNotify);
41+
}
3442
}
3543

3644
/**

src/main/java/gregtech/api/metatileentity/SimpleMachineMetaTileEntity.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -127,7 +127,6 @@ protected void initializeInventory() {
127127
this.outputFluidInventory = new FluidHandlerProxy(new FluidTankList(false), exportFluids);
128128
if (this.hasGhostCircuitInventory()) {
129129
this.circuitInventory = new GhostCircuitItemStackHandler(this);
130-
this.circuitInventory.addNotifiableMetaTileEntity(this);
131130
}
132131

133132
this.actualImportItems = null;

src/main/java/gregtech/api/mui/sync/appeng/AEFluidSyncHandler.java

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,16 @@
11
package gregtech.api.mui.sync.appeng;
22

3+
import gregtech.api.capability.impl.GhostCircuitItemStackHandler;
34
import gregtech.api.mui.GTByteBufAdapters;
5+
import gregtech.api.recipes.ingredients.IntCircuitIngredient;
46
import gregtech.api.util.GTUtility;
57
import gregtech.api.util.JEIUtil;
68
import gregtech.common.metatileentities.multi.multiblockpart.appeng.slot.ExportOnlyAEFluidList;
79
import gregtech.common.metatileentities.multi.multiblockpart.appeng.slot.ExportOnlyAEFluidSlot;
810
import gregtech.common.metatileentities.multi.multiblockpart.appeng.slot.IConfigurableSlot;
911
import gregtech.common.metatileentities.multi.multiblockpart.appeng.stack.WrappedFluidStack;
1012

13+
import net.minecraft.item.ItemStack;
1114
import net.minecraftforge.fluids.FluidStack;
1215
import net.minecraftforge.fml.relauncher.Side;
1316
import net.minecraftforge.fml.relauncher.SideOnly;
@@ -22,13 +25,15 @@
2225

2326
import java.util.ArrayList;
2427
import java.util.List;
28+
import java.util.function.IntConsumer;
2529

2630
public class AEFluidSyncHandler extends AESyncHandler<IAEFluidStack> {
2731

2832
protected final ExportOnlyAEFluidList fluidList;
2933

30-
public AEFluidSyncHandler(ExportOnlyAEFluidList fluidList, @Nullable Runnable dirtyNotifier) {
31-
super(fluidList.getInventory(), fluidList.isStocking(), dirtyNotifier);
34+
public AEFluidSyncHandler(ExportOnlyAEFluidList fluidList, @Nullable Runnable dirtyNotifier,
35+
@NotNull IntConsumer circuitChangeConsumer) {
36+
super(fluidList.getInventory(), fluidList.isStocking(), dirtyNotifier, circuitChangeConsumer);
3237
this.fluidList = fluidList;
3338
}
3439

@@ -71,6 +76,17 @@ public IRecipeTransferError receiveRecipe(@NotNull IRecipeLayout recipeLayout, b
7176
}
7277
clearConfigFrom(lastSlotIndex);
7378

79+
Int2ObjectMap<ItemStack> itemInputs = JEIUtil.getDisplayedInputItemStacks(recipeLayout.getItemStacks(), false,
80+
false);
81+
int circuitValue = GhostCircuitItemStackHandler.NO_CONFIG;
82+
for (ItemStack inputStack : itemInputs.values()) {
83+
if (IntCircuitIngredient.isIntegratedCircuit(inputStack)) {
84+
circuitValue = IntCircuitIngredient.getCircuitConfiguration(inputStack);
85+
break;
86+
}
87+
}
88+
ghostCircuitConfig.accept(circuitValue);
89+
7490
return null;
7591
}
7692

src/main/java/gregtech/api/mui/sync/appeng/AEItemSyncHandler.java

Lines changed: 6 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -25,17 +25,16 @@
2525
import java.util.ArrayList;
2626
import java.util.Iterator;
2727
import java.util.List;
28+
import java.util.function.IntConsumer;
2829

2930
public class AEItemSyncHandler extends AESyncHandler<IAEItemStack> {
3031

3132
protected final ExportOnlyAEItemList itemList;
32-
protected final GhostCircuitItemStackHandler ghostCircuitHandler;
3333

3434
public AEItemSyncHandler(ExportOnlyAEItemList itemList, @Nullable Runnable dirtyNotifier,
35-
@NotNull GhostCircuitItemStackHandler ghostCircuitHandler) {
36-
super(itemList.getInventory(), itemList.isStocking(), dirtyNotifier);
35+
@NotNull IntConsumer circuitChangeConsumer) {
36+
super(itemList.getInventory(), itemList.isStocking(), dirtyNotifier, circuitChangeConsumer);
3737
this.itemList = itemList;
38-
this.ghostCircuitHandler = ghostCircuitHandler;
3938
}
4039

4140
@Override
@@ -76,11 +75,12 @@ public IRecipeTransferError receiveRecipe(@NotNull IRecipeLayout recipeLayout, b
7675
ItemStack stack = inputsIterator.next();
7776
if (stack == null) continue;
7877
if (IntCircuitIngredient.isIntegratedCircuit(stack)) {
79-
inputsIterator.remove();
8078
circuitValue = IntCircuitIngredient.getCircuitConfiguration(stack);
79+
inputsIterator.remove();
80+
break;
8181
}
8282
}
83-
setGhostCircuit(circuitValue);
83+
ghostCircuitConfig.accept(circuitValue);
8484

8585
int lastSlotIndex;
8686
for (lastSlotIndex = 0; lastSlotIndex < itemInputs.size(); lastSlotIndex++) {
@@ -96,8 +96,4 @@ public IRecipeTransferError receiveRecipe(@NotNull IRecipeLayout recipeLayout, b
9696
public void setConfig(int index, @Nullable ItemStack stack) {
9797
setConfig(index, WrappedItemStack.fromItemStack(stack));
9898
}
99-
100-
protected void setGhostCircuit(int circuitValue) {
101-
ghostCircuitHandler.setCircuitValue(circuitValue);
102-
}
10399
}

src/main/java/gregtech/api/mui/sync/appeng/AESyncHandler.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020

2121
import java.io.IOException;
2222
import java.util.function.IntBinaryOperator;
23+
import java.util.function.IntConsumer;
2324

2425
public abstract class AESyncHandler<AEStackType extends IAEStack<AEStackType>> extends SyncHandler
2526
implements IJEIRecipeReceiver {
@@ -32,6 +33,7 @@ public abstract class AESyncHandler<AEStackType extends IAEStack<AEStackType>> e
3233
public static final int bulkConfigAmountChangeID = 5;
3334

3435
protected final boolean isStocking;
36+
protected final IntConsumer ghostCircuitConfig;
3537
protected final @NotNull IConfigurableSlot<AEStackType>[] slots;
3638
private final @NotNull IConfigurableSlot<AEStackType>[] cached;
3739
private final Int2ObjectMap<@NotNull IConfigurableSlot<AEStackType>> changeMap = new Int2ObjectOpenHashMap<>();
@@ -41,9 +43,11 @@ public abstract class AESyncHandler<AEStackType extends IAEStack<AEStackType>> e
4143
@Nullable
4244
private final Runnable dirtyNotifier;
4345

44-
public AESyncHandler(IConfigurableSlot<AEStackType>[] slots, boolean isStocking, @Nullable Runnable dirtyNotifier) {
46+
public AESyncHandler(IConfigurableSlot<AEStackType>[] slots, boolean isStocking, @Nullable Runnable dirtyNotifier,
47+
@NotNull IntConsumer ghostCircuitConfig) {
4548
this.slots = slots;
4649
this.isStocking = isStocking;
50+
this.ghostCircuitConfig = ghostCircuitConfig;
4751
this.dirtyNotifier = dirtyNotifier;
4852
this.cached = initializeCache();
4953
this.byteBufAdapter = initializeByteBufAdapter();

src/main/java/gregtech/api/mui/widget/appeng/AEConfigSlot.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ public abstract class AEConfigSlot<T extends IAEStack<T>> extends Widget<AEConfi
4545
@Nullable
4646
protected Runnable onSelect;
4747

48-
public AEConfigSlot(boolean isStocking, int index, BooleanSupplier isAutoPull) {
48+
public AEConfigSlot(boolean isStocking, int index, @NotNull BooleanSupplier isAutoPull) {
4949
this.isStocking = isStocking;
5050
this.index = index;
5151
this.isAutoPull = isAutoPull;

src/main/java/gregtech/api/mui/widget/appeng/fluid/AEFluidConfigSlot.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@
3232
public class AEFluidConfigSlot extends AEConfigSlot<IAEFluidStack>
3333
implements Interactable, JeiGhostIngredientSlot<FluidStack> {
3434

35-
public AEFluidConfigSlot(boolean isStocking, int index, BooleanSupplier isAutoPull) {
35+
public AEFluidConfigSlot(boolean isStocking, int index, @NotNull BooleanSupplier isAutoPull) {
3636
super(isStocking, index, isAutoPull);
3737
tooltipAutoUpdate(true);
3838
}

src/main/java/gregtech/api/mui/widget/appeng/item/AEItemConfigSlot.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@
2626

2727
public class AEItemConfigSlot extends AEConfigSlot<IAEItemStack> implements JeiGhostIngredientSlot<ItemStack> {
2828

29-
public AEItemConfigSlot(boolean isStocking, int index, BooleanSupplier isAutoPull) {
29+
public AEItemConfigSlot(boolean isStocking, int index, @NotNull BooleanSupplier isAutoPull) {
3030
super(isStocking, index, isAutoPull);
3131
tooltipAutoUpdate(true);
3232
}

src/main/java/gregtech/common/metatileentities/multi/multiblockpart/MetaTileEntityFluidHatch.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,6 @@ protected void initializeInventory() {
9090
super.initializeInventory();
9191
if (this.hasGhostCircuitInventory()) {
9292
this.circuitInventory = new GhostCircuitItemStackHandler(this);
93-
this.circuitInventory.addNotifiableMetaTileEntity(this);
9493
}
9594
}
9695

src/main/java/gregtech/common/metatileentities/multi/multiblockpart/MetaTileEntityItemBus.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,6 @@ protected void initializeInventory() {
8484
super.initializeInventory();
8585
if (this.hasGhostCircuitInventory()) {
8686
this.circuitInventory = new GhostCircuitItemStackHandler(this);
87-
this.circuitInventory.addNotifiableMetaTileEntity(this);
8887
this.actualImportItems = new ItemHandlerList(Arrays.asList(super.getImportItems(), this.circuitInventory));
8988
} else {
9089
this.actualImportItems = null;

0 commit comments

Comments
 (0)