Skip to content

Commit e06e691

Browse files
authored
Fix inverted check in PiglinAi#pickUpItem (#13419)
1 parent 6aa085b commit e06e691

File tree

6 files changed

+25
-26
lines changed

6 files changed

+25
-26
lines changed

paper-server/patches/sources/net/minecraft/world/entity/Entity.java.patch

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -620,18 +620,19 @@
620620
double d = entity.getX() - this.getX();
621621
double d1 = entity.getZ() - this.getZ();
622622
double max = Mth.absMax(d, d1);
623-
@@ -1805,7 +_,23 @@
623+
@@ -1804,8 +_,24 @@
624+
}
624625

625626
public void push(double x, double y, double z) {
626-
if (Double.isFinite(x) && Double.isFinite(y) && Double.isFinite(z)) {
627-
- this.setDeltaMovement(this.getDeltaMovement().add(x, y, z));
628-
+ // Paper start - Add EntityKnockbackByEntityEvent and EntityPushedByEntityAttackEvent
629-
+ this.push(x, y, z, null);
630-
+ }
627+
+ // Paper start - Add EntityKnockbackByEntityEvent and EntityPushedByEntityAttackEvent
628+
+ this.push(x, y, z, null);
631629
+ }
632630
+
633631
+ public void push(double x, double y, double z, @Nullable Entity pushingEntity) {
634-
+ {
632+
+ // Paper end - Add EntityKnockbackByEntityEvent and EntityPushedByEntityAttackEvent
633+
if (Double.isFinite(x) && Double.isFinite(y) && Double.isFinite(z)) {
634+
- this.setDeltaMovement(this.getDeltaMovement().add(x, y, z));
635+
+ // Paper start - Add EntityKnockbackByEntityEvent and EntityPushedByEntityAttackEvent
635636
+ org.bukkit.util.Vector delta = new org.bukkit.util.Vector(x, y, z);
636637
+ if (pushingEntity != null) {
637638
+ io.papermc.paper.event.entity.EntityPushedByEntityAttackEvent event = new io.papermc.paper.event.entity.EntityPushedByEntityAttackEvent(this.getBukkitEntity(), io.papermc.paper.event.entity.EntityKnockbackEvent.Cause.PUSH, pushingEntity.getBukkitEntity(), delta);

paper-server/patches/sources/net/minecraft/world/entity/animal/dolphin/Dolphin.java.patch

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@
2828
ItemStack item = entity.getItem();
2929
if (this.canHoldItem(item)) {
3030
+ // CraftBukkit start - call EntityPickupItemEvent
31-
+ if (org.bukkit.craftbukkit.event.CraftEventFactory.callEntityPickupItemEvent(this, entity, 0, false).isCancelled()) return;
31+
+ if (org.bukkit.craftbukkit.event.CraftEventFactory.callEntityPickupItemEvent(this, entity, 0).isCancelled()) return;
3232
+ item = entity.getItem(); // CraftBukkit- update ItemStack from event
3333
+ // CraftBukkit end
3434
this.onItemPickup(entity);

paper-server/patches/sources/net/minecraft/world/entity/monster/piglin/PiglinAi.java.patch

Lines changed: 10 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,22 @@
11
--- a/net/minecraft/world/entity/monster/piglin/PiglinAi.java
22
+++ b/net/minecraft/world/entity/monster/piglin/PiglinAi.java
3-
@@ -336,23 +_,32 @@
3+
@@ -335,24 +_,26 @@
4+
45
protected static void pickUpItem(ServerLevel level, Piglin piglin, ItemEntity itemEntity) {
56
stopWalking(piglin);
7+
+ if (org.bukkit.craftbukkit.event.CraftEventFactory.callEntityPickupItemEvent(piglin, itemEntity, itemEntity.getItem().is(Items.GOLD_NUGGET) ? 0 : itemEntity.getItem().getCount() - 1).isCancelled()) return; // Paper
8+
+ piglin.onItemPickup(itemEntity); // Paper - moved from Piglin#pickUpItem - call prior to item entity modification
69
ItemStack item;
7-
- if (itemEntity.getItem().is(Items.GOLD_NUGGET)) {
8-
+ // CraftBukkit start
9-
+ // Paper start - EntityPickupItemEvent fixes; fix event firing twice
10-
+ if (itemEntity.getItem().is(Items.GOLD_NUGGET)) { // Paper
11-
+ if (!org.bukkit.craftbukkit.event.CraftEventFactory.callEntityPickupItemEvent(piglin, itemEntity, 0, false).isCancelled()) return;
12-
+ piglin.onItemPickup(itemEntity); // Paper - moved from Piglin#pickUpItem - call prior to item entity modification
13-
+ // Paper end
14-
piglin.take(itemEntity, itemEntity.getItem().getCount());
10+
if (itemEntity.getItem().is(Items.GOLD_NUGGET)) {
11+
- piglin.take(itemEntity, itemEntity.getItem().getCount());
12+
+ piglin.take(itemEntity, itemEntity.getItem().getCount()); // Paper - diff on change for above event
1513
item = itemEntity.getItem();
1614
- itemEntity.discard();
17-
- } else {
1815
+ itemEntity.discard(org.bukkit.event.entity.EntityRemoveEvent.Cause.PICKUP); // CraftBukkit - add Bukkit remove cause
19-
+ } else if (!org.bukkit.craftbukkit.event.CraftEventFactory.callEntityPickupItemEvent(piglin, itemEntity, itemEntity.getItem().getCount() - 1, false).isCancelled()) {
20-
+ piglin.onItemPickup(itemEntity); // Paper - EntityPickupItemEvent fixes; moved from Piglin#pickUpItem - call prior to item entity modification
21-
piglin.take(itemEntity, 1);
16+
} else {
17+
- piglin.take(itemEntity, 1);
18+
+ piglin.take(itemEntity, 1); // Paper - diff on change for above event
2219
item = removeOneItemFromItemEntity(itemEntity);
23-
+ } else {
24-
+ return;
25-
+ // CraftBukkit end
2620
}
2721

2822
- if (isLovedItem(item)) {

paper-server/patches/sources/net/minecraft/world/entity/npc/InventoryCarrier.java.patch

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77
+ // CraftBukkit start
88
+ ItemStack remaining = new SimpleContainer(inventory).addItem(item);
9-
+ if (org.bukkit.craftbukkit.event.CraftEventFactory.callEntityPickupItemEvent(mob, itemEntity, remaining.getCount(), false).isCancelled()) {
9+
+ if (org.bukkit.craftbukkit.event.CraftEventFactory.callEntityPickupItemEvent(mob, itemEntity, remaining.getCount()).isCancelled()) {
1010
+ return;
1111
+ }
1212
+ // CraftBukkit end

paper-server/patches/sources/net/minecraft/world/entity/raid/Raider.java.patch

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
&& !flag
66
&& ItemStack.matches(item, Raid.getOminousBannerInstance(this.registryAccess().lookupOrThrow(Registries.BANNER_PATTERN)))) {
77
+ // Paper start - EntityPickupItemEvent fixes
8-
+ if (org.bukkit.craftbukkit.event.CraftEventFactory.callEntityPickupItemEvent(this, entity, 0, false).isCancelled()) {
8+
+ if (org.bukkit.craftbukkit.event.CraftEventFactory.callEntityPickupItemEvent(this, entity, 0).isCancelled()) {
99
+ return;
1010
+ }
1111
+ // Paper end - EntityPickupItemEvent fixes

paper-server/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1944,6 +1944,10 @@ public static PlayerRecipeDiscoverEvent callPlayerRecipeListUpdateEvent(net.mine
19441944
return event;
19451945
}
19461946

1947+
public static EntityPickupItemEvent callEntityPickupItemEvent(Entity entity, ItemEntity item, int remaining) {
1948+
return callEntityPickupItemEvent(entity, item, remaining, false);
1949+
}
1950+
19471951
public static EntityPickupItemEvent callEntityPickupItemEvent(Entity entity, ItemEntity item, int remaining, boolean cancelled) {
19481952
EntityPickupItemEvent event = new EntityPickupItemEvent((LivingEntity) entity.getBukkitEntity(), (Item) item.getBukkitEntity(), remaining);
19491953
event.setCancelled(cancelled);

0 commit comments

Comments
 (0)