summaryrefslogtreecommitdiffstats
path: root/nms-patches
diff options
context:
space:
mode:
authormd_5 <git@md-5.net>2017-05-16 21:22:07 +1000
committermd_5 <git@md-5.net>2017-05-16 21:22:07 +1000
commit45102fcf284d3c713d3f161123e0771396475b21 (patch)
tree53efb9a181964dfc5aa6482ec1bfa803db310c31 /nms-patches
parentc4102405677265a3369ea42b20c9061b858e4f59 (diff)
downloadcraftbukkit-45102fcf284d3c713d3f161123e0771396475b21.tar
craftbukkit-45102fcf284d3c713d3f161123e0771396475b21.tar.gz
craftbukkit-45102fcf284d3c713d3f161123e0771396475b21.tar.lz
craftbukkit-45102fcf284d3c713d3f161123e0771396475b21.tar.xz
craftbukkit-45102fcf284d3c713d3f161123e0771396475b21.zip
Misc advancement / recipe reload fixes including SPIGOT-3240
Diffstat (limited to 'nms-patches')
-rw-r--r--nms-patches/AdvancementDataPlayer.patch9
-rw-r--r--nms-patches/CraftingManager.patch22
-rw-r--r--nms-patches/IRecipe.patch32
-rw-r--r--nms-patches/PlayerList.patch36
-rw-r--r--nms-patches/ShapelessRecipes.patch10
5 files changed, 73 insertions, 36 deletions
diff --git a/nms-patches/AdvancementDataPlayer.patch b/nms-patches/AdvancementDataPlayer.patch
index 2a323868..b3e70215 100644
--- a/nms-patches/AdvancementDataPlayer.patch
+++ b/nms-patches/AdvancementDataPlayer.patch
@@ -9,15 +9,6 @@
};
private final MinecraftServer d;
private final File e;
-@@ -68,7 +68,7 @@
- this.g.clear();
- this.h.clear();
- this.i.clear();
-- this.k = true;
-+ // this.k = true; // CraftBukkit - don't change flag on reload
- this.g();
- }
-
@@ -88,7 +88,7 @@
Iterator iterator = this.data.entrySet().iterator();
diff --git a/nms-patches/CraftingManager.patch b/nms-patches/CraftingManager.patch
index d7f5e216..dff26072 100644
--- a/nms-patches/CraftingManager.patch
+++ b/nms-patches/CraftingManager.patch
@@ -1,6 +1,22 @@
--- a/net/minecraft/server/CraftingManager.java
+++ b/net/minecraft/server/CraftingManager.java
-@@ -158,12 +158,14 @@
+@@ -34,6 +34,7 @@
+
+ public static boolean init() {
+ try {
++ CraftingManager.c = 0; // Reset recipe ID count
+ a("armordye", new RecipeArmorDye());
+ a("bookcloning", new RecipeBookClone());
+ a("mapcloning", new RecipeMapClone());
+@@ -147,6 +148,7 @@
+ if (CraftingManager.recipes.d(minecraftkey)) {
+ throw new IllegalStateException("Duplicate recipe ignored with ID " + minecraftkey);
+ } else {
++ irecipe.key = minecraftkey; // CraftBukkit
+ CraftingManager.recipes.a(CraftingManager.c++, minecraftkey, irecipe);
+ }
+ }
+@@ -158,12 +160,14 @@
do {
if (!iterator.hasNext()) {
@@ -15,7 +31,7 @@
return irecipe.craftItem(inventorycrafting);
}
-@@ -175,12 +177,14 @@
+@@ -175,12 +179,14 @@
do {
if (!iterator.hasNext()) {
@@ -30,7 +46,7 @@
return irecipe;
}
-@@ -210,7 +214,7 @@
+@@ -210,7 +216,7 @@
}
public static int a(IRecipe irecipe) {
diff --git a/nms-patches/IRecipe.patch b/nms-patches/IRecipe.patch
index d4840d72..48c1ebc4 100644
--- a/nms-patches/IRecipe.patch
+++ b/nms-patches/IRecipe.patch
@@ -1,13 +1,37 @@
--- a/net/minecraft/server/IRecipe.java
+++ b/net/minecraft/server/IRecipe.java
-@@ -28,7 +28,9 @@
- return ((MinecraftKey) CraftingManager.recipes.b(this)).a((MinecraftKey) CraftingManager.recipes.b(irecipe));
+@@ -3,6 +3,7 @@
+ public abstract class IRecipe implements Comparable<IRecipe> {
+
+ protected String a;
++ public MinecraftKey key; // CraftBukkit
+
+ public IRecipe() {
+ this("");
+@@ -25,10 +26,24 @@
+ }
+
+ public int a(IRecipe irecipe) {
+- return ((MinecraftKey) CraftingManager.recipes.b(this)).a((MinecraftKey) CraftingManager.recipes.b(irecipe));
++ return this.key.a(irecipe.key); // CraftBukkit
}
- public int compareTo(Object object) {
-+ public int compareTo(IRecipe object) { // CraftBukkit = decompile error
++ public int compareTo(IRecipe object) { // CraftBukkit - decompile error
return this.a((IRecipe) object);
}
+
-+ public abstract org.bukkit.inventory.Recipe toBukkitRecipe(); // CraftBukkit
++ // CraftBukkit start
++ @Override
++ public boolean equals(Object obj) {
++ return obj instanceof IRecipe && key.equals(((IRecipe) obj).key);
++ }
++
++ @Override
++ public int hashCode() {
++ return key.hashCode();
++ }
++
++ public abstract org.bukkit.inventory.Recipe toBukkitRecipe();
++ // CraftBukkit end
}
diff --git a/nms-patches/PlayerList.patch b/nms-patches/PlayerList.patch
index 95309563..e78caad1 100644
--- a/nms-patches/PlayerList.patch
+++ b/nms-patches/PlayerList.patch
@@ -601,13 +601,13 @@
+ double d1 = enter.getZ();
+ double d2 = 8.0D;
+ /*
- double d0 = entity.locX;
- double d1 = entity.locZ;
- double d2 = 8.0D;
- float f = entity.yaw;
++ double d0 = entity.locX;
++ double d1 = entity.locZ;
++ double d2 = 8.0D;
++ float f = entity.yaw;
+ */
-
- worldserver.methodProfiler.a("moving");
++
++ worldserver.methodProfiler.a("moving");
+ if (worldserver1.dimension == -1) {
+ d0 = MathHelper.a(d0 / d2, worldserver1.getWorldBorder().b()+ 16.0D, worldserver1.getWorldBorder().d() - 16.0D);
+ d1 = MathHelper.a(d1 / d2, worldserver1.getWorldBorder().c() + 16.0D, worldserver1.getWorldBorder().e() - 16.0D);
@@ -676,13 +676,13 @@
+ int i = worldserver.dimension;
+
+ /*
-+ double d0 = entity.locX;
-+ double d1 = entity.locZ;
-+ double d2 = 8.0D;
-+ float f = entity.yaw;
+ double d0 = entity.locX;
+ double d1 = entity.locZ;
+ double d2 = 8.0D;
+ float f = entity.yaw;
+ */
-+
-+ worldserver.methodProfiler.a("moving");
+
+ worldserver.methodProfiler.a("moving");
+ entity.setPositionRotation(exit.getX(), exit.getY(), exit.getZ(), exit.getYaw(), exit.getPitch());
+ if (entity.isAlive()) {
+ worldserver.entityJoinedWorld(entity, false);
@@ -918,3 +918,15 @@
if (worldserver != null) {
worldserver.getPlayerChunkMap().a(i);
+@@ -941,6 +1411,11 @@
+
+ advancementdataplayer.b();
+ }
++ // CraftBukkit start - trigger immediate flush of advancements
++ for (EntityPlayer player : players) {
++ player.getAdvancementData().b(player);
++ }
++ // CraftBukkit end
+
+ }
+ }
diff --git a/nms-patches/ShapelessRecipes.patch b/nms-patches/ShapelessRecipes.patch
index ff95bff6..cbe208aa 100644
--- a/nms-patches/ShapelessRecipes.patch
+++ b/nms-patches/ShapelessRecipes.patch
@@ -1,6 +1,6 @@
--- a/net/minecraft/server/ShapelessRecipes.java
+++ b/net/minecraft/server/ShapelessRecipes.java
-@@ -5,11 +5,16 @@
+@@ -5,6 +5,10 @@
import com.google.gson.JsonObject;
import java.util.ArrayList;
import java.util.Iterator;
@@ -11,13 +11,7 @@
public class ShapelessRecipes extends IRecipe {
- private final ItemStack result;
- private final NonNullList<RecipeItemStack> ingredients;
-+ public MinecraftKey key; // CraftBukkit
-
- public ShapelessRecipes(String s, ItemStack itemstack, NonNullList<RecipeItemStack> nonnulllist) {
- super(s);
-@@ -17,6 +22,21 @@
+@@ -17,6 +21,21 @@
this.ingredients = nonnulllist;
}