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
|
||||
import org.bukkit.craftbukkit.event.CraftEventFactory;
|
||||
import org.bukkit.craftbukkit.inventory.CraftItemStack;
|
||||
import org.bukkit.event.entity.EntityUnleashEvent;
|
||||
import org.bukkit.event.entity.EntityUnleashEvent.UnleashReason;
|
||||
// CraftBukkit end
|
||||
@ -194,11 +195,18 @@ public abstract class EntityInsentient extends EntityLiving {
|
||||
if (k < 5) {
|
||||
ItemStack itemstack = this.getRareDrop(k <= 0 ? 1 : 0);
|
||||
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
|
||||
// CraftBukkit end
|
||||
}
|
||||
@ -565,7 +573,10 @@ public abstract class EntityInsentient extends EntityLiving {
|
||||
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) {
|
||||
ItemStack itemstack = this.getEquipment(j);
|
||||
boolean flag1 = this.dropChances[j] > 1.0F;
|
||||
@ -586,9 +597,13 @@ public abstract class EntityInsentient extends EntityLiving {
|
||||
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() {
|
||||
|
@ -798,7 +798,11 @@ public abstract class EntityLiving extends Entity {
|
||||
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) {
|
||||
if (this.random.nextDouble() >= this.getAttributeInstance(GenericAttributes.c).getValue()) {
|
||||
|
Laden…
In neuem Issue referenzieren
Einen Benutzer sperren