I am attempting to detect when a mob hits something and then check to see if the Entity is listed in an external file.I am wondering how I would do this. This is what I have currently got,
Detect Entity attacking:
//Mob attacking
@SubscribeEvent
public static void testEntityEvent(LivingHurtEvent event)
{
DamageSource damageSource = event.getSource();
if (damageSource.getTrueSource() instanceof MobEntity)
{
Item air = Item.getItemByID(0);
LivingEntity livingEntity = (LivingEntity) damageSource.getTrueSource();
ItemStack stack = livingEntity.getHeldItemMainhand();
Item item = stack.getItem();
if (item != air)
{
System.out.println(DamageType.getFromItem(item));
}
else
{
EntityType<?> entity = damageSource.getTrueSource().getEntity();
System.out.println(DamageType.getFromEntity(entity));
}
}
This is how I check DamageType:
@Nonnull
public static DamageType getFromEntity(EntityType<?> entity)
{
if (slashingDamageEntities.contains(entity))
{
return SLASHING;
}
else if (piercingDamageEntities.contains(entity))
{
return PIERCING;
}
return BLUDGEONING;
}
And this is how I register the Resource Location:
public static final EntityTypeTags.Wrapper slashingDamageEntities = new EntityTypeTags.Wrapper(new ResourceLocation(dungeoncraft.MOD_ID, "slashing_damage_mobs"));
public static final EntityTypeTags.Wrapper piercingDamageEntities = new EntityTypeTags.Wrapper(new ResourceLocation(dungeoncraft.MOD_ID, "piercing_damage_mobs"));
Now I am aware that I am checking the Tags for EntityType<?> instead of Entity but I am wondering how to do it using an Entity instead. Or a better way to do it using EntityType<?> by modifying the first file.
For reference this is my Tags file and the other is very similar.
{
"replace": false,
"values": [
"minecraft:chicken",
"minecraft:fox",
"minecraft:parrot",
"minecraft:pufferfish",
"minecraft:turtle",
"minecraft:bee",
"minecraft:wolf",
"minecraft:cave_spider",
"minecraft:spider",
"minecraft:elder_guardian",
"minecraft:endermite",
"minecraft:guardian",
"minecraft:phantom",
"minecraft:shulker",
"minecraft:silverfish"
]
}