94 lines
4.2 KiB
Diff
94 lines
4.2 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: Tom <cryptite@gmail.com>
|
|
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) {}
|
|
|