mirror of
https://github.com/PaperMC/Paper.git
synced 2024-12-01 20:50:41 +01:00
4bc15f13aa
Upstream has released updates that appear to apply and compile correctly. This update has not been tested by PaperMC and as with ANY update, please do your own testing Bukkit Changes: e2160a18 Make MapCursor#type not depends on deprecated values CraftBukkit Changes: 6ce172642 SPIGOT-7761: Ender pearl does not damage or spawn endermites f5a63f734 SPIGOT-7759: Chunk not there when requested in ChunkUnloadEvent 28287259c Remove unused import eb9a7dde0 SPIGOT-7757: Cannot set item in Stonecutter Inventory f8be9d752 Move deserialized removed unhandled tags to dedicated removedTags a7e576186 Fix potential mutability issue with CraftMetaItem copy constructor 995885452 SPIGOT-7741: Vanilla ItemComponent in commands can't remove components 9ef69aa0b PR-1284: Move ItemType <-> ItemMeta linking to a centralized place 3e82eafbe PR-1420: Fix DirectEntity and CausingEntity Damager for Creepers ignited by Player c23daa71f SPIGOT-7751: Fix crash caused by arrows from trial spawners Make MapCursor#type not depends on deprecated values SPIGOT-7761: Ender pearl does not damage or spawn endermites
55 lines
3.8 KiB
Diff
55 lines
3.8 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: JRoy <joshroy126@gmail.com>
|
|
Date: Fri, 5 Jun 2020 18:24:06 -0400
|
|
Subject: [PATCH] Add PlayerRecipeBookClickEvent
|
|
|
|
|
|
diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
|
|
index 97059c8199bc80f3982556a4094f02b03138dc6c..c210c7632efd40a81432faa51bedabeac095e5c6 100644
|
|
--- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
|
|
+++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
|
|
@@ -3058,16 +3058,40 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
|
|
if (!this.player.containerMenu.stillValid(this.player)) {
|
|
ServerGamePacketListenerImpl.LOGGER.debug("Player {} interacted with invalid menu {}", this.player, this.player.containerMenu);
|
|
} else {
|
|
+ // Paper start - Add PlayerRecipeBookClickEvent
|
|
+ ResourceLocation recipeName = packet.getRecipe();
|
|
+ boolean makeAll = packet.isShiftDown();
|
|
+ com.destroystokyo.paper.event.player.PlayerRecipeBookClickEvent paperEvent = new com.destroystokyo.paper.event.player.PlayerRecipeBookClickEvent(
|
|
+ this.player.getBukkitEntity(), org.bukkit.craftbukkit.util.CraftNamespacedKey.fromMinecraft(recipeName), makeAll
|
|
+ );
|
|
+ if (!paperEvent.callEvent()) {
|
|
+ return;
|
|
+ }
|
|
+ recipeName = CraftNamespacedKey.toMinecraft(paperEvent.getRecipe());
|
|
+ makeAll = paperEvent.isMakeAll();
|
|
+ if (org.bukkit.event.player.PlayerRecipeBookClickEvent.getHandlerList().getRegisteredListeners().length > 0) {
|
|
+ // Paper end - Add PlayerRecipeBookClickEvent
|
|
// CraftBukkit start - implement PlayerRecipeBookClickEvent
|
|
- org.bukkit.inventory.Recipe recipe = this.cserver.getRecipe(CraftNamespacedKey.fromMinecraft(packet.getRecipe()));
|
|
+ org.bukkit.inventory.Recipe recipe = this.cserver.getRecipe(CraftNamespacedKey.fromMinecraft(recipeName)); // Paper
|
|
if (recipe == null) {
|
|
return;
|
|
}
|
|
- org.bukkit.event.player.PlayerRecipeBookClickEvent event = CraftEventFactory.callRecipeBookClickEvent(this.player, recipe, packet.isShiftDown());
|
|
+ // Paper start - Add PlayerRecipeBookClickEvent
|
|
+ org.bukkit.event.player.PlayerRecipeBookClickEvent event = CraftEventFactory.callRecipeBookClickEvent(this.player, recipe, makeAll);
|
|
+ recipeName = CraftNamespacedKey.toMinecraft(((org.bukkit.Keyed) event.getRecipe()).getKey());
|
|
+ makeAll = event.isShiftClick();
|
|
+ }
|
|
+ if (!(this.player.containerMenu instanceof RecipeBookMenu<?, ?> recipeBookMenu)) {
|
|
+ return;
|
|
+ }
|
|
+ // Paper end - Add PlayerRecipeBookClickEvent
|
|
|
|
// Cast to keyed should be safe as the recipe will never be a MerchantRecipe.
|
|
- this.server.getRecipeManager().byKey(CraftNamespacedKey.toMinecraft(((org.bukkit.Keyed) event.getRecipe()).getKey())).ifPresent((recipeholder) -> {
|
|
- ((RecipeBookMenu) this.player.containerMenu).handlePlacement(event.isShiftClick(), recipeholder, this.player);
|
|
+ // Paper start - Add PlayerRecipeBookClickEvent
|
|
+ final boolean finalMakeAll = makeAll;
|
|
+ this.server.getRecipeManager().byKey(recipeName).ifPresent((recipeholder) -> {
|
|
+ recipeBookMenu.handlePlacement(finalMakeAll, recipeholder, this.player);
|
|
+ // Paper end - Add PlayerRecipeBookClickEvent
|
|
});
|
|
// CraftBukkit end
|
|
}
|