Mirror von
https://github.com/PaperMC/Paper.git
synchronisiert 2024-11-15 20:40:07 +01:00
[Bleeding] Include equipment in EntityDeathEvent loot. Fixes BUKKIT-5566
Dieser Commit ist enthalten in:
Ursprung
76e6277175
Commit
5195513866
@ -6,6 +6,7 @@ import java.util.UUID;
|
|||||||
|
|
||||||
// CraftBukkit start
|
// CraftBukkit start
|
||||||
import org.bukkit.craftbukkit.event.CraftEventFactory;
|
import org.bukkit.craftbukkit.event.CraftEventFactory;
|
||||||
|
import org.bukkit.craftbukkit.inventory.CraftItemStack;
|
||||||
import org.bukkit.event.entity.EntityUnleashEvent;
|
import org.bukkit.event.entity.EntityUnleashEvent;
|
||||||
import org.bukkit.event.entity.EntityUnleashEvent.UnleashReason;
|
import org.bukkit.event.entity.EntityUnleashEvent.UnleashReason;
|
||||||
// CraftBukkit end
|
// CraftBukkit end
|
||||||
@ -194,11 +195,18 @@ public abstract class EntityInsentient extends EntityLiving {
|
|||||||
if (k < 5) {
|
if (k < 5) {
|
||||||
ItemStack itemstack = this.getRareDrop(k <= 0 ? 1 : 0);
|
ItemStack itemstack = this.getRareDrop(k <= 0 ? 1 : 0);
|
||||||
if (itemstack != null) {
|
if (itemstack != null) {
|
||||||
loot.add(org.bukkit.craftbukkit.inventory.CraftItemStack.asCraftMirror(itemstack));
|
loot.add(CraftItemStack.asCraftMirror(itemstack));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Include equipment
|
||||||
|
for (ItemStack stack : this.dropEquipment(this.lastDamageByPlayerTime > 0, i)) {
|
||||||
|
if (stack != null) {
|
||||||
|
loot.add(CraftItemStack.asCraftMirror(stack));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
CraftEventFactory.callEntityDeathEvent(this, loot); // raise event even for those times when the entity does not drop loot
|
CraftEventFactory.callEntityDeathEvent(this, loot); // raise event even for those times when the entity does not drop loot
|
||||||
// CraftBukkit end
|
// CraftBukkit end
|
||||||
}
|
}
|
||||||
@ -565,7 +573,10 @@ public abstract class EntityInsentient extends EntityLiving {
|
|||||||
return this.equipment;
|
return this.equipment;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void dropEquipment(boolean flag, int i) {
|
// CraftBukkit start - return array of dropped items
|
||||||
|
protected ItemStack[] dropEquipment(boolean flag, int i) {
|
||||||
|
ItemStack[] dropped = new ItemStack[this.equipment.length];
|
||||||
|
// CraftBukkit end
|
||||||
for (int j = 0; j < this.getEquipment().length; ++j) {
|
for (int j = 0; j < this.getEquipment().length; ++j) {
|
||||||
ItemStack itemstack = this.getEquipment(j);
|
ItemStack itemstack = this.getEquipment(j);
|
||||||
boolean flag1 = this.dropChances[j] > 1.0F;
|
boolean flag1 = this.dropChances[j] > 1.0F;
|
||||||
@ -586,9 +597,13 @@ public abstract class EntityInsentient extends EntityLiving {
|
|||||||
itemstack.setData(l);
|
itemstack.setData(l);
|
||||||
}
|
}
|
||||||
|
|
||||||
this.a(itemstack, 0.0F);
|
// CraftBukkit start
|
||||||
|
// this.a(itemstack, 0.0F);
|
||||||
|
dropped[j] = itemstack;
|
||||||
|
// CraftBukkit end
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
return dropped; // CraftBukkit
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void bC() {
|
protected void bC() {
|
||||||
|
@ -798,7 +798,11 @@ public abstract class EntityLiving extends Entity {
|
|||||||
this.world.broadcastEntityEffect(this, (byte) 3);
|
this.world.broadcastEntityEffect(this, (byte) 3);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void dropEquipment(boolean flag, int i) {}
|
// CraftBukkit start - return dropped equipment for EntityDeathEvent processing
|
||||||
|
protected ItemStack[] dropEquipment(boolean flag, int i) {
|
||||||
|
return new ItemStack[this.getEquipment().length];
|
||||||
|
}
|
||||||
|
// CraftBukkit end
|
||||||
|
|
||||||
public void a(Entity entity, float f, double d0, double d1) {
|
public void a(Entity entity, float f, double d0, double d1) {
|
||||||
if (this.random.nextDouble() >= this.getAttributeInstance(GenericAttributes.c).getValue()) {
|
if (this.random.nextDouble() >= this.getAttributeInstance(GenericAttributes.c).getValue()) {
|
||||||
|
Laden…
In neuem Issue referenzieren
Einen Benutzer sperren