Updated Upstream (Paper)

Upstream has released updates that appear to apply and compile correctly

Paper Changes:
PaperMC/Paper@e3aca921 Replace ConcurrentUtil's Validate with Objects
PaperMC/Paper@9a626dd7 Rewrite ticket counter system
PaperMC/Paper@65250cbe Drop "Optimize Collision to not load chunks"
PaperMC/Paper@55d56d91 Apply "Flush regionfiles on save configuration option"
PaperMC/Paper@920e8d35 Apply "Optimise collision checking in player move packet handling"
PaperMC/Paper@ec492d3f Apply "Improve keepalive ping system"
PaperMC/Paper@8f659478 Apply "Optimise EntityScheduler ticking"
PaperMC/Paper@086b4fd4 Apply "Optional per player mob spawns"
PaperMC/Paper@2f4211ed Apply "Improve cancelling PreCreatureSpawnEvent with per player mob spawns"
PaperMC/Paper@b6d95574 Apply "Optimize Hoppers"
PaperMC/Paper@388e6936 update generator
PaperMC/Paper@a3c89a8f add javadocs for new api
PaperMC/Paper@fcc763ad Call BlockRedstoneEvent for the shelf
PaperMC/Paper@03eb18bb replace requireNonNull by checkArgument and deprecate MCUtil#toLocation
PaperMC/Paper@6b7bf014 bump built-in datapack version
PaperMC/Paper@2779a538 deprecate #lanterns material tag in favour of vanilla tag
PaperMC/Paper@6f9957e8 Mannequin#createDefaultProfile -> Mannequin#defaultProfile
PaperMC/Paper@24874e53 Also rename Mannequin profile getter/setters for consistency
PaperMC/Paper@bc2ae107 Fix default respawn dimension being null for new worlds
PaperMC/Paper@eb421583 Use 0.0.4 release of ConcurrentUtil
PaperMC/Paper@bb017458 1.21.9-pre2
PaperMC/Paper@02492043 1.21.9-pre2 feature patches
PaperMC/Paper@9360ba42 Identifying comments for MinecraftServer
PaperMC/Paper@5d3aa537 Some diff improvements in prepare spawn task
PaperMC/Paper@22ad4519 Move some stuff to ATs
PaperMC/Paper@0ea15c97 Drop no longer applicable ATs
PaperMC/Paper@cf78f2a2 bump api-version/datapack format and add a copper torch tag
PaperMC/Paper@60cb0dfc generate ClientOption enums and mark CraftBlockData impl as null marked
PaperMC/Paper@40252892 Add pre2 to api version
PaperMC/Paper@f2cb073a Set build channel to alpha
PaperMC/Paper@90b29c4c Port most of the anti-xray patch
PaperMC/Paper@4a8e88dc Disable oldPaperCommit to fix CI build
PaperMC/Paper@121ac2eb Port the last Anti-XRay hunk
PaperMC/Paper@f43641f8 Use ConcurrentUtil 0.0.5
PaperMC/Paper@1f79388d fix end portal teleportation
PaperMC/Paper@2efb400a [ci/skip] Adjust spawn location event docs
PaperMC/Paper@cb9fc05d simplify overloads
PaperMC/Paper@25ecc590 Enable Anti-Xray
PaperMC/Paper@4d7185f6 Add AsyncPlayerSpawnLocationEvent#isNewPlayer (#13081)
PaperMC/Paper@dc474a89 Fixup vanilla code for Anti-Xray changes
PaperMC/Paper@0e23b024 Add back null check for chunkPacketBlockController
This commit is contained in:
granny
2025-09-21 19:26:19 -07:00
parent e7d86094fe
commit b6d73e8ce6
26 changed files with 86 additions and 90 deletions

View File

