From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Tom Date: Mon, 20 Sep 2021 08:52:20 -0500 Subject: [PATCH] Add PlayerShieldDisableEvent diff --git a/src/main/java/net/minecraft/world/entity/Mob.java b/src/main/java/net/minecraft/world/entity/Mob.java index 8a864238e154e2131834d013652746b7e7a78c97..75f19791993bd7918ce2775bff02dc7bae9e882d 100644 --- a/src/main/java/net/minecraft/world/entity/Mob.java +++ b/src/main/java/net/minecraft/world/entity/Mob.java @@ -72,6 +72,7 @@ import net.minecraft.world.level.ServerLevelAccessor; import net.minecraft.world.level.material.Fluid; import net.minecraft.world.level.pathfinder.BlockPathTypes; import net.minecraft.world.level.storage.loot.LootContext; +import org.bukkit.Bukkit; // Paper import org.bukkit.craftbukkit.event.CraftEventFactory; import org.bukkit.craftbukkit.entity.CraftLivingEntity; import org.bukkit.event.entity.CreatureSpawnEvent; @@ -81,6 +82,7 @@ import org.bukkit.event.entity.EntityTargetEvent; import org.bukkit.event.entity.EntityTransformEvent; import org.bukkit.event.entity.EntityUnleashEvent; import org.bukkit.event.entity.EntityUnleashEvent.UnleashReason; +import org.bukkit.event.player.PlayerShieldDisableEvent; // Paper // CraftBukkit end public abstract class Mob extends LivingEntity { @@ -1590,6 +1592,11 @@ public abstract class Mob extends LivingEntity { if (this.random.nextFloat() < f) { player.getCooldowns().addCooldown(Items.SHIELD, 100); this.level.broadcastEntityEvent(player, (byte) 30); + + // Paper start + PlayerShieldDisableEvent event = new PlayerShieldDisableEvent((org.bukkit.entity.Player) player.getBukkitEntity(), getBukkitEntity()); + Bukkit.getPluginManager().callEvent(event); + // Paper end } } diff --git a/src/main/java/net/minecraft/world/entity/player/Player.java b/src/main/java/net/minecraft/world/entity/player/Player.java index cea92f1dc663bf0648b2bd877d86ca380a517bc9..e731659630e2d6dd64b6d94fcd3fd3f2a61d04c4 100644 --- a/src/main/java/net/minecraft/world/entity/player/Player.java +++ b/src/main/java/net/minecraft/world/entity/player/Player.java @@ -115,6 +115,7 @@ import net.minecraft.world.phys.Vec3; import net.minecraft.world.scores.PlayerTeam; import net.minecraft.world.scores.Scoreboard; // CraftBukkit start +import org.bukkit.Bukkit; // Paper import org.bukkit.craftbukkit.entity.CraftHumanEntity; import org.bukkit.craftbukkit.event.CraftEventFactory; import org.bukkit.craftbukkit.util.CraftVector; @@ -123,6 +124,7 @@ import org.bukkit.event.entity.CreatureSpawnEvent; import org.bukkit.event.entity.EntityCombustByEntityEvent; import org.bukkit.event.entity.EntityExhaustionEvent; import org.bukkit.event.player.PlayerDropItemEvent; +import org.bukkit.event.player.PlayerShieldDisableEvent; // Paper import org.bukkit.event.player.PlayerVelocityEvent; // CraftBukkit end @@ -936,7 +938,7 @@ public abstract class Player extends LivingEntity { protected void blockUsingShield(LivingEntity attacker) { super.blockUsingShield(attacker); if (attacker.getMainHandItem().getItem() instanceof AxeItem) { - this.disableShield(true); + this.disableShield(true, attacker); // Paper } } @@ -1403,6 +1405,11 @@ public abstract class Player extends LivingEntity { } public void disableShield(boolean sprinting) { + disableShield(sprinting, null); // Paper + } + + // Paper start + public void disableShield(boolean sprinting, LivingEntity attacker) { float f = 0.25F + (float) EnchantmentHelper.getBlockEfficiency(this) * 0.05F; if (sprinting) { @@ -1413,9 +1420,12 @@ public abstract class Player extends LivingEntity { this.getCooldowns().addCooldown(Items.SHIELD, 100); this.stopUsingItem(); this.level.broadcastEntityEvent(this, (byte) 30); - } + PlayerShieldDisableEvent event = new PlayerShieldDisableEvent((org.bukkit.entity.Player) getBukkitEntity(), attacker.getBukkitEntity()); + Bukkit.getPluginManager().callEvent(event); + } } + // Paper end public void crit(Entity target) {}