Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ protected void configure(RegistryWrapper.WrapperLookup wrapperLookup) {
builder(HAS_PALMS)
.add(DESERT)
.addOptionalTag(ConventionalBiomeTags.IS_DESERT);
builder(HAS_DARK_FOREST_WITCH_HUT)
builder(HAS_DARK_FOREST_WITCH_HUTS)
.add(DARK_FOREST, PALE_GARDEN)
.addOptionalTag(ConventionalBiomeTags.IS_DARK_FOREST);

Expand Down Expand Up @@ -63,5 +63,15 @@ protected void configure(RegistryWrapper.WrapperLookup wrapperLookup) {
builder(BiomeTags.SPAWNS_SNOW_FOXES).add(GLACARIAN_TAIGA);
builder(BiomeTags.SPAWNS_WHITE_RABBITS).add(GLACARIAN_TAIGA);
builder(BiomeTags.SNOW_GOLEM_MELTS).add(DARK_AMARANTH_FOREST);

// Conventional
builder(PRIMARY_WOOD_TYPE_SAKURA).addTag(SAKURA_GROVES);
builder(PRIMARY_WOOD_TYPE_PALM).addTag(HAS_PALMS);
builder(PRIMARY_WOOD_TYPE_MAPLE).add(CARNELIAN_TREEWAY);
builder(PRIMARY_WOOD_TYPE_DARK_AMARANTH).add(DARK_AMARANTH_FOREST);
builder(ConventionalBiomeTags.IS_CONIFEROUS_TREE).add(CARNELIAN_TREEWAY);
builder(ConventionalBiomeTags.IS_SNOWY).add(GLACARIAN_TAIGA);
builder(ConventionalBiomeTags.IS_ICY).add(GLACARIAN_TAIGA);
builder(ConventionalBiomeTags.IS_NETHER_FOREST).add(DARK_AMARANTH_FOREST);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,13 +3,15 @@
import net.fabricmc.fabric.api.datagen.v1.FabricDataOutput;
import net.fabricmc.fabric.api.datagen.v1.provider.FabricTagProvider;
import net.fabricmc.fabric.api.tag.convention.v2.ConventionalBlockTags;
import net.fabricmc.fabric.api.tag.convention.v2.ConventionalItemTags;
import net.minecraft.block.Blocks;
import net.minecraft.registry.RegistryWrapper;
import net.minecraft.registry.tag.BlockTags;

import java.util.concurrent.CompletableFuture;

import static fr.hugman.promenade.block.PromenadeBlocks.*;
import static fr.hugman.promenade.item.PromenadeItems.MAPLE_SYRUP_BOTTLE;
import static fr.hugman.promenade.tag.PromenadeBlockTags.*;

public class PromenadeBlockTagProvider extends FabricTagProvider.BlockTagProvider {
Expand Down Expand Up @@ -218,5 +220,8 @@ protected void configure(RegistryWrapper.WrapperLookup wrapperLookup) {
valueLookupBuilder(ConventionalBlockTags.STRIPPED_LOGS).add(STRIPPED_SAKURA_LOG, STRIPPED_MAPLE_LOG, STRIPPED_PALM_LOG, STRIPPED_DARK_AMARANTH_STEM);
valueLookupBuilder(ConventionalBlockTags.STRIPPED_WOODS).add(STRIPPED_SAKURA_WOOD, STRIPPED_MAPLE_WOOD, STRIPPED_PALM_WOOD, STRIPPED_DARK_AMARANTH_HYPHAE);

valueLookupBuilder(IGNEOUS_ROCKS)
.add(Blocks.ANDESITE, Blocks.DIORITE, Blocks.GRANITE, Blocks.TUFF, BLUNITE);

}
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,18 @@

import fr.hugman.promenade.Promenade;
import fr.hugman.promenade.item.PromenadeItems;
import fr.hugman.promenade.tag.PromenadeBiomeTags;
import fr.hugman.promenade.tag.PromenadeBlockTags;
import fr.hugman.promenade.tag.PromenadeEntityTypeTags;
import fr.hugman.promenade.tag.PromenadeItemTags;
import net.fabricmc.fabric.api.datagen.v1.FabricDataOutput;
import net.fabricmc.fabric.api.datagen.v1.provider.FabricLanguageProvider;
import net.minecraft.registry.Registry;
import net.minecraft.registry.RegistryKey;
import net.minecraft.registry.RegistryKeys;
import net.minecraft.registry.RegistryWrapper;
import net.minecraft.registry.entry.RegistryEntry;
import net.minecraft.registry.tag.TagKey;
import net.minecraft.util.DyeColor;
import net.minecraft.util.Util;

Expand All @@ -31,11 +36,15 @@ public void generateTranslations(RegistryWrapper.WrapperLookup wrapperLookup, Tr

this.generateAutomaticTranslations(wrapperLookup, builder);

// Advancements

builder.add("advancements.promenade.adventure.kill_sunken_outside_water.description", "Kill a sunken that's outside of water using a crossbow while being submerged yourself");
builder.add("advancements.promenade.adventure.kill_sunken_outside_water.title", "Supernautica: Above Sixty-Two");
builder.add("advancements.promenade.husbandry.harvest_maple_syrup.description", "Strip a natural Maple tree using an Axe to collect Maple Syrup with a Bottle");
builder.add("advancements.promenade.husbandry.harvest_maple_syrup.title", "Don't Worry, Be Sappy!");

// Subtitles

builder.add("subtitles.promenade.entity.capybara.ambient", "Capybara squeaks");
builder.add("subtitles.promenade.entity.capybara.death", "Capybara dies");
builder.add("subtitles.promenade.entity.capybara.fart", "Capybara farts");
Expand All @@ -48,11 +57,62 @@ public void generateTranslations(RegistryWrapper.WrapperLookup wrapperLookup, Tr
builder.add("subtitles.promenade.entity.sunken.hurt", "Sunken hurts");
builder.add("subtitles.promenade.entity.sunken.shoot", "Sunken shoots");

// Tags

builder.add(PromenadeItemTags.APRICOTS_FOODS, "Apricots");
builder.add(PromenadeItemTags.BANANA_FOODS, "Bananas");
builder.add(PromenadeItemTags.MANGOES_FOODS, "Mangoes");
builder.add(PromenadeItemTags.BLUEBERRIES_FOODS, "Blueberries");
builder.add(PromenadeItemTags.MAPLE_SYRUP_DRINKS, "Maple Syrups");
builder.add(PromenadeItemTags.CAPYBARA_FOOD, "Food for Capybaras");
builder.add(PromenadeItemTags.DUCK_FOOD, "Food for Ducks");
builder.add(PromenadeBiomeTags.PRIMARY_WOOD_TYPE_SAKURA, "Sakura Primary Wood Type");
builder.add(PromenadeBiomeTags.PRIMARY_WOOD_TYPE_PALM, "Palm Primary Wood Type");
builder.add(PromenadeBiomeTags.PRIMARY_WOOD_TYPE_MAPLE, "Maple Primary Wood Type");
builder.add(PromenadeBiomeTags.PRIMARY_WOOD_TYPE_DARK_AMARANTH, "Dark Amaranth Primary Wood Type");
this.generateAutomaticTagTranslations(builder,
PromenadeBlockTags.SAKURA_LOGS,
PromenadeBlockTags.MAPLE_LOGS,
PromenadeBlockTags.PALM_LOGS,
PromenadeBlockTags.DARK_AMARANTH_STEMS,
PromenadeBlockTags.SNOWY_LEAVES,
PromenadeBlockTags.FALLEN_LEAVES,
PromenadeBlockTags.LEAF_PILES,
PromenadeBlockTags.FLOWER_PILES,
PromenadeBlockTags.DARK_AMARANTH_FUNGUS_PLACEABLE_ON,
PromenadeBlockTags.DARK_AMARANTH_FUNGUS_GROWABLE_ON,
PromenadeBlockTags.DARK_AMARANTH_ROOTS_PLACEABLE_ON,
PromenadeBlockTags.IGNEOUS_ROCKS,
PromenadeItemTags.SAKURA_LOGS,
PromenadeItemTags.MAPLE_LOGS,
PromenadeItemTags.PALM_LOGS,
PromenadeItemTags.DARK_AMARANTH_STEMS,
PromenadeItemTags.SNOWY_LEAVES,
PromenadeItemTags.IGNEOUS_ROCKS,
PromenadeEntityTypeTags.ANIMALS,
PromenadeEntityTypeTags.MONSTERS,
PromenadeEntityTypeTags.BIRDS,
PromenadeEntityTypeTags.RODENTS,
PromenadeEntityTypeTags.CREEPERS,
PromenadeBiomeTags.SAKURA_GROVES,
PromenadeBiomeTags.HAS_PALMS,
PromenadeBiomeTags.HAS_DARK_FOREST_WITCH_HUTS,
PromenadeBiomeTags.CAN_FREEZE_DURING_SNOWFALL,
PromenadeBiomeTags.SPAWNS_CAPYBARAS,
PromenadeBiomeTags.SPAWNS_SUNKEN,
PromenadeBiomeTags.SPAWNS_MALLARD_DUCKS,
PromenadeBiomeTags.SPAWNS_PEKIN_DUCKS
);

// Other

builder.add("name.hugman", "Hugman");
builder.add("death.fell.accident.coiled_vines", "%1$s fell off some coiled vines");
builder.add("gamerule.doBlocksGetSnowy", "Blocks can get snowy");
builder.add("gamerule.doBlocksGetSnowy.description", "Some blocks may turn into snowy variants when they are covered by a snow layer");

// Mod compatibility

builder.add("modmenu.descriptionTranslation.promenade", "Fancy and simplistic animals, biomes, structures and more!");
}

Expand Down Expand Up @@ -112,6 +172,14 @@ private void generateAutomaticTranslations(RegistryWrapper.WrapperLookup wrapper
}
}


private void generateAutomaticTagTranslations(TranslationBuilder builder, TagKey<?>... tagKeys) {
for (var tagKey : tagKeys) {
var id = tagKey.id();
builder.add(tagKey, snakeToTitleCase(id.getPath()));
}
}

private static <O> List<RegistryEntry.Reference<O>> getRegistryEntries(RegistryWrapper.WrapperLookup wrapperLookup, RegistryKey<? extends Registry<O>> registryKey) {
return wrapperLookup.getOrThrow(registryKey).streamEntries()
.filter(entry -> entry.registryKey().getValue().getNamespace().equals(Promenade.MOD_ID))
Expand Down
Original file line number Diff line number Diff line change
@@ -1,26 +1,41 @@
package fr.hugman.promenade.data.provider;

import fr.hugman.promenade.entity.PromenadeEntityTypes;
import net.fabricmc.fabric.api.datagen.v1.FabricDataOutput;
import net.fabricmc.fabric.api.datagen.v1.provider.FabricTagProvider;
import net.minecraft.registry.RegistryWrapper;
import net.minecraft.registry.tag.EntityTypeTags;

import java.util.concurrent.CompletableFuture;

import static fr.hugman.promenade.entity.PromenadeEntityTypes.*;
import static fr.hugman.promenade.tag.PromenadeEntityTypeTags.*;

public class PromenadeEntityTypeTagProvider extends FabricTagProvider.EntityTypeTagProvider {
public PromenadeEntityTypeTagProvider(FabricDataOutput output, CompletableFuture<RegistryWrapper.WrapperLookup> completableFuture) {
super(output, completableFuture);
}

@Override
protected void configure(RegistryWrapper.WrapperLookup wrapperLookup) {
// Vanilla
valueLookupBuilder(EntityTypeTags.SKELETONS).add(PromenadeEntityTypes.SUNKEN);
valueLookupBuilder(EntityTypeTags.AXOLOTL_ALWAYS_HOSTILES).add(PromenadeEntityTypes.SUNKEN);
valueLookupBuilder(EntityTypeTags.FREEZE_IMMUNE_ENTITY_TYPES).add(PromenadeEntityTypes.DUCK);
valueLookupBuilder(EntityTypeTags.FALL_DAMAGE_IMMUNE).add(PromenadeEntityTypes.DUCK);

valueLookupBuilder(EntityTypeTags.BOAT).add(PromenadeEntityTypes.SAKURA_BOAT, PromenadeEntityTypes.MAPLE_BOAT, PromenadeEntityTypes.PALM_BOAT);
}
public PromenadeEntityTypeTagProvider(FabricDataOutput output, CompletableFuture<RegistryWrapper.WrapperLookup> completableFuture) {
super(output, completableFuture);
}

@Override
protected void configure(RegistryWrapper.WrapperLookup wrapperLookup) {
// Vanilla
valueLookupBuilder(EntityTypeTags.SKELETONS).add(SUNKEN);
valueLookupBuilder(EntityTypeTags.BOAT).add(SAKURA_BOAT, MAPLE_BOAT, PALM_BOAT);
valueLookupBuilder(EntityTypeTags.AQUATIC).add(SUNKEN, CAPYBARA);

valueLookupBuilder(EntityTypeTags.AXOLOTL_ALWAYS_HOSTILES).add(SUNKEN);
valueLookupBuilder(EntityTypeTags.FREEZE_IMMUNE_ENTITY_TYPES).add(DUCK);
valueLookupBuilder(EntityTypeTags.FALL_DAMAGE_IMMUNE).add(DUCK);
valueLookupBuilder(EntityTypeTags.POWDER_SNOW_WALKABLE_MOBS).add(DUCK);
valueLookupBuilder(EntityTypeTags.NOT_SCARY_FOR_PUFFERFISH).add(CAPYBARA);
valueLookupBuilder(EntityTypeTags.CANDIDATE_FOR_IRON_GOLEM_GIFT).add(CAPYBARA);
valueLookupBuilder(EntityTypeTags.FOLLOWABLE_FRIENDLY_MOBS).add(DUCK, CAPYBARA);

// Conventional
valueLookupBuilder(ANIMALS).add(DUCK, CAPYBARA);
valueLookupBuilder(MONSTERS).add(LUSH_CREEPER);

valueLookupBuilder(BIRDS).add(DUCK);
valueLookupBuilder(RODENTS).add(CAPYBARA);
valueLookupBuilder(CREEPERS).add(LUSH_CREEPER);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -90,12 +90,36 @@ protected void configure(RegistryWrapper.WrapperLookup wrapperLookup) {
// Conventional
valueLookupBuilder(ConventionalItemTags.RAW_MEAT_FOODS).add(DUCK);
valueLookupBuilder(ConventionalItemTags.COOKED_MEAT_FOODS).add(COOKED_DUCK);
copy(ConventionalBlockTags.STONES, ConventionalItemTags.STONES);
copy(ConventionalBlockTags.FENCES, ConventionalItemTags.FENCES);
copy(ConventionalBlockTags.WOODEN_FENCES, ConventionalItemTags.WOODEN_FENCES);
copy(ConventionalBlockTags.FENCE_GATES, ConventionalItemTags.FENCE_GATES);
copy(ConventionalBlockTags.WOODEN_FENCE_GATES, ConventionalItemTags.WOODEN_FENCE_GATES);
copy(ConventionalBlockTags.STRIPPED_WOODS, ConventionalItemTags.STRIPPED_WOODS);
copy(ConventionalBlockTags.STRIPPED_LOGS, ConventionalItemTags.STRIPPED_LOGS);
}
valueLookupBuilder(APRICOTS_FOODS).add(APRICOT);
valueLookupBuilder(BANANA_FOODS).add(BANANA);
valueLookupBuilder(MANGOES_FOODS).add(MANGO);
valueLookupBuilder(BLUEBERRIES_FOODS).add(BLUEBERRIES);

valueLookupBuilder(ConventionalItemTags.FOODS)
.add(DUCK)
.add(COOKED_DUCK);

valueLookupBuilder(ConventionalItemTags.FRUIT_FOODS)
.addTag(APRICOTS_FOODS)
.addTag(BANANA_FOODS)
.addTag(MANGOES_FOODS);

valueLookupBuilder(ConventionalItemTags.BERRY_FOODS)
.addTag(BLUEBERRIES_FOODS);

valueLookupBuilder(MAPLE_SYRUP_DRINKS)
.add(MAPLE_SYRUP_BOTTLE);

valueLookupBuilder(ConventionalItemTags.DRINK_CONTAINING_BOTTLE)
.add(MAPLE_SYRUP_BOTTLE);

copy(ConventionalBlockTags.STONES, ConventionalItemTags.STONES);
copy(ConventionalBlockTags.FENCES, ConventionalItemTags.FENCES);
copy(ConventionalBlockTags.WOODEN_FENCES, ConventionalItemTags.WOODEN_FENCES);
copy(ConventionalBlockTags.FENCE_GATES, ConventionalItemTags.FENCE_GATES);
copy(ConventionalBlockTags.WOODEN_FENCE_GATES, ConventionalItemTags.WOODEN_FENCE_GATES);
copy(ConventionalBlockTags.STRIPPED_WOODS, ConventionalItemTags.STRIPPED_WOODS);
copy(ConventionalBlockTags.STRIPPED_LOGS, ConventionalItemTags.STRIPPED_LOGS);
copy(PromenadeBlockTags.IGNEOUS_ROCKS, IGNEOUS_ROCKS);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ public static void register(Registerable<Structure> registerable) {
registerable.register(
PromenadeStructureKeys.DARK_FOREST_WITCH_HUT,
new JigsawStructure(
new Structure.Config.Builder(biomes.getOrThrow(PromenadeBiomeTags.HAS_DARK_FOREST_WITCH_HUT))
new Structure.Config.Builder(biomes.getOrThrow(PromenadeBiomeTags.HAS_DARK_FOREST_WITCH_HUTS))
.step(GenerationStep.Feature.SURFACE_STRUCTURES)
.terrainAdaptation(StructureTerrainAdaptation.BEARD_THIN)
.build(),
Expand Down
14 changes: 13 additions & 1 deletion src/main/java/fr/hugman/promenade/tag/PromenadeBiomeTags.java
Original file line number Diff line number Diff line change
@@ -1,15 +1,18 @@
package fr.hugman.promenade.tag;

import fr.hugman.promenade.Promenade;
import net.fabricmc.fabric.api.tag.convention.v2.TagUtil;
import net.minecraft.item.Item;
Copy link

Copilot AI Oct 10, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Unused import: Item is not used in this file since it only defines Biome tags.

Suggested change
import net.minecraft.item.Item;

Copilot uses AI. Check for mistakes.
import net.minecraft.registry.RegistryKeys;
import net.minecraft.registry.tag.TagKey;
import net.minecraft.util.Identifier;
import net.minecraft.world.biome.Biome;

public class PromenadeBiomeTags {
public static final TagKey<Biome> SAKURA_GROVES = of("sakura_groves");

public static final TagKey<Biome> HAS_PALMS = of("has_palms");
public static final TagKey<Biome> HAS_DARK_FOREST_WITCH_HUT = of("has_structure/dark_forest_witch_hut");
public static final TagKey<Biome> HAS_DARK_FOREST_WITCH_HUTS = of("has_structure/dark_forest_witch_huts");

public static final TagKey<Biome> CAN_FREEZE_DURING_SNOWFALL = of("can_freeze_during_snowfall");

Expand All @@ -18,7 +21,16 @@ public class PromenadeBiomeTags {
public static final TagKey<Biome> SPAWNS_MALLARD_DUCKS = of("spawns_mallard_ducks");
public static final TagKey<Biome> SPAWNS_PEKIN_DUCKS = of("spawns_pekin_ducks");

public static final TagKey<Biome> PRIMARY_WOOD_TYPE_SAKURA = ofConventional("primary_wood_type/sakura");
public static final TagKey<Biome> PRIMARY_WOOD_TYPE_PALM = ofConventional("primary_wood_type/palm");
public static final TagKey<Biome> PRIMARY_WOOD_TYPE_MAPLE = ofConventional("primary_wood_type/maple");
public static final TagKey<Biome> PRIMARY_WOOD_TYPE_DARK_AMARANTH = ofConventional("primary_wood_type/dark_amaranth");

private static TagKey<Biome> of(String path) {
return TagKey.of(RegistryKeys.BIOME, Promenade.id(path));
}

private static TagKey<Biome> ofConventional(String path) {
return TagKey.of(RegistryKeys.BIOME, Identifier.of(TagUtil.C_TAG_NAMESPACE, path));
}
Comment on lines +24 to +35
Copy link

Copilot AI Oct 10, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Inconsistent indentation: lines 24-27, 33-35 use tabs while lines 29-31 use spaces. Should maintain consistent spacing throughout the file.

Suggested change
public static final TagKey<Biome> PRIMARY_WOOD_TYPE_SAKURA = ofConventional("primary_wood_type/sakura");
public static final TagKey<Biome> PRIMARY_WOOD_TYPE_PALM = ofConventional("primary_wood_type/palm");
public static final TagKey<Biome> PRIMARY_WOOD_TYPE_MAPLE = ofConventional("primary_wood_type/maple");
public static final TagKey<Biome> PRIMARY_WOOD_TYPE_DARK_AMARANTH = ofConventional("primary_wood_type/dark_amaranth");
private static TagKey<Biome> of(String path) {
return TagKey.of(RegistryKeys.BIOME, Promenade.id(path));
}
private static TagKey<Biome> ofConventional(String path) {
return TagKey.of(RegistryKeys.BIOME, Identifier.of(TagUtil.C_TAG_NAMESPACE, path));
}
public static final TagKey<Biome> PRIMARY_WOOD_TYPE_SAKURA = ofConventional("primary_wood_type/sakura");
public static final TagKey<Biome> PRIMARY_WOOD_TYPE_PALM = ofConventional("primary_wood_type/palm");
public static final TagKey<Biome> PRIMARY_WOOD_TYPE_MAPLE = ofConventional("primary_wood_type/maple");
public static final TagKey<Biome> PRIMARY_WOOD_TYPE_DARK_AMARANTH = ofConventional("primary_wood_type/dark_amaranth");
private static TagKey<Biome> of(String path) {
return TagKey.of(RegistryKeys.BIOME, Promenade.id(path));
}
private static TagKey<Biome> ofConventional(String path) {
return TagKey.of(RegistryKeys.BIOME, Identifier.of(TagUtil.C_TAG_NAMESPACE, path));
}

Copilot uses AI. Check for mistakes.
}
9 changes: 9 additions & 0 deletions src/main/java/fr/hugman/promenade/tag/PromenadeBlockTags.java
Original file line number Diff line number Diff line change
@@ -1,9 +1,12 @@
package fr.hugman.promenade.tag;

import fr.hugman.promenade.Promenade;
import net.fabricmc.fabric.api.tag.convention.v2.TagUtil;
import net.minecraft.block.Block;
import net.minecraft.item.Item;
import net.minecraft.registry.RegistryKeys;
import net.minecraft.registry.tag.TagKey;
import net.minecraft.util.Identifier;

public class PromenadeBlockTags {
public static final TagKey<Block> SAKURA_LOGS = of("sakura_logs");
Expand All @@ -21,7 +24,13 @@ public class PromenadeBlockTags {
public static final TagKey<Block> DARK_AMARANTH_FUNGUS_GROWABLE_ON = of("dark_amaranth_fungus_growable_on");
public static final TagKey<Block> DARK_AMARANTH_ROOTS_PLACEABLE_ON = of("dark_amaranth_roots_placeable_on");

public static final TagKey<Block> IGNEOUS_ROCKS = ofConventional("igneous_rocks");

public static TagKey<Block> of(String path) {
return TagKey.of(RegistryKeys.BLOCK, Promenade.id(path));
}

private static TagKey<Block> ofConventional(String path) {
return TagKey.of(RegistryKeys.BLOCK, Identifier.of(TagUtil.C_TAG_NAMESPACE, path));
}
}
25 changes: 25 additions & 0 deletions src/main/java/fr/hugman/promenade/tag/PromenadeEntityTypeTags.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
package fr.hugman.promenade.tag;

import fr.hugman.promenade.Promenade;
import net.fabricmc.fabric.api.tag.convention.v2.TagUtil;
import net.minecraft.entity.EntityType;
import net.minecraft.item.Item;
import net.minecraft.registry.RegistryKeys;
import net.minecraft.registry.tag.TagKey;
import net.minecraft.util.Identifier;

public class PromenadeEntityTypeTags {
public static final TagKey<EntityType<?>> ANIMALS = ofConventional("animals");
public static final TagKey<EntityType<?>> MONSTERS = ofConventional("monsters");
public static final TagKey<EntityType<?>> BIRDS = ofConventional("birds");
public static final TagKey<EntityType<?>> RODENTS = ofConventional("rodents");
public static final TagKey<EntityType<?>> CREEPERS = ofConventional("creepers");

private static TagKey<EntityType<?>> of(String path) {
return TagKey.of(RegistryKeys.ENTITY_TYPE, Promenade.id(path));
}

private static TagKey<EntityType<?>> ofConventional(String path) {
return TagKey.of(RegistryKeys.ENTITY_TYPE, Identifier.of(TagUtil.C_TAG_NAMESPACE, path));
}
}
Loading