Paper/Spigot-Server-Patches/0639-Added-PlayerLoomPatternSelectEvent.patch
2021-05-15 23:42:36 +00:00

64 lines
3.2 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/ContainerLoom.java b/src/main/java/net/minecraft/world/inventory/ContainerLoom.java
index 7980930cc712e37a788f894bf2d2ee2b1cfc1196..5e5367710d43fc421806bda31cd611a9cb5869f3 100644
--- a/src/main/java/net/minecraft/world/inventory/ContainerLoom.java
+++ b/src/main/java/net/minecraft/world/inventory/ContainerLoom.java
@@ -22,6 +22,7 @@ import org.bukkit.craftbukkit.inventory.CraftInventoryLoom;
import org.bukkit.craftbukkit.inventory.CraftInventoryView;
import org.bukkit.entity.Player;
// CraftBukkit end
+import io.papermc.paper.event.player.PlayerLoomPatternSelectEvent; // Paper
public class ContainerLoom extends Container {
@@ -41,7 +42,7 @@ public class ContainerLoom extends Container {
}
// CraftBukkit end
private final ContainerAccess containerAccess;
- private final ContainerProperty d;
+ private final ContainerProperty d; public final ContainerProperty getSelectedBannerPattern() { return this.d; }; // Paper - OBFHELPER
private Runnable e;
private final Slot f;
private final Slot g;
@@ -160,7 +161,22 @@ public class ContainerLoom extends Container {
@Override
public boolean a(EntityHuman entityhuman, int i) {
if (i > 0 && i <= EnumBannerPatternType.R) {
- this.d.set(i);
+ // Paper start
+ int enumBannerPatternTypeOrdinal = i;
+ PlayerLoomPatternSelectEvent event = new PlayerLoomPatternSelectEvent((Player) entityhuman.getBukkitEntity(), ((CraftInventoryLoom) getBukkitView().getTopInventory()), org.bukkit.block.banner.PatternType.getByIdentifier(EnumBannerPatternType.values()[i].getIdentifier()));
+ if (!event.callEvent()) {
+ ((Player) entityhuman.getBukkitEntity()).updateInventory();
+ return false;
+ }
+ for (EnumBannerPatternType nms : EnumBannerPatternType.values()) {
+ if (event.getPatternType().getIdentifier().equals(nms.getIdentifier())) {
+ enumBannerPatternTypeOrdinal = nms.ordinal();
+ break;
+ }
+ }
+ ((Player) entityhuman.getBukkitEntity()).updateInventory();
+ this.getSelectedBannerPattern().set(enumBannerPatternTypeOrdinal);
+ // Paper end
this.j();
return true;
} else {
diff --git a/src/main/java/net/minecraft/world/level/block/entity/EnumBannerPatternType.java b/src/main/java/net/minecraft/world/level/block/entity/EnumBannerPatternType.java
index 988e52c675dbb5ef368c8dbb5fb6d4229eb30174..9bc27e727d11d4ac9055a0bc02d8a2ef606ff9c4 100644
--- a/src/main/java/net/minecraft/world/level/block/entity/EnumBannerPatternType.java
+++ b/src/main/java/net/minecraft/world/level/block/entity/EnumBannerPatternType.java
@@ -33,6 +33,7 @@ public enum EnumBannerPatternType {
this.T = flag;
}
+ public String getIdentifier() { return this.b(); } // Paper - OBFHELPER
public String b() {
return this.V;
}