More work
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
group=com.lokamc.slice
|
||||
version=1.21.3-R0.1-SNAPSHOT
|
||||
mcVersion=1.21.3
|
||||
paperRef=be886cf4e7ba906a3e79d9d38835d35abf60a0ce
|
||||
paperRef=4e01ede95097518c1050215def2e6f44e9fb7369
|
||||
updatingMinecraft=false
|
||||
|
||||
org.gradle.caching=true
|
||||
|
||||
133
patches/api/0015-Add-PlayerData-Events.patch
Normal file
133
patches/api/0015-Add-PlayerData-Events.patch
Normal file
@@ -0,0 +1,133 @@
|
||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Tom <cryptite@gmail.com>
|
||||
Date: Mon, 18 Nov 2024 08:34:27 -0600
|
||||
Subject: [PATCH] Add PlayerData Events
|
||||
|
||||
|
||||
diff --git a/src/main/java/com/destroystokyo/paper/event/player/PlayerLoadDataEvent.java b/src/main/java/com/destroystokyo/paper/event/player/PlayerLoadDataEvent.java
|
||||
new file mode 100644
|
||||
index 0000000000000000000000000000000000000000..ae0132d9c7ae17b478d1d504961e1fd6b479f6d0
|
||||
--- /dev/null
|
||||
+++ b/src/main/java/com/destroystokyo/paper/event/player/PlayerLoadDataEvent.java
|
||||
@@ -0,0 +1,63 @@
|
||||
+package com.destroystokyo.paper.event.player;
|
||||
+
|
||||
+import com.google.gson.JsonObject;
|
||||
+import org.bukkit.event.Event;
|
||||
+import org.bukkit.event.HandlerList;
|
||||
+import org.jetbrains.annotations.NotNull;
|
||||
+import org.jetbrains.annotations.Nullable;
|
||||
+
|
||||
+import java.util.UUID;
|
||||
+
|
||||
+/**
|
||||
+ * Calls an event in which playerdata can be provided. If null, will load from disk, otherwise will use provided data
|
||||
+ */
|
||||
+public class PlayerLoadDataEvent extends Event {
|
||||
+ private static final HandlerList handlers = new HandlerList();
|
||||
+ private final UUID playerId;
|
||||
+ private Object playerData;
|
||||
+ private JsonObject statistics;
|
||||
+
|
||||
+ public PlayerLoadDataEvent(@NotNull UUID playerId) {
|
||||
+ super();
|
||||
+ this.playerId = playerId;
|
||||
+ }
|
||||
+
|
||||
+ /**
|
||||
+ * Gets the player's unique ID.
|
||||
+ *
|
||||
+ * @return The unique ID
|
||||
+ */
|
||||
+ @NotNull
|
||||
+ public UUID getUniqueId() {
|
||||
+ return playerId;
|
||||
+ }
|
||||
+
|
||||
+ @Nullable
|
||||
+ public Object getPlayerData() {
|
||||
+ return playerData;
|
||||
+ }
|
||||
+
|
||||
+ public void setPlayerData(@NotNull Object playerData) {
|
||||
+ this.playerData = playerData;
|
||||
+ }
|
||||
+
|
||||
+ @Nullable
|
||||
+ public JsonObject getStatistics() {
|
||||
+ return statistics;
|
||||
+ }
|
||||
+
|
||||
+ public void setStatistics(@NotNull JsonObject statistics) {
|
||||
+ this.statistics = statistics;
|
||||
+ }
|
||||
+
|
||||
+ @NotNull
|
||||
+ @Override
|
||||
+ public HandlerList getHandlers() {
|
||||
+ return handlers;
|
||||
+ }
|
||||
+
|
||||
+ @NotNull
|
||||
+ public static HandlerList getHandlerList() {
|
||||
+ return handlers;
|
||||
+ }
|
||||
+}
|
||||
diff --git a/src/main/java/com/destroystokyo/paper/event/player/PlayerSaveDataEvent.java b/src/main/java/com/destroystokyo/paper/event/player/PlayerSaveDataEvent.java
|
||||
new file mode 100644
|
||||
index 0000000000000000000000000000000000000000..c706201394d89f4a6f795ebbbac3d1041f395104
|
||||
--- /dev/null
|
||||
+++ b/src/main/java/com/destroystokyo/paper/event/player/PlayerSaveDataEvent.java
|
||||
@@ -0,0 +1,52 @@
|
||||
+package com.destroystokyo.paper.event.player;
|
||||
+
|
||||
+import org.bukkit.entity.Player;
|
||||
+import org.bukkit.event.Cancellable;
|
||||
+import org.bukkit.event.Event;
|
||||
+import org.bukkit.event.HandlerList;
|
||||
+import org.jetbrains.annotations.NotNull;
|
||||
+
|
||||
+/**
|
||||
+ * Calls whenever playerdata is attempted to be saved. This is fired even if SpigotConfig.disablePlayerDataSaving is true
|
||||
+ */
|
||||
+public class PlayerSaveDataEvent extends Event implements Cancellable {
|
||||
+ private static final HandlerList handlers = new HandlerList();
|
||||
+ private final Player player;
|
||||
+ private boolean cancel;
|
||||
+
|
||||
+ public PlayerSaveDataEvent(@NotNull Player player) {
|
||||
+ super();
|
||||
+ this.player = player;
|
||||
+ }
|
||||
+
|
||||
+ /**
|
||||
+ * Gets the player
|
||||
+ *
|
||||
+ * @return The player
|
||||
+ */
|
||||
+ @NotNull
|
||||
+ public Player getPlayer() {
|
||||
+ return player;
|
||||
+ }
|
||||
+
|
||||
+ @NotNull
|
||||
+ @Override
|
||||
+ public HandlerList getHandlers() {
|
||||
+ return handlers;
|
||||
+ }
|
||||
+
|
||||
+ @NotNull
|
||||
+ public static HandlerList getHandlerList() {
|
||||
+ return handlers;
|
||||
+ }
|
||||
+
|
||||
+ @Override
|
||||
+ public boolean isCancelled() {
|
||||
+ return cancel;
|
||||
+ }
|
||||
+
|
||||
+ @Override
|
||||
+ public void setCancelled(boolean cancel) {
|
||||
+ this.cancel = cancel;
|
||||
+ }
|
||||
+}
|
||||
@@ -5,13 +5,13 @@ Subject: [PATCH] Add World Instance flag
|
||||
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java
|
||||
index 3b6b6483bf855493948417f44f06427b625bc910..7bdbe1f2fa31781b7bd7b12c555b1b668edbfd6b 100644
|
||||
index a0611bf5f88d5b12dc981dda14e355c751ff802e..e0f87699b4a2a503e86e1cde732a200bff9e57ae 100644
|
||||
--- a/src/main/java/net/minecraft/server/level/ServerLevel.java
|
||||
+++ b/src/main/java/net/minecraft/server/level/ServerLevel.java
|
||||
@@ -230,6 +230,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe
|
||||
public final UUID uuid;
|
||||
@@ -231,6 +231,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe
|
||||
public boolean hasPhysicsEvent = true; // Paper - BlockPhysicsEvent
|
||||
public boolean hasEntityMoveEvent; // Paper - Add EntityMoveEvent
|
||||
private final alternate.current.wire.WireHandler wireHandler = new alternate.current.wire.WireHandler(this); // Paper - optimize redstone (Alternate Current)
|
||||
+ public boolean instance; // Slice
|
||||
|
||||
public LevelChunk getChunkIfLoaded(int x, int z) {
|
||||
|
||||
63
patches/server/0024-Add-PlayerData-Events.patch
Normal file
63
patches/server/0024-Add-PlayerData-Events.patch
Normal file
@@ -0,0 +1,63 @@
|
||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Tom <cryptite@gmail.com>
|
||||
Date: Mon, 18 Nov 2024 08:34:27 -0600
|
||||
Subject: [PATCH] Add PlayerData Events
|
||||
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/stats/ServerStatsCounter.java b/src/main/java/net/minecraft/stats/ServerStatsCounter.java
|
||||
index 3bac27ffaea7fe873aa73605256f83837322fe0a..ba8416b010ca17cc5a4640dab2f9f5420227f3ca 100644
|
||||
--- a/src/main/java/net/minecraft/stats/ServerStatsCounter.java
|
||||
+++ b/src/main/java/net/minecraft/stats/ServerStatsCounter.java
|
||||
@@ -210,7 +210,12 @@ public class ServerStatsCounter extends StatsCounter {
|
||||
return nbttagcompound;
|
||||
}
|
||||
|
||||
- protected String toJson() {
|
||||
+ // Slice start - OBFHELPER
|
||||
+ public String toJson() {
|
||||
+ return serialize().toString();
|
||||
+ }
|
||||
+
|
||||
+ public JsonObject serialize() { // Slice end
|
||||
Map<StatType<?>, JsonObject> map = Maps.newHashMap();
|
||||
ObjectIterator objectiterator = this.stats.object2IntEntrySet().iterator();
|
||||
|
||||
@@ -236,7 +241,7 @@ public class ServerStatsCounter extends StatsCounter {
|
||||
|
||||
jsonobject1.add("stats", jsonobject);
|
||||
jsonobject1.addProperty("DataVersion", SharedConstants.getCurrentVersion().getDataVersion().getVersion());
|
||||
- return jsonobject1.toString();
|
||||
+ return jsonobject1; // Slice
|
||||
}
|
||||
|
||||
private static <T> ResourceLocation getKey(Stat<T> stat) {
|
||||
diff --git a/src/main/java/net/minecraft/world/level/storage/PlayerDataStorage.java b/src/main/java/net/minecraft/world/level/storage/PlayerDataStorage.java
|
||||
index b148cf247acdd36f856d0495cde4cc5ad32b5a2f..bbb452e5e56f4efa97f2e1a0ee920b1d1e9a28a4 100644
|
||||
--- a/src/main/java/net/minecraft/world/level/storage/PlayerDataStorage.java
|
||||
+++ b/src/main/java/net/minecraft/world/level/storage/PlayerDataStorage.java
|
||||
@@ -36,6 +36,7 @@ public class PlayerDataStorage {
|
||||
|
||||
public void save(Player player) {
|
||||
if (org.spigotmc.SpigotConfig.disablePlayerDataSaving) return; // Spigot
|
||||
+ if (!new com.destroystokyo.paper.event.player.PlayerSaveDataEvent((org.bukkit.entity.Player) player.getBukkitEntity()).callEvent()) return; // Slice
|
||||
try {
|
||||
CompoundTag nbttagcompound = player.saveWithoutId(new CompoundTag());
|
||||
Path path = this.playerDir.toPath();
|
||||
@@ -108,6 +109,17 @@ public class PlayerDataStorage {
|
||||
}
|
||||
|
||||
public Optional<CompoundTag> load(Player player) {
|
||||
+ // Slice start - If event supplies playerdata, use it. Otherwise just load from disk as usual
|
||||
+ com.destroystokyo.paper.event.player.PlayerLoadDataEvent event = new com.destroystokyo.paper.event.player.PlayerLoadDataEvent(player.getUUID());
|
||||
+ org.bukkit.Bukkit.getPluginManager().callEvent(event);
|
||||
+
|
||||
+ Object playerData = event.getPlayerData();
|
||||
+ if (playerData instanceof CompoundTag data) {
|
||||
+ player.load(data);
|
||||
+ return Optional.of(data);
|
||||
+ }
|
||||
+ // Slice end
|
||||
+
|
||||
// CraftBukkit start
|
||||
return this.load(player.getName().getString(), player.getStringUUID()).map((nbttagcompound) -> {
|
||||
if (player instanceof ServerPlayer) {
|
||||
Reference in New Issue
Block a user