mirror of
https://github.com/PaperMC/Paper.git
synced 2024-12-02 04:56:50 +01:00
ad9c58e103
Since 1.21.2, vanilla split relative teleportation flags into position and delta/velocity flags into separate enum entries. This highlighted a design flaw in the paper api addition for teleport flags, which just simply mirrored internals while also only being able to apply the delta/velocity part of a flag, given the teleport target is always absolute in the API. This patch proposes to simply no longer expose the non-velocity related flags to the API, instead marking the entire Relative enum as being purely velocity related, as non-velocity related flags are not useful to callers. This was done over simply exposing all internal flags, as another vanilla change to the internal enum would result in the same breakage. The newly proposed API *only* promises that the passed flags prevent the loss of velocity in the specific axis/context, which should be independent enough of vanillas specific implementation of this feature.
43 lines
3 KiB
Diff
43 lines
3 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: Janet Blackquill <uhhadd@gmail.com>
|
|
Date: Sun, 7 Apr 2024 16:52:42 -0400
|
|
Subject: [PATCH] Add CartographyItemEvent
|
|
|
|
|
|
diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
|
|
index 1ef521e4552f8ce48f620d8932d5e9356b14ae57..bf8355d3b235ce48cbb1011142096d42246a08e2 100644
|
|
--- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
|
|
+++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
|
|
@@ -3131,6 +3131,19 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
|
|
}
|
|
}
|
|
|
|
+ // Paper start - cartography item event
|
|
+ if (packet.getSlotNum() == net.minecraft.world.inventory.CartographyTableMenu.RESULT_SLOT && top instanceof org.bukkit.inventory.CartographyInventory cartographyInventory) {
|
|
+ org.bukkit.inventory.ItemStack result = cartographyInventory.getResult();
|
|
+ if (result != null && !result.isEmpty()) {
|
|
+ if (click == ClickType.NUMBER_KEY) {
|
|
+ event = new io.papermc.paper.event.player.CartographyItemEvent(inventory, type, packet.getSlotNum(), click, action, packet.getButtonNum());
|
|
+ } else {
|
|
+ event = new io.papermc.paper.event.player.CartographyItemEvent(inventory, type, packet.getSlotNum(), click, action);
|
|
+ }
|
|
+ }
|
|
+ }
|
|
+ // Paper end - cartography item event
|
|
+
|
|
event.setCancelled(cancelled);
|
|
AbstractContainerMenu oldContainer = this.player.containerMenu; // SPIGOT-1224
|
|
this.cserver.getPluginManager().callEvent(event);
|
|
diff --git a/src/main/java/net/minecraft/world/inventory/CartographyTableMenu.java b/src/main/java/net/minecraft/world/inventory/CartographyTableMenu.java
|
|
index b3a16b024e46ee8203b225ee429a5c973eab12c6..dc42d42ef91bc3e49f967c0a30a0d1b56e09cf21 100644
|
|
--- a/src/main/java/net/minecraft/world/inventory/CartographyTableMenu.java
|
|
+++ b/src/main/java/net/minecraft/world/inventory/CartographyTableMenu.java
|
|
@@ -71,7 +71,7 @@ public class CartographyTableMenu extends AbstractContainerMenu {
|
|
this.resultContainer = new ResultContainer(this.createBlockHolder(context)) { // Paper - Add missing InventoryHolders
|
|
@Override
|
|
public void setChanged() {
|
|
- CartographyTableMenu.this.slotsChanged(this);
|
|
+ // CartographyTableMenu.this.slotsChanged(this); // Paper - Add CatographyItemEvent - do not recompute results if the result slot changes - allows to set the result slot via api
|
|
super.setChanged();
|
|
}
|
|
|