mirror of
https://github.com/MinecraftForge/MinecraftForge.git
synced 2026-11-12 00:07:45 +00:00
Add EnderManAngerEvent to make it possible to prevent endermen getting angry at a player based on more then their helmet. (#8406)
This commit is contained in:
1 parent
796cb29904
commit
1e6845669c
3 files changed
+53
-2
No files matched your search
@@ -21,7 +21,7 @@
|
||||
boolean m_32534_(Player p_32535_) {
|
||||
ItemStack itemstack = p_32535_.m_150109_().f_35975_.get(3);
|
||||
- if (itemstack.m_150930_(Blocks.f_50143_.m_5456_())) {
|
||||
+ if (itemstack.isEnderMask(p_32535_, this)) {
|
||||
+ if (net.minecraftforge.common.ForgeHooks.shouldSuppressEnderManAnger(this, p_32535_, itemstack)) {
|
||||
return false;
|
||||
} else {
|
||||
Vec3 vec3 = p_32535_.m_20252_(1.0F).m_82541_();
|
||||
|
||||
@@ -16,7 +16,6 @@ import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Optional;
|
||||
import java.util.Objects;
|
||||
import java.util.Optional;
|
||||
import java.util.Set;
|
||||
import java.util.Map.Entry;
|
||||
import java.util.Optional;
|
||||
@@ -57,6 +56,7 @@ import net.minecraft.world.entity.ai.attributes.AttributeModifier;
|
||||
import net.minecraft.world.entity.ai.attributes.AttributeSupplier;
|
||||
import net.minecraft.world.entity.ai.attributes.DefaultAttributes;
|
||||
import net.minecraft.world.entity.EquipmentSlot;
|
||||
import net.minecraft.world.entity.monster.EnderMan;
|
||||
import net.minecraft.world.item.*;
|
||||
import net.minecraft.world.item.crafting.Ingredient;
|
||||
import net.minecraft.world.item.crafting.RecipeType;
|
||||
@@ -133,6 +133,7 @@ import net.minecraftforge.event.entity.EntityAttributeModificationEvent;
|
||||
import net.minecraftforge.event.entity.EntityEvent;
|
||||
import net.minecraftforge.event.entity.EntityTravelToDimensionEvent;
|
||||
import net.minecraftforge.event.entity.item.ItemTossEvent;
|
||||
import net.minecraftforge.event.entity.living.EnderManAngerEvent;
|
||||
import net.minecraftforge.event.entity.living.LivingAttackEvent;
|
||||
import net.minecraftforge.event.entity.living.LivingDamageEvent;
|
||||
import net.minecraftforge.event.entity.living.LivingDeathEvent;
|
||||
@@ -1479,4 +1480,9 @@ public class ForgeHooks
|
||||
}
|
||||
}
|
||||
|
||||
public static boolean shouldSuppressEnderManAnger(EnderMan enderMan, Player player, ItemStack mask)
|
||||
{
|
||||
return mask.isEnderMask(player, enderMan) || MinecraftForge.EVENT_BUS.post(new EnderManAngerEvent(enderMan, player));
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,45 @@
|
||||
/*
|
||||
* Minecraft Forge - Forge Development LLC
|
||||
* SPDX-License-Identifier: LGPL-2.1-only
|
||||
*/
|
||||
|
||||
package net.minecraftforge.event.entity.living;
|
||||
|
||||
import net.minecraft.world.entity.monster.EnderMan;
|
||||
import net.minecraft.world.entity.player.Player;
|
||||
import net.minecraftforge.eventbus.api.Cancelable;
|
||||
|
||||
/**
|
||||
* This event is fired on the forge bus before an Enderman detects that a player is looking at them.
|
||||
* It will not be fired if the detection is already prevented by {@link IForgeItem#isEnderMask}
|
||||
* <p>
|
||||
* This event is {@link Cancelable}.
|
||||
* If this event is canceled, the Enderman will not target the player.
|
||||
* <p>
|
||||
* This event does not have a {@link Result}.
|
||||
*/
|
||||
@Cancelable
|
||||
public class EnderManAngerEvent extends LivingEvent
|
||||
{
|
||||
private final Player player;
|
||||
|
||||
public EnderManAngerEvent(EnderMan enderman, Player player)
|
||||
{
|
||||
super(enderman);
|
||||
this.player = player;
|
||||
}
|
||||
|
||||
/**
|
||||
* The player that is being checked.
|
||||
*/
|
||||
public Player getPlayer()
|
||||
{
|
||||
return player;
|
||||
}
|
||||
|
||||
@Override
|
||||
public EnderMan getEntity()
|
||||
{
|
||||
return (EnderMan) super.getEntity();
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user