This commit is contained in:
chmodsayshello 2024-04-29 13:54:13 +02:00 committed by GitHub
commit 63600c15d9
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 98 additions and 0 deletions

View File

@ -0,0 +1,65 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: chmodsayshello <chmodsayshello@hotmail.com>
Date: Tue, 2 May 2023 18:11:50 +0200
Subject: [PATCH] add PlayerCreateMapEvent
diff --git a/src/main/java/io/papermc/paper/event/player/PlayerCreateMapEvent.java b/src/main/java/io/papermc/paper/event/player/PlayerCreateMapEvent.java
new file mode 100644
index 0000000000000000000000000000000000000000..7a9a77f4c7f02369b29b1d996abd168d30d6db5f
--- /dev/null
+++ b/src/main/java/io/papermc/paper/event/player/PlayerCreateMapEvent.java
@@ -0,0 +1,53 @@
+package io.papermc.paper.event.player;
+
+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.ItemStack;
+import org.jetbrains.annotations.NotNull;
+
+/**
+ * Called when a player generates a new map.
+ * This happens when right-clicking on a non filled map
+ * <p>
+ * Cancelling it will result in the map not getting generated.
+ * That way the item won't convert into a filled map...
+ */
+public class PlayerCreateMapEvent extends PlayerEvent implements Cancellable {
+ private boolean cancelled = false;
+ private final ItemStack mapStack;
+ private static final HandlerList HANDLER_LIST = new HandlerList();
+ public PlayerCreateMapEvent(Player player, ItemStack mapStack){
+ super(player);
+ this.mapStack = mapStack;
+ }
+
+ /**
+ * Gets the ItemStack of the Map.
+ *
+ * @return ItemStack of the newly created map
+ */
+ public ItemStack getMapStack(){
+ return mapStack;
+ }
+
+ @Override
+ public boolean isCancelled() {
+ return cancelled;
+ }
+
+ @Override
+ public void setCancelled(boolean cancel) {
+ this.cancelled = cancel;
+ }
+
+ @Override
+ public @NotNull HandlerList getHandlers() {
+ return HANDLER_LIST;
+ }
+
+ public static HandlerList getHandlerList(){
+ return HANDLER_LIST;
+ }
+}

View File

@ -0,0 +1,33 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: chmodsayshello <chmodsayshello@hotmail.com>
Date: Tue, 2 May 2023 18:22:35 +0200
Subject: [PATCH] add PlayerCreateMapEvent
diff --git a/src/main/java/net/minecraft/world/item/EmptyMapItem.java b/src/main/java/net/minecraft/world/item/EmptyMapItem.java
index e92bb09dd3218d5a13e6251bddd0812acadda2be..7da8084db2ad53d2d467e3b9868a523f7ce3970a 100644
--- a/src/main/java/net/minecraft/world/item/EmptyMapItem.java
+++ b/src/main/java/net/minecraft/world/item/EmptyMapItem.java
@@ -18,13 +18,18 @@ public class EmptyMapItem extends ComplexItem {
if (world.isClientSide) {
return InteractionResultHolder.success(itemStack);
} else {
- if (!user.getAbilities().instabuild) {
- itemStack.shrink(1);
- }
-
user.awardStat(Stats.ITEM_USED.get(this));
user.level.playSound((Player)null, user, SoundEvents.UI_CARTOGRAPHY_TABLE_TAKE_RESULT, user.getSoundSource(), 1.0F, 1.0F);
ItemStack itemStack2 = MapItem.create(world, user.getBlockX(), user.getBlockZ(), (byte)0, true, false);
+ // Paper start
+ io.papermc.paper.event.player.PlayerCreateMapEvent playerCreateMapEvent = new io.papermc.paper.event.player.PlayerCreateMapEvent((org.bukkit.entity.Player) user.getBukkitEntity(), itemStack2.asBukkitCopy());
+ world.getCraftServer().getPluginManager().callEvent(playerCreateMapEvent);
+ if (playerCreateMapEvent.isCancelled()) {
+ return InteractionResultHolder.consume(itemStack);
+ } else if (!user.getAbilities().instabuild) { // Paper - moved down a couple of lines so an item gets removed only if the event wasn't cancelled!
+ itemStack.shrink(1);
+ }
+ // Paper end
if (itemStack.isEmpty()) {
return InteractionResultHolder.consume(itemStack2);
} else {