0
0
mirror of https://github.com/PaperMC/Paper.git synced 2025-09-18 14:49:43 +00:00
Files
Paper/paper-server/patches/sources/net/minecraft/stats/ServerRecipeBook.java.patch
2025-08-23 17:15:16 +00:00

36 lines
1.8 KiB
Diff

--- a/net/minecraft/stats/ServerRecipeBook.java
+++ b/net/minecraft/stats/ServerRecipeBook.java
@@ -64,17 +_,21 @@
for (RecipeHolder<?> recipeHolder : recipes) {
ResourceKey<Recipe<?>> resourceKey = recipeHolder.id();
if (!this.known.contains(resourceKey) && !recipeHolder.value().isSpecial()) {
+ // Paper start - PlayerRecipeDiscoverEvent event
+ final org.bukkit.event.player.PlayerRecipeDiscoverEvent event = org.bukkit.craftbukkit.event.CraftEventFactory.callPlayerRecipeListUpdateEvent(player, recipeHolder);
+ if (event.isCancelled()) continue;
+ // Paper end - PlayerRecipeDiscoverEvent event
this.add(resourceKey);
this.addHighlight(resourceKey);
this.displayResolver
.displaysForRecipe(
- resourceKey, entry -> list.add(new ClientboundRecipeBookAddPacket.Entry(entry, recipeHolder.value().showNotification(), true))
+ resourceKey, entry -> list.add(new ClientboundRecipeBookAddPacket.Entry(entry, event.shouldShowNotification(), true)) // Paper - set notification from the event
);
CriteriaTriggers.RECIPE_UNLOCKED.trigger(player, recipeHolder);
}
}
- if (!list.isEmpty()) {
+ if (!list.isEmpty() && player.connection != null) { // SPIGOT-4478 during PlayerLoginEvent
player.connection.send(new ClientboundRecipeBookAddPacket(list, false));
}
@@ -92,7 +_,7 @@
}
}
- if (!list.isEmpty()) {
+ if (!list.isEmpty() && player.connection != null) { // SPIGOT-4478 during PlayerLoginEvent
player.connection.send(new ClientboundRecipeBookRemovePacket(list));
}