From 9faf5a6bc36f1cf7bbc1dad0004193ef17e9c103 Mon Sep 17 00:00:00 2001 From: Cryptite Date: Wed, 24 Jan 2024 11:45:48 -0600 Subject: [PATCH] Addd PlayerResolveObjectIdEvent --- .../api/0022-PlayerResolveObjectIdEvent.patch | 88 +++++++++++++++++++ ...Allow-inventory-clicks-in-Spectator.patch} | 0 ...26-Packet-obfuscation-and-reduction.patch} | 0 ...atch => 0027-Long-distance-tracking.patch} | 0 ...ch => 0028-Equipment-Packet-Caching.patch} | 0 ...ch => 0029-Add-canDespawn-to-Warden.patch} | 2 +- ...eason-to-PlayerConnectionCloseEvent.patch} | 0 ... => 0031-Disable-feature-generation.patch} | 0 ...patch => 0032-Biome-freeze-override.patch} | 0 ...h => 0033-Change-KeepAlive-interval.patch} | 2 +- ...patch => 0034-Non-saveable-entities.patch} | 0 ...atch => 0035-ChunkStatusChangeEvent.patch} | 0 ...ble-sending-Entity-Movement-Packets.patch} | 0 ....patch => 0037-Player-spawnsOwnMobs.patch} | 0 ...-Set-location-on-a-Custom-Inventory.patch} | 0 ...e.patch => 0039-Shared-Data-Storage.patch} | 0 .../{0041-Vanish.patch => 0040-Vanish.patch} | 0 .../0041-PlayerResolveObjectIdEvent.patch | 73 +++++++++++++++ 18 files changed, 163 insertions(+), 2 deletions(-) create mode 100644 patches/api/0022-PlayerResolveObjectIdEvent.patch rename patches/server/{0026-Allow-inventory-clicks-in-Spectator.patch => 0025-Allow-inventory-clicks-in-Spectator.patch} (100%) rename patches/server/{0027-Packet-obfuscation-and-reduction.patch => 0026-Packet-obfuscation-and-reduction.patch} (100%) rename patches/server/{0028-Long-distance-tracking.patch => 0027-Long-distance-tracking.patch} (100%) rename patches/server/{0029-Equipment-Packet-Caching.patch => 0028-Equipment-Packet-Caching.patch} (100%) rename patches/server/{0030-Add-canDespawn-to-Warden.patch => 0029-Add-canDespawn-to-Warden.patch} (97%) rename patches/server/{0031-Add-reason-to-PlayerConnectionCloseEvent.patch => 0030-Add-reason-to-PlayerConnectionCloseEvent.patch} (100%) rename patches/server/{0032-Disable-feature-generation.patch => 0031-Disable-feature-generation.patch} (100%) rename patches/server/{0033-Biome-freeze-override.patch => 0032-Biome-freeze-override.patch} (100%) rename patches/server/{0034-Change-KeepAlive-interval.patch => 0033-Change-KeepAlive-interval.patch} (92%) rename patches/server/{0035-Non-saveable-entities.patch => 0034-Non-saveable-entities.patch} (100%) rename patches/server/{0036-ChunkStatusChangeEvent.patch => 0035-ChunkStatusChangeEvent.patch} (100%) rename patches/server/{0037-Disable-sending-Entity-Movement-Packets.patch => 0036-Disable-sending-Entity-Movement-Packets.patch} (100%) rename patches/server/{0038-Player-spawnsOwnMobs.patch => 0037-Player-spawnsOwnMobs.patch} (100%) rename patches/server/{0039-Set-location-on-a-Custom-Inventory.patch => 0038-Set-location-on-a-Custom-Inventory.patch} (100%) rename patches/server/{0040-Shared-Data-Storage.patch => 0039-Shared-Data-Storage.patch} (100%) rename patches/server/{0041-Vanish.patch => 0040-Vanish.patch} (100%) create mode 100644 patches/server/0041-PlayerResolveObjectIdEvent.patch diff --git a/patches/api/0022-PlayerResolveObjectIdEvent.patch b/patches/api/0022-PlayerResolveObjectIdEvent.patch new file mode 100644 index 000000000..04a1bce75 --- /dev/null +++ b/patches/api/0022-PlayerResolveObjectIdEvent.patch @@ -0,0 +1,88 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Cryptite +Date: Wed, 24 Jan 2024 11:39:14 -0600 +Subject: [PATCH] PlayerResolveObjectIdEvent + + +diff --git a/build.gradle.kts b/build.gradle.kts +index bf01892c248b988531d21d9fb0f74d0adf2205ac..44b537f6da989cea6ebde8d14dea834d24f8d7d4 100644 +--- a/build.gradle.kts ++++ b/build.gradle.kts +@@ -56,6 +56,8 @@ dependencies { + implementation("org.ow2.asm:asm-commons:9.5") + // Paper end + ++ implementation("org.mongodb:bson:4.11.1") // Slice - MongoDB Bson Library for ObjectIds ++ + api("org.apache.maven:maven-resolver-provider:3.9.6") // Paper - make API dependency for Paper Plugins + compileOnly("org.apache.maven.resolver:maven-resolver-connector-basic:1.9.18") + compileOnly("org.apache.maven.resolver:maven-resolver-transport-http:1.9.18") +diff --git a/src/main/java/io/papermc/paper/event/player/PlayerResolveObjectIdEvent.java b/src/main/java/io/papermc/paper/event/player/PlayerResolveObjectIdEvent.java +new file mode 100644 +index 0000000000000000000000000000000000000000..08712b27d0b80468fe3b203ea95f9a04d5fa07de +--- /dev/null ++++ b/src/main/java/io/papermc/paper/event/player/PlayerResolveObjectIdEvent.java +@@ -0,0 +1,48 @@ ++package io.papermc.paper.event.player; ++ ++import org.bson.types.ObjectId; ++import org.bukkit.event.Event; ++import org.bukkit.event.HandlerList; ++import org.jetbrains.annotations.NotNull; ++ ++import java.util.Objects; ++import java.util.UUID; ++ ++/** ++ * Called when a player trades with a standalone merchant GUI. ++ */ ++public class PlayerResolveObjectIdEvent extends Event { ++ private static final HandlerList handlers = new HandlerList(); ++ private final UUID uuid; ++ private ObjectId objectId; ++ ++ public PlayerResolveObjectIdEvent(@NotNull UUID uuid) { ++ this.uuid = uuid; ++ } ++ ++ @NotNull ++ public UUID getUuid() { ++ return uuid; ++ } ++ ++ @NotNull ++ public ObjectId getObjectId() { ++ return this.objectId; ++ } ++ ++ public void setObjectId(@NotNull ObjectId objectId) { ++ this.objectId = Objects.requireNonNull(objectId, "ObjectId cannot be null!"); ++ } ++ ++ @NotNull ++ @Override ++ public HandlerList getHandlers() { ++ return handlers; ++ } ++ ++ @NotNull ++ public static HandlerList getHandlerList() { ++ return handlers; ++ } ++ ++} +diff --git a/src/main/java/org/bukkit/entity/HumanEntity.java b/src/main/java/org/bukkit/entity/HumanEntity.java +index 8b0d04d5b39ee817555a36adddc39b18fc6f0d02..c3d2778659fb8eb12c203717c61705049bf7d530 100644 +--- a/src/main/java/org/bukkit/entity/HumanEntity.java ++++ b/src/main/java/org/bukkit/entity/HumanEntity.java +@@ -22,6 +22,10 @@ import org.jetbrains.annotations.Nullable; + */ + public interface HumanEntity extends LivingEntity, AnimalTamer, InventoryHolder { + ++ // Slice start ++ org.bson.types.@Nullable ObjectId getObjectId(); ++ // Slice end ++ + // Paper start + @Override + org.bukkit.inventory.@NotNull EntityEquipment getEquipment(); diff --git a/patches/server/0026-Allow-inventory-clicks-in-Spectator.patch b/patches/server/0025-Allow-inventory-clicks-in-Spectator.patch similarity index 100% rename from patches/server/0026-Allow-inventory-clicks-in-Spectator.patch rename to patches/server/0025-Allow-inventory-clicks-in-Spectator.patch diff --git a/patches/server/0027-Packet-obfuscation-and-reduction.patch b/patches/server/0026-Packet-obfuscation-and-reduction.patch similarity index 100% rename from patches/server/0027-Packet-obfuscation-and-reduction.patch rename to patches/server/0026-Packet-obfuscation-and-reduction.patch diff --git a/patches/server/0028-Long-distance-tracking.patch b/patches/server/0027-Long-distance-tracking.patch similarity index 100% rename from patches/server/0028-Long-distance-tracking.patch rename to patches/server/0027-Long-distance-tracking.patch diff --git a/patches/server/0029-Equipment-Packet-Caching.patch b/patches/server/0028-Equipment-Packet-Caching.patch similarity index 100% rename from patches/server/0029-Equipment-Packet-Caching.patch rename to patches/server/0028-Equipment-Packet-Caching.patch diff --git a/patches/server/0030-Add-canDespawn-to-Warden.patch b/patches/server/0029-Add-canDespawn-to-Warden.patch similarity index 97% rename from patches/server/0030-Add-canDespawn-to-Warden.patch rename to patches/server/0029-Add-canDespawn-to-Warden.patch index 11ad148a6..6129c0ec3 100644 --- a/patches/server/0030-Add-canDespawn-to-Warden.patch +++ b/patches/server/0029-Add-canDespawn-to-Warden.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Add canDespawn to Warden diff --git a/src/main/java/net/minecraft/world/entity/EntityType.java b/src/main/java/net/minecraft/world/entity/EntityType.java -index e52f3da3b63cc3dba59d3e874a8420dd312b5e96..1cd7075feb2aeb61dfb9d8665d07ed82fc14ba3a 100644 +index edc723ea5ca3a325106e7af38c60dbf9f0f5fb77..c855e2826f24c872bbb7ae3af432545e4580fb36 100644 --- a/src/main/java/net/minecraft/world/entity/EntityType.java +++ b/src/main/java/net/minecraft/world/entity/EntityType.java @@ -599,7 +599,7 @@ public class EntityType implements FeatureElement, EntityTypeT diff --git a/patches/server/0031-Add-reason-to-PlayerConnectionCloseEvent.patch b/patches/server/0030-Add-reason-to-PlayerConnectionCloseEvent.patch similarity index 100% rename from patches/server/0031-Add-reason-to-PlayerConnectionCloseEvent.patch rename to patches/server/0030-Add-reason-to-PlayerConnectionCloseEvent.patch diff --git a/patches/server/0032-Disable-feature-generation.patch b/patches/server/0031-Disable-feature-generation.patch similarity index 100% rename from patches/server/0032-Disable-feature-generation.patch rename to patches/server/0031-Disable-feature-generation.patch diff --git a/patches/server/0033-Biome-freeze-override.patch b/patches/server/0032-Biome-freeze-override.patch similarity index 100% rename from patches/server/0033-Biome-freeze-override.patch rename to patches/server/0032-Biome-freeze-override.patch diff --git a/patches/server/0034-Change-KeepAlive-interval.patch b/patches/server/0033-Change-KeepAlive-interval.patch similarity index 92% rename from patches/server/0034-Change-KeepAlive-interval.patch rename to patches/server/0033-Change-KeepAlive-interval.patch index dd9d0eaa2..ec4cd8d63 100644 --- a/patches/server/0034-Change-KeepAlive-interval.patch +++ b/patches/server/0033-Change-KeepAlive-interval.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Change KeepAlive interval diff --git a/src/main/java/net/minecraft/server/network/ServerCommonPacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerCommonPacketListenerImpl.java -index f5f2d65d2e02b0d79352585d9d4ef588ab59dce7..1490a552eaf01228ef46ef8360038c268f8952a3 100644 +index 0306771b8f90dcdd77f151c19c6c2d75c41f8feb..4563117ce775d6c73a604f512ab595b87a10ddb3 100644 --- a/src/main/java/net/minecraft/server/network/ServerCommonPacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerCommonPacketListenerImpl.java @@ -215,7 +215,7 @@ public abstract class ServerCommonPacketListenerImpl implements ServerCommonPack diff --git a/patches/server/0035-Non-saveable-entities.patch b/patches/server/0034-Non-saveable-entities.patch similarity index 100% rename from patches/server/0035-Non-saveable-entities.patch rename to patches/server/0034-Non-saveable-entities.patch diff --git a/patches/server/0036-ChunkStatusChangeEvent.patch b/patches/server/0035-ChunkStatusChangeEvent.patch similarity index 100% rename from patches/server/0036-ChunkStatusChangeEvent.patch rename to patches/server/0035-ChunkStatusChangeEvent.patch diff --git a/patches/server/0037-Disable-sending-Entity-Movement-Packets.patch b/patches/server/0036-Disable-sending-Entity-Movement-Packets.patch similarity index 100% rename from patches/server/0037-Disable-sending-Entity-Movement-Packets.patch rename to patches/server/0036-Disable-sending-Entity-Movement-Packets.patch diff --git a/patches/server/0038-Player-spawnsOwnMobs.patch b/patches/server/0037-Player-spawnsOwnMobs.patch similarity index 100% rename from patches/server/0038-Player-spawnsOwnMobs.patch rename to patches/server/0037-Player-spawnsOwnMobs.patch diff --git a/patches/server/0039-Set-location-on-a-Custom-Inventory.patch b/patches/server/0038-Set-location-on-a-Custom-Inventory.patch similarity index 100% rename from patches/server/0039-Set-location-on-a-Custom-Inventory.patch rename to patches/server/0038-Set-location-on-a-Custom-Inventory.patch diff --git a/patches/server/0040-Shared-Data-Storage.patch b/patches/server/0039-Shared-Data-Storage.patch similarity index 100% rename from patches/server/0040-Shared-Data-Storage.patch rename to patches/server/0039-Shared-Data-Storage.patch diff --git a/patches/server/0041-Vanish.patch b/patches/server/0040-Vanish.patch similarity index 100% rename from patches/server/0041-Vanish.patch rename to patches/server/0040-Vanish.patch diff --git a/patches/server/0041-PlayerResolveObjectIdEvent.patch b/patches/server/0041-PlayerResolveObjectIdEvent.patch new file mode 100644 index 000000000..11a14bb62 --- /dev/null +++ b/patches/server/0041-PlayerResolveObjectIdEvent.patch @@ -0,0 +1,73 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Cryptite +Date: Wed, 24 Jan 2024 11:39:13 -0600 +Subject: [PATCH] PlayerResolveObjectIdEvent + + +diff --git a/build.gradle.kts b/build.gradle.kts +index 223e80ea0ede575cf8f73191ef2799ae0ee41ba7..8868ebd92b13bc2aa48e4f6cae33ed464be621d1 100644 +--- a/build.gradle.kts ++++ b/build.gradle.kts +@@ -26,6 +26,8 @@ dependencies { + implementation("com.fasterxml.jackson.core:jackson-annotations:2.13.0") + // Slice end + ++ implementation("org.mongodb:bson:4.11.1") // Slice - MongoDB Bson Library for ObjectIds ++ + // Paper start + implementation("org.jline:jline-terminal-jansi:3.21.0") + implementation("net.minecrell:terminalconsoleappender:1.3.0") +diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java +index acbb64010cd59668aa1bcb52ff1220789cadb1d3..58802dfb9aa2eaf1acc533e6bd8f996231de5074 100644 +--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java ++++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java +@@ -7,6 +7,8 @@ import java.util.Arrays; + import java.util.Collection; + import java.util.Optional; + import java.util.Set; ++ ++import io.papermc.paper.event.player.PlayerResolveObjectIdEvent; + import net.minecraft.core.BlockPos; + import net.minecraft.nbt.CompoundTag; + import net.minecraft.network.chat.Component; +@@ -31,10 +33,8 @@ import net.minecraft.world.level.block.CraftingTableBlock; + import net.minecraft.world.level.block.EnchantmentTableBlock; + import net.minecraft.world.level.block.entity.BlockEntity; + import net.minecraft.world.level.block.state.BlockState; +-import org.bukkit.GameMode; +-import org.bukkit.Location; +-import org.bukkit.Material; +-import org.bukkit.NamespacedKey; ++import org.bson.types.ObjectId; ++import org.bukkit.*; + import org.bukkit.block.Block; + import org.bukkit.craftbukkit.CraftServer; + import org.bukkit.craftbukkit.entity.memory.CraftMemoryMapper; +@@ -74,13 +74,27 @@ public class CraftHumanEntity extends CraftLivingEntity implements HumanEntity { + protected final PermissibleBase perm = new PermissibleBase(this); + private boolean op; + private GameMode mode; ++ private org.bson.types.ObjectId objectId; + + public CraftHumanEntity(final CraftServer server, final Player entity) { + super(server, entity); + this.mode = server.getDefaultGameMode(); + this.inventory = new CraftInventoryPlayer(entity.getInventory()); + this.enderChest = new CraftInventory(entity.getEnderChestInventory()); ++ ++ // Slice start - resolve ObjectId ++ PlayerResolveObjectIdEvent event = new PlayerResolveObjectIdEvent(entity.getUUID()); ++ event.callEvent(); ++ objectId = event.getObjectId(); ++ // Slice end ++ } ++ ++ // Slice start ++ @Override ++ public ObjectId getObjectId() { ++ return objectId; + } ++ // Slice end + + @Override + public PlayerInventory getInventory() {