--- a/net/minecraft/stats/RecipeBookServer.java +++ b/net/minecraft/stats/RecipeBookServer.java @@ -26,6 +26,8 @@ import net.minecraft.world.item.crafting.display.RecipeDisplayId; import org.slf4j.Logger; +import org.bukkit.craftbukkit.event.CraftEventFactory; // CraftBukkit + public class RecipeBookServer extends RecipeBook { public static final String RECIPE_BOOK_TAG = "recipeBook"; @@ -68,7 +70,7 @@ for (RecipeHolder recipeholder : collection) { ResourceKey> resourcekey = recipeholder.id(); - if (!this.known.contains(resourcekey) && !recipeholder.value().isSpecial()) { + if (!this.known.contains(resourcekey) && !recipeholder.value().isSpecial() && CraftEventFactory.handlePlayerRecipeListUpdateEvent(entityplayer, resourcekey.location())) { // CraftBukkit this.add(resourcekey); this.addHighlight(resourcekey); this.displayResolver.displaysForRecipe(resourcekey, (recipedisplayentry) -> { @@ -78,7 +80,7 @@ } } - if (!list.isEmpty()) { + if (!list.isEmpty() && entityplayer.connection != null) { // SPIGOT-4478 during PlayerLoginEvent entityplayer.connection.send(new ClientboundRecipeBookAddPacket(list, false)); } @@ -99,7 +101,7 @@ } } - if (!list.isEmpty()) { + if (!list.isEmpty() && entityplayer.connection != null) { // SPIGOT-4478 during PlayerLoginEvent entityplayer.connection.send(new ClientboundRecipeBookRemovePacket(list)); }