From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Jake Potrebic 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; }