Skip to content

Commit 082589b

Browse files
committed
trying to reimplement capabilities on peripheral owner (#720)
1 parent e2f4667 commit 082589b

9 files changed

Lines changed: 133 additions & 72 deletions

File tree

gradle.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
org.gradle.jvmargs=-Xmx4G
21
org.gradle.daemon=false
2+
org.gradle.jvmargs=-Xmx4G
33
org.gradle.logging.level=info
44

55
# Minecraft related
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
package de.srendi.advancedperipherals.common.addons.computercraft.owner;
2+
3+
import net.neoforged.neoforge.fluids.capability.IFluidHandler;
4+
import net.neoforged.neoforge.items.IItemHandler;
5+
6+
public interface IStorageSystemPeripheralOwner extends IPeripheralOwner, IItemHandler, IFluidHandler {
7+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
package de.srendi.advancedperipherals.common.addons.computercraft.owner;
2+
3+
import de.srendi.advancedperipherals.common.util.inventory.FluidFilter;
4+
import de.srendi.advancedperipherals.common.util.inventory.IStorageSystemFluidHandler;
5+
import de.srendi.advancedperipherals.common.util.inventory.IStorageSystemItemHandler;
6+
import de.srendi.advancedperipherals.common.util.inventory.ItemFilter;
7+
import de.srendi.advancedperipherals.common.util.inventory.StorageProcessor;
8+
import de.srendi.advancedperipherals.lib.peripherals.IPeripheralBlockEntity;
9+
import net.minecraft.world.item.ItemStack;
10+
import net.minecraft.world.level.block.entity.BlockEntity;
11+
import net.neoforged.neoforge.fluids.FluidStack;
12+
import org.jetbrains.annotations.NotNull;
13+
14+
public abstract class StorageSystemBlockEntityPeripheralOwner<T extends BlockEntity & IPeripheralBlockEntity>
15+
extends BlockEntityPeripheralOwner<T>
16+
implements IStorageSystemPeripheralOwner, IStorageSystemItemHandler, IStorageSystemFluidHandler {
17+
18+
public StorageSystemBlockEntityPeripheralOwner(@NotNull T blockEntity) {
19+
super(blockEntity);
20+
}
21+
22+
@NotNull
23+
public abstract IStorageSystemItemHandler getStorageSystemItemHandler();
24+
25+
@NotNull
26+
public abstract IStorageSystemFluidHandler getStorageSystemFluidHandler();
27+
28+
// TODO: figure out how to implement IStorageSystemChemicalHandler on the owner dynamically
29+
// @NotNull
30+
// public abstract Object /*IStorageSystemChemicalHandler*/ getStorageSystemChemicalHandler();
31+
32+
@Override
33+
public ItemStack insertItem(ItemStack stack, boolean simulate) {
34+
return this.getStorageSystemItemHandler().insertItem(stack, simulate);
35+
}
36+
37+
@Override
38+
public int extractItems(ItemFilter filter, StorageProcessor<ItemStack> processor, boolean simulate) {
39+
return this.getStorageSystemItemHandler().extractItems(filter, processor, simulate);
40+
}
41+
42+
@Override
43+
public int fill(FluidStack resource, FluidAction action) {
44+
return this.getStorageSystemFluidHandler().fill(resource, action);
45+
}
46+
47+
@Override
48+
public int extractFluids(FluidFilter filter, StorageProcessor<FluidStack> processor, FluidAction action) {
49+
return this.getStorageSystemFluidHandler().extractFluids(filter, processor, action);
50+
}
51+
52+
}

src/main/java/de/srendi/advancedperipherals/common/addons/computercraft/peripheral/AbstractStorageSystemPeripheral.java

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
import dan200.computercraft.api.lua.ObjectLuaTable;
99
import dan200.computercraft.api.peripheral.IComputerAccess;
1010
import de.srendi.advancedperipherals.common.addons.APAddon;
11-
import de.srendi.advancedperipherals.common.addons.computercraft.owner.IPeripheralOwner;
11+
import de.srendi.advancedperipherals.common.addons.computercraft.owner.IStorageSystemPeripheralOwner;
1212
import de.srendi.advancedperipherals.common.util.EmptyLuaTable;
1313
import de.srendi.advancedperipherals.common.util.Pair;
1414
import de.srendi.advancedperipherals.common.util.StatusConstants;
@@ -42,7 +42,7 @@
4242
*
4343
* @param <O> peripheral owner type
4444
*/
45-
public abstract class AbstractStorageSystemPeripheral<O extends IPeripheralOwner> extends BasePeripheral<O> {
45+
public abstract class AbstractStorageSystemPeripheral<O extends IStorageSystemPeripheralOwner> extends BasePeripheral<O> {
4646
static final MethodResult NOT_CONNECTED_RESULT = MethodResult.of(null, StatusConstants.NOT_CONNECTED.toString());
4747

4848
protected AbstractStorageSystemPeripheral(String type, @NotNull O owner) {
@@ -64,9 +64,15 @@ public MethodResult checkChemicalOperation() {
6464
}
6565

6666
@NotNull
67-
public abstract IItemHandler getStorageSystemItemHandler();
67+
public IItemHandler getStorageSystemItemHandler() {
68+
return this.owner;
69+
}
70+
6871
@NotNull
69-
public abstract IFluidHandler getStorageSystemFluidHandler();
72+
public IFluidHandler getStorageSystemFluidHandler() {
73+
return this.owner;
74+
}
75+
7076
@NotNull
7177
public abstract Object /*IChemicalHandler*/ getStorageSystemChemicalHandler();
7278

src/main/java/de/srendi/advancedperipherals/common/addons/computercraft/peripheral/MEBridgePeripheral.java

Lines changed: 20 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -20,34 +20,46 @@
2020
import de.srendi.advancedperipherals.common.addons.ae2.MEChemicalHandler;
2121
import de.srendi.advancedperipherals.common.addons.ae2.MEFluidHandler;
2222
import de.srendi.advancedperipherals.common.addons.ae2.MEItemHandler;
23-
import de.srendi.advancedperipherals.common.addons.computercraft.owner.BlockEntityPeripheralOwner;
23+
import de.srendi.advancedperipherals.common.addons.computercraft.owner.StorageSystemBlockEntityPeripheralOwner;
2424
import de.srendi.advancedperipherals.common.blocks.blockentities.MEBridgeEntity;
2525
import de.srendi.advancedperipherals.common.configuration.APConfig;
2626
import de.srendi.advancedperipherals.common.util.Pair;
2727
import de.srendi.advancedperipherals.common.util.StatusConstants;
2828
import de.srendi.advancedperipherals.common.util.inventory.ChemicalFilter;
2929
import de.srendi.advancedperipherals.common.util.inventory.FluidFilter;
3030
import de.srendi.advancedperipherals.common.util.inventory.GenericFilter;
31+
import de.srendi.advancedperipherals.common.util.inventory.IStorageSystemFluidHandler;
32+
import de.srendi.advancedperipherals.common.util.inventory.IStorageSystemItemHandler;
3133
import de.srendi.advancedperipherals.common.util.inventory.ItemFilter;
3234
import me.ramidzkh.mekae2.ae2.MekanismKey;
33-
import net.neoforged.neoforge.fluids.capability.IFluidHandler;
34-
import net.neoforged.neoforge.items.IItemHandler;
3535
import org.jetbrains.annotations.NotNull;
3636
import org.jetbrains.annotations.Nullable;
3737

3838
import java.util.ArrayList;
3939
import java.util.List;
4040

41-
public class MEBridgePeripheral extends AbstractStorageSystemPeripheral<BlockEntityPeripheralOwner<MEBridgeEntity>> {
41+
public class MEBridgePeripheral extends AbstractStorageSystemPeripheral<StorageSystemBlockEntityPeripheralOwner<MEBridgeEntity>> {
4242
public static final String PERIPHERAL_TYPE = "me_bridge";
4343

4444
private final MEBridgeEntity bridge;
4545
private IGridNode node;
4646

47-
public MEBridgePeripheral(MEBridgeEntity tileEntity) {
48-
super(PERIPHERAL_TYPE, new BlockEntityPeripheralOwner<>(tileEntity));
49-
this.bridge = tileEntity;
50-
this.node = tileEntity.getActionableNode();
47+
public MEBridgePeripheral(MEBridgeEntity be) {
48+
super(PERIPHERAL_TYPE, new StorageSystemBlockEntityPeripheralOwner<>(be) {
49+
@Override
50+
@NotNull
51+
public IStorageSystemItemHandler getStorageSystemItemHandler() {
52+
return new MEItemHandler(AEApi.getMonitor(be.getActionableNode()), be);
53+
}
54+
55+
@Override
56+
@NotNull
57+
public IStorageSystemFluidHandler getStorageSystemFluidHandler() {
58+
return new MEFluidHandler(AEApi.getMonitor(be.getActionableNode()), be);
59+
}
60+
});
61+
this.bridge = be;
62+
this.node = be.getActionableNode();
5163
}
5264

5365
public void setNode(IManagedGridNode node) {
@@ -69,18 +81,6 @@ public APAddon getChemicalOpAddon() {
6981
return APAddon.APP_MEKANISTICS;
7082
}
7183

72-
@Override
73-
@NotNull
74-
public IItemHandler getStorageSystemItemHandler() {
75-
return new MEItemHandler(AEApi.getMonitor(node), bridge);
76-
}
77-
78-
@Override
79-
@NotNull
80-
public IFluidHandler getStorageSystemFluidHandler() {
81-
return new MEFluidHandler(AEApi.getMonitor(node), bridge);
82-
}
83-
8484
@Override
8585
@NotNull
8686
public Object /*IChemicalHandler*/ getStorageSystemChemicalHandler() {

src/main/java/de/srendi/advancedperipherals/common/addons/computercraft/peripheral/RSBridgePeripheral.java

Lines changed: 38 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -16,38 +16,50 @@
1616
import dan200.computercraft.api.lua.MethodResult;
1717
import dan200.computercraft.api.peripheral.IComputerAccess;
1818
import de.srendi.advancedperipherals.common.addons.APAddon;
19-
import de.srendi.advancedperipherals.common.addons.computercraft.owner.BlockEntityPeripheralOwner;
19+
import de.srendi.advancedperipherals.common.addons.computercraft.owner.StorageSystemBlockEntityPeripheralOwner;
2020
import de.srendi.advancedperipherals.common.addons.refinedstorage.RSApi;
2121
import de.srendi.advancedperipherals.common.addons.refinedstorage.RSChemicalHandler;
2222
import de.srendi.advancedperipherals.common.addons.refinedstorage.RSCraftJob;
2323
import de.srendi.advancedperipherals.common.addons.refinedstorage.RSFluidHandler;
2424
import de.srendi.advancedperipherals.common.addons.refinedstorage.RSItemHandler;
2525
import de.srendi.advancedperipherals.common.addons.refinedstorage.RSMekanismApi;
26-
import de.srendi.advancedperipherals.common.addons.refinedstorage.RsStorageTypes;
26+
import de.srendi.advancedperipherals.common.addons.refinedstorage.RSStorageTypes;
2727
import de.srendi.advancedperipherals.common.blocks.blockentities.RSBridgeEntity;
2828
import de.srendi.advancedperipherals.common.configuration.APConfig;
2929
import de.srendi.advancedperipherals.common.util.Pair;
3030
import de.srendi.advancedperipherals.common.util.StatusConstants;
3131
import de.srendi.advancedperipherals.common.util.inventory.ChemicalFilter;
3232
import de.srendi.advancedperipherals.common.util.inventory.FluidFilter;
3333
import de.srendi.advancedperipherals.common.util.inventory.GenericFilter;
34+
import de.srendi.advancedperipherals.common.util.inventory.IStorageSystemFluidHandler;
35+
import de.srendi.advancedperipherals.common.util.inventory.IStorageSystemItemHandler;
3436
import de.srendi.advancedperipherals.common.util.inventory.ItemFilter;
35-
import net.neoforged.neoforge.fluids.capability.IFluidHandler;
36-
import net.neoforged.neoforge.items.IItemHandler;
3737
import org.jetbrains.annotations.NotNull;
3838
import org.jetbrains.annotations.Nullable;
3939

4040
import java.util.List;
4141
import java.util.Map;
4242

43-
public class RSBridgePeripheral extends AbstractStorageSystemPeripheral<BlockEntityPeripheralOwner<RSBridgeEntity>> {
43+
public class RSBridgePeripheral extends AbstractStorageSystemPeripheral<StorageSystemBlockEntityPeripheralOwner<RSBridgeEntity>> {
4444
public static final String PERIPHERAL_TYPE = "rs_bridge";
4545

4646
private final RSBridgeEntity bridge;
4747

48-
public RSBridgePeripheral(RSBridgeEntity owner) {
49-
super(PERIPHERAL_TYPE, new BlockEntityPeripheralOwner<>(owner));
50-
this.bridge = owner;
48+
public RSBridgePeripheral(RSBridgeEntity be) {
49+
super(PERIPHERAL_TYPE, new StorageSystemBlockEntityPeripheralOwner<>(be) {
50+
@Override
51+
@NotNull
52+
public IStorageSystemItemHandler getStorageSystemItemHandler() {
53+
return new RSItemHandler(((AbstractNetworkNode) getBlockEntity().getNode()).getNetwork());
54+
}
55+
56+
@Override
57+
@NotNull
58+
public IStorageSystemFluidHandler getStorageSystemFluidHandler() {
59+
return new RSFluidHandler(((AbstractNetworkNode) getBlockEntity().getNode()).getNetwork());
60+
}
61+
});
62+
this.bridge = be;
5163
}
5264

5365
@Override
@@ -65,18 +77,6 @@ public APAddon getChemicalOpAddon() {
6577
return APAddon.REFINEDSTORAGE_MEKANISM;
6678
}
6779

68-
@Override
69-
@NotNull
70-
public IItemHandler getStorageSystemItemHandler() {
71-
return new RSItemHandler(getNetwork());
72-
}
73-
74-
@Override
75-
@NotNull
76-
public IFluidHandler getStorageSystemFluidHandler() {
77-
return new RSFluidHandler(getNetwork());
78-
}
79-
8080
@Override
8181
@NotNull
8282
public Object /*IChemicalHandler*/ getStorageSystemChemicalHandler() {
@@ -183,92 +183,92 @@ public double getAverageEnergyInputImpl() {
183183

184184
@Override
185185
public double getTotalExternalItemStorageImpl() {
186-
return RSApi.getTotalExternalStorage(getNetwork(), RsStorageTypes.ITEM);
186+
return RSApi.getTotalExternalStorage(getNetwork(), RSStorageTypes.ITEM);
187187
}
188188

189189
@Override
190190
public double getTotalExternalFluidStorageImpl() {
191-
return RSApi.getTotalExternalStorage(getNetwork(), RsStorageTypes.FLUID);
191+
return RSApi.getTotalExternalStorage(getNetwork(), RSStorageTypes.FLUID);
192192
}
193193

194194
@Override
195195
public double getTotalExternalChemicalStorageImpl() {
196-
return RSApi.getTotalExternalStorage(getNetwork(), RsStorageTypes.CHEMICAL);
196+
return RSApi.getTotalExternalStorage(getNetwork(), RSStorageTypes.CHEMICAL);
197197
}
198198

199199
@Override
200200
public double getTotalItemStorageImpl() {
201-
return RSApi.getTotalStorage(getNetwork(), RsStorageTypes.ITEM);
201+
return RSApi.getTotalStorage(getNetwork(), RSStorageTypes.ITEM);
202202
}
203203

204204
@Override
205205
public double getTotalFluidStorageImpl() {
206-
return RSApi.getTotalStorage(getNetwork(), RsStorageTypes.FLUID);
206+
return RSApi.getTotalStorage(getNetwork(), RSStorageTypes.FLUID);
207207
}
208208

209209
@Override
210210
public double getTotalChemicalStorageImpl() {
211-
return RSApi.getTotalStorage(getNetwork(), RsStorageTypes.CHEMICAL);
211+
return RSApi.getTotalStorage(getNetwork(), RSStorageTypes.CHEMICAL);
212212
}
213213

214214
@Override
215215
public double getUsedExternalItemStorageImpl() {
216-
return RSApi.getUsedExternalStorage(getNetwork(), RsStorageTypes.ITEM);
216+
return RSApi.getUsedExternalStorage(getNetwork(), RSStorageTypes.ITEM);
217217
}
218218

219219
@Override
220220
public double getUsedExternalFluidStorageImpl() {
221-
return RSApi.getUsedExternalStorage(getNetwork(), RsStorageTypes.FLUID);
221+
return RSApi.getUsedExternalStorage(getNetwork(), RSStorageTypes.FLUID);
222222
}
223223

224224
@Override
225225
public double getUsedExternalChemicalStorageImpl() {
226-
return RSApi.getUsedExternalStorage(getNetwork(), RsStorageTypes.CHEMICAL);
226+
return RSApi.getUsedExternalStorage(getNetwork(), RSStorageTypes.CHEMICAL);
227227
}
228228

229229
@Override
230230
public double getUsedItemStorageImpl() {
231-
return RSApi.getUsedStorage(getNetwork(), RsStorageTypes.ITEM);
231+
return RSApi.getUsedStorage(getNetwork(), RSStorageTypes.ITEM);
232232
}
233233

234234
@Override
235235
public double getUsedFluidStorageImpl() {
236-
return RSApi.getUsedStorage(getNetwork(), RsStorageTypes.FLUID);
236+
return RSApi.getUsedStorage(getNetwork(), RSStorageTypes.FLUID);
237237
}
238238

239239
@Override
240240
public double getUsedChemicalStorageImpl() {
241-
return RSApi.getUsedStorage(getNetwork(), RsStorageTypes.CHEMICAL);
241+
return RSApi.getUsedStorage(getNetwork(), RSStorageTypes.CHEMICAL);
242242
}
243243

244244
@Override
245245
public double getAvailableExternalItemStorageImpl() {
246-
return RSApi.getTotalExternalStorage(getNetwork(), RsStorageTypes.ITEM) - RSApi.getUsedExternalStorage(getNetwork(), RsStorageTypes.ITEM);
246+
return RSApi.getTotalExternalStorage(getNetwork(), RSStorageTypes.ITEM) - RSApi.getUsedExternalStorage(getNetwork(), RSStorageTypes.ITEM);
247247
}
248248

249249
@Override
250250
public double getAvailableExternalFluidStorageImpl() {
251-
return RSApi.getTotalExternalStorage(getNetwork(), RsStorageTypes.FLUID) - RSApi.getUsedExternalStorage(getNetwork(), RsStorageTypes.FLUID);
251+
return RSApi.getTotalExternalStorage(getNetwork(), RSStorageTypes.FLUID) - RSApi.getUsedExternalStorage(getNetwork(), RSStorageTypes.FLUID);
252252
}
253253

254254
@Override
255255
public double getAvailableExternalChemicalStorageImpl() {
256-
return RSApi.getTotalExternalStorage(getNetwork(), RsStorageTypes.CHEMICAL) - RSApi.getUsedExternalStorage(getNetwork(), RsStorageTypes.CHEMICAL);
256+
return RSApi.getTotalExternalStorage(getNetwork(), RSStorageTypes.CHEMICAL) - RSApi.getUsedExternalStorage(getNetwork(), RSStorageTypes.CHEMICAL);
257257
}
258258

259259
@Override
260260
public double getAvailableItemStorageImpl() {
261-
return RSApi.getTotalStorage(getNetwork(), RsStorageTypes.ITEM) - RSApi.getUsedStorage(getNetwork(), RsStorageTypes.ITEM);
261+
return RSApi.getTotalStorage(getNetwork(), RSStorageTypes.ITEM) - RSApi.getUsedStorage(getNetwork(), RSStorageTypes.ITEM);
262262
}
263263

264264
@Override
265265
public double getAvailableFluidStorageImpl() {
266-
return RSApi.getTotalStorage(getNetwork(), RsStorageTypes.FLUID) - RSApi.getUsedStorage(getNetwork(), RsStorageTypes.FLUID);
266+
return RSApi.getTotalStorage(getNetwork(), RSStorageTypes.FLUID) - RSApi.getUsedStorage(getNetwork(), RSStorageTypes.FLUID);
267267
}
268268

269269
@Override
270270
public double getAvailableChemicalStorageImpl() {
271-
return RSApi.getTotalStorage(getNetwork(), RsStorageTypes.CHEMICAL) - RSApi.getUsedStorage(getNetwork(), RsStorageTypes.CHEMICAL);
271+
return RSApi.getTotalStorage(getNetwork(), RSStorageTypes.CHEMICAL) - RSApi.getUsedStorage(getNetwork(), RSStorageTypes.CHEMICAL);
272272
}
273273

274274
@Override

0 commit comments

Comments
 (0)