275173e538
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: 0c5d8709 SPIGOT-7400: Downgrade maven-resolver due to issues resolving certain depends 255c4fdb SPIGOT-7380: Add PlayerInteractEvent#getClickedPosition and ChiseledBookshelf#getSlot CraftBukkit Changes: b6b514b7e SPIGOT-7400: Downgrade maven-resolver due to issues resolving certain depends fcff84de9 SPIGOT-7399: Revert null check in CraftMetaItem#safelyAdd 44a4b5649 SPIGOT-7380: Add PlayerInteractEvent#getClickedPosition and ChiseledBookshelf#getSlot 676969d01 SPIGOT-7389: Handle setting null items in ChiseledBookshelf Inventory
52 Zeilen
3.1 KiB
Diff
52 Zeilen
3.1 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: Jake Potrebic <jake.m.potrebic@gmail.com>
|
|
Date: Fri, 27 Nov 2020 17:14:27 -0800
|
|
Subject: [PATCH] Added PlayerStonecutterRecipeSelectEvent
|
|
|
|
Co-Authored-By: MiniDigger <admin@benndorf.dev>
|
|
|
|
diff --git a/src/main/java/net/minecraft/world/inventory/StonecutterMenu.java b/src/main/java/net/minecraft/world/inventory/StonecutterMenu.java
|
|
index 00f01ab2eff69c18b50ec07b7623af66c66a28b6..1b1f814770d1a906ed880df578845be2e9a14f46 100644
|
|
--- a/src/main/java/net/minecraft/world/inventory/StonecutterMenu.java
|
|
+++ b/src/main/java/net/minecraft/world/inventory/StonecutterMenu.java
|
|
@@ -62,7 +62,7 @@ public class StonecutterMenu extends AbstractContainerMenu {
|
|
|
|
public StonecutterMenu(int syncId, Inventory playerInventory, final ContainerLevelAccess context) {
|
|
super(MenuType.STONECUTTER, syncId);
|
|
- this.selectedRecipeIndex = DataSlot.standalone();
|
|
+ this.selectedRecipeIndex = DataSlot.shared(new int[1], 0); // Paper - allow replication
|
|
this.recipes = Lists.newArrayList();
|
|
this.input = ItemStack.EMPTY;
|
|
this.slotUpdateListener = () -> {
|
|
@@ -160,7 +160,29 @@ public class StonecutterMenu extends AbstractContainerMenu {
|
|
@Override
|
|
public boolean clickMenuButton(net.minecraft.world.entity.player.Player player, int id) {
|
|
if (this.isValidRecipeIndex(id)) {
|
|
- this.selectedRecipeIndex.set(id);
|
|
+ // Paper start
|
|
+ int recipeIndex = id;
|
|
+ this.selectedRecipeIndex.set(recipeIndex);
|
|
+ this.selectedRecipeIndex.checkAndClearUpdateFlag(); // mark as changed
|
|
+ if (this.isValidRecipeIndex(id)) {
|
|
+ io.papermc.paper.event.player.PlayerStonecutterRecipeSelectEvent event = new io.papermc.paper.event.player.PlayerStonecutterRecipeSelectEvent((Player) player.getBukkitEntity(), (org.bukkit.inventory.StonecutterInventory) getBukkitView().getTopInventory(), (org.bukkit.inventory.StonecuttingRecipe) this.getRecipes().get(id).toBukkitRecipe());
|
|
+ if (!event.callEvent()) {
|
|
+ ((Player) player.getBukkitEntity()).updateInventory();
|
|
+ return false;
|
|
+ }
|
|
+ int newRecipeIndex;
|
|
+ if (!this.getRecipes().get(recipeIndex).getId().equals(org.bukkit.craftbukkit.util.CraftNamespacedKey.toMinecraft(event.getStonecuttingRecipe().getKey()))) { // If the recipe did NOT stay the same
|
|
+ for (newRecipeIndex = 0; newRecipeIndex < this.getRecipes().size(); newRecipeIndex++) {
|
|
+ if (this.getRecipes().get(newRecipeIndex).getId().equals(org.bukkit.craftbukkit.util.CraftNamespacedKey.toMinecraft(event.getStonecuttingRecipe().getKey()))) {
|
|
+ recipeIndex = newRecipeIndex;
|
|
+ break;
|
|
+ }
|
|
+ }
|
|
+ }
|
|
+ }
|
|
+ ((Player) player.getBukkitEntity()).updateInventory();
|
|
+ this.selectedRecipeIndex.set(recipeIndex); // set new index, so that listeners can read it
|
|
+ // Paper end
|
|
this.setupResultSlot();
|
|
}
|
|
|