From aeaebf57850fd30368a75443b64e12c15e55d4be Mon Sep 17 00:00:00 2001 From: Sara Freimer Date: Fri, 29 Jan 2021 21:02:08 -0500 Subject: [PATCH] Add a block tag to allow mods to blacklist blocks endermen should not be able to place blocks on top of, similar to how vanilla hardcodes against them being able to place things on bedrock (#7548) --- .../net/minecraft/entity/monster/EndermanEntity.java.patch | 2 +- .../data/forge/tags/blocks/enderman_place_on_blacklist.json | 4 ++++ src/main/java/net/minecraftforge/common/Tags.java | 1 + .../minecraftforge/common/data/ForgeBlockTagsProvider.java | 1 + 4 files changed, 7 insertions(+), 1 deletion(-) create mode 100644 src/generated/resources/data/forge/tags/blocks/enderman_place_on_blacklist.json diff --git a/patches/minecraft/net/minecraft/entity/monster/EndermanEntity.java.patch b/patches/minecraft/net/minecraft/entity/monster/EndermanEntity.java.patch index 8d4c119e82..2fc16f5bb5 100644 --- a/patches/minecraft/net/minecraft/entity/monster/EndermanEntity.java.patch +++ b/patches/minecraft/net/minecraft/entity/monster/EndermanEntity.java.patch @@ -59,7 +59,7 @@ private boolean func_220836_a(World p_220836_1_, BlockPos p_220836_2_, BlockState p_220836_3_, BlockState p_220836_4_, BlockState p_220836_5_, BlockPos p_220836_6_) { - return p_220836_4_.func_196958_f() && !p_220836_5_.func_196958_f() && !p_220836_5_.func_203425_a(Blocks.field_150357_h) && p_220836_5_.func_235785_r_(p_220836_1_, p_220836_6_) && p_220836_3_.func_196955_c(p_220836_1_, p_220836_2_) && p_220836_1_.func_72839_b(this.field_179475_a, AxisAlignedBB.func_241549_a_(Vector3d.func_237491_b_(p_220836_2_))).isEmpty(); -+ return p_220836_4_.isAir(p_220836_1_, p_220836_2_) && !p_220836_5_.isAir(p_220836_1_, p_220836_6_) && !p_220836_5_.func_203425_a(Blocks.field_150357_h) && p_220836_5_.func_235785_r_(p_220836_1_, p_220836_6_) && p_220836_3_.func_196955_c(p_220836_1_, p_220836_2_) && p_220836_1_.func_72839_b(this.field_179475_a, AxisAlignedBB.func_241549_a_(Vector3d.func_237491_b_(p_220836_2_))).isEmpty(); ++ return p_220836_4_.isAir(p_220836_1_, p_220836_2_) && !p_220836_5_.isAir(p_220836_1_, p_220836_6_) && !p_220836_5_.func_203425_a(Blocks.field_150357_h) && !p_220836_5_.func_235714_a_(net.minecraftforge.common.Tags.Blocks.ENDERMAN_PLACE_ON_BLACKLIST) && p_220836_5_.func_235785_r_(p_220836_1_, p_220836_6_) && p_220836_3_.func_196955_c(p_220836_1_, p_220836_2_) && p_220836_1_.func_72839_b(this.field_179475_a, AxisAlignedBB.func_241549_a_(Vector3d.func_237491_b_(p_220836_2_))).isEmpty(); } } diff --git a/src/generated/resources/data/forge/tags/blocks/enderman_place_on_blacklist.json b/src/generated/resources/data/forge/tags/blocks/enderman_place_on_blacklist.json new file mode 100644 index 0000000000..5e8aecc986 --- /dev/null +++ b/src/generated/resources/data/forge/tags/blocks/enderman_place_on_blacklist.json @@ -0,0 +1,4 @@ +{ + "replace": false, + "values": [] +} \ No newline at end of file diff --git a/src/main/java/net/minecraftforge/common/Tags.java b/src/main/java/net/minecraftforge/common/Tags.java index b6375f8111..1ef588f7df 100644 --- a/src/main/java/net/minecraftforge/common/Tags.java +++ b/src/main/java/net/minecraftforge/common/Tags.java @@ -49,6 +49,7 @@ public class Tags public static final IOptionalNamedTag COBBLESTONE = tag("cobblestone"); public static final IOptionalNamedTag DIRT = tag("dirt"); public static final IOptionalNamedTag END_STONES = tag("end_stones"); + public static final IOptionalNamedTag ENDERMAN_PLACE_ON_BLACKLIST = tag("enderman_place_on_blacklist"); public static final IOptionalNamedTag FENCE_GATES = tag("fence_gates"); public static final IOptionalNamedTag FENCE_GATES_WOODEN = tag("fence_gates/wooden"); public static final IOptionalNamedTag FENCES = tag("fences"); diff --git a/src/main/java/net/minecraftforge/common/data/ForgeBlockTagsProvider.java b/src/main/java/net/minecraftforge/common/data/ForgeBlockTagsProvider.java index adf58617ae..0bb1de2649 100644 --- a/src/main/java/net/minecraftforge/common/data/ForgeBlockTagsProvider.java +++ b/src/main/java/net/minecraftforge/common/data/ForgeBlockTagsProvider.java @@ -53,6 +53,7 @@ public class ForgeBlockTagsProvider extends BlockTagsProvider getOrCreateBuilder(COBBLESTONE).add(Blocks.COBBLESTONE, Blocks.INFESTED_COBBLESTONE, Blocks.MOSSY_COBBLESTONE); getOrCreateBuilder(DIRT).add(Blocks.DIRT, Blocks.GRASS_BLOCK, Blocks.COARSE_DIRT, Blocks.PODZOL, Blocks.MYCELIUM); getOrCreateBuilder(END_STONES).add(Blocks.END_STONE); + getOrCreateBuilder(ENDERMAN_PLACE_ON_BLACKLIST); getOrCreateBuilder(FENCE_GATES).addTags(FENCE_GATES_WOODEN); getOrCreateBuilder(FENCE_GATES_WOODEN).add(Blocks.OAK_FENCE_GATE, Blocks.SPRUCE_FENCE_GATE, Blocks.BIRCH_FENCE_GATE, Blocks.JUNGLE_FENCE_GATE, Blocks.ACACIA_FENCE_GATE, Blocks.DARK_OAK_FENCE_GATE, Blocks.CRIMSON_FENCE_GATE, Blocks.WARPED_FENCE_GATE); getOrCreateBuilder(FENCES).addTags(FENCES_NETHER_BRICK, FENCES_WOODEN);