diff --git a/src/main/java/ru/bclib/registry/BaseRegistry.java b/src/main/java/ru/bclib/registry/BaseRegistry.java index a6e985d8..8e61ebe7 100644 --- a/src/main/java/ru/bclib/registry/BaseRegistry.java +++ b/src/main/java/ru/bclib/registry/BaseRegistry.java @@ -3,12 +3,10 @@ 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; import net.minecraft.world.item.CreativeModeTab; import net.minecraft.world.item.Item; -import net.minecraft.world.item.Items; -import ru.bclib.BCLib; +import ru.bclib.config.PathConfig; import java.util.List; import java.util.Map; @@ -19,6 +17,24 @@ public abstract class BaseRegistry { private static final Map> MOD_ITEMS = Maps.newHashMap(); protected final CreativeModeTab creativeTab; + protected final PathConfig config; + + protected BaseRegistry(CreativeModeTab creativeTab, PathConfig config) { + this.creativeTab = creativeTab; + this.config = config; + REGISTRIES.add(this); + } + + public abstract T register(ResourceLocation objId, T obj); + + public abstract void registerItem(ResourceLocation id, Item item); + + public FabricItemSettings makeItemSettings() { + FabricItemSettings properties = new FabricItemSettings(); + return (FabricItemSettings) properties.tab(creativeTab); + } + + private void registerInternal() {} public static Map> getRegisteredBlocks() { return MOD_BLOCKS; @@ -49,33 +65,4 @@ public abstract class BaseRegistry { public static void register() { REGISTRIES.forEach(BaseRegistry::registerInternal); } - - protected BaseRegistry(CreativeModeTab creativeTab) { - this.creativeTab = creativeTab; - REGISTRIES.add(this); - } - - public T register(String name, T obj) { - return register(createModId(name), obj); - } - - public abstract T register(ResourceLocation objId, T obj); - - public ResourceLocation createModId(String name) { - return BCLib.makeID(name); - } - - public void registerItem(ResourceLocation id, Item item, List registry) { - if (item != Items.AIR) { - Registry.register(Registry.ITEM, id, item); - registry.add(item); - } - } - - public FabricItemSettings makeItemSettings() { - FabricItemSettings properties = new FabricItemSettings(); - return (FabricItemSettings) properties.tab(creativeTab); - } - - private void registerInternal() {} } diff --git a/src/main/java/ru/bclib/registry/BlockRegistry.java b/src/main/java/ru/bclib/registry/BlockRegistry.java index cdf44f64..f071ad0d 100644 --- a/src/main/java/ru/bclib/registry/BlockRegistry.java +++ b/src/main/java/ru/bclib/registry/BlockRegistry.java @@ -6,19 +6,25 @@ import net.minecraft.resources.ResourceLocation; import net.minecraft.world.item.BlockItem; import net.minecraft.world.item.CreativeModeTab; import net.minecraft.world.item.Item; +import net.minecraft.world.item.Items; import net.minecraft.world.level.block.Block; import ru.bclib.api.TagAPI; import ru.bclib.blocks.BaseLeavesBlock; import ru.bclib.blocks.FeatureSaplingBlock; +import ru.bclib.config.PathConfig; import ru.bclib.interfaces.CustomItemProvider; public class BlockRegistry extends BaseRegistry { - protected BlockRegistry(CreativeModeTab creativeTab) { - super(creativeTab); + public BlockRegistry(CreativeModeTab creativeTab, PathConfig config) { + super(creativeTab, config); } @Override public Block register(ResourceLocation id, Block block) { + if (!config.getBooleanRoot(id.getNamespace(), true)) { + return block; + } + BlockItem item = null; if (block instanceof CustomItemProvider) { item = ((CustomItemProvider) block).getCustomItem(id, makeItemSettings()); @@ -27,9 +33,7 @@ public class BlockRegistry extends BaseRegistry { item = new BlockItem(block, makeItemSettings()); } registerBlockItem(id, item); - if (block.defaultBlockState().getMaterial().isFlammable() && FlammableBlockRegistry.getDefaultInstance() - .get(block) - .getBurnChance() == 0) { + if (block.defaultBlockState().getMaterial().isFlammable() && FlammableBlockRegistry.getDefaultInstance().get(block).getBurnChance() == 0) { FlammableBlockRegistry.getDefaultInstance().add(block, 5, 5); } @@ -51,11 +55,22 @@ public class BlockRegistry extends BaseRegistry { } public Block registerBlockOnly(ResourceLocation id, Block block) { + if (!config.getBooleanRoot(id.getNamespace(), true)) { + return block; + } return Registry.register(Registry.BLOCK, id, block); } private Item registerBlockItem(ResourceLocation id, Item item) { - registerItem(id, item, BaseRegistry.getModBlocks(id.getNamespace())); + registerItem(id, item); return item; } + + @Override + public void registerItem(ResourceLocation id, Item item) { + if (item != null && item != Items.AIR) { + Registry.register(Registry.ITEM, id, item); + getModBlocks(id.getNamespace()).add(item); + } + } } diff --git a/src/main/java/ru/bclib/registry/ItemRegistry.java b/src/main/java/ru/bclib/registry/ItemRegistry.java index bc5be078..fddeacb4 100644 --- a/src/main/java/ru/bclib/registry/ItemRegistry.java +++ b/src/main/java/ru/bclib/registry/ItemRegistry.java @@ -3,6 +3,7 @@ package ru.bclib.registry; import net.fabricmc.fabric.api.tool.attribute.v1.FabricToolTags; import net.minecraft.core.BlockSource; import net.minecraft.core.Direction; +import net.minecraft.core.Registry; import net.minecraft.core.dispenser.DefaultDispenseItemBehavior; import net.minecraft.core.dispenser.ShearsDispenseItemBehavior; import net.minecraft.resources.ResourceLocation; @@ -16,43 +17,58 @@ import net.minecraft.world.food.FoodProperties; import net.minecraft.world.item.CreativeModeTab; import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.Items; import net.minecraft.world.item.ShovelItem; import net.minecraft.world.item.SpawnEggItem; import net.minecraft.world.item.SwordItem; import net.minecraft.world.level.block.DispenserBlock; import ru.bclib.api.TagAPI; +import ru.bclib.config.PathConfig; import ru.bclib.items.BaseDiscItem; import ru.bclib.items.BaseDrinkItem; -import ru.bclib.items.tool.BaseShearsItem; import ru.bclib.items.BaseSpawnEggItem; import ru.bclib.items.ModelProviderItem; import ru.bclib.items.tool.BaseAxeItem; import ru.bclib.items.tool.BaseHoeItem; import ru.bclib.items.tool.BasePickaxeItem; +import ru.bclib.items.tool.BaseShearsItem; public class ItemRegistry extends BaseRegistry { - - protected ItemRegistry(CreativeModeTab creativeTab) { - super(creativeTab); + public ItemRegistry(CreativeModeTab creativeTab, PathConfig config) { + super(creativeTab, config); } - public Item registerDisc(String name, int power, SoundEvent sound) { - return register(name, new BaseDiscItem(power, sound, makeItemSettings().stacksTo(1))); + public Item registerDisc(ResourceLocation itemId, int power, SoundEvent sound) { + BaseDiscItem item = new BaseDiscItem(power, sound, makeItemSettings().stacksTo(1)); + + if (!config.getBoolean("musicDiscs", itemId.getPath(), true)) { + return item; + } + + return register(itemId, new BaseDiscItem(power, sound, makeItemSettings().stacksTo(1))); } - public Item registerItem(String name) { - return register(name, new ModelProviderItem(makeItemSettings())); + public Item register(ResourceLocation itemId) { + return register(itemId, new ModelProviderItem(makeItemSettings())); } @Override public Item register(ResourceLocation itemId, Item item) { - registerItem(itemId, item, BaseRegistry.getModItems(itemId.getNamespace())); + if (!config.getBoolean("items", itemId.getPath(), true)) { + return item; + } + + registerItem(itemId, item); + return item; } - public Item registerTool(String name, Item item) { - ResourceLocation id = createModId(name); - registerItem(id, item, BaseRegistry.getModItems(id.getNamespace())); + public Item registerTool(ResourceLocation itemId, Item item) { + if (!config.getBoolean("tools", itemId.getPath(), true)) { + return item; + } + + registerItem(itemId, item); if (item instanceof ShovelItem) { TagAPI.addTag((Tag.Named) FabricToolTags.SHOVELS, item); @@ -77,8 +93,13 @@ public class ItemRegistry extends BaseRegistry { return item; } - public Item registerEgg(String name, EntityType type, int background, int dots) { + public Item registerEgg(ResourceLocation itemId, EntityType type, int background, int dots) { SpawnEggItem item = new BaseSpawnEggItem(type, background, dots, makeItemSettings()); + + if (!config.getBoolean("spawnEggs", itemId.getPath(), true)) { + return item; + } + DefaultDispenseItemBehavior behavior = new DefaultDispenseItemBehavior() { public ItemStack execute(BlockSource pointer, ItemStack stack) { Direction direction = pointer.getBlockState().getValue(DispenserBlock.FACING); @@ -97,31 +118,42 @@ public class ItemRegistry extends BaseRegistry { } }; DispenserBlock.registerBehavior(item, behavior); - return register(name, item); + return register(itemId, item); } - public Item registerFood(String name, int hunger, float saturation, MobEffectInstance... effects) { + public Item registerFood(ResourceLocation itemId, int hunger, float saturation, MobEffectInstance... effects) { FoodProperties.Builder builder = new FoodProperties.Builder().nutrition(hunger).saturationMod(saturation); for (MobEffectInstance effect : effects) { builder.effect(effect, 1F); } - return registerFood(name, builder.build()); + return registerFood(itemId, builder.build()); } - public Item registerFood(String name, FoodProperties foodComponent) { - return register(name, new ModelProviderItem(makeItemSettings().food(foodComponent))); + public Item registerFood(ResourceLocation itemId, FoodProperties foodComponent) { + return register(itemId, new ModelProviderItem(makeItemSettings().food(foodComponent))); } - public Item registerDrink(String name) { - return register(name, new BaseDrinkItem(makeItemSettings().stacksTo(1))); + public Item registerDrink(ResourceLocation itemId, FoodProperties foodComponent) { + return register(itemId, new BaseDrinkItem(makeItemSettings().stacksTo(1).food(foodComponent))); } - public Item registerDrink(String name, FoodProperties foodComponent) { - return register(name, new BaseDrinkItem(makeItemSettings().stacksTo(1).food(foodComponent))); - } - - public Item registerDrink(String name, int hunger, float saturation) { + public Item registerDrink(ResourceLocation itemId, int hunger, float saturation) { FoodProperties.Builder builder = new FoodProperties.Builder().nutrition(hunger).saturationMod(saturation); - return registerDrink(name, builder.build()); + return registerDrink(itemId, builder.build()); + } + + @Override + public void registerItem(ResourceLocation id, Item item) { + if (item != null && item != Items.AIR) { + Registry.register(Registry.ITEM, id, item); + getModItems(id.getNamespace()).add(item); + } + } + + public Item register(ResourceLocation itemId, Item item, String category) { + if (config.getBoolean(category, itemId.getPath(), true)) { + registerItem(itemId, item); + } + return item; } }