1212import dan200 .computercraft .api .lua .IArguments ;
1313import dan200 .computercraft .api .lua .LuaException ;
1414import dan200 .computercraft .api .lua .LuaFunction ;
15+ import dan200 .computercraft .api .lua .LuaTable ;
1516import dan200 .computercraft .api .lua .MethodResult ;
17+ import dan200 .computercraft .api .lua .ObjectLuaTable ;
1618import dan200 .computercraft .api .peripheral .IComputerAccess ;
17- import dan200 .computercraft .core .apis .TableHelper ;
1819import de .srendi .advancedperipherals .common .addons .APAddon ;
1920import de .srendi .advancedperipherals .common .addons .appliedenergistics .AEApi ;
2021import de .srendi .advancedperipherals .common .addons .appliedenergistics .AECraftJob ;
2425import de .srendi .advancedperipherals .common .addons .computercraft .owner .BlockEntityPeripheralOwner ;
2526import de .srendi .advancedperipherals .common .blocks .blockentities .MEBridgeEntity ;
2627import de .srendi .advancedperipherals .common .configuration .APConfig ;
28+ import de .srendi .advancedperipherals .common .util .EmptyLuaTable ;
2729import de .srendi .advancedperipherals .common .util .Pair ;
2830import de .srendi .advancedperipherals .common .util .StatusConstants ;
2931import de .srendi .advancedperipherals .common .util .inventory .ChemicalFilter ;
4446import java .util .Collections ;
4547import java .util .List ;
4648import java .util .Map ;
49+ import java .util .Optional ;
4750
4851public class MEBridgePeripheral extends BasePeripheral <BlockEntityPeripheralOwner <MEBridgeEntity >> implements IStorageSystemPeripheral {
4952
@@ -85,7 +88,7 @@ public MEBridgeEntity getBridge() {
8588 protected MethodResult exportToChest (@ NotNull IArguments arguments , IItemHandler targetInventory ) throws LuaException {
8689 MEStorage monitor = AEApi .getMonitor (node );
8790 MEItemHandler itemHandler = new MEItemHandler (monitor , bridge );
88- Pair <ItemFilter , String > filter = ItemFilter .parse (arguments .getTable (0 ));
91+ Pair <ItemFilter , String > filter = ItemFilter .parse (new ObjectLuaTable ( arguments .getTable (0 ) ));
8992
9093 if (filter .rightPresent ())
9194 return MethodResult .of (0 , filter .getRight ());
@@ -103,7 +106,7 @@ protected MethodResult exportToChest(@NotNull IArguments arguments, IItemHandler
103106 protected MethodResult exportToTank (@ NotNull IArguments arguments , IFluidHandler targetTank ) throws LuaException {
104107 MEStorage monitor = AEApi .getMonitor (node );
105108 MEFluidHandler fluidHandler = new MEFluidHandler (monitor , bridge );
106- Pair <FluidFilter , String > filter = FluidFilter .parse (arguments .getTable (0 ));
109+ Pair <FluidFilter , String > filter = FluidFilter .parse (new ObjectLuaTable ( arguments .getTable (0 ) ));
107110
108111 if (filter .rightPresent ())
109112 return MethodResult .of (0 , filter .getRight ());
@@ -122,7 +125,7 @@ protected MethodResult exportToTank(@NotNull IArguments arguments, IFluidHandler
122125 protected MethodResult importToME (@ NotNull IArguments arguments , IItemHandler targetInventory ) throws LuaException {
123126 MEStorage monitor = AEApi .getMonitor (node );
124127 MEItemHandler itemHandler = new MEItemHandler (monitor , bridge );
125- Pair <ItemFilter , String > filter = ItemFilter .parse (arguments .getTable (0 ));
128+ Pair <ItemFilter , String > filter = ItemFilter .parse (new ObjectLuaTable ( arguments .getTable (0 ) ));
126129
127130 if (filter .rightPresent ())
128131 return MethodResult .of (0 , filter .getRight ());
@@ -140,7 +143,7 @@ protected MethodResult importToME(@NotNull IArguments arguments, IItemHandler ta
140143 protected MethodResult importToME (@ NotNull IArguments arguments , IFluidHandler targetTank ) throws LuaException {
141144 MEStorage monitor = AEApi .getMonitor (node );
142145 MEFluidHandler fluidHandler = new MEFluidHandler (monitor , bridge );
143- Pair <FluidFilter , String > filter = FluidFilter .parse (arguments .getTable (0 ));
146+ Pair <FluidFilter , String > filter = FluidFilter .parse (new ObjectLuaTable ( arguments .getTable (0 ) ));
144147
145148 if (filter .rightPresent ())
146149 return MethodResult .of (0 , filter .getRight ());
@@ -175,7 +178,7 @@ public final MethodResult getItem(IArguments arguments) throws LuaException {
175178 return notConnected (null );
176179
177180 MEStorage monitor = AEApi .getMonitor (node );
178- Pair <ItemFilter , String > filter = ItemFilter .parse (arguments .getTable (0 ));
181+ Pair <ItemFilter , String > filter = ItemFilter .parse (new ObjectLuaTable ( arguments .getTable (0 ) ));
179182 if (filter .rightPresent ())
180183 return MethodResult .of (null , filter .getRight ());
181184
@@ -192,7 +195,7 @@ public MethodResult getFluid(IArguments arguments) throws LuaException {
192195 if (!isAvailable ())
193196 return notConnected (null );
194197
195- Pair <FluidFilter , String > filter = FluidFilter .parse (arguments .getTable (0 ));
198+ Pair <FluidFilter , String > filter = FluidFilter .parse (new ObjectLuaTable ( arguments .getTable (0 ) ));
196199 if (filter .rightPresent ())
197200 return MethodResult .of (null , filter .getRight ());
198201
@@ -209,7 +212,7 @@ public MethodResult getChemical(IArguments arguments) throws LuaException {
209212 if (!isAvailable ())
210213 return notConnected (null );
211214
212- Pair <ChemicalFilter , String > filter = ChemicalFilter .parse (arguments .getTable (0 ));
215+ Pair <ChemicalFilter , String > filter = ChemicalFilter .parse (new ObjectLuaTable ( arguments .getTable (0 ) ));
213216 if (filter .rightPresent ())
214217 return MethodResult .of (null , filter .getRight ());
215218
@@ -226,7 +229,7 @@ public final MethodResult getItems(IArguments arguments) throws LuaException {
226229 if (!isAvailable ())
227230 return notConnected (null );
228231
229- Pair <ItemFilter , String > filter = ItemFilter .parse (arguments .optTable ( 0 , Collections . emptyMap () ));
232+ Pair <ItemFilter , String > filter = ItemFilter .parse (arguments .optTableUnsafe ( 0 ). orElse ( EmptyLuaTable . INSTANCE ));
230233 if (filter .rightPresent ())
231234 return MethodResult .of (null , filter .getRight ());
232235
@@ -241,7 +244,7 @@ public final MethodResult getFluids(IArguments arguments) throws LuaException {
241244 if (!isAvailable ())
242245 return notConnected (null );
243246
244- Pair <FluidFilter , String > filter = FluidFilter .parse (arguments .optTable ( 0 , Collections . emptyMap () ));
247+ Pair <FluidFilter , String > filter = FluidFilter .parse (arguments .optTableUnsafe ( 0 ). orElse ( EmptyLuaTable . INSTANCE ));
245248 if (filter .rightPresent ())
246249 return MethodResult .of (null , filter .getRight ());
247250
@@ -259,7 +262,7 @@ public MethodResult getChemicals(IArguments arguments) throws LuaException {
259262 if (!APAddon .APP_MEKANISTICS .isLoaded ())
260263 return MethodResult .of (null , StatusConstants .ADDON_NOT_LOADED .withInfo (APAddon .APP_MEKANISTICS .name ()));
261264
262- Pair <ChemicalFilter , String > filter = ChemicalFilter .parse (arguments .optTable ( 0 , Collections . emptyMap () ));
265+ Pair <ChemicalFilter , String > filter = ChemicalFilter .parse (arguments .optTableUnsafe ( 0 ). orElse ( EmptyLuaTable . INSTANCE ));
263266 if (filter .rightPresent ())
264267 return MethodResult .of (null , filter .getRight ());
265268
@@ -274,7 +277,7 @@ public final MethodResult getCraftableItems(IArguments arguments) throws LuaExce
274277 if (!isAvailable ())
275278 return notConnected (null );
276279
277- Pair <ItemFilter , String > filter = ItemFilter .parse (arguments .optTable ( 0 , Collections . emptyMap () ));
280+ Pair <ItemFilter , String > filter = ItemFilter .parse (arguments .optTableUnsafe ( 0 ). orElse ( EmptyLuaTable . INSTANCE ));
278281 if (filter .rightPresent ())
279282 return MethodResult .of (null , filter .getRight ());
280283
@@ -289,7 +292,7 @@ public final MethodResult getCraftableFluids(IArguments arguments) throws LuaExc
289292 if (!isAvailable ())
290293 return notConnected (null );
291294
292- Pair <FluidFilter , String > filter = FluidFilter .parse (arguments .optTable ( 0 , Collections . emptyMap () ));
295+ Pair <FluidFilter , String > filter = FluidFilter .parse (arguments .optTableUnsafe ( 0 ). orElse ( EmptyLuaTable . INSTANCE ));
293296 if (filter .rightPresent ())
294297 return MethodResult .of (null , filter .getRight ());
295298
@@ -306,7 +309,7 @@ public MethodResult getCraftableChemicals(IArguments arguments) throws LuaExcept
306309 if (!APAddon .APP_MEKANISTICS .isLoaded ())
307310 return MethodResult .of (null , StatusConstants .ADDON_NOT_LOADED .withInfo (APAddon .APP_MEKANISTICS .name ()));
308311
309- Pair <ChemicalFilter , String > filter = ChemicalFilter .parse (arguments .optTable ( 0 , Collections . emptyMap () ));
312+ Pair <ChemicalFilter , String > filter = ChemicalFilter .parse (arguments .optTableUnsafe ( 0 ). orElse ( EmptyLuaTable . INSTANCE ));
310313 if (filter .rightPresent ())
311314 return MethodResult .of (null , filter .getRight ());
312315
@@ -442,11 +445,13 @@ public MethodResult getPatterns(IArguments arguments) throws LuaException {
442445
443446 // Expected input is a table with either an input table, an output table or both to filter for both
444447 // If no table is provided or it's empty, return every pattern
445- Map < ?, ?> filterTable = arguments .optTable ( 0 , Collections . emptyMap () );
446- if (filterTable .isEmpty ()) {
448+ Optional < LuaTable < ?, ?>> optFilter = arguments .optTableUnsafe ( 0 );
449+ if (optFilter .isEmpty ()) {
447450 return MethodResult .of (AEApi .listPatterns (node .getGrid (), getLevel ()));
448451 }
449452
453+ LuaTable <?, ?> filterTable = optFilter .get ();
454+
450455 boolean hasInputFilter = filterTable .containsKey ("input" );
451456 boolean hasOutputFilter = filterTable .containsKey ("output" );
452457 boolean hasAnyFilter = hasInputFilter || hasOutputFilter ;
@@ -459,12 +464,12 @@ public MethodResult getPatterns(IArguments arguments) throws LuaException {
459464 GenericFilter <?> outputFilter = null ;
460465
461466 if (hasInputFilter ) {
462- Map <?, ?> inputFilterTable = TableHelper . getTableField (filterTable , "input" );
467+ LuaTable <?, ?> inputFilterTable = new ObjectLuaTable (filterTable . getTable ( "input" ) );
463468
464469 inputFilter = GenericFilter .parseGeneric (inputFilterTable ).getLeft ();
465470 }
466471 if (hasOutputFilter ) {
467- Map <?, ?> outputFilterTable = TableHelper . getTableField (filterTable , "output" );
472+ LuaTable <?, ?> outputFilterTable = new ObjectLuaTable (filterTable . getTable ( "output" ) );
468473
469474 outputFilter = GenericFilter .parseGeneric (outputFilterTable ).getLeft ();
470475 }
@@ -681,7 +686,7 @@ public final MethodResult craftItem(IComputerAccess computer, IArguments argumen
681686 if (!isAvailable ())
682687 return notConnected (null );
683688
684- Pair <ItemFilter , String > filter = ItemFilter .parse (arguments .getTable (0 ));
689+ Pair <ItemFilter , String > filter = ItemFilter .parse (new ObjectLuaTable ( arguments .getTable (0 ) ));
685690 if (filter .rightPresent ())
686691 return MethodResult .of (null , filter .getRight ());
687692
@@ -713,7 +718,7 @@ public final MethodResult craftFluid(IComputerAccess computer, IArguments argume
713718 if (!isAvailable ())
714719 return notConnected (null );
715720
716- Pair <FluidFilter , String > filter = FluidFilter .parse (arguments .getTable (0 ));
721+ Pair <FluidFilter , String > filter = FluidFilter .parse (new ObjectLuaTable ( arguments .getTable (0 ) ));
717722 if (filter .rightPresent ())
718723 return MethodResult .of (null , filter .getRight ());
719724
@@ -744,7 +749,7 @@ public MethodResult craftChemical(IComputerAccess computer, IArguments arguments
744749 if (!APAddon .APP_MEKANISTICS .isLoaded ())
745750 return MethodResult .of (null , StatusConstants .ADDON_NOT_LOADED .withInfo (APAddon .APP_MEKANISTICS .name ()));
746751
747- Pair <ChemicalFilter , String > filter = ChemicalFilter .parse (arguments .getTable (0 ));
752+ Pair <ChemicalFilter , String > filter = ChemicalFilter .parse (new ObjectLuaTable ( arguments .getTable (0 ) ));
748753 if (filter .rightPresent ())
749754 return MethodResult .of (null , filter .getRight ());
750755
@@ -811,7 +816,7 @@ public MethodResult cancelCraftingTasks(IArguments arguments) throws LuaExceptio
811816
812817 ICraftingService craftingGrid = node .getGrid ().getService (ICraftingService .class );
813818
814- Pair <? extends GenericFilter <?>, String > filter = GenericFilter .parseGeneric (arguments .getTable (0 ));
819+ Pair <? extends GenericFilter <?>, String > filter = GenericFilter .parseGeneric (new ObjectLuaTable ( arguments .getTable (0 ) ));
815820 if (filter .getRight () != null )
816821 return MethodResult .of (0 , filter .getRight ());
817822
@@ -833,7 +838,7 @@ public final MethodResult isCraftable(IArguments arguments) throws LuaException
833838 if (!isAvailable ())
834839 return notConnected (false );
835840
836- Pair <? extends GenericFilter <?>, String > filter = GenericFilter .parseGeneric (arguments .getTable (0 ));
841+ Pair <? extends GenericFilter <?>, String > filter = GenericFilter .parseGeneric (new ObjectLuaTable ( arguments .getTable (0 ) ));
837842 if (filter .getRight () != null )
838843 return MethodResult .of (false , filter .getRight ());
839844
@@ -852,7 +857,7 @@ public final MethodResult isCrafting(IArguments arguments) throws LuaException {
852857
853858 ICraftingService grid = node .getGrid ().getService (ICraftingService .class );
854859
855- Pair <? extends GenericFilter <?>, String > filter = GenericFilter .parseGeneric (arguments .getTable (0 ));
860+ Pair <? extends GenericFilter <?>, String > filter = GenericFilter .parseGeneric (new ObjectLuaTable ( arguments .getTable (0 ) ));
856861 if (filter .getRight () != null )
857862 return MethodResult .of (false , filter .getRight ());
858863
0 commit comments