Paper/Spigot-Server-Patches/0641-Added-PlayerLoomPatternSelectEvent.patch
Josh Roy be13705177
Updated Upstream (CraftBukkit) (#5484)
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

CraftBukkit Changes:
6b8cd9a7 SPIGOT-6207: forcibly drop the items of a converted zombie villager
2021-04-12 02:03:08 +01: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;
}