@@ -8,7 +8,7 @@
plugins {
`java-library`
@@ -26,15 +_,27 @@
@@ -26,6 +_,18 @@
minecraftVersion = providers.gradleProperty("mcVersion")
gitFilePatches = false
@@ -27,19 +27,7 @@
spigot {
enabled = false
buildDataRef = "436eac9815c211be1a2a6ca0702615f995e81c44"
packageVersion = "v1_21_R5" // also needs to be updated in MappingEnvironment
}
- updatingMinecraft {
- oldPaperCommit = "29c8822d90899c89d2689338e81a98f690bcba12" // 1.21.8 main
- }
+ // updatingMinecraft {
+ // oldPaperCommit = "29c8822d90899c89d2689338e81a98f690bcba12" // 1.21.8 main
+ // }
reobfPackagesToFix.addAll(
"co.aikar.timings",
@@ -111,7 +_,21 @@
@@ -107,7 +_,21 @@
}
}
@@ -62,16 +50,16 @@
configurations.named(log4jPlugins.compileClasspathConfigurationName) {
extendsFrom(configurations.compileClasspath.get())
}
@@ -133,7 +_,7 @@
@@ -129,7 +_,7 @@
}
dependencies {
- implementation(project(":paper-api"))
+ implementation(project(":purpur-api")) // Purpur
implementation("ca.spottedleaf:concurrentutil:0.0.4-SNAPSHOT")
implementation("ca.spottedleaf:concurrentutil:0.0.5")
implementation("org.jline:jline-terminal-ffm:3.27.1") // use ffm on java 22+
implementation("org.jline:jline-terminal-jni:3.27.1") // fall back to jni on java 21
@@ -161,6 +_,10 @@
@@ -157,6 +_,10 @@
implementation("org.ow2.asm:asm-commons:9.8")
implementation("org.spongepowered:configurate-yaml:4.2.0")
@@ -82,7 +70,7 @@
// Deps that were previously in the API but have now been moved here for backwards compat, eventually to be removed
runtimeOnly("commons-lang:commons-lang:2.6")
runtimeOnly("org.xerial:sqlite-jdbc:3.49.1.0")
@@ -205,14 +_,14 @@
@@ -201,14 +_,14 @@
val gitBranch = git.exec(providers, "rev-parse", "--abbrev-ref", "HEAD").get().trim()
attributes(
"Main-Class" to "org.bukkit.craftbukkit.Main",
@@ -102,7 +90,7 @@
"Build-Number" to (build ?: ""),
"Build-Time" to buildTime.toString(),
"Git-Branch" to gitBranch,
@@ -271,7 +_,7 @@
@@ -267,7 +_,7 @@
jvmArgumentProviders.add(provider)
}
@@ -111,10 +99,21 @@
idea {
module {
generatedSourceDirs.add(generatedDir.toFile())
@@ -374,6 +_,46 @@
classpath(tasks.createReobfPaperclipJar.flatMap { it.outputZip })
@@ -359,7 +_,7 @@
mainClass.set(null as String?)
}
-fill {
+/* fill { // Purpur - we don't use fill
project("paper")
versionFamily(paperweight.minecraftVersion.map { it.split(".", "-").takeWhile { part -> part.toIntOrNull() != null }.take(2).joinToString(".") })
version(paperweight.minecraftVersion)
@@ -374,4 +_,44 @@
}
}
}
-}
+} */ // Purpur - we don't use fill
+
+// tasks.register("rebuildMinecraftSourcesWithGit") {
+// group = "temp"
@@ -155,6 +154,3 @@
+//
+// return files.size
+// }
fill {
project("paper")

View File

@@ -1,6 +1,6 @@
--- a/net/minecraft/server/MinecraftServer.java
+++ b/net/minecraft/server/MinecraftServer.java
@@ -290,6 +_,7 @@
@@ -291,6 +_,7 @@
public joptsimple.OptionSet options;
public org.bukkit.command.ConsoleCommandSender console;
public static int currentTick; // Paper - improve tick loop
@@ -8,7 +8,7 @@
public java.util.Queue<Runnable> processQueue = new java.util.concurrent.ConcurrentLinkedQueue<Runnable>();
public int autosavePeriod;
// Paper - don't store the vanilla dispatcher
@@ -300,7 +_,7 @@
@@ -301,7 +_,7 @@
public static final int TICK_TIME = 1000000000 / MinecraftServer.TPS;
private static final int SAMPLE_INTERVAL = 20; // Paper - improve server tick loop
@Deprecated(forRemoval = true) // Paper
@@ -17,7 +17,7 @@
// Spigot end
public volatile boolean hasFullyShutdown; // Paper - Improved watchdog support
public volatile boolean abnormalExit; // Paper - Improved watchdog support
@@ -309,6 +_,8 @@
@@ -310,6 +_,8 @@
public boolean isIteratingOverLevels = false; // Paper - Throw exception on world create while being ticked
private final Set<String> pluginsBlockingSleep = new java.util.HashSet<>(); // Paper - API to allow/disallow tick sleeping
public static final long SERVER_INIT = System.nanoTime(); // Paper - Lag compensation
@@ -26,7 +26,7 @@
public static <S extends MinecraftServer> S spin(Function<Thread, S> threadFunction) {
AtomicReference<S> atomicReference = new AtomicReference<>();
@@ -923,6 +_,15 @@
@@ -927,6 +_,15 @@
LOGGER.info("Stopping server");
Commands.COMMAND_SENDING_POOL.shutdownNow(); // Paper - Perf: Async command map building; Shutdown and don't bother finishing
@@ -42,7 +42,7 @@
// CraftBukkit start
if (this.server != null) {
this.server.spark.disable(); // Paper - spark
@@ -1021,6 +_,8 @@
@@ -1025,6 +_,8 @@
this.safeShutdown(waitForServer, false);
}
public void safeShutdown(boolean waitForServer, boolean isRestarting) {
@@ -51,7 +51,7 @@
this.isRestarting = isRestarting;
this.hasLoggedStop = true; // Paper - Debugging
if (isDebugging()) io.papermc.paper.util.TraceUtil.dumpTraceForThread("Server stopped"); // Paper - Debugging
@@ -1040,6 +_,7 @@
@@ -1044,6 +_,7 @@
private static final long MAX_CATCHUP_BUFFER = TICK_TIME * TPS * 60L;
private long lastTick = 0;
private long catchupTime = 0;
@@ -59,7 +59,7 @@
public final RollingAverage tps1 = new RollingAverage(60);
public final RollingAverage tps5 = new RollingAverage(60 * 5);
public final RollingAverage tps15 = new RollingAverage(60 * 15);
@@ -1126,6 +_,16 @@
@@ -1130,6 +_,16 @@
}
// Paper end - Add onboarding message for initial server start
@@ -76,7 +76,7 @@
while (this.running) {
long l;
if (!this.isPaused() && this.tickRateManager.isSprinting() && this.tickRateManager.checkShouldSprintThisTick()) {
@@ -1150,14 +_,19 @@
@@ -1154,14 +_,19 @@
if (++MinecraftServer.currentTick % MinecraftServer.SAMPLE_INTERVAL == 0) {
final long diff = currentTime - tickSection;
final java.math.BigDecimal currentTps = TPS_BASE.divide(new java.math.BigDecimal(diff), 30, java.math.RoundingMode.HALF_UP);
@@ -99,7 +99,7 @@
tickSection = currentTime;
}
// Paper end - further improve server tick loop
@@ -1189,6 +_,12 @@
@@ -1193,6 +_,12 @@
profilerFiller.popPush("nextTickWait");
this.mayHaveDelayedTasks = true;
this.delayedTasksMaxNextTickTimeNanos = Math.max(Util.getNanos() + l, this.nextTickTimeNanos);
@@ -112,7 +112,7 @@
this.startMeasuringTaskExecutionTime();
this.waitUntilNextTick();
this.finishMeasuringTaskExecutionTime();
@@ -1634,7 +_,7 @@
@@ -1627,7 +_,7 @@
long worldTime = level.getGameTime();
final ClientboundSetTimePacket worldPacket = new ClientboundSetTimePacket(worldTime, dayTime, doDaylight);
for (Player entityhuman : level.players()) {
@@ -121,7 +121,7 @@
continue;
}
ServerPlayer entityplayer = (ServerPlayer) entityhuman;
@@ -1805,7 +_,7 @@
@@ -1799,7 +_,7 @@
@DontObfuscate
public String getServerModName() {

View File

@@ -1,6 +1,6 @@
--- a/net/minecraft/server/level/ServerPlayerGameMode.java
+++ b/net/minecraft/server/level/ServerPlayerGameMode.java
@@ -367,6 +_,7 @@
@@ -368,6 +_,7 @@
}
return false;
}
@@ -8,7 +8,7 @@
}
// CraftBukkit end
@@ -484,6 +_,7 @@
@@ -485,6 +_,7 @@
public InteractionHand interactHand;
public ItemStack interactItemStack;
public InteractionResult useItemOn(ServerPlayer player, Level level, ItemStack stack, InteractionHand hand, BlockHitResult hitResult) {
@@ -16,7 +16,7 @@
BlockPos blockPos = hitResult.getBlockPos();
BlockState blockState = level.getBlockState(blockPos);
boolean cancelledBlock = false;
@@ -526,7 +_,7 @@
@@ -527,7 +_,7 @@
boolean flag = !player.getMainHandItem().isEmpty() || !player.getOffhandItem().isEmpty();
boolean flag1 = player.isSecondaryUseActive() && flag;
ItemStack itemStack = stack.copy();
@@ -25,7 +25,7 @@
InteractionResult interactionResult = blockState.useItemOn(player.getItemInHand(hand), level, player, hand, hitResult);
if (interactionResult.consumesAction()) {
CriteriaTriggers.ITEM_USED_ON_BLOCK.trigger(player, blockPos, itemStack);
@@ -572,4 +_,18 @@
@@ -573,4 +_,18 @@
public void setLevel(ServerLevel serverLevel) {
this.level = serverLevel;
}

View File

@@ -22,7 +22,7 @@
@Override
protected void registerGoals() {
this.goalSelector.addGoal(1, new LookAtPlayerGoal(this, Player.class, 8.0F, 0.02F, true));
@@ -461,11 +_,21 @@
@@ -457,11 +_,21 @@
private void hitByShulkerBullet() {
Vec3 vec3 = this.position();
AABB boundingBox = this.getBoundingBox();
@@ -48,7 +48,7 @@
if (shulker != null) {
shulker.setVariant(this.getVariant());
shulker.snapTo(vec3);
@@ -573,7 +_,7 @@
@@ -569,7 +_,7 @@
}
public Optional<DyeColor> getVariant() {

View File

@@ -43,7 +43,7 @@
public int getDamageValue() {
return Mth.clamp(this.getOrDefault(DataComponents.DAMAGE, 0), 0, this.getMaxDamage());
}
@@ -1203,6 +_,12 @@
@@ -1209,6 +_,12 @@
public boolean isEnchanted() {
return !this.getOrDefault(DataComponents.ENCHANTMENTS, ItemEnchantments.EMPTY).isEmpty();
}

View File

@@ -1,6 +1,6 @@
--- a/net/minecraft/world/level/Level.java
+++ b/net/minecraft/world/level/Level.java
@@ -164,11 +_,55 @@
@@ -165,11 +_,55 @@
}
// Paper end - add paper world config
@@ -56,7 +56,7 @@
public CraftWorld getWorld() {
return this.world;
}
@@ -843,6 +_,8 @@
@@ -845,6 +_,8 @@
// Paper end - getblock optimisations - cache world height/sections
this.spigotConfig = new org.spigotmc.SpigotWorldConfig(((net.minecraft.world.level.storage.PrimaryLevelData) levelData).getLevelName()); // Spigot
this.paperConfig = paperWorldConfigCreator.apply(this.spigotConfig); // Paper - create paper world config
@@ -65,7 +65,7 @@
this.generator = generator;
this.world = new CraftWorld((ServerLevel) this, generator, biomeProvider, environment);
@@ -2108,4 +_,14 @@
@@ -2112,4 +_,14 @@
return this.id;
}
}

View File

@@ -1,6 +1,6 @@
--- a/net/minecraft/world/level/NaturalSpawner.java
+++ b/net/minecraft/world/level/NaturalSpawner.java
@@ -208,7 +_,7 @@
@@ -263,7 +_,7 @@
mutableBlockPos.set(x, y, z);
double d = x + 0.5;
double d1 = z + 0.5;

View File

@@ -1,6 +1,6 @@
--- a/net/minecraft/world/level/block/entity/BlockEntity.java
+++ b/net/minecraft/world/level/block/entity/BlockEntity.java
@@ -106,6 +_,10 @@
@@ -107,6 +_,10 @@
input.read("PublicBukkitValues", CompoundTag.CODEC)
.ifPresent(this.persistentDataContainer::putAll);
// Paper end - read persistent data container
@@ -11,7 +11,7 @@
}
public final void loadWithComponents(ValueInput input) {
@@ -118,6 +_,11 @@
@@ -119,6 +_,11 @@
}
protected void saveAdditional(ValueOutput output) {
@@ -23,7 +23,7 @@
}
public final CompoundTag saveWithFullMetadata(HolderLookup.Provider registries) {
@@ -406,4 +_,17 @@
@@ -408,4 +_,17 @@
return this.blockEntity.getNameForReporting() + "@" + this.blockEntity.getBlockPos();
}
}

View File

@@ -5,7 +5,7 @@ Subject: [PATCH] Ridables
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java
index 6f3f8f6f50437a0d0cec971c9290bc12f3824da8..b829cb03ff78a5ec252e1c7e27740ac489a4bb3d 100644
index 60f1eba8751a0142cecbea379002ffe475107aa7..ae850c7366e438e5721f0914b48a1e36408e8917 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java
@@ -1345,4 +1345,26 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity {
@@ -36,10 +36,10 @@ index 6f3f8f6f50437a0d0cec971c9290bc12f3824da8..b829cb03ff78a5ec252e1c7e27740ac4
+ // Purpur end - Ridables
}
diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
index 437d2add0b901baefee056daf4b5ed8694e8e467..1cc45ebaaac7cc503fb72531d881d7d3e59e2db3 100644
index e16a347e673cdb431c18010e6a01eacfc674c09f..07723b1c68580c6e47a39235bd75ade560aeca5d 100644
--- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
+++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
@@ -515,6 +515,15 @@ public class CraftEventFactory {
@@ -516,6 +516,15 @@ public class CraftEventFactory {
}
craftServer.getPluginManager().callEvent(event);
@@ -55,7 +55,7 @@ index 437d2add0b901baefee056daf4b5ed8694e8e467..1cc45ebaaac7cc503fb72531d881d7d3
return event;
}
@@ -1047,6 +1056,7 @@ public class CraftEventFactory {
@@ -1048,6 +1057,7 @@ public class CraftEventFactory {
EntityDamageEvent event;
if (damager != null) {
event = new EntityDamageByEntityEvent(damager.getBukkitEntity(), damagee.getBukkitEntity(), cause, bukkitDamageSource, modifiers, modifierFunctions, critical);

View File

@@ -17,7 +17,7 @@ You should have received a copy of the GNU General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java
index b829cb03ff78a5ec252e1c7e27740ac489a4bb3d..b1ffaeb5e4f0ac6adb600d2025b1f0cac2513dc2 100644
index ae850c7366e438e5721f0914b48a1e36408e8917..e5d23a8d571fda492bc6dd6ee6694f175ff30ba1 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java
@@ -314,6 +314,7 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity {
@@ -29,10 +29,10 @@ index b829cb03ff78a5ec252e1c7e27740ac489a4bb3d..b1ffaeb5e4f0ac6adb600d2025b1f0ca
}
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
index acd531bf2d5c5040bf5e2ec2c8b880e3e8e2bc94..34498acf68e577c3654f46898c9f7d4eb1f9e9ef 100644
index 33908430c27e8590b6509a1dea456b44ebb665c1..0d93eb5c28570c0d82846f3dfaeac28e94cb420c 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
@@ -1476,6 +1476,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player, PluginMessa
@@ -1424,6 +1424,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player, PluginMessa
// Paper start - Teleport passenger API
// Don't allow teleporting between worlds while keeping passengers
if (ignorePassengers && entity.isVehicle() && location.getWorld() != this.getWorld()) {
@@ -40,7 +40,7 @@ index acd531bf2d5c5040bf5e2ec2c8b880e3e8e2bc94..34498acf68e577c3654f46898c9f7d4e
return false;
}
@@ -1497,6 +1498,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player, PluginMessa
@@ -1445,6 +1446,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player, PluginMessa
}
if (entity.isVehicle() && !ignorePassengers) { // Paper - Teleport API

View File

@@ -6,7 +6,7 @@ Subject: [PATCH] API for any mob to burn daylight
Co-authored by: Encode42 <me@encode42.dev>
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java
index b1ffaeb5e4f0ac6adb600d2025b1f0cac2513dc2..2d77ac2082c80b5e0d61e57ceaaddc0d57600a4b 100644
index e5d23a8d571fda492bc6dd6ee6694f175ff30ba1..5e46428e5dd24c581c816125b52cb32de087d5f4 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java
@@ -125,6 +125,13 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity {
@@ -24,10 +24,10 @@ index b1ffaeb5e4f0ac6adb600d2025b1f0cac2513dc2..2d77ac2082c80b5e0d61e57ceaaddc0d
Preconditions.checkArgument(entity != null, "Unknown entity");
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java
index c7605b0d7dc6797913067400902eb1a21df1b962..b15d68f583165ec950dfe039834f46a5491d2fcc 100644
index 1ed274542d32a5efbf8af4d5a0f197c98902f810..1e79357a3f31efd479720e78821962e5d6ff6db4 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java
@@ -1169,4 +1169,16 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity {
@@ -1142,4 +1142,16 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity {
public CombatTracker getCombatTracker() {
return this.getHandle().getCombatTracker().paperCombatTracker;
}

View File

@@ -1,7 +1,7 @@
--- a/src/main/java/com/destroystokyo/paper/entity/ai/MobGoalHelper.java
+++ b/src/main/java/com/destroystokyo/paper/entity/ai/MobGoalHelper.java
@@ -144,6 +_,11 @@
private static final Map<String, String> NESTED_CLASS_NAMES = Util.make(new HashMap<>(), map -> {
@@ -143,6 +_,11 @@
private static final Map<String, String> RENAMES = Util.make(new HashMap<>(), map -> {
map.put("AbstractSkeleton$1", "AbstractSkeletonMelee");
+ // Purpur start - Add option to disable zombie aggressiveness towards villagers

View File

@@ -1,6 +1,6 @@
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
@@ -417,6 +_,20 @@
@@ -416,6 +_,20 @@
this.paperPluginManager = new io.papermc.paper.plugin.manager.PaperPluginManagerImpl(this, this.commandMap, pluginManager);
this.pluginManager.paperPluginManager = this.paperPluginManager;
// Paper end
@@ -21,7 +21,7 @@
CraftRegistry.setMinecraftRegistry(console.registryAccess());
@@ -1029,6 +_,7 @@
@@ -992,6 +_,7 @@
org.spigotmc.SpigotConfig.init((File) this.console.options.valueOf("spigot-settings")); // Spigot
this.console.paperConfigurations.reloadConfigs(this.console);
@@ -29,7 +29,7 @@
for (ServerLevel world : this.console.getAllLevels()) {
// world.serverLevelData.setDifficulty(config.difficulty); // Paper - per level difficulty
world.setSpawnSettings(world.serverLevelData.getDifficulty() != Difficulty.PEACEFUL && world.getGameRules().getBoolean(GameRules.RULE_SPAWN_MONSTERS)); // Paper - per level difficulty (from MinecraftServer#setDifficulty(ServerLevel, Difficulty, boolean))
@@ -1044,6 +_,7 @@
@@ -1007,6 +_,7 @@
}
}
world.spigotConfig.init(); // Spigot
@@ -37,7 +37,7 @@
}
Plugin[] pluginClone = pluginManager.getPlugins().clone(); // Paper
@@ -1061,6 +_,7 @@
@@ -1024,6 +_,7 @@
org.spigotmc.SpigotConfig.registerCommands(); // Spigot
io.papermc.paper.command.PaperCommands.registerCommands(this.console); // Paper
this.spark.registerCommandBeforePlugins(this); // Paper - spark
@@ -45,7 +45,7 @@
this.overrideAllCommandBlockCommands = this.commandsConfiguration.getStringList("command-block-overrides").contains("*");
this.ignoreVanillaPermissions = this.commandsConfiguration.getBoolean("ignore-vanilla-permissions");
@@ -1526,6 +_,60 @@
@@ -1482,6 +_,60 @@
return true;
}
@@ -106,7 +106,7 @@
@Override
public List<Recipe> getRecipesFor(ItemStack result) {
Preconditions.checkArgument(result != null, "ItemStack cannot be null");
@@ -2827,6 +_,18 @@
@@ -2725,6 +_,18 @@
return CraftServer.this.console.paperConfigurations.createLegacyObject(CraftServer.this.console);
}
@@ -125,7 +125,7 @@
@Override
public void restart() {
CraftServer.this.restart();
@@ -2859,6 +_,7 @@
@@ -2757,6 +_,7 @@
@Override
public double[] getTPS() {
return new double[] {
@@ -133,7 +133,7 @@
net.minecraft.server.MinecraftServer.getServer().tps1.getAverage(),
net.minecraft.server.MinecraftServer.getServer().tps5.getAverage(),
net.minecraft.server.MinecraftServer.getServer().tps15.getAverage()
@@ -3066,4 +_,18 @@
@@ -2964,4 +_,18 @@
public void allowPausing(final Plugin plugin, final boolean value) {
this.console.addPluginAllowingSleep(plugin.getName(), value);
}

View File

@@ -1,6 +1,6 @@
--- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
@@ -2379,6 +_,50 @@
@@ -1954,6 +_,50 @@
return (this.getHandle().getDragonFight() == null) ? null : new CraftDragonBattle(this.getHandle().getDragonFight());
}

View File

@@ -1,6 +1,6 @@
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java
@@ -294,6 +_,7 @@
@@ -289,6 +_,7 @@
@Override
public void recalculatePermissions() {
this.perm.recalculatePermissions();

View File

@@ -1,6 +1,6 @@
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java
@@ -516,7 +_,7 @@
@@ -506,7 +_,7 @@
net.minecraft.server.level.ServerPlayer nmsKiller = killer == null ? null : ((CraftPlayer) killer).getHandle();
this.getHandle().setLastHurtByMob(nmsKiller);
if (nmsKiller != null) {

View File

@@ -15,9 +15,9 @@
- this.getHandle().listName = name.equals(this.getName()) ? null : CraftChatMessage.fromStringOrNull(name);
+ this.getHandle().listName = name.equals(this.getName()) ? null : useMM ? io.papermc.paper.adventure.PaperAdventure.asVanilla(net.kyori.adventure.text.minimessage.MiniMessage.miniMessage().deserialize(name)) : CraftChatMessage.fromStringOrNull(name); // Purpur - AFK API
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 : this.server.getHandle().players) {
if (player.getBukkitEntity().canSee(this)) {
@@ -1025,6 +_,78 @@
@@ -978,6 +_,78 @@
}
}
@@ -94,9 +94,9 @@
+ // Purpur end - Death screen API
+
@Override
public void sendBlockDamage(Location loc, float progress) {
this.sendBlockDamage(loc, progress, this.getEntityId());
@@ -2695,6 +_,28 @@
public void sendBlockDamage(Location loc, float progress, org.bukkit.entity.Entity source) {
Preconditions.checkArgument(source != null, "source must not be null");
@@ -2590,6 +_,28 @@
public float getWalkSpeed() {
return this.getHandle().getAbilities().walkingSpeed * 2f;
}