mirror of
https://github.com/PaperMC/Paper.git
synced 2024-09-12 06:58:11 +02:00
Upstream has released updates that appears to apply and compile correctly. This update has not been tested by PaperMC and as with ANY update, please do your own testing Bukkit Changes: 149527f7 SPIGOT-5782: Set Arrow Launched From Crossbow CraftBukkit Changes:be6aaf04
SPIGOT-5782: Set Arrow Launched From Crossbow833da9c4
SPIGOT-5799: InventoryCloseEvent fires after PlayerQuitEvent26c0084f
SPIGOT-5675, SPIGOT-5798, MC-149563: Fix tracking of entities across dimensions7f3e7c3f
SPIGOT-5797: Zombie(Villagers) Instant Convert based on their lifetime
85 lines
3.8 KiB
Diff
85 lines
3.8 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: Spottedleaf <Spottedleaf@users.noreply.github.com>
|
|
Date: Tue, 14 Jan 2020 15:28:28 -0800
|
|
Subject: [PATCH] Lag compensate eating
|
|
|
|
When the server is lagging, players will wait longer when eating.
|
|
Change to also use a time check instead if it passes.
|
|
|
|
diff --git a/src/main/java/net/minecraft/server/EntityLiving.java b/src/main/java/net/minecraft/server/EntityLiving.java
|
|
index 4f9255c0bc2ff46f34072846d2b0dc2e97f05db4..0ec0ddb7d0e3f25820fe064d75916407cb579eae 100644
|
|
--- a/src/main/java/net/minecraft/server/EntityLiving.java
|
|
+++ b/src/main/java/net/minecraft/server/EntityLiving.java
|
|
@@ -113,7 +113,7 @@ public abstract class EntityLiving extends Entity {
|
|
private int jumpTicks;
|
|
private float bD;
|
|
public ItemStack activeItem; // Paper - public
|
|
- protected int bl;
|
|
+ protected int bl; protected final int getEatTimeTicks() { return this.bl; } protected final void setEatTimeTicks(int value) { this.bl = value; } // Paper - OBFHELPER
|
|
protected int bm;
|
|
private BlockPosition bE;
|
|
private DamageSource bF;
|
|
@@ -2848,6 +2848,10 @@ public abstract class EntityLiving extends Entity {
|
|
return ((Byte) this.datawatcher.get(EntityLiving.ao) & 2) > 0 ? EnumHand.OFF_HAND : EnumHand.MAIN_HAND;
|
|
}
|
|
|
|
+ // Paper start - lag compensate eating
|
|
+ protected long eatStartTime;
|
|
+ protected int totalEatTimeTicks;
|
|
+ // Paper end
|
|
private void o() {
|
|
if (this.isHandRaised()) {
|
|
if (ItemStack.d(this.b(this.getRaisedHand()), this.activeItem)) {
|
|
@@ -2856,7 +2860,14 @@ public abstract class EntityLiving extends Entity {
|
|
this.b(this.activeItem, 5);
|
|
}
|
|
|
|
- if (--this.bl == 0 && !this.world.isClientSide && !this.activeItem.m()) {
|
|
+
|
|
+ // Paper start - lag compensate eating
|
|
+ // we add 1 to the expected time to avoid lag compensating when we should not
|
|
+ boolean shouldLagCompensate
|
|
+ = this.activeItem.getItem().isFood() && this.eatStartTime != -1 && (System.nanoTime() - this.eatStartTime) > ((1 + this.totalEatTimeTicks) * 50 * (1000 * 1000));
|
|
+ if ((--this.bl == 0 || shouldLagCompensate) && !this.world.isClientSide && !this.activeItem.m()) {
|
|
+ this.setEatTimeTicks(0);
|
|
+ // Paper end
|
|
this.q();
|
|
}
|
|
} else {
|
|
@@ -2906,7 +2917,10 @@ public abstract class EntityLiving extends Entity {
|
|
|
|
if (!itemstack.isEmpty() && !this.isHandRaised() || forceUpdate) { // Paper use override flag
|
|
this.activeItem = itemstack;
|
|
- this.bl = itemstack.k();
|
|
+ // Paper start - lag compensate eating
|
|
+ this.bl = this.totalEatTimeTicks = itemstack.k();
|
|
+ this.eatStartTime = System.nanoTime();
|
|
+ // Paper end
|
|
if (!this.world.isClientSide) {
|
|
this.c(1, true);
|
|
this.c(2, enumhand == EnumHand.OFF_HAND);
|
|
@@ -2930,7 +2944,10 @@ public abstract class EntityLiving extends Entity {
|
|
}
|
|
} else if (!this.isHandRaised() && !this.activeItem.isEmpty()) {
|
|
this.activeItem = ItemStack.a;
|
|
- this.bl = 0;
|
|
+ // Paper start - lag compensate eating
|
|
+ this.bl = this.totalEatTimeTicks = 0;
|
|
+ this.eatStartTime = -1L;
|
|
+ // Paper end
|
|
}
|
|
}
|
|
|
|
@@ -3052,7 +3069,10 @@ public abstract class EntityLiving extends Entity {
|
|
}
|
|
|
|
this.activeItem = ItemStack.a;
|
|
- this.bl = 0;
|
|
+ // Paper start - lag compensate eating
|
|
+ this.bl = this.totalEatTimeTicks = 0;
|
|
+ this.eatStartTime = -1L;
|
|
+ // Paper end
|
|
}
|
|
|
|
public boolean isBlocking() {
|