diff --git a/common/src/main/java/gripe/_90/megacells/init/InitStorageCells.java b/common/src/main/java/gripe/_90/megacells/init/InitStorageCells.java index e48244b9..991b0c85 100644 --- a/common/src/main/java/gripe/_90/megacells/init/InitStorageCells.java +++ b/common/src/main/java/gripe/_90/megacells/init/InitStorageCells.java @@ -7,6 +7,7 @@ import appeng.api.storage.StorageCells; import gripe._90.megacells.definition.MEGAItems; +import gripe._90.megacells.integration.appbot.AppBotItems; import gripe._90.megacells.item.MEGABulkCell; import gripe._90.megacells.util.Utils; @@ -20,10 +21,11 @@ public static void init() { StorageCells.addCellHandler(MEGABulkCell.HANDLER); StorageCellModels.registerModel(MEGAItems.BULK_ITEM_CELL, Utils.makeId("block/drive/cells/bulk_item_cell")); - /* - * if (Utils.PLATFORM.isModLoaded("appbot")) { Stream.of(AppBotItems.getCells(), - * AppBotItems.getPortables()).flatMap(Collection::stream) .forEach(c -> StorageCellModels.registerModel(c, - * Utils.makeId("block/drive/cells/mega_mana_cell"))); } - */ + if (Utils.PLATFORM.isModLoaded("appbot")) { + Stream.of(AppBotItems.getCells(), + AppBotItems.getPortables()).flatMap(Collection::stream) + .forEach(c -> StorageCellModels.registerModel(c, + Utils.makeId("block/drive/cells/mega_mana_cell"))); + } } } diff --git a/common/src/main/java/gripe/_90/megacells/init/InitUpgrades.java b/common/src/main/java/gripe/_90/megacells/init/InitUpgrades.java index 8b7ad762..bc646704 100644 --- a/common/src/main/java/gripe/_90/megacells/init/InitUpgrades.java +++ b/common/src/main/java/gripe/_90/megacells/init/InitUpgrades.java @@ -8,6 +8,7 @@ import gripe._90.megacells.definition.MEGAItems; import gripe._90.megacells.integration.ae2wt.AE2WTIntegration; +import gripe._90.megacells.integration.appbot.AppBotIntegration; import gripe._90.megacells.util.Utils; public class InitUpgrades { @@ -63,8 +64,8 @@ public static void init() { AE2WTIntegration.initUpgrades(); } - /* - * if (Utils.PLATFORM.isModLoaded("appbot")) { AppBotIntegration.initUpgrades(); } - */ + if (Utils.PLATFORM.isModLoaded("appbot")) { + AppBotIntegration.initUpgrades(); + } } } diff --git a/fabric/build.gradle.kts b/fabric/build.gradle.kts index 1fcbfbb7..ad164fa8 100644 --- a/fabric/build.gradle.kts +++ b/fabric/build.gradle.kts @@ -81,11 +81,11 @@ dependencies { modImplementation("curse.maven:ae2wtlib-459929:${property("ae2wtFile")}") modCompileOnly("curse.maven:applied-botanics-addon-610632:${property("appbotFile")}") { - exclude(group = "dev.emi", module = "emi") + exclude(group = "dev.emi", module = "emi-fabric") } modRuntimeOnly("vazkii.botania:Botania:$minecraftVersion-${property("botaniaVersion")}-FABRIC-SNAPSHOT") { - exclude(group = "dev.emi", module = "emi") + exclude(group = "dev.emi", module = "emi-fabric") } modRuntimeOnly("me.shedaniel.cloth:cloth-config-fabric:${property("clothVersion")}") diff --git a/fabric/src/data/java/gripe/_90/megacells/datagen/ModelProvider.java b/fabric/src/data/java/gripe/_90/megacells/datagen/ModelProvider.java index 50857340..c25ce9d6 100644 --- a/fabric/src/data/java/gripe/_90/megacells/datagen/ModelProvider.java +++ b/fabric/src/data/java/gripe/_90/megacells/datagen/ModelProvider.java @@ -1,12 +1,10 @@ package gripe._90.megacells.datagen; import java.util.ArrayList; -import java.util.Collection; import java.util.List; import java.util.Optional; import java.util.function.BiConsumer; import java.util.function.Supplier; -import java.util.stream.Stream; import com.google.gson.JsonArray; import com.google.gson.JsonElement; @@ -40,6 +38,7 @@ import gripe._90.megacells.block.MEGAPatternProviderBlock; import gripe._90.megacells.definition.MEGABlocks; import gripe._90.megacells.definition.MEGAItems; +import gripe._90.megacells.integration.appbot.AppBotItems; import gripe._90.megacells.util.Utils; class ModelProvider extends FabricModelProvider { @@ -93,7 +92,6 @@ public void generateItemModels(ItemModelGenerators generator) { generator.generateFlatItem(MEGAItems.MEGA_ITEM_CELL_HOUSING.asItem(), ModelTemplates.FLAT_ITEM); generator.generateFlatItem(MEGAItems.MEGA_FLUID_CELL_HOUSING.asItem(), ModelTemplates.FLAT_ITEM); - // generator.generateFlatItem(AppBotItems.MEGA_MANA_CELL_HOUSING.asItem(), ModelTemplates.FLAT_ITEM); generator.generateFlatItem(MEGAItems.CELL_COMPONENT_1M.asItem(), ModelTemplates.FLAT_ITEM); generator.generateFlatItem(MEGAItems.CELL_COMPONENT_4M.asItem(), ModelTemplates.FLAT_ITEM); @@ -108,12 +106,20 @@ public void generateItemModels(ItemModelGenerators generator) { generator.generateFlatItem(MEGAItems.DECOMPRESSION_PATTERN.asItem(), AEItems.CRAFTING_PATTERN.asItem(), ModelTemplates.FLAT_ITEM); - var cells = Stream.concat( - Stream.of(MEGAItems.getItemCells(), MEGAItems.getFluidCells() - // , AppBotItems.getCells() - ) - .flatMap(Collection::stream), - Stream.of(MEGAItems.BULK_ITEM_CELL)).toList(); + var cells = new ArrayList<>(MEGAItems.getItemCells()); + cells.addAll(MEGAItems.getFluidCells()); + cells.add(MEGAItems.BULK_ITEM_CELL); + + var portables = new ArrayList<>(MEGAItems.getItemPortables()); + portables.addAll(MEGAItems.getFluidPortables()); + + if (Utils.PLATFORM.isModLoaded("appbot")) { + cells.addAll(AppBotItems.getCells()); + portables.addAll(AppBotItems.getPortables()); + + generator.generateFlatItem(AppBotItems.MEGA_MANA_CELL_HOUSING.asItem(), ModelTemplates.FLAT_ITEM); + createDriveCellModel("mega_mana_cell", generator.output); + } for (var cell : cells) { createCellItem( @@ -122,13 +128,6 @@ public void generateItemModels(ItemModelGenerators generator) { AppEng.makeId("item/storage_cell_led"), generator.output); } - var portables = Stream.concat( - Stream.of(MEGAItems.getItemPortables(), MEGAItems.getFluidPortables() - // , AppBotItems.getPortables() - ) - .flatMap(Collection::stream), - Stream.of()).toList(); - for (var cell : portables) { createCellItem( Utils.makeId("item/cell/portable/" + cell.id().getPath()), @@ -138,7 +137,6 @@ public void generateItemModels(ItemModelGenerators generator) { createDriveCellModel("mega_item_cell", generator.output); createDriveCellModel("mega_fluid_cell", generator.output); - createDriveCellModel("mega_mana_cell", generator.output); createDriveCellModel("bulk_item_cell", generator.output); } diff --git a/fabric/src/data/java/gripe/_90/megacells/datagen/RecipeProvider.java b/fabric/src/data/java/gripe/_90/megacells/datagen/RecipeProvider.java index 96e97a55..c7064350 100644 --- a/fabric/src/data/java/gripe/_90/megacells/datagen/RecipeProvider.java +++ b/fabric/src/data/java/gripe/_90/megacells/datagen/RecipeProvider.java @@ -35,6 +35,7 @@ import gripe._90.megacells.definition.MEGABlocks; import gripe._90.megacells.definition.MEGAItems; import gripe._90.megacells.definition.MEGAParts; +import gripe._90.megacells.integration.appbot.AppBotItems; import gripe._90.megacells.util.Utils; class RecipeProvider extends FabricRecipeProvider { @@ -172,16 +173,16 @@ public void buildRecipes(@NotNull Consumer consumer) { .unlockedBy("has_cable_mega_pattern_provider", has(MEGAParts.MEGA_PATTERN_PROVIDER)) .save(consumer, Utils.makeId("network/mega_pattern_provider_block")); - /* - * manaCells(consumer, AppBotItems.MANA_CELL_1M, AppBotItems.PORTABLE_MANA_CELL_1M, MEGAItems.TIER_1M); - * manaCells(consumer, AppBotItems.MANA_CELL_4M, AppBotItems.PORTABLE_MANA_CELL_4M, MEGAItems.TIER_4M); - * manaCells(consumer, AppBotItems.MANA_CELL_16M, AppBotItems.PORTABLE_MANA_CELL_16M, MEGAItems.TIER_16M); - * manaCells(consumer, AppBotItems.MANA_CELL_64M, AppBotItems.PORTABLE_MANA_CELL_64M, MEGAItems.TIER_64M); - * manaCells(consumer, AppBotItems.MANA_CELL_256M, AppBotItems.PORTABLE_MANA_CELL_256M, MEGAItems.TIER_256M); - */ + if (Utils.PLATFORM.isModLoaded("appbot")) { + manaCells(consumer, AppBotItems.MANA_CELL_1M, AppBotItems.PORTABLE_MANA_CELL_1M, MEGAItems.TIER_1M); + manaCells(consumer, AppBotItems.MANA_CELL_4M, AppBotItems.PORTABLE_MANA_CELL_4M, MEGAItems.TIER_4M); + manaCells(consumer, AppBotItems.MANA_CELL_16M, AppBotItems.PORTABLE_MANA_CELL_16M, MEGAItems.TIER_16M); + manaCells(consumer, AppBotItems.MANA_CELL_64M, AppBotItems.PORTABLE_MANA_CELL_64M, MEGAItems.TIER_64M); + manaCells(consumer, AppBotItems.MANA_CELL_256M, AppBotItems.PORTABLE_MANA_CELL_256M, MEGAItems.TIER_256M); + } } - private static void component(Consumer consumer, StorageTier tier, StorageTier preceding, + private void component(Consumer consumer, StorageTier tier, StorageTier preceding, ItemLike binder) { var precedingComponent = preceding.componentSupplier().get(); ShapedRecipeBuilder.shaped(RecipeCategory.MISC, tier.componentSupplier().get()) @@ -199,7 +200,7 @@ private static void component(Consumer consumer, StorageTier tie "cells/" + BuiltInRegistries.ITEM.getKey(tier.componentSupplier().get()).getPath())); } - private static void specialisedComponent(Consumer consumer, ItemLike top, ItemLike bottom, + private void specialisedComponent(Consumer consumer, ItemLike top, ItemLike bottom, ItemDefinition output) { InscriberRecipeBuilder.inscribe(AEItems.SINGULARITY, output, 1) .setMode(InscriberProcessType.PRESS) @@ -207,7 +208,7 @@ private static void specialisedComponent(Consumer consumer, Item .save(consumer, Utils.makeId("inscriber/" + output.id().getPath())); } - private static void cell(Consumer consumer, ItemDefinition cell, ItemDefinition component, + private void cell(Consumer consumer, ItemDefinition cell, ItemDefinition component, ItemDefinition housing, String housingMaterial) { ShapedRecipeBuilder.shaped(RecipeCategory.MISC, cell) .pattern("aba") @@ -228,7 +229,7 @@ private static void cell(Consumer consumer, ItemDefinition ce .save(consumer, Utils.makeId("cells/standard/" + cell.id().getPath() + "_with_housing")); } - private static void portable(Consumer consumer, ItemDefinition cell, ItemDefinition component, + private void portable(Consumer consumer, ItemDefinition cell, ItemDefinition component, ItemDefinition housing) { ShapelessRecipeBuilder.shapeless(RecipeCategory.MISC, cell) .requires(AEBlocks.CHEST) @@ -241,7 +242,7 @@ private static void portable(Consumer consumer, ItemDefinition consumer, ItemDefinition housing, String housingMaterial) { + private void housing(Consumer consumer, ItemDefinition housing, String housingMaterial) { ShapedRecipeBuilder.shaped(RecipeCategory.MISC, housing) .pattern("aba") .pattern("b b") @@ -253,7 +254,7 @@ private static void housing(Consumer consumer, ItemDefinition .save(consumer, Utils.makeId("cells/" + housing.id().getPath())); } - private static void craftingBlock(Consumer consumer, BlockDefinition unit, ItemLike part) { + private void craftingBlock(Consumer consumer, BlockDefinition unit, ItemLike part) { ShapelessRecipeBuilder.shapeless(RecipeCategory.MISC, unit) .requires(MEGABlocks.MEGA_CRAFTING_UNIT) .requires(part) @@ -261,26 +262,25 @@ private static void craftingBlock(Consumer consumer, BlockDefini .save(consumer, Utils.makeId("crafting/" + unit.id().getPath())); } - // private static void manaCells(Consumer consumer, ItemDefinition cell, ItemDefinition - // portable, - // StorageTier tier) { - // var component = tier.componentSupplier().get(); - // var componentPath = BuiltInRegistries.ITEM.getKey(component).getPath(); - // - // ShapelessRecipeBuilder.shapeless(RecipeCategory.MISC, cell).requires(AppBotItems.MEGA_MANA_CELL_HOUSING) - // .requires(tier.componentSupplier().get()).unlockedBy("has_" + componentPath, has(component)) - // .unlockedBy("has_mega_mana_cell_housing", has(AppBotItems.MEGA_MANA_CELL_HOUSING)) - // .save(consumer, Utils.makeId("cells/standard/" + cell.id().getPath() + "_with_housing")); - // - // ShapelessRecipeBuilder.shapeless(RecipeCategory.MISC, portable).requires(AEBlocks.CHEST).requires(component) - // .requires(AEBlocks.DENSE_ENERGY_CELL).requires(AppBotItems.MEGA_MANA_CELL_HOUSING) - // .unlockedBy("has_mega_mana_cell_housing", has(AppBotItems.MEGA_MANA_CELL_HOUSING)) - // .unlockedBy("has_" + componentPath, has(component)) - // .unlockedBy("has_dense_energy_cell", has(AEBlocks.DENSE_ENERGY_CELL)) - // .save(consumer, Utils.makeId("cells/portable/" + portable.id().getPath())); - // } - - private static Ingredient placeholderTag(String placeholder) { + private void manaCells(Consumer consumer, ItemDefinition cell, ItemDefinition portable, + StorageTier tier) { + var component = tier.componentSupplier().get(); + var componentPath = BuiltInRegistries.ITEM.getKey(component).getPath(); + + ShapelessRecipeBuilder.shapeless(RecipeCategory.MISC, cell).requires(AppBotItems.MEGA_MANA_CELL_HOUSING) + .requires(tier.componentSupplier().get()).unlockedBy("has_" + componentPath, has(component)) + .unlockedBy("has_mega_mana_cell_housing", has(AppBotItems.MEGA_MANA_CELL_HOUSING)) + .save(consumer, Utils.makeId("cells/standard/" + cell.id().getPath() + "_with_housing")); + + ShapelessRecipeBuilder.shapeless(RecipeCategory.MISC, portable).requires(AEBlocks.CHEST).requires(component) + .requires(AEBlocks.DENSE_ENERGY_CELL).requires(AppBotItems.MEGA_MANA_CELL_HOUSING) + .unlockedBy("has_mega_mana_cell_housing", has(AppBotItems.MEGA_MANA_CELL_HOUSING)) + .unlockedBy("has_" + componentPath, has(component)) + .unlockedBy("has_dense_energy_cell", has(AEBlocks.DENSE_ENERGY_CELL)) + .save(consumer, Utils.makeId("cells/portable/" + portable.id().getPath())); + } + + private Ingredient placeholderTag(String placeholder) { return Ingredient.fromValues(Stream.of(new PlaceholderTagValue(placeholder))); } diff --git a/fabric/src/main/java/gripe/_90/megacells/MEGACells.java b/fabric/src/main/java/gripe/_90/megacells/MEGACells.java index f47aa6fa..abab8344 100644 --- a/fabric/src/main/java/gripe/_90/megacells/MEGACells.java +++ b/fabric/src/main/java/gripe/_90/megacells/MEGACells.java @@ -18,8 +18,10 @@ import gripe._90.megacells.definition.MEGAParts; import gripe._90.megacells.init.InitStorageCells; import gripe._90.megacells.init.InitUpgrades; +import gripe._90.megacells.integration.appbot.AppBotItems; import gripe._90.megacells.service.CompressionService; import gripe._90.megacells.service.DecompressionService; +import gripe._90.megacells.util.Utils; public class MEGACells implements IAEAddonEntrypoint { @Override @@ -39,9 +41,9 @@ private void initAll() { MEGAParts.init(); MEGABlockEntities.init(); - /* - * if (Utils.PLATFORM.isModLoaded("appbot")) { AppBotItems.init(); } - */ + if (Utils.PLATFORM.isModLoaded("appbot")) { + AppBotItems.init(); + } } private void registerAll() { diff --git a/fabric/src/main/java/gripe/_90/megacells/MEGACellsClient.java b/fabric/src/main/java/gripe/_90/megacells/MEGACellsClient.java index 427abf4d..fcd0d84d 100644 --- a/fabric/src/main/java/gripe/_90/megacells/MEGACellsClient.java +++ b/fabric/src/main/java/gripe/_90/megacells/MEGACellsClient.java @@ -30,6 +30,7 @@ import gripe._90.megacells.definition.MEGABlockEntities; import gripe._90.megacells.definition.MEGABlocks; import gripe._90.megacells.definition.MEGAItems; +import gripe._90.megacells.integration.appbot.AppBotItems; import gripe._90.megacells.util.Utils; @Environment(EnvType.CLIENT) @@ -82,10 +83,10 @@ private void initItemColors() { var portables = new ArrayList<>(MEGAItems.getItemPortables()); portables.addAll(MEGAItems.getFluidPortables()); - /* - * if (Utils.PLATFORM.isModLoaded("appbot")) { cells.addAll(AppBotItems.getCells()); - * portables.addAll(AppBotItems.getPortables()); } - */ + if (Utils.PLATFORM.isModLoaded("appbot")) { + cells.addAll(AppBotItems.getCells()); + portables.addAll(AppBotItems.getPortables()); + } ColorProviderRegistry.ITEM.register(BasicStorageCell::getColor, cells.toArray(new ItemLike[0])); ColorProviderRegistry.ITEM.register(PortableCellItem::getColor, portables.toArray(new ItemLike[0])); diff --git a/fabric/src/main/resources/fabric.mod.json b/fabric/src/main/resources/fabric.mod.json index 818ff73a..a40c94b0 100644 --- a/fabric/src/main/resources/fabric.mod.json +++ b/fabric/src/main/resources/fabric.mod.json @@ -30,6 +30,6 @@ }, "suggests": { "ae2wtlib": ">=$ae2wtVersion", - "appbot": ">=$appbotVersion" + "appbot": "$appbotVersion" } } diff --git a/forge/gradle.properties b/forge/gradle.properties index c08ce0e1..37eb56e0 100644 --- a/forge/gradle.properties +++ b/forge/gradle.properties @@ -5,6 +5,7 @@ ae2wtFile=4649864 architecturyVersion=9.1.10 curiosVersion=5.2.0-beta.3 +appmekVersion=1.3.4 appmekFile=4058235 mekanismVersion=10.3.5.474 diff --git a/forge/src/main/java/gripe/_90/megacells/forge/MEGACells.java b/forge/src/main/java/gripe/_90/megacells/forge/MEGACells.java index feb5ab3c..d7f6d7aa 100644 --- a/forge/src/main/java/gripe/_90/megacells/forge/MEGACells.java +++ b/forge/src/main/java/gripe/_90/megacells/forge/MEGACells.java @@ -27,6 +27,9 @@ import gripe._90.megacells.definition.MEGAParts; import gripe._90.megacells.init.InitStorageCells; import gripe._90.megacells.init.InitUpgrades; +import gripe._90.megacells.integration.appbot.AppBotItems; +import gripe._90.megacells.integration.appmek.AppMekIntegration; +import gripe._90.megacells.integration.appmek.AppMekItems; import gripe._90.megacells.service.CompressionService; import gripe._90.megacells.service.DecompressionService; import gripe._90.megacells.util.Utils; @@ -52,13 +55,13 @@ private void initAll() { MEGAParts.init(); MEGABlockEntities.init(); - /* - * if (Utils.PLATFORM.isModLoaded("appmek")) { AppMekItems.init(); } - */ + if (Utils.PLATFORM.isModLoaded("appmek")) { + AppMekItems.init(); + } - /* - * if (Utils.PLATFORM.isModLoaded("appbot")) { AppBotItems.init(); } - */ + if (Utils.PLATFORM.isModLoaded("appbot")) { + AppBotItems.init(); + } } private void registerAll(RegisterEvent event) { @@ -89,7 +92,7 @@ private void registerAll(RegisterEvent event) { private void populateTab(BuildCreativeModeTabContentsEvent event) { if (event.getTabKey() == MEGAItems.CREATIVE_TAB_KEY) { - MEGAItems.getItems().forEach(event::accept); + MEGAItems.getItems().stream().filter(i -> i != MEGAItems.DECOMPRESSION_PATTERN).forEach(event::accept); MEGABlocks.getBlocks().forEach(event::accept); } } @@ -98,10 +101,12 @@ private void initCells(FMLCommonSetupEvent event) { event.enqueueWork(InitStorageCells::init); event.enqueueWork(InitUpgrades::init); - /* - * event.enqueueWork(() -> { if (Utils.PLATFORM.isModLoaded("appmek")) { AppMekIntegration.initUpgrades(); - * AppMekIntegration.initStorageCells(); } }); - */ + event.enqueueWork(() -> { + if (Utils.PLATFORM.isModLoaded("appmek")) { + AppMekIntegration.initUpgrades(); + AppMekIntegration.initStorageCells(); + } + }); } private void initCompression() { diff --git a/forge/src/main/java/gripe/_90/megacells/forge/MEGACellsClient.java b/forge/src/main/java/gripe/_90/megacells/forge/MEGACellsClient.java index 32f8d5a4..a2fc15a2 100644 --- a/forge/src/main/java/gripe/_90/megacells/forge/MEGACellsClient.java +++ b/forge/src/main/java/gripe/_90/megacells/forge/MEGACellsClient.java @@ -28,6 +28,8 @@ import gripe._90.megacells.definition.MEGABlockEntities; import gripe._90.megacells.definition.MEGABlocks; import gripe._90.megacells.definition.MEGAItems; +import gripe._90.megacells.integration.appbot.AppBotItems; +import gripe._90.megacells.integration.appmek.AppMekItems; import gripe._90.megacells.util.Utils; public class MEGACellsClient { @@ -77,15 +79,16 @@ private void initItemColors(RegisterColorHandlersEvent.Item event) { var portables = new ArrayList<>(MEGAItems.getItemPortables()); portables.addAll(MEGAItems.getFluidPortables()); - /* - * if (Utils.PLATFORM.isModLoaded("appmek")) { cells.addAll(AppMekItems.getCells()); - * portables.addAll(AppMekItems.getPortables()); cells.add(AppMekItems.RADIOACTIVE_CHEMICAL_CELL); } - */ + if (Utils.PLATFORM.isModLoaded("appmek")) { + cells.addAll(AppMekItems.getCells()); + portables.addAll(AppMekItems.getPortables()); + cells.add(AppMekItems.RADIOACTIVE_CHEMICAL_CELL); + } - /* - * if (Utils.PLATFORM.isModLoaded("appbot")) { cells.addAll(AppBotItems.getCells()); - * portables.addAll(AppBotItems.getPortables()); } - */ + if (Utils.PLATFORM.isModLoaded("appbot")) { + cells.addAll(AppBotItems.getCells()); + portables.addAll(AppBotItems.getPortables()); + } event.register(BasicStorageCell::getColor, cells.toArray(new ItemLike[0])); event.register(PortableCellItem::getColor, portables.toArray(new ItemLike[0])); diff --git a/forge/src/main/resources/META-INF/mods.toml b/forge/src/main/resources/META-INF/mods.toml index 8f30a8e4..d3bedaa0 100644 --- a/forge/src/main/resources/META-INF/mods.toml +++ b/forge/src/main/resources/META-INF/mods.toml @@ -24,7 +24,7 @@ description = "ME Greater Accumulation Cells - For when kilobytes just won't do. [[dependencies.megacells]] modId = "appmek" mandatory = false - versionRange = "(,2.0.0)" + versionRange = "[$appmekVersion]" ordering = "AFTER" side = "BOTH" @@ -38,7 +38,7 @@ description = "ME Greater Accumulation Cells - For when kilobytes just won't do. [[dependencies.megacells]] modId="appbot" mandatory=false - versionRange = "[$appbotVersion,)" + versionRange = "[$appbotVersion]" ordering = "AFTER" side = "BOTH"