From 029ca3e2f6ff2000861094c4b5a3b5dfc6919665 Mon Sep 17 00:00:00 2001 From: Erik Broes Date: Sat, 30 Apr 2011 22:51:47 +0200 Subject: [PATCH] Prevent effects of tickrate degradation on item pickups --- src/main/java/net/minecraft/server/EntityItem.java | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/src/main/java/net/minecraft/server/EntityItem.java b/src/main/java/net/minecraft/server/EntityItem.java index c61ab3e07e..9b15397ff5 100644 --- a/src/main/java/net/minecraft/server/EntityItem.java +++ b/src/main/java/net/minecraft/server/EntityItem.java @@ -13,6 +13,7 @@ public class EntityItem extends Entity { public int pickupDelay; private int f = 5; public float d = (float) (Math.random() * 3.141592653589793D * 2.0D); + private int lastTick = (int) (System.currentTimeMillis() / 50); // CraftBukkit public EntityItem(World world, double d0, double d1, double d2, ItemStack itemstack) { super(world); @@ -40,9 +41,11 @@ public class EntityItem extends Entity { public void o_() { super.o_(); - if (this.pickupDelay > 0) { - --this.pickupDelay; - } + // CraftBukkit start + int currentTick = (int) (System.currentTimeMillis() / 50); + this.pickupDelay -= (currentTick - this.lastTick); + this.lastTick = currentTick; + // CraftBukkit end this.lastX = this.locX; this.lastY = this.locY; @@ -119,7 +122,7 @@ public class EntityItem extends Entity { int i = this.itemStack.count; // CraftBukkit start - if (this.pickupDelay == 0) { + if (this.pickupDelay <= 0) { // <-- == to <= Player player = (Player) entityhuman.getBukkitEntity(); PlayerPickupItemEvent event = new PlayerPickupItemEvent(player, (org.bukkit.entity.Item) this.getBukkitEntity()); ((WorldServer) world).getServer().getPluginManager().callEvent(event);