4c9bdf53ac
Upstream has released updates that appear to apply and compile correctly. This update has not been tested by PaperMC and as with ANY update, please do your own testing Bukkit Changes: 9d0ad318 Fix javadoc errors in previous commits 9501daa2 #578: Add methods to modify the rate of regeneration and starvation 197d8f3d #577: Add EntityExhaustionEvent CraftBukkit Changes: a021e334 #795: Add methods to modify the rate of regeneration and starvation 509e523c #792: Add EntityExhaustionEvent Spigot Changes: db99f821 Rebuild patches
156 Zeilen
9.5 KiB
Diff
156 Zeilen
9.5 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: KennyTV <jahnke.nassim@gmail.com>
|
|
Date: Fri, 29 Jan 2021 15:13:11 +0100
|
|
Subject: [PATCH] Add dropLeash variable to EntityUnleashEvent
|
|
|
|
|
|
diff --git a/src/main/java/net/minecraft/server/EntityCreature.java b/src/main/java/net/minecraft/server/EntityCreature.java
|
|
index eaa10d6e3a3c37b83fed58637941273fee9b0be8..2a5160a937a6a9968f9357c5ea3e4ced739dc0f4 100644
|
|
--- a/src/main/java/net/minecraft/server/EntityCreature.java
|
|
+++ b/src/main/java/net/minecraft/server/EntityCreature.java
|
|
@@ -41,8 +41,11 @@ public abstract class EntityCreature extends EntityInsentient {
|
|
|
|
if (this instanceof EntityTameableAnimal && ((EntityTameableAnimal) this).isSitting()) {
|
|
if (f > entity.world.paperConfig.maxLeashDistance) { // Paper
|
|
- this.world.getServer().getPluginManager().callEvent(new EntityUnleashEvent(this.getBukkitEntity(), EntityUnleashEvent.UnleashReason.DISTANCE)); // CraftBukkit
|
|
- this.unleash(true, true);
|
|
+ // Paper start - drop leash variable
|
|
+ EntityUnleashEvent event = new EntityUnleashEvent(this.getBukkitEntity(), EntityUnleashEvent.UnleashReason.DISTANCE, true);
|
|
+ this.world.getServer().getPluginManager().callEvent(event); // CraftBukkit
|
|
+ this.unleash(true, event.isDropLeash());
|
|
+ // Paper end
|
|
}
|
|
|
|
return;
|
|
@@ -50,8 +53,11 @@ public abstract class EntityCreature extends EntityInsentient {
|
|
|
|
this.x(f);
|
|
if (f > entity.world.paperConfig.maxLeashDistance) { // Paper
|
|
- this.world.getServer().getPluginManager().callEvent(new EntityUnleashEvent(this.getBukkitEntity(), EntityUnleashEvent.UnleashReason.DISTANCE)); // CraftBukkit
|
|
- this.unleash(true, true);
|
|
+ // Paper start - drop leash variable
|
|
+ EntityUnleashEvent event = new EntityUnleashEvent(this.getBukkitEntity(), EntityUnleashEvent.UnleashReason.DISTANCE, true);
|
|
+ this.world.getServer().getPluginManager().callEvent(event); // CraftBukkit
|
|
+ this.unleash(true, event.isDropLeash());
|
|
+ // Paper end
|
|
this.goalSelector.a(PathfinderGoal.Type.MOVE);
|
|
} else if (f > 6.0F) {
|
|
double d0 = (entity.locX() - this.locX()) / (double) f;
|
|
diff --git a/src/main/java/net/minecraft/server/EntityInsentient.java b/src/main/java/net/minecraft/server/EntityInsentient.java
|
|
index eb5c3a1f0d9ff665631caf5bf579e83d1ed25e4f..a88521745f9f9b6935a61db52db915ea483af227 100644
|
|
--- a/src/main/java/net/minecraft/server/EntityInsentient.java
|
|
+++ b/src/main/java/net/minecraft/server/EntityInsentient.java
|
|
@@ -20,6 +20,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.PlayerUnleashEntityEvent; // Paper
|
|
// CraftBukkit end
|
|
|
|
public abstract class EntityInsentient extends EntityLiving {
|
|
@@ -1139,12 +1140,15 @@ public abstract class EntityInsentient extends EntityLiving {
|
|
return EnumInteractionResult.PASS;
|
|
} else if (this.getLeashHolder() == entityhuman) {
|
|
// CraftBukkit start - fire PlayerUnleashEntityEvent
|
|
- if (CraftEventFactory.callPlayerUnleashEntityEvent(this, entityhuman).isCancelled()) {
|
|
+ // Paper start - drop leash variable
|
|
+ PlayerUnleashEntityEvent event = CraftEventFactory.callPlayerUnleashEntityEvent(this, entityhuman, !entityhuman.abilities.canInstantlyBuild);
|
|
+ if (event.isCancelled()) {
|
|
+ // Paper end
|
|
((EntityPlayer) entityhuman).playerConnection.sendPacket(new PacketPlayOutAttachEntity(this, this.getLeashHolder()));
|
|
return EnumInteractionResult.PASS;
|
|
}
|
|
// CraftBukkit end
|
|
- this.unleash(true, !entityhuman.abilities.canInstantlyBuild);
|
|
+ this.unleash(true, event.isDropLeash()); // Paper - drop leash variable
|
|
return EnumInteractionResult.a(this.world.isClientSide);
|
|
} else {
|
|
EnumInteractionResult enuminteractionresult = this.c(entityhuman, enumhand);
|
|
@@ -1298,8 +1302,11 @@ public abstract class EntityInsentient extends EntityLiving {
|
|
|
|
if (this.leashHolder != null) {
|
|
if (!this.isAlive() || !this.leashHolder.isAlive()) {
|
|
- this.world.getServer().getPluginManager().callEvent(new EntityUnleashEvent(this.getBukkitEntity(), (!this.isAlive()) ? UnleashReason.PLAYER_UNLEASH : UnleashReason.HOLDER_GONE)); // CraftBukkit
|
|
- this.unleash(true, true);
|
|
+ // Paper start - drop leash variable
|
|
+ EntityUnleashEvent event = new EntityUnleashEvent(this.getBukkitEntity(), (!this.isAlive()) ? UnleashReason.PLAYER_UNLEASH : UnleashReason.HOLDER_GONE, true);
|
|
+ this.world.getServer().getPluginManager().callEvent(event); // CraftBukkit
|
|
+ this.unleash(true, event.isDropLeash());
|
|
+ // Paper end
|
|
}
|
|
|
|
}
|
|
@@ -1367,8 +1374,11 @@ public abstract class EntityInsentient extends EntityLiving {
|
|
boolean flag1 = super.a(entity, flag);
|
|
|
|
if (flag1 && this.isLeashed()) {
|
|
- this.world.getServer().getPluginManager().callEvent(new EntityUnleashEvent(this.getBukkitEntity(), UnleashReason.UNKNOWN)); // CraftBukkit
|
|
- this.unleash(true, true);
|
|
+ // Paper start - drop leash variable
|
|
+ EntityUnleashEvent event = new EntityUnleashEvent(this.getBukkitEntity(), UnleashReason.UNKNOWN, true);
|
|
+ this.world.getServer().getPluginManager().callEvent(event); // CraftBukkit
|
|
+ this.unleash(true, event.isDropLeash());
|
|
+ // Paper end
|
|
}
|
|
|
|
return flag1;
|
|
@@ -1570,7 +1580,10 @@ public abstract class EntityInsentient extends EntityLiving {
|
|
@Override
|
|
protected void bN() {
|
|
super.bN();
|
|
- this.world.getServer().getPluginManager().callEvent(new EntityUnleashEvent(this.getBukkitEntity(), UnleashReason.UNKNOWN)); // CraftBukkit
|
|
- this.unleash(true, false);
|
|
+ // Paper start - drop leash variable
|
|
+ EntityUnleashEvent event = new EntityUnleashEvent(this.getBukkitEntity(), UnleashReason.UNKNOWN, false);
|
|
+ this.world.getServer().getPluginManager().callEvent(event); // CraftBukkit
|
|
+ this.unleash(true, event.isDropLeash());
|
|
+ // Paper end
|
|
}
|
|
}
|
|
diff --git a/src/main/java/net/minecraft/server/EntityLeash.java b/src/main/java/net/minecraft/server/EntityLeash.java
|
|
index 6bd25833bc3ff3ca46367a48da001ed9bda8c19d..5e4652e997362e7c3fac05ac8a4fcdd6051c4f4a 100644
|
|
--- a/src/main/java/net/minecraft/server/EntityLeash.java
|
|
+++ b/src/main/java/net/minecraft/server/EntityLeash.java
|
|
@@ -5,6 +5,7 @@ import java.util.List;
|
|
import javax.annotation.Nullable;
|
|
|
|
import org.bukkit.craftbukkit.event.CraftEventFactory; // CraftBukkit
|
|
+import org.bukkit.event.player.PlayerUnleashEntityEvent; // Paper
|
|
|
|
public class EntityLeash extends EntityHanging {
|
|
|
|
@@ -101,11 +102,14 @@ public class EntityLeash extends EntityHanging {
|
|
entityinsentient = (EntityInsentient) iterator.next();
|
|
if (entityinsentient.isLeashed() && entityinsentient.getLeashHolder() == this) {
|
|
// CraftBukkit start
|
|
- if (CraftEventFactory.callPlayerUnleashEntityEvent(entityinsentient, entityhuman).isCancelled()) {
|
|
+ // Paper start - drop leash variable
|
|
+ PlayerUnleashEntityEvent event = CraftEventFactory.callPlayerUnleashEntityEvent(entityinsentient, entityhuman, !entityhuman.abilities.canInstantlyBuild);
|
|
+ if (event.isCancelled()) {
|
|
+ // Paper end
|
|
die = false;
|
|
continue;
|
|
}
|
|
- entityinsentient.unleash(true, !entityhuman.abilities.canInstantlyBuild); // false -> survival mode boolean
|
|
+ entityinsentient.unleash(true, event.isDropLeash()); // false -> survival mode boolean // Paper - drop leash variable
|
|
// CraftBukkit end
|
|
}
|
|
}
|
|
diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
|
|
index a7ac877014853bb2b2e826ad6950da959f56b268..479270bae88f10de80c6fe97536ac7d2c198a6f2 100644
|
|
--- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
|
|
+++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
|
|
@@ -1448,8 +1448,10 @@ public class CraftEventFactory {
|
|
return itemInHand;
|
|
}
|
|
|
|
- public static PlayerUnleashEntityEvent callPlayerUnleashEntityEvent(EntityInsentient entity, EntityHuman player) {
|
|
- PlayerUnleashEntityEvent event = new PlayerUnleashEntityEvent(entity.getBukkitEntity(), (Player) player.getBukkitEntity());
|
|
+ // Paper start - drop leash variable
|
|
+ public static PlayerUnleashEntityEvent callPlayerUnleashEntityEvent(EntityInsentient entity, EntityHuman player, boolean dropLeash) {
|
|
+ PlayerUnleashEntityEvent event = new PlayerUnleashEntityEvent(entity.getBukkitEntity(), (Player) player.getBukkitEntity(), dropLeash);
|
|
+ // Paper end
|
|
entity.world.getServer().getPluginManager().callEvent(event);
|
|
return event;
|
|
}
|