diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index adee3c18..eab5944c 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -69,6 +69,7 @@ jobs: ae2(required){curseforge:223794}{modrinth:XxWD5pD3} appmek(optional){curseforge:574300}{modrinth:IiATswDj} appbot(optional){curseforge:610632}{modrinth:545hUrw9} + arseng(optional){curseforge:905641}{modrinth:IJI3QuK8} ae2wtlib(optional){curseforge:459929}{modrinth:pNabrMMw} cloth_config(required){curseforge:348521}{modrinth:9s6osm5g} diff --git a/common/src/main/java/gripe/_90/megacells/core/Addons.java b/common/src/main/java/gripe/_90/megacells/core/Addons.java index f95f2f4a..e4edb69d 100644 --- a/common/src/main/java/gripe/_90/megacells/core/Addons.java +++ b/common/src/main/java/gripe/_90/megacells/core/Addons.java @@ -3,6 +3,7 @@ public enum Addons { APPMEK("appmek"), APPBOT("appbot"), + ARSENG("arseng"), AE2WTLIB("ae2wtlib"); private final String modId; diff --git a/forge/build.gradle.kts b/forge/build.gradle.kts index 591186c5..34b93145 100644 --- a/forge/build.gradle.kts +++ b/forge/build.gradle.kts @@ -58,6 +58,19 @@ repositories { includeGroup("top.theillusivec4.curios") } } + + maven { + name = "BlameJared" + url = uri("https://maven.blamejared.com") + content { + includeGroup("com.hollingsworth.ars_nouveau") + } + } + + maven { + name = "GeckoLib" + url = uri("https://dl.cloudsmith.io/public/geckolib3/geckolib/maven/") + } } dependencies { @@ -75,6 +88,11 @@ dependencies { modRuntimeOnly(libs.botania.forge) modRuntimeOnly(libs.patchouli.forge) + modImplementation(libs.arseng) + modRuntimeOnly(libs.arsnouveau) + modRuntimeOnly(libs.geckolib) + runtimeOnly(libs.mixinextras) + modImplementation(libs.ae2wtlib.forge) modRuntimeOnly(libs.architectury.forge) modRuntimeOnly(libs.curios) diff --git a/forge/src/data/java/gripe/_90/megacells/datagen/ForgeModelProvider.java b/forge/src/data/java/gripe/_90/megacells/datagen/ForgeModelProvider.java index 0c1b302b..eb61fca4 100644 --- a/forge/src/data/java/gripe/_90/megacells/datagen/ForgeModelProvider.java +++ b/forge/src/data/java/gripe/_90/megacells/datagen/ForgeModelProvider.java @@ -11,6 +11,7 @@ import gripe._90.megacells.MEGACells; import gripe._90.megacells.core.Addons; import gripe._90.megacells.integration.appmek.AppMekItems; +import gripe._90.megacells.integration.arseng.ArsEngItems; class ForgeModelProvider extends ItemModelProvider { private static final ResourceLocation STORAGE_CELL_LED = AppEng.makeId("item/storage_cell_led"); @@ -39,6 +40,15 @@ protected void registerModels() { driveCell("mega_chemical_cell"); driveCell("radioactive_chemical_cell"); } + + if (MEGACells.PLATFORM.isAddonLoaded(Addons.ARSENG)) { + basicItem(ArsEngItems.MEGA_SOURCE_CELL_HOUSING.asItem()); + + ArsEngItems.getCells().forEach(c -> cell(c, "standard", STORAGE_CELL_LED)); + ArsEngItems.getPortables().forEach(c -> cell(c, "portable", PORTABLE_CELL_LED)); + + driveCell("mega_source_cell"); + } } private void cell(ItemDefinition cell, String type, ResourceLocation led) { diff --git a/forge/src/data/java/gripe/_90/megacells/datagen/ForgeRecipeProvider.java b/forge/src/data/java/gripe/_90/megacells/datagen/ForgeRecipeProvider.java index 05ac3824..06ada025 100644 --- a/forge/src/data/java/gripe/_90/megacells/datagen/ForgeRecipeProvider.java +++ b/forge/src/data/java/gripe/_90/megacells/datagen/ForgeRecipeProvider.java @@ -6,7 +6,6 @@ import net.minecraft.data.PackOutput; import net.minecraft.data.recipes.FinishedRecipe; -import net.minecraft.data.recipes.RecipeBuilder; import net.minecraft.data.recipes.RecipeCategory; import net.minecraft.data.recipes.RecipeProvider; import net.minecraft.data.recipes.ShapedRecipeBuilder; @@ -28,6 +27,7 @@ import gripe._90.megacells.core.Addons; import gripe._90.megacells.definition.MEGAItems; import gripe._90.megacells.integration.appmek.AppMekItems; +import gripe._90.megacells.integration.arseng.ArsEngItems; public class ForgeRecipeProvider extends RecipeProvider { private static final TagKey OSMIUM = ItemTags.create(new ResourceLocation("forge", "ingots/osmium")); @@ -37,11 +37,10 @@ public ForgeRecipeProvider(PackOutput output) { } @Override - protected void buildRecipes(@NotNull Consumer consumer) { + protected void buildRecipes(@NotNull Consumer writer) { if (MEGACells.PLATFORM.isAddonLoaded(Addons.APPMEK)) { - appmekRecipe( - consumer, - MEGACells.makeId("cells/mega_chemical_cell_housing"), + MEGACells.PLATFORM.addIntegrationRecipe( + writer, ShapedRecipeBuilder.shaped(RecipeCategory.MISC, AppMekItems.MEGA_CHEMICAL_CELL_HOUSING) .pattern("aba") .pattern("b b") @@ -49,23 +48,24 @@ protected void buildRecipes(@NotNull Consumer consumer) { .define('a', AEBlocks.QUARTZ_VIBRANT_GLASS) .define('b', AEItems.SKY_DUST) .define('d', OSMIUM) - .unlockedBy("has_dusts/sky_stone", has(AEItems.SKY_DUST))); - - chemCell(consumer, AppMekItems.CHEMICAL_CELL_1M, MEGAItems.CELL_COMPONENT_1M); - chemCell(consumer, AppMekItems.CHEMICAL_CELL_4M, MEGAItems.CELL_COMPONENT_4M); - chemCell(consumer, AppMekItems.CHEMICAL_CELL_16M, MEGAItems.CELL_COMPONENT_16M); - chemCell(consumer, AppMekItems.CHEMICAL_CELL_64M, MEGAItems.CELL_COMPONENT_64M); - chemCell(consumer, AppMekItems.CHEMICAL_CELL_256M, MEGAItems.CELL_COMPONENT_256M); - - chemPortable(consumer, AppMekItems.PORTABLE_CHEMICAL_CELL_1M, MEGAItems.CELL_COMPONENT_1M); - chemPortable(consumer, AppMekItems.PORTABLE_CHEMICAL_CELL_4M, MEGAItems.CELL_COMPONENT_4M); - chemPortable(consumer, AppMekItems.PORTABLE_CHEMICAL_CELL_16M, MEGAItems.CELL_COMPONENT_16M); - chemPortable(consumer, AppMekItems.PORTABLE_CHEMICAL_CELL_64M, MEGAItems.CELL_COMPONENT_64M); - chemPortable(consumer, AppMekItems.PORTABLE_CHEMICAL_CELL_256M, MEGAItems.CELL_COMPONENT_256M); - - appmekRecipe( - consumer, - MEGACells.makeId("crafting/radioactive_cell_component"), + .unlockedBy("has_dusts/sky_stone", has(AEItems.SKY_DUST)), + Addons.APPMEK, + MEGACells.makeId("cells/mega_chemical_cell_housing")); + + chemCell(writer, AppMekItems.CHEMICAL_CELL_1M, MEGAItems.CELL_COMPONENT_1M); + chemCell(writer, AppMekItems.CHEMICAL_CELL_4M, MEGAItems.CELL_COMPONENT_4M); + chemCell(writer, AppMekItems.CHEMICAL_CELL_16M, MEGAItems.CELL_COMPONENT_16M); + chemCell(writer, AppMekItems.CHEMICAL_CELL_64M, MEGAItems.CELL_COMPONENT_64M); + chemCell(writer, AppMekItems.CHEMICAL_CELL_256M, MEGAItems.CELL_COMPONENT_256M); + + chemPortable(writer, AppMekItems.PORTABLE_CHEMICAL_CELL_1M, MEGAItems.CELL_COMPONENT_1M); + chemPortable(writer, AppMekItems.PORTABLE_CHEMICAL_CELL_4M, MEGAItems.CELL_COMPONENT_4M); + chemPortable(writer, AppMekItems.PORTABLE_CHEMICAL_CELL_16M, MEGAItems.CELL_COMPONENT_16M); + chemPortable(writer, AppMekItems.PORTABLE_CHEMICAL_CELL_64M, MEGAItems.CELL_COMPONENT_64M); + chemPortable(writer, AppMekItems.PORTABLE_CHEMICAL_CELL_256M, MEGAItems.CELL_COMPONENT_256M); + + MEGACells.PLATFORM.addIntegrationRecipe( + writer, ShapedRecipeBuilder.shaped(RecipeCategory.MISC, AppMekItems.RADIOACTIVE_CELL_COMPONENT) .pattern("aba") .pattern("cdc") @@ -76,10 +76,11 @@ protected void buildRecipes(@NotNull Consumer consumer) { .define('d', AEBlocks.QUARTZ_VIBRANT_GLASS) .define('e', AEItems.CELL_COMPONENT_256K) .unlockedBy("has_cell_component_256k", has(AEItems.CELL_COMPONENT_256K)) - .unlockedBy("has_waste_barrel", has(MekanismBlocks.RADIOACTIVE_WASTE_BARREL))); - appmekRecipe( - consumer, - MEGACells.makeId("cells/standard/radioactive_chemical_cell"), + .unlockedBy("has_waste_barrel", has(MekanismBlocks.RADIOACTIVE_WASTE_BARREL)), + Addons.APPMEK, + MEGACells.makeId("crafting/radioactive_cell_component")); + MEGACells.PLATFORM.addIntegrationRecipe( + writer, ShapedRecipeBuilder.shaped(RecipeCategory.MISC, AppMekItems.RADIOACTIVE_CHEMICAL_CELL) .pattern("aba") .pattern("bcb") @@ -89,14 +90,29 @@ protected void buildRecipes(@NotNull Consumer consumer) { .define('c', AppMekItems.RADIOACTIVE_CELL_COMPONENT) .define('d', MekanismItems.HDPE_SHEET) .define('e', MekanismItems.POLONIUM_PELLET) - .unlockedBy("has_radioactive_cell_component", has(AppMekItems.RADIOACTIVE_CELL_COMPONENT))); + .unlockedBy("has_radioactive_cell_component", has(AppMekItems.RADIOACTIVE_CELL_COMPONENT)), + Addons.APPMEK, + MEGACells.makeId("cells/standard/radioactive_chemical_cell")); + } + + if (MEGACells.PLATFORM.isAddonLoaded(Addons.ARSENG)) { + sourceCell(writer, ArsEngItems.SOURCE_CELL_1M, MEGAItems.CELL_COMPONENT_1M); + sourceCell(writer, ArsEngItems.SOURCE_CELL_4M, MEGAItems.CELL_COMPONENT_4M); + sourceCell(writer, ArsEngItems.SOURCE_CELL_16M, MEGAItems.CELL_COMPONENT_16M); + sourceCell(writer, ArsEngItems.SOURCE_CELL_64M, MEGAItems.CELL_COMPONENT_64M); + sourceCell(writer, ArsEngItems.SOURCE_CELL_256M, MEGAItems.CELL_COMPONENT_256M); + + sourcePortable(writer, ArsEngItems.PORTABLE_SOURCE_CELL_1M, MEGAItems.CELL_COMPONENT_1M); + sourcePortable(writer, ArsEngItems.PORTABLE_SOURCE_CELL_4M, MEGAItems.CELL_COMPONENT_4M); + sourcePortable(writer, ArsEngItems.PORTABLE_SOURCE_CELL_16M, MEGAItems.CELL_COMPONENT_16M); + sourcePortable(writer, ArsEngItems.PORTABLE_SOURCE_CELL_64M, MEGAItems.CELL_COMPONENT_64M); + sourcePortable(writer, ArsEngItems.PORTABLE_SOURCE_CELL_256M, MEGAItems.CELL_COMPONENT_256M); } } - private void chemCell(Consumer consumer, ItemDefinition cell, ItemDefinition component) { - appmekRecipe( - consumer, - MEGACells.makeId("cells/standard/" + cell.id().getPath()), + private void chemCell(Consumer writer, ItemDefinition cell, ItemDefinition component) { + MEGACells.PLATFORM.addIntegrationRecipe( + writer, ShapedRecipeBuilder.shaped(RecipeCategory.MISC, cell) .pattern("aba") .pattern("bcb") @@ -105,21 +121,23 @@ private void chemCell(Consumer consumer, ItemDefinition cell, .define('b', AEItems.SKY_DUST) .define('c', component) .define('d', OSMIUM) - .unlockedBy("has_" + component.id().getPath(), has(component))); - appmekRecipe( - consumer, - MEGACells.makeId("cells/standard/" + cell.id().getPath() + "_with_housing"), + .unlockedBy("has_" + component.id().getPath(), has(component)), + Addons.APPMEK, + MEGACells.makeId("cells/standard/" + cell.id().getPath())); + MEGACells.PLATFORM.addIntegrationRecipe( + writer, ShapelessRecipeBuilder.shapeless(RecipeCategory.MISC, cell) .requires(AppMekItems.MEGA_CHEMICAL_CELL_HOUSING) .requires(component) .unlockedBy("has_" + component.id().getPath(), has(component)) - .unlockedBy("has_mega_chemical_cell_housing", has(AppMekItems.MEGA_CHEMICAL_CELL_HOUSING))); + .unlockedBy("has_mega_chemical_cell_housing", has(AppMekItems.MEGA_CHEMICAL_CELL_HOUSING)), + Addons.APPMEK, + MEGACells.makeId("cells/standard/" + cell.id().getPath() + "_with_housing")); } - private void chemPortable(Consumer consumer, ItemDefinition cell, ItemDefinition component) { - appmekRecipe( - consumer, - MEGACells.makeId("cells/portable/" + cell.id().getPath()), + private void chemPortable(Consumer writer, ItemDefinition cell, ItemDefinition component) { + MEGACells.PLATFORM.addIntegrationRecipe( + writer, ShapelessRecipeBuilder.shapeless(RecipeCategory.MISC, cell) .requires(AEBlocks.CHEST) .requires(component) @@ -127,10 +145,35 @@ private void chemPortable(Consumer consumer, ItemDefinition c .requires(AppMekItems.MEGA_CHEMICAL_CELL_HOUSING) .unlockedBy("has_mega_chemical_cell_housing", has(AppMekItems.MEGA_CHEMICAL_CELL_HOUSING)) .unlockedBy("has_" + component.id().getPath(), has(component)) - .unlockedBy("has_dense_energy_cell", has(AEBlocks.DENSE_ENERGY_CELL))); + .unlockedBy("has_dense_energy_cell", has(AEBlocks.DENSE_ENERGY_CELL)), + Addons.APPMEK, + MEGACells.makeId("cells/portable/" + cell.id().getPath())); + } + + private void sourceCell(Consumer writer, ItemDefinition cell, ItemDefinition component) { + MEGACells.PLATFORM.addIntegrationRecipe( + writer, + ShapelessRecipeBuilder.shapeless(RecipeCategory.MISC, cell) + .requires(ArsEngItems.MEGA_SOURCE_CELL_HOUSING) + .requires(component) + .unlockedBy("has_" + component.id().getPath(), has(component)) + .unlockedBy("has_mega_source_cell_housing", has(ArsEngItems.MEGA_SOURCE_CELL_HOUSING)), + Addons.ARSENG, + MEGACells.makeId("cells/standard/" + cell.id().getPath())); } - private void appmekRecipe(Consumer consumer, ResourceLocation id, RecipeBuilder builder) { - MEGACells.PLATFORM.addIntegrationRecipe(consumer, builder, Addons.APPMEK, id); + private void sourcePortable(Consumer writer, ItemDefinition cell, ItemDefinition component) { + MEGACells.PLATFORM.addIntegrationRecipe( + writer, + ShapelessRecipeBuilder.shapeless(RecipeCategory.MISC, cell) + .requires(AEBlocks.CHEST) + .requires(component) + .requires(AEBlocks.DENSE_ENERGY_CELL) + .requires(ArsEngItems.MEGA_SOURCE_CELL_HOUSING) + .unlockedBy("has_mega_source_cell_housing", has(ArsEngItems.MEGA_SOURCE_CELL_HOUSING)) + .unlockedBy("has_" + component.id().getPath(), has(component)) + .unlockedBy("has_dense_energy_cell", has(AEBlocks.DENSE_ENERGY_CELL)), + Addons.ARSENG, + MEGACells.makeId("cells/portable/" + cell.id().getPath())); } } diff --git a/forge/src/main/java/gripe/_90/megacells/forge/ForgePlatform.java b/forge/src/main/java/gripe/_90/megacells/forge/ForgePlatform.java index 7243502d..d80be08a 100644 --- a/forge/src/main/java/gripe/_90/megacells/forge/ForgePlatform.java +++ b/forge/src/main/java/gripe/_90/megacells/forge/ForgePlatform.java @@ -76,6 +76,8 @@ import gripe._90.megacells.definition.MEGAMenus; import gripe._90.megacells.integration.appmek.AppMekIntegration; import gripe._90.megacells.integration.appmek.AppMekItems; +import gripe._90.megacells.integration.arseng.ArsEngIntegration; +import gripe._90.megacells.integration.arseng.ArsEngItems; import gripe._90.megacells.misc.CompressionService; import gripe._90.megacells.misc.LavaTransformLogic; @@ -111,6 +113,10 @@ public void initItems() { if (isAddonLoaded(Addons.APPMEK)) { AppMekItems.init(); } + + if (isAddonLoaded(Addons.ARSENG)) { + ArsEngItems.init(); + } } @Override @@ -122,6 +128,10 @@ public List getAllCells() { cells.add(AppMekItems.RADIOACTIVE_CHEMICAL_CELL); } + if (isAddonLoaded(Addons.ARSENG)) { + cells.addAll(ArsEngItems.getCells()); + } + return cells; } @@ -133,6 +143,10 @@ public List getAllPortables() { portables.addAll(AppMekItems.getPortables()); } + if (isAddonLoaded(Addons.ARSENG)) { + portables.addAll(ArsEngItems.getPortables()); + } + return portables; } @@ -172,6 +186,10 @@ public void initUpgrades() { if (isAddonLoaded(Addons.APPMEK)) { event.enqueueWork(AppMekIntegration::initUpgrades); } + + if (isAddonLoaded(Addons.ARSENG)) { + event.enqueueWork(ArsEngIntegration::initUpgrades); + } }); } diff --git a/forge/src/main/java/gripe/_90/megacells/forge/MEGACellsForge.java b/forge/src/main/java/gripe/_90/megacells/forge/MEGACellsForge.java index a3df9ad1..d172fd1b 100644 --- a/forge/src/main/java/gripe/_90/megacells/forge/MEGACellsForge.java +++ b/forge/src/main/java/gripe/_90/megacells/forge/MEGACellsForge.java @@ -6,6 +6,7 @@ import gripe._90.megacells.MEGACells; import gripe._90.megacells.core.Addons; import gripe._90.megacells.integration.appmek.AppMekIntegration; +import gripe._90.megacells.integration.arseng.ArsEngIntegration; @Mod(MEGACells.MODID) public class MEGACellsForge { @@ -17,6 +18,10 @@ public MEGACellsForge() { AppMekIntegration.init(); } + if (MEGACells.PLATFORM.isAddonLoaded(Addons.ARSENG)) { + ArsEngIntegration.init(); + } + if (FMLEnvironment.dist.isClient()) { MEGACells.Client.initClient(); } diff --git a/forge/src/main/java/gripe/_90/megacells/integration/arseng/ArsEngIntegration.java b/forge/src/main/java/gripe/_90/megacells/integration/arseng/ArsEngIntegration.java new file mode 100644 index 00000000..0bfe8dd2 --- /dev/null +++ b/forge/src/main/java/gripe/_90/megacells/integration/arseng/ArsEngIntegration.java @@ -0,0 +1,33 @@ +package gripe._90.megacells.integration.arseng; + +import java.util.Collection; +import java.util.stream.Stream; + +import net.minecraftforge.fml.loading.FMLEnvironment; + +import appeng.api.client.StorageCellModels; +import appeng.api.upgrades.Upgrades; +import appeng.core.definitions.AEItems; +import appeng.core.localization.GuiText; + +import gripe._90.megacells.MEGACells; + +public class ArsEngIntegration { + public static void init() { + if (FMLEnvironment.dist.isClient()) { + Stream.of(ArsEngItems.getCells(), ArsEngItems.getPortables()) + .flatMap(Collection::stream) + .forEach(c -> + StorageCellModels.registerModel(c, MEGACells.makeId("block/drive/cells/mega_source_cell"))); + } + } + + public static void initUpgrades() { + ArsEngItems.getCells() + .forEach(cell -> Upgrades.add(AEItems.VOID_CARD, cell, 1, GuiText.StorageCells.getTranslationKey())); + ArsEngItems.getPortables().forEach(cell -> { + Upgrades.add(AEItems.ENERGY_CARD, cell, 2, GuiText.PortableCells.getTranslationKey()); + Upgrades.add(AEItems.VOID_CARD, cell, 1, GuiText.PortableCells.getTranslationKey()); + }); + } +} diff --git a/forge/src/main/java/gripe/_90/megacells/integration/arseng/ArsEngItems.java b/forge/src/main/java/gripe/_90/megacells/integration/arseng/ArsEngItems.java new file mode 100644 index 00000000..7b074ada --- /dev/null +++ b/forge/src/main/java/gripe/_90/megacells/integration/arseng/ArsEngItems.java @@ -0,0 +1,62 @@ +package gripe._90.megacells.integration.arseng; + +import java.util.List; + +import appeng.core.definitions.ItemDefinition; +import appeng.items.materials.MaterialItem; +import appeng.items.storage.StorageTier; +import appeng.items.tools.powered.AbstractPortableCell; + +import gripe._90.arseng.item.PortableSourceCellItem; +import gripe._90.arseng.item.SourceCellItem; +import gripe._90.megacells.MEGACells; +import gripe._90.megacells.definition.MEGAItems; + +public class ArsEngItems { + public static void init() { + MEGACells.LOGGER.info("Initialised Ars Énergistique integration."); + } + + public static final ItemDefinition MEGA_SOURCE_CELL_HOUSING = + MEGAItems.item("MEGA Source Cell Housing", "mega_source_cell_housing", MaterialItem::new); + + public static final ItemDefinition SOURCE_CELL_1M = cell(MEGAItems.TIER_1M); + public static final ItemDefinition SOURCE_CELL_4M = cell(MEGAItems.TIER_4M); + public static final ItemDefinition SOURCE_CELL_16M = cell(MEGAItems.TIER_16M); + public static final ItemDefinition SOURCE_CELL_64M = cell(MEGAItems.TIER_64M); + public static final ItemDefinition SOURCE_CELL_256M = cell(MEGAItems.TIER_256M); + + public static final ItemDefinition PORTABLE_SOURCE_CELL_1M = portable(MEGAItems.TIER_1M); + public static final ItemDefinition PORTABLE_SOURCE_CELL_4M = portable(MEGAItems.TIER_4M); + public static final ItemDefinition PORTABLE_SOURCE_CELL_16M = portable(MEGAItems.TIER_16M); + public static final ItemDefinition PORTABLE_SOURCE_CELL_64M = portable(MEGAItems.TIER_64M); + public static final ItemDefinition PORTABLE_SOURCE_CELL_256M = + portable(MEGAItems.TIER_256M); + + public static List> getCells() { + return List.of(SOURCE_CELL_1M, SOURCE_CELL_4M, SOURCE_CELL_16M, SOURCE_CELL_64M, SOURCE_CELL_256M); + } + + public static List> getPortables() { + return List.of( + PORTABLE_SOURCE_CELL_1M, + PORTABLE_SOURCE_CELL_4M, + PORTABLE_SOURCE_CELL_16M, + PORTABLE_SOURCE_CELL_64M, + PORTABLE_SOURCE_CELL_256M); + } + + private static ItemDefinition cell(StorageTier tier) { + return MEGAItems.item( + tier.namePrefix().toUpperCase() + " MEGA Source Storage Cell", + "source_storage_cell_" + tier.namePrefix(), + p -> new SourceCellItem(p, tier, MEGA_SOURCE_CELL_HOUSING)); + } + + private static ItemDefinition portable(StorageTier tier) { + return MEGAItems.item( + tier.namePrefix().toUpperCase() + " Portable Source Cell", + "portable_source_cell_" + tier.namePrefix(), + p -> new PortableSourceCellItem(p, tier)); + } +} diff --git a/forge/src/main/resources/assets/megacells/textures/block/drive/cells/mega_source_cell.png b/forge/src/main/resources/assets/megacells/textures/block/drive/cells/mega_source_cell.png new file mode 100644 index 00000000..2a3114d1 Binary files /dev/null and b/forge/src/main/resources/assets/megacells/textures/block/drive/cells/mega_source_cell.png differ diff --git a/forge/src/main/resources/assets/megacells/textures/item/cell/portable/portable_source_cell_16m.png b/forge/src/main/resources/assets/megacells/textures/item/cell/portable/portable_source_cell_16m.png new file mode 100644 index 00000000..7fa8026f Binary files /dev/null and b/forge/src/main/resources/assets/megacells/textures/item/cell/portable/portable_source_cell_16m.png differ diff --git a/forge/src/main/resources/assets/megacells/textures/item/cell/portable/portable_source_cell_1m.png b/forge/src/main/resources/assets/megacells/textures/item/cell/portable/portable_source_cell_1m.png new file mode 100644 index 00000000..942b2596 Binary files /dev/null and b/forge/src/main/resources/assets/megacells/textures/item/cell/portable/portable_source_cell_1m.png differ diff --git a/forge/src/main/resources/assets/megacells/textures/item/cell/portable/portable_source_cell_256m.png b/forge/src/main/resources/assets/megacells/textures/item/cell/portable/portable_source_cell_256m.png new file mode 100644 index 00000000..9b25fc2c Binary files /dev/null and b/forge/src/main/resources/assets/megacells/textures/item/cell/portable/portable_source_cell_256m.png differ diff --git a/forge/src/main/resources/assets/megacells/textures/item/cell/portable/portable_source_cell_4m.png b/forge/src/main/resources/assets/megacells/textures/item/cell/portable/portable_source_cell_4m.png new file mode 100644 index 00000000..ef6e929d Binary files /dev/null and b/forge/src/main/resources/assets/megacells/textures/item/cell/portable/portable_source_cell_4m.png differ diff --git a/forge/src/main/resources/assets/megacells/textures/item/cell/portable/portable_source_cell_64m.png b/forge/src/main/resources/assets/megacells/textures/item/cell/portable/portable_source_cell_64m.png new file mode 100644 index 00000000..aed77988 Binary files /dev/null and b/forge/src/main/resources/assets/megacells/textures/item/cell/portable/portable_source_cell_64m.png differ diff --git a/forge/src/main/resources/assets/megacells/textures/item/cell/standard/source_storage_cell_16m.png b/forge/src/main/resources/assets/megacells/textures/item/cell/standard/source_storage_cell_16m.png new file mode 100644 index 00000000..b276fdee Binary files /dev/null and b/forge/src/main/resources/assets/megacells/textures/item/cell/standard/source_storage_cell_16m.png differ diff --git a/forge/src/main/resources/assets/megacells/textures/item/cell/standard/source_storage_cell_1m.png b/forge/src/main/resources/assets/megacells/textures/item/cell/standard/source_storage_cell_1m.png new file mode 100644 index 00000000..86239cba Binary files /dev/null and b/forge/src/main/resources/assets/megacells/textures/item/cell/standard/source_storage_cell_1m.png differ diff --git a/forge/src/main/resources/assets/megacells/textures/item/cell/standard/source_storage_cell_256m.png b/forge/src/main/resources/assets/megacells/textures/item/cell/standard/source_storage_cell_256m.png new file mode 100644 index 00000000..efb08cb9 Binary files /dev/null and b/forge/src/main/resources/assets/megacells/textures/item/cell/standard/source_storage_cell_256m.png differ diff --git a/forge/src/main/resources/assets/megacells/textures/item/cell/standard/source_storage_cell_4m.png b/forge/src/main/resources/assets/megacells/textures/item/cell/standard/source_storage_cell_4m.png new file mode 100644 index 00000000..5d9f7a02 Binary files /dev/null and b/forge/src/main/resources/assets/megacells/textures/item/cell/standard/source_storage_cell_4m.png differ diff --git a/forge/src/main/resources/assets/megacells/textures/item/cell/standard/source_storage_cell_64m.png b/forge/src/main/resources/assets/megacells/textures/item/cell/standard/source_storage_cell_64m.png new file mode 100644 index 00000000..6ff40976 Binary files /dev/null and b/forge/src/main/resources/assets/megacells/textures/item/cell/standard/source_storage_cell_64m.png differ diff --git a/forge/src/main/resources/assets/megacells/textures/item/mega_source_cell_housing.png b/forge/src/main/resources/assets/megacells/textures/item/mega_source_cell_housing.png new file mode 100644 index 00000000..62476dc8 Binary files /dev/null and b/forge/src/main/resources/assets/megacells/textures/item/mega_source_cell_housing.png differ diff --git a/forge/src/main/resources/data/arseng/recipes/mega_source_cell_housing.json b/forge/src/main/resources/data/arseng/recipes/mega_source_cell_housing.json new file mode 100644 index 00000000..b22a1f1b --- /dev/null +++ b/forge/src/main/resources/data/arseng/recipes/mega_source_cell_housing.json @@ -0,0 +1,52 @@ +{ + "type": "forge:conditional", + "recipes": [ + { + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "arseng" + } + ], + "recipe": { + "type": "ars_nouveau:enchanting_apparatus", + "keepNbtOfReagent": false, + "output": { + "item": "megacells:mega_source_cell_housing" + }, + "pedestalItems": [ + { + "item": "ars_nouveau:manipulation_essence" + }, + { + "item": "ars_nouveau:manipulation_essence" + }, + { + "item": "ars_nouveau:manipulation_essence" + }, + { + "item": "ars_nouveau:source_gem_block" + }, + { + "item": "ars_nouveau:source_gem_block" + }, + { + "item": "megacells:sky_steel_ingot" + }, + { + "item": "megacells:sky_steel_ingot" + }, + { + "item": "megacells:sky_steel_ingot" + } + ], + "reagent": [ + { + "item": "arseng:source_cell_housing" + } + ], + "sourceCost": 2000 + } + } + ] +} diff --git a/settings.gradle.kts b/settings.gradle.kts index a58248f1..bb1cf773 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -58,6 +58,14 @@ dependencyResolutionManagement { library("appmek", "maven.modrinth", "applied-mekanistics").versionRef("appmek") library("mekanism", "mekanism", "Mekanism").version("$minecraftVersion-10.4.0.14") + // Ars Énergistique + version("arseng", "1.1.5") + library("arseng", "maven.modrinth", "ars-energistique").versionRef("arseng") + + library("arsnouveau", "com.hollingsworth.ars_nouveau", "ars_nouveau-$minecraftVersion").version("4.8.3.135") + library("geckolib", "software.bernie.geckolib", "geckolib-forge-$minecraftVersion").version("4.2.1") + library("mixinextras", "io.github.llamalad7", "mixinextras-forge").version("0.2.1") + // Runtime mods version("jei", "15.2.0.23") library("jei-fabric", "mezz.jei", "jei-$minecraftVersion-fabric").versionRef("jei")