Skip to content

Commit 3343d75

Browse files
committed
add circuit slot to reservoir hatch
1 parent f8f2a27 commit 3343d75

File tree

1 file changed

+33
-4
lines changed

1 file changed

+33
-4
lines changed

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

Lines changed: 33 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
11
package gregtech.common.metatileentities.multi.multiblockpart;
22

33
import gregtech.api.GTValues;
4+
import gregtech.api.capability.IGhostSlotConfigurable;
45
import gregtech.api.capability.impl.FilteredItemHandler;
56
import gregtech.api.capability.impl.FluidTankList;
7+
import gregtech.api.capability.impl.GhostCircuitItemStackHandler;
68
import gregtech.api.capability.impl.NotifiableFluidTank;
79
import gregtech.api.metatileentity.MetaTileEntity;
810
import gregtech.api.metatileentity.interfaces.IGregTechTileEntity;
@@ -47,17 +49,24 @@
4749
import org.jetbrains.annotations.NotNull;
4850
import org.jetbrains.annotations.Nullable;
4951

52+
import java.util.Arrays;
5053
import java.util.List;
5154

5255
public class MetaTileEntityReservoirHatch extends MetaTileEntityMultiblockNotifiablePart
53-
implements IMultiblockAbilityPart<IFluidTank> {
56+
implements IMultiblockAbilityPart<IFluidTank>,
57+
IGhostSlotConfigurable {
5458

5559
private static final int FLUID_AMOUNT = 2_000_000_000;
5660
private final InfiniteWaterTank fluidTank;
61+
private GhostCircuitItemStackHandler circuitInventory;
5762

5863
public MetaTileEntityReservoirHatch(ResourceLocation metaTileEntityId) {
5964
super(metaTileEntityId, GTValues.EV, false);
6065
this.fluidTank = new InfiniteWaterTank(getInventorySize(), this);
66+
if (this.hasGhostCircuitInventory()) {
67+
this.circuitInventory = new GhostCircuitItemStackHandler(this);
68+
this.circuitInventory.addNotifiableMetaTileEntity(this);
69+
}
6170
initializeInventory();
6271
}
6372

@@ -115,13 +124,17 @@ protected IItemHandlerModifiable createExportItemHandler() {
115124
}
116125

117126
@Override
118-
public MultiblockAbility<IFluidTank> getAbility() {
119-
return MultiblockAbility.IMPORT_FLUIDS;
127+
public @NotNull List<MultiblockAbility<?>> getAbilities() {
128+
return Arrays.asList(MultiblockAbility.IMPORT_FLUIDS, MultiblockAbility.IMPORT_ITEMS);
120129
}
121130

122131
@Override
123132
public void registerAbilities(@NotNull AbilityInstances abilityInstances) {
124-
abilityInstances.add(fluidTank);
133+
if (abilityInstances.isKey(MultiblockAbility.IMPORT_FLUIDS))
134+
abilityInstances.add(fluidTank);
135+
else if (abilityInstances.isKey(MultiblockAbility.IMPORT_ITEMS)) {
136+
abilityInstances.add(circuitInventory);
137+
}
125138
}
126139

127140
@Override
@@ -189,6 +202,22 @@ public void addToolUsages(ItemStack stack, @Nullable World world, List<String> t
189202
super.addToolUsages(stack, world, tooltip, advanced);
190203
}
191204

205+
@Override
206+
public boolean hasGhostCircuitInventory() {
207+
return true;
208+
}
209+
210+
@Override
211+
public void setGhostCircuitConfig(int config) {
212+
if (this.circuitInventory.getCircuitValue() == config) {
213+
return;
214+
}
215+
this.circuitInventory.setCircuitValue(config);
216+
if (!getWorld().isRemote) {
217+
markDirty();
218+
}
219+
}
220+
192221
private static class InfiniteWaterTank extends NotifiableFluidTank {
193222

194223
public InfiniteWaterTank(int capacity, MetaTileEntity entityToNotify) {

0 commit comments

Comments
 (0)