From 26e18b2a184d75baa7555e7b2af8637af46ca7c2 Mon Sep 17 00:00:00 2001 From: Dongruixuan Li Date: Wed, 11 Oct 2023 14:46:28 -0400 Subject: [PATCH] Add Applied Mekanistics support to the ME Bridge --- build.gradle | 3 +++ gradle.properties | 1 + .../common/addons/APAddons.java | 3 +++ .../addons/appliedenergistics/AppEngApi.java | 26 ++++++++++++++++++- .../peripheral/MeBridgePeripheral.java | 8 ++++++ 5 files changed, 40 insertions(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index 121a34eeb..79d1be665 100644 --- a/build.gradle +++ b/build.gradle @@ -264,6 +264,9 @@ dependencies { compileOnly fg.deobf("appeng:appliedenergistics2-forge:${appliedenergistics_version}") runtimeOnly fg.deobf("appeng:appliedenergistics2-forge:${appliedenergistics_version}") + // Applied Mekanistics + implementation fg.deobf("curse.maven:applied-mekanistics-574300:${appliedmekanistics_version}") + // Curios compileOnly fg.deobf("top.theillusivec4.curios:curios-forge:${curios_version}:api") compileOnly fg.deobf("top.theillusivec4.curios:curios-forge:${curios_version}") diff --git a/gradle.properties b/gradle.properties index bf131a838..be460c120 100644 --- a/gradle.properties +++ b/gradle.properties @@ -34,6 +34,7 @@ ae2things_version=4367610 powah_version=4183078 ae2additions_version=4646599 kotlinforforge_version=3.12.0 +appliedmekanistics_version=4734608 # Mod dependencies which are needed for other mods # For minecolonies diff --git a/src/main/java/de/srendi/advancedperipherals/common/addons/APAddons.java b/src/main/java/de/srendi/advancedperipherals/common/addons/APAddons.java index f72d38e1c..c26e2652a 100644 --- a/src/main/java/de/srendi/advancedperipherals/common/addons/APAddons.java +++ b/src/main/java/de/srendi/advancedperipherals/common/addons/APAddons.java @@ -14,11 +14,13 @@ public class APAddons { public static final String REFINEDSTORAGE_MODID = "refinedstorage"; public static final String AE_THINGS_MODID = "ae2things"; public static final String AE_ADDITIONS_MODID = "ae2additions"; + public static final String APP_MEKANISTICS_MODID = "appmek"; public static boolean curiosLoaded; public static boolean refinedStorageLoaded; public static boolean aeThingsLoaded; public static boolean aeAdditionsLoaded; + public static boolean appMekLoaded; private APAddons() { } @@ -29,6 +31,7 @@ public static void commonSetup() { refinedStorageLoaded = modList.isLoaded(REFINEDSTORAGE_MODID); aeThingsLoaded = modList.isLoaded(AE_THINGS_MODID); aeAdditionsLoaded = modList.isLoaded(AE_ADDITIONS_MODID); + appMekLoaded = modList.isLoaded(APP_MEKANISTICS_MODID); if (refinedStorageLoaded) RefinedStorage.instance = new RefinedStorage(); diff --git a/src/main/java/de/srendi/advancedperipherals/common/addons/appliedenergistics/AppEngApi.java b/src/main/java/de/srendi/advancedperipherals/common/addons/appliedenergistics/AppEngApi.java index 0c954e1a0..37cf6faf2 100644 --- a/src/main/java/de/srendi/advancedperipherals/common/addons/appliedenergistics/AppEngApi.java +++ b/src/main/java/de/srendi/advancedperipherals/common/addons/appliedenergistics/AppEngApi.java @@ -24,6 +24,7 @@ import de.srendi.advancedperipherals.common.util.inventory.ItemUtil; import io.github.projectet.ae2things.item.DISKDrive; import it.unimi.dsi.fastutil.objects.Object2LongMap; +import me.ramidzkh.mekae2.ae2.MekanismKey; import net.minecraft.core.BlockPos; import net.minecraft.nbt.CompoundTag; import net.minecraft.world.item.ItemStack; @@ -118,6 +119,16 @@ public static List listFluids(MEStorage monitor, ICraftingService servic return items; } + public static List listGases(MEStorage monitor, ICraftingService service, int flag) { + List items = new ArrayList<>(); + for (Object2LongMap.Entry aeKey : monitor.getAvailableStacks()) { + if (APAddons.appMekLoaded && aeKey.getKey() instanceof MekanismKey itemKey) { + items.add(getObjectFromStack(Pair.of(aeKey.getLongValue(), itemKey), service)); + } + } + return items; + } + public static Map getObjectFromStack(Pair stack, @Nullable ICraftingService service) { if (stack.getRight() == null) return Collections.emptyMap(); @@ -125,6 +136,8 @@ public static Map getObjectFromStack(Pair getObjectFromFluidStack(Pair stack.getRight().getFluid().builtInRegistryHolder().tags())); map.put("isCraftable", craftingService != null && craftingService.isCraftable(stack.getRight())); return map; } + private static Map getObjectFromGasStack(Pair stack, @Nullable ICraftingService craftingService) { + Map map = new HashMap<>(); + long amount = stack.getLeft(); + map.put("name", stack.getRight().getStack().getTypeRegistryName().toString()); + map.put("amount", amount); + map.put("displayName", stack.getRight().getDisplayName().getString()); + map.put("tags", LuaConverter.tagsToList(() -> stack.getRight().getStack().getType().getTags())); + + return map; + } + public static Map getObjectFromCPU(ICraftingCPU cpu) { Map map = new HashMap<>(); long storage = cpu.getAvailableStorage(); diff --git a/src/main/java/de/srendi/advancedperipherals/common/addons/computercraft/peripheral/MeBridgePeripheral.java b/src/main/java/de/srendi/advancedperipherals/common/addons/computercraft/peripheral/MeBridgePeripheral.java index 58d6e302b..1a594df59 100644 --- a/src/main/java/de/srendi/advancedperipherals/common/addons/computercraft/peripheral/MeBridgePeripheral.java +++ b/src/main/java/de/srendi/advancedperipherals/common/addons/computercraft/peripheral/MeBridgePeripheral.java @@ -447,6 +447,14 @@ public final MethodResult listFluid() { return MethodResult.of(AppEngApi.listFluids(AppEngApi.getMonitor(node), getCraftingService(), 0)); } + @LuaFunction(mainThread = true) + public final MethodResult listGas() { + if (!isConnected()) + return notConnected(); + + return MethodResult.of(AppEngApi.listGases(AppEngApi.getMonitor(node), getCraftingService(), 0)); + } + @LuaFunction(mainThread = true) public final MethodResult listCraftableFluid() { if (!isConnected())