Updated Upstream (Paper)

Upstream has released updates that appear to apply and compile correctly

Paper Changes:
PaperMC/Paper@9e873f50 Fix inconsistencies between offline/online spawn position getter (#11960)
PaperMC/Paper@fc0c3717 Fix handling of resultant crafting container from craftItemResult (#12307)
PaperMC/Paper@a7a76c8f Add methods for Armadillo (#12031)
PaperMC/Paper@a74400d9 Update adventure to 4.21.0 (#12499)
PaperMC/Paper@1e930763 Fix ipv6 loopback addresses being able to get connection throttled (#12155)
PaperMC/Paper@646b80ca Fix unnecessary map data saves (#12296)
PaperMC/Paper@e663f999 Add combat tracker API (#11853)
PaperMC/Paper@cd4fe5b7 [ci/skip] Drop non-applicable ATs (#12498)
PaperMC/Paper@5acfdd6a Fix save/load NaN Entity Motion (#12269)
PaperMC/Paper@2754d7c3 Add Throw EntityChangeBlockEvent for BrushableBlockEntity#brush (#12133)
PaperMC/Paper@567f63ae Parity for respawn events (#11792)
This commit is contained in:
granny
2025-04-30 17:34:43 -07:00
parent 4fdf1d117c
commit 8c77678e81
16 changed files with 54 additions and 54 deletions

View File

@@ -2,7 +2,7 @@ group = org.purpurmc.purpur
version = 1.21.5-R0.1-SNAPSHOT version = 1.21.5-R0.1-SNAPSHOT
mcVersion = 1.21.5 mcVersion = 1.21.5
paperCommit = 02d20ff7eb62ceae608ff8d0ed5f75516828e787 paperCommit = 567f63ae3451d8232fe4c76a12cce0c0cb139d80
org.gradle.configuration-cache = true org.gradle.configuration-cache = true
org.gradle.caching = true org.gradle.caching = true

View File

@@ -1,6 +1,6 @@
--- a/paper-api/build.gradle.kts --- a/paper-api/build.gradle.kts
+++ b/paper-api/build.gradle.kts +++ b/paper-api/build.gradle.kts
@@ -93,7 +_,7 @@ @@ -90,7 +_,7 @@
testRuntimeOnly("org.junit.platform:junit-platform-launcher") testRuntimeOnly("org.junit.platform:junit-platform-launcher")
} }
@@ -9,7 +9,7 @@
idea { idea {
module { module {
generatedSourceDirs.add(generatedDir.toFile()) generatedSourceDirs.add(generatedDir.toFile())
@@ -103,6 +_,18 @@ @@ -100,6 +_,18 @@
main { main {
java { java {
srcDir(generatedDir) srcDir(generatedDir)
@@ -28,7 +28,7 @@
} }
} }
} }
@@ -168,8 +_,10 @@ @@ -165,8 +_,10 @@
val services = objects.newInstance<Services>() val services = objects.newInstance<Services>()
tasks.withType<Javadoc> { tasks.withType<Javadoc> {
@@ -40,7 +40,7 @@
options.use() options.use()
options.isDocFilesSubDirs = true options.isDocFilesSubDirs = true
options.links( options.links(
@@ -202,11 +_,11 @@ @@ -199,11 +_,11 @@
} }
// workaround for https://github.com/gradle/gradle/issues/4046 // workaround for https://github.com/gradle/gradle/issues/4046

View File

@@ -1,6 +1,6 @@
--- a/src/main/java/org/bukkit/OfflinePlayer.java --- a/src/main/java/org/bukkit/OfflinePlayer.java
+++ b/src/main/java/org/bukkit/OfflinePlayer.java +++ b/src/main/java/org/bukkit/OfflinePlayer.java
@@ -570,4 +_,104 @@ @@ -585,4 +_,104 @@
@Override @Override
io.papermc.paper.persistence.PersistentDataContainerView getPersistentDataContainer(); io.papermc.paper.persistence.PersistentDataContainerView getPersistentDataContainer();
// Paper end - add pdc to offline player // Paper end - add pdc to offline player

View File

@@ -1,9 +1,9 @@
--- a/src/main/java/org/bukkit/entity/LivingEntity.java --- a/src/main/java/org/bukkit/entity/LivingEntity.java
+++ b/src/main/java/org/bukkit/entity/LivingEntity.java +++ b/src/main/java/org/bukkit/entity/LivingEntity.java
@@ -1452,4 +_,20 @@ @@ -1463,4 +_,20 @@
*/ */
boolean canUseEquipmentSlot(org.bukkit.inventory.@NotNull EquipmentSlot slot); @ApiStatus.Experimental
// Paper end - Expose canUseSlot @NotNull CombatTracker getCombatTracker();
+ +
+ // Purpur start - API for any mob to burn daylight + // Purpur start - API for any mob to burn daylight
+ /** + /**

View File

@@ -1,6 +1,6 @@
--- a/src/main/java/org/bukkit/entity/Player.java --- a/src/main/java/org/bukkit/entity/Player.java
+++ b/src/main/java/org/bukkit/entity/Player.java +++ b/src/main/java/org/bukkit/entity/Player.java
@@ -3896,4 +_,123 @@ @@ -3910,4 +_,123 @@
* @param score New death screen score of player * @param score New death screen score of player
*/ */
void setDeathScreenScore(int score); void setDeathScreenScore(int score);

View File

@@ -42,7 +42,7 @@ index f61521a4d57c73fb65f1f314ff6061cf63943e82..d8a8e6d006d18de5ec148a0d9d6f08a6
@Override @Override
public @Nullable LevelChunk getChunkIfLoaded(int x, int z) { public @Nullable LevelChunk getChunkIfLoaded(int x, int z) {
diff --git a/net/minecraft/server/level/ServerPlayer.java b/net/minecraft/server/level/ServerPlayer.java diff --git a/net/minecraft/server/level/ServerPlayer.java b/net/minecraft/server/level/ServerPlayer.java
index 4944989e535295a24ddff28a812c5eda700427e0..4ffe5bbf79d2df0b2b8c563b4f224ab120e3396a 100644 index 1879c2a15e3f28f5d4687d098c832671f342806f..5b396f22a9607f95fbc2fc505f92f9a72d4fcae0 100644
--- a/net/minecraft/server/level/ServerPlayer.java --- a/net/minecraft/server/level/ServerPlayer.java
+++ b/net/minecraft/server/level/ServerPlayer.java +++ b/net/minecraft/server/level/ServerPlayer.java
@@ -800,6 +800,15 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc @@ -800,6 +800,15 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc
@@ -75,10 +75,10 @@ index 57660e97b76c2c1e39a61f661e9621352b0963ae..08b7b7c8721595c56c562de1fe17a1bc
if ((target instanceof net.minecraft.world.entity.animal.Bucketable && target instanceof LivingEntity && origItem != null && origItem == Items.WATER_BUCKET) && (event.isCancelled() || ServerGamePacketListenerImpl.this.player.getInventory().getSelectedItem().isEmpty() || !ServerGamePacketListenerImpl.this.player.getInventory().getSelectedItem().is(origItem))) { if ((target instanceof net.minecraft.world.entity.animal.Bucketable && target instanceof LivingEntity && origItem != null && origItem == Items.WATER_BUCKET) && (event.isCancelled() || ServerGamePacketListenerImpl.this.player.getInventory().getSelectedItem().isEmpty() || !ServerGamePacketListenerImpl.this.player.getInventory().getSelectedItem().is(origItem))) {
target.resendPossiblyDesyncedEntityData(ServerGamePacketListenerImpl.this.player); // Paper - The entire mob gets deleted, so resend it target.resendPossiblyDesyncedEntityData(ServerGamePacketListenerImpl.this.player); // Paper - The entire mob gets deleted, so resend it
diff --git a/net/minecraft/world/entity/Entity.java b/net/minecraft/world/entity/Entity.java diff --git a/net/minecraft/world/entity/Entity.java b/net/minecraft/world/entity/Entity.java
index 500e542fa81de7b14cd86c23ce039951d8dc0f95..1edca56b4bf880460148d00b98225fc34bd15f17 100644 index 6c1dcbb9fff2ce8bb88e16d47dab7656c70f7367..bf50fa4694c693713db8c54c4a9b87d8d9a169cd 100644
--- a/net/minecraft/world/entity/Entity.java --- a/net/minecraft/world/entity/Entity.java
+++ b/net/minecraft/world/entity/Entity.java +++ b/net/minecraft/world/entity/Entity.java
@@ -3093,6 +3093,13 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess @@ -3094,6 +3094,13 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
this.passengers = ImmutableList.copyOf(list); this.passengers = ImmutableList.copyOf(list);
} }
@@ -92,7 +92,7 @@ index 500e542fa81de7b14cd86c23ce039951d8dc0f95..1edca56b4bf880460148d00b98225fc3
this.gameEvent(GameEvent.ENTITY_MOUNT, passenger); this.gameEvent(GameEvent.ENTITY_MOUNT, passenger);
} }
} }
@@ -3134,6 +3141,14 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess @@ -3135,6 +3142,14 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
return false; return false;
} }
// CraftBukkit end // CraftBukkit end
@@ -107,7 +107,7 @@ index 500e542fa81de7b14cd86c23ce039951d8dc0f95..1edca56b4bf880460148d00b98225fc3
if (this.passengers.size() == 1 && this.passengers.get(0) == passenger) { if (this.passengers.size() == 1 && this.passengers.get(0) == passenger) {
this.passengers = ImmutableList.of(); this.passengers = ImmutableList.of();
} else { } else {
@@ -5136,4 +5151,44 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess @@ -5137,4 +5152,44 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
return ((ServerLevel) this.level()).isPositionEntityTicking(this.blockPosition()); return ((ServerLevel) this.level()).isPositionEntityTicking(this.blockPosition());
} }
// Paper end - Expose entity id counter // Paper end - Expose entity id counter

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] Barrels and enderchests 6 rows
diff --git a/net/minecraft/server/players/PlayerList.java b/net/minecraft/server/players/PlayerList.java diff --git a/net/minecraft/server/players/PlayerList.java b/net/minecraft/server/players/PlayerList.java
index fbac24945a4100515c78ced2c30e09ec2f6787bf..2a4c20c74fefe891cba74d2c8b83b01a53067fb5 100644 index f7b12d5924005a24899aef11746b9f056fac3559..aaebaa42eef53af8a8c1606b79caf6bb4a99f4f9 100644
--- a/net/minecraft/server/players/PlayerList.java --- a/net/minecraft/server/players/PlayerList.java
+++ b/net/minecraft/server/players/PlayerList.java +++ b/net/minecraft/server/players/PlayerList.java
@@ -1029,6 +1029,27 @@ public abstract class PlayerList { @@ -1041,6 +1041,27 @@ public abstract class PlayerList {
player.getBukkitEntity().recalculatePermissions(); // CraftBukkit player.getBukkitEntity().recalculatePermissions(); // CraftBukkit
this.server.getCommands().sendCommands(player); this.server.getCommands().sendCommands(player);
} // Paper - Add sendOpLevel API } // Paper - Add sendOpLevel API

View File

@@ -54,7 +54,7 @@
Entity entity = damageSource.getEntity(); Entity entity = damageSource.getEntity();
if (!( // Paper - split the if statement. If below statement is false, hurtServer would not have been evaluated. Return false. if (!( // Paper - split the if statement. If below statement is false, hurtServer would not have been evaluated. Return false.
!(entity instanceof Player player && !this.canHarmPlayer(player)) !(entity instanceof Player player && !this.canHarmPlayer(player))
@@ -1397,6 +_,7 @@ @@ -1392,6 +_,7 @@
serverLevel.removePlayerImmediately(this, Entity.RemovalReason.CHANGED_DIMENSION); serverLevel.removePlayerImmediately(this, Entity.RemovalReason.CHANGED_DIMENSION);
this.unsetRemoved(); this.unsetRemoved();
// CraftBukkit end // CraftBukkit end
@@ -62,7 +62,7 @@
this.setServerLevel(level); this.setServerLevel(level);
this.connection.internalTeleport(PositionMoveRotation.of(teleportTransition), teleportTransition.relatives()); // CraftBukkit - use internal teleport without event this.connection.internalTeleport(PositionMoveRotation.of(teleportTransition), teleportTransition.relatives()); // CraftBukkit - use internal teleport without event
this.connection.resetPosition(); this.connection.resetPosition();
@@ -1514,7 +_,7 @@ @@ -1509,7 +_,7 @@
new AABB(vec3.x() - 8.0, vec3.y() - 5.0, vec3.z() - 8.0, vec3.x() + 8.0, vec3.y() + 5.0, vec3.z() + 8.0), new AABB(vec3.x() - 8.0, vec3.y() - 5.0, vec3.z() - 8.0, vec3.x() + 8.0, vec3.y() + 5.0, vec3.z() + 8.0),
monster -> monster.isPreventingPlayerRest(this.serverLevel(), this) monster -> monster.isPreventingPlayerRest(this.serverLevel(), this)
); );
@@ -71,7 +71,7 @@
return Either.left(Player.BedSleepingProblem.NOT_SAFE); return Either.left(Player.BedSleepingProblem.NOT_SAFE);
} }
} }
@@ -1551,7 +_,19 @@ @@ -1546,7 +_,19 @@
CriteriaTriggers.SLEPT_IN_BED.trigger(this); CriteriaTriggers.SLEPT_IN_BED.trigger(this);
}); });
if (!this.serverLevel().canSleepThroughNights()) { if (!this.serverLevel().canSleepThroughNights()) {
@@ -92,7 +92,7 @@
} }
((ServerLevel)this.level()).updateSleepingPlayerList(); ((ServerLevel)this.level()).updateSleepingPlayerList();
@@ -1643,6 +_,7 @@ @@ -1638,6 +_,7 @@
@Override @Override
public void openTextEdit(SignBlockEntity signEntity, boolean isFrontText) { public void openTextEdit(SignBlockEntity signEntity, boolean isFrontText) {
@@ -100,7 +100,7 @@
this.connection.send(new ClientboundBlockUpdatePacket(this.level(), signEntity.getBlockPos())); this.connection.send(new ClientboundBlockUpdatePacket(this.level(), signEntity.getBlockPos()));
this.connection.send(new ClientboundOpenSignEditorPacket(signEntity.getBlockPos(), isFrontText)); this.connection.send(new ClientboundOpenSignEditorPacket(signEntity.getBlockPos(), isFrontText));
} }
@@ -1945,6 +_,26 @@ @@ -1940,6 +_,26 @@
this.lastSentExp = -1; // CraftBukkit - Added to reset this.lastSentExp = -1; // CraftBukkit - Added to reset
} }
@@ -127,7 +127,7 @@
@Override @Override
public void displayClientMessage(Component chatComponent, boolean actionBar) { public void displayClientMessage(Component chatComponent, boolean actionBar) {
this.sendSystemMessage(chatComponent, actionBar); this.sendSystemMessage(chatComponent, actionBar);
@@ -2162,6 +_,20 @@ @@ -2157,6 +_,20 @@
); );
} }
@@ -148,7 +148,7 @@
public void sendSystemMessage(Component mesage) { public void sendSystemMessage(Component mesage) {
this.sendSystemMessage(mesage, false); this.sendSystemMessage(mesage, false);
} }
@@ -2300,7 +_,67 @@ @@ -2295,7 +_,67 @@
public void resetLastActionTime() { public void resetLastActionTime() {
this.lastActionTime = Util.getMillis(); this.lastActionTime = Util.getMillis();
@@ -217,7 +217,7 @@
public ServerStatsCounter getStats() { public ServerStatsCounter getStats() {
return this.stats; return this.stats;
@@ -2928,4 +_,56 @@ @@ -2923,4 +_,56 @@
return (org.bukkit.craftbukkit.entity.CraftPlayer) super.getBukkitEntity(); return (org.bukkit.craftbukkit.entity.CraftPlayer) super.getBukkitEntity();
} }
// CraftBukkit end // CraftBukkit end

View File

@@ -25,7 +25,7 @@
event.disallow(org.bukkit.event.player.PlayerLoginEvent.Result.KICK_FULL, net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer.legacySection().deserialize(org.spigotmc.SpigotConfig.serverFullMessage)); // Spigot // Paper - Adventure event.disallow(org.bukkit.event.player.PlayerLoginEvent.Result.KICK_FULL, net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer.legacySection().deserialize(org.spigotmc.SpigotConfig.serverFullMessage)); // Spigot // Paper - Adventure
} }
} }
@@ -920,6 +_,20 @@ @@ -932,6 +_,20 @@
} }
} }
@@ -46,7 +46,7 @@
public void broadcastAll(Packet<?> packet, ResourceKey<Level> dimension) { public void broadcastAll(Packet<?> packet, ResourceKey<Level> dimension) {
for (ServerPlayer serverPlayer : this.players) { for (ServerPlayer serverPlayer : this.players) {
if (serverPlayer.level().dimension() == dimension) { if (serverPlayer.level().dimension() == dimension) {
@@ -1004,6 +_,7 @@ @@ -1016,6 +_,7 @@
} else { } else {
b = (byte)(24 + permLevel); b = (byte)(24 + permLevel);
} }

View File

@@ -1,6 +1,6 @@
--- a/net/minecraft/world/damagesource/CombatTracker.java --- a/net/minecraft/world/damagesource/CombatTracker.java
+++ b/net/minecraft/world/damagesource/CombatTracker.java +++ b/net/minecraft/world/damagesource/CombatTracker.java
@@ -55,7 +_,7 @@ @@ -62,7 +_,7 @@
private Component getMessageForAssistedFall(Entity entity, Component entityDisplayName, String hasWeaponTranslationKey, String noWeaponTranslationKey) { private Component getMessageForAssistedFall(Entity entity, Component entityDisplayName, String hasWeaponTranslationKey, String noWeaponTranslationKey) {
ItemStack itemStack = entity instanceof LivingEntity livingEntity ? livingEntity.getMainHandItem() : ItemStack.EMPTY; ItemStack itemStack = entity instanceof LivingEntity livingEntity ? livingEntity.getMainHandItem() : ItemStack.EMPTY;
@@ -9,7 +9,7 @@
? Component.translatable(hasWeaponTranslationKey, this.mob.getDisplayName(), entityDisplayName, itemStack.getDisplayName()) ? Component.translatable(hasWeaponTranslationKey, this.mob.getDisplayName(), entityDisplayName, itemStack.getDisplayName())
: Component.translatable(noWeaponTranslationKey, this.mob.getDisplayName(), entityDisplayName); : Component.translatable(noWeaponTranslationKey, this.mob.getDisplayName(), entityDisplayName);
} }
@@ -99,6 +_,15 @@ @@ -106,6 +_,15 @@
Component component = ComponentUtils.wrapInSquareBrackets(Component.translatable(string + ".link")).withStyle(INTENTIONAL_GAME_DESIGN_STYLE); Component component = ComponentUtils.wrapInSquareBrackets(Component.translatable(string + ".link")).withStyle(INTENTIONAL_GAME_DESIGN_STYLE);
return Component.translatable(string + ".message", this.mob.getDisplayName(), component); return Component.translatable(string + ".message", this.mob.getDisplayName(), component);
} else { } else {

View File

@@ -86,7 +86,7 @@
if (this.getVehicle() instanceof AbstractBoat abstractBoat && !abstractBoat.isUnderWater()) { if (this.getVehicle() instanceof AbstractBoat abstractBoat && !abstractBoat.isUnderWater()) {
this.wasTouchingWater = false; this.wasTouchingWater = false;
} else if (this.updateFluidHeightAndDoFluidPushing(FluidTags.WATER, 0.014)) { } else if (this.updateFluidHeightAndDoFluidPushing(FluidTags.WATER, 0.014)) {
@@ -2512,6 +_,13 @@ @@ -2513,6 +_,13 @@
compound.putBoolean("Paper.FreezeLock", true); compound.putBoolean("Paper.FreezeLock", true);
} }
// Paper end // Paper end
@@ -100,7 +100,7 @@
return compound; return compound;
} catch (Throwable var8) { } catch (Throwable var8) {
CrashReport crashReport = CrashReport.forThrowable(var8, "Saving entity NBT"); CrashReport crashReport = CrashReport.forThrowable(var8, "Saving entity NBT");
@@ -2629,6 +_,13 @@ @@ -2630,6 +_,13 @@
freezeLocked = compound.getBooleanOr("Paper.FreezeLock", false); freezeLocked = compound.getBooleanOr("Paper.FreezeLock", false);
} }
// Paper end // Paper end
@@ -114,7 +114,7 @@
} catch (Throwable var8) { } catch (Throwable var8) {
CrashReport crashReport = CrashReport.forThrowable(var8, "Loading entity NBT"); CrashReport crashReport = CrashReport.forThrowable(var8, "Loading entity NBT");
CrashReportCategory crashReportCategory = crashReport.addCategory("Entity being loaded"); CrashReportCategory crashReportCategory = crashReport.addCategory("Entity being loaded");
@@ -2857,6 +_,7 @@ @@ -2858,6 +_,7 @@
if (this.isAlive() && this instanceof Leashable leashable) { if (this.isAlive() && this instanceof Leashable leashable) {
if (leashable.getLeashHolder() == player) { if (leashable.getLeashHolder() == player) {
if (!this.level().isClientSide()) { if (!this.level().isClientSide()) {
@@ -122,7 +122,7 @@
// CraftBukkit start - fire PlayerUnleashEntityEvent // CraftBukkit start - fire PlayerUnleashEntityEvent
// Paper start - Expand EntityUnleashEvent // Paper start - Expand EntityUnleashEvent
org.bukkit.event.player.PlayerUnleashEntityEvent event = org.bukkit.craftbukkit.event.CraftEventFactory.callPlayerUnleashEntityEvent(this, player, hand, !player.hasInfiniteMaterials()); org.bukkit.event.player.PlayerUnleashEntityEvent event = org.bukkit.craftbukkit.event.CraftEventFactory.callPlayerUnleashEntityEvent(this, player, hand, !player.hasInfiniteMaterials());
@@ -3173,15 +_,18 @@ @@ -3174,15 +_,18 @@
return Vec3.directionFromRotation(this.getRotationVector()); return Vec3.directionFromRotation(this.getRotationVector());
} }
@@ -142,7 +142,7 @@
} }
} }
} }
@@ -3386,7 +_,7 @@ @@ -3387,7 +_,7 @@
} }
public int getMaxAirSupply() { public int getMaxAirSupply() {
@@ -151,7 +151,7 @@
} }
public int getAirSupply() { public int getAirSupply() {
@@ -3914,7 +_,7 @@ @@ -3915,7 +_,7 @@
// CraftBukkit end // CraftBukkit end
public boolean canUsePortal(boolean allowPassengers) { public boolean canUsePortal(boolean allowPassengers) {
@@ -160,7 +160,7 @@
} }
public boolean canTeleport(Level fromLevel, Level toLevel) { public boolean canTeleport(Level fromLevel, Level toLevel) {
@@ -4451,6 +_,12 @@ @@ -4452,6 +_,12 @@
return Mth.lerp(partialTick, this.yRotO, this.yRot); return Mth.lerp(partialTick, this.yRotO, this.yRot);
} }
@@ -173,7 +173,7 @@
// Paper start - optimise collisions // Paper start - optimise collisions
public boolean updateFluidHeightAndDoFluidPushing(final TagKey<Fluid> fluid, final double flowScale) { public boolean updateFluidHeightAndDoFluidPushing(final TagKey<Fluid> fluid, final double flowScale) {
if (this.touchingUnloadedChunk()) { if (this.touchingUnloadedChunk()) {
@@ -4859,7 +_,7 @@ @@ -4860,7 +_,7 @@
} }
public float maxUpStep() { public float maxUpStep() {

View File

@@ -24,12 +24,12 @@ index f48d9dbd75e62621f7e4c8cd11f9fd4084db9097..8feb78c4d7fa793f01991756b618fc49
Preconditions.checkArgument(entity != null, "Unknown entity"); 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 diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java
index 61750e2e36d7654a2284637c7b84908416705fe6..5b74ca7c52fb0437726a2a00483134884dc50b2f 100644 index 3527864c55862f9ab4ed2762c1a6606cf3240cc0..6d654afe8d9e2f90510e68904a6e90ac9269810b 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
@@ -1167,4 +1167,16 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity { @@ -1179,4 +1179,16 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity {
public boolean canUseEquipmentSlot(org.bukkit.inventory.EquipmentSlot slot) { public CombatTracker getCombatTracker() {
return this.getHandle().canUseSlot(org.bukkit.craftbukkit.CraftEquipmentSlot.getNMS(slot)); return this.combatTracker;
} }
+ +
+ // Purpur start - API for any mob to burn daylight + // Purpur start - API for any mob to burn daylight

View File

@@ -1,6 +1,6 @@
--- 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
@@ -339,6 +_,12 @@ @@ -336,6 +_,12 @@
@Override @Override
public Location getLocation() { public Location getLocation() {
@@ -13,7 +13,7 @@
CompoundTag data = this.getData(); CompoundTag data = this.getData();
if (data == null) { if (data == null) {
return null; return null;
@@ -571,4 +_,183 @@ @@ -573,4 +_,183 @@
manager.save(); manager.save();
} }
} }

View File

@@ -1,6 +1,6 @@
--- 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
@@ -424,6 +_,20 @@ @@ -425,6 +_,20 @@
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
@@ -21,7 +21,7 @@
CraftRegistry.setMinecraftRegistry(console.registryAccess()); CraftRegistry.setMinecraftRegistry(console.registryAccess());
@@ -1068,6 +_,7 @@ @@ -1069,6 +_,7 @@
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);
@@ -29,7 +29,7 @@
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))
@@ -1083,6 +_,7 @@ @@ -1084,6 +_,7 @@
} }
} }
world.spigotConfig.init(); // Spigot world.spigotConfig.init(); // Spigot
@@ -37,7 +37,7 @@
} }
Plugin[] pluginClone = pluginManager.getPlugins().clone(); // Paper Plugin[] pluginClone = pluginManager.getPlugins().clone(); // Paper
@@ -1100,6 +_,7 @@ @@ -1101,6 +_,7 @@
org.spigotmc.SpigotConfig.registerCommands(); // Spigot org.spigotmc.SpigotConfig.registerCommands(); // Spigot
io.papermc.paper.command.PaperCommands.registerCommands(this.console); // Paper io.papermc.paper.command.PaperCommands.registerCommands(this.console); // Paper
this.spark.registerCommandBeforePlugins(this); // Paper - spark this.spark.registerCommandBeforePlugins(this); // Paper - spark
@@ -45,7 +45,7 @@
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");
@@ -1599,6 +_,60 @@ @@ -1600,6 +_,60 @@
return true; return true;
} }
@@ -106,7 +106,7 @@
@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");
@@ -2951,6 +_,18 @@ @@ -2958,6 +_,18 @@
return CraftServer.this.console.paperConfigurations.createLegacyObject(CraftServer.this.console); return CraftServer.this.console.paperConfigurations.createLegacyObject(CraftServer.this.console);
} }
@@ -125,7 +125,7 @@
@Override @Override
public void restart() { public void restart() {
CraftServer.this.restart(); CraftServer.this.restart();
@@ -2983,6 +_,7 @@ @@ -2990,6 +_,7 @@
@Override @Override
public double[] getTPS() { public double[] getTPS() {
return new double[] { return new double[] {
@@ -133,7 +133,7 @@
net.minecraft.server.MinecraftServer.getServer().tps1.getAverage(), net.minecraft.server.MinecraftServer.getServer().tps1.getAverage(),
net.minecraft.server.MinecraftServer.getServer().tps5.getAverage(), net.minecraft.server.MinecraftServer.getServer().tps5.getAverage(),
net.minecraft.server.MinecraftServer.getServer().tps15.getAverage() net.minecraft.server.MinecraftServer.getServer().tps15.getAverage()
@@ -3190,4 +_,18 @@ @@ -3197,4 +_,18 @@
public void allowPausing(final Plugin plugin, final boolean value) { public void allowPausing(final Plugin plugin, final boolean value) {
this.console.addPluginAllowingSleep(plugin.getName(), value); this.console.addPluginAllowingSleep(plugin.getName(), value);
} }

View File

@@ -1,6 +1,6 @@
--- 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
@@ -520,7 +_,7 @@ @@ -527,7 +_,7 @@
net.minecraft.server.level.ServerPlayer nmsKiller = killer == null ? null : ((CraftPlayer) killer).getHandle(); net.minecraft.server.level.ServerPlayer nmsKiller = killer == null ? null : ((CraftPlayer) killer).getHandle();
this.getHandle().setLastHurtByMob(nmsKiller); this.getHandle().setLastHurtByMob(nmsKiller);
if (nmsKiller != null) { if (nmsKiller != null) {

View File

@@ -17,7 +17,7 @@
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)) {
@@ -2731,6 +_,28 @@ @@ -2732,6 +_,28 @@
return this.getHandle().getAbilities().walkingSpeed * 2f; return this.getHandle().getAbilities().walkingSpeed * 2f;
} }
@@ -46,7 +46,7 @@
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);
} }
@@ -3593,4 +_,76 @@ @@ -3594,4 +_,76 @@
public void setSimplifyContainerDesyncCheck(final boolean simplifyContainerDesyncCheck) { public void setSimplifyContainerDesyncCheck(final boolean simplifyContainerDesyncCheck) {
this.simplifyContainerDesyncCheck = simplifyContainerDesyncCheck; this.simplifyContainerDesyncCheck = simplifyContainerDesyncCheck;
} }