From b7eab022fb9abcca891e2f8895e88b6255088954 Mon Sep 17 00:00:00 2001 From: Aleksey Date: Fri, 28 May 2021 15:20:03 +0300 Subject: [PATCH] Update Base Registry, Chests and Signs render fix --- gradle.properties | 2 +- .../java/ru/bclib/client/BCLibClient.java | 13 ++++ .../ru/bclib/registry/BaseBlockEntities.java | 60 +++++-------------- .../java/ru/bclib/registry/BaseRegistry.java | 33 +++++++--- .../ru/bclib/registry/BlocksRegistry.java | 2 +- .../java/ru/bclib/registry/ItemsRegistry.java | 4 +- 6 files changed, 57 insertions(+), 57 deletions(-) diff --git a/gradle.properties b/gradle.properties index aed0dce4..16ce5495 100644 --- a/gradle.properties +++ b/gradle.properties @@ -8,7 +8,7 @@ yarn_mappings=6 loader_version=0.11.3 # Mod Properties -mod_version = 0.1.11 +mod_version = 0.1.12 maven_group = ru.bclib archives_base_name = bclib diff --git a/src/main/java/ru/bclib/client/BCLibClient.java b/src/main/java/ru/bclib/client/BCLibClient.java index e25387e5..7ad11d5f 100644 --- a/src/main/java/ru/bclib/client/BCLibClient.java +++ b/src/main/java/ru/bclib/client/BCLibClient.java @@ -1,11 +1,24 @@ package ru.bclib.client; import net.fabricmc.api.ClientModInitializer; +import ru.bclib.blocks.BaseChestBlock; +import ru.bclib.blocks.BaseSignBlock; +import ru.bclib.client.render.BaseChestBlockEntityRenderer; +import ru.bclib.client.render.BaseSignBlockEntityRenderer; +import ru.bclib.registry.BaseBlockEntities; import ru.bclib.registry.BaseBlockEntityRenders; +import java.util.Arrays; + public class BCLibClient implements ClientModInitializer { @Override public void onInitializeClient() { BaseBlockEntityRenders.register(); + Arrays.stream(BaseBlockEntities.getChests()).forEach(chest -> { + BaseChestBlockEntityRenderer.registerRenderLayer((BaseChestBlock) chest); + }); + Arrays.stream(BaseBlockEntities.getSigns()).forEach(sign -> { + BaseSignBlockEntityRenderer.registerRenderLayer((BaseSignBlock) sign); + }); } } diff --git a/src/main/java/ru/bclib/registry/BaseBlockEntities.java b/src/main/java/ru/bclib/registry/BaseBlockEntities.java index 232680f6..bbdcec44 100644 --- a/src/main/java/ru/bclib/registry/BaseBlockEntities.java +++ b/src/main/java/ru/bclib/registry/BaseBlockEntities.java @@ -1,9 +1,5 @@ package ru.bclib.registry; -import java.util.List; - -import com.google.common.collect.Lists; - import net.minecraft.core.Registry; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.item.BlockItem; @@ -36,55 +32,27 @@ public class BaseBlockEntities { public static void register() {} - private static Block[] getChests() { - List result = Lists.newArrayList(); - BaseRegistry.getModBlocks().forEach((item) -> { - if (item instanceof BlockItem) { - Block block = ((BlockItem) item).getBlock(); - if (block instanceof BaseChestBlock) { - result.add(block); - } - } - }); - return result.toArray(new Block[] {}); + public static Block[] getChests() { + return BaseRegistry.getRegisteredBlocks().values().stream() + .filter(item -> item instanceof BlockItem && ((BlockItem) item).getBlock() instanceof BaseChestBlock) + .map(item -> ((BlockItem) item).getBlock()).toArray(Block[]::new); } private static Block[] getBarrels() { - List result = Lists.newArrayList(); - BaseRegistry.getModBlocks().forEach((item) -> { - if (item instanceof BlockItem) { - Block block = ((BlockItem) item).getBlock(); - if (block instanceof BaseBarrelBlock) { - result.add(block); - } - } - }); - return result.toArray(new Block[] {}); + return BaseRegistry.getRegisteredBlocks().values().stream() + .filter(item -> item instanceof BlockItem && ((BlockItem) item).getBlock() instanceof BaseBarrelBlock) + .map(item -> ((BlockItem) item).getBlock()).toArray(Block[]::new); } - private static Block[] getSigns() { - List result = Lists.newArrayList(); - BaseRegistry.getModBlocks().forEach((item) -> { - if (item instanceof BlockItem) { - Block block = ((BlockItem) item).getBlock(); - if (block instanceof BaseSignBlock) { - result.add(block); - } - } - }); - return result.toArray(new Block[] {}); + public static Block[] getSigns() { + return BaseRegistry.getRegisteredBlocks().values().stream() + .filter(item -> item instanceof BlockItem && ((BlockItem) item).getBlock() instanceof BaseSignBlock) + .map(item -> ((BlockItem) item).getBlock()).toArray(Block[]::new); } private static Block[] getFurnaces() { - List result = Lists.newArrayList(); - BaseRegistry.getModBlocks().forEach((item) -> { - if (item instanceof BlockItem) { - Block block = ((BlockItem) item).getBlock(); - if (block instanceof BaseFurnaceBlock) { - result.add(block); - } - } - }); - return result.toArray(new Block[] {}); + return BaseRegistry.getRegisteredBlocks().values().stream() + .filter(item -> item instanceof BlockItem && ((BlockItem) item).getBlock() instanceof BaseFurnaceBlock) + .map(item -> ((BlockItem) item).getBlock()).toArray(Block[]::new); } } diff --git a/src/main/java/ru/bclib/registry/BaseRegistry.java b/src/main/java/ru/bclib/registry/BaseRegistry.java index ae3dfe37..e1464ad3 100644 --- a/src/main/java/ru/bclib/registry/BaseRegistry.java +++ b/src/main/java/ru/bclib/registry/BaseRegistry.java @@ -1,6 +1,7 @@ package ru.bclib.registry; import com.google.common.collect.Lists; +import com.google.common.collect.Maps; import net.fabricmc.fabric.api.item.v1.FabricItemSettings; import net.minecraft.core.Registry; import net.minecraft.resources.ResourceLocation; @@ -8,24 +9,42 @@ import net.minecraft.world.item.*; import ru.bclib.BCLib; import java.util.List; +import java.util.Map; public abstract class BaseRegistry { private static final List> REGISTRIES = Lists.newArrayList(); + private static final Map> MOD_BLOCKS = Maps.newHashMap(); + private static final Map> MOD_ITEMS = Maps.newHashMap(); - protected static final List MOD_BLOCKS = Lists.newArrayList(); - protected static final List MOD_ITEMS = Lists.newArrayList(); - - public static List getModBlocks() { + public static Map> getRegisteredBlocks() { return MOD_BLOCKS; } - public static List getModItems() { + public static Map> getRegisteredItems() { return MOD_ITEMS; } + public static List getModBlocks(String modId) { + if (MOD_BLOCKS.containsKey(modId)) { + return MOD_BLOCKS.get(modId); + } + List modBlocks = Lists.newArrayList(); + MOD_BLOCKS.put(modId, modBlocks); + return modBlocks; + } + + public static List getModItems(String modId) { + if (MOD_ITEMS.containsKey(modId)) { + return MOD_ITEMS.get(modId); + } + List modBlocks = Lists.newArrayList(); + MOD_ITEMS.put(modId, modBlocks); + return modBlocks; + } + public static void register() { - REGISTRIES.forEach(BaseRegistry::registerDependency); + REGISTRIES.forEach(BaseRegistry::registerInternal); } protected final CreativeModeTab creativeTab; @@ -57,5 +76,5 @@ public abstract class BaseRegistry { return (FabricItemSettings) properties.tab(creativeTab); } - private void registerDependency() {} + private void registerInternal() {} } diff --git a/src/main/java/ru/bclib/registry/BlocksRegistry.java b/src/main/java/ru/bclib/registry/BlocksRegistry.java index 7a75daa4..bd663f50 100644 --- a/src/main/java/ru/bclib/registry/BlocksRegistry.java +++ b/src/main/java/ru/bclib/registry/BlocksRegistry.java @@ -43,7 +43,7 @@ public abstract class BlocksRegistry extends BaseRegistry { } public Item registerBlockItem(ResourceLocation id, Item item) { - registerItem(id, item, BaseRegistry.MOD_BLOCKS); + registerItem(id, item, BaseRegistry.getModBlocks(id.getNamespace())); return item; } } diff --git a/src/main/java/ru/bclib/registry/ItemsRegistry.java b/src/main/java/ru/bclib/registry/ItemsRegistry.java index 0a81d2b6..05568a9f 100644 --- a/src/main/java/ru/bclib/registry/ItemsRegistry.java +++ b/src/main/java/ru/bclib/registry/ItemsRegistry.java @@ -38,13 +38,13 @@ public abstract class ItemsRegistry extends BaseRegistry { @Override public Item register(ResourceLocation itemId, Item item) { - registerItem(itemId, item, BaseRegistry.MOD_ITEMS); + registerItem(itemId, item, BaseRegistry.getModItems(itemId.getNamespace())); return item; } public TieredItem registerTool(String name, TieredItem item) { ResourceLocation id = createModId(name); - registerItem(id, item, BaseRegistry.MOD_ITEMS); + registerItem(id, item, BaseRegistry.getModItems(id.getNamespace())); if (item instanceof ShovelItem) { TagHelper.addTag((Tag.Named) FabricToolTags.SHOVELS, item);