From 81111b4cbd11a7e68111395a69795fb7a17d6e0f Mon Sep 17 00:00:00 2001 From: chickeneer Date: Sun, 14 Jul 2019 13:50:53 -0500 Subject: [PATCH] EMC ConduitNewTargetEvent and remove target for cancelled damage events --- .../java/net/minecraft/server/TileEntityConduit.java | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/main/java/net/minecraft/server/TileEntityConduit.java b/src/main/java/net/minecraft/server/TileEntityConduit.java index 07f265b299..b6ad68fcbf 100644 --- a/src/main/java/net/minecraft/server/TileEntityConduit.java +++ b/src/main/java/net/minecraft/server/TileEntityConduit.java @@ -182,7 +182,14 @@ public class TileEntityConduit extends TileEntity implements ITickable { List list = this.world.a(EntityLiving.class, this.m(), (java.util.function.Predicate) (entityliving1) -> { // CraftBukkit - decompile error return entityliving1 instanceof IMonster && entityliving1.isInWaterOrRain(); }); - + // EMC start + List bukkitEntities = Lists.newArrayListWithCapacity(list.size()); + for (EntityLiving entity : list) { + bukkitEntities.add(entity.getBukkitLivingEntity()); + } + new com.empireminecraft.customevents.ConduitNewTargetEvent(bukkitEntities, CraftBlock.at(this.world, this.position)).callEvent(); + list.removeIf(entityLiving -> !bukkitEntities.contains(entityLiving.getBukkitLivingEntity())); + // EMC end if (!list.isEmpty()) { this.target = (EntityLiving) list.get(this.world.random.nextInt(list.size())); } @@ -195,7 +202,7 @@ public class TileEntityConduit extends TileEntity implements ITickable { CraftEventFactory.blockDamage = CraftBlock.at(this.world, this.position); if (this.target.damageEntity(DamageSource.MAGIC, 4.0F)) { this.world.playSound((EntityHuman) null, this.target.locX(), this.target.locY(), this.target.locZ(), SoundEffects.BLOCK_CONDUIT_ATTACK_TARGET, SoundCategory.BLOCKS, 1.0F, 1.0F); - } + } else { this.target = null; } // EMC CraftEventFactory.blockDamage = null; // CraftBukkit end } -- 2.25.1.windows.1