From 92cc8fc679199024b1675e77447737caa85da008 Mon Sep 17 00:00:00 2001 From: Dennis C Date: Tue, 30 May 2023 00:35:15 +0200 Subject: [PATCH] [1.18.x] Add Forge "bosses" tag (#9513) --- .../data/forge/tags/entity_types/bosses.json | 7 +++++ .../net/minecraftforge/common/ForgeMod.java | 2 ++ .../java/net/minecraftforge/common/Tags.java | 14 +++++++++ .../data/ForgeEntityTypeTagsProvider.java | 31 +++++++++++++++++++ 4 files changed, 54 insertions(+) create mode 100644 src/generated/resources/data/forge/tags/entity_types/bosses.json create mode 100644 src/main/java/net/minecraftforge/common/data/ForgeEntityTypeTagsProvider.java diff --git a/src/generated/resources/data/forge/tags/entity_types/bosses.json b/src/generated/resources/data/forge/tags/entity_types/bosses.json new file mode 100644 index 0000000000..4b3521261b --- /dev/null +++ b/src/generated/resources/data/forge/tags/entity_types/bosses.json @@ -0,0 +1,7 @@ +{ + "replace": false, + "values": [ + "minecraft:ender_dragon", + "minecraft:wither" + ] +} \ No newline at end of file diff --git a/src/main/java/net/minecraftforge/common/ForgeMod.java b/src/main/java/net/minecraftforge/common/ForgeMod.java index 4908845f06..4993cecdf4 100644 --- a/src/main/java/net/minecraftforge/common/ForgeMod.java +++ b/src/main/java/net/minecraftforge/common/ForgeMod.java @@ -24,6 +24,7 @@ import net.minecraftforge.common.crafting.DifferenceIngredient; import net.minecraftforge.common.crafting.IntersectionIngredient; import net.minecraftforge.common.data.ExistingFileHelper; import net.minecraftforge.common.data.ForgeBiomeTagsProvider; +import net.minecraftforge.common.data.ForgeEntityTypeTagsProvider; import net.minecraftforge.common.data.ForgeFluidTagsProvider; import net.minecraftforge.common.extensions.IForgeEntity; import net.minecraftforge.common.extensions.IForgePlayer; @@ -235,6 +236,7 @@ public class ForgeMod gen.addProvider(new ForgeRecipeProvider(gen)); gen.addProvider(new ForgeLootTableProvider(gen)); gen.addProvider(new ForgeBiomeTagsProvider(gen, existingFileHelper)); + gen.addProvider(new ForgeEntityTypeTagsProvider(gen, existingFileHelper)); } } diff --git a/src/main/java/net/minecraftforge/common/Tags.java b/src/main/java/net/minecraftforge/common/Tags.java index 722f82a13e..b126798a5d 100644 --- a/src/main/java/net/minecraftforge/common/Tags.java +++ b/src/main/java/net/minecraftforge/common/Tags.java @@ -12,6 +12,7 @@ import net.minecraft.tags.BlockTags; import net.minecraft.tags.FluidTags; import net.minecraft.tags.ItemTags; import net.minecraft.tags.TagKey; +import net.minecraft.world.entity.EntityType; import net.minecraft.world.item.DyeColor; import net.minecraft.world.item.Item; import net.minecraft.world.level.biome.Biome; @@ -31,6 +32,7 @@ public class Tags Items.init(); Fluids.init(); Biomes.init(); + EntityTypes.init(); } public static class Blocks @@ -483,4 +485,16 @@ public class Tags return TagKey.create(Registry.BIOME_REGISTRY, new ResourceLocation("forge", name)); } } + + public static class EntityTypes + { + private static void init() {} + + public static final TagKey> BOSSES = tag("bosses"); + + private static TagKey> tag(String name) + { + return TagKey.create(Registry.ENTITY_TYPE_REGISTRY, new ResourceLocation("forge", name)); + } + } } diff --git a/src/main/java/net/minecraftforge/common/data/ForgeEntityTypeTagsProvider.java b/src/main/java/net/minecraftforge/common/data/ForgeEntityTypeTagsProvider.java new file mode 100644 index 0000000000..e164265375 --- /dev/null +++ b/src/main/java/net/minecraftforge/common/data/ForgeEntityTypeTagsProvider.java @@ -0,0 +1,31 @@ +/* + * Copyright (c) Forge Development LLC and contributors + * SPDX-License-Identifier: LGPL-2.1-only + */ + +package net.minecraftforge.common.data; + +import net.minecraft.data.DataGenerator; +import net.minecraft.data.tags.EntityTypeTagsProvider; +import net.minecraft.world.entity.EntityType; +import net.minecraftforge.common.Tags; + +public final class ForgeEntityTypeTagsProvider extends EntityTypeTagsProvider +{ + public ForgeEntityTypeTagsProvider(DataGenerator generator, ExistingFileHelper existingFileHelper) + { + super(generator, "forge", existingFileHelper); + } + + @Override + protected void addTags() + { + tag(Tags.EntityTypes.BOSSES).add(EntityType.ENDER_DRAGON, EntityType.WITHER); + } + + @Override + public String getName() + { + return "Forge EntityType Tags"; + } +}