Mirror von
https://github.com/PaperMC/Paper.git
synchronisiert 2024-12-15 11:00:06 +01:00
d219fd642f
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: 6bff9d09 #508: Add PlayerBucketFishEvent CraftBukkit Changes: a8d7c94a5 SPIGOT-6434: Smithing Table and Anvil inventories .getType() returns CRAFTING c5494d195 #683: Add PlayerBucketFishEvent
157 Zeilen
9.7 KiB
Diff
157 Zeilen
9.7 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/world/entity/EntityCreature.java b/src/main/java/net/minecraft/world/entity/EntityCreature.java
|
|
index 20570580367697e37e6c45147168c3beb6c8d31b..831414980d40f4382cf7370db28dd8fae534384b 100644
|
|
--- a/src/main/java/net/minecraft/world/entity/EntityCreature.java
|
|
+++ b/src/main/java/net/minecraft/world/entity/EntityCreature.java
|
|
@@ -48,8 +48,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;
|
|
@@ -57,8 +60,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/world/entity/EntityInsentient.java b/src/main/java/net/minecraft/world/entity/EntityInsentient.java
|
|
index ff482e3774f580d8ba7028f6c5141888d3bd907a..a246edd09854dabf095da75c9d200f5cf26e7138 100644
|
|
--- a/src/main/java/net/minecraft/world/entity/EntityInsentient.java
|
|
+++ b/src/main/java/net/minecraft/world/entity/EntityInsentient.java
|
|
@@ -88,6 +88,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 {
|
|
@@ -1207,12 +1208,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);
|
|
@@ -1366,8 +1370,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
|
|
}
|
|
|
|
}
|
|
@@ -1435,8 +1442,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;
|
|
@@ -1638,7 +1648,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/world/entity/decoration/EntityLeash.java b/src/main/java/net/minecraft/world/entity/decoration/EntityLeash.java
|
|
index 8f6d2a6a388021f437ac5554e9ece8eca89e1f46..519f0cabadcf97a44a112fd963a8d3ab194650c4 100644
|
|
--- a/src/main/java/net/minecraft/world/entity/decoration/EntityLeash.java
|
|
+++ b/src/main/java/net/minecraft/world/entity/decoration/EntityLeash.java
|
|
@@ -30,6 +30,8 @@ import net.minecraft.server.level.WorldServer;
|
|
import org.bukkit.craftbukkit.event.CraftEventFactory;
|
|
// CraftBukkit end
|
|
|
|
+import org.bukkit.event.player.PlayerUnleashEntityEvent; // Paper
|
|
+
|
|
public class EntityLeash extends EntityHanging {
|
|
|
|
public EntityLeash(EntityTypes<? extends EntityLeash> entitytypes, World world) {
|
|
@@ -125,11 +127,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 8afb966d6fc8787b7f427c756d82c37e9313ae67..1c018288927fc142ed094a911d710b13a4a30919 100644
|
|
--- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
|
|
+++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
|
|
@@ -1464,8 +1464,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;
|
|
}
|