--- a/net/minecraft/world/level/block/entity/TileEntityConduit.java +++ b/net/minecraft/world/level/block/entity/TileEntityConduit.java @@ -187,8 +187,20 @@ } private static void applyEffects(World world, BlockPosition blockposition, List list) { + // CraftBukkit start + applyEffects(world, blockposition, getRange(list)); + } + + public static int getRange(List list) { + // CraftBukkit end int i = list.size(); int j = i / 7 * 16; + // CraftBukkit start + return j; + } + + private static void applyEffects(World world, BlockPosition blockposition, int j) { // j = effect range in blocks + // CraftBukkit end int k = blockposition.getX(); int l = blockposition.getY(); int i1 = blockposition.getZ(); @@ -202,7 +214,7 @@ EntityHuman entityhuman = (EntityHuman) iterator.next(); if (blockposition.closerThan(entityhuman.blockPosition(), (double) j) && entityhuman.isInWaterOrRain()) { - entityhuman.addEffect(new MobEffect(MobEffects.CONDUIT_POWER, 260, 0, true, true)); + entityhuman.addEffect(new MobEffect(MobEffects.CONDUIT_POWER, 260, 0, true, true), org.bukkit.event.entity.EntityPotionEffectEvent.Cause.CONDUIT); // CraftBukkit } } @@ -210,6 +222,12 @@ } private static void updateDestroyTarget(World world, BlockPosition blockposition, IBlockData iblockdata, List list, TileEntityConduit tileentityconduit) { + // CraftBukkit start - add "damageTarget" boolean + updateDestroyTarget(world, blockposition, iblockdata, list, tileentityconduit, true); + } + + public static void updateDestroyTarget(World world, BlockPosition blockposition, IBlockData iblockdata, List list, TileEntityConduit tileentityconduit, boolean damageTarget) { + // CraftBukkit end EntityLiving entityliving = tileentityconduit.destroyTarget; int i = list.size(); @@ -230,9 +248,12 @@ tileentityconduit.destroyTarget = null; } - if (tileentityconduit.destroyTarget != null) { - world.playSound((EntityHuman) null, tileentityconduit.destroyTarget.getX(), tileentityconduit.destroyTarget.getY(), tileentityconduit.destroyTarget.getZ(), SoundEffects.CONDUIT_ATTACK_TARGET, SoundCategory.BLOCKS, 1.0F, 1.0F); - tileentityconduit.destroyTarget.hurt(world.damageSources().magic(), 4.0F); + // CraftBukkit start + if (damageTarget && tileentityconduit.destroyTarget != null) { + if (tileentityconduit.destroyTarget.hurt(world.damageSources().magic().directBlock(world, blockposition), 4.0F)) { + world.playSound(null, tileentityconduit.destroyTarget.getX(), tileentityconduit.destroyTarget.getY(), tileentityconduit.destroyTarget.getZ(), SoundEffects.CONDUIT_ATTACK_TARGET, SoundCategory.BLOCKS, 1.0F, 1.0F); + } + // CraftBukkit end } if (entityliving != tileentityconduit.destroyTarget) {