From 42fd900838c41bc66011358688891baf827e5fe2 Mon Sep 17 00:00:00 2001 From: Xel'Bayria <12866666+Xelbayria@users.noreply.github.com> Date: Sat, 30 Nov 2024 02:33:58 -0700 Subject: [PATCH] StorageDrawersModule: Fixed the crash via #702 --- .../storagedrawers/ModDrawersGeometry.java | 80 +++++++++++-------- .../storagedrawers/StorageDrawersModule.java | 35 +++----- 2 files changed, 55 insertions(+), 60 deletions(-) diff --git a/fabric/src/main/java/net/mehvahdjukaar/every_compat/modules/fabric/storagedrawers/ModDrawersGeometry.java b/fabric/src/main/java/net/mehvahdjukaar/every_compat/modules/fabric/storagedrawers/ModDrawersGeometry.java index 6f066822e..297ee85de 100644 --- a/fabric/src/main/java/net/mehvahdjukaar/every_compat/modules/fabric/storagedrawers/ModDrawersGeometry.java +++ b/fabric/src/main/java/net/mehvahdjukaar/every_compat/modules/fabric/storagedrawers/ModDrawersGeometry.java @@ -4,29 +4,26 @@ import com.jaquadro.minecraft.storagedrawers.block.BlockCompDrawers; import com.jaquadro.minecraft.storagedrawers.block.BlockDrawers; import com.jaquadro.minecraft.storagedrawers.client.model.DrawerModelGeometry; -import com.jaquadro.minecraft.storagedrawers.core.ModBlocks; +import net.mehvahdjukaar.every_compat.EveryCompat; import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.block.model.BlockModel; import net.minecraft.resources.ResourceLocation; -import net.minecraft.world.phys.AABB; -import org.joml.Vector3f; -import net.minecraft.client.Minecraft; -import net.minecraft.client.renderer.block.model.BlockElement; -import net.minecraft.client.renderer.block.model.BlockModel; -import net.minecraft.resources.ResourceLocation; import net.minecraft.server.packs.resources.Resource; +import net.minecraft.server.packs.resources.ResourceManager; import net.minecraft.world.phys.AABB; import org.apache.commons.io.IOUtils; import org.joml.Vector3f; + import java.io.IOException; import java.io.InputStreamReader; import java.io.Reader; +import java.lang.reflect.Method; import java.nio.charset.StandardCharsets; public class ModDrawersGeometry { private static boolean geometryDataLoaded = false; - public static void loadGeometryData(StorageDrawersModule module) { + public static void loadGeometryData(StorageDrawersModule module, ResourceManager manager) { if (geometryDataLoaded) return; @@ -35,65 +32,75 @@ public static void loadGeometryData(StorageDrawersModule module) { populateGeometryData(ModConstants.loc("models/block/geometry/full_drawers_icon_area_1.json"), ModConstants.loc("models/block/geometry/full_drawers_count_area_1.json"), ModConstants.loc("models/block/geometry/full_drawers_ind_area_1.json"), - ModConstants.loc("models/block/geometry/full_drawers_indbase_area_1.json"), - module.getDrawersOfTypeAndSizeAndDepth(BlockDrawers.class, 1, false).toArray(BlockDrawers[]::new)); + ModConstants.loc("models/block/geometry/full_drawers_indbase_area_1.json"), manager, + module.getDrawersOfTypeAndSizeAndDepth(BlockDrawers.class, 1, false).toArray(BlockDrawers[]::new) + ); populateGeometryData(ModConstants.loc("models/block/geometry/full_drawers_icon_area_2.json"), ModConstants.loc("models/block/geometry/full_drawers_count_area_2.json"), ModConstants.loc("models/block/geometry/full_drawers_ind_area_2.json"), - ModConstants.loc("models/block/geometry/full_drawers_indbase_area_2.json"), - module.getDrawersOfTypeAndSizeAndDepth(BlockDrawers.class, 2, false).toArray(BlockDrawers[]::new)); + ModConstants.loc("models/block/geometry/full_drawers_indbase_area_2.json"), manager, + module.getDrawersOfTypeAndSizeAndDepth(BlockDrawers.class, 2, false).toArray(BlockDrawers[]::new) + ); populateGeometryData(ModConstants.loc("models/block/geometry/full_drawers_icon_area_4.json"), ModConstants.loc("models/block/geometry/full_drawers_count_area_4.json"), ModConstants.loc("models/block/geometry/full_drawers_ind_area_4.json"), - ModConstants.loc("models/block/geometry/full_drawers_indbase_area_4.json"), - module.getDrawersOfTypeAndSizeAndDepth(BlockDrawers.class, 4, false).toArray(BlockDrawers[]::new)); + ModConstants.loc("models/block/geometry/full_drawers_indbase_area_4.json"), manager, + module.getDrawersOfTypeAndSizeAndDepth(BlockDrawers.class, 4, false).toArray(BlockDrawers[]::new) + ); populateGeometryData(ModConstants.loc("models/block/geometry/half_drawers_icon_area_1.json"), ModConstants.loc("models/block/geometry/half_drawers_count_area_1.json"), ModConstants.loc("models/block/geometry/half_drawers_ind_area_1.json"), - ModConstants.loc("models/block/geometry/half_drawers_indbase_area_1.json"), - module.getDrawersOfTypeAndSizeAndDepth(BlockDrawers.class, 1, true).toArray(BlockDrawers[]::new)); + ModConstants.loc("models/block/geometry/half_drawers_indbase_area_1.json"), manager, + module.getDrawersOfTypeAndSizeAndDepth(BlockDrawers.class, 1, true).toArray(BlockDrawers[]::new) + ); populateGeometryData(ModConstants.loc("models/block/geometry/half_drawers_icon_area_2.json"), ModConstants.loc("models/block/geometry/half_drawers_count_area_2.json"), ModConstants.loc("models/block/geometry/half_drawers_ind_area_2.json"), - ModConstants.loc("models/block/geometry/half_drawers_indbase_area_2.json"), - module.getDrawersOfTypeAndSizeAndDepth(BlockDrawers.class, 2, true).toArray(BlockDrawers[]::new)); + ModConstants.loc("models/block/geometry/half_drawers_indbase_area_2.json"), manager, + module.getDrawersOfTypeAndSizeAndDepth(BlockDrawers.class, 2, true).toArray(BlockDrawers[]::new) + ); populateGeometryData(ModConstants.loc("models/block/geometry/half_drawers_icon_area_4.json"), ModConstants.loc("models/block/geometry/half_drawers_count_area_4.json"), ModConstants.loc("models/block/geometry/half_drawers_ind_area_4.json"), - ModConstants.loc("models/block/geometry/half_drawers_indbase_area_4.json"), - module.getDrawersOfTypeAndSizeAndDepth(BlockDrawers.class, 4, true).toArray(BlockDrawers[]::new)); + ModConstants.loc("models/block/geometry/half_drawers_indbase_area_4.json"), manager, + module.getDrawersOfTypeAndSizeAndDepth(BlockDrawers.class, 4, true).toArray(BlockDrawers[]::new) + ); populateGeometryData(ModConstants.loc("models/block/geometry/full_comp_drawers_icon_area_2.json"), ModConstants.loc("models/block/geometry/full_comp_drawers_count_area_2.json"), ModConstants.loc("models/block/geometry/full_comp_drawers_ind_area_2.json"), - ModConstants.loc("models/block/geometry/full_comp_drawers_indbase_area_2.json"), - module.getDrawersOfTypeAndSizeAndDepth(BlockCompDrawers.class, 2, false).toArray(BlockDrawers[]::new)); + ModConstants.loc("models/block/geometry/full_comp_drawers_indbase_area_2.json"), manager, + module.getDrawersOfTypeAndSizeAndDepth(BlockCompDrawers.class, 2, false).toArray(BlockDrawers[]::new) + ); populateGeometryData(ModConstants.loc("models/block/geometry/full_comp_drawers_icon_area_3.json"), ModConstants.loc("models/block/geometry/full_comp_drawers_count_area_3.json"), ModConstants.loc("models/block/geometry/full_comp_drawers_ind_area_3.json"), - ModConstants.loc("models/block/geometry/full_comp_drawers_indbase_area_3.json"), - module.getDrawersOfTypeAndSizeAndDepth(BlockCompDrawers.class, 3, false).toArray(BlockDrawers[]::new)); + ModConstants.loc("models/block/geometry/full_comp_drawers_indbase_area_3.json"), manager, + module.getDrawersOfTypeAndSizeAndDepth(BlockCompDrawers.class, 3, false).toArray(BlockDrawers[]::new) + ); populateGeometryData(ModConstants.loc("models/block/geometry/half_comp_drawers_icon_area_2.json"), ModConstants.loc("models/block/geometry/half_comp_drawers_count_area_2.json"), ModConstants.loc("models/block/geometry/half_comp_drawers_ind_area_2.json"), - ModConstants.loc("models/block/geometry/half_comp_drawers_indbase_area_2.json"), - module.getDrawersOfTypeAndSizeAndDepth(BlockCompDrawers.class, 2, true).toArray(BlockDrawers[]::new)); + ModConstants.loc("models/block/geometry/half_comp_drawers_indbase_area_2.json"), manager, + module.getDrawersOfTypeAndSizeAndDepth(BlockCompDrawers.class, 2, true).toArray(BlockDrawers[]::new) + ); populateGeometryData(ModConstants.loc("models/block/geometry/half_comp_drawers_icon_area_3.json"), ModConstants.loc("models/block/geometry/half_comp_drawers_count_area_3.json"), ModConstants.loc("models/block/geometry/half_comp_drawers_ind_area_3.json"), - ModConstants.loc("models/block/geometry/half_comp_drawers_indbase_area_3.json"), - module.getDrawersOfTypeAndSizeAndDepth(BlockCompDrawers.class, 3, true).toArray(BlockDrawers[]::new)); + ModConstants.loc("models/block/geometry/half_comp_drawers_indbase_area_3.json"), manager, + module.getDrawersOfTypeAndSizeAndDepth(BlockCompDrawers.class, 3, true).toArray(BlockDrawers[]::new) + ); } private static void populateGeometryData(ResourceLocation locationIcon, ResourceLocation locationCount, ResourceLocation locationInd, - ResourceLocation locationIndBase, + ResourceLocation locationIndBase, ResourceManager manager, BlockDrawers... blocks) { - BlockModel slotInfo = getBlockModel(locationIcon); - BlockModel countInfo = getBlockModel(locationCount); - BlockModel indInfo = getBlockModel(locationInd); - BlockModel indBaseInfo = getBlockModel(locationIndBase); + BlockModel slotInfo = getBlockModel(locationIcon, manager); + BlockModel countInfo = getBlockModel(locationCount, manager); + BlockModel indInfo = getBlockModel(locationInd, manager); + BlockModel indBaseInfo = getBlockModel(locationIndBase, manager); for (BlockDrawers block : blocks) { if (block == null) continue; @@ -121,11 +128,13 @@ private static void populateGeometryData(ResourceLocation locationIcon, } } - private static BlockModel getBlockModel(ResourceLocation location) { + private static BlockModel getBlockModel(ResourceLocation location, ResourceManager manager) { Resource iresource; Reader reader = null; try { - iresource = Minecraft.getInstance().getResourceManager().getResourceOrThrow(location); +// iresource = Minecraft.getInstance().getResourceManager().getResourceOrThrow(location); +// reader = new InputStreamReader(iresource.open(), StandardCharsets.UTF_8); + iresource = manager.getResourceOrThrow(location); reader = new InputStreamReader(iresource.open(), StandardCharsets.UTF_8); return BlockModel.fromStream(reader); } catch (IOException e) { @@ -134,4 +143,5 @@ private static BlockModel getBlockModel(ResourceLocation location) { IOUtils.closeQuietly(reader); } } + } \ No newline at end of file diff --git a/fabric/src/main/java/net/mehvahdjukaar/every_compat/modules/fabric/storagedrawers/StorageDrawersModule.java b/fabric/src/main/java/net/mehvahdjukaar/every_compat/modules/fabric/storagedrawers/StorageDrawersModule.java index ab5909ca3..d59abcb03 100644 --- a/fabric/src/main/java/net/mehvahdjukaar/every_compat/modules/fabric/storagedrawers/StorageDrawersModule.java +++ b/fabric/src/main/java/net/mehvahdjukaar/every_compat/modules/fabric/storagedrawers/StorageDrawersModule.java @@ -4,31 +4,19 @@ import com.jaquadro.minecraft.storagedrawers.block.BlockDrawers; import com.jaquadro.minecraft.storagedrawers.block.BlockStandardDrawers; import com.jaquadro.minecraft.storagedrawers.block.BlockTrim; -import com.jaquadro.minecraft.storagedrawers.block.tile.BlockEntityDrawers; -import com.jaquadro.minecraft.storagedrawers.block.tile.BlockEntityDrawersStandard; -import com.jaquadro.minecraft.storagedrawers.client.renderer.BlockEntityDrawersRenderer; import com.jaquadro.minecraft.storagedrawers.core.ModBlocks; -import net.fabricmc.api.EnvType; -import net.fabricmc.api.Environment; import net.mehvahdjukaar.every_compat.api.SimpleEntrySet; import net.mehvahdjukaar.every_compat.api.SimpleModule; import net.mehvahdjukaar.every_compat.dynamicpack.ClientDynamicResourcesHandler; -import net.mehvahdjukaar.moonlight.api.platform.ClientHelper; import net.mehvahdjukaar.moonlight.api.resources.textures.Palette; import net.mehvahdjukaar.moonlight.api.set.wood.WoodType; import net.mehvahdjukaar.moonlight.api.set.wood.WoodTypeRegistry; import net.mehvahdjukaar.moonlight.api.util.Utils; -import net.minecraft.core.BlockPos; import net.minecraft.core.registries.Registries; import net.minecraft.resources.ResourceLocation; import net.minecraft.server.packs.resources.ResourceManager; import net.minecraft.tags.BlockTags; import net.minecraft.world.level.block.Block; -import net.minecraft.world.level.block.entity.BlockEntity; -import net.minecraft.world.level.block.entity.BlockEntityType; -import net.minecraft.world.level.block.state.BlockBehaviour; -import net.minecraft.world.level.block.state.BlockState; -import org.jetbrains.annotations.NotNull; import java.util.Collection; import java.util.Objects; @@ -50,14 +38,12 @@ public StorageDrawersModule(String modId) { ResourceLocation tab = modRes(ModConstants.MOD_ID); FULL_DRAWERS_1 = SimpleEntrySet.builder(WoodType.class, "full_drawers_1", - ModBlocks.OAK_FULL_DRAWERS_1, () -> WoodTypeRegistry.OAK_TYPE, + getModBlock("oak_full_drawers_1", BlockStandardDrawers.class), () -> WoodTypeRegistry.OAK_TYPE, w -> new BlockStandardDrawers(1, false, Utils.copyPropertySafe(ModBlocks.OAK_FULL_DRAWERS_1.get())) ) .addTag(BlockTags.MINEABLE_WITH_AXE, Registries.BLOCK) .addTag(modRes("drawers"), Registries.BLOCK) .addTag(modRes("full_drawers"), Registries.BLOCK) - .addTag(modRes("full_drawers"), Registries.BLOCK) - .addTag(modRes("full_drawers"), Registries.ITEM) .addTag(modRes("drawers"), Registries.ITEM) .addTag(modRes("full_drawers"), Registries.ITEM) .setTabKey(tab) @@ -72,7 +58,7 @@ public StorageDrawersModule(String modId) { this.addEntry(FULL_DRAWERS_1); FULL_DRAWERS_2 = SimpleEntrySet.builder(WoodType.class, "full_drawers_2", - ModBlocks.OAK_FULL_DRAWERS_2, () -> WoodTypeRegistry.OAK_TYPE, + getModBlock("oak_full_drawers_2", BlockStandardDrawers.class), () -> WoodTypeRegistry.OAK_TYPE, w -> new BlockStandardDrawers(2, false, Utils.copyPropertySafe(ModBlocks.OAK_FULL_DRAWERS_2.get()))) .addTag(BlockTags.MINEABLE_WITH_AXE, Registries.BLOCK) .addTag(modRes("drawers"), Registries.BLOCK) @@ -91,7 +77,7 @@ public StorageDrawersModule(String modId) { this.addEntry(FULL_DRAWERS_2); FULL_DRAWERS_4 = SimpleEntrySet.builder(WoodType.class, "full_drawers_4", - ModBlocks.OAK_FULL_DRAWERS_4, () -> WoodTypeRegistry.OAK_TYPE, + getModBlock("oak_full_drawers_4", BlockStandardDrawers.class), () -> WoodTypeRegistry.OAK_TYPE, w -> new BlockStandardDrawers(4, false, Utils.copyPropertySafe(ModBlocks.OAK_FULL_DRAWERS_4.get()))) .addTag(BlockTags.MINEABLE_WITH_AXE, Registries.BLOCK) .addTag(modRes("drawers"), Registries.BLOCK) @@ -111,7 +97,7 @@ public StorageDrawersModule(String modId) { this.addEntry(FULL_DRAWERS_4); HALF_DRAWERS_1 = SimpleEntrySet.builder(WoodType.class, "half_drawers_1", - ModBlocks.OAK_HALF_DRAWERS_1, () -> WoodTypeRegistry.OAK_TYPE, + getModBlock("oak_half_drawers_1", BlockStandardDrawers.class), () -> WoodTypeRegistry.OAK_TYPE, w -> new BlockStandardDrawers(1, true, Utils.copyPropertySafe(ModBlocks.OAK_HALF_DRAWERS_1.get()))) .addTag(BlockTags.MINEABLE_WITH_AXE, Registries.BLOCK) .addTag(modRes("drawers"), Registries.BLOCK) @@ -132,7 +118,7 @@ public StorageDrawersModule(String modId) { this.addEntry(HALF_DRAWERS_1); HALF_DRAWERS_2 = SimpleEntrySet.builder(WoodType.class, "half_drawers_2", - ModBlocks.OAK_HALF_DRAWERS_2, () -> WoodTypeRegistry.OAK_TYPE, + getModBlock("oak_half_drawers_2", BlockStandardDrawers.class), () -> WoodTypeRegistry.OAK_TYPE, w -> new BlockStandardDrawers(2, true, Utils.copyPropertySafe(ModBlocks.OAK_HALF_DRAWERS_2.get()))) .addTag(BlockTags.MINEABLE_WITH_AXE, Registries.BLOCK) .addTag(modRes("drawers"), Registries.BLOCK) @@ -153,7 +139,7 @@ public StorageDrawersModule(String modId) { this.addEntry(HALF_DRAWERS_2); HALF_DRAWERS_4 = SimpleEntrySet.builder(WoodType.class, "half_drawers_4", - ModBlocks.OAK_HALF_DRAWERS_4, () -> WoodTypeRegistry.OAK_TYPE, + getModBlock("oak_half_drawers_4", BlockStandardDrawers.class), () -> WoodTypeRegistry.OAK_TYPE, w -> new BlockStandardDrawers(4, true, Utils.copyPropertySafe(ModBlocks.OAK_HALF_DRAWERS_4.get()))) .addTag(BlockTags.MINEABLE_WITH_AXE, Registries.BLOCK) .addTag(modRes("drawers"), Registries.BLOCK) @@ -174,7 +160,7 @@ public StorageDrawersModule(String modId) { this.addEntry(HALF_DRAWERS_4); TRIMS = SimpleEntrySet.builder(WoodType.class, "trim", - ModBlocks.OAK_TRIM, () -> WoodTypeRegistry.OAK_TYPE, + getModBlock("oak_trim", BlockTrim.class), () -> WoodTypeRegistry.OAK_TYPE, w -> new BlockTrim(Utils.copyPropertySafe(ModBlocks.OAK_TRIM.get()))) .addTag(BlockTags.MINEABLE_WITH_AXE, Registries.BLOCK) .setTabKey(tab) @@ -200,11 +186,10 @@ private void trimPalette(Palette p) { p.increaseUp(); } - @Override - public void onClientSetup() { - super.onClientSetup(); - ModDrawersGeometry.loadGeometryData(this); + public void addDynamicClientResources(ClientDynamicResourcesHandler handler, ResourceManager manager) { + super.addDynamicClientResources(handler, manager); + ModDrawersGeometry.loadGeometryData(this, manager); } private Stream getBlocksOfType(Class blockClass) {