From a96089aeee70d44c0e47777a67a2ab48ec74d9a1 Mon Sep 17 00:00:00 2001 From: 90 Date: Sun, 14 Jul 2024 14:52:49 +0100 Subject: [PATCH] Add back chest/drive cell models --- .../java/gripe/_90/megacells/MEGACells.java | 29 ++++++++++++------- .../_90/megacells/definition/MEGAItems.java | 27 +++++++++++++---- .../megacells/misc/LavaTransformLogic.java | 14 ++++++--- 3 files changed, 50 insertions(+), 20 deletions(-) diff --git a/src/main/java/gripe/_90/megacells/MEGACells.java b/src/main/java/gripe/_90/megacells/MEGACells.java index ba3f5f9a..df31b525 100644 --- a/src/main/java/gripe/_90/megacells/MEGACells.java +++ b/src/main/java/gripe/_90/megacells/MEGACells.java @@ -38,6 +38,7 @@ import net.neoforged.neoforge.event.server.ServerStartedEvent; import appeng.api.AECapabilities; +import appeng.api.client.StorageCellModels; import appeng.api.features.HotkeyAction; import appeng.api.implementations.items.IAEItemPowerStorage; import appeng.api.networking.GridServices; @@ -77,7 +78,6 @@ import gripe._90.megacells.menu.MEGAPatternProviderMenu; import gripe._90.megacells.misc.CompressionService; import gripe._90.megacells.misc.DecompressionService; -import gripe._90.megacells.misc.LavaTransformLogic; @Mod(MEGACells.MODID) public class MEGACells { @@ -93,11 +93,10 @@ public MEGACells(ModContainer container, IEventBus modEventBus) { modEventBus.addListener(MEGACells::initUpgrades); modEventBus.addListener(MEGACells::initStorageCells); - modEventBus.addListener(MEGACells::initVillagerTrades); modEventBus.addListener(MEGACells::initCapabilities); + modEventBus.addListener(MEGACells::initVillagerTrades); initCompression(); - initLavaTransform(); container.registerConfig(ModConfig.Type.COMMON, MEGAConfig.SPEC); @@ -223,13 +222,6 @@ private static void initCompression() { GridServices.register(DecompressionService.class, DecompressionService.class); } - private static void initLavaTransform() { - NeoForge.EVENT_BUS.addListener((ServerStartedEvent event) -> LavaTransformLogic.clearCache()); - NeoForge.EVENT_BUS.addListener((OnDatapackSyncEvent event) -> { - if (event.getPlayer() == null) LavaTransformLogic.clearCache(); - }); - } - @SuppressWarnings("UnstableApiUsage") private static void initCapabilities(RegisterCapabilitiesEvent event) { for (var type : MEGABlockEntities.DR.getEntries()) { @@ -269,6 +261,7 @@ private static void init(IEventBus modEventBus) { modEventBus.addListener(Client::initScreens); modEventBus.addListener(Client::initCraftingUnitModels); modEventBus.addListener(Client::initEnergyCellProps); + modEventBus.addListener(Client::initStorageCellModels); modEventBus.addListener(Client::initItemColours); } @@ -313,6 +306,22 @@ private static void initEnergyCellProps(FMLClientSetupEvent event) { })); } + private static void initStorageCellModels(FMLClientSetupEvent event) { + event.enqueueWork(() -> { + var modelPrefix = "block/drive/cells/"; + + for (var cell : MEGAItems.getAllCells()) { + StorageCellModels.registerModel( + cell.item(), + makeId(modelPrefix + cell.tier().namePrefix() + "_" + cell.keyType() + "_cell")); + } + + StorageCellModels.registerModel( + MEGAItems.BULK_ITEM_CELL, + makeId(modelPrefix + MEGAItems.BULK_ITEM_CELL.id().getPath())); + }); + } + private static void initItemColours(RegisterColorHandlersEvent.Item event) { var standardCells = new ArrayList(); standardCells.addAll(MEGAItems.getItemCells()); diff --git a/src/main/java/gripe/_90/megacells/definition/MEGAItems.java b/src/main/java/gripe/_90/megacells/definition/MEGAItems.java index ca6670f8..28997338 100644 --- a/src/main/java/gripe/_90/megacells/definition/MEGAItems.java +++ b/src/main/java/gripe/_90/megacells/definition/MEGAItems.java @@ -39,11 +39,16 @@ public final class MEGAItems { public static final DeferredRegister.Items DR = DeferredRegister.createItems(MEGACells.MODID); private static final List> ITEMS = new ArrayList<>(); + private static final List CELLS = new ArrayList<>(); public static List> getItems() { return Collections.unmodifiableList(ITEMS); } + public static List getAllCells() { + return Collections.unmodifiableList(CELLS); + } + public static final ItemDefinition SKY_STEEL_INGOT = item("Sky Steel Ingot", "sky_steel_ingot", p -> new MaterialItem(p.fireResistant())); public static final ItemDefinition SKY_BRONZE_INGOT = @@ -125,11 +130,11 @@ public static List> getItems() { DecompressionModulePart.class, DecompressionModulePart::new); - public static List> getItemCells() { + public static List> getItemCells() { return List.of(ITEM_CELL_1M, ITEM_CELL_4M, ITEM_CELL_16M, ITEM_CELL_64M, ITEM_CELL_256M); } - public static List> getFluidCells() { + public static List> getFluidCells() { return List.of(FLUID_CELL_1M, FLUID_CELL_4M, FLUID_CELL_16M, FLUID_CELL_64M, FLUID_CELL_256M); } @@ -164,7 +169,7 @@ private static ItemDefinition component(int mb) { } private static ItemDefinition itemCell(StorageTier tier) { - return item( + var cell = item( tier.namePrefix().toUpperCase() + " MEGA Item Storage Cell", "item_storage_cell_" + tier.namePrefix(), p -> new BasicStorageCell( @@ -176,10 +181,12 @@ private static ItemDefinition itemCell(StorageTier tier) { tier.bytes() / 128, 63, AEKeyType.items())); + CELLS.add(new CellDefinition(cell, tier, "item")); + return cell; } private static ItemDefinition fluidCell(StorageTier tier) { - return item( + var cell = item( tier.namePrefix().toUpperCase() + " MEGA Fluid Storage Cell", "fluid_storage_cell_" + tier.namePrefix(), p -> new BasicStorageCell( @@ -191,21 +198,27 @@ private static ItemDefinition fluidCell(StorageTier tier) { tier.bytes() / 128, 18, AEKeyType.fluids())); + CELLS.add(new CellDefinition(cell, tier, "fluid")); + return cell; } private static ItemDefinition itemPortable(StorageTier tier) { - return item( + var cell = item( tier.namePrefix().toUpperCase() + " Portable Item Cell", "portable_item_cell_" + tier.namePrefix(), p -> new MEGAPortableCell(p, tier, AEKeyType.items(), MEStorageMenu.PORTABLE_ITEM_CELL_TYPE, 0x80caff)); + CELLS.add(new CellDefinition(cell, tier, "item")); + return cell; } private static ItemDefinition fluidPortable(StorageTier tier) { - return item( + var cell = item( tier.namePrefix().toUpperCase() + " Portable Fluid Cell", "portable_fluid_cell_" + tier.namePrefix(), p -> new MEGAPortableCell( p, tier, AEKeyType.fluids(), MEStorageMenu.PORTABLE_FLUID_CELL_TYPE, 0x80caff)); + CELLS.add(new CellDefinition(cell, tier, "fluid")); + return cell; } private static ItemDefinition> part( @@ -220,4 +233,6 @@ public static ItemDefinition item( ITEMS.add(definition); return definition; } + + public record CellDefinition(ItemDefinition item, StorageTier tier, String keyType) {} } diff --git a/src/main/java/gripe/_90/megacells/misc/LavaTransformLogic.java b/src/main/java/gripe/_90/megacells/misc/LavaTransformLogic.java index 0e6b54e4..982f4b60 100644 --- a/src/main/java/gripe/_90/megacells/misc/LavaTransformLogic.java +++ b/src/main/java/gripe/_90/megacells/misc/LavaTransformLogic.java @@ -8,12 +8,22 @@ import net.minecraft.world.item.Item; import net.minecraft.world.level.Level; import net.minecraft.world.phys.AABB; +import net.neoforged.neoforge.common.NeoForge; +import net.neoforged.neoforge.event.OnDatapackSyncEvent; +import net.neoforged.neoforge.event.server.ServerStartedEvent; import appeng.recipes.transform.TransformRecipe; public final class LavaTransformLogic { private static final Set lavaCache = new HashSet<>(); + static { + NeoForge.EVENT_BUS.addListener((ServerStartedEvent event) -> lavaCache.clear()); + NeoForge.EVENT_BUS.addListener((OnDatapackSyncEvent event) -> { + if (event.getPlayer() == null) lavaCache.clear(); + }); + } + public static boolean canTransformInLava(ItemEntity entity) { return getLavaTransformableItems(entity.level()) .contains(entity.getItem().getItem()); @@ -68,8 +78,4 @@ private static Set getLavaTransformableItems(Level level) { return lavaCache; } - - public static void clearCache() { - lavaCache.clear(); - } }