Updated Tag API and tag constants

This commit is contained in:
paulevsGitch 2022-01-21 14:56:37 +03:00
parent 7ab5377a03
commit db082ef1be
35 changed files with 308 additions and 385 deletions

View file

@ -6,9 +6,9 @@ import net.fabricmc.api.Environment;
import net.fabricmc.fabric.api.blockrenderlayer.v1.BlockRenderLayerMap;
import net.minecraft.client.renderer.RenderType;
import net.minecraft.core.Registry;
import net.minecraft.tags.Tag;
import net.minecraft.world.item.Item;
import net.minecraft.world.level.block.Block;
import ru.bclib.api.TagAPI.TagLocation;
import ru.bclib.api.biomes.BiomeAPI;
import ru.bclib.blocks.BaseBarrelBlock;
import ru.bclib.blocks.BaseChestBlock;
@ -28,8 +28,8 @@ import java.util.function.Consumer;
public class PostInitAPI {
private static List<Consumer<Boolean>> postInitFunctions = Lists.newArrayList();
private static List<Tag.Named<Block>> blockTags = Lists.newArrayList();
private static List<Tag.Named<Item>> itemTags = Lists.newArrayList();
private static List<TagLocation<Block>> blockTags = Lists.newArrayList();
private static List<TagLocation<Item>> itemTags = Lists.newArrayList();
/**
* Register a new function which will be called after all mods are initiated. Will be called on both client and server.
@ -94,8 +94,8 @@ public class PostInitAPI {
}
if (block instanceof TagProvider) {
TagProvider.class.cast(block).addTags(blockTags, itemTags);
blockTags.forEach(tag -> TagAPI.addTag(tag, block));
itemTags.forEach(tag -> TagAPI.addTag(tag, block));
blockTags.forEach(tag -> TagAPI.addBlockTag(tag, block));
itemTags.forEach(tag -> TagAPI.addItemTag(tag, block));
blockTags.clear();
itemTags.clear();
}

View file

@ -3,7 +3,6 @@ package ru.bclib.api;
import com.google.common.collect.Maps;
import com.google.common.collect.Sets;
import net.fabricmc.fabric.api.tag.TagFactory;
import net.fabricmc.fabric.api.tag.TagRegistry;
import net.fabricmc.fabric.impl.tag.extension.TagDelegate;
import net.minecraft.core.Registry;
import net.minecraft.resources.ResourceLocation;
@ -18,7 +17,6 @@ import net.minecraft.world.item.Items;
import net.minecraft.world.level.ItemLike;
import net.minecraft.world.level.block.Block;
import net.minecraft.world.level.block.Blocks;
import ru.bclib.BCLib;
import java.util.List;
import java.util.Map;
@ -30,61 +28,143 @@ public class TagAPI {
private static final Map<ResourceLocation, Set<ResourceLocation>> TAGS_BLOCK = Maps.newConcurrentMap();
private static final Map<ResourceLocation, Set<ResourceLocation>> TAGS_ITEM = Maps.newConcurrentMap();
// Vanilla Block Tags
public static final TagLocation<Block> NAMED_SOUL_SPEED_BLOCKS = new TagLocation<>("soul_speed_blocks");
public static final TagLocation<Block> NAMED_SOUL_FIRE_BASE_BLOCKS = new TagLocation<>("soul_fire_base_blocks");
public static final TagLocation<Block> NAMED_CLIMBABLE = new TagLocation<>("climbable");
public static final TagLocation<Block> NAMED_NYLIUM = new TagLocation<>("nylium");
public static final TagLocation<Block> NAMED_ANVIL = new TagLocation<>("anvil");
public static final TagLocation<Block> NAMED_WALLS = new TagLocation<>("walls");
public static final TagLocation<Block> LEAVES = new TagLocation<>("leaves");
// LOCATIONS //
// Mineable Block Tags
public static final TagLocation<Block> NAMED_MINEABLE_AXE = new TagLocation<>("mineable/axe");
public static final TagLocation<Block> NAMED_MINEABLE_PICKAXE = new TagLocation<>("mineable/pickaxe");
public static final TagLocation<Block> NAMED_MINEABLE_SHOVEL = new TagLocation<>("mineable/shovel");
public static final TagLocation<Block> NAMED_MINEABLE_HOE = new TagLocation<>("mineable/hoe");
public static final TagLocation<Block> NAMED_MINEABLE_PICKAXE = new TagLocation<>("mineable/pickaxe");
public static final TagLocation<Block> NAMED_MINEABLE_SHEARS = new TagLocation<>("fabric", "mineable/shears");
public static final TagLocation<Block> NAMED_MINEABLE_SHOVEL = new TagLocation<>("mineable/shovel");
public static final TagLocation<Block> NAMED_MINEABLE_SWORD = new TagLocation<>("fabric", "mineable/sword");
// Block Tags
public static final TagNamed<Block> BLOCK_BOOKSHELVES = makeCommonBlockTag("bookshelves");
public static final TagNamed<Block> BLOCK_GEN_TERRAIN = makeBlockTag(BCLib.MOD_ID, "gen_terrain");
public static final TagNamed<Block> BLOCK_NETHER_GROUND = makeBlockTag(BCLib.MOD_ID, "nether_ground");
public static final TagNamed<Block> BLOCK_END_GROUND = makeBlockTag(BCLib.MOD_ID, "end_ground");
// Fabric Tools
public static final TagLocation<Item> NAMED_FABRIC_AXES = new TagLocation<>("fabric", "axes");
public static final TagLocation<Item> NAMED_FABRIC_HOES = new TagLocation<>("fabric", "hoes");
public static final TagLocation<Item> NAMED_FABRIC_PICKAXES = new TagLocation<>("fabric", "pickaxes");
public static final TagLocation<Item> NAMED_FABRIC_SHEARS = new TagLocation<>("fabric", "shears");
public static final TagLocation<Item> NAMED_FABRIC_SHOVELS = new TagLocation<>("fabric", "shovels");
public static final TagLocation<Item> NAMED_FABRIC_SWORDS = new TagLocation<>("fabric", "swords");
public static final TagNamed<Block> BLOCK_CHEST = makeCommonBlockTag("chest");
public static final TagNamed<Block> BLOCK_WOODEN_CHEST = makeCommonBlockTag("wooden_chests");
public static final TagNamed<Block> BLOCK_BARREL = makeCommonBlockTag("barrel");
public static final TagNamed<Block> BLOCK_WOODEN_BARREL = makeCommonBlockTag("wooden_barrels");
public static final TagNamed<Block> BLOCK_END_STONES = makeCommonBlockTag("end_stones");
public static final TagNamed<Block> BLOCK_NETHER_STONES = makeCommonBlockTag("nether_stones");
public static final TagNamed<Block> BLOCK_NETHER_PORTAL_FRAME = makeCommonBlockTag("nether_pframe");
public static final TagNamed<Block> BLOCK_WORKBENCHES = makeCommonBlockTag("workbench");
public static final TagNamed<Block> BLOCK_SAPLINGS = makeCommonBlockTag("saplings");
public static final TagNamed<Block> BLOCK_LEAVES = makeCommonBlockTag("leaves");
public static final TagNamed<Block> BLOCK_IMMOBILE = makeCommonBlockTag("immobile");
public static final TagNamed<Block> BLOCK_SOUL_GROUND = makeCommonBlockTag("soul_ground");
public static final TagNamed<Block> BLOCK_NETHERRACK = makeCommonBlockTag("netherrack");
public static final TagNamed<Block> BLOCK_NETHER_MYCELIUM = makeCommonBlockTag("nether_mycelium");
// Vanilla Block Tags
public static final TagLocation<Block> NAMED_BLOCK_ANVIL = new TagLocation<>("anvil");
public static final TagLocation<Block> NAMED_BLOCK_BUTTONS = new TagLocation<>("buttons");
public static final TagLocation<Block> NAMED_BLOCK_CLIMBABLE = new TagLocation<>("climbable");
public static final TagLocation<Block> NAMED_BLOCK_DOORS = new TagLocation<>("doors");
public static final TagLocation<Block> NAMED_BLOCK_FENCES = new TagLocation<>("fences");
public static final TagLocation<Block> NAMED_BLOCK_FENCE_GATES = new TagLocation<>("fence_gates");
public static final TagLocation<Block> NAMED_BLOCK_LEAVES = new TagLocation<>("leaves");
public static final TagLocation<Block> NAMED_BLOCK_LOGS = new TagLocation<>("logs");
public static final TagLocation<Block> NAMED_BLOCK_LOGS_THAT_BURN = new TagLocation<>("logs_that_burn");
public static final TagLocation<Block> NAMED_BLOCK_NYLIUM = new TagLocation<>("nylium");
public static final TagLocation<Block> NAMED_BLOCK_PLANKS = new TagLocation<>("planks");
public static final TagLocation<Block> NAMED_BLOCK_PRESSURE_PLATES = new TagLocation<>("pressure_plates");
public static final TagLocation<Block> NAMED_BLOCK_SAPLINGS = new TagLocation<>("saplings");
public static final TagLocation<Block> NAMED_BLOCK_SIGNS = new TagLocation<>("signs");
public static final TagLocation<Block> NAMED_BLOCK_SLABS = new TagLocation<>("slabs");
public static final TagLocation<Block> NAMED_BLOCK_STAIRS = new TagLocation<>("stairs");
public static final TagLocation<Block> NAMED_BLOCK_STONE_PRESSURE_PLATES = new TagLocation<>("stone_pressure_plates");
public static final TagLocation<Block> NAMED_BLOCK_TRAPDOORS = new TagLocation<>("trapdoors");
public static final TagLocation<Block> NAMED_BLOCK_WALLS = new TagLocation<>("walls");
public static final TagLocation<Block> NAMED_BLOCK_WOODEN_BUTTONS = new TagLocation<>("wooden_buttons");
public static final TagLocation<Block> NAMED_BLOCK_WOODEN_DOORS = new TagLocation<>("wooden_doors");
public static final TagLocation<Block> NAMED_BLOCK_WOODEN_FENCES = new TagLocation<>("wooden_fences");
public static final TagLocation<Block> NAMED_BLOCK_WOODEN_PRESSURE_PLATES = new TagLocation<>("wooden_pressure_plates");
public static final TagLocation<Block> NAMED_BLOCK_WOODEN_SLABS = new TagLocation<>("wooden_slabs");
public static final TagLocation<Block> NAMED_BLOCK_WOODEN_STAIRS = new TagLocation<>("wooden_stairs");
public static final TagLocation<Block> NAMED_BLOCK_WOODEN_TRAPDOORS = new TagLocation<>("wooden_trapdoors");
public static final TagLocation<Block> NAMED_SOUL_FIRE_BASE_BLOCKS = new TagLocation<>("soul_fire_base_blocks");
public static final TagLocation<Block> NAMED_SOUL_SPEED_BLOCKS = new TagLocation<>("soul_speed_blocks");
public static final TagNamed<Block> BLOCK_DRAGON_IMMUNE = getMCBlockTag("dragon_immune");
// Vanilla Item Tags
public static final TagLocation<Item> NAMED_ITEM_BUTTONS = new TagLocation<>("buttons");
public static final TagLocation<Item> NAMED_ITEM_DOORS = new TagLocation<>("doors");
public static final TagLocation<Item> NAMED_ITEM_FENCES = new TagLocation<>("fences");
public static final TagLocation<Item> NAMED_ITEM_FENCE_GATES = new TagLocation<>("fence_gates");
public static final TagLocation<Item> NAMED_ITEM_LEAVES = new TagLocation<>("leaves");
public static final TagLocation<Item> NAMED_ITEM_LOGS = new TagLocation<>("logs");
public static final TagLocation<Item> NAMED_ITEM_LOGS_THAT_BURN = new TagLocation<>("logs_that_burn");
public static final TagLocation<Item> NAMED_ITEM_PLANKS = new TagLocation<>("planks");
public static final TagLocation<Item> NAMED_ITEM_PRESSURE_PLATES = new TagLocation<>("pressure_plates");
public static final TagLocation<Item> NAMED_ITEM_SAPLINGS = new TagLocation<>("saplings");
public static final TagLocation<Item> NAMED_ITEM_SHEARS = new TagLocation<>("shears");
public static final TagLocation<Item> NAMED_ITEM_SIGNS = new TagLocation<>("signs");
public static final TagLocation<Item> NAMED_ITEM_SLABS = new TagLocation<>("slabs");
public static final TagLocation<Item> NAMED_ITEM_STAIRS = new TagLocation<>("stairs");
public static final TagLocation<Item> NAMED_ITEM_STONE_PRESSURE_PLATES = new TagLocation<>("stone_pressure_plates");
public static final TagLocation<Item> NAMED_ITEM_TRAPDOORS = new TagLocation<>("trapdoors");
public static final TagLocation<Item> NAMED_ITEM_WOODEN_BUTTONS = new TagLocation<>("wooden_buttons");
public static final TagLocation<Item> NAMED_ITEM_WOODEN_DOORS = new TagLocation<>("wooden_doors");
public static final TagLocation<Item> NAMED_ITEM_WOODEN_FENCES = new TagLocation<>("wooden_fences");
public static final TagLocation<Item> NAMED_ITEM_WOODEN_PRESSURE_PLATES = new TagLocation<>("wooden_pressure_plates");
public static final TagLocation<Item> NAMED_ITEM_WOODEN_SLABS = new TagLocation<>("wooden_slabs");
public static final TagLocation<Item> NAMED_ITEM_WOODEN_STAIRS = new TagLocation<>("wooden_stairs");
public static final TagLocation<Item> NAMED_ITEM_WOODEN_TRAPDOORS = new TagLocation<>("wooden_trapdoors");
public static final TagNamed<Block> MINEABLE_AXE = getMCBlockTag("mineable/axe");
public static final TagNamed<Block> MINEABLE_PICKAXE = getMCBlockTag("mineable/pickaxe");
public static final TagNamed<Block> MINEABLE_SHOVEL = getMCBlockTag("mineable/shovel");
public static final TagNamed<Block> MINEABLE_HOE = getMCBlockTag("mineable/hoe");
// Common Block Tags
public static final TagLocation<Block> NAMED_BLOCK_DRAGON_IMMUNE = new TagLocation<>("c", "dragon_immune");
public static final TagLocation<Block> NAMED_COMMON_BLOCK_BARREL = new TagLocation<>("c", "barrel");
public static final TagLocation<Block> NAMED_COMMON_BLOCK_BOOKSHELVES = new TagLocation<>("c", "bookshelves");
public static final TagLocation<Block> NAMED_COMMON_BLOCK_CHEST = new TagLocation<>("c", "chest");
public static final TagLocation<Block> NAMED_COMMON_BLOCK_END_STONES = new TagLocation<>("c", "end_stones");
public static final TagLocation<Block> NAMED_COMMON_BLOCK_IMMOBILE = new TagLocation<>("c", "immobile");
public static final TagLocation<Block> NAMED_COMMON_BLOCK_LEAVES = new TagLocation<>("c", "leaves");
public static final TagLocation<Block> NAMED_COMMON_BLOCK_NETHERRACK = new TagLocation<>("c", "netherrack");
public static final TagLocation<Block> NAMED_COMMON_BLOCK_NETHER_MYCELIUM = new TagLocation<>("c", "nether_mycelium");
public static final TagLocation<Block> NAMED_COMMON_BLOCK_NETHER_PORTAL_FRAME = new TagLocation<>("c", "nether_pframe");
public static final TagLocation<Block> NAMED_COMMON_BLOCK_NETHER_STONES = new TagLocation<>("c", "nether_stones");
public static final TagLocation<Block> NAMED_COMMON_BLOCK_SAPLINGS = new TagLocation<>("c", "saplings");
public static final TagLocation<Block> NAMED_COMMON_BLOCK_SOUL_GROUND = new TagLocation<>("c", "soul_ground");
public static final TagLocation<Block> NAMED_COMMON_BLOCK_WOODEN_BARREL = new TagLocation<>("c", "wooden_barrels");
public static final TagLocation<Block> NAMED_COMMON_BLOCK_WOODEN_CHEST = new TagLocation<>("c", "wooden_chests");
public static final TagLocation<Block> NAMED_COMMON_BLOCK_WORKBENCHES = new TagLocation<>("c", "workbench");
// Item Tags
public static final TagNamed<Item> ITEM_CHEST = makeCommonItemTag("chest");
public static final TagNamed<Item> ITEM_WOODEN_CHEST = makeCommonItemTag("wooden_chests");
public static final TagNamed<Item> ITEM_BARREL = makeCommonItemTag("barrel");
public static final TagNamed<Item> ITEM_WOODEN_BARREL = makeCommonItemTag("wooden_barrels");
public static final TagNamed<Item> ITEM_IRON_INGOTS = makeCommonItemTag("iron_ingots");
public static final TagNamed<Item> ITEM_FURNACES = makeCommonItemTag("furnaces");
public static final TagNamed<Item> ITEM_WORKBENCHES = makeCommonItemTag("workbench");
public final static TagNamed<Item> ITEM_HAMMERS = makeCommonItemTag("hammers");
public static final TagNamed<Item> ITEM_SAPLINGS = makeCommonItemTag("saplings");
public static final TagNamed<Item> ITEM_LEAVES = makeCommonItemTag("leaves");
public static final TagNamed<Item> ITEM_SHEARS = getMCItemTag("shears");
public static final TagNamed<Item> ITEM_COMMON_SHEARS = makeCommonItemTag("shears");
public static final TagNamed<Item> ITEM_SOUL_GROUND = makeCommonItemTag("soul_ground");
// Common Item Tags
public static final TagLocation<Item> NAMED_COMMON_ITEM_BARREL = new TagLocation<>("c", "barrel");
public static final TagLocation<Item> NAMED_COMMON_ITEM_CHEST = new TagLocation<>("c", "chest");
public static final TagLocation<Item> NAMED_COMMON_ITEM_FURNACES = new TagLocation<>("c", "furnaces");
public static final TagLocation<Item> NAMED_COMMON_ITEM_HAMMERS = new TagLocation<>("c", "hammers");
public static final TagLocation<Item> NAMED_COMMON_ITEM_IRON_INGOTS = new TagLocation<>("c", "iron_ingots");
public static final TagLocation<Item> NAMED_COMMON_ITEM_LEAVES = new TagLocation<>("c", "leaves");
public static final TagLocation<Item> NAMED_COMMON_ITEM_SAPLINGS = new TagLocation<>("c", "saplings");
public static final TagLocation<Item> NAMED_COMMON_ITEM_SHEARS = new TagLocation<>("c", "shears");
public static final TagLocation<Item> NAMED_COMMON_ITEM_SOUL_GROUND = new TagLocation<>("c", "soul_ground");
public static final TagLocation<Item> NAMED_COMMON_ITEM_WOODEN_BARREL = new TagLocation<>("c", "wooden_barrels");
public static final TagLocation<Item> NAMED_COMMON_ITEM_WOODEN_CHEST = new TagLocation<>("c", "wooden_chests");
public static final TagLocation<Item> NAMED_COMMON_ITEM_WORKBENCHES = new TagLocation<>("c", "workbench");
// TAGS //
// Common Block Tags
public static final TagNamed<Block> COMMON_BLOCK_BARREL = makeCommonBlockTag("barrel");
public static final TagNamed<Block> COMMON_BLOCK_BOOKSHELVES = makeCommonBlockTag("bookshelves");
public static final TagNamed<Block> COMMON_BLOCK_CHEST = makeCommonBlockTag("chest");
public static final TagNamed<Block> COMMON_BLOCK_END_STONES = makeCommonBlockTag("end_stones");
public static final TagNamed<Block> COMMON_BLOCK_IMMOBILE = makeCommonBlockTag("immobile");
public static final TagNamed<Block> COMMON_BLOCK_LEAVES = makeCommonBlockTag("leaves");
public static final TagNamed<Block> COMMON_BLOCK_NETHERRACK = makeCommonBlockTag("netherrack");
public static final TagNamed<Block> COMMON_BLOCK_NETHER_MYCELIUM = makeCommonBlockTag("nether_mycelium");
public static final TagNamed<Block> COMMON_BLOCK_NETHER_PORTAL_FRAME = makeCommonBlockTag("nether_pframe");
public static final TagNamed<Block> COMMON_BLOCK_NETHER_STONES = makeCommonBlockTag("nether_stones");
public static final TagNamed<Block> COMMON_BLOCK_SAPLINGS = makeCommonBlockTag("saplings");
public static final TagNamed<Block> COMMON_BLOCK_SOUL_GROUND = makeCommonBlockTag("soul_ground");
public static final TagNamed<Block> COMMON_BLOCK_WOODEN_BARREL = makeCommonBlockTag("wooden_barrels");
public static final TagNamed<Block> COMMON_BLOCK_WOODEN_CHEST = makeCommonBlockTag("wooden_chests");
public static final TagNamed<Block> COMMON_BLOCK_WORKBENCHES = makeCommonBlockTag("workbench");
// Common Item Tags
public final static TagNamed<Item> COMMON_ITEM_HAMMERS = makeCommonItemTag("hammers");
public static final TagNamed<Item> COMMON_ITEM_BARREL = makeCommonItemTag("barrel");
public static final TagNamed<Item> COMMON_ITEM_CHEST = makeCommonItemTag("chest");
public static final TagNamed<Item> COMMON_ITEM_SHEARS = makeCommonItemTag("shears");
public static final TagNamed<Item> COMMON_ITEM_FURNACES = makeCommonItemTag("furnaces");
public static final TagNamed<Item> COMMON_ITEM_IRON_INGOTS = makeCommonItemTag("iron_ingots");
public static final TagNamed<Item> COMMON_ITEM_LEAVES = makeCommonItemTag("leaves");
public static final TagNamed<Item> COMMON_ITEM_SAPLINGS = makeCommonItemTag("saplings");
public static final TagNamed<Item> COMMON_ITEM_SOUL_GROUND = makeCommonItemTag("soul_ground");
public static final TagNamed<Item> COMMON_ITEM_WOODEN_BARREL = makeCommonItemTag("wooden_barrels");
public static final TagNamed<Item> COMMON_ITEM_WOODEN_CHEST = makeCommonItemTag("wooden_chests");
public static final TagNamed<Item> COMMON_ITEM_WORKBENCHES = makeCommonItemTag("workbench");
/**
* Get or create {@link Tag.Named}.
@ -148,36 +228,22 @@ public class TagAPI {
* @param name - {@link String} tag name.
* @return {@link Block} {@link Tag.Named}.
*/
@Deprecated(forRemoval = true)
public static TagNamed<Block> getMCBlockTag(String name) {
ResourceLocation id = new ResourceLocation(name);
Tag<Block> tag = BlockTags.getAllTags().getTag(id);
return CommonDelegate.proxy(tag == null ? (Named<Block>) TagFactory.BLOCK.create(id): (Named<Block>) tag);
}
/**
* Get or create Minecraft {@link Item} {@link Tag.Named}.
*
* @param name - {@link String} tag name.
* @return {@link Item} {@link Tag.Named}.
*/
public static TagNamed<Item> getMCItemTag(String name) {
ResourceLocation id = new ResourceLocation(name);
Tag<Item> tag = ItemTags.getAllTags().getTag(id);
return CommonDelegate.proxy(tag == null ? (Named<Item>) TagRegistry.item(id) : (Named<Item>) tag);
}
/**
* Initializes basic tags. Should be called only in BCLib main class.
*/
public static void init() {
addBlockTag(BLOCK_BOOKSHELVES.getName(), Blocks.BOOKSHELF);
addBlockTag(BLOCK_GEN_TERRAIN.getName(), Blocks.END_STONE, Blocks.NETHERRACK, Blocks.SOUL_SAND, Blocks.SOUL_SOIL);
addBlockTag(BLOCK_NETHER_GROUND.getName(), Blocks.NETHERRACK, Blocks.SOUL_SAND, Blocks.SOUL_SOIL);
addBlockTag(BLOCK_END_GROUND.getName(), Blocks.END_STONE);
addBlockTag(BLOCK_CHEST.getName(), Blocks.CHEST);
addItemTag(ITEM_CHEST.getName(), Items.CHEST);
addItemTag(ITEM_IRON_INGOTS.getName(), Items.IRON_INGOT);
addItemTag(ITEM_FURNACES.getName(), Blocks.FURNACE);
addBlockTag(COMMON_BLOCK_BOOKSHELVES.getName(), Blocks.BOOKSHELF);
addBlockTag(COMMON_BLOCK_CHEST.getName(), Blocks.CHEST);
addItemTag(COMMON_ITEM_CHEST.getName(), Items.CHEST);
addItemTag(COMMON_ITEM_IRON_INGOTS.getName(), Items.IRON_INGOT);
addItemTag(COMMON_ITEM_FURNACES.getName(), Blocks.FURNACE);
}
/**
@ -288,109 +354,6 @@ public class TagAPI {
return builder;
}
// DEPRECATED SECTION //
// WILL BE REMOVED IN 1.3.0 //
/**
* Deprecated due to low compatibility. Use addTag({@link ResourceLocation}, {@link ItemLike}... items) instead.
*
* Adds one Tag to multiple Items.
* <p>
* Example:
* <pre>{@code Tag.Named<Item> METALS = makeBlockTag("mymod", "metals");
* addTag(METALS, Items.IRON_INGOT, Items.GOLD_INGOT, Items.COPPER_INGOT);}</pre>
* <p>
* The call will reserve the Tag. The Tag is added to the items once
* {@link #apply(String, Map)} was executed.
*
* @param tag The new Tag
* @param items One or more item that should receive the Tag.
*/
@Deprecated
public static void addTag(Tag.Named<Item> tag, ItemLike... items) {
addItemTagUntyped(tag.getName(), items);
}
/**
* Deprecated, use addTag({@link ResourceLocation}, {@link ItemLike}... items) instead.
*
* Adds multiple Tags to one Item.
* <p>
* The call will reserve the Tags. The Tags are added to the Item once
* * {@link #apply(String, Map)} was executed.
*
* @param item The Item that will receive all Tags
* @param tags One or more Tags
*/
@Deprecated
@SafeVarargs
public static void addTags(ItemLike item, Tag.Named<Item>... tags) {
for (Tag.Named<Item> tag : tags) {
addItemTagUntyped(tag.getName(), item);
}
}
/**
* Deprecated, use addTag({@link ResourceLocation}, {@link Block}... blocks) instead.
*
* Adds multiple Tags to one Block.
* <p>
* The call will reserve the Tags. The Tags are added to the Block once
* * {@link #apply(String, Map)} was executed.
*
* @param block The Block that will receive all Tags
* @param tags One or more Tags
*/
@Deprecated
@SafeVarargs
public static void addTags(Block block, Tag.Named<Block>... tags) {
for (Tag.Named<Block> tag : tags) {
addTag(tag, block);
}
}
/**
* Deprecated due to low compatibility. Use addTag({@link ResourceLocation}, {@link Block}... blocks) instead.
*
* Adds one Tag to multiple Blocks.
* <p>
* Example:
* <pre>{@code Tag.Named<Block> DIMENSION_STONE = makeBlockTag("mymod", "dim_stone");
* addTag(DIMENSION_STONE, Blocks.END_STONE, Blocks.NETHERRACK);}</pre>
* <p>
* The call will reserve the Tag. The Tag is added to the blocks once
* {@link #apply(String, Map)} was executed.
*
* @param tag The new Tag
* @param blocks One or more blocks that should receive the Tag.
*/
@Deprecated
public static void addTag(Tag.Named<Block> tag, Block... blocks) {
addBlockTagUntyped(tag.getName(), blocks);
}
/**
* Adds {@link Block} to NETHER_GROUND and GEN_TERRAIN tags to process it properly in terrain generators and block logic.
*
* @param block - {@link Block}.
*/
@Deprecated
public static void addNetherGround(Block block) {
addTag(BLOCK_NETHER_GROUND, block);
addTag(BLOCK_GEN_TERRAIN, block);
}
/**
* Adds {@link Block} to END_GROUND and GEN_TERRAIN tags to process it properly in terrain generators and block logic.
*
* @param block - {@link Block}.
*/
@Deprecated
public static void addEndGround(Block block) {
addTag(BLOCK_GEN_TERRAIN, block);
addTag(BLOCK_END_GROUND, block);
}
/**
* Extends {@link Tag.Named} to return a type safe {@link TagLocation}. This Type was introduced to
* allow type-safe definition of Tags using their ResourceLocation.
@ -413,6 +376,10 @@ public class TagAPI {
public TagLocation(String string, String string2) {
super(string, string2);
}
public TagLocation(ResourceLocation location) {
super(location.getNamespace(), location.getPath());
}
}
private abstract static class CommonDelegate<T> implements TagNamed<T> {

View file

@ -37,7 +37,6 @@ import ru.bclib.util.ColorUtil;
import ru.bclib.util.TriFunction;
import ru.bclib.world.biomes.BCLBiome;
import ru.bclib.world.biomes.BCLBiomeSettings;
import ru.bclib.world.biomes.BCLBiomeSettings.Builder;
import ru.bclib.world.features.BCLFeature;
import ru.bclib.world.structures.BCLStructureFeature;

View file

@ -7,7 +7,6 @@ import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
import com.google.common.collect.Multimap;
import com.google.common.collect.Sets;
import com.mojang.serialization.Codec;
import net.fabricmc.api.EnvType;
import net.fabricmc.api.Environment;
import net.fabricmc.fabric.api.event.registry.DynamicRegistrySetupCallback;
@ -56,7 +55,6 @@ import net.minecraft.world.level.storage.WorldData;
import org.apache.commons.lang3.mutable.MutableInt;
import org.jetbrains.annotations.Nullable;
import ru.bclib.BCLib;
import ru.bclib.config.Configs;
import ru.bclib.entity.BCLEntityWrapper;
import ru.bclib.interfaces.BiomeSourceAccessor;
import ru.bclib.interfaces.SurfaceMaterialProvider;
@ -69,7 +67,6 @@ import ru.bclib.mixin.common.StructureSettingsAccessor;
import ru.bclib.util.CollectionsUtil;
import ru.bclib.util.MHelper;
import ru.bclib.world.biomes.BCLBiome;
import ru.bclib.world.biomes.BCLBiomeSettings;
import ru.bclib.world.biomes.FabricBiomesData;
import ru.bclib.world.biomes.VanillaBiomeSettings;
import ru.bclib.world.features.BCLFeature;

View file

@ -1,6 +1,5 @@
package ru.bclib.api.surface.rules;
import net.minecraft.core.Registry;
import net.minecraft.world.level.levelgen.SurfaceRules;
import ru.bclib.mixin.common.SurfaceRulesContextAccessor;

View file

@ -1,9 +1,6 @@
package ru.bclib.api.surface.rules;
import com.mojang.serialization.Codec;
import net.minecraft.world.level.levelgen.SurfaceRules;
import net.minecraft.world.level.levelgen.SurfaceRules.Condition;
import net.minecraft.world.level.levelgen.SurfaceRules.ConditionSource;
import net.minecraft.world.level.levelgen.SurfaceRules.Context;
import net.minecraft.world.level.levelgen.SurfaceRules.LazyXZCondition;
import ru.bclib.mixin.common.SurfaceRulesContextAccessor;

View file

@ -1,24 +1,17 @@
package ru.bclib.api.surface.rules;
import com.mojang.datafixers.kinds.Applicative;
import com.mojang.datafixers.kinds.K1;
import com.mojang.serialization.Codec;
import com.mojang.serialization.MapCodec;
import com.mojang.serialization.codecs.RecordCodecBuilder;
import net.minecraft.core.Registry;
import net.minecraft.resources.ResourceKey;
import net.minecraft.world.level.block.state.BlockState;
import net.minecraft.world.level.levelgen.SurfaceRules;
import net.minecraft.world.level.levelgen.SurfaceRules.Context;
import net.minecraft.world.level.levelgen.SurfaceRules.RuleSource;
import net.minecraft.world.level.levelgen.SurfaceRules.SurfaceRule;
import net.minecraft.world.level.levelgen.VerticalAnchor;
import org.jetbrains.annotations.Nullable;
import ru.bclib.interfaces.NumericProvider;
import ru.bclib.mixin.common.SurfaceRulesContextAccessor;
import java.util.List;
import java.util.function.Function;
//
public record SwitchRuleSource(NumericProvider selector, List<RuleSource> collection) implements RuleSource {

View file

@ -1,7 +1,6 @@
package ru.bclib.api.surface.rules;
import com.mojang.serialization.Codec;
import net.minecraft.world.level.levelgen.SurfaceRules;
import net.minecraft.world.level.levelgen.SurfaceRules.Condition;
import net.minecraft.world.level.levelgen.SurfaceRules.ConditionSource;
import net.minecraft.world.level.levelgen.SurfaceRules.Context;

View file

@ -8,9 +8,6 @@ import net.minecraft.client.resources.model.BlockModelRotation;
import net.minecraft.client.resources.model.UnbakedModel;
import net.minecraft.core.Direction;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.tags.BlockTags;
import net.minecraft.tags.ItemTags;
import net.minecraft.tags.Tag.Named;
import net.minecraft.util.StringRepresentable;
import net.minecraft.world.item.Item;
import net.minecraft.world.item.ItemStack;
@ -22,6 +19,8 @@ import net.minecraft.world.level.block.state.properties.DoorHingeSide;
import net.minecraft.world.level.block.state.properties.DoubleBlockHalf;
import net.minecraft.world.level.storage.loot.LootContext;
import org.jetbrains.annotations.Nullable;
import ru.bclib.api.TagAPI;
import ru.bclib.api.TagAPI.TagLocation;
import ru.bclib.client.models.BasePatterns;
import ru.bclib.client.models.ModelsHelper;
import ru.bclib.client.models.PatternsHelper;
@ -151,9 +150,9 @@ public class BaseDoorBlock extends DoorBlock implements RenderLayerProvider, Blo
}
@Override
public void addTags(List<Named<Block>> blockTags, List<Named<Item>> itemTags) {
blockTags.add(BlockTags.DOORS);
itemTags.add(ItemTags.DOORS);
public void addTags(List<TagLocation<Block>> blockTags, List<TagLocation<Item>> itemTags) {
blockTags.add(TagAPI.NAMED_BLOCK_DOORS);
itemTags.add(TagAPI.NAMED_ITEM_DOORS);
}
protected enum DoorType implements StringRepresentable {

View file

@ -1,12 +1,9 @@
package ru.bclib.blocks;
import com.google.common.collect.Lists;
import net.fabricmc.fabric.api.mininglevel.v1.FabricMineableTags;
import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings;
import net.minecraft.client.renderer.block.model.BlockModel;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.tags.BlockTags;
import net.minecraft.tags.Tag.Named;
import net.minecraft.world.item.Item;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.enchantment.EnchantmentHelper;
@ -19,6 +16,7 @@ import net.minecraft.world.level.material.MaterialColor;
import net.minecraft.world.level.storage.loot.LootContext;
import net.minecraft.world.level.storage.loot.parameters.LootContextParams;
import ru.bclib.api.TagAPI;
import ru.bclib.api.TagAPI.TagLocation;
import ru.bclib.client.render.BCLRenderLayer;
import ru.bclib.interfaces.BlockModelProvider;
import ru.bclib.interfaces.RenderLayerProvider;
@ -94,9 +92,10 @@ public class BaseLeavesBlock extends LeavesBlock implements BlockModelProvider,
}
@Override
public void addTags(List<Named<Block>> blockTags, List<Named<Item>> itemTags) {
blockTags.add(FabricMineableTags.SHEARS_MINEABLE);
//blockTags.add(TagAPI.MINEABLE_HOE);
blockTags.add(BlockTags.LEAVES);
public void addTags(List<TagLocation<Block>> blockTags, List<TagLocation<Item>> itemTags) {
blockTags.add(TagAPI.NAMED_MINEABLE_SHEARS);
blockTags.add(TagAPI.NAMED_MINEABLE_HOE);
blockTags.add(TagAPI.NAMED_BLOCK_LEAVES);
itemTags.add(TagAPI.NAMED_ITEM_LEAVES);
}
}

View file

@ -25,7 +25,6 @@ import ru.bclib.util.MHelper;
import java.util.Collections;
import java.util.List;
import java.util.Optional;
import java.util.function.Supplier;
public class BaseOreBlock extends OreBlock implements BlockModelProvider {

View file

@ -3,7 +3,6 @@ package ru.bclib.blocks;
import com.google.common.collect.Lists;
import net.fabricmc.api.EnvType;
import net.fabricmc.api.Environment;
import net.fabricmc.fabric.api.mininglevel.v1.FabricMineableTags;
import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings;
import net.fabricmc.fabric.api.tool.attribute.v1.FabricToolTags;
import net.minecraft.client.renderer.block.model.BlockModel;
@ -11,7 +10,6 @@ import net.minecraft.core.BlockPos;
import net.minecraft.core.Direction;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.server.level.ServerLevel;
import net.minecraft.tags.Tag.Named;
import net.minecraft.world.entity.item.ItemEntity;
import net.minecraft.world.item.Item;
import net.minecraft.world.item.ItemStack;
@ -35,6 +33,7 @@ import net.minecraft.world.phys.shapes.CollisionContext;
import net.minecraft.world.phys.shapes.VoxelShape;
import org.jetbrains.annotations.Nullable;
import ru.bclib.api.TagAPI;
import ru.bclib.api.TagAPI.TagLocation;
import ru.bclib.client.models.BasePatterns;
import ru.bclib.client.models.ModelsHelper;
import ru.bclib.client.models.PatternsHelper;
@ -170,8 +169,8 @@ public abstract class BasePlantBlock extends BaseBlockNotFull implements RenderL
}
@Override
public void addTags(List<Named<Block>> blockTags, List<Named<Item>> itemTags) {
blockTags.add(FabricMineableTags.SHEARS_MINEABLE);
blockTags.add(TagAPI.MINEABLE_HOE);
public void addTags(List<TagLocation<Block>> blockTags, List<TagLocation<Item>> itemTags) {
blockTags.add(TagAPI.NAMED_MINEABLE_SHEARS);
blockTags.add(TagAPI.NAMED_MINEABLE_HOE);
}
}

View file

@ -1,9 +1,6 @@
package ru.bclib.blocks;
import net.fabricmc.fabric.api.mininglevel.v1.FabricMineableTags;
import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings;
import net.minecraft.tags.BlockTags;
import net.minecraft.tags.Tag.Named;
import net.minecraft.world.item.Item;
import net.minecraft.world.level.block.Block;
import net.minecraft.world.level.block.SoundType;
@ -11,6 +8,7 @@ import net.minecraft.world.level.block.state.BlockBehaviour;
import net.minecraft.world.level.material.Material;
import net.minecraft.world.level.material.MaterialColor;
import ru.bclib.api.TagAPI;
import ru.bclib.api.TagAPI.TagLocation;
import ru.bclib.client.render.BCLRenderLayer;
import ru.bclib.interfaces.RenderLayerProvider;
import ru.bclib.interfaces.TagProvider;
@ -57,9 +55,10 @@ public class SimpleLeavesBlock extends BaseBlockNotFull implements RenderLayerPr
}
@Override
public void addTags(List<Named<Block>> blockTags, List<Named<Item>> itemTags) {
blockTags.add(FabricMineableTags.SHEARS_MINEABLE);
blockTags.add(TagAPI.MINEABLE_HOE);
blockTags.add(BlockTags.LEAVES);
public void addTags(List<TagLocation<Block>> blockTags, List<TagLocation<Item>> itemTags) {
blockTags.add(TagAPI.NAMED_MINEABLE_SHEARS);
blockTags.add(TagAPI.NAMED_MINEABLE_HOE);
blockTags.add(TagAPI.NAMED_BLOCK_LEAVES);
itemTags.add(TagAPI.NAMED_ITEM_LEAVES);
}
}

View file

@ -1,13 +1,11 @@
package ru.bclib.blocks;
import com.google.common.collect.Lists;
import net.fabricmc.fabric.api.mininglevel.v1.FabricMineableTags;
import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings;
import net.fabricmc.fabric.api.tool.attribute.v1.FabricToolTags;
import net.minecraft.core.BlockPos;
import net.minecraft.core.Direction;
import net.minecraft.server.level.ServerLevel;
import net.minecraft.tags.Tag.Named;
import net.minecraft.world.entity.item.ItemEntity;
import net.minecraft.world.item.Item;
import net.minecraft.world.item.ItemStack;
@ -34,6 +32,7 @@ import net.minecraft.world.phys.Vec3;
import net.minecraft.world.phys.shapes.CollisionContext;
import net.minecraft.world.phys.shapes.VoxelShape;
import ru.bclib.api.TagAPI;
import ru.bclib.api.TagAPI.TagLocation;
import ru.bclib.client.render.BCLRenderLayer;
import ru.bclib.interfaces.RenderLayerProvider;
import ru.bclib.interfaces.TagProvider;
@ -161,8 +160,8 @@ public abstract class UnderwaterPlantBlock extends BaseBlockNotFull implements R
}
@Override
public void addTags(List<Named<Block>> blockTags, List<Named<Item>> itemTags) {
blockTags.add(FabricMineableTags.SHEARS_MINEABLE);
blockTags.add(TagAPI.MINEABLE_HOE);
public void addTags(List<TagLocation<Block>> blockTags, List<TagLocation<Item>> itemTags) {
blockTags.add(TagAPI.NAMED_MINEABLE_SHEARS);
blockTags.add(TagAPI.NAMED_MINEABLE_HOE);
}
}

View file

@ -1,12 +1,10 @@
package ru.bclib.blocks;
import com.google.common.collect.Lists;
import net.fabricmc.fabric.api.mininglevel.v1.FabricMineableTags;
import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings;
import net.fabricmc.fabric.api.tool.attribute.v1.FabricToolTags;
import net.minecraft.core.BlockPos;
import net.minecraft.core.Direction;
import net.minecraft.tags.Tag.Named;
import net.minecraft.world.entity.player.Player;
import net.minecraft.world.item.Item;
import net.minecraft.world.item.ItemStack;
@ -28,6 +26,7 @@ import net.minecraft.world.level.storage.loot.parameters.LootContextParams;
import net.minecraft.world.phys.shapes.CollisionContext;
import net.minecraft.world.phys.shapes.VoxelShape;
import ru.bclib.api.TagAPI;
import ru.bclib.api.TagAPI.TagLocation;
import ru.bclib.client.render.BCLRenderLayer;
import ru.bclib.interfaces.RenderLayerProvider;
import ru.bclib.interfaces.TagProvider;
@ -107,8 +106,8 @@ public abstract class UpDownPlantBlock extends BaseBlockNotFull implements Rende
}
@Override
public void addTags(List<Named<Block>> blockTags, List<Named<Item>> itemTags) {
blockTags.add(FabricMineableTags.SHEARS_MINEABLE);
blockTags.add(TagAPI.MINEABLE_HOE);
public void addTags(List<TagLocation<Block>> blockTags, List<TagLocation<Item>> itemTags) {
blockTags.add(TagAPI.NAMED_MINEABLE_SHEARS);
blockTags.add(TagAPI.NAMED_MINEABLE_HOE);
}
}

View file

@ -4,9 +4,6 @@ import net.fabricmc.fabric.api.item.v1.FabricItemSettings;
import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings;
import net.fabricmc.fabric.api.registry.FlammableBlockRegistry;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.tags.BlockTags;
import net.minecraft.tags.ItemTags;
import net.minecraft.tags.Tag;
import net.minecraft.world.item.Item;
import net.minecraft.world.item.Items;
import net.minecraft.world.level.block.Block;
@ -14,6 +11,7 @@ import net.minecraft.world.level.block.Blocks;
import net.minecraft.world.level.material.MaterialColor;
import ru.bclib.BCLib;
import ru.bclib.api.TagAPI;
import ru.bclib.api.TagAPI.TagLocation;
import ru.bclib.blocks.BaseBarkBlock;
import ru.bclib.blocks.BaseBarrelBlock;
import ru.bclib.blocks.BaseBlock;
@ -98,112 +96,92 @@ public class WoodenComplexMaterial extends ComplexMaterial {
}
final protected void initBase(FabricBlockSettings blockSettings, FabricItemSettings itemSettings) {
Tag.Named<Block> tagBlockLog = getBlockTag(TAG_LOGS);
Tag.Named<Item> tagItemLog = getItemTag(TAG_LOGS);
TagLocation<Block> tagBlockLog = new TagLocation<>(getBlockTag(TAG_LOGS).getName());
TagLocation<Item> tagItemLog = new TagLocation<>(getItemTag(TAG_LOGS).getName());
addBlockEntry(
new BlockEntry(BLOCK_STRIPPED_LOG, (complexMaterial, settings) -> {
return new BaseRotatedPillarBlock(settings);
})
.setBlockTags(BlockTags.LOGS, BlockTags.LOGS_THAT_BURN, tagBlockLog)
.setItemTags(ItemTags.LOGS, ItemTags.LOGS_THAT_BURN, tagItemLog)
new BlockEntry(BLOCK_STRIPPED_LOG, (complexMaterial, settings) -> new BaseRotatedPillarBlock(settings))
.setBlockTags(TagAPI.NAMED_BLOCK_LOGS, TagAPI.NAMED_BLOCK_LOGS_THAT_BURN, tagBlockLog)
.setItemTags(TagAPI.NAMED_ITEM_LOGS, TagAPI.NAMED_ITEM_LOGS_THAT_BURN, tagItemLog)
);
addBlockEntry(
new BlockEntry(BLOCK_STRIPPED_BARK, (complexMaterial, settings) -> {
return new BaseBarkBlock(settings);
})
.setBlockTags(BlockTags.LOGS, BlockTags.LOGS_THAT_BURN, tagBlockLog)
.setItemTags(ItemTags.LOGS, ItemTags.LOGS_THAT_BURN, tagItemLog)
new BlockEntry(BLOCK_STRIPPED_BARK, (complexMaterial, settings) -> new BaseBarkBlock(settings))
.setBlockTags(TagAPI.NAMED_BLOCK_LOGS, TagAPI.NAMED_BLOCK_LOGS_THAT_BURN, tagBlockLog)
.setItemTags(TagAPI.NAMED_ITEM_LOGS, TagAPI.NAMED_ITEM_LOGS_THAT_BURN, tagItemLog)
);
addBlockEntry(
new BlockEntry(BLOCK_LOG, (complexMaterial, settings) -> {
return new BaseStripableLogBlock(woodColor, getBlock(BLOCK_STRIPPED_LOG));
})
.setBlockTags(BlockTags.LOGS, BlockTags.LOGS_THAT_BURN, tagBlockLog)
.setItemTags(ItemTags.LOGS, ItemTags.LOGS_THAT_BURN, tagItemLog)
new BlockEntry(BLOCK_LOG, (complexMaterial, settings) -> new BaseStripableLogBlock(woodColor, getBlock(BLOCK_STRIPPED_LOG)))
.setBlockTags(TagAPI.NAMED_BLOCK_LOGS, TagAPI.NAMED_BLOCK_LOGS_THAT_BURN, tagBlockLog)
.setItemTags(TagAPI.NAMED_ITEM_LOGS, TagAPI.NAMED_ITEM_LOGS_THAT_BURN, tagItemLog)
);
addBlockEntry(
new BlockEntry(BLOCK_BARK, (complexMaterial, settings) -> {
return new StripableBarkBlock(woodColor, getBlock(BLOCK_STRIPPED_BARK));
})
.setBlockTags(BlockTags.LOGS, BlockTags.LOGS_THAT_BURN, tagBlockLog)
.setItemTags(ItemTags.LOGS, ItemTags.LOGS_THAT_BURN, tagItemLog)
new BlockEntry(BLOCK_BARK, (complexMaterial, settings) -> new StripableBarkBlock(woodColor, getBlock(BLOCK_STRIPPED_BARK)))
.setBlockTags(TagAPI.NAMED_BLOCK_LOGS, TagAPI.NAMED_BLOCK_LOGS_THAT_BURN, tagBlockLog)
.setItemTags(TagAPI.NAMED_ITEM_LOGS, TagAPI.NAMED_ITEM_LOGS_THAT_BURN, tagItemLog)
);
addBlockEntry(new BlockEntry(BLOCK_PLANKS, (complexMaterial, settings) -> {
return new BaseBlock(settings);
}).setBlockTags(BlockTags.PLANKS)
.setItemTags(ItemTags.PLANKS));
addBlockEntry(new BlockEntry(BLOCK_PLANKS, (complexMaterial, settings) -> new BaseBlock(settings))
.setBlockTags(TagAPI.NAMED_BLOCK_PLANKS)
.setItemTags(TagAPI.NAMED_ITEM_PLANKS));
addBlockEntry(new BlockEntry(BLOCK_STAIRS, (complexMaterial, settings) -> {
return new BaseStairsBlock(getBlock(BLOCK_PLANKS));
}).setBlockTags(BlockTags.WOODEN_STAIRS, BlockTags.STAIRS)
.setItemTags(ItemTags.WOODEN_STAIRS, ItemTags.STAIRS));
addBlockEntry(new BlockEntry(BLOCK_SLAB, (complexMaterial, settings) -> {
return new BaseSlabBlock(getBlock(BLOCK_PLANKS));
}).setBlockTags(BlockTags.WOODEN_SLABS, BlockTags.SLABS)
.setItemTags(ItemTags.WOODEN_SLABS, ItemTags.SLABS));
addBlockEntry(new BlockEntry(BLOCK_FENCE, (complexMaterial, settings) -> {
return new BaseFenceBlock(getBlock(BLOCK_PLANKS));
}).setBlockTags(BlockTags.FENCES, BlockTags.WOODEN_FENCES)
.setItemTags(ItemTags.FENCES, ItemTags.WOODEN_FENCES));
addBlockEntry(new BlockEntry(BLOCK_GATE, (complexMaterial, settings) -> {
return new BaseGateBlock(getBlock(BLOCK_PLANKS));
}).setBlockTags(BlockTags.FENCE_GATES));
addBlockEntry(new BlockEntry(BLOCK_BUTTON, (complexMaterial, settings) -> {
return new BaseWoodenButtonBlock(getBlock(BLOCK_PLANKS));
}).setBlockTags(BlockTags.BUTTONS, BlockTags.WOODEN_BUTTONS)
.setItemTags(ItemTags.BUTTONS, ItemTags.WOODEN_BUTTONS));
addBlockEntry(new BlockEntry(BLOCK_PRESSURE_PLATE, (complexMaterial, settings) -> {
return new WoodenPressurePlateBlock(getBlock(BLOCK_PLANKS));
}).setBlockTags(BlockTags.PRESSURE_PLATES, BlockTags.WOODEN_PRESSURE_PLATES)
.setItemTags(ItemTags.WOODEN_PRESSURE_PLATES));
addBlockEntry(new BlockEntry(BLOCK_TRAPDOOR, (complexMaterial, settings) -> {
return new BaseTrapdoorBlock(getBlock(BLOCK_PLANKS));
}).setBlockTags(BlockTags.TRAPDOORS, BlockTags.WOODEN_TRAPDOORS)
.setItemTags(ItemTags.TRAPDOORS, ItemTags.WOODEN_TRAPDOORS));
addBlockEntry(new BlockEntry(BLOCK_DOOR, (complexMaterial, settings) -> {
return new BaseDoorBlock(getBlock(BLOCK_PLANKS));
}).setBlockTags(BlockTags.DOORS, BlockTags.WOODEN_DOORS)
.setItemTags(ItemTags.DOORS, ItemTags.WOODEN_DOORS));
addBlockEntry(new BlockEntry(BLOCK_STAIRS, (complexMaterial, settings) -> new BaseStairsBlock(getBlock(BLOCK_PLANKS)))
.setBlockTags(TagAPI.NAMED_BLOCK_WOODEN_STAIRS, TagAPI.NAMED_BLOCK_STAIRS)
.setItemTags(TagAPI.NAMED_ITEM_WOODEN_STAIRS, TagAPI.NAMED_ITEM_STAIRS));
addBlockEntry(new BlockEntry(BLOCK_SLAB, (complexMaterial, settings) -> new BaseSlabBlock(getBlock(BLOCK_PLANKS)))
.setBlockTags(TagAPI.NAMED_BLOCK_WOODEN_SLABS, TagAPI.NAMED_BLOCK_SLABS)
.setItemTags(TagAPI.NAMED_ITEM_WOODEN_SLABS, TagAPI.NAMED_ITEM_SLABS));
addBlockEntry(new BlockEntry(BLOCK_LADDER, (complexMaterial, settings) -> {
return new BaseLadderBlock(getBlock(BLOCK_PLANKS));
}).setBlockTags(BlockTags.CLIMBABLE));
addBlockEntry(new BlockEntry(BLOCK_SIGN, (complexMaterial, settings) -> {
return new BaseSignBlock(getBlock(BLOCK_PLANKS));
}).setBlockTags(BlockTags.SIGNS)
.setItemTags(ItemTags.SIGNS));
addBlockEntry(new BlockEntry(BLOCK_FENCE, (complexMaterial, settings) -> new BaseFenceBlock(getBlock(BLOCK_PLANKS)))
.setBlockTags(TagAPI.NAMED_BLOCK_FENCES, TagAPI.NAMED_BLOCK_WOODEN_FENCES)
.setItemTags(TagAPI.NAMED_ITEM_FENCES, TagAPI.NAMED_ITEM_WOODEN_FENCES));
addBlockEntry(new BlockEntry(BLOCK_GATE, (complexMaterial, settings) -> new BaseGateBlock(getBlock(BLOCK_PLANKS)))
.setBlockTags(TagAPI.NAMED_BLOCK_FENCE_GATES));
addBlockEntry(new BlockEntry(BLOCK_BUTTON, (complexMaterial, settings) -> new BaseWoodenButtonBlock(getBlock(BLOCK_PLANKS)))
.setBlockTags(TagAPI.NAMED_BLOCK_BUTTONS, TagAPI.NAMED_BLOCK_WOODEN_BUTTONS)
.setItemTags(TagAPI.NAMED_ITEM_BUTTONS, TagAPI.NAMED_ITEM_WOODEN_BUTTONS));
addBlockEntry(new BlockEntry(BLOCK_PRESSURE_PLATE, (complexMaterial, settings) -> new WoodenPressurePlateBlock(getBlock(BLOCK_PLANKS)))
.setBlockTags(TagAPI.NAMED_BLOCK_PRESSURE_PLATES, TagAPI.NAMED_BLOCK_WOODEN_PRESSURE_PLATES)
.setItemTags(TagAPI.NAMED_ITEM_WOODEN_PRESSURE_PLATES));
addBlockEntry(new BlockEntry(BLOCK_TRAPDOOR, (complexMaterial, settings) -> new BaseTrapdoorBlock(getBlock(BLOCK_PLANKS)))
.setBlockTags(TagAPI.NAMED_BLOCK_TRAPDOORS, TagAPI.NAMED_BLOCK_WOODEN_TRAPDOORS)
.setItemTags(TagAPI.NAMED_ITEM_TRAPDOORS, TagAPI.NAMED_ITEM_WOODEN_TRAPDOORS));
addBlockEntry(new BlockEntry(BLOCK_DOOR, (complexMaterial, settings) -> new BaseDoorBlock(getBlock(BLOCK_PLANKS)))
.setBlockTags(TagAPI.NAMED_BLOCK_DOORS, TagAPI.NAMED_BLOCK_WOODEN_DOORS)
.setItemTags(TagAPI.NAMED_ITEM_DOORS, TagAPI.NAMED_ITEM_WOODEN_DOORS));
addBlockEntry(new BlockEntry(BLOCK_LADDER, (complexMaterial, settings) -> new BaseLadderBlock(getBlock(BLOCK_PLANKS)))
.setBlockTags(TagAPI.NAMED_BLOCK_CLIMBABLE));
addBlockEntry(new BlockEntry(BLOCK_SIGN, (complexMaterial, settings) -> new BaseSignBlock(getBlock(BLOCK_PLANKS)))
.setBlockTags(TagAPI.NAMED_BLOCK_SIGNS)
.setItemTags(TagAPI.NAMED_ITEM_SIGNS));
}
final protected void initStorage(FabricBlockSettings blockSettings, FabricItemSettings itemSettings) {
addBlockEntry(new BlockEntry(BLOCK_CHEST, (complexMaterial, settings) -> {
return new BaseChestBlock(getBlock(BLOCK_PLANKS));
}).setBlockTags(TagAPI.BLOCK_CHEST, TagAPI.BLOCK_WOODEN_CHEST)
.setItemTags(TagAPI.ITEM_CHEST, TagAPI.ITEM_WOODEN_CHEST));
addBlockEntry(new BlockEntry(BLOCK_CHEST, (complexMaterial, settings) -> new BaseChestBlock(getBlock(BLOCK_PLANKS)))
.setBlockTags(TagAPI.NAMED_COMMON_BLOCK_CHEST, TagAPI.NAMED_COMMON_BLOCK_WOODEN_CHEST)
.setItemTags(TagAPI.NAMED_COMMON_ITEM_CHEST, TagAPI.NAMED_COMMON_ITEM_WOODEN_CHEST));
addBlockEntry(new BlockEntry(BLOCK_BARREL, (complexMaterial, settings) -> {
return new BaseBarrelBlock(getBlock(BLOCK_PLANKS));
}).setBlockTags(TagAPI.BLOCK_BARREL, TagAPI.BLOCK_WOODEN_BARREL)
.setItemTags(TagAPI.ITEM_BARREL, TagAPI.ITEM_WOODEN_BARREL));
addBlockEntry(new BlockEntry(BLOCK_BARREL, (complexMaterial, settings) -> new BaseBarrelBlock(getBlock(BLOCK_PLANKS)))
.setBlockTags(TagAPI.NAMED_COMMON_BLOCK_BARREL, TagAPI.NAMED_COMMON_BLOCK_WOODEN_BARREL)
.setItemTags(TagAPI.NAMED_COMMON_ITEM_BARREL, TagAPI.NAMED_COMMON_ITEM_WOODEN_BARREL));
}
final protected void initDecorations(FabricBlockSettings blockSettings, FabricItemSettings itemSettings) {
addBlockEntry(new BlockEntry(BLOCK_CRAFTING_TABLE, (complexMaterial, settings) -> {
return new BaseCraftingTableBlock(getBlock(BLOCK_PLANKS));
}).setBlockTags(TagAPI.BLOCK_WORKBENCHES)
.setItemTags(TagAPI.ITEM_WORKBENCHES));
addBlockEntry(new BlockEntry(BLOCK_CRAFTING_TABLE, (complexMaterial, settings) -> new BaseCraftingTableBlock(getBlock(BLOCK_PLANKS)))
.setBlockTags(TagAPI.NAMED_COMMON_BLOCK_WORKBENCHES)
.setItemTags(TagAPI.NAMED_COMMON_ITEM_WORKBENCHES));
addBlockEntry(new BlockEntry(BLOCK_BOOKSHELF, (complexMaterial, settings) -> {
return new BaseBookshelfBlock(getBlock(BLOCK_PLANKS));
}).setBlockTags(TagAPI.BLOCK_BOOKSHELVES));
addBlockEntry(new BlockEntry(BLOCK_BOOKSHELF, (complexMaterial, settings) -> new BaseBookshelfBlock(getBlock(BLOCK_PLANKS)))
.setBlockTags(TagAPI.NAMED_COMMON_BLOCK_BOOKSHELVES));
addBlockEntry(new BlockEntry(BLOCK_COMPOSTER, (complexMaterial, settings) -> {
return new BaseComposterBlock(getBlock(BLOCK_PLANKS));
}));
addBlockEntry(new BlockEntry(BLOCK_COMPOSTER, (complexMaterial, settings) -> new BaseComposterBlock(getBlock(BLOCK_PLANKS))));
}
@Override

View file

@ -2,10 +2,10 @@ package ru.bclib.complexmaterials.entry;
import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.tags.Tag;
import net.minecraft.world.item.Item;
import net.minecraft.world.level.block.Block;
import ru.bclib.api.TagAPI;
import ru.bclib.api.TagAPI.TagLocation;
import ru.bclib.complexmaterials.ComplexMaterial;
import ru.bclib.registry.BlockRegistry;
@ -15,8 +15,8 @@ public class BlockEntry extends ComplexMaterialEntry {
final BiFunction<ComplexMaterial, FabricBlockSettings, Block> initFunction;
final boolean hasItem;
Tag.Named<Block>[] blockTags;
Tag.Named<Item>[] itemTags;
TagLocation<Block>[] blockTags;
TagLocation<Item>[] itemTags;
public BlockEntry(String suffix, BiFunction<ComplexMaterial, FabricBlockSettings, Block> initFunction) {
this(suffix, true, initFunction);
@ -28,12 +28,12 @@ public class BlockEntry extends ComplexMaterialEntry {
this.hasItem = hasItem;
}
public BlockEntry setBlockTags(Tag.Named<Block>... blockTags) {
public BlockEntry setBlockTags(TagLocation<Block>... blockTags) {
this.blockTags = blockTags;
return this;
}
public BlockEntry setItemTags(Tag.Named<Item>... itemTags) {
public BlockEntry setItemTags(TagLocation<Item>... itemTags) {
this.itemTags = itemTags;
return this;
}
@ -44,14 +44,14 @@ public class BlockEntry extends ComplexMaterialEntry {
if (hasItem) {
registry.register(location, block);
if (itemTags != null) {
TagAPI.addTags(block, itemTags);
TagAPI.addItemTags(block, itemTags);
}
}
else {
registry.registerBlockOnly(location, block);
}
if (blockTags != null) {
TagAPI.addTags(block, blockTags);
TagAPI.addBlockTags(block, blockTags);
}
return block;
}

View file

@ -2,9 +2,9 @@ package ru.bclib.complexmaterials.entry;
import net.fabricmc.fabric.api.item.v1.FabricItemSettings;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.tags.Tag;
import net.minecraft.world.item.Item;
import ru.bclib.api.TagAPI;
import ru.bclib.api.TagAPI.TagLocation;
import ru.bclib.complexmaterials.ComplexMaterial;
import ru.bclib.registry.ItemRegistry;
@ -13,14 +13,14 @@ import java.util.function.BiFunction;
public class ItemEntry extends ComplexMaterialEntry {
final BiFunction<ComplexMaterial, FabricItemSettings, Item> initFunction;
Tag.Named<Item>[] itemTags;
TagLocation<Item>[] itemTags;
public ItemEntry(String suffix, BiFunction<ComplexMaterial, FabricItemSettings, Item> initFunction) {
super(suffix);
this.initFunction = initFunction;
}
public ItemEntry setItemTags(Tag.Named<Item>[] itemTags) {
public ItemEntry setItemTags(TagLocation<Item>[] itemTags) {
this.itemTags = itemTags;
return this;
}
@ -30,7 +30,7 @@ public class ItemEntry extends ComplexMaterialEntry {
Item item = initFunction.apply(material, itemSettings);
registry.register(location, item);
if (itemTags != null) {
TagAPI.addTags(item, itemTags);
TagAPI.addItemTags(item, itemTags);
}
return item;
}

View file

@ -1,12 +1,11 @@
package ru.bclib.interfaces;
import net.minecraft.tags.Tag;
import net.minecraft.tags.Tag.Named;
import net.minecraft.world.item.Item;
import net.minecraft.world.level.block.Block;
import ru.bclib.api.TagAPI.TagLocation;
import java.util.List;
public interface TagProvider {
void addTags(List<Named<Block>> blockTags, List<Tag.Named<Item>> itemTags);
void addTags(List<TagLocation<Block>> blockTags, List<TagLocation<Item>> itemTags);
}

View file

@ -1,5 +1,6 @@
package ru.bclib.items.tool;
import net.fabricmc.fabric.api.tool.attribute.v1.FabricToolTags;
import net.minecraft.world.item.Item;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.Items;
@ -12,12 +13,12 @@ public class BaseShearsItem extends ShearsItem {
}
public static boolean isShear(ItemStack tool){
return tool.is(Items.SHEARS) | tool.is(TagAPI.ITEM_COMMON_SHEARS) || tool.is(TagAPI.ITEM_SHEARS);
return tool.is(Items.SHEARS) | tool.is(TagAPI.COMMON_ITEM_SHEARS) || tool.is(FabricToolTags.SHEARS);
}
public static boolean isShear(ItemStack itemStack, Item item){
if (item == Items.SHEARS){
return itemStack.is(item) | itemStack.is(TagAPI.ITEM_COMMON_SHEARS) || itemStack.is(TagAPI.ITEM_SHEARS);
return itemStack.is(item) | itemStack.is(TagAPI.COMMON_ITEM_SHEARS) || itemStack.is(FabricToolTags.SHEARS);
} else {
return itemStack.is(item);
}

View file

@ -20,6 +20,6 @@ public abstract class EnchantingTableBlockMixin extends Block {
target = "Lnet/minecraft/world/level/block/state/BlockState;is(Lnet/minecraft/world/level/block/Block;)Z")//,
)
private boolean bclib_isBookshelf(BlockState state, Block block) {
return block == Blocks.BOOKSHELF ? state.is(TagAPI.BLOCK_BOOKSHELVES) : state.is(block);
return block == Blocks.BOOKSHELF ? state.is(TagAPI.COMMON_BLOCK_BOOKSHELVES) : state.is(block);
}
}

View file

@ -23,7 +23,7 @@ public abstract class CraftingMenuMixin {
private void bclib_stillValid(Player player, CallbackInfoReturnable<Boolean> info) {
if (access.evaluate((world, pos) -> {
BlockState state = world.getBlockState(pos);
return state.getBlock() instanceof CraftingTableBlock || state.is(TagAPI.BLOCK_WORKBENCHES);
return state.getBlock() instanceof CraftingTableBlock || state.is(TagAPI.COMMON_BLOCK_WORKBENCHES);
}, true)) {
info.setReturnValue(true);
}

View file

@ -22,6 +22,6 @@ public abstract class EnchantmentMenuMixin extends AbstractContainerMenu {
target = "Lnet/minecraft/world/level/block/state/BlockState;is(Lnet/minecraft/world/level/block/Block;)Z")//,
)
private boolean bclib_isBookshelf(BlockState state, Block block) {
return block == Blocks.BOOKSHELF ? state.is(TagAPI.BLOCK_BOOKSHELVES) : state.is(block);
return block == Blocks.BOOKSHELF ? state.is(TagAPI.COMMON_BLOCK_BOOKSHELVES) : state.is(block);
}
}

View file

@ -21,7 +21,6 @@ import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
import ru.bclib.BCLib;
import ru.bclib.api.biomes.BiomeAPI;
import ru.bclib.api.dataexchange.DataExchangeAPI;
import ru.bclib.recipes.BCLRecipeManager;

View file

@ -15,7 +15,7 @@ import ru.bclib.api.TagAPI;
public class PistonBaseBlockMixin {
@Inject(method="isPushable", at=@At("HEAD"), cancellable = true)
private static void bclib_isPushable(BlockState blockState, Level level, BlockPos blockPos, Direction direction, boolean bl, Direction direction2, CallbackInfoReturnable<Boolean> cir){
if (blockState.is(TagAPI.BLOCK_IMMOBILE)){
if (blockState.is(TagAPI.COMMON_BLOCK_IMMOBILE)){
cir.setReturnValue(false);
cir.cancel();
}

View file

@ -28,6 +28,6 @@ public class PortalShapeMixin {
}
private static boolean be_FRAME(StatePredicate FRAME, BlockState state, BlockGetter getter, BlockPos pos){
return state.is(TagAPI.BLOCK_NETHER_PORTAL_FRAME) || FRAME.test(state, getter, pos);
return state.is(TagAPI.COMMON_BLOCK_NETHER_PORTAL_FRAME) || FRAME.test(state, getter, pos);
}
}

View file

@ -1,12 +1,10 @@
package ru.bclib.mixin.common.shears;
import net.fabricmc.fabric.api.tool.attribute.v1.FabricToolTags;
import net.minecraft.advancements.critereon.ItemPredicate;
import net.minecraft.advancements.critereon.ItemPredicate.Builder;
import net.minecraft.tags.Tag;
import net.minecraft.world.item.Item;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.Items;
import net.minecraft.world.level.ItemLike;
import org.jetbrains.annotations.Nullable;
import org.spongepowered.asm.mixin.Final;
import org.spongepowered.asm.mixin.Mixin;
@ -26,7 +24,7 @@ public abstract class ItemPredicateBuilderMixin {
@Inject(method = "matches", at = @At("HEAD"), cancellable = true)
void bclib_of(ItemStack itemStack, CallbackInfoReturnable<Boolean> cir) {
if (this.items != null && this.items.size() == 1 && this.items.contains(Items.SHEARS)) {
if (itemStack.is(TagAPI.ITEM_COMMON_SHEARS) || itemStack.is(TagAPI.ITEM_SHEARS)){
if (itemStack.is(TagAPI.COMMON_ITEM_SHEARS) || itemStack.is(FabricToolTags.SHEARS)){
cir.setReturnValue(true);
}
}

View file

@ -116,7 +116,7 @@ public class AnvilRecipe implements Recipe<Container>, UnknownReceipBookCategory
public boolean matches(Container craftingInventory) {
ItemStack hammer = craftingInventory.getItem(1);
if (hammer.isEmpty() || !TagAPI.ITEM_HAMMERS.contains(hammer.getItem())) {
if (hammer.isEmpty() || !TagAPI.COMMON_ITEM_HAMMERS.contains(hammer.getItem())) {
return false;
}
ItemStack material = craftingInventory.getItem(0);
@ -140,7 +140,7 @@ public class AnvilRecipe implements Recipe<Container>, UnknownReceipBookCategory
@Override
public NonNullList<Ingredient> getIngredients() {
NonNullList<Ingredient> defaultedList = NonNullList.create();
defaultedList.add(Ingredient.of(TagAPI.ITEM_HAMMERS
defaultedList.add(Ingredient.of(TagAPI.COMMON_ITEM_HAMMERS
.getValues()
.stream()
.filter(hammer -> ((TieredItem) hammer).getTier().getLevel() >= toolLevel)

View file

@ -12,23 +12,23 @@ public class CraftingRecipes {
GridRecipe.make(BCLib.MOD_ID, "tag_smith_table", Blocks.SMITHING_TABLE)
.setShape("II", "##", "##")
.addMaterial('#', ItemTags.PLANKS)
.addMaterial('I', TagAPI.ITEM_IRON_INGOTS)
.addMaterial('I', TagAPI.COMMON_ITEM_IRON_INGOTS)
.checkConfig(Configs.RECIPE_CONFIG)
.build();
GridRecipe.make(BCLib.MOD_ID, "tag_cauldron", Blocks.CAULDRON)
.setShape("I I", "I I", "III")
.addMaterial('I', TagAPI.ITEM_IRON_INGOTS)
.addMaterial('I', TagAPI.COMMON_ITEM_IRON_INGOTS)
.checkConfig(Configs.RECIPE_CONFIG)
.build();
GridRecipe.make(BCLib.MOD_ID, "tag_hopper", Blocks.HOPPER)
.setShape("I I", "ICI", " I ")
.addMaterial('I', TagAPI.ITEM_IRON_INGOTS)
.addMaterial('C', TagAPI.ITEM_CHEST)
.addMaterial('I', TagAPI.COMMON_ITEM_IRON_INGOTS)
.addMaterial('C', TagAPI.COMMON_ITEM_CHEST)
.checkConfig(Configs.RECIPE_CONFIG)
.build();
GridRecipe.make(BCLib.MOD_ID, "tag_piston", Blocks.PISTON)
.setShape("WWW", "CIC", "CDC")
.addMaterial('I', TagAPI.ITEM_IRON_INGOTS)
.addMaterial('I', TagAPI.COMMON_ITEM_IRON_INGOTS)
.addMaterial('D', Items.REDSTONE)
.addMaterial('C', Items.COBBLESTONE)
.addMaterial('W', ItemTags.PLANKS)
@ -37,50 +37,50 @@ public class CraftingRecipes {
GridRecipe.make(BCLib.MOD_ID, "tag_rail", Blocks.RAIL)
.setOutputCount(16)
.setShape("I I", "ISI", "I I")
.addMaterial('I', TagAPI.ITEM_IRON_INGOTS)
.addMaterial('I', TagAPI.COMMON_ITEM_IRON_INGOTS)
.addMaterial('S', Items.STICK)
.checkConfig(Configs.RECIPE_CONFIG)
.build();
GridRecipe.make(BCLib.MOD_ID, "tag_stonecutter", Blocks.STONECUTTER)
.setShape(" I ", "SSS")
.addMaterial('I', TagAPI.ITEM_IRON_INGOTS)
.addMaterial('I', TagAPI.COMMON_ITEM_IRON_INGOTS)
.addMaterial('S', Items.STONE)
.checkConfig(Configs.RECIPE_CONFIG)
.build();
GridRecipe.make(BCLib.MOD_ID, "tag_bucket", Items.BUCKET)
.setShape("I I", " I ")
.addMaterial('I', TagAPI.ITEM_IRON_INGOTS)
.addMaterial('I', TagAPI.COMMON_ITEM_IRON_INGOTS)
.checkConfig(Configs.RECIPE_CONFIG)
.build();
GridRecipe.make(BCLib.MOD_ID, "tag_compass", Items.COMPASS)
.setShape(" I ", "IDI", " I ")
.addMaterial('I', TagAPI.ITEM_IRON_INGOTS)
.addMaterial('I', TagAPI.COMMON_ITEM_IRON_INGOTS)
.addMaterial('D', Items.REDSTONE)
.checkConfig(Configs.RECIPE_CONFIG)
.build();
GridRecipe.make(BCLib.MOD_ID, "tag_minecart", Items.MINECART)
.setShape("I I", "III")
.addMaterial('I', TagAPI.ITEM_IRON_INGOTS)
.addMaterial('I', TagAPI.COMMON_ITEM_IRON_INGOTS)
.checkConfig(Configs.RECIPE_CONFIG)
.build();
GridRecipe.make(BCLib.MOD_ID, "tag_shield", Items.SHIELD)
.setShape("WIW", "WWW", " W ")
.addMaterial('I', TagAPI.ITEM_IRON_INGOTS)
.addMaterial('I', TagAPI.COMMON_ITEM_IRON_INGOTS)
.addMaterial('W', ItemTags.PLANKS)
.checkConfig(Configs.RECIPE_CONFIG)
.build();
GridRecipe.make(BCLib.MOD_ID, "tag_hopper", Blocks.HOPPER)
.setShape("I I", "ICI", " I ")
.addMaterial('I', TagAPI.ITEM_IRON_INGOTS)
.addMaterial('C', TagAPI.ITEM_CHEST)
.addMaterial('I', TagAPI.COMMON_ITEM_IRON_INGOTS)
.addMaterial('C', TagAPI.COMMON_ITEM_CHEST)
.checkConfig(Configs.RECIPE_CONFIG)
.build();
GridRecipe.make(BCLib.MOD_ID, "tag_shulker_box", Blocks.SHULKER_BOX)
.setShape("S", "C", "S")
.addMaterial('S', Items.SHULKER_SHELL)
.addMaterial('C', TagAPI.ITEM_CHEST)
.addMaterial('C', TagAPI.COMMON_ITEM_CHEST)
.checkConfig(Configs.RECIPE_CONFIG)
.build();
}

View file

@ -1,6 +1,5 @@
package ru.bclib.registry;
import net.fabricmc.fabric.api.mininglevel.v1.FabricMineableTags;
import net.fabricmc.fabric.api.registry.FlammableBlockRegistry;
import net.minecraft.core.Registry;
import net.minecraft.resources.ResourceLocation;
@ -43,16 +42,22 @@ public class BlockRegistry extends BaseRegistry<Block> {
getModBlocks(id.getNamespace()).add(block);
if (block instanceof BaseLeavesBlock){
TagAPI.addTags(block, TagAPI.BLOCK_LEAVES, TagAPI.MINEABLE_HOE, FabricMineableTags.SHEARS_MINEABLE);
TagAPI.addBlockTags(
block,
TagAPI.NAMED_BLOCK_LEAVES,
TagAPI.NAMED_COMMON_BLOCK_LEAVES,
TagAPI.NAMED_MINEABLE_HOE,
TagAPI.NAMED_MINEABLE_SHEARS
);
if (item != null){
TagAPI.addTags(item, TagAPI.ITEM_LEAVES);
TagAPI.addItemTags(item, TagAPI.NAMED_COMMON_ITEM_LEAVES, TagAPI.NAMED_ITEM_LEAVES);
}
} else if (block instanceof BaseOreBlock){
TagAPI.addTags(block, TagAPI.MINEABLE_PICKAXE);
TagAPI.addBlockTags(block, TagAPI.NAMED_MINEABLE_PICKAXE);
} else if (block instanceof FeatureSaplingBlock){
TagAPI.addTags(block, TagAPI.BLOCK_SAPLINGS);
TagAPI.addBlockTags(block, TagAPI.NAMED_COMMON_BLOCK_SAPLINGS, TagAPI.NAMED_BLOCK_SAPLINGS);
if (item != null){
TagAPI.addTags(item, TagAPI.ITEM_SAPLINGS);
TagAPI.addItemTags(item, TagAPI.NAMED_COMMON_ITEM_SAPLINGS, TagAPI.NAMED_ITEM_SAPLINGS);
}
}

View file

@ -1,6 +1,5 @@
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;
@ -8,7 +7,6 @@ import net.minecraft.core.dispenser.DefaultDispenseItemBehavior;
import net.minecraft.core.dispenser.ShearsDispenseItemBehavior;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.sounds.SoundEvent;
import net.minecraft.tags.Tag;
import net.minecraft.world.effect.MobEffectInstance;
import net.minecraft.world.entity.EntityType;
import net.minecraft.world.entity.Mob;
@ -71,22 +69,22 @@ public class ItemRegistry extends BaseRegistry<Item> {
registerItem(itemId, item);
if (item instanceof ShovelItem) {
TagAPI.addTag((Tag.Named<Item>) FabricToolTags.SHOVELS, item);
TagAPI.addItemTag(TagAPI.NAMED_FABRIC_SHOVELS, item);
}
else if (item instanceof SwordItem) {
TagAPI.addTag((Tag.Named<Item>) FabricToolTags.SWORDS, item);
TagAPI.addItemTag(TagAPI.NAMED_FABRIC_SWORDS, item);
}
else if (item instanceof BasePickaxeItem) {
TagAPI.addTag((Tag.Named<Item>) FabricToolTags.PICKAXES, item);
TagAPI.addItemTag(TagAPI.NAMED_FABRIC_PICKAXES, item);
}
else if (item instanceof BaseAxeItem) {
TagAPI.addTag((Tag.Named<Item>) FabricToolTags.AXES, item);
TagAPI.addItemTag(TagAPI.NAMED_FABRIC_AXES, item);
}
else if (item instanceof BaseHoeItem) {
TagAPI.addTag((Tag.Named<Item>) FabricToolTags.HOES, item);
TagAPI.addItemTag(TagAPI.NAMED_FABRIC_HOES, item);
}
else if (item instanceof BaseShearsItem) {
TagAPI.addTags(item, (Tag.Named<Item>) FabricToolTags.SHEARS, TagAPI.ITEM_SHEARS, TagAPI.ITEM_COMMON_SHEARS);
TagAPI.addItemTags(item, TagAPI.NAMED_FABRIC_SHEARS, TagAPI.NAMED_COMMON_ITEM_SHEARS);
DispenserBlock.registerBehavior(item.asItem(), new ShearsDispenseItemBehavior());
}

View file

@ -15,7 +15,6 @@ import net.minecraft.world.level.levelgen.placement.PlacedFeature;
import org.jetbrains.annotations.Nullable;
import ru.bclib.BCLib;
import ru.bclib.api.biomes.BiomeAPI;
import ru.bclib.config.Configs;
import ru.bclib.util.WeightedList;
import java.util.HashMap;

View file

@ -2,7 +2,6 @@ package ru.bclib.world.biomes;
import net.minecraft.world.level.biome.Biome;
import ru.bclib.config.Configs;
import ru.bclib.world.biomes.VanillaBiomeSettings.Builder;
public class BCLBiomeSettings {
public static Builder createBCL(){

View file

@ -106,9 +106,10 @@ public abstract class NBTStructureFeature extends DefaultFeature {
center = center.offset(0, getYOffset(structure, world, center, random) + 0.5, 0);
BoundingBox bounds = makeBox(center);
StructurePlaceSettings placementData = new StructurePlaceSettings().setRotation(rotation)
.setMirror(mirror)
.setBoundingBox(bounds);
StructurePlaceSettings placementData = new StructurePlaceSettings()
.setRotation(rotation)
.setMirror(mirror)
.setBoundingBox(bounds);
addStructureData(placementData);
center = center.offset(-offset.getX() * 0.5, 0, -offset.getZ() * 0.5);
structure.placeInWorld(world, center, center, placementData, random, 4);
@ -140,11 +141,11 @@ public abstract class NBTStructureFeature extends DefaultFeature {
mut.setZ(z);
mut.setY(surfMax);
BlockState state = world.getBlockState(mut);
if (!state.is(TagAPI.BLOCK_GEN_TERRAIN) && state.isFaceSturdy(world, mut, Direction.DOWN)) {
if (!isTerrain(state) && state.isFaceSturdy(world, mut, Direction.DOWN)) {
for (int i = 0; i < 10; i++) {
mut.setY(mut.getY() - 1);
BlockState stateSt = world.getBlockState(mut);
if (!stateSt.is(TagAPI.BLOCK_GEN_TERRAIN)) {
if (!isTerrain(stateSt)) {
if (merge == TerrainMerge.SURFACE) {
boolean isTop = mut.getY() == surfMax && state.getMaterial().isSolidBlocking();
Biome b = world.getBiome(mut);
@ -156,7 +157,7 @@ public abstract class NBTStructureFeature extends DefaultFeature {
}
}
else {
if (stateSt.is(TagAPI.BLOCK_END_GROUND) && state.getMaterial().isSolidBlocking()) {
if (isTerrain(state) && state.getMaterial().isSolidBlocking()) {
if (merge == TerrainMerge.SURFACE) {
Biome b = world.getBiome(mut);
BlockState bottom = BiomeAPI.findUnderMaterial(b).orElse(defaultBlock);
@ -178,6 +179,10 @@ public abstract class NBTStructureFeature extends DefaultFeature {
return true;
}
private boolean isTerrain(BlockState state) {
return state.is(TagAPI.COMMON_BLOCK_END_STONES) || state.is(TagAPI.COMMON_BLOCK_NETHER_STONES);
}
protected BoundingBox makeBox(BlockPos pos) {
int sx = ((pos.getX() >> 4) << 4) - 16;
int sz = ((pos.getZ() >> 4) << 4) - 16;
@ -210,7 +215,7 @@ public abstract class NBTStructureFeature extends DefaultFeature {
return template;
}
public static enum TerrainMerge {
public enum TerrainMerge {
NONE, SURFACE, OBJECT;
public static TerrainMerge getFromString(String type) {

View file

@ -4,8 +4,6 @@ import net.minecraft.core.Registry;
import net.minecraft.world.level.biome.Biome;
import net.minecraft.world.level.biome.BiomeSource;
import ru.bclib.api.biomes.BiomeAPI;
import ru.bclib.world.biomes.BCLBiome;
import ru.bclib.world.biomes.BCLBiomeSettings;
import java.util.List;