9
0
mirror of https://github.com/Winds-Studio/Leaf.git synced 2025-12-19 15:09:25 +00:00

Apply Purpur Paper patch

This commit is contained in:
Dreeam
2025-04-07 00:48:09 -04:00
parent ab479860ef
commit 9eca4c0c74
43 changed files with 176 additions and 209 deletions

View File

@@ -23,10 +23,10 @@ and, in my opinion, worth the low risk of minor mob-spawning-related
inconsistencies. inconsistencies.
diff --git a/src/main/java/ca/spottedleaf/moonrise/common/list/IteratorSafeOrderedReferenceSet.java b/src/main/java/ca/spottedleaf/moonrise/common/list/IteratorSafeOrderedReferenceSet.java diff --git a/src/main/java/ca/spottedleaf/moonrise/common/list/IteratorSafeOrderedReferenceSet.java b/src/main/java/ca/spottedleaf/moonrise/common/list/IteratorSafeOrderedReferenceSet.java
index c21e00812f1aaa1279834a0562d360d6b89e146c..4ae478c04ef44c91408a7f3f0405291f91794873 100644 index ece6db7b9a0dfd535141c0c756947c4898140503..82738ad42853e328532d854e3369e6a475ad729d 100644
--- a/src/main/java/ca/spottedleaf/moonrise/common/list/IteratorSafeOrderedReferenceSet.java --- a/src/main/java/ca/spottedleaf/moonrise/common/list/IteratorSafeOrderedReferenceSet.java
+++ b/src/main/java/ca/spottedleaf/moonrise/common/list/IteratorSafeOrderedReferenceSet.java +++ b/src/main/java/ca/spottedleaf/moonrise/common/list/IteratorSafeOrderedReferenceSet.java
@@ -10,7 +10,7 @@ public final class IteratorSafeOrderedReferenceSet<E> { @@ -11,7 +11,7 @@ public final class IteratorSafeOrderedReferenceSet<E> {
public static final int ITERATOR_FLAG_SEE_ADDITIONS = 1 << 0; public static final int ITERATOR_FLAG_SEE_ADDITIONS = 1 << 0;
private final Reference2IntLinkedOpenHashMap<E> indexMap; private final Reference2IntLinkedOpenHashMap<E> indexMap;
@@ -35,7 +35,7 @@ index c21e00812f1aaa1279834a0562d360d6b89e146c..4ae478c04ef44c91408a7f3f0405291f
/* list impl */ /* list impl */
private E[] listElements; private E[] listElements;
@@ -18,7 +18,7 @@ public final class IteratorSafeOrderedReferenceSet<E> { @@ -19,7 +19,7 @@ public final class IteratorSafeOrderedReferenceSet<E> {
private final double maxFragFactor; private final double maxFragFactor;
@@ -43,17 +43,17 @@ index c21e00812f1aaa1279834a0562d360d6b89e146c..4ae478c04ef44c91408a7f3f0405291f
+ private final java.util.concurrent.atomic.AtomicInteger iteratorCount = new java.util.concurrent.atomic.AtomicInteger(); // Pufferfish - async mob spawning + private final java.util.concurrent.atomic.AtomicInteger iteratorCount = new java.util.concurrent.atomic.AtomicInteger(); // Pufferfish - async mob spawning
public IteratorSafeOrderedReferenceSet() { public IteratorSafeOrderedReferenceSet() {
this(16, 0.75f, 16, 0.2); this(Object.class);
@@ -79,7 +79,7 @@ public final class IteratorSafeOrderedReferenceSet<E> { @@ -99,7 +99,7 @@ public final class IteratorSafeOrderedReferenceSet<E> {
} }
public int createRawIterator() { public int createRawIterator() {
- ++this.iteratorCount; - ++this.iteratorCount;
+ this.iteratorCount.incrementAndGet(); // Pufferfish - async mob spawning + this.iteratorCount.incrementAndGet(); // Pufferfish - async mob spawning
if (this.indexMap.isEmpty()) { if (this.indexMap.isEmpty()) {
return -1; return Integer.MAX_VALUE;
} else { } else {
@@ -100,7 +100,7 @@ public final class IteratorSafeOrderedReferenceSet<E> { @@ -120,7 +120,7 @@ public final class IteratorSafeOrderedReferenceSet<E> {
} }
public void finishRawIterator() { public void finishRawIterator() {
@@ -62,7 +62,7 @@ index c21e00812f1aaa1279834a0562d360d6b89e146c..4ae478c04ef44c91408a7f3f0405291f
if (this.getFragFactor() >= this.maxFragFactor) { if (this.getFragFactor() >= this.maxFragFactor) {
this.defrag(); this.defrag();
} }
@@ -117,7 +117,7 @@ public final class IteratorSafeOrderedReferenceSet<E> { @@ -137,7 +137,7 @@ public final class IteratorSafeOrderedReferenceSet<E> {
throw new IllegalStateException(); throw new IllegalStateException();
} }
this.listElements[index] = null; this.listElements[index] = null;
@@ -71,7 +71,7 @@ index c21e00812f1aaa1279834a0562d360d6b89e146c..4ae478c04ef44c91408a7f3f0405291f
this.defrag(); this.defrag();
} }
//this.check(); //this.check();
@@ -219,7 +219,7 @@ public final class IteratorSafeOrderedReferenceSet<E> { @@ -235,7 +235,7 @@ public final class IteratorSafeOrderedReferenceSet<E> {
} }
public IteratorSafeOrderedReferenceSet.Iterator<E> iterator(final int flags) { public IteratorSafeOrderedReferenceSet.Iterator<E> iterator(final int flags) {

View File

@@ -1,17 +1,17 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Github Actions <no-reply@github.com> From: Github Actions <no-reply@github.com>
Date: Thu, 16 Jan 2025 11:21:12 +0000 Date: Sun, 6 Apr 2025 06:33:24 +0000
Subject: [PATCH] Purpur Server Paper Changes Subject: [PATCH] Purpur Server Paper Changes
Original license: MIT Original license: MIT
Original project: https://github.com/PurpurMC/Purpur Original project: https://github.com/PurpurMC/Purpur
Commit: b34d675fef91bae2df723705f2568c7afd552d2d Commit: 54283ad076012dd5308b92f2469c842ad054a782
Patches listed below are removed in this patch, They exists in Gale or Leaf: Patches listed below are removed in this patch, They exists in Gale or Leaf:
* "Rebrand.patch" * "Rebrand.patch"
* "com/destroystokyo/paper/Metrics.java.patch" * "com/destroystokyo/paper/Metrics.java.patch"
- Rebrand - Purpur config files
* "com/destroystokyo/paper/PaperVersionFetcher.java.patch" * "com/destroystokyo/paper/PaperVersionFetcher.java.patch"
- Rebrand - Rebrand
* "com/destroystokyo/paper/console/PaperConsole.java.patch" * "com/destroystokyo/paper/console/PaperConsole.java.patch"
@@ -37,7 +37,7 @@ Patches listed below are removed in this patch, They exists in Gale or Leaf:
diff --git a/src/log4jPlugins/java/org/purpurmc/purpur/gui/util/HighlightErrorConverter.java b/src/log4jPlugins/java/org/purpurmc/purpur/gui/util/HighlightErrorConverter.java diff --git a/src/log4jPlugins/java/org/purpurmc/purpur/gui/util/HighlightErrorConverter.java b/src/log4jPlugins/java/org/purpurmc/purpur/gui/util/HighlightErrorConverter.java
new file mode 100644 new file mode 100644
index 0000000000000000000000000000000000000000..ede7cb766079031a2c75f3846aa654e28daa5b76 index 0000000000000000000000000000000000000000..15a226e3854d731f7724025ea3459c8ace07630c
--- /dev/null --- /dev/null
+++ b/src/log4jPlugins/java/org/purpurmc/purpur/gui/util/HighlightErrorConverter.java +++ b/src/log4jPlugins/java/org/purpurmc/purpur/gui/util/HighlightErrorConverter.java
@@ -0,0 +1,85 @@ @@ -0,0 +1,85 @@
@@ -126,12 +126,11 @@ index 0000000000000000000000000000000000000000..ede7cb766079031a2c75f3846aa654e2
+ return new HighlightErrorConverter(formatters); + return new HighlightErrorConverter(formatters);
+ } + }
+} +}
\ No newline at end of file
diff --git a/src/main/java/com/destroystokyo/paper/entity/ai/MobGoalHelper.java b/src/main/java/com/destroystokyo/paper/entity/ai/MobGoalHelper.java diff --git a/src/main/java/com/destroystokyo/paper/entity/ai/MobGoalHelper.java b/src/main/java/com/destroystokyo/paper/entity/ai/MobGoalHelper.java
index 6bdc683b5ade408ee27f1d6636b4d60c8c89cb7c..bc6d3898d8784e50a0e2264bbb5bde63add61f4e 100644 index a786d7579455c017c8ad79c97b1507b66f8c0800..c26cf541de853d380048119057752e1ccebc89aa 100644
--- a/src/main/java/com/destroystokyo/paper/entity/ai/MobGoalHelper.java --- a/src/main/java/com/destroystokyo/paper/entity/ai/MobGoalHelper.java
+++ b/src/main/java/com/destroystokyo/paper/entity/ai/MobGoalHelper.java +++ b/src/main/java/com/destroystokyo/paper/entity/ai/MobGoalHelper.java
@@ -136,6 +136,10 @@ public class MobGoalHelper { @@ -27,6 +27,10 @@ public class MobGoalHelper {
static { static {
// TODO these kinda should be checked on each release, in case obfuscation changes // TODO these kinda should be checked on each release, in case obfuscation changes
deobfuscationMap.put("abstract_skeleton_1", "abstract_skeleton_melee"); deobfuscationMap.put("abstract_skeleton_1", "abstract_skeleton_melee");
@@ -143,7 +142,7 @@ index 6bdc683b5ade408ee27f1d6636b4d60c8c89cb7c..bc6d3898d8784e50a0e2264bbb5bde63
ignored.add("goal_selector_1"); ignored.add("goal_selector_1");
ignored.add("goal_selector_2"); ignored.add("goal_selector_2");
diff --git a/src/main/java/io/papermc/paper/command/PaperPluginsCommand.java b/src/main/java/io/papermc/paper/command/PaperPluginsCommand.java diff --git a/src/main/java/io/papermc/paper/command/PaperPluginsCommand.java b/src/main/java/io/papermc/paper/command/PaperPluginsCommand.java
index 41c95f00b4b2bea6d31f85e268c33d7f6184823e..421c522760d35167eabe216a706b1f42f45a17f4 100644 index 41c95f00b4b2bea6d31f85e268c33d7f6184823e..2eaf27ddf0bddb23b8850310c332b202b1d7e69c 100644
--- a/src/main/java/io/papermc/paper/command/PaperPluginsCommand.java --- a/src/main/java/io/papermc/paper/command/PaperPluginsCommand.java
+++ b/src/main/java/io/papermc/paper/command/PaperPluginsCommand.java +++ b/src/main/java/io/papermc/paper/command/PaperPluginsCommand.java
@@ -70,10 +70,10 @@ public class PaperPluginsCommand extends BukkitCommand { @@ -70,10 +70,10 @@ public class PaperPluginsCommand extends BukkitCommand {
@@ -254,7 +253,7 @@ index 41c95f00b4b2bea6d31f85e268c33d7f6184823e..421c522760d35167eabe216a706b1f42
+ //} // Purpur - Improve output of plugins command + //} // Purpur - Improve output of plugins command
- for (final Component component : formatProviders(paperPlugins)) { - for (final Component component : formatProviders(paperPlugins)) {
+ for (Component component : formatProviders(paperPlugins, sender)) { // Purpur - Improve output of plugins command + for (final Component component : formatProviders(paperPlugins, sender)) { // Purpur - Improve output of plugins command
sender.sendMessage(component); sender.sendMessage(component);
} }
@@ -265,7 +264,7 @@ index 41c95f00b4b2bea6d31f85e268c33d7f6184823e..421c522760d35167eabe216a706b1f42
+ //} // Purpur - Improve output of plugins command + //} // Purpur - Improve output of plugins command
- for (final Component component : formatProviders(spigotPlugins)) { - for (final Component component : formatProviders(spigotPlugins)) {
+ for (Component component : formatProviders(spigotPlugins, sender)) { // Purpur - Improve output of plugins command + for (final Component component : formatProviders(spigotPlugins, sender)) { // Purpur - Improve output of plugins command
sender.sendMessage(component); sender.sendMessage(component);
} }
@@ -282,10 +281,10 @@ index 352d62385e56d5805510596ec9424e5d14336861..b4d4ad2dc7d719d72c0786791f803fbc
final ConfigurationTransformation.VersionedBuilder versionedBuilder = Transformations.versionedBuilder(); final ConfigurationTransformation.VersionedBuilder versionedBuilder = Transformations.versionedBuilder();
diff --git a/src/main/java/io/papermc/paper/configuration/WorldConfiguration.java b/src/main/java/io/papermc/paper/configuration/WorldConfiguration.java diff --git a/src/main/java/io/papermc/paper/configuration/WorldConfiguration.java b/src/main/java/io/papermc/paper/configuration/WorldConfiguration.java
index 84a5adb3631042dc1a5595c365ca6532fe26e293..7bfa7aa30c1181587c7632f920f48348d2493ea4 100644 index 9511f978f6c7da506f67928f5a5a92ecf28e5930..65f6839fe75340a4b58894ad50c6eda7b59128c0 100644
--- a/src/main/java/io/papermc/paper/configuration/WorldConfiguration.java --- a/src/main/java/io/papermc/paper/configuration/WorldConfiguration.java
+++ b/src/main/java/io/papermc/paper/configuration/WorldConfiguration.java +++ b/src/main/java/io/papermc/paper/configuration/WorldConfiguration.java
@@ -401,6 +401,7 @@ public class WorldConfiguration extends ConfigurationPart { @@ -402,6 +402,7 @@ public class WorldConfiguration extends ConfigurationPart {
public boolean useVanillaWorldScoreboardNameColoring = false; public boolean useVanillaWorldScoreboardNameColoring = false;
} }
@@ -293,7 +292,7 @@ index 84a5adb3631042dc1a5595c365ca6532fe26e293..7bfa7aa30c1181587c7632f920f48348
public Environment environment; public Environment environment;
public class Environment extends ConfigurationPart { public class Environment extends ConfigurationPart {
@@ -410,7 +411,9 @@ public class WorldConfiguration extends ConfigurationPart { @@ -411,7 +412,9 @@ public class WorldConfiguration extends ConfigurationPart {
public boolean disableExplosionKnockback = false; public boolean disableExplosionKnockback = false;
public boolean generateFlatBedrock = false; public boolean generateFlatBedrock = false;
public FrostedIce frostedIce; public FrostedIce frostedIce;
@@ -320,10 +319,10 @@ index a8e813ca89b033f061e695288b3383bdcf128531..96a377a07d8396f893954a3ba97fbf88
} }
if (SysoutCatcher.NAG_INTERVAL > 0 || SysoutCatcher.NAG_TIMEOUT > 0) { if (SysoutCatcher.NAG_INTERVAL > 0 || SysoutCatcher.NAG_TIMEOUT > 0) {
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftOfflinePlayer.java b/src/main/java/org/bukkit/craftbukkit/CraftOfflinePlayer.java diff --git a/src/main/java/org/bukkit/craftbukkit/CraftOfflinePlayer.java b/src/main/java/org/bukkit/craftbukkit/CraftOfflinePlayer.java
index 94ca0407303c4493ab4928b12ec6ecc75aaca549..f2d87c12dd19210ce7e2147fada5c10191008632 100644 index 79e226da354d15ba9687d3f09c9b4f318cf40e8d..1456f2d1a92c8315177fb03d0c7ec943d5f5b097 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftOfflinePlayer.java --- a/src/main/java/org/bukkit/craftbukkit/CraftOfflinePlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftOfflinePlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftOfflinePlayer.java
@@ -363,14 +363,26 @@ public class CraftOfflinePlayer implements OfflinePlayer, ConfigurationSerializa @@ -339,6 +339,12 @@ public class CraftOfflinePlayer implements OfflinePlayer, ConfigurationSerializa
@Override @Override
public Location getLocation() { public Location getLocation() {
@@ -336,36 +335,7 @@ index 94ca0407303c4493ab4928b12ec6ecc75aaca549..f2d87c12dd19210ce7e2147fada5c101
CompoundTag data = this.getData(); CompoundTag data = this.getData();
if (data == null) { if (data == null) {
return null; return null;
} @@ -571,4 +577,183 @@ public class CraftOfflinePlayer implements OfflinePlayer, ConfigurationSerializa
- if (data.contains("Pos") && data.contains("Rotation")) {
- ListTag position = (ListTag) data.get("Pos");
- ListTag rotation = (ListTag) data.get("Rotation");
+ // Purpur start - OfflinePlayer API
+ //if (data.contains("Pos") && data.contains("Rotation")) {
+ ListTag position = data.getList("Pos", net.minecraft.nbt.Tag.TAG_DOUBLE);
+ ListTag rotation = data.getList("Rotation", net.minecraft.nbt.Tag.TAG_FLOAT);
+
+ if (position.isEmpty() && rotation.isEmpty()) {
+ return null;
+ }
+ // Purpur end - OfflinePlayer API
UUID uuid = new UUID(data.getLong("WorldUUIDMost"), data.getLong("WorldUUIDLeast"));
@@ -381,9 +393,9 @@ public class CraftOfflinePlayer implements OfflinePlayer, ConfigurationSerializa
rotation.getFloat(0),
rotation.getFloat(1)
);
- }
+ //} // Purpur - OfflinePlayer API
- return null;
+ //return null; // Purpur - OfflinePlayer API
}
@Override
@@ -626,4 +638,191 @@ public class CraftOfflinePlayer implements OfflinePlayer, ConfigurationSerializa
manager.save(); manager.save();
} }
} }
@@ -378,9 +348,8 @@ index 94ca0407303c4493ab4928b12ec6ecc75aaca549..f2d87c12dd19210ce7e2147fada5c101
+ } else { + } else {
+ CompoundTag data = this.getData(); + CompoundTag data = this.getData();
+ if (data == null) return false; + if (data == null) return false;
+ if (!data.contains("abilities")) return false; + if (!(data.get("abilities") instanceof CompoundTag abilities)) return false;
+ CompoundTag abilities = data.getCompound("abilities"); + return abilities.getByteOr("mayfly", (byte) 0) == (byte) 1;
+ return abilities.getByte("mayfly") == (byte) 1;
+ } + }
+ } + }
+ +
@@ -391,8 +360,7 @@ index 94ca0407303c4493ab4928b12ec6ecc75aaca549..f2d87c12dd19210ce7e2147fada5c101
+ } else { + } else {
+ CompoundTag data = this.getData(); + CompoundTag data = this.getData();
+ if (data == null) return; + if (data == null) return;
+ if (!data.contains("abilities")) return; + if (!(data.get("abilities") instanceof CompoundTag abilities)) return;
+ CompoundTag abilities = data.getCompound("abilities");
+ abilities.putByte("mayfly", (byte) (flight ? 1 : 0)); + abilities.putByte("mayfly", (byte) (flight ? 1 : 0));
+ data.put("abilities", abilities); + data.put("abilities", abilities);
+ save(data); + save(data);
@@ -406,9 +374,8 @@ index 94ca0407303c4493ab4928b12ec6ecc75aaca549..f2d87c12dd19210ce7e2147fada5c101
+ } else { + } else {
+ CompoundTag data = this.getData(); + CompoundTag data = this.getData();
+ if (data == null) return false; + if (data == null) return false;
+ if (!data.contains("abilities")) return false; + if (!(data.get("abilities") instanceof CompoundTag abilities)) return false;
+ CompoundTag abilities = data.getCompound("abilities"); + return abilities.getByteOr("flying", (byte) 0) == (byte) 1;
+ return abilities.getByte("flying") == (byte) 1;
+ } + }
+ } + }
+ +
@@ -419,8 +386,7 @@ index 94ca0407303c4493ab4928b12ec6ecc75aaca549..f2d87c12dd19210ce7e2147fada5c101
+ } else { + } else {
+ CompoundTag data = this.getData(); + CompoundTag data = this.getData();
+ if (data == null) return; + if (data == null) return;
+ if (!data.contains("abilities")) return; + if (!(data.get("abilities") instanceof CompoundTag abilities)) return;
+ CompoundTag abilities = data.getCompound("abilities");
+ abilities.putByte("mayfly", (byte) (value ? 1 : 0)); + abilities.putByte("mayfly", (byte) (value ? 1 : 0));
+ data.put("abilities", abilities); + data.put("abilities", abilities);
+ save(data); + save(data);
@@ -435,8 +401,7 @@ index 94ca0407303c4493ab4928b12ec6ecc75aaca549..f2d87c12dd19210ce7e2147fada5c101
+ } else { + } else {
+ CompoundTag data = this.getData(); + CompoundTag data = this.getData();
+ if (data == null) return; + if (data == null) return;
+ if (!data.contains("abilities")) return; + if (!(data.get("abilities") instanceof CompoundTag abilities)) return;
+ CompoundTag abilities = data.getCompound("abilities");
+ abilities.putFloat("flySpeed", value); + abilities.putFloat("flySpeed", value);
+ data.put("abilities", abilities); + data.put("abilities", abilities);
+ save(data); + save(data);
@@ -450,9 +415,8 @@ index 94ca0407303c4493ab4928b12ec6ecc75aaca549..f2d87c12dd19210ce7e2147fada5c101
+ } else { + } else {
+ CompoundTag data = this.getData(); + CompoundTag data = this.getData();
+ if (data == null) return 0; + if (data == null) return 0;
+ if (!data.contains("abilities")) return 0; + if (!(data.get("abilities") instanceof CompoundTag abilities)) return 0;
+ CompoundTag abilities = data.getCompound("abilities"); + return abilities.getFloatOr("flySpeed", 0);
+ return abilities.getFloat("flySpeed");
+ } + }
+ } + }
+ +
@@ -464,8 +428,7 @@ index 94ca0407303c4493ab4928b12ec6ecc75aaca549..f2d87c12dd19210ce7e2147fada5c101
+ } else { + } else {
+ CompoundTag data = this.getData(); + CompoundTag data = this.getData();
+ if (data == null) return; + if (data == null) return;
+ if (!data.contains("abilities")) return; + if (!(data.get("abilities") instanceof CompoundTag abilities)) return;
+ CompoundTag abilities = data.getCompound("abilities");
+ abilities.putFloat("walkSpeed", value); + abilities.putFloat("walkSpeed", value);
+ data.put("abilities", abilities); + data.put("abilities", abilities);
+ save(data); + save(data);
@@ -479,9 +442,8 @@ index 94ca0407303c4493ab4928b12ec6ecc75aaca549..f2d87c12dd19210ce7e2147fada5c101
+ } else { + } else {
+ CompoundTag data = this.getData(); + CompoundTag data = this.getData();
+ if (data == null) return 0; + if (data == null) return 0;
+ if (!data.contains("abilities")) return 0; + if (!(data.get("abilities") instanceof CompoundTag abilities)) return 0;
+ CompoundTag abilities = data.getCompound("abilities"); + return abilities.getFloatOr("walkSpeed", 0);
+ return abilities.getFloat("walkSpeed");
+ } + }
+ } + }
+ +
@@ -558,10 +520,10 @@ index 94ca0407303c4493ab4928b12ec6ecc75aaca549..f2d87c12dd19210ce7e2147fada5c101
+ // Purpur end - OfflinePlayer API + // Purpur end - OfflinePlayer API
} }
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
index 1b1720343d3b07a73490f66520c7df12005adbcc..28c6d96686a01e7f102edbef6b685bdbb80aa014 100644 index 10560d5caa5a53410eb759cc43dde9d470a3de45..3c237f2002e6463efe6bd8ffa2235ce6a6a3e5ec 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
@@ -429,6 +429,20 @@ public final class CraftServer implements Server { @@ -423,6 +423,20 @@ public final class CraftServer implements Server {
this.paperPluginManager = new io.papermc.paper.plugin.manager.PaperPluginManagerImpl(this, this.commandMap, pluginManager); this.paperPluginManager = new io.papermc.paper.plugin.manager.PaperPluginManagerImpl(this, this.commandMap, pluginManager);
this.pluginManager.paperPluginManager = this.paperPluginManager; this.pluginManager.paperPluginManager = this.paperPluginManager;
// Paper end // Paper end
@@ -582,7 +544,7 @@ index 1b1720343d3b07a73490f66520c7df12005adbcc..28c6d96686a01e7f102edbef6b685bdb
CraftRegistry.setMinecraftRegistry(console.registryAccess()); CraftRegistry.setMinecraftRegistry(console.registryAccess());
@@ -1090,6 +1104,7 @@ public final class CraftServer implements Server { @@ -1065,6 +1079,7 @@ public final class CraftServer implements Server {
org.spigotmc.SpigotConfig.init((File) this.console.options.valueOf("spigot-settings")); // Spigot org.spigotmc.SpigotConfig.init((File) this.console.options.valueOf("spigot-settings")); // Spigot
this.console.paperConfigurations.reloadConfigs(this.console); this.console.paperConfigurations.reloadConfigs(this.console);
this.console.galeConfigurations.reloadConfigs(this.console); // Gale - Gale configuration this.console.galeConfigurations.reloadConfigs(this.console); // Gale - Gale configuration
@@ -590,7 +552,7 @@ index 1b1720343d3b07a73490f66520c7df12005adbcc..28c6d96686a01e7f102edbef6b685bdb
for (ServerLevel world : this.console.getAllLevels()) { for (ServerLevel world : this.console.getAllLevels()) {
// world.serverLevelData.setDifficulty(config.difficulty); // Paper - per level difficulty // world.serverLevelData.setDifficulty(config.difficulty); // Paper - per level difficulty
world.setSpawnSettings(world.serverLevelData.getDifficulty() != Difficulty.PEACEFUL && config.spawnMonsters); // Paper - per level difficulty (from MinecraftServer#setDifficulty(ServerLevel, Difficulty, boolean)) world.setSpawnSettings(world.serverLevelData.getDifficulty() != Difficulty.PEACEFUL && config.spawnMonsters); // Paper - per level difficulty (from MinecraftServer#setDifficulty(ServerLevel, Difficulty, boolean))
@@ -1105,6 +1120,7 @@ public final class CraftServer implements Server { @@ -1080,6 +1095,7 @@ public final class CraftServer implements Server {
} }
} }
world.spigotConfig.init(); // Spigot world.spigotConfig.init(); // Spigot
@@ -598,15 +560,15 @@ index 1b1720343d3b07a73490f66520c7df12005adbcc..28c6d96686a01e7f102edbef6b685bdb
} }
Plugin[] pluginClone = pluginManager.getPlugins().clone(); // Paper Plugin[] pluginClone = pluginManager.getPlugins().clone(); // Paper
@@ -1123,6 +1139,7 @@ public final class CraftServer implements Server { @@ -1097,6 +1113,7 @@ public final class CraftServer implements Server {
org.spigotmc.SpigotConfig.registerCommands(); // Spigot
io.papermc.paper.command.PaperCommands.registerCommands(this.console); // Paper io.papermc.paper.command.PaperCommands.registerCommands(this.console); // Paper
org.galemc.gale.command.GaleCommands.registerCommands(this.console); // Gale - Gale commands - register commands
this.spark.registerCommandBeforePlugins(this); // Paper - spark this.spark.registerCommandBeforePlugins(this); // Paper - spark
+ org.purpurmc.purpur.PurpurConfig.registerCommands(); // Purpur - Purpur config files + org.purpurmc.purpur.PurpurConfig.registerCommands(); // Purpur - Purpur config files
this.overrideAllCommandBlockCommands = this.commandsConfiguration.getStringList("command-block-overrides").contains("*"); this.overrideAllCommandBlockCommands = this.commandsConfiguration.getStringList("command-block-overrides").contains("*");
this.ignoreVanillaPermissions = this.commandsConfiguration.getBoolean("ignore-vanilla-permissions"); this.ignoreVanillaPermissions = this.commandsConfiguration.getBoolean("ignore-vanilla-permissions");
@@ -1654,6 +1671,60 @@ public final class CraftServer implements Server { @@ -1596,6 +1613,60 @@ public final class CraftServer implements Server {
return true; return true;
} }
@@ -667,7 +629,7 @@ index 1b1720343d3b07a73490f66520c7df12005adbcc..28c6d96686a01e7f102edbef6b685bdb
@Override @Override
public List<Recipe> getRecipesFor(ItemStack result) { public List<Recipe> getRecipesFor(ItemStack result) {
Preconditions.checkArgument(result != null, "ItemStack cannot be null"); Preconditions.checkArgument(result != null, "ItemStack cannot be null");
@@ -3062,6 +3133,18 @@ public final class CraftServer implements Server { @@ -2951,6 +3022,18 @@ public final class CraftServer implements Server {
} }
// Gale end - Gale configuration - API // Gale end - Gale configuration - API
@@ -686,10 +648,10 @@ index 1b1720343d3b07a73490f66520c7df12005adbcc..28c6d96686a01e7f102edbef6b685bdb
@Override @Override
public void restart() { public void restart() {
CraftServer.this.restart(); CraftServer.this.restart();
@@ -3359,4 +3442,18 @@ public final class CraftServer implements Server { @@ -3190,4 +3273,18 @@ public final class CraftServer implements Server {
return MinecraftServer.lastTickOversleepTime; public void allowPausing(final Plugin plugin, final boolean value) {
this.console.addPluginAllowingSleep(plugin.getName(), value);
} }
// Gale end - YAPFA - last tick time - API
+ +
+ // Purpur start - Bring back server name + // Purpur start - Bring back server name
+ @Override + @Override
@@ -706,16 +668,16 @@ index 1b1720343d3b07a73490f66520c7df12005adbcc..28c6d96686a01e7f102edbef6b685bdb
+ // Purpur end - Lagging threshold + // Purpur end - Lagging threshold
} }
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
index a92e0877669a92851c6d7f83de75ffb087c8e651..daede6da974beb5ff19877caa5e6f8b3ecdf9000 100644 index 285d94b422583d468958e93ac6955776f8efcfa3..a4a0b07c9e3e716d77bc6e11dca096e142a5190e 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java --- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
@@ -2346,6 +2346,50 @@ public class CraftWorld extends CraftRegionAccessor implements World { @@ -2347,6 +2347,50 @@ public class CraftWorld extends CraftRegionAccessor implements World {
return (this.getHandle().getDragonFight() == null) ? null : new CraftDragonBattle(this.getHandle().getDragonFight()); return (this.getHandle().getDragonFight() == null) ? null : new CraftDragonBattle(this.getHandle().getDragonFight());
} }
+ // Purpur start - Add local difficulty api + // Purpur start - Add local difficulty api
+ public float getLocalDifficultyAt(Location location) { + public float getLocalDifficultyAt(Location location) {
+ return getHandle().getCurrentDifficultyAt(io.papermc.paper.util.MCUtil.toBlockPosition(location)).getEffectiveDifficulty(); + return getHandle().getCurrentDifficultyAt(org.bukkit.craftbukkit.util.CraftLocation.toBlockPosition(location)).getEffectiveDifficulty();
+ } + }
+ // Purpur end - Add local difficulty api + // Purpur end - Add local difficulty api
+ +
@@ -737,7 +699,7 @@ index a92e0877669a92851c6d7f83de75ffb087c8e651..daede6da974beb5ff19877caa5e6f8b3
+ +
+ @Override + @Override
+ public void sendBlockHighlight(Location location, int duration, String text, int argb) { + public void sendBlockHighlight(Location location, int duration, String text, int argb) {
+ net.minecraft.network.protocol.game.DebugPackets.sendGameTestAddMarker(getHandle(), io.papermc.paper.util.MCUtil.toBlockPosition(location), text, argb, duration); + net.minecraft.network.protocol.game.DebugPackets.sendGameTestAddMarker(getHandle(), org.bukkit.craftbukkit.util.CraftLocation.toBlockPosition(location), text, argb, duration);
+ } + }
+ +
+ @Override + @Override
@@ -761,12 +723,12 @@ index a92e0877669a92851c6d7f83de75ffb087c8e651..daede6da974beb5ff19877caa5e6f8b3
public Collection<GeneratedStructure> getStructures(int x, int z) { public Collection<GeneratedStructure> getStructures(int x, int z) {
return this.getStructures(x, z, struct -> true); return this.getStructures(x, z, struct -> true);
diff --git a/src/main/java/org/bukkit/craftbukkit/Main.java b/src/main/java/org/bukkit/craftbukkit/Main.java diff --git a/src/main/java/org/bukkit/craftbukkit/Main.java b/src/main/java/org/bukkit/craftbukkit/Main.java
index 70d093f71cca569d9da3ae82e738f8f3069f405e..7120ff469b0a0b638a4051b92f00f97da75edae0 100644 index e89c906dc07e52ea8d661e005d8531128ce4d080..4f64d377b56481fe5e1ff82b424fe06cdf8304e8 100644
--- a/src/main/java/org/bukkit/craftbukkit/Main.java --- a/src/main/java/org/bukkit/craftbukkit/Main.java
+++ b/src/main/java/org/bukkit/craftbukkit/Main.java +++ b/src/main/java/org/bukkit/craftbukkit/Main.java
@@ -176,6 +176,13 @@ public class Main { @@ -165,6 +165,14 @@ public class Main {
.defaultsTo(new File[] {})
.describedAs("Jar file"); .describedAs("Jar file");
// Paper end
+ // Purpur start - Purpur config files + // Purpur start - Purpur config files
+ acceptsAll(asList("purpur", "purpur-settings"), "File for purpur settings") + acceptsAll(asList("purpur", "purpur-settings"), "File for purpur settings")
@@ -775,10 +737,11 @@ index 70d093f71cca569d9da3ae82e738f8f3069f405e..7120ff469b0a0b638a4051b92f00f97d
+ .defaultsTo(new File("purpur.yml")) + .defaultsTo(new File("purpur.yml"))
+ .describedAs("Yml file"); + .describedAs("Yml file");
+ // Purpur end - Purpur config files + // Purpur end - Purpur config files
// Paper start +
acceptsAll(asList("server-name"), "Name of the server") acceptsAll(asList("server-name"), "Name of the server")
.withRequiredArg() .withRequiredArg()
@@ -259,7 +266,7 @@ public class Main { .ofType(String.class)
@@ -224,7 +232,7 @@ public class Main {
System.setProperty(net.minecrell.terminalconsole.TerminalConsoleAppender.JLINE_OVERRIDE_PROPERTY, "false"); // Paper System.setProperty(net.minecrell.terminalconsole.TerminalConsoleAppender.JLINE_OVERRIDE_PROPERTY, "false"); // Paper
} }
@@ -788,7 +751,7 @@ index 70d093f71cca569d9da3ae82e738f8f3069f405e..7120ff469b0a0b638a4051b92f00f97d
Calendar deadline = Calendar.getInstance(); Calendar deadline = Calendar.getInstance();
diff --git a/src/main/java/org/bukkit/craftbukkit/block/CraftBeehive.java b/src/main/java/org/bukkit/craftbukkit/block/CraftBeehive.java diff --git a/src/main/java/org/bukkit/craftbukkit/block/CraftBeehive.java b/src/main/java/org/bukkit/craftbukkit/block/CraftBeehive.java
index 1a2a05160ba51d9c75f1ae6ae61d944d81428722..a86b026f2f420637d125cf697bcd07bf314c98aa 100644 index ed4692090a115d3d0a0826b10f77e903058eeec6..c5971aadd443dc0ffa26f1740552cc009d244a3e 100644
--- a/src/main/java/org/bukkit/craftbukkit/block/CraftBeehive.java --- a/src/main/java/org/bukkit/craftbukkit/block/CraftBeehive.java
+++ b/src/main/java/org/bukkit/craftbukkit/block/CraftBeehive.java +++ b/src/main/java/org/bukkit/craftbukkit/block/CraftBeehive.java
@@ -16,8 +16,15 @@ import org.bukkit.entity.Bee; @@ -16,8 +16,15 @@ import org.bukkit.entity.Bee;
@@ -797,10 +760,10 @@ index 1a2a05160ba51d9c75f1ae6ae61d944d81428722..a86b026f2f420637d125cf697bcd07bf
+ private final List<org.purpurmc.purpur.entity.StoredEntity<Bee>> storage = new ArrayList<>(); // Purpur - Stored Bee API + private final List<org.purpurmc.purpur.entity.StoredEntity<Bee>> storage = new ArrayList<>(); // Purpur - Stored Bee API
+ +
public CraftBeehive(World world, BeehiveBlockEntity tileEntity) { public CraftBeehive(World world, BeehiveBlockEntity blockEntity) {
super(world, tileEntity); super(world, blockEntity);
+ // Purpur start - load bees to be able to modify them individually - Stored Bee API + // Purpur start - load bees to be able to modify them individually - Stored Bee API
+ for(BeehiveBlockEntity.BeeData data : tileEntity.getStored()) { + for(BeehiveBlockEntity.BeeData data : blockEntity.getStored()) {
+ storage.add(new org.purpurmc.purpur.entity.PurpurStoredBee(data, this)); + storage.add(new org.purpurmc.purpur.entity.PurpurStoredBee(data, this));
+ } + }
+ // Purpur end - Stored Bee API + // Purpur end - Stored Bee API
@@ -825,7 +788,7 @@ index 1a2a05160ba51d9c75f1ae6ae61d944d81428722..a86b026f2f420637d125cf697bcd07bf
+ } + }
+ +
+ if(isPlaced()) { + if(isPlaced()) {
+ BeehiveBlockEntity beehive = ((BeehiveBlockEntity) this.getTileEntityFromWorld()); + BeehiveBlockEntity beehive = ((BeehiveBlockEntity) this.getBlockEntityFromWorld());
+ BeehiveBlockEntity.BeeData data = ((org.purpurmc.purpur.entity.PurpurStoredBee) entity).getHandle(); + BeehiveBlockEntity.BeeData data = ((org.purpurmc.purpur.entity.PurpurStoredBee) entity).getHandle();
+ +
+ List<Entity> list = beehive.releaseBee(getHandle(), data, BeeReleaseStatus.BEE_RELEASED, true); + List<Entity> list = beehive.releaseBee(getHandle(), data, BeeReleaseStatus.BEE_RELEASED, true);
@@ -871,20 +834,20 @@ index 1a2a05160ba51d9c75f1ae6ae61d944d81428722..a86b026f2f420637d125cf697bcd07bf
// Paper end // Paper end
} }
diff --git a/src/main/java/org/bukkit/craftbukkit/block/CraftConduit.java b/src/main/java/org/bukkit/craftbukkit/block/CraftConduit.java diff --git a/src/main/java/org/bukkit/craftbukkit/block/CraftConduit.java b/src/main/java/org/bukkit/craftbukkit/block/CraftConduit.java
index c1759aeb3e6ad0e4eb66cba3da1b120dd1dce812..a663962e5181e89286caa18f537c1f5758b41623 100644 index b7352ab040c979b42ec7efd301bd9d7bfe08129f..79c59d77068709e42b3a908080d147b94fcee209 100644
--- a/src/main/java/org/bukkit/craftbukkit/block/CraftConduit.java --- a/src/main/java/org/bukkit/craftbukkit/block/CraftConduit.java
+++ b/src/main/java/org/bukkit/craftbukkit/block/CraftConduit.java +++ b/src/main/java/org/bukkit/craftbukkit/block/CraftConduit.java
@@ -73,7 +73,7 @@ public class CraftConduit extends CraftBlockEntityState<ConduitBlockEntity> impl @@ -73,7 +73,7 @@ public class CraftConduit extends CraftBlockEntityState<ConduitBlockEntity> impl
public int getRange() { public int getRange() {
this.ensureNoWorldGeneration(); this.ensureNoWorldGeneration();
ConduitBlockEntity conduit = (ConduitBlockEntity) this.getTileEntityFromWorld(); ConduitBlockEntity conduit = (ConduitBlockEntity) this.getBlockEntityFromWorld();
- return (conduit != null) ? ConduitBlockEntity.getRange(conduit.effectBlocks) : 0; - return (conduit != null) ? ConduitBlockEntity.getRange(conduit.effectBlocks) : 0;
+ return (conduit != null) ? ConduitBlockEntity.getRange(conduit.effectBlocks, this.world.getHandle()) : 0; // Purpur - Conduit behavior configuration + return (conduit != null) ? ConduitBlockEntity.getRange(conduit.effectBlocks, this.world.getHandle()) : 0; // Purpur - Conduit behavior configuration
} }
@Override @Override
diff --git a/src/main/java/org/bukkit/craftbukkit/command/CraftConsoleCommandSender.java b/src/main/java/org/bukkit/craftbukkit/command/CraftConsoleCommandSender.java diff --git a/src/main/java/org/bukkit/craftbukkit/command/CraftConsoleCommandSender.java b/src/main/java/org/bukkit/craftbukkit/command/CraftConsoleCommandSender.java
index 4e56018b64d11f76c8da43fd8f85c6de72204e36..36cec3ed39807e85013e4e3b98c979d7af37ce58 100644 index 6e2f931b06d4ef702e0abf609a5f5bba780c5b7a..15ae2653c1809041b7ab7cb67015e82c226e9f77 100644
--- a/src/main/java/org/bukkit/craftbukkit/command/CraftConsoleCommandSender.java --- a/src/main/java/org/bukkit/craftbukkit/command/CraftConsoleCommandSender.java
+++ b/src/main/java/org/bukkit/craftbukkit/command/CraftConsoleCommandSender.java +++ b/src/main/java/org/bukkit/craftbukkit/command/CraftConsoleCommandSender.java
@@ -21,7 +21,12 @@ public class CraftConsoleCommandSender extends ServerCommandSender implements Co @@ -21,7 +21,12 @@ public class CraftConsoleCommandSender extends ServerCommandSender implements Co
@@ -901,8 +864,8 @@ index 4e56018b64d11f76c8da43fd8f85c6de72204e36..36cec3ed39807e85013e4e3b98c979d7
} }
@Override @Override
@@ -91,7 +96,7 @@ public class CraftConsoleCommandSender extends ServerCommandSender implements Co @@ -88,7 +93,7 @@ public class CraftConsoleCommandSender extends ServerCommandSender implements Co
// Paper start
@Override @Override
public void sendMessage(final net.kyori.adventure.identity.Identity identity, final net.kyori.adventure.text.Component message, final net.kyori.adventure.audience.MessageType type) { public void sendMessage(final net.kyori.adventure.identity.Identity identity, final net.kyori.adventure.text.Component message, final net.kyori.adventure.audience.MessageType type) {
- this.sendRawMessage(net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer.legacySection().serialize(message)); - this.sendRawMessage(net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer.legacySection().serialize(message));
@@ -911,7 +874,7 @@ index 4e56018b64d11f76c8da43fd8f85c6de72204e36..36cec3ed39807e85013e4e3b98c979d7
@Override @Override
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftEndermite.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftEndermite.java diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftEndermite.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftEndermite.java
index d657fd2c507a5b215aeab0a5f3e9c2ee892a27c8..3604d92c122b5c8be823098ce7b91e57e976589c 100644 index 4d5958405e1c86c289d24500705686e7da02c3f6..86541e322fcacb6c525af39ba2675b71bd799af8 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEndermite.java --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEndermite.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEndermite.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEndermite.java
@@ -21,12 +21,12 @@ public class CraftEndermite extends CraftMonster implements Endermite { @@ -21,12 +21,12 @@ public class CraftEndermite extends CraftMonster implements Endermite {
@@ -927,13 +890,13 @@ index d657fd2c507a5b215aeab0a5f3e9c2ee892a27c8..3604d92c122b5c8be823098ce7b91e57
- // Nop - // Nop
+ getHandle().setPlayerSpawned(playerSpawned); // Purpur - Add back player spawned endermite API + getHandle().setPlayerSpawned(playerSpawned); // Purpur - Add back player spawned endermite API
} }
// Paper start
@Override @Override
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java
index 1ee0ad266955e36b729ba31eb75aad9289acd8e4..8635cd772c5c2ae0ba326812ff2a1a179285a86f 100644 index 5aa8eab78e99408b0beb64d7ed07ff1bc61541db..83a23a82335eac087d36fd27ca6c6417960b881f 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java
@@ -90,6 +90,25 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { @@ -95,6 +95,25 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity {
this.entityType = CraftEntityType.minecraftToBukkit(entity.getType()); this.entityType = CraftEntityType.minecraftToBukkit(entity.getType());
} }
@@ -959,7 +922,7 @@ index 1ee0ad266955e36b729ba31eb75aad9289acd8e4..8635cd772c5c2ae0ba326812ff2a1a17
public static <T extends Entity> CraftEntity getEntity(CraftServer server, T entity) { public static <T extends Entity> CraftEntity getEntity(CraftServer server, T entity) {
Preconditions.checkArgument(entity != null, "Unknown entity"); Preconditions.checkArgument(entity != null, "Unknown entity");
@@ -249,6 +268,7 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { @@ -252,6 +271,7 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity {
boolean retainPassengers = flagSet.contains(io.papermc.paper.entity.TeleportFlag.EntityState.RETAIN_PASSENGERS); boolean retainPassengers = flagSet.contains(io.papermc.paper.entity.TeleportFlag.EntityState.RETAIN_PASSENGERS);
// Don't allow teleporting between worlds while keeping passengers // Don't allow teleporting between worlds while keeping passengers
if (flagSet.contains(io.papermc.paper.entity.TeleportFlag.EntityState.RETAIN_PASSENGERS) && this.entity.isVehicle() && location.getWorld() != this.getWorld()) { if (flagSet.contains(io.papermc.paper.entity.TeleportFlag.EntityState.RETAIN_PASSENGERS) && this.entity.isVehicle() && location.getWorld() != this.getWorld()) {
@@ -967,10 +930,10 @@ index 1ee0ad266955e36b729ba31eb75aad9289acd8e4..8635cd772c5c2ae0ba326812ff2a1a17
return false; return false;
} }
@@ -1333,4 +1353,27 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { @@ -1263,4 +1283,27 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity {
((CraftPlayer) player).sendHurtAnimation(0, this);
} }
} }
// Paper end - broadcast hurt animation
+ +
+ // Purpur start - Ridables + // Purpur start - Ridables
+ @Override + @Override
@@ -996,10 +959,10 @@ index 1ee0ad266955e36b729ba31eb75aad9289acd8e4..8635cd772c5c2ae0ba326812ff2a1a17
+ // Purpur end - Ridables + // Purpur end - Ridables
} }
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java
index ba3b2a60d0ec088e312fc76e31a757a0495a0043..20bd7b3ea62af6071dd33ae051cac06b4e91a1d2 100644 index fc432152ae619b0b3d1aab83f6f5b623376c025e..e4d12547bc46389a8476589ffc777aed117d0827 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java
@@ -284,6 +284,7 @@ public class CraftHumanEntity extends CraftLivingEntity implements HumanEntity { @@ -276,6 +276,7 @@ public class CraftHumanEntity extends CraftLivingEntity implements HumanEntity {
@Override @Override
public void recalculatePermissions() { public void recalculatePermissions() {
this.perm.recalculatePermissions(); this.perm.recalculatePermissions();
@@ -1030,10 +993,10 @@ index 63cae1a2e95d8da17c45c4404a8dd0ca6a413c39..464a3713845548473a357ea66c6147b1
+ // Purpur end - Summoner API + // Purpur end - Summoner API
} }
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftItem.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftItem.java diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftItem.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftItem.java
index 7a3d982b133f8cdaeb936cf40f92565f0f7f6dd0..8b0faa08411ee1f336641b161acd3412c886dc2b 100644 index cef51ad02f079695d75d9c87f5878b13702eda8e..0140b99fc8f60216dea77c11e1c5a231628d990f 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftItem.java --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftItem.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftItem.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftItem.java
@@ -151,4 +151,53 @@ public class CraftItem extends CraftEntity implements Item { @@ -148,4 +148,53 @@ public class CraftItem extends CraftEntity implements Item {
public String toString() { public String toString() {
return "CraftItem"; return "CraftItem";
} }
@@ -1088,22 +1051,22 @@ index 7a3d982b133f8cdaeb936cf40f92565f0f7f6dd0..8b0faa08411ee1f336641b161acd3412
+ // Purpur end - Item entity immunities + // Purpur end - Item entity immunities
} }
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java
index 4f98d138a275a6c34528b7a5148ef265bc38d6b5..3a9d9b7526b2bf0fbd4e0d7886b3d849a6dcfee9 100644 index bd39ecac806a008583eaf041c75e1bb95a3912b7..5b74ca7c52fb0437726a2a00483134884dc50b2f 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java
@@ -523,7 +523,7 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity { @@ -520,7 +520,7 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity {
net.minecraft.server.level.ServerPlayer entityPlayer = killer == null ? null : ((CraftPlayer) killer).getHandle(); net.minecraft.server.level.ServerPlayer nmsKiller = killer == null ? null : ((CraftPlayer) killer).getHandle();
getHandle().lastHurtByPlayer = entityPlayer; this.getHandle().setLastHurtByMob(nmsKiller);
getHandle().lastHurtByMob = entityPlayer; if (nmsKiller != null) {
- getHandle().lastHurtByPlayerTime = entityPlayer == null ? 0 : 100; // 100 value taken from EntityLiving#damageEntity - this.getHandle().setLastHurtByPlayer(nmsKiller, 100); // value taken from LivingEntity#resolvePlayerResponsibleForDamage
+ getHandle().lastHurtByPlayerTime = entityPlayer == null ? 0 : getHandle().level().purpurConfig.mobLastHurtByPlayerTime; // 100 value taken from EntityLiving#damageEntity // Purpur - Config for mob last hurt by player time + this.getHandle().setLastHurtByPlayer(nmsKiller, this.getHandle().level().purpurConfig.mobLastHurtByPlayerTime); // value taken from LivingEntity#resolvePlayerResponsibleForDamage // Purpur - Config for mob last hurt by player time
} } else {
// Paper end this.getHandle().lastHurtByPlayer = null;
this.getHandle().lastHurtByPlayerMemoryTime = 0;
@@ -1211,4 +1211,16 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity { @@ -1167,4 +1167,16 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity {
public boolean canUseEquipmentSlot(org.bukkit.inventory.EquipmentSlot slot) {
return this.getHandle().canUseSlot(org.bukkit.craftbukkit.CraftEquipmentSlot.getNMS(slot)); return this.getHandle().canUseSlot(org.bukkit.craftbukkit.CraftEquipmentSlot.getNMS(slot));
} }
// Paper end - Expose canUseSlot
+ +
+ // Purpur start - API for any mob to burn daylight + // Purpur start - API for any mob to burn daylight
+ @Override + @Override
@@ -1118,13 +1081,14 @@ index 4f98d138a275a6c34528b7a5148ef265bc38d6b5..3a9d9b7526b2bf0fbd4e0d7886b3d849
+ // Purpur end - API for any mob to burn daylight + // Purpur end - API for any mob to burn daylight
} }
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftLlama.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftLlama.java diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftLlama.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftLlama.java
index 351f42842b780d053cd2e5bad9ae299449141b10..054d2c2b93c43faeeaf56f482eb7b9431a6190df 100644 index 845a0941fbaf6e1235526d93cacc5a7fcd858dce..cd78e48b8853fad1a31a56ef5ab6ffc5c222294b 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftLlama.java --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftLlama.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftLlama.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftLlama.java
@@ -90,4 +90,16 @@ public class CraftLlama extends CraftChestedHorse implements Llama, com.destroys @@ -89,4 +89,17 @@ public class CraftLlama extends CraftChestedHorse implements Llama, com.destroys
public Llama getCaravanTail() {
return this.getHandle().caravanTail == null ? null : (Llama) this.getHandle().caravanTail.getBukkitEntity(); return this.getHandle().caravanTail == null ? null : (Llama) this.getHandle().caravanTail.getBukkitEntity();
} }
// Paper end + // Paper end
+ +
+ // Purpur start - Llama API + // Purpur start - Llama API
+ @Override + @Override
@@ -1139,10 +1103,10 @@ index 351f42842b780d053cd2e5bad9ae299449141b10..054d2c2b93c43faeeaf56f482eb7b943
+ // Purpur end - Llama API + // Purpur end - Llama API
} }
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
index cc4b2061ae9cbd5a30b297be477cde703203b3f5..3ba69aa0ac247ecb3406664af606126b30c56ff9 100644 index df6612a86f7b0c06d8733852bf5c46b37a81bc3e..a5cf4e4b9cc35bd81b530bc3eac31b0af3d72b7c 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
@@ -589,10 +589,15 @@ public class CraftPlayer extends CraftHumanEntity implements Player { @@ -591,10 +591,15 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
@Override @Override
public void setPlayerListName(String name) { public void setPlayerListName(String name) {
@@ -1159,7 +1123,7 @@ index cc4b2061ae9cbd5a30b297be477cde703203b3f5..3ba69aa0ac247ecb3406664af606126b
if (this.getHandle().connection == null) return; // Paper - Updates are possible before the player has fully joined if (this.getHandle().connection == null) return; // Paper - Updates are possible before the player has fully joined
for (ServerPlayer player : (List<ServerPlayer>) this.server.getHandle().players) { for (ServerPlayer player : (List<ServerPlayer>) this.server.getHandle().players) {
if (player.getBukkitEntity().canSee(this)) { if (player.getBukkitEntity().canSee(this)) {
@@ -1431,6 +1436,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player { @@ -1416,6 +1421,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
// Paper start - Teleport passenger API // Paper start - Teleport passenger API
// Don't allow teleporting between worlds while keeping passengers // Don't allow teleporting between worlds while keeping passengers
if (ignorePassengers && entity.isVehicle() && location.getWorld() != this.getWorld()) { if (ignorePassengers && entity.isVehicle() && location.getWorld() != this.getWorld()) {
@@ -1167,7 +1131,7 @@ index cc4b2061ae9cbd5a30b297be477cde703203b3f5..3ba69aa0ac247ecb3406664af606126b
return false; return false;
} }
@@ -1452,6 +1458,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player { @@ -1437,6 +1443,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
} }
if (entity.isVehicle() && !ignorePassengers) { // Paper - Teleport API if (entity.isVehicle() && !ignorePassengers) { // Paper - Teleport API
@@ -1175,7 +1139,7 @@ index cc4b2061ae9cbd5a30b297be477cde703203b3f5..3ba69aa0ac247ecb3406664af606126b
return false; return false;
} }
@@ -2750,6 +2757,28 @@ public class CraftPlayer extends CraftHumanEntity implements Player { @@ -2731,6 +2738,28 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
return this.getHandle().getAbilities().walkingSpeed * 2f; return this.getHandle().getAbilities().walkingSpeed * 2f;
} }
@@ -1204,7 +1168,7 @@ index cc4b2061ae9cbd5a30b297be477cde703203b3f5..3ba69aa0ac247ecb3406664af606126b
private void validateSpeed(float value) { private void validateSpeed(float value) {
Preconditions.checkArgument(value <= 1f && value >= -1f, "Speed value (%s) need to be between -1f and 1f", value); Preconditions.checkArgument(value <= 1f && value >= -1f, "Speed value (%s) need to be between -1f and 1f", value);
} }
@@ -3619,4 +3648,75 @@ public class CraftPlayer extends CraftHumanEntity implements Player { @@ -3593,4 +3622,76 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
public void setSimplifyContainerDesyncCheck(final boolean simplifyContainerDesyncCheck) { public void setSimplifyContainerDesyncCheck(final boolean simplifyContainerDesyncCheck) {
this.simplifyContainerDesyncCheck = simplifyContainerDesyncCheck; this.simplifyContainerDesyncCheck = simplifyContainerDesyncCheck;
} }
@@ -1215,6 +1179,7 @@ index cc4b2061ae9cbd5a30b297be477cde703203b3f5..3ba69aa0ac247ecb3406664af606126b
+ return getHandle().purpurClient; + return getHandle().purpurClient;
+ } + }
+ // Purpur end - Purpur client support + // Purpur end - Purpur client support
+
+ // Purpur start - AFK API + // Purpur start - AFK API
+ @Override + @Override
+ public boolean isAfk() { + public boolean isAfk() {
@@ -1251,7 +1216,7 @@ index cc4b2061ae9cbd5a30b297be477cde703203b3f5..3ba69aa0ac247ecb3406664af606126b
+ @Override + @Override
+ public void sendBlockHighlight(Location location, int duration, String text, int argb) { + public void sendBlockHighlight(Location location, int duration, String text, int argb) {
+ if (this.getHandle().connection == null) return; + if (this.getHandle().connection == null) return;
+ this.getHandle().connection.send(new net.minecraft.network.protocol.common.ClientboundCustomPayloadPacket(new net.minecraft.network.protocol.common.custom.GameTestAddMarkerDebugPayload(io.papermc.paper.util.MCUtil.toBlockPosition(location), argb, text, duration))); + this.getHandle().connection.send(new net.minecraft.network.protocol.common.ClientboundCustomPayloadPacket(new net.minecraft.network.protocol.common.custom.GameTestAddMarkerDebugPayload(org.bukkit.craftbukkit.util.CraftLocation.toBlockPosition(location), argb, text, duration)));
+ } + }
+ +
+ @Override + @Override
@@ -1303,13 +1268,14 @@ index 4ce2373ff71c3c1b8951646e057587a3ab09e145..997b8e5059569de4ee8e70127c5d6019
+ // Purpur end - Summoner API + // Purpur end - Summoner API
} }
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftVillager.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftVillager.java diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftVillager.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftVillager.java
index aaddce10e1d41531939d1e7f3d717b458ec1b7ab..d65a3bee4671e9e21769ba03f5e65c7312b23580 100644 index 196e64467d642b887b8dda2b2130518b22c9f593..d6169e59b4a08a31007f579b747ee3a375c48613 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftVillager.java --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftVillager.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftVillager.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftVillager.java
@@ -373,4 +373,11 @@ public class CraftVillager extends CraftAbstractVillager implements Villager { @@ -385,4 +385,12 @@ public class CraftVillager extends CraftAbstractVillager implements Villager {
public void clearReputations() {
getHandle().getGossips().gossips.clear(); getHandle().getGossips().gossips.clear();
} }
// Paper end + // Paper end
+ +
+ // Purpur start - Lobotomize stuck villagers + // Purpur start - Lobotomize stuck villagers
+ @Override + @Override
@@ -1319,13 +1285,14 @@ index aaddce10e1d41531939d1e7f3d717b458ec1b7ab..d65a3bee4671e9e21769ba03f5e65c73
+ // Purpur end - Lobotomize stuck villagers + // Purpur end - Lobotomize stuck villagers
} }
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftWither.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftWither.java diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftWither.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftWither.java
index 7881c6253c1d652c0c0d54a9a8accdf0a1ff0f3e..fe8be71121324f64346174922c7bc7f5d3a9de69 100644 index 51383cd065bd3731fff70091be52f340922dab0a..92029ba33c768e5732b7b2d3a9d7902c44218bb2 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftWither.java --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftWither.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftWither.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftWither.java
@@ -99,4 +99,17 @@ public class CraftWither extends CraftMonster implements Wither, com.destroystok @@ -97,4 +97,18 @@ public class CraftWither extends CraftMonster implements Wither, com.destroystok
public void enterInvulnerabilityPhase() {
this.getHandle().makeInvulnerable(); this.getHandle().makeInvulnerable();
} }
// Paper end + // Paper end
+ +
+ // Purpur start - Summoner API + // Purpur start - Summoner API
+ @Override + @Override
@@ -1341,10 +1308,10 @@ index 7881c6253c1d652c0c0d54a9a8accdf0a1ff0f3e..fe8be71121324f64346174922c7bc7f5
+ // Purpur end - Summoner API + // Purpur end - Summoner API
} }
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftWolf.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftWolf.java diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftWolf.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftWolf.java
index c1b7f1281fbd41e765d2c1881763ca25b20e924d..53c620e717d39ef16f44c9697ac4809ac1fdfa6a 100644 index b9cd648b296bc53cbc2d53486cbbb611c3e895a3..f127499eb79a282df7db337d8a6737daeeb6e7e4 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftWolf.java --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftWolf.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftWolf.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftWolf.java
@@ -145,4 +145,15 @@ public class CraftWolf extends CraftTameableAnimal implements Wolf { @@ -227,4 +227,15 @@ public class CraftWolf extends CraftTameableAnimal implements Wolf {
return this.getKey().hashCode(); return this.getKey().hashCode();
} }
} }
@@ -1361,18 +1328,18 @@ index c1b7f1281fbd41e765d2c1881763ca25b20e924d..53c620e717d39ef16f44c9697ac4809a
+ // Purpur end - Configurable chance for wolves to spawn rabid + // Purpur end - Configurable chance for wolves to spawn rabid
} }
diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
index bbf44c44c6c3fc4cabad1453ab7aba9ac7ecb1e5..e52479f3c888268fd1febeb78e9965af834a8ae9 100644 index a7e3afe04ffbb0fd5fa5fcf7cd15efd7cea1c4e0..f32316b0357f1cb0501a052361a0221f8e9d1438 100644
--- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java --- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
+++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java +++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
@@ -602,6 +602,15 @@ public class CraftEventFactory { @@ -514,6 +514,15 @@ public class CraftEventFactory {
// Paper end }
craftServer.getPluginManager().callEvent(event); craftServer.getPluginManager().callEvent(event);
+ // Purpur start - Ridables + // Purpur start - Ridables
+ if (who != null) { + if (player != null) {
+ switch (action) { + switch (action) {
+ case LEFT_CLICK_BLOCK, LEFT_CLICK_AIR -> who.processClick(InteractionHand.MAIN_HAND); + case LEFT_CLICK_BLOCK, LEFT_CLICK_AIR -> player.processClick(InteractionHand.MAIN_HAND);
+ case RIGHT_CLICK_BLOCK, RIGHT_CLICK_AIR -> who.processClick(InteractionHand.OFF_HAND); + case RIGHT_CLICK_BLOCK, RIGHT_CLICK_AIR -> player.processClick(InteractionHand.OFF_HAND);
+ } + }
+ } + }
+ // Purpur end - Ridables + // Purpur end - Ridables
@@ -1380,7 +1347,7 @@ index bbf44c44c6c3fc4cabad1453ab7aba9ac7ecb1e5..e52479f3c888268fd1febeb78e9965af
return event; return event;
} }
@@ -1193,6 +1202,7 @@ public class CraftEventFactory { @@ -1046,6 +1055,7 @@ public class CraftEventFactory {
EntityDamageEvent event; EntityDamageEvent event;
if (damager != null) { if (damager != null) {
event = new EntityDamageByEntityEvent(damager.getBukkitEntity(), damagee.getBukkitEntity(), cause, bukkitDamageSource, modifiers, modifierFunctions, critical); event = new EntityDamageByEntityEvent(damager.getBukkitEntity(), damagee.getBukkitEntity(), cause, bukkitDamageSource, modifiers, modifierFunctions, critical);
@@ -1414,7 +1381,7 @@ index 1ce328bed5cf3d087a3f7dc9236153381d758493..364afc994443f6c64af4f9ebbe210da6
case DISPENSER: case DISPENSER:
case DROPPER: case DROPPER:
diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventory.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventory.java diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventory.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventory.java
index c6159c70f7a37b9bffe268b91905ce848d1d2927..8b4f8a475faafe3b8a479160888145c4aa603a27 100644 index f850e6cea92edc87ed54cf54488b5ebb606913ed..19180c08f41db939c1a9f0caeb62e5beb1117f69 100644
--- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventory.java --- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventory.java
+++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventory.java +++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventory.java
@@ -84,7 +84,7 @@ public class CraftInventory implements Inventory { @@ -84,7 +84,7 @@ public class CraftInventory implements Inventory {
@@ -1484,10 +1451,10 @@ index 792cb6adf0c7a6335cc5985fce8bed2e0f1149af..5734c5caffda79383ae30df20c3defb5
+ // Purpur end - Anvil API + // Purpur end - Anvil API
} }
diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemStack.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemStack.java diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemStack.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemStack.java
index d3dc1f7fe238ca0229b7c05ed04be481e4613ef8..21716eaa275ebc9a8fff65c99f478d756eabf1bc 100644 index 1aa17423f4ecbba0b13f0ed3351916eb98dcd364..44a5cbd6ba26ea4f36188c48f2f9510d67a5c476 100644
--- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemStack.java --- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemStack.java
+++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemStack.java +++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemStack.java
@@ -713,4 +713,285 @@ public final class CraftItemStack extends ItemStack { @@ -669,4 +669,285 @@ public final class CraftItemStack extends ItemStack {
} }
// Paper end - data component API // Paper end - data component API
@@ -1786,10 +1753,10 @@ index 4864e2016cb1d377425297fd1c52b383632cb59e..953d64d128a53eb9ec2ff55140dde5cb
// Their impl of Ingredient.of() will error, ingredients need at least one entry. // Their impl of Ingredient.of() will error, ingredients need at least one entry.
// Callers running into this exception may have passed an incorrect empty() recipe choice to a non-empty slot or // Callers running into this exception may have passed an incorrect empty() recipe choice to a non-empty slot or
diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/view/CraftAnvilView.java b/src/main/java/org/bukkit/craftbukkit/inventory/view/CraftAnvilView.java diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/view/CraftAnvilView.java b/src/main/java/org/bukkit/craftbukkit/inventory/view/CraftAnvilView.java
index f86c95a13dff012de5db3e41ac261e9e8d44d9f3..1db0b790d824e419bb5fb6ab1f3003e120f9763b 100644 index 2b3844f5ecc1bfbf3f5dab1c00d06f8be27f39e9..4e535c287137ceedd4d48047b03f4578c33467b0 100644
--- a/src/main/java/org/bukkit/craftbukkit/inventory/view/CraftAnvilView.java --- a/src/main/java/org/bukkit/craftbukkit/inventory/view/CraftAnvilView.java
+++ b/src/main/java/org/bukkit/craftbukkit/inventory/view/CraftAnvilView.java +++ b/src/main/java/org/bukkit/craftbukkit/inventory/view/CraftAnvilView.java
@@ -75,4 +75,26 @@ public class CraftAnvilView extends CraftInventoryView<AnvilMenu, AnvilInventory @@ -73,4 +73,26 @@ public class CraftAnvilView extends CraftInventoryView<AnvilMenu, AnvilInventory
this.setMaximumRepairCost(legacy.getMaximumRepairCost()); this.setMaximumRepairCost(legacy.getMaximumRepairCost());
} }
} }
@@ -1854,10 +1821,10 @@ index db8d8e2a07296d62c3097f02b03319e2e1ba9394..4ba4d52961b4ba61fe2db130ee4368ff
+ // Purpur end - Adopt MaterialRerouting + // Purpur end - Adopt MaterialRerouting
} }
diff --git a/src/main/java/org/bukkit/craftbukkit/map/CraftMapRenderer.java b/src/main/java/org/bukkit/craftbukkit/map/CraftMapRenderer.java diff --git a/src/main/java/org/bukkit/craftbukkit/map/CraftMapRenderer.java b/src/main/java/org/bukkit/craftbukkit/map/CraftMapRenderer.java
index cf0920e5f84b35647882fb963e9972af4e8427e0..2949cd29c7fa707835044a4b61eae150df56296e 100644 index a573499fb96cb08d96e0b20602fc423bfd0e2f52..eb9cbc29181ffc83acd556f26f2c0b4f227808ab 100644
--- a/src/main/java/org/bukkit/craftbukkit/map/CraftMapRenderer.java --- a/src/main/java/org/bukkit/craftbukkit/map/CraftMapRenderer.java
+++ b/src/main/java/org/bukkit/craftbukkit/map/CraftMapRenderer.java +++ b/src/main/java/org/bukkit/craftbukkit/map/CraftMapRenderer.java
@@ -49,4 +49,10 @@ public class CraftMapRenderer extends MapRenderer { @@ -46,4 +46,10 @@ public class CraftMapRenderer extends MapRenderer {
} }
} }
@@ -1869,7 +1836,7 @@ index cf0920e5f84b35647882fb963e9972af4e8427e0..2949cd29c7fa707835044a4b61eae150
+ // Purpur end - Explorer Map API + // Purpur end - Explorer Map API
} }
diff --git a/src/main/java/org/bukkit/craftbukkit/util/permissions/CommandPermissions.java b/src/main/java/org/bukkit/craftbukkit/util/permissions/CommandPermissions.java diff --git a/src/main/java/org/bukkit/craftbukkit/util/permissions/CommandPermissions.java b/src/main/java/org/bukkit/craftbukkit/util/permissions/CommandPermissions.java
index b3169c551b8410f5861f9db0543c785439ecba7c..377b6bdc80019f0c824c8fd35a8f228315bafe9f 100644 index a38d464b470bacd9280fb4ae69f3600cbd5dbe22..a36b0b535252c06fc426535ad2138e23fa2e47fd 100644
--- a/src/main/java/org/bukkit/craftbukkit/util/permissions/CommandPermissions.java --- a/src/main/java/org/bukkit/craftbukkit/util/permissions/CommandPermissions.java
+++ b/src/main/java/org/bukkit/craftbukkit/util/permissions/CommandPermissions.java +++ b/src/main/java/org/bukkit/craftbukkit/util/permissions/CommandPermissions.java
@@ -23,7 +23,15 @@ public final class CommandPermissions { @@ -23,7 +23,15 @@ public final class CommandPermissions {

View File

@@ -31,10 +31,10 @@ You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. along with this program. If not, see <http://www.gnu.org/licenses/>.
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
index 63dd549a4560febb44d5b5dd7aed29a1f962403a..0a84d8cbdcd3513a83487a22ba81dc9e0535fc1b 100644 index 3c237f2002e6463efe6bd8ffa2235ce6a6a3e5ec..542c695fe4a0a092233cb478e1ed9c4548409091 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
@@ -1158,6 +1158,13 @@ public final class CraftServer implements Server { @@ -1175,6 +1175,13 @@ public final class CraftServer implements Server {
plugin.getPluginMeta().getDisplayName(), plugin.getPluginMeta().getDisplayName(),
"This plugin is not properly shutting down its async tasks when it is being shut down. This task may throw errors during the final shutdown logs and might not complete before process dies." "This plugin is not properly shutting down its async tasks when it is being shut down. This task may throw errors during the final shutdown logs and might not complete before process dies."
)); ));

View File

@@ -13,7 +13,7 @@ As part of: MultiPaper (https://github.com/MultiPaper/MultiPaper)
Licensed under: GPL-3.0 (https://www.gnu.org/licenses/gpl-3.0.html) Licensed under: GPL-3.0 (https://www.gnu.org/licenses/gpl-3.0.html)
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
index 0a84d8cbdcd3513a83487a22ba81dc9e0535fc1b..45296a3d27ecd70375ea17c1375d05c70f10f9d2 100644 index 542c695fe4a0a092233cb478e1ed9c4548409091..b3a40db1eb9874392723c5f74546781879ff6c10 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
@@ -282,6 +282,7 @@ public final class CraftServer implements Server { @@ -282,6 +282,7 @@ public final class CraftServer implements Server {
@@ -24,7 +24,7 @@ index 0a84d8cbdcd3513a83487a22ba81dc9e0535fc1b..45296a3d27ecd70375ea17c1375d05c7
private YamlConfiguration configuration; private YamlConfiguration configuration;
private YamlConfiguration commandsConfiguration; private YamlConfiguration commandsConfiguration;
private final Yaml yaml = new Yaml(new SafeConstructor(new LoaderOptions())); private final Yaml yaml = new Yaml(new SafeConstructor(new LoaderOptions()));
@@ -1486,6 +1487,7 @@ public final class CraftServer implements Server { @@ -1503,6 +1504,7 @@ public final class CraftServer implements Server {
this.getLogger().log(Level.SEVERE, null, ex); this.getLogger().log(Level.SEVERE, null, ex);
} }
@@ -32,7 +32,7 @@ index 0a84d8cbdcd3513a83487a22ba81dc9e0535fc1b..45296a3d27ecd70375ea17c1375d05c7
this.worlds.remove(world.getName().toLowerCase(Locale.ROOT)); this.worlds.remove(world.getName().toLowerCase(Locale.ROOT));
this.console.removeLevel(handle); this.console.removeLevel(handle);
return true; return true;
@@ -1504,12 +1506,7 @@ public final class CraftServer implements Server { @@ -1521,12 +1523,7 @@ public final class CraftServer implements Server {
@Override @Override
public World getWorld(UUID uid) { public World getWorld(UUID uid) {
@@ -46,7 +46,7 @@ index 0a84d8cbdcd3513a83487a22ba81dc9e0535fc1b..45296a3d27ecd70375ea17c1375d05c7
} }
@Override @Override
@@ -1525,6 +1522,7 @@ public final class CraftServer implements Server { @@ -1542,6 +1539,7 @@ public final class CraftServer implements Server {
System.out.println("World " + world.getName() + " is a duplicate of another world and has been prevented from loading. Please delete the uid.dat file from " + world.getName() + "'s world directory if you want to be able to load the duplicate world."); System.out.println("World " + world.getName() + " is a duplicate of another world and has been prevented from loading. Please delete the uid.dat file from " + world.getName() + "'s world directory if you want to be able to load the duplicate world.");
return; return;
} }

View File

@@ -7,10 +7,10 @@ License: GPL-3.0 (https://www.gnu.org/licenses/gpl-3.0.html)
Gale - https://galemc.org Gale - https://galemc.org
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
index 45296a3d27ecd70375ea17c1375d05c70f10f9d2..e10e540e5a24552167ab066146cbd0eaead6dc9e 100644 index b3a40db1eb9874392723c5f74546781879ff6c10..9a92d8e7593de84458a22d72819bfbb3ff1bad9a 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
@@ -2994,6 +2994,23 @@ public final class CraftServer implements Server { @@ -3077,6 +3077,23 @@ public final class CraftServer implements Server {
}; };
} }

View File

@@ -58,10 +58,10 @@ index 12b327eea95e0de9e9c39b7d039badee8ec46508..6178f0212214a2a075cea60c758dca79
} }
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
index e10e540e5a24552167ab066146cbd0eaead6dc9e..aa7bc955f53cea93d9409653ad1263c3c0a0888d 100644 index 9a92d8e7593de84458a22d72819bfbb3ff1bad9a..b34138df70d548756b9fbf876b205bf2434cc6b2 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
@@ -2994,7 +2994,26 @@ public final class CraftServer implements Server { @@ -3077,7 +3077,26 @@ public final class CraftServer implements Server {
}; };
} }

View File

@@ -23,13 +23,13 @@ The above copyright notice and this permission notice shall be included in all c
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
index aa7bc955f53cea93d9409653ad1263c3c0a0888d..704b5fd8c10cdc5363f59fbd878d9453926d91c3 100644 index b34138df70d548756b9fbf876b205bf2434cc6b2..a1966546aaf211afae09c2c270439c4f94621419 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
@@ -3231,4 +3231,21 @@ public final class CraftServer implements Server { @@ -3328,4 +3328,21 @@ public final class CraftServer implements Server {
public void allowPausing(final Plugin plugin, final boolean value) { return getServer().lagging;
this.console.addPluginAllowingSleep(plugin.getName(), value);
} }
// Purpur end - Lagging threshold
+ +
+ // Gale start - YAPFA - last tick time - API + // Gale start - YAPFA - last tick time - API
+ @Override + @Override

View File

@@ -7,13 +7,13 @@ Original license: MIT
Original project: https://github.com/KeYiMC/KeYi Original project: https://github.com/KeYiMC/KeYi
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
index e1f26ff10f83ea28b09dfba5b02caea182a8f445..d81979c51c81ba08cfb3a401b3f7fde84f492065 100644 index a5cf4e4b9cc35bd81b530bc3eac31b0af3d72b7c..1e79f854abcf62f221a56657997ad1c3745ef8f1 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
@@ -3593,4 +3593,31 @@ public class CraftPlayer extends CraftHumanEntity implements Player { @@ -3694,4 +3694,31 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
public void setSimplifyContainerDesyncCheck(final boolean simplifyContainerDesyncCheck) { this.getHandle().connection.send(new net.minecraft.network.protocol.game.ClientboundPlayerCombatKillPacket(getEntityId(), io.papermc.paper.adventure.PaperAdventure.asVanilla(message)));
this.simplifyContainerDesyncCheck = simplifyContainerDesyncCheck;
} }
// Purpur end - Death screen API
+ +
+ // Leaf start - KeYi - Player Skull API + // Leaf start - KeYi - Player Skull API
+ @Override + @Override

View File

@@ -9,10 +9,10 @@ Original project: https://github.com/Cryptite/Slice
Co-authored-by: HaHaWTH <102713261+HaHaWTH@users.noreply.github.com> Co-authored-by: HaHaWTH <102713261+HaHaWTH@users.noreply.github.com>
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
index d81979c51c81ba08cfb3a401b3f7fde84f492065..905cea7470f7bb8dee27bbfc4d267d46c28fe21b 100644 index 1e79f854abcf62f221a56657997ad1c3745ef8f1..834d845986d1baa7cf1c4275e39aaef8efa2db8e 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
@@ -1361,6 +1361,25 @@ public class CraftPlayer extends CraftHumanEntity implements Player { @@ -1366,6 +1366,25 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
// Paper end - Teleportation API // Paper end - Teleportation API
} }

View File

@@ -88,7 +88,7 @@ index c03608fec96b51e1867f43d8f42e5aefb1520e46..56268cf8d184e0b6cd46de8c2e893ad3
+ // Leaf end - SparklyPaper - skip EntityScheduler's executeTick checks if there isn't any tasks to be run + // Leaf end - SparklyPaper - skip EntityScheduler's executeTick checks if there isn't any tasks to be run
} }
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java
index 5aa8eab78e99408b0beb64d7ed07ff1bc61541db..0809ed41274be3dd18eb89aa96c442bc3995f1b7 100644 index 83a23a82335eac087d36fd27ca6c6417960b881f..5a707acb7cda4097f822e3dcb17bdf26ca5c9f59 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java
@@ -80,7 +80,7 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { @@ -80,7 +80,7 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity {
@@ -107,4 +107,4 @@ index 5aa8eab78e99408b0beb64d7ed07ff1bc61541db..0809ed41274be3dd18eb89aa96c442bc
+ this.taskScheduler = new io.papermc.paper.threadedregions.EntityScheduler(this.entity.getServer(), this); // SparklyPaper - skip EntityScheduler's executeTick checks if there isn't any tasks to be run + this.taskScheduler = new io.papermc.paper.threadedregions.EntityScheduler(this.entity.getServer(), this); // SparklyPaper - skip EntityScheduler's executeTick checks if there isn't any tasks to be run
} }
public static <T extends Entity> CraftEntity getEntity(CraftServer server, T entity) { // Purpur start - Fire Immunity API

View File

@@ -16,7 +16,7 @@ This seems stupid, but it does seem that it improves the performance a bit, and
We also create a "canSee" method tailored for "ChunkMap#updatePlayer()", a method without the equals check (the "updatePlayer()" already checks if the entity is the same entity) because the CraftPlayer's `equals()` check is a *bit* expensive compared to only checking the object's identity, and because the identity has already been check, we don't need to check it twice. We also create a "canSee" method tailored for "ChunkMap#updatePlayer()", a method without the equals check (the "updatePlayer()" already checks if the entity is the same entity) because the CraftPlayer's `equals()` check is a *bit* expensive compared to only checking the object's identity, and because the identity has already been check, we don't need to check it twice.
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
index 905cea7470f7bb8dee27bbfc4d267d46c28fe21b..ff0ef4e148c85aff18094a139705de5034d99e20 100644 index 834d845986d1baa7cf1c4275e39aaef8efa2db8e..b05b651dbb14602bd58073e64b7d10d55be0d645 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
@@ -212,7 +212,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player { @@ -212,7 +212,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
@@ -28,7 +28,7 @@ index 905cea7470f7bb8dee27bbfc4d267d46c28fe21b..ff0ef4e148c85aff18094a139705de50
private final Set<UUID> unlistedEntities = new HashSet<>(); // Paper - Add Listing API for Player private final Set<UUID> unlistedEntities = new HashSet<>(); // Paper - Add Listing API for Player
private static final WeakHashMap<Plugin, WeakReference<Plugin>> pluginWeakReferences = new WeakHashMap<>(); private static final WeakHashMap<Plugin, WeakReference<Plugin>> pluginWeakReferences = new WeakHashMap<>();
private int hash = 0; private int hash = 0;
@@ -2266,9 +2266,16 @@ public class CraftPlayer extends CraftHumanEntity implements Player { @@ -2273,9 +2273,16 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
@Override @Override
public boolean canSee(org.bukkit.entity.Entity entity) { public boolean canSee(org.bukkit.entity.Entity entity) {

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] Including 5s in getTPS()
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
index 704b5fd8c10cdc5363f59fbd878d9453926d91c3..540c84579ef57ec73bc5250ff889139ddcdf296b 100644 index a1966546aaf211afae09c2c270439c4f94621419..5e80332c995177ba360ab829ca9b3cfc642fe32b 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
@@ -2987,6 +2987,8 @@ public final class CraftServer implements Server { @@ -3070,6 +3070,8 @@ public final class CraftServer implements Server {
@Override @Override
public double[] getTPS() { public double[] getTPS() {

View File

@@ -14,7 +14,7 @@ Co-authored-by: Dreeam <61569423+Dreeam-qwq@users.noreply.github.com>
Co-authored-by: HaHaWTH <102713261+HaHaWTH@users.noreply.github.com> Co-authored-by: HaHaWTH <102713261+HaHaWTH@users.noreply.github.com>
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftChunk.java b/src/main/java/org/bukkit/craftbukkit/CraftChunk.java diff --git a/src/main/java/org/bukkit/craftbukkit/CraftChunk.java b/src/main/java/org/bukkit/craftbukkit/CraftChunk.java
index c855f1f6f70000b03594ce50553147d9821b796b..91f680bb9905319d9ce2b3fe2746bdb8e968aba9 100644 index 400e632208d133a3f49fc7f14bceb48a1026769b..8c4e5b0c81d90a0eeee4ab9e5882b1372a628954 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftChunk.java --- a/src/main/java/org/bukkit/craftbukkit/CraftChunk.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftChunk.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftChunk.java
@@ -196,7 +196,14 @@ public class CraftChunk implements Chunk { @@ -196,7 +196,14 @@ public class CraftChunk implements Chunk {
@@ -34,10 +34,10 @@ index c855f1f6f70000b03594ce50553147d9821b796b..91f680bb9905319d9ce2b3fe2746bdb8
@Override @Override
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
index 540c84579ef57ec73bc5250ff889139ddcdf296b..1c3382da80fa3e08b130d48c135c4100580b70f6 100644 index 5e80332c995177ba360ab829ca9b3cfc642fe32b..84752038245c15e60cc5d8280b8cc37259ca3e3e 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
@@ -1354,7 +1354,11 @@ public final class CraftServer implements Server { @@ -1371,7 +1371,11 @@ public final class CraftServer implements Server {
registryAccess = levelDataAndDimensions.dimensions().dimensionsRegistryAccess(); registryAccess = levelDataAndDimensions.dimensions().dimensionsRegistryAccess();
} else { } else {
LevelSettings levelSettings; LevelSettings levelSettings;

View File

@@ -5,7 +5,7 @@ Subject: [PATCH] Replace world map with optimized collection
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
index 1c3382da80fa3e08b130d48c135c4100580b70f6..ffdea8befa77ec655b1df929715fcbdc60d6a966 100644 index 84752038245c15e60cc5d8280b8cc37259ca3e3e..ce866cecc1012f91577ee4dd90957d905c7134d6 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
@@ -281,7 +281,7 @@ public final class CraftServer implements Server { @@ -281,7 +281,7 @@ public final class CraftServer implements Server {

View File

@@ -41,10 +41,10 @@ index db031298c2090eb36032de4b52335c62186e4cfb..84905d7802f8a5c3f68e15f1b17ef082
} }
diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
index 083cc48abea81560b34c30653e766d650a2d3850..7d22c1ee7fa98fc2d04d353fe19387ca3334f52a 100644 index f32316b0357f1cb0501a052361a0221f8e9d1438..ebb07b9b9f6bef9195978c8ecdd5f4ef3ee198bc 100644
--- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java --- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
+++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java +++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
@@ -1741,6 +1741,26 @@ public class CraftEventFactory { @@ -1751,6 +1751,26 @@ public class CraftEventFactory {
} }
public static boolean handleBlockFormEvent(Level world, BlockPos pos, net.minecraft.world.level.block.state.BlockState state, int flags, @Nullable Entity entity, boolean checkSetResult) { public static boolean handleBlockFormEvent(Level world, BlockPos pos, net.minecraft.world.level.block.state.BlockState state, int flags, @Nullable Entity entity, boolean checkSetResult) {

View File

@@ -8,10 +8,10 @@ replacing ArrayList with Fastutil ObjectArrayList
brings about 40% performance improvement in benchmark. brings about 40% performance improvement in benchmark.
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
index ffdea8befa77ec655b1df929715fcbdc60d6a966..028a30ae3c9dd411e70b1bc8ac42067c06d0335f 100644 index ce866cecc1012f91577ee4dd90957d905c7134d6..4310e92720fce2d792c610156be610c281c3ab2b 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
@@ -954,7 +954,7 @@ public final class CraftServer implements Server { @@ -968,7 +968,7 @@ public final class CraftServer implements Server {
@Override @Override
public List<World> getWorlds() { public List<World> getWorlds() {

View File

@@ -9,7 +9,7 @@ Added some asynchronous structure locate methods in World,
requires async-locator to be enabled in Leaf config, or else it will fall back to sync methods. requires async-locator to be enabled in Leaf config, or else it will fall back to sync methods.
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
index a76797c08cb5912d0525fa21217d45b61b110259..2538a0de7fd6b1026fff51e5d066c5b0811b7cda 100644 index a4a0b07c9e3e716d77bc6e11dca096e142a5190e..6bcece7ceb5be047371faf7ab85b3688ed3e045b 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java --- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
@@ -2272,6 +2272,45 @@ public class CraftWorld extends CraftRegionAccessor implements World { @@ -2272,6 +2272,45 @@ public class CraftWorld extends CraftRegionAccessor implements World {

View File

@@ -5,7 +5,7 @@ Subject: [PATCH] PlayerInventoryOverflowEvent
diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventory.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventory.java diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventory.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventory.java
index f850e6cea92edc87ed54cf54488b5ebb606913ed..b5af3cc6865408ffef40f4868970cff947834afc 100644 index 19180c08f41db939c1a9f0caeb62e5beb1117f69..59ab5bd3582cdae351d579719244c4ad28878a00 100644
--- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventory.java --- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventory.java
+++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventory.java +++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventory.java
@@ -340,6 +340,15 @@ public class CraftInventory implements Inventory { @@ -340,6 +340,15 @@ public class CraftInventory implements Inventory {

View File

@@ -263,7 +263,7 @@ index 196fddeab452e7bc89ef6758635e1d07074e7416..55a2ffa0fff6ef66b9bd5069300c09e9
} else if (!event.isAsynchronous() && !this.server.isPrimaryThread() && !this.server.isStopping()) { } else if (!event.isAsynchronous() && !this.server.isPrimaryThread() && !this.server.isStopping()) {
// Leaf start - Multithreaded tracker // Leaf start - Multithreaded tracker
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
index 9e09f14033818fcf9df161941e316c16d913705b..8d68b49ff0b1c4c829d97cd8ebe81be79ee856f6 100644 index 6bcece7ceb5be047371faf7ab85b3688ed3e045b..96faa72abe918e7ab3f1dec44072a5fee27b6476 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java --- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
@@ -456,7 +456,12 @@ public class CraftWorld extends CraftRegionAccessor implements World { @@ -456,7 +456,12 @@ public class CraftWorld extends CraftRegionAccessor implements World {
@@ -609,10 +609,10 @@ index 321280d7c9c3c828cbf2eb19d2fd196a1f84d4c3..cd8f771e08cee5d00c53a8e70f0fe37c
} }
diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
index 5a1b37a408ebede6367ca90ad5d13c29b7b1a6b3..7042d684bc345925f1755fec2b463b487db71cc5 100644 index ebb07b9b9f6bef9195978c8ecdd5f4ef3ee198bc..3848011363056d700110564c6af8e4c3bd54ac6c 100644
--- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java --- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
+++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java +++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
@@ -809,6 +809,28 @@ public class CraftEventFactory { @@ -818,6 +818,28 @@ public class CraftEventFactory {
} }
public static BlockPos sourceBlockOverride = null; // SPIGOT-7068: Add source block override, not the most elegant way but better than passing down a BlockPos up to five methods deep. public static BlockPos sourceBlockOverride = null; // SPIGOT-7068: Add source block override, not the most elegant way but better than passing down a BlockPos up to five methods deep.
@@ -641,7 +641,7 @@ index 5a1b37a408ebede6367ca90ad5d13c29b7b1a6b3..7042d684bc345925f1755fec2b463b48
public static boolean handleBlockSpreadEvent(LevelAccessor world, BlockPos source, BlockPos target, net.minecraft.world.level.block.state.BlockState state, int flags) { public static boolean handleBlockSpreadEvent(LevelAccessor world, BlockPos source, BlockPos target, net.minecraft.world.level.block.state.BlockState state, int flags) {
return handleBlockSpreadEvent(world, source, target, state, flags, false); return handleBlockSpreadEvent(world, source, target, state, flags, false);
@@ -824,7 +846,10 @@ public class CraftEventFactory { @@ -833,7 +855,10 @@ public class CraftEventFactory {
CraftBlockState snapshot = CraftBlockStates.getBlockState(world, target); CraftBlockState snapshot = CraftBlockStates.getBlockState(world, target);
snapshot.setData(state); snapshot.setData(state);

View File

@@ -31,7 +31,7 @@ vain. Throttling spawn attempts in suspected spawnproof chunks improves
performance without noticeably advantaging or disadvantaging the mob farm. performance without noticeably advantaging or disadvantaging the mob farm.
diff --git a/src/main/java/io/papermc/paper/configuration/WorldConfiguration.java b/src/main/java/io/papermc/paper/configuration/WorldConfiguration.java diff --git a/src/main/java/io/papermc/paper/configuration/WorldConfiguration.java b/src/main/java/io/papermc/paper/configuration/WorldConfiguration.java
index 9511f978f6c7da506f67928f5a5a92ecf28e5930..6c298304f842612d0e063b578f274eed04b32960 100644 index 65f6839fe75340a4b58894ad50c6eda7b59128c0..f7610c709bd6f9e30ec7b1295d58dfbe98fc8661 100644
--- a/src/main/java/io/papermc/paper/configuration/WorldConfiguration.java --- a/src/main/java/io/papermc/paper/configuration/WorldConfiguration.java
+++ b/src/main/java/io/papermc/paper/configuration/WorldConfiguration.java +++ b/src/main/java/io/papermc/paper/configuration/WorldConfiguration.java
@@ -182,6 +182,17 @@ public class WorldConfiguration extends ConfigurationPart { @@ -182,6 +182,17 @@ public class WorldConfiguration extends ConfigurationPart {

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] Async playerdata saving
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftOfflinePlayer.java b/src/main/java/org/bukkit/craftbukkit/CraftOfflinePlayer.java diff --git a/src/main/java/org/bukkit/craftbukkit/CraftOfflinePlayer.java b/src/main/java/org/bukkit/craftbukkit/CraftOfflinePlayer.java
index f2d87c12dd19210ce7e2147fada5c10191008632..0cc6b6c597ca8c955b246764de637be4c25bfb40 100644 index 1456f2d1a92c8315177fb03d0c7ec943d5f5b097..e70692272aae39ea01fb6860ec4cb703ea531781 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftOfflinePlayer.java --- a/src/main/java/org/bukkit/craftbukkit/CraftOfflinePlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftOfflinePlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftOfflinePlayer.java
@@ -207,7 +207,7 @@ public class CraftOfflinePlayer implements OfflinePlayer, ConfigurationSerializa @@ -199,7 +199,7 @@ public class CraftOfflinePlayer implements OfflinePlayer, ConfigurationSerializa
} }
private CompoundTag getData() { private CompoundTag getData() {
@@ -17,7 +17,7 @@ index f2d87c12dd19210ce7e2147fada5c10191008632..0cc6b6c597ca8c955b246764de637be4
} }
private CompoundTag getBukkitData() { private CompoundTag getBukkitData() {
@@ -813,6 +813,17 @@ public class CraftOfflinePlayer implements OfflinePlayer, ConfigurationSerializa @@ -744,6 +744,17 @@ public class CraftOfflinePlayer implements OfflinePlayer, ConfigurationSerializa
* @param compoundTag * @param compoundTag
*/ */
private void save(CompoundTag compoundTag) { private void save(CompoundTag compoundTag) {
@@ -35,7 +35,7 @@ index f2d87c12dd19210ce7e2147fada5c10191008632..0cc6b6c597ca8c955b246764de637be4
File playerDir = server.console.playerDataStorage.getPlayerDir(); File playerDir = server.console.playerDataStorage.getPlayerDir();
try { try {
File tempFile = File.createTempFile(this.getUniqueId()+"-", ".dat", playerDir); File tempFile = File.createTempFile(this.getUniqueId()+"-", ".dat", playerDir);
@@ -822,6 +833,12 @@ public class CraftOfflinePlayer implements OfflinePlayer, ConfigurationSerializa @@ -753,6 +764,12 @@ public class CraftOfflinePlayer implements OfflinePlayer, ConfigurationSerializa
net.minecraft.Util.safeReplaceFile(playerDataFile.toPath(), tempFile.toPath(), playerDataFileOld.toPath()); net.minecraft.Util.safeReplaceFile(playerDataFile.toPath(), tempFile.toPath(), playerDataFileOld.toPath());
} catch (java.io.IOException e) { } catch (java.io.IOException e) {
e.printStackTrace(); e.printStackTrace();