diff --git a/src/main/java/ru/bclib/BCLib.java b/src/main/java/ru/bclib/BCLib.java index 94d02160..d47e82be 100644 --- a/src/main/java/ru/bclib/BCLib.java +++ b/src/main/java/ru/bclib/BCLib.java @@ -4,6 +4,8 @@ import net.fabricmc.api.EnvType; import net.fabricmc.api.ModInitializer; import net.fabricmc.loader.api.FabricLoader; import net.minecraft.resources.ResourceLocation; +import ru.bclib.registry.BaseBlockEntities; +import ru.bclib.registry.BaseRegistry; import ru.bclib.util.Logger; import ru.bclib.world.surface.BCLSurfaceBuilders; import ru.bclib.api.TagAPI; @@ -14,6 +16,8 @@ public class BCLib implements ModInitializer { @Override public void onInitialize() { + BaseRegistry.register(); + BaseBlockEntities.register(); BCLSurfaceBuilders.register(); TagAPI.init(); } diff --git a/src/main/java/ru/bclib/blocks/BaseTerrainBlock.java b/src/main/java/ru/bclib/blocks/BaseTerrainBlock.java index ae9be8dc..3b22173f 100644 --- a/src/main/java/ru/bclib/blocks/BaseTerrainBlock.java +++ b/src/main/java/ru/bclib/blocks/BaseTerrainBlock.java @@ -46,8 +46,8 @@ import ru.bclib.client.sound.BlockSounds; public class BaseTerrainBlock extends BaseBlock { private Block pathBlock; - public BaseTerrainBlock(MaterialColor color) { - super(FabricBlockSettings.copyOf(Blocks.END_STONE).materialColor(color).sound(BlockSounds.TERRAIN_SOUND).randomTicks()); + public BaseTerrainBlock(Block baseBlock, MaterialColor color) { + super(FabricBlockSettings.copyOf(baseBlock).materialColor(color).sound(BlockSounds.TERRAIN_SOUND).randomTicks()); } public void setPathBlock(Block roadBlock) { diff --git a/src/main/java/ru/bclib/blocks/TripleTerrainBlock.java b/src/main/java/ru/bclib/blocks/TripleTerrainBlock.java index a168b40b..de01c3f1 100644 --- a/src/main/java/ru/bclib/blocks/TripleTerrainBlock.java +++ b/src/main/java/ru/bclib/blocks/TripleTerrainBlock.java @@ -40,9 +40,9 @@ import ru.bclib.client.models.PatternsHelper; public class TripleTerrainBlock extends BaseTerrainBlock { public static final EnumProperty SHAPE = BlockProperties.TRIPLE_SHAPE; - public TripleTerrainBlock(MaterialColor color) { - super(color); - this.registerDefaultState(this.defaultBlockState().setValue(SHAPE, TripleShape.BOTTOM)); + public TripleTerrainBlock(Block baseBlock, MaterialColor color) { + super(baseBlock, color); + this.registerDefaultState(defaultBlockState().setValue(SHAPE, TripleShape.BOTTOM)); } @Override @@ -54,7 +54,7 @@ public class TripleTerrainBlock extends BaseTerrainBlock { public BlockState getStateForPlacement(BlockPlaceContext ctx) { Direction dir = ctx.getClickedFace(); TripleShape shape = dir == Direction.UP ? TripleShape.BOTTOM : dir == Direction.DOWN ? TripleShape.TOP : TripleShape.MIDDLE; - return this.defaultBlockState().setValue(SHAPE, shape); + return defaultBlockState().setValue(SHAPE, shape); } @Override diff --git a/src/main/java/ru/bclib/registry/BaseBlockEntities.java b/src/main/java/ru/bclib/registry/BaseBlockEntities.java index 9afc79fb..232680f6 100644 --- a/src/main/java/ru/bclib/registry/BaseBlockEntities.java +++ b/src/main/java/ru/bclib/registry/BaseBlockEntities.java @@ -21,22 +21,22 @@ import ru.bclib.blocks.BaseFurnaceBlock; import ru.bclib.blocks.BaseSignBlock; public class BaseBlockEntities { - public static final BlockEntityType CHEST = registerBlockEntity(BCLib.makeID("chest"), + public static final BlockEntityType CHEST = registerBlockEntityType(BCLib.makeID("chest"), BlockEntityType.Builder.of(BaseChestBlockEntity::new, getChests())); - public static final BlockEntityType BARREL = registerBlockEntity(BCLib.makeID("barrel"), + public static final BlockEntityType BARREL = registerBlockEntityType(BCLib.makeID("barrel"), BlockEntityType.Builder.of(BaseBarrelBlockEntity::new, getBarrels())); - public static final BlockEntityType SIGN = registerBlockEntity(BCLib.makeID("sign"), + public static final BlockEntityType SIGN = registerBlockEntityType(BCLib.makeID("sign"), BlockEntityType.Builder.of(BaseSignBlockEntity::new, getSigns())); - public static final BlockEntityType FURNACE = registerBlockEntity(BCLib.makeID("furnace"), + public static final BlockEntityType FURNACE = registerBlockEntityType(BCLib.makeID("furnace"), BlockEntityType.Builder.of(BaseFurnaceBlockEntity::new, getFurnaces())); - public static BlockEntityType registerBlockEntity(ResourceLocation blockId, BlockEntityType.Builder builder) { + public static BlockEntityType registerBlockEntityType(ResourceLocation blockId, BlockEntityType.Builder builder) { return Registry.register(Registry.BLOCK_ENTITY_TYPE, blockId, builder.build(null)); } public static void register() {} - static Block[] getChests() { + private static Block[] getChests() { List result = Lists.newArrayList(); BaseRegistry.getModBlocks().forEach((item) -> { if (item instanceof BlockItem) { @@ -48,8 +48,8 @@ public class BaseBlockEntities { }); return result.toArray(new Block[] {}); } - - static Block[] getBarrels() { + + private static Block[] getBarrels() { List result = Lists.newArrayList(); BaseRegistry.getModBlocks().forEach((item) -> { if (item instanceof BlockItem) { @@ -61,8 +61,8 @@ public class BaseBlockEntities { }); return result.toArray(new Block[] {}); } - - static Block[] getSigns() { + + private static Block[] getSigns() { List result = Lists.newArrayList(); BaseRegistry.getModBlocks().forEach((item) -> { if (item instanceof BlockItem) { @@ -74,8 +74,8 @@ public class BaseBlockEntities { }); return result.toArray(new Block[] {}); } - - static Block[] getFurnaces() { + + private static Block[] getFurnaces() { List result = Lists.newArrayList(); BaseRegistry.getModBlocks().forEach((item) -> { if (item instanceof BlockItem) { diff --git a/src/main/java/ru/bclib/registry/BaseRegistry.java b/src/main/java/ru/bclib/registry/BaseRegistry.java index 1a47fa56..ae3dfe37 100644 --- a/src/main/java/ru/bclib/registry/BaseRegistry.java +++ b/src/main/java/ru/bclib/registry/BaseRegistry.java @@ -5,15 +5,17 @@ import net.fabricmc.fabric.api.item.v1.FabricItemSettings; import net.minecraft.core.Registry; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.item.*; +import ru.bclib.BCLib; import java.util.List; public abstract class BaseRegistry { + + private static final List> REGISTRIES = Lists.newArrayList(); + protected static final List MOD_BLOCKS = Lists.newArrayList(); protected static final List MOD_ITEMS = Lists.newArrayList(); - public static void register() {} - public static List getModBlocks() { return MOD_BLOCKS; } @@ -22,21 +24,28 @@ public abstract class BaseRegistry { return MOD_ITEMS; } + public static void register() { + REGISTRIES.forEach(BaseRegistry::registerDependency); + } + protected final CreativeModeTab creativeTab; protected BaseRegistry(CreativeModeTab creativeTab) { this.creativeTab = creativeTab; + REGISTRIES.add(this); } - protected T register(String name, T obj) { + public T register(String name, T obj) { return register(createModId(name), obj); } - protected abstract T register(ResourceLocation objId, T obj); + public abstract T register(ResourceLocation objId, T obj); - protected abstract ResourceLocation createModId(String name); + public ResourceLocation createModId(String name) { + return BCLib.makeID(name); + } - protected void registerItem(ResourceLocation id, Item item, List registry) { + public void registerItem(ResourceLocation id, Item item, List registry) { if (item != Items.AIR) { Registry.register(Registry.ITEM, id, item); registry.add(item); @@ -47,4 +56,6 @@ public abstract class BaseRegistry { FabricItemSettings properties = new FabricItemSettings(); return (FabricItemSettings) properties.tab(creativeTab); } + + private void registerDependency() {} } diff --git a/src/main/java/ru/bclib/registry/ItemsRegistry.java b/src/main/java/ru/bclib/registry/ItemsRegistry.java index 8792d54d..0a81d2b6 100644 --- a/src/main/java/ru/bclib/registry/ItemsRegistry.java +++ b/src/main/java/ru/bclib/registry/ItemsRegistry.java @@ -38,18 +38,10 @@ public abstract class ItemsRegistry extends BaseRegistry { @Override public Item register(ResourceLocation itemId, Item item) { - if (item instanceof ArmorItem) { - return registerArmor(itemId, item); - } registerItem(itemId, item, BaseRegistry.MOD_ITEMS); return item; } - private Item registerArmor(ResourceLocation id, Item item) { - registerItem(id, item, BaseRegistry.MOD_ITEMS); - return item; - } - public TieredItem registerTool(String name, TieredItem item) { ResourceLocation id = createModId(name); registerItem(id, item, BaseRegistry.MOD_ITEMS);