Skip to content

Commit 3b6146c

Browse files
committed
Merge branch 'dev/1.21.1' into release/1.21.1
2 parents b5ef514 + fa1fe41 commit 3b6146c

7 files changed

Lines changed: 33 additions & 55 deletions

File tree

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

Lines changed: 9 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,6 @@
4444

4545
import java.util.ArrayList;
4646
import java.util.List;
47-
import java.util.Optional;
4847

4948
public class MEBridgePeripheral extends BasePeripheral<BlockEntityPeripheralOwner<MEBridgeEntity>> implements IStorageSystemPeripheral {
5049

@@ -227,7 +226,7 @@ public final MethodResult getItems(IArguments arguments) throws LuaException {
227226
if (!isAvailable())
228227
return notConnected(null);
229228

230-
Pair<ItemFilter, String> filter = ItemFilter.parse(arguments.optTableUnsafe(0).orElse(EmptyLuaTable.INSTANCE));
229+
Pair<ItemFilter, String> filter = ItemFilter.parse(EmptyLuaTable.orEmpty(arguments.optTable(0).orElse(null)));
231230
if (filter.rightPresent())
232231
return MethodResult.of(null, filter.getRight());
233232

@@ -242,7 +241,7 @@ public final MethodResult getFluids(IArguments arguments) throws LuaException {
242241
if (!isAvailable())
243242
return notConnected(null);
244243

245-
Pair<FluidFilter, String> filter = FluidFilter.parse(arguments.optTableUnsafe(0).orElse(EmptyLuaTable.INSTANCE));
244+
Pair<FluidFilter, String> filter = FluidFilter.parse(EmptyLuaTable.orEmpty(arguments.optTable(0).orElse(null)));
246245
if (filter.rightPresent())
247246
return MethodResult.of(null, filter.getRight());
248247

@@ -260,7 +259,7 @@ public MethodResult getChemicals(IArguments arguments) throws LuaException {
260259
if (!APAddon.APP_MEKANISTICS.isLoaded())
261260
return MethodResult.of(null, StatusConstants.ADDON_NOT_LOADED.withInfo(APAddon.APP_MEKANISTICS.name()));
262261

263-
Pair<ChemicalFilter, String> filter = ChemicalFilter.parse(arguments.optTableUnsafe(0).orElse(EmptyLuaTable.INSTANCE));
262+
Pair<ChemicalFilter, String> filter = ChemicalFilter.parse(EmptyLuaTable.orEmpty(arguments.optTable(0).orElse(null)));
264263
if (filter.rightPresent())
265264
return MethodResult.of(null, filter.getRight());
266265

@@ -275,7 +274,7 @@ public final MethodResult getCraftableItems(IArguments arguments) throws LuaExce
275274
if (!isAvailable())
276275
return notConnected(null);
277276

278-
Pair<ItemFilter, String> filter = ItemFilter.parse(arguments.optTableUnsafe(0).orElse(EmptyLuaTable.INSTANCE));
277+
Pair<ItemFilter, String> filter = ItemFilter.parse(EmptyLuaTable.orEmpty(arguments.optTable(0).orElse(null)));
279278
if (filter.rightPresent())
280279
return MethodResult.of(null, filter.getRight());
281280

@@ -290,7 +289,7 @@ public final MethodResult getCraftableFluids(IArguments arguments) throws LuaExc
290289
if (!isAvailable())
291290
return notConnected(null);
292291

293-
Pair<FluidFilter, String> filter = FluidFilter.parse(arguments.optTableUnsafe(0).orElse(EmptyLuaTable.INSTANCE));
292+
Pair<FluidFilter, String> filter = FluidFilter.parse(EmptyLuaTable.orEmpty(arguments.optTable(0).orElse(null)));
294293
if (filter.rightPresent())
295294
return MethodResult.of(null, filter.getRight());
296295

@@ -307,7 +306,7 @@ public MethodResult getCraftableChemicals(IArguments arguments) throws LuaExcept
307306
if (!APAddon.APP_MEKANISTICS.isLoaded())
308307
return MethodResult.of(null, StatusConstants.ADDON_NOT_LOADED.withInfo(APAddon.APP_MEKANISTICS.name()));
309308

310-
Pair<ChemicalFilter, String> filter = ChemicalFilter.parse(arguments.optTableUnsafe(0).orElse(EmptyLuaTable.INSTANCE));
309+
Pair<ChemicalFilter, String> filter = ChemicalFilter.parse(EmptyLuaTable.orEmpty(arguments.optTable(0).orElse(null)));
311310
if (filter.rightPresent())
312311
return MethodResult.of(null, filter.getRight());
313312

@@ -443,13 +442,12 @@ public MethodResult getPatterns(IArguments arguments) throws LuaException {
443442

444443
// Expected input is a table with either an input table, an output table or both to filter for both
445444
// If no table is provided or it's empty, return every pattern
446-
Optional<LuaTable<?, ?>> optFilter = arguments.optTableUnsafe(0);
447-
if (optFilter.isEmpty()) {
445+
LuaTable<?, ?> filterTable = EmptyLuaTable.orEmpty(arguments.optTable(0).orElse(null));
446+
447+
if (filterTable.isEmpty()) {
448448
return MethodResult.of(AEApi.listPatterns(node.getGrid(), getLevel()));
449449
}
450450

451-
LuaTable<?, ?> filterTable = optFilter.get();
452-
453451
boolean hasInputFilter = filterTable.containsKey("input");
454452
boolean hasOutputFilter = filterTable.containsKey("output");
455453
boolean hasAnyFilter = hasInputFilter || hasOutputFilter;

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

Lines changed: 8 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,6 @@
4646

4747
import java.util.List;
4848
import java.util.Map;
49-
import java.util.Optional;
5049

5150
public class RSBridgePeripheral extends BasePeripheral<BlockEntityPeripheralOwner<RSBridgeEntity>> implements IStorageSystemPeripheral {
5251

@@ -251,7 +250,7 @@ public final MethodResult getItems(IArguments arguments) throws LuaException {
251250
if (!isAvailable())
252251
return notConnected(null);
253252

254-
Pair<ItemFilter, String> filter = ItemFilter.parse(arguments.optTableUnsafe(0).orElse(EmptyLuaTable.INSTANCE));
253+
Pair<ItemFilter, String> filter = ItemFilter.parse(EmptyLuaTable.orEmpty(arguments.optTable(0).orElse(null)));
255254
if (filter.rightPresent())
256255
return MethodResult.of(null, filter.getRight());
257256

@@ -268,7 +267,7 @@ public final MethodResult getFluids(IArguments arguments) throws LuaException {
268267
if (!isAvailable())
269268
return notConnected(null);
270269

271-
Pair<FluidFilter, String> filter = FluidFilter.parse(arguments.optTableUnsafe(0).orElse(EmptyLuaTable.INSTANCE));
270+
Pair<FluidFilter, String> filter = FluidFilter.parse(EmptyLuaTable.orEmpty(arguments.optTable(0).orElse(null)));
272271
if (filter.rightPresent())
273272
return MethodResult.of(null, filter.getRight());
274273

@@ -288,7 +287,7 @@ public final MethodResult getChemicals(IArguments arguments) throws LuaException
288287
if (!APAddon.REFINEDSTORAGE_MEKANISM.isLoaded())
289288
return MethodResult.of(null, StatusConstants.ADDON_NOT_LOADED.withInfo("RS_MEKANISM"));
290289

291-
Pair<ChemicalFilter, String> filter = ChemicalFilter.parse(arguments.optTableUnsafe(0).orElse(EmptyLuaTable.INSTANCE));
290+
Pair<ChemicalFilter, String> filter = ChemicalFilter.parse(EmptyLuaTable.orEmpty(arguments.optTable(0).orElse(null)));
292291
if (filter.rightPresent())
293292
return MethodResult.of(null, filter.getRight());
294293

@@ -305,7 +304,7 @@ public final MethodResult getCraftableItems(IArguments arguments) throws LuaExce
305304
if (!isAvailable())
306305
return notConnected(null);
307306

308-
Pair<ItemFilter, String> filter = ItemFilter.parse(arguments.optTableUnsafe(0).orElse(EmptyLuaTable.INSTANCE));
307+
Pair<ItemFilter, String> filter = ItemFilter.parse(EmptyLuaTable.orEmpty(arguments.optTable(0).orElse(null)));
309308
if (filter.rightPresent())
310309
return MethodResult.of(null, filter.getRight());
311310

@@ -322,7 +321,7 @@ public final MethodResult getCraftableFluids(IArguments arguments) throws LuaExc
322321
if (!isAvailable())
323322
return notConnected(null);
324323

325-
Pair<FluidFilter, String> filter = FluidFilter.parse(arguments.optTableUnsafe(0).orElse(EmptyLuaTable.INSTANCE));
324+
Pair<FluidFilter, String> filter = FluidFilter.parse(EmptyLuaTable.orEmpty(arguments.optTable(0).orElse(null)));
326325
if (filter.rightPresent())
327326
return MethodResult.of(null, filter.getRight());
328327

@@ -342,7 +341,7 @@ public final MethodResult getCraftableChemicals(IArguments arguments) throws Lua
342341
if (!APAddon.REFINEDSTORAGE_MEKANISM.isLoaded())
343342
return MethodResult.of(null, StatusConstants.ADDON_NOT_LOADED.withInfo(APAddon.REFINEDSTORAGE_MEKANISM));
344343

345-
Pair<ChemicalFilter, String> filter = ChemicalFilter.parse(arguments.optTableUnsafe(0).orElse(EmptyLuaTable.INSTANCE));
344+
Pair<ChemicalFilter, String> filter = ChemicalFilter.parse(EmptyLuaTable.orEmpty(arguments.optTable(0).orElse(null)));
346345
if (filter.rightPresent())
347346
return MethodResult.of(null, filter.getRight());
348347

@@ -828,13 +827,11 @@ public final MethodResult getPatterns(IArguments arguments) throws LuaException
828827

829828
// Expected input is a table with either an input table, an output table or both to filter for both
830829
// If no table is provided or it's empty, return every pattern
831-
Optional<LuaTable<?, ?>> optFilter = arguments.optTableUnsafe(0);
832-
if (optFilter.isEmpty()) {
830+
LuaTable<?, ?> filterTable = EmptyLuaTable.orEmpty(arguments.optTable(0).orElse(null));
831+
if (filterTable.isEmpty()) {
833832
return MethodResult.of(RSApi.getPatterns(getNetwork()));
834833
}
835834

836-
LuaTable<?, ?> filterTable = optFilter.get();
837-
838835
boolean hasInputFilter = filterTable.containsKey("input");
839836
boolean hasOutputFilter = filterTable.containsKey("output");
840837
boolean hasAnyFilter = hasInputFilter || hasOutputFilter;

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

Lines changed: 3 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,6 @@
4040
import org.jetbrains.annotations.NotNull;
4141
import org.jetbrains.annotations.Nullable;
4242

43-
import java.util.Optional;
4443
import java.util.stream.Stream;
4544

4645
import static de.srendi.advancedperipherals.common.addons.computercraft.operations.SingleOperation.*;
@@ -58,10 +57,7 @@ public AutomataBlockHandPlugin(AutomataCorePeripheral automataCore) {
5857

5958
@LuaFunction(mainThread = true)
6059
public final MethodResult digBlock(@NotNull IArguments arguments) throws LuaException {
61-
Optional<LuaTable<?, ?>> optOptions = arguments.optTableUnsafe(0);
62-
LuaTable<?, ?> options = EmptyLuaTable.INSTANCE;
63-
if (optOptions.isPresent())
64-
options = optOptions.get();
60+
LuaTable<?, ?> options = EmptyLuaTable.orEmpty(arguments.optTable(0).orElse(null));
6561

6662
boolean sneak = options.optBoolean("sneak").orElse(false);
6763
float yaw = options.optDouble("yaw").orElse(0d).floatValue();
@@ -84,10 +80,7 @@ public final MethodResult digBlock(@NotNull IArguments arguments) throws LuaExce
8480

8581
@LuaFunction(mainThread = true)
8682
public final MethodResult useOnBlock(@NotNull IArguments arguments) throws LuaException {
87-
Optional<LuaTable<?, ?>> optOptions = arguments.optTableUnsafe(0);
88-
LuaTable<?, ?> options = EmptyLuaTable.INSTANCE;
89-
if (optOptions.isPresent())
90-
options = optOptions.get();
83+
LuaTable<?, ?> options = EmptyLuaTable.orEmpty(arguments.optTable(0).orElse(null));
9184

9285
boolean sneak = options.optBoolean("sneak").orElse(false);
9386
float yaw = options.optDouble("yaw").orElse(0d).floatValue();
@@ -121,8 +114,7 @@ public final MethodResult useOnBlock(@NotNull IArguments arguments) throws LuaEx
121114
*/
122115
@LuaFunction(mainThread = true)
123116
public MethodResult placeBlock(@NotNull IArguments arguments) throws LuaException {
124-
Optional<LuaTable<?, ?>> optOptions = arguments.optTableUnsafe(0);
125-
final LuaTable<?, ?> options = optOptions.orElse(EmptyLuaTable.INSTANCE);
117+
LuaTable<?, ?> options = EmptyLuaTable.orEmpty(arguments.optTable(0).orElse(null));
126118

127119
ITurtleAccess turtle = automataCore.getPeripheralOwner().getTurtle();
128120
CompassPeripheral compassPeripheral = Stream.of(TurtleSide.values()).map(side -> turtle.getPeripheral(side) instanceof CompassPeripheral compass ? compass : null).filter(peripheral -> peripheral != null).findFirst().orElse(null);

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

Lines changed: 2 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,6 @@
2424

2525
import java.util.List;
2626
import java.util.Map;
27-
import java.util.Optional;
2827
import java.util.function.Predicate;
2928

3029
import static de.srendi.advancedperipherals.common.addons.computercraft.operations.SingleOperation.USE_ON_ANIMAL;
@@ -45,10 +44,7 @@ public AutomataEntityHandPlugin(AutomataCorePeripheral automataCore, Predicate<E
4544

4645
@LuaFunction(mainThread = true)
4746
public final MethodResult useOnAnimal(@NotNull IArguments arguments) throws LuaException {
48-
Optional<LuaTable<?, ?>> optOptions = arguments.optTableUnsafe(0);
49-
LuaTable<?, ?> options = EmptyLuaTable.INSTANCE;
50-
if (optOptions.isPresent())
51-
options = optOptions.get();
47+
LuaTable<?, ?> options = EmptyLuaTable.orEmpty(arguments.optTable(0).orElse(null));
5248

5349
boolean sneak = options.optBoolean("sneak").orElse(false);
5450
float yaw = options.optDouble("yaw").orElse(0d).floatValue();
@@ -68,10 +64,7 @@ public final MethodResult useOnAnimal(@NotNull IArguments arguments) throws LuaE
6864

6965
@LuaFunction(mainThread = true)
7066
public final MethodResult inspectAnimal(@NotNull IArguments arguments) throws LuaException {
71-
Optional<LuaTable<?, ?>> optOptions = arguments.optTableUnsafe(0);
72-
LuaTable<?, ?> options = EmptyLuaTable.INSTANCE;
73-
if (optOptions.isPresent())
74-
options = optOptions.get();
67+
LuaTable<?, ?> options = EmptyLuaTable.orEmpty(arguments.optTable(0).orElse(null));
7568

7669
boolean sneak = options.optBoolean("sneak").orElse(false);
7770
float yaw = options.optDouble("yaw").orElse(0d).floatValue();

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

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -84,10 +84,7 @@ protected Entity extractEntity() {
8484

8585
@LuaFunction(mainThread = true)
8686
public final MethodResult captureAnimal(@NotNull IArguments arguments) throws LuaException {
87-
Optional<LuaTable<?, ?>> optOptions = arguments.optTableUnsafe(0);
88-
LuaTable<?, ?> options = EmptyLuaTable.INSTANCE;
89-
if (optOptions.isPresent())
90-
options = optOptions.get();
87+
LuaTable<?, ?> options = EmptyLuaTable.orEmpty(arguments.optTable(0).orElse(null));
9188

9289
float yaw = options.optDouble("yaw").orElse(0d).floatValue();
9390
float pitch = options.optDouble( "pitch").orElse(0d).floatValue();

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

Lines changed: 2 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@
2020

2121
import java.util.HashMap;
2222
import java.util.Map;
23-
import java.util.Optional;
2423

2524
public class AutomataLookPlugin extends AutomataCorePlugin {
2625

@@ -30,10 +29,7 @@ public AutomataLookPlugin(AutomataCorePeripheral automataCore) {
3029

3130
@LuaFunction(mainThread = true)
3231
public final MethodResult lookAtBlock(@NotNull IArguments arguments) throws LuaException {
33-
Optional<LuaTable<?, ?>> optOptions = arguments.optTableUnsafe(0);
34-
LuaTable<?, ?> options = EmptyLuaTable.INSTANCE;
35-
if (optOptions.isPresent())
36-
options = optOptions.get();
32+
LuaTable<?, ?> options = EmptyLuaTable.orEmpty(arguments.optTable(0).orElse(null));
3733

3834
float yaw = options.optDouble("yaw").orElse(0d).floatValue();
3935
float pitch = options.optDouble( "pitch").orElse(0d).floatValue();
@@ -56,10 +52,7 @@ public final MethodResult lookAtBlock(@NotNull IArguments arguments) throws LuaE
5652

5753
@LuaFunction(mainThread = true)
5854
public final MethodResult lookAtEntity(@NotNull IArguments arguments) throws LuaException {
59-
Optional<LuaTable<?, ?>> optOptions = arguments.optTableUnsafe(0);
60-
LuaTable<?, ?> options = EmptyLuaTable.INSTANCE;
61-
if (optOptions.isPresent())
62-
options = optOptions.get();
55+
LuaTable<?, ?> options = EmptyLuaTable.orEmpty(arguments.optTable(0).orElse(null));
6356

6457
float yaw = options.optDouble("yaw").orElse(0d).floatValue();
6558
float pitch = options.optDouble( "pitch").orElse(0d).floatValue();

src/main/java/de/srendi/advancedperipherals/common/util/EmptyLuaTable.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,13 @@
11
package de.srendi.advancedperipherals.common.util;
22

33
import dan200.computercraft.api.lua.LuaTable;
4+
import dan200.computercraft.api.lua.ObjectLuaTable;
45
import org.jetbrains.annotations.NotNull;
56
import org.jetbrains.annotations.Nullable;
67

78
import java.util.Collection;
89
import java.util.List;
10+
import java.util.Map;
911
import java.util.Set;
1012

1113
public class EmptyLuaTable implements LuaTable<Object, Object> {
@@ -55,4 +57,10 @@ public Collection<Object> values() {
5557
public Set<Entry<Object, Object>> entrySet() {
5658
return Set.of();
5759
}
60+
61+
public static LuaTable<Object, Object> orEmpty(@Nullable Map<?, ?> table) {
62+
if (table == null)
63+
return INSTANCE;
64+
return new ObjectLuaTable(table);
65+
}
5866
}

0 commit comments

Comments
 (0)