Misc advancement / recipe reload fixes including SPIGOT-3240

Dieser Commit ist enthalten in:
md_5 2017-05-16 21:22:07 +10:00
Ursprung c410240567
Commit 45102fcf28
8 geänderte Dateien mit 75 neuen und 42 gelöschten Zeilen

Datei anzeigen

@ -9,15 +9,6 @@
}; };
private final MinecraftServer d; private final MinecraftServer d;
private final File e; 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 @@ @@ -88,7 +88,7 @@
Iterator iterator = this.data.entrySet().iterator(); Iterator iterator = this.data.entrySet().iterator();

Datei anzeigen

@ -1,6 +1,22 @@
--- a/net/minecraft/server/CraftingManager.java --- a/net/minecraft/server/CraftingManager.java
+++ b/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 { do {
if (!iterator.hasNext()) { if (!iterator.hasNext()) {
@ -15,7 +31,7 @@
return irecipe.craftItem(inventorycrafting); return irecipe.craftItem(inventorycrafting);
} }
@@ -175,12 +177,14 @@ @@ -175,12 +179,14 @@
do { do {
if (!iterator.hasNext()) { if (!iterator.hasNext()) {
@ -30,7 +46,7 @@
return irecipe; return irecipe;
} }
@@ -210,7 +214,7 @@ @@ -210,7 +216,7 @@
} }
public static int a(IRecipe irecipe) { public static int a(IRecipe irecipe) {

Datei anzeigen

@ -1,13 +1,37 @@
--- a/net/minecraft/server/IRecipe.java --- a/net/minecraft/server/IRecipe.java
+++ b/net/minecraft/server/IRecipe.java +++ b/net/minecraft/server/IRecipe.java
@@ -28,7 +28,9 @@ @@ -3,6 +3,7 @@
return ((MinecraftKey) CraftingManager.recipes.b(this)).a((MinecraftKey) CraftingManager.recipes.b(irecipe)); 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(Object object) {
+ public int compareTo(IRecipe object) { // CraftBukkit = decompile error + public int compareTo(IRecipe object) { // CraftBukkit - decompile error
return this.a((IRecipe) object); 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
} }

Datei anzeigen

@ -601,13 +601,13 @@
+ double d1 = enter.getZ(); + double d1 = enter.getZ();
+ double d2 = 8.0D; + double d2 = 8.0D;
+ /* + /*
double d0 = entity.locX; + double d0 = entity.locX;
double d1 = entity.locZ; + double d1 = entity.locZ;
double d2 = 8.0D; + double d2 = 8.0D;
float f = entity.yaw; + float f = entity.yaw;
+ */ + */
+
worldserver.methodProfiler.a("moving"); + worldserver.methodProfiler.a("moving");
+ if (worldserver1.dimension == -1) { + if (worldserver1.dimension == -1) {
+ d0 = MathHelper.a(d0 / d2, worldserver1.getWorldBorder().b()+ 16.0D, worldserver1.getWorldBorder().d() - 16.0D); + 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); + d1 = MathHelper.a(d1 / d2, worldserver1.getWorldBorder().c() + 16.0D, worldserver1.getWorldBorder().e() - 16.0D);
@ -676,13 +676,13 @@
+ int i = worldserver.dimension; + int i = worldserver.dimension;
+ +
+ /* + /*
+ double d0 = entity.locX; double d0 = entity.locX;
+ double d1 = entity.locZ; double d1 = entity.locZ;
+ double d2 = 8.0D; double d2 = 8.0D;
+ float f = entity.yaw; float f = entity.yaw;
+ */ + */
+
+ worldserver.methodProfiler.a("moving"); worldserver.methodProfiler.a("moving");
+ entity.setPositionRotation(exit.getX(), exit.getY(), exit.getZ(), exit.getYaw(), exit.getPitch()); + entity.setPositionRotation(exit.getX(), exit.getY(), exit.getZ(), exit.getYaw(), exit.getPitch());
+ if (entity.isAlive()) { + if (entity.isAlive()) {
+ worldserver.entityJoinedWorld(entity, false); + worldserver.entityJoinedWorld(entity, false);
@ -918,3 +918,15 @@
if (worldserver != null) { if (worldserver != null) {
worldserver.getPlayerChunkMap().a(i); 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
}
}

Datei anzeigen

@ -1,6 +1,6 @@
--- a/net/minecraft/server/ShapelessRecipes.java --- a/net/minecraft/server/ShapelessRecipes.java
+++ b/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 com.google.gson.JsonObject;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Iterator; import java.util.Iterator;
@ -11,13 +11,7 @@
public class ShapelessRecipes extends IRecipe { public class ShapelessRecipes extends IRecipe {
private final ItemStack result; @@ -17,6 +21,21 @@
private final NonNullList<RecipeItemStack> ingredients;
+ public MinecraftKey key; // CraftBukkit
public ShapelessRecipes(String s, ItemStack itemstack, NonNullList<RecipeItemStack> nonnulllist) {
super(s);
@@ -17,6 +22,21 @@
this.ingredients = nonnulllist; this.ingredients = nonnulllist;
} }

Datei anzeigen

@ -1077,10 +1077,6 @@ public final class CraftServer implements Server {
@Override @Override
public void resetRecipes() { public void resetRecipes() {
// See SPIGOT-3240
if (true) {
return;
}
CraftingManager.recipes = new RegistryMaterials(); CraftingManager.recipes = new RegistryMaterials();
CraftingManager.init(); CraftingManager.init();
RecipesFurnace.getInstance().recipes = new RecipesFurnace().recipes; RecipesFurnace.getInstance().recipes = new RecipesFurnace().recipes;

Datei anzeigen

@ -21,7 +21,7 @@ public class CraftShapedRecipe extends ShapedRecipe implements CraftRecipe {
} }
public CraftShapedRecipe(ItemStack result, ShapedRecipes recipe) { public CraftShapedRecipe(ItemStack result, ShapedRecipes recipe) {
this(CraftNamespacedKey.fromMinecraft(CraftingManager.recipes.b(recipe)), result); this(CraftNamespacedKey.fromMinecraft(recipe.key), result);
this.recipe = recipe; this.recipe = recipe;
} }

Datei anzeigen

@ -21,7 +21,7 @@ public class CraftShapelessRecipe extends ShapelessRecipe implements CraftRecipe
} }
public CraftShapelessRecipe(ItemStack result, ShapelessRecipes recipe) { public CraftShapelessRecipe(ItemStack result, ShapelessRecipes recipe) {
this(CraftNamespacedKey.fromMinecraft(recipe.key != null ? recipe.key : CraftingManager.recipes.b(recipe)), result); this(CraftNamespacedKey.fromMinecraft(recipe.key), result);
this.recipe = recipe; this.recipe = recipe;
} }