geforkt von Mirrors/Paper
18c3716c49
This enables us a fast reference to the entities current chunk instead of having to look it up by hashmap lookups. We also store counts by type to further enable other performance optimizations in later patches.
47 Zeilen
2.1 KiB
Diff
47 Zeilen
2.1 KiB
Diff
From 332880867e04c608e1bf1d4c4a4acd64b2e6daca Mon Sep 17 00:00:00 2001
|
|
From: Aikar <aikar@aikar.co>
|
|
Date: Tue, 11 Jul 2017 23:17:57 -0400
|
|
Subject: [PATCH] Fix Anvil Level sync to client
|
|
|
|
https://hub.spigotmc.org/stash/projects/SPIGOT/repos/craftbukkit/commits/763827668e6e5cddc111f3c93a0d718fec21ff51
|
|
|
|
Was done incorrectly and is now causing level desyncs to client.
|
|
|
|
Always send current level to the client, and instead make setWindowProperty set the level.
|
|
|
|
diff --git a/src/main/java/net/minecraft/server/ContainerAnvil.java b/src/main/java/net/minecraft/server/ContainerAnvil.java
|
|
index 175753c5a..16ec67569 100644
|
|
--- a/src/main/java/net/minecraft/server/ContainerAnvil.java
|
|
+++ b/src/main/java/net/minecraft/server/ContainerAnvil.java
|
|
@@ -376,9 +376,9 @@ public class ContainerAnvil extends Container {
|
|
for (int i = 0; i < this.listeners.size(); ++i) {
|
|
ICrafting icrafting = (ICrafting) this.listeners.get(i);
|
|
|
|
- if (this.lastLevelCost != this.levelCost) {
|
|
+ //if (this.lastLevelCost != this.levelCost) { // Paper - this was the wrong solution to this, fixing it correctly in CraftPlayer
|
|
icrafting.setContainerData(this, 0, this.levelCost);
|
|
- }
|
|
+ //} // Paper
|
|
}
|
|
|
|
this.lastLevelCost = this.levelCost;
|
|
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
|
|
index a9186b77a..1269a02aa 100644
|
|
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
|
|
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
|
|
@@ -1328,6 +1328,11 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
|
|
if (container.getBukkitView().getType() != prop.getType()) {
|
|
return false;
|
|
}
|
|
+ // Paper start
|
|
+ if (prop == Property.REPAIR_COST && container instanceof net.minecraft.server.ContainerAnvil) {
|
|
+ ((ContainerAnvil) container).levelCost = value;
|
|
+ }
|
|
+ // Paper end
|
|
getHandle().setContainerData(container, prop.getId(), value);
|
|
return true;
|
|
}
|
|
--
|
|
2.18.0
|
|
|