geforkt von Mirrors/Paper
51 Zeilen
1.8 KiB
Diff
51 Zeilen
1.8 KiB
Diff
--- a/net/minecraft/server/CraftingManager.java
|
|
+++ b/net/minecraft/server/CraftingManager.java
|
|
@@ -20,7 +20,7 @@
|
|
private static final Logger c = LogManager.getLogger();
|
|
public static final int a = "recipes/".length();
|
|
public static final int b = ".json".length();
|
|
- public Map<MinecraftKey, IRecipe> recipes = Maps.newHashMap();
|
|
+ public it.unimi.dsi.fastutil.objects.Object2ObjectLinkedOpenHashMap<MinecraftKey, IRecipe> recipes = new it.unimi.dsi.fastutil.objects.Object2ObjectLinkedOpenHashMap<>(); // CraftBukkit
|
|
private boolean e;
|
|
|
|
public CraftingManager() {}
|
|
@@ -84,7 +84,7 @@
|
|
if (this.recipes.containsKey(irecipe.getKey())) {
|
|
throw new IllegalStateException("Duplicate recipe ignored with ID " + irecipe.getKey());
|
|
} else {
|
|
- this.recipes.put(irecipe.getKey(), irecipe);
|
|
+ this.recipes.putAndMoveToFirst(irecipe.getKey(), irecipe); // CraftBukkit - SPIGOT-4638: last recipe gets priority
|
|
}
|
|
}
|
|
|
|
@@ -95,12 +95,14 @@
|
|
|
|
do {
|
|
if (!iterator.hasNext()) {
|
|
+ iinventory.setCurrentRecipe(null); // CraftBukkit - Clear recipe when no recipe is found
|
|
return ItemStack.a;
|
|
}
|
|
|
|
irecipe = (IRecipe) iterator.next();
|
|
} while (!irecipe.a(iinventory, world));
|
|
|
|
+ iinventory.setCurrentRecipe(irecipe); // CraftBukkit
|
|
return irecipe.craftItem(iinventory);
|
|
}
|
|
|
|
@@ -112,12 +114,14 @@
|
|
|
|
do {
|
|
if (!iterator.hasNext()) {
|
|
+ iinventory.setCurrentRecipe(null); // CraftBukkit - Clear recipe when no recipe is found
|
|
return null;
|
|
}
|
|
|
|
irecipe = (IRecipe) iterator.next();
|
|
} while (!irecipe.a(iinventory, world));
|
|
|
|
+ iinventory.setCurrentRecipe(irecipe); // CraftBukkit
|
|
return irecipe;
|
|
}
|
|
|