geforkt von Mirrors/Paper
Fix crash relating to bad recipes in furnace-like tile entities
Dieser Commit ist enthalten in:
Ursprung
71e08c0a8d
Commit
b436c07ec7
@ -176,11 +176,11 @@
|
|||||||
+ ItemStack itemstack = (ItemStack) nonnulllist.get(0);
|
+ ItemStack itemstack = (ItemStack) nonnulllist.get(0);
|
||||||
+ ItemStack itemstack1 = ((AbstractCookingRecipe) recipeholder.value()).assemble(singlerecipeinput, iregistrycustom);
|
+ ItemStack itemstack1 = ((AbstractCookingRecipe) recipeholder.value()).assemble(singlerecipeinput, iregistrycustom);
|
||||||
+ ItemStack itemstack2 = (ItemStack) nonnulllist.get(2);
|
+ ItemStack itemstack2 = (ItemStack) nonnulllist.get(2);
|
||||||
|
+
|
||||||
+ // CraftBukkit start - fire FurnaceSmeltEvent
|
+ // CraftBukkit start - fire FurnaceSmeltEvent
|
||||||
+ CraftItemStack source = CraftItemStack.asCraftMirror(itemstack);
|
+ CraftItemStack source = CraftItemStack.asCraftMirror(itemstack);
|
||||||
+ org.bukkit.inventory.ItemStack result = CraftItemStack.asBukkitCopy(itemstack1);
|
+ org.bukkit.inventory.ItemStack result = CraftItemStack.asBukkitCopy(itemstack1);
|
||||||
+
|
|
||||||
+ FurnaceSmeltEvent furnaceSmeltEvent = new FurnaceSmeltEvent(CraftBlock.at(world, blockposition), source, result, (org.bukkit.inventory.CookingRecipe<?>) recipeholder.toBukkitRecipe()); // Paper - Add recipe to cook events
|
+ FurnaceSmeltEvent furnaceSmeltEvent = new FurnaceSmeltEvent(CraftBlock.at(world, blockposition), source, result, (org.bukkit.inventory.CookingRecipe<?>) recipeholder.toBukkitRecipe()); // Paper - Add recipe to cook events
|
||||||
+ world.getCraftServer().getPluginManager().callEvent(furnaceSmeltEvent);
|
+ world.getCraftServer().getPluginManager().callEvent(furnaceSmeltEvent);
|
||||||
+
|
+
|
||||||
@ -276,7 +276,7 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -378,41 +481,55 @@
|
@@ -378,41 +481,56 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<RecipeHolder<?>> getRecipesToAwardAndPopExperience(ServerLevel world, Vec3 pos) {
|
public List<RecipeHolder<?>> getRecipesToAwardAndPopExperience(ServerLevel world, Vec3 pos) {
|
||||||
@ -294,6 +294,7 @@
|
|||||||
|
|
||||||
- world.recipeAccess().byKey((ResourceKey) entry.getKey()).ifPresent((recipeholder) -> {
|
- world.recipeAccess().byKey((ResourceKey) entry.getKey()).ifPresent((recipeholder) -> {
|
||||||
+ worldserver.recipeAccess().byKey(entry.getKey()).ifPresent((recipeholder) -> { // CraftBukkit - decompile error
|
+ worldserver.recipeAccess().byKey(entry.getKey()).ifPresent((recipeholder) -> { // CraftBukkit - decompile error
|
||||||
|
+ if (!(recipeholder.value() instanceof AbstractCookingRecipe)) return; // Paper - don't process non-cooking recipes
|
||||||
list.add(recipeholder);
|
list.add(recipeholder);
|
||||||
- AbstractFurnaceBlockEntity.createExperience(world, pos, entry.getIntValue(), ((AbstractCookingRecipe) recipeholder.value()).experience());
|
- AbstractFurnaceBlockEntity.createExperience(world, pos, entry.getIntValue(), ((AbstractCookingRecipe) recipeholder.value()).experience());
|
||||||
+ AbstractFurnaceBlockEntity.createExperience(worldserver, vec3d, entry.getIntValue(), ((AbstractCookingRecipe) recipeholder.value()).experience(), blockposition, entityplayer, itemstack, amount); // CraftBukkit
|
+ AbstractFurnaceBlockEntity.createExperience(worldserver, vec3d, entry.getIntValue(), ((AbstractCookingRecipe) recipeholder.value()).experience(), blockposition, entityplayer, itemstack, amount); // CraftBukkit
|
||||||
|
Laden…
In neuem Issue referenzieren
Einen Benutzer sperren