diff --git a/Spigot-API-Patches/0256-Added-PlayerLoomPatternSelectEvent.patch b/Spigot-API-Patches/0256-Added-PlayerLoomPatternSelectEvent.patch new file mode 100644 index 0000000000..5677026956 --- /dev/null +++ b/Spigot-API-Patches/0256-Added-PlayerLoomPatternSelectEvent.patch @@ -0,0 +1,89 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Jake Potrebic +Date: Wed, 25 Nov 2020 16:33:42 -0800 +Subject: [PATCH] Added PlayerLoomPatternSelectEvent + + +diff --git a/src/main/java/io/papermc/paper/event/player/PlayerLoomPatternSelectEvent.java b/src/main/java/io/papermc/paper/event/player/PlayerLoomPatternSelectEvent.java +new file mode 100644 +index 0000000000000000000000000000000000000000..8cb05709f7cb5dee993ff6fea1626c41b90a7d8b +--- /dev/null ++++ b/src/main/java/io/papermc/paper/event/player/PlayerLoomPatternSelectEvent.java +@@ -0,0 +1,77 @@ ++package io.papermc.paper.event.player; ++ ++import org.bukkit.block.banner.PatternType; ++import org.bukkit.entity.Player; ++import org.bukkit.event.Cancellable; ++import org.bukkit.event.HandlerList; ++import org.bukkit.event.player.PlayerEvent; ++import org.bukkit.inventory.LoomInventory; ++import org.jetbrains.annotations.NotNull; ++ ++/** ++ * Called when a player selects a banner patten in a loom inventory. ++ */ ++public class PlayerLoomPatternSelectEvent extends PlayerEvent implements Cancellable { ++ ++ private static final HandlerList HANDLER_LIST = new HandlerList(); ++ ++ private boolean cancelled; ++ private final LoomInventory loomInventory; ++ private PatternType patternType; ++ ++ public PlayerLoomPatternSelectEvent(@NotNull Player player, @NotNull LoomInventory loomInventory, @NotNull PatternType patternType) { ++ super(player); ++ this.loomInventory = loomInventory; ++ this.patternType = patternType; ++ } ++ ++ /** ++ * Gets the loom inventory involved. ++ * ++ * @return the loom inventory ++ */ ++ @NotNull ++ public LoomInventory getLoomInventory() { ++ return loomInventory; ++ } ++ ++ /** ++ * Gets the pattern type selected. ++ * ++ * @return the pattern type ++ */ ++ @NotNull ++ public PatternType getPatternType() { ++ return patternType; ++ } ++ ++ /** ++ * Sets the pattern type selected. ++ * ++ * @param patternType the pattern type ++ */ ++ public void setPatternType(@NotNull PatternType patternType) { ++ this.patternType = patternType; ++ } ++ ++ @Override ++ public boolean isCancelled() { ++ return cancelled; ++ } ++ ++ @Override ++ public void setCancelled(boolean cancel) { ++ this.cancelled = cancel; ++ } ++ ++ @NotNull ++ @Override ++ public HandlerList getHandlers() { ++ return HANDLER_LIST; ++ } ++ ++ @NotNull ++ public static HandlerList getHandlerList() { ++ return HANDLER_LIST; ++ } ++} diff --git a/Spigot-Server-Patches/0644-Added-PlayerLoomPatternSelectEvent.patch b/Spigot-Server-Patches/0644-Added-PlayerLoomPatternSelectEvent.patch new file mode 100644 index 0000000000..c71bc8eeb2 --- /dev/null +++ b/Spigot-Server-Patches/0644-Added-PlayerLoomPatternSelectEvent.patch @@ -0,0 +1,63 @@ +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/server/ContainerLoom.java b/src/main/java/net/minecraft/server/ContainerLoom.java +index 1fe21ca13a1eecb64cb2d3f4f18993e181d26ae2..f8f380d9ccf3a9672ec66290bae3ca9ecf7f606a 100644 +--- a/src/main/java/net/minecraft/server/ContainerLoom.java ++++ b/src/main/java/net/minecraft/server/ContainerLoom.java +@@ -6,6 +6,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 { + +@@ -25,7 +26,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; +@@ -144,7 +145,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/server/EnumBannerPatternType.java b/src/main/java/net/minecraft/server/EnumBannerPatternType.java +index 22488b533c09f7a9d8a50414d368b62d21c29b1f..775e74effbf8a900951f63ab3ee8d5d055902e35 100644 +--- a/src/main/java/net/minecraft/server/EnumBannerPatternType.java ++++ b/src/main/java/net/minecraft/server/EnumBannerPatternType.java +@@ -30,6 +30,7 @@ public enum EnumBannerPatternType { + this.T = flag; + } + ++ public String getIdentifier() { return this.b(); } // Paper - OBFHELPER + public String b() { + return this.V; + }