Files
OldSliceMC/patches/server/0041-PlayerResolveObjectIdEvent.patch
2024-04-08 08:34:56 -05:00

96 lines
4.3 KiB
Diff

From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Cryptite <cryptite@gmail.com>
Date: Wed, 24 Jan 2024 11:39:13 -0600
Subject: [PATCH] PlayerResolveObjectIdEvent
diff --git a/build.gradle.kts b/build.gradle.kts
index 85c077a53422e1c2dc1ff550ac117016c3d8e3f0..46980b062980be8c564a215a2ae67e0d1fe5251e 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/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
index e858d24061ce8fad612c12adac205c7ad59b8767..ad2567133405744abcf20d8572d6c7afc37581af 100644
--- a/src/main/java/net/minecraft/world/entity/Entity.java
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
@@ -252,7 +252,17 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S
// Paper start - Folia schedulers
synchronized (this) {
if (this.bukkitEntity == null) {
- return this.bukkitEntity = CraftEntity.getEntity(this.level.getCraftServer(), this);
+ this.bukkitEntity = CraftEntity.getEntity(this.level.getCraftServer(), this);
+
+ // Slice start - resolve ObjectId
+ if (this.bukkitEntity instanceof org.bukkit.craftbukkit.entity.CraftHumanEntity craftHumanEntity) {
+ io.papermc.paper.event.player.PlayerResolveObjectIdEvent event = new io.papermc.paper.event.player.PlayerResolveObjectIdEvent((org.bukkit.entity.Player) bukkitEntity);
+ event.callEvent();
+ craftHumanEntity.setObjectId(event.getObjectId());
+ }
+ // Slice end
+
+ return this.bukkitEntity;
}
}
// Paper end - Folia schedulers
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java
index 7984365c8290ac9e526a413b56e1c8c0841e330c..933fc8295b3b697c9f8cd8516ccac13348dcb843 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;
@@ -75,6 +75,7 @@ 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);
@@ -83,6 +84,18 @@ public class CraftHumanEntity extends CraftLivingEntity implements HumanEntity {
this.enderChest = new CraftInventory(entity.getEnderChestInventory());
}
+ // Slice start
+ @Override
+ public ObjectId getObjectId() {
+ return objectId;
+ }
+
+ @Override
+ public void setObjectId(ObjectId objectId) {
+ this.objectId = objectId;
+ }
+ // Slice end
+
@Override
public PlayerInventory getInventory() {
return this.inventory;