bffb08c2f9
The Paper method was chosen for deprecation because it was more restrictive in that it has an isGliding check.
49 Zeilen
2.8 KiB
Diff
49 Zeilen
2.8 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: Jake Potrebic <jake.m.potrebic@gmail.com>
|
|
Date: Wed, 25 Nov 2020 16:33:27 -0800
|
|
Subject: [PATCH] Added PlayerLoomPatternSelectEvent
|
|
|
|
|
|
diff --git a/src/main/java/net/minecraft/world/inventory/LoomMenu.java b/src/main/java/net/minecraft/world/inventory/LoomMenu.java
|
|
index 757ee83a0ec5d381eb328f31f3bef636a9b72d57..e28c1cdf4763e9db3e29b3c0f08d65f978017931 100644
|
|
--- a/src/main/java/net/minecraft/world/inventory/LoomMenu.java
|
|
+++ b/src/main/java/net/minecraft/world/inventory/LoomMenu.java
|
|
@@ -173,8 +173,35 @@ public class LoomMenu extends AbstractContainerMenu {
|
|
@Override
|
|
public boolean clickMenuButton(net.minecraft.world.entity.player.Player player, int id) {
|
|
if (id >= 0 && id < this.selectablePatterns.size()) {
|
|
- this.selectedBannerPatternIndex.set(id);
|
|
- this.setupResultSlot((Holder) this.selectablePatterns.get(id));
|
|
+ // Paper start
|
|
+ int selectablePatternIndex = id;
|
|
+ io.papermc.paper.event.player.PlayerLoomPatternSelectEvent event = new io.papermc.paper.event.player.PlayerLoomPatternSelectEvent((Player) player.getBukkitEntity(), ((CraftInventoryLoom) getBukkitView().getTopInventory()), org.bukkit.block.banner.PatternType.getByIdentifier(this.selectablePatterns.get(selectablePatternIndex).value().getHashname()));
|
|
+ if (!event.callEvent()) {
|
|
+ ((Player) player.getBukkitEntity()).updateInventory();
|
|
+ return false;
|
|
+ }
|
|
+ Holder<BannerPattern> selectedPattern = null;
|
|
+ for (int i = 0; i < this.selectablePatterns.size(); i++) {
|
|
+ final Holder<BannerPattern> holder = this.selectablePatterns.get(i);
|
|
+ if (event.getPatternType().getIdentifier().equals(holder.value().getHashname())) {
|
|
+ selectablePatternIndex = i;
|
|
+ selectedPattern = holder;
|
|
+ break;
|
|
+ }
|
|
+ }
|
|
+ if (selectedPattern == null) {
|
|
+ for (BannerPattern pattern : BuiltInRegistries.BANNER_PATTERN) {
|
|
+ if (event.getPatternType().getIdentifier().equals(pattern.getHashname())) {
|
|
+ selectedPattern = BuiltInRegistries.BANNER_PATTERN.getHolder(BuiltInRegistries.BANNER_PATTERN.getId(pattern)).orElseThrow();
|
|
+ break;
|
|
+ }
|
|
+ }
|
|
+ selectablePatternIndex = -1;
|
|
+ }
|
|
+ ((Player) player.getBukkitEntity()).updateInventory();
|
|
+ this.selectedBannerPatternIndex.set(selectablePatternIndex);
|
|
+ this.setupResultSlot(java.util.Objects.requireNonNull(selectedPattern, "selectedPattern was null, this is unexpected"));
|
|
+ // Paper end
|
|
return true;
|
|
} else {
|
|
return false;
|