Mirror von
https://github.com/PaperMC/Paper.git
synchronisiert 2024-11-15 04:20:04 +01:00
89 Zeilen
5.1 KiB
Diff
89 Zeilen
5.1 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: Jake Potrebic <jake.m.potrebic@gmail.com>
|
|
Date: Tue, 20 Jul 2021 21:35:47 -0700
|
|
Subject: [PATCH] Add various missing EntityDropItemEvent calls
|
|
|
|
|
|
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
|
|
index e241286d52dcb934a7430d24a114e34f23ec56ba..ba6f680e9a851376960c6a3e29db5d6ca46c7e85 100644
|
|
--- a/src/main/java/net/minecraft/world/entity/Entity.java
|
|
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
|
|
@@ -2518,6 +2518,14 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
|
|
stack.setCount(0); // Paper - destroy this item - if this ever leaks due to game bugs, ensure it doesn't dupe
|
|
|
|
entityitem.setDefaultPickUpDelay();
|
|
+ // Paper start - Call EntityDropItemEvent
|
|
+ return this.spawnAtLocation(entityitem);
|
|
+ }
|
|
+ }
|
|
+ @Nullable
|
|
+ public ItemEntity spawnAtLocation(ItemEntity entityitem) {
|
|
+ {
|
|
+ // Paper end - Call EntityDropItemEvent
|
|
// CraftBukkit start
|
|
EntityDropItemEvent event = new EntityDropItemEvent(this.getBukkitEntity(), (org.bukkit.entity.Item) entityitem.getBukkitEntity());
|
|
Bukkit.getPluginManager().callEvent(event);
|
|
diff --git a/src/main/java/net/minecraft/world/entity/animal/Dolphin.java b/src/main/java/net/minecraft/world/entity/animal/Dolphin.java
|
|
index ff5d117e4740fe1762b5d1f547fc5cb89ab8515b..1b1cb0e4d54e52ebe794199e386c54c5d84b3719 100644
|
|
--- a/src/main/java/net/minecraft/world/entity/animal/Dolphin.java
|
|
+++ b/src/main/java/net/minecraft/world/entity/animal/Dolphin.java
|
|
@@ -583,7 +583,7 @@ public class Dolphin extends WaterAnimal {
|
|
float f2 = 0.02F * Dolphin.this.random.nextFloat();
|
|
|
|
entityitem.setDeltaMovement((double) (0.3F * -Mth.sin(Dolphin.this.getYRot() * 0.017453292F) * Mth.cos(Dolphin.this.getXRot() * 0.017453292F) + Mth.cos(f1) * f2), (double) (0.3F * Mth.sin(Dolphin.this.getXRot() * 0.017453292F) * 1.5F), (double) (0.3F * Mth.cos(Dolphin.this.getYRot() * 0.017453292F) * Mth.cos(Dolphin.this.getXRot() * 0.017453292F) + Mth.sin(f1) * f2));
|
|
- Dolphin.this.level().addFreshEntity(entityitem);
|
|
+ Dolphin.this.spawnAtLocation(entityitem); // Paper - Call EntityDropItemEvent
|
|
}
|
|
}
|
|
}
|
|
diff --git a/src/main/java/net/minecraft/world/entity/animal/Fox.java b/src/main/java/net/minecraft/world/entity/animal/Fox.java
|
|
index 82ced9f42dced65322a55579bb764fb4dc7c1b66..1aa5485f2608000e4ac07350d1c537bc9bd92de4 100644
|
|
--- a/src/main/java/net/minecraft/world/entity/animal/Fox.java
|
|
+++ b/src/main/java/net/minecraft/world/entity/animal/Fox.java
|
|
@@ -507,14 +507,14 @@ public class Fox extends Animal implements VariantHolder<Fox.Type> {
|
|
entityitem.setPickUpDelay(40);
|
|
entityitem.setThrower(this);
|
|
this.playSound(SoundEvents.FOX_SPIT, 1.0F, 1.0F);
|
|
- this.level().addFreshEntity(entityitem);
|
|
+ this.spawnAtLocation(entityitem); // Paper - Call EntityDropItemEvent
|
|
}
|
|
}
|
|
|
|
private void dropItemStack(ItemStack stack) {
|
|
ItemEntity entityitem = new ItemEntity(this.level(), this.getX(), this.getY(), this.getZ(), stack);
|
|
|
|
- this.level().addFreshEntity(entityitem);
|
|
+ this.spawnAtLocation(entityitem); // Paper - Call EntityDropItemEvent
|
|
}
|
|
|
|
@Override
|
|
diff --git a/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java b/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java
|
|
index 3b2cf9ca8447321d64ffdb4fdb9569d736d63dbb..923806900ef6248576e71260d40e9caf2c8943e8 100644
|
|
--- a/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java
|
|
+++ b/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java
|
|
@@ -361,8 +361,7 @@ public class Goat extends Animal {
|
|
double d2 = (double) Mth.randomBetween(this.random, -0.2F, 0.2F);
|
|
ItemEntity entityitem = new ItemEntity(this.level(), vec3d.x(), vec3d.y(), vec3d.z(), itemstack, d0, d1, d2);
|
|
|
|
- this.level().addFreshEntity(entityitem);
|
|
- return true;
|
|
+ return this.spawnAtLocation(entityitem) != null; // Paper - Call EntityDropItemEvent
|
|
}
|
|
}
|
|
|
|
diff --git a/src/main/java/net/minecraft/world/entity/animal/sniffer/Sniffer.java b/src/main/java/net/minecraft/world/entity/animal/sniffer/Sniffer.java
|
|
index 11236a1c1705600c2317f0ea4e3b712327352b40..a0c52ce65d4035d135b1536c7408a6867a553447 100644
|
|
--- a/src/main/java/net/minecraft/world/entity/animal/sniffer/Sniffer.java
|
|
+++ b/src/main/java/net/minecraft/world/entity/animal/sniffer/Sniffer.java
|
|
@@ -350,8 +350,9 @@ public class Sniffer extends Animal {
|
|
|
|
entityitem.setDefaultPickUpDelay();
|
|
this.finalizeSpawnChildFromBreeding(world, other, (AgeableMob) null);
|
|
+ if (this.spawnAtLocation(entityitem) != null) { // Paper - Call EntityDropItemEvent
|
|
this.playSound(SoundEvents.SNIFFER_EGG_PLOP, 1.0F, (this.random.nextFloat() - this.random.nextFloat()) * 0.2F + 0.5F);
|
|
- world.addFreshEntity(entityitem);
|
|
+ } // Paper - Call EntityDropItemEvent
|
|
}
|
|
|
|
@Override
|