mirror of
https://github.com/PaperMC/Paper.git
synced 2024-09-12 15:08:27 +02:00
- Lots of itemstack cloning removed. Only clone if the item is actually moved - Return true when a plugin cancels inventory move item event instead of false, as false causes pulls to cycle through all items. However, pushes do not exhibit the same behavior, so this is not something plugins could of been relying on. - Add option (Default on) to cooldown hoppers when they fail to move an item due to full inventory - Skip subsequent InventoryMoveItemEvents if a plugin does not use the item after first event fire for an iteration
60 lines
2.3 KiB
Diff
60 lines
2.3 KiB
Diff
From 6e8a4f5f1b65d1146871827983d0cec19b615db9 Mon Sep 17 00:00:00 2001
|
|
From: BillyGalbreath <Blake.Galbreath@GMail.com>
|
|
Date: Fri, 5 May 2017 03:57:17 -0500
|
|
Subject: [PATCH] Item#canEntityPickup
|
|
|
|
|
|
diff --git a/src/main/java/net/minecraft/server/EntityInsentient.java b/src/main/java/net/minecraft/server/EntityInsentient.java
|
|
index 5ea9f3097..89e878365 100644
|
|
--- a/src/main/java/net/minecraft/server/EntityInsentient.java
|
|
+++ b/src/main/java/net/minecraft/server/EntityInsentient.java
|
|
@@ -514,6 +514,12 @@ public abstract class EntityInsentient extends EntityLiving {
|
|
while (iterator.hasNext()) {
|
|
EntityItem entityitem = (EntityItem) iterator.next();
|
|
|
|
+ // Paper Start
|
|
+ if (!entityitem.canMobPickup) {
|
|
+ continue;
|
|
+ }
|
|
+ // Paper End
|
|
+
|
|
if (!entityitem.dead && !entityitem.getItemStack().isEmpty() && !entityitem.t()) {
|
|
this.a(entityitem);
|
|
}
|
|
diff --git a/src/main/java/net/minecraft/server/EntityItem.java b/src/main/java/net/minecraft/server/EntityItem.java
|
|
index 6593fc633..99dbb1393 100644
|
|
--- a/src/main/java/net/minecraft/server/EntityItem.java
|
|
+++ b/src/main/java/net/minecraft/server/EntityItem.java
|
|
@@ -22,6 +22,7 @@ public class EntityItem extends Entity implements HopperPusher {
|
|
private static final DataWatcherObject<ItemStack> c = DataWatcher.a(EntityItem.class, DataWatcherRegistry.f);
|
|
private int age;
|
|
public int pickupDelay;
|
|
+ public boolean canMobPickup = true; // Paper
|
|
private int f;
|
|
private String g;
|
|
private String h;
|
|
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftItem.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftItem.java
|
|
index a17a537d6..1df17f09b 100644
|
|
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftItem.java
|
|
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftItem.java
|
|
@@ -37,6 +37,16 @@ public class CraftItem extends CraftEntity implements Item {
|
|
item.pickupDelay = Math.min(delay, Short.MAX_VALUE);
|
|
}
|
|
|
|
+ // Paper Start
|
|
+ public boolean canMobPickup() {
|
|
+ return item.canMobPickup;
|
|
+ }
|
|
+
|
|
+ public void setCanMobPickup(boolean canMobPickup) {
|
|
+ item.canMobPickup = canMobPickup;
|
|
+ }
|
|
+ // Paper End
|
|
+
|
|
@Override
|
|
public String toString() {
|
|
return "CraftItem";
|
|
--
|
|
2.16.1
|
|
|