Updated Upstream (Paper)

Upstream has released updates that appear to apply and compile correctly

Paper Changes:
PaperMC/Paper@4a903d81 Readd dropped diff
PaperMC/Paper@4fe0ac24 Some more comments
PaperMC/Paper@19a36413 Last per file patches
PaperMC/Paper@e49b5e88 Fix compile issues:
PaperMC/Paper@1b30919a Fix
PaperMC/Paper@df964545 Fixup whatever happened here
PaperMC/Paper@5933bd5b TrialSpawner compile fixes
PaperMC/Paper@20136f71 Some initial adoption of ValueInput/Output
PaperMC/Paper@a1bfc19a Some more compilation issues
PaperMC/Paper@d16b93e6 Generator
PaperMC/Paper@c34fb5f8 Test fixes
PaperMC/Paper@f3bad8c8 Prepare work on feature patches
PaperMC/Paper@ed3b39e9 14 first feature patches
PaperMC/Paper@ff05a2df Hacky EAR 2.0 fixes
This commit is contained in:
granny
2025-06-01 13:16:37 -07:00
parent cfd1e070a2
commit 994dd4f476
34 changed files with 128 additions and 238 deletions

View File

@@ -2,7 +2,7 @@ group = org.purpurmc.purpur
version = 1.21.6-R0.1-SNAPSHOT version = 1.21.6-R0.1-SNAPSHOT
mcVersion = 1.21.6-pre1 mcVersion = 1.21.6-pre1
paperCommit = 8c9747458e8544bc28296025d03ec10a429c26b0 paperCommit = ff05a2df6313f422f22c7f640294641a59559250
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/src/generated/java/com/destroystokyo/paper/entity/ai/VanillaGoal.java --- a/src/generated/java/com/destroystokyo/paper/entity/ai/VanillaGoal.java
+++ b/src/generated/java/com/destroystokyo/paper/entity/ai/VanillaGoal.java +++ b/src/generated/java/com/destroystokyo/paper/entity/ai/VanillaGoal.java
@@ -441,6 +_,26 @@ @@ -446,6 +_,26 @@
GoalKey<Zombie> ZOMBIE_ATTACK_TURTLE_EGG = create("zombie_attack_turtle_egg", Zombie.class); GoalKey<Zombie> ZOMBIE_ATTACK_TURTLE_EGG = create("zombie_attack_turtle_egg", Zombie.class);

View File

@@ -1,6 +1,6 @@
--- a/src/main/java/org/bukkit/Material.java --- a/src/main/java/org/bukkit/Material.java
+++ b/src/main/java/org/bukkit/Material.java +++ b/src/main/java/org/bukkit/Material.java
@@ -3616,4 +_,40 @@ @@ -3636,4 +_,40 @@
return this.asItemType().getDefaultDataTypes(); return this.asItemType().getDefaultDataTypes();
} }
// Paper end - data component API // Paper end - data component API

View File

@@ -1,14 +1,6 @@
From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001
From: File <noreply+automated@papermc.io>
Date: Sun, 20 Apr 1997 06:37:42 -0700
Subject: [PATCH] purpur File Patches
diff --git a/io/papermc/paper/entity/activation/ActivationRange.java b/io/papermc/paper/entity/activation/ActivationRange.java
index 2ebee223085fe7926c7f3e555df19ae69f36157e..265f20fd771df850a0bb0029e699d3146d883837 100644
--- a/io/papermc/paper/entity/activation/ActivationRange.java --- a/io/papermc/paper/entity/activation/ActivationRange.java
+++ b/io/papermc/paper/entity/activation/ActivationRange.java +++ b/io/papermc/paper/entity/activation/ActivationRange.java
@@ -141,6 +141,8 @@ public final class ActivationRange { @@ -147,6 +_,8 @@
continue; continue;
} }
@@ -17,7 +9,7 @@ index 2ebee223085fe7926c7f3e555df19ae69f36157e..265f20fd771df850a0bb0029e699d314
final int worldHeight = world.getHeight(); final int worldHeight = world.getHeight();
ActivationRange.maxBB = player.getBoundingBox().inflate(maxRange, worldHeight, maxRange); ActivationRange.maxBB = player.getBoundingBox().inflate(maxRange, worldHeight, maxRange);
ActivationType.MISC.boundingBox = player.getBoundingBox().inflate(miscActivationRange, worldHeight, miscActivationRange); ActivationType.MISC.boundingBox = player.getBoundingBox().inflate(miscActivationRange, worldHeight, miscActivationRange);
@@ -282,6 +284,7 @@ public final class ActivationRange { @@ -288,6 +_,7 @@
* @return * @return
*/ */
public static boolean checkIfActive(final Entity entity) { public static boolean checkIfActive(final Entity entity) {

View File

@@ -1,14 +1,6 @@
From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001
From: File <noreply+automated@papermc.io>
Date: Sun, 20 Apr 1997 06:37:42 -0700
Subject: [PATCH] purpur File Patches
diff --git a/net/minecraft/commands/CommandSourceStack.java b/net/minecraft/commands/CommandSourceStack.java
index cb63e4c264a31788cd1405428af70f7a018910e9..4d06587cd55af988eecdda5186577ab72ca3d533 100644
--- a/net/minecraft/commands/CommandSourceStack.java --- a/net/minecraft/commands/CommandSourceStack.java
+++ b/net/minecraft/commands/CommandSourceStack.java +++ b/net/minecraft/commands/CommandSourceStack.java
@@ -455,6 +455,19 @@ public class CommandSourceStack implements ExecutionCommandSource<CommandSourceS @@ -457,6 +_,19 @@
} }
// CraftBukkit end // CraftBukkit end
@@ -28,10 +20,11 @@ index cb63e4c264a31788cd1405428af70f7a018910e9..4d06587cd55af988eecdda5186577ab7
public Vec3 getPosition() { public Vec3 getPosition() {
return this.worldPosition; return this.worldPosition;
} }
@@ -540,6 +553,30 @@ public class CommandSourceStack implements ExecutionCommandSource<CommandSourceS @@ -541,6 +_,30 @@
}
} }
} }
+
+ // Purpur start - Purpur config files + // Purpur start - Purpur config files
+ public void sendSuccess(@Nullable String message) { + public void sendSuccess(@Nullable String message) {
+ sendSuccess(message, false); + sendSuccess(message, false);
@@ -55,7 +48,6 @@ index cb63e4c264a31788cd1405428af70f7a018910e9..4d06587cd55af988eecdda5186577ab7
+ sendSuccess(() -> io.papermc.paper.adventure.PaperAdventure.asVanilla(message), broadcastToOps); + sendSuccess(() -> io.papermc.paper.adventure.PaperAdventure.asVanilla(message), broadcastToOps);
+ } + }
+ // Purpur end - Purpur config files + // Purpur end - Purpur config files
+
public void sendSuccess(Supplier<Component> messageSupplier, boolean allowLogging) { public void sendSuccess(Supplier<Component> messageSupplier, boolean allowLogging) {
boolean flag = this.source.acceptsSuccess() && !this.silent; boolean flag = this.source.acceptsSuccess() && !this.silent;
boolean flag1 = allowLogging && this.source.shouldInformAdmins() && !this.silent;

View File

@@ -1,8 +1,8 @@
--- a/net/minecraft/core/BlockPos.java --- a/net/minecraft/core/BlockPos.java
+++ b/net/minecraft/core/BlockPos.java +++ b/net/minecraft/core/BlockPos.java
@@ -61,6 +_,12 @@ @@ -63,6 +_,12 @@
private static final int X_OFFSET = PACKED_Y_LENGTH + PACKED_HORIZONTAL_LENGTH; public static final int MAX_HORIZONTAL_COORDINATE = 33554431;
public static final int MAX_HORIZONTAL_COORDINATE = (1 << PACKED_HORIZONTAL_LENGTH) / 2 - 1; // Paper end - Optimize Bit Operations by inlining
+ // Purpur start - Ridables + // Purpur start - Ridables
+ public BlockPos(net.minecraft.world.entity.Entity entity) { + public BlockPos(net.minecraft.world.entity.Entity entity) {

View File

@@ -1,6 +1,6 @@
--- a/net/minecraft/network/Connection.java --- a/net/minecraft/network/Connection.java
+++ b/net/minecraft/network/Connection.java +++ b/net/minecraft/network/Connection.java
@@ -486,11 +_,20 @@ @@ -578,11 +_,20 @@
private static final int MAX_PER_TICK = io.papermc.paper.configuration.GlobalConfiguration.get().misc.maxJoinsPerTick; // Paper - Buffer joins to world private static final int MAX_PER_TICK = io.papermc.paper.configuration.GlobalConfiguration.get().misc.maxJoinsPerTick; // Paper - Buffer joins to world
private static int joinAttemptsThisTick; // Paper - Buffer joins to world private static int joinAttemptsThisTick; // Paper - Buffer joins to world
private static int currTick; // Paper - Buffer joins to world private static int currTick; // Paper - Buffer joins to world

View File

@@ -1,14 +1,6 @@
From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001
From: File <noreply+automated@papermc.io>
Date: Sun, 20 Apr 1997 06:37:42 -0700
Subject: [PATCH] purpur File Patches
diff --git a/net/minecraft/server/Main.java b/net/minecraft/server/Main.java
index 9c9b601a3f903bebb0dd1bda0e24745587229727..29dd9a980bb7dc8457dd9ad6eeaa2c5067e3b954 100644
--- a/net/minecraft/server/Main.java --- a/net/minecraft/server/Main.java
+++ b/net/minecraft/server/Main.java +++ b/net/minecraft/server/Main.java
@@ -108,6 +108,12 @@ public class Main { @@ -109,6 +_,12 @@
JvmProfiler.INSTANCE.start(Environment.SERVER); JvmProfiler.INSTANCE.start(Environment.SERVER);
} }

View File

@@ -1,14 +1,6 @@
From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001
From: File <noreply+automated@papermc.io>
Date: Sun, 20 Apr 1997 06:37:42 -0700
Subject: [PATCH] purpur File Patches
diff --git a/net/minecraft/server/dedicated/DedicatedServer.java b/net/minecraft/server/dedicated/DedicatedServer.java
index 31e02f50edd46220dac81500dbb273f1ccdbe0b9..6a296adcd9d5289dd86840fdc58dce3accbe9ce5 100644
--- a/net/minecraft/server/dedicated/DedicatedServer.java --- a/net/minecraft/server/dedicated/DedicatedServer.java
+++ b/net/minecraft/server/dedicated/DedicatedServer.java +++ b/net/minecraft/server/dedicated/DedicatedServer.java
@@ -105,6 +105,7 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface @@ -105,6 +_,7 @@
public void run() { public void run() {
if (!org.bukkit.craftbukkit.Main.useConsole) return; // CraftBukkit if (!org.bukkit.craftbukkit.Main.useConsole) return; // CraftBukkit
// Paper start - Use TerminalConsoleAppender // Paper start - Use TerminalConsoleAppender
@@ -16,7 +8,7 @@ index 31e02f50edd46220dac81500dbb273f1ccdbe0b9..6a296adcd9d5289dd86840fdc58dce3a
new com.destroystokyo.paper.console.PaperConsole(DedicatedServer.this).start(); new com.destroystokyo.paper.console.PaperConsole(DedicatedServer.this).start();
/* /*
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in, StandardCharsets.UTF_8)); BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in, StandardCharsets.UTF_8));
@@ -183,6 +184,15 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface @@ -183,6 +_,15 @@
io.papermc.paper.command.PaperCommands.registerCommands(this); // Paper - setup /paper command io.papermc.paper.command.PaperCommands.registerCommands(this); // Paper - setup /paper command
this.server.spark.registerCommandBeforePlugins(this.server); // Paper - spark this.server.spark.registerCommandBeforePlugins(this.server); // Paper - spark
com.destroystokyo.paper.Metrics.PaperMetrics.startMetrics(); // Paper - start metrics com.destroystokyo.paper.Metrics.PaperMetrics.startMetrics(); // Paper - start metrics
@@ -32,7 +24,7 @@ index 31e02f50edd46220dac81500dbb273f1ccdbe0b9..6a296adcd9d5289dd86840fdc58dce3a
com.destroystokyo.paper.VersionHistoryManager.INSTANCE.getClass(); // Paper - load version history now com.destroystokyo.paper.VersionHistoryManager.INSTANCE.getClass(); // Paper - load version history now
this.setPvpAllowed(properties.pvp); this.setPvpAllowed(properties.pvp);
@@ -230,6 +240,30 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface @@ -230,6 +_,30 @@
if (true) throw new IllegalStateException("Failed to bind to port", var10); // Paper - Propagate failed to bind to port error if (true) throw new IllegalStateException("Failed to bind to port", var10); // Paper - Propagate failed to bind to port error
return false; return false;
} }
@@ -63,7 +55,7 @@ index 31e02f50edd46220dac81500dbb273f1ccdbe0b9..6a296adcd9d5289dd86840fdc58dce3a
// CraftBukkit start // CraftBukkit start
this.server.loadPlugins(); this.server.loadPlugins();
@@ -308,6 +342,8 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface @@ -308,6 +_,8 @@
LOGGER.info("JMX monitoring enabled"); LOGGER.info("JMX monitoring enabled");
} }

View File

@@ -1,14 +1,6 @@
From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001
From: File <noreply+automated@papermc.io>
Date: Sun, 20 Apr 1997 06:37:42 -0700
Subject: [PATCH] purpur File Patches
diff --git a/net/minecraft/server/level/ServerLevel.java b/net/minecraft/server/level/ServerLevel.java
index bfbfbaa9660d21071c420b60b10be0a02a1bc87e..f3f53791d4c5532434abc281a5798ee0e2653da2 100644
--- a/net/minecraft/server/level/ServerLevel.java --- a/net/minecraft/server/level/ServerLevel.java
+++ b/net/minecraft/server/level/ServerLevel.java +++ b/net/minecraft/server/level/ServerLevel.java
@@ -203,6 +203,8 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe @@ -206,6 +_,8 @@
private final StructureManager structureManager; private final StructureManager structureManager;
private final StructureCheck structureCheck; private final StructureCheck structureCheck;
private final boolean tickTime; private final boolean tickTime;
@@ -17,7 +9,7 @@ index bfbfbaa9660d21071c420b60b10be0a02a1bc87e..f3f53791d4c5532434abc281a5798ee0
private final RandomSequences randomSequences; private final RandomSequences randomSequences;
// CraftBukkit start // CraftBukkit start
@@ -587,7 +589,24 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe @@ -353,7 +_,24 @@
// CraftBukkit end // CraftBukkit end
this.tickTime = tickTime; this.tickTime = tickTime;
this.server = server; this.server = server;
@@ -43,15 +35,15 @@ index bfbfbaa9660d21071c420b60b10be0a02a1bc87e..f3f53791d4c5532434abc281a5798ee0
this.serverLevelData = serverLevelData; this.serverLevelData = serverLevelData;
ChunkGenerator chunkGenerator = levelStem.generator(); ChunkGenerator chunkGenerator = levelStem.generator();
// CraftBukkit start // CraftBukkit start
@@ -671,6 +690,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe @@ -435,6 +_,7 @@
this.chunkDataController = new ca.spottedleaf.moonrise.patches.chunk_system.io.datacontroller.ChunkDataController((ServerLevel)(Object)this, this.chunkTaskScheduler); this.randomSequences = Objects.requireNonNullElseGet(randomSequences, () -> this.getDataStorage().computeIfAbsent(RandomSequences.TYPE));
// Paper end - rewrite chunk system this.waypointManager = new ServerWaypointManager();
this.getCraftServer().addWorld(this.getWorld()); // CraftBukkit this.getCraftServer().addWorld(this.getWorld()); // CraftBukkit
+ this.preciseTime = this.serverLevelData.getDayTime(); // Purpur - Configurable daylight cycle + this.preciseTime = this.serverLevelData.getDayTime(); // Purpur - Configurable daylight cycle
} }
// Paper start // Paper start
@@ -717,7 +737,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe @@ -481,7 +_,7 @@
} }
int _int = this.getGameRules().getInt(GameRules.RULE_PLAYERS_SLEEPING_PERCENTAGE); int _int = this.getGameRules().getInt(GameRules.RULE_PLAYERS_SLEEPING_PERCENTAGE);
@@ -60,7 +52,7 @@ index bfbfbaa9660d21071c420b60b10be0a02a1bc87e..f3f53791d4c5532434abc281a5798ee0
// Paper start - create time skip event - move up calculations // Paper start - create time skip event - move up calculations
final long newDayTime = this.levelData.getDayTime() + 24000L; final long newDayTime = this.levelData.getDayTime() + 24000L;
org.bukkit.event.world.TimeSkipEvent event = new org.bukkit.event.world.TimeSkipEvent( org.bukkit.event.world.TimeSkipEvent event = new org.bukkit.event.world.TimeSkipEvent(
@@ -836,6 +856,13 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe @@ -598,6 +_,13 @@
this.serverLevelData.getScheduledEvents().tick(this.server, l); this.serverLevelData.getScheduledEvents().tick(this.server, l);
Profiler.get().pop(); Profiler.get().pop();
if (this.serverLevelData.getGameRules().getBoolean(GameRules.RULE_DAYLIGHT)) { if (this.serverLevelData.getGameRules().getBoolean(GameRules.RULE_DAYLIGHT)) {
@@ -74,10 +66,11 @@ index bfbfbaa9660d21071c420b60b10be0a02a1bc87e..f3f53791d4c5532434abc281a5798ee0
this.setDayTime(this.levelData.getDayTime() + 1L); this.setDayTime(this.levelData.getDayTime() + 1L);
} }
} }
@@ -843,7 +870,21 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe @@ -605,7 +_,21 @@
public void setDayTime(long time) { public void setDayTime(long time) {
this.serverLevelData.setDayTime(time); this.serverLevelData.setDayTime(time);
- }
+ // Purpur start - Configurable daylight cycle + // Purpur start - Configurable daylight cycle
+ this.preciseTime = time; + this.preciseTime = time;
+ this.forceTime = false; + this.forceTime = false;
@@ -91,12 +84,12 @@ index bfbfbaa9660d21071c420b60b10be0a02a1bc87e..f3f53791d4c5532434abc281a5798ee0
+ // Purpur start - Configurable daylight cycle + // Purpur start - Configurable daylight cycle
+ public boolean isForceTime() { + public boolean isForceTime() {
+ return this.forceTime; + return this.forceTime;
} + }
+ // Purpur end - Configurable daylight cycle + // Purpur end - Configurable daylight cycle
public void tickCustomSpawners(boolean spawnEnemies, boolean spawnFriendlies) { public void tickCustomSpawners(boolean spawnEnemies, boolean spawnFriendlies) {
for (CustomSpawner customSpawner : this.customSpawners) { for (CustomSpawner customSpawner : this.customSpawners) {
@@ -947,9 +988,17 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe @@ -682,9 +_,17 @@
&& this.random.nextDouble() < currentDifficultyAt.getEffectiveDifficulty() * this.paperConfig().entities.spawning.skeletonHorseThunderSpawnChance.or(0.01) // Paper - Configurable spawn chances for skeleton horses && this.random.nextDouble() < currentDifficultyAt.getEffectiveDifficulty() * this.paperConfig().entities.spawning.skeletonHorseThunderSpawnChance.or(0.01) // Paper - Configurable spawn chances for skeleton horses
&& !this.getBlockState(blockPos.below()).is(Blocks.LIGHTNING_ROD); && !this.getBlockState(blockPos.below()).is(Blocks.LIGHTNING_ROD);
if (flag) { if (flag) {
@@ -116,7 +109,7 @@ index bfbfbaa9660d21071c420b60b10be0a02a1bc87e..f3f53791d4c5532434abc281a5798ee0
skeletonHorse.setAge(0); skeletonHorse.setAge(0);
skeletonHorse.setPos(blockPos.getX(), blockPos.getY(), blockPos.getZ()); skeletonHorse.setPos(blockPos.getX(), blockPos.getY(), blockPos.getZ());
this.addFreshEntity(skeletonHorse, org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason.LIGHTNING); // CraftBukkit this.addFreshEntity(skeletonHorse, org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason.LIGHTNING); // CraftBukkit
@@ -984,9 +1033,35 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe @@ -719,9 +_,35 @@
if (blockState.is(Blocks.SNOW)) { if (blockState.is(Blocks.SNOW)) {
int layersValue = blockState.getValue(SnowLayerBlock.LAYERS); int layersValue = blockState.getValue(SnowLayerBlock.LAYERS);
if (layersValue < Math.min(_int, 8)) { if (layersValue < Math.min(_int, 8)) {
@@ -152,7 +145,7 @@ index bfbfbaa9660d21071c420b60b10be0a02a1bc87e..f3f53791d4c5532434abc281a5798ee0
} }
} else { } else {
org.bukkit.craftbukkit.event.CraftEventFactory.handleBlockFormEvent(this, heightmapPos, Blocks.SNOW.defaultBlockState(), 3, null); // CraftBukkit org.bukkit.craftbukkit.event.CraftEventFactory.handleBlockFormEvent(this, heightmapPos, Blocks.SNOW.defaultBlockState(), 3, null); // CraftBukkit
@@ -1007,7 +1082,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe @@ -742,7 +_,7 @@
pointOfInterestType -> pointOfInterestType.is(PoiTypes.LIGHTNING_ROD), pointOfInterestType -> pointOfInterestType.is(PoiTypes.LIGHTNING_ROD),
blockPos -> blockPos.getY() == this.getHeight(Heightmap.Types.WORLD_SURFACE, blockPos.getX(), blockPos.getZ()) - 1, blockPos -> blockPos.getY() == this.getHeight(Heightmap.Types.WORLD_SURFACE, blockPos.getX(), blockPos.getZ()) - 1,
pos, pos,
@@ -161,7 +154,7 @@ index bfbfbaa9660d21071c420b60b10be0a02a1bc87e..f3f53791d4c5532434abc281a5798ee0
PoiManager.Occupancy.ANY PoiManager.Occupancy.ANY
); );
return optional.map(blockPos -> blockPos.above(1)); return optional.map(blockPos -> blockPos.above(1));
@@ -1056,8 +1131,26 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe @@ -791,8 +_,26 @@
int _int = this.getGameRules().getInt(GameRules.RULE_PLAYERS_SLEEPING_PERCENTAGE); int _int = this.getGameRules().getInt(GameRules.RULE_PLAYERS_SLEEPING_PERCENTAGE);
Component component; Component component;
if (this.sleepStatus.areEnoughSleeping(_int)) { if (this.sleepStatus.areEnoughSleeping(_int)) {
@@ -188,7 +181,7 @@ index bfbfbaa9660d21071c420b60b10be0a02a1bc87e..f3f53791d4c5532434abc281a5798ee0
component = Component.translatable("sleep.players_sleeping", this.sleepStatus.amountSleeping(), this.sleepStatus.sleepersNeeded(_int)); component = Component.translatable("sleep.players_sleeping", this.sleepStatus.amountSleeping(), this.sleepStatus.sleepersNeeded(_int));
} }
@@ -1190,6 +1283,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe @@ -929,6 +_,7 @@
@VisibleForTesting @VisibleForTesting
public void resetWeatherCycle() { public void resetWeatherCycle() {
// CraftBukkit start // CraftBukkit start
@@ -196,7 +189,7 @@ index bfbfbaa9660d21071c420b60b10be0a02a1bc87e..f3f53791d4c5532434abc281a5798ee0
this.serverLevelData.setRaining(false, org.bukkit.event.weather.WeatherChangeEvent.Cause.SLEEP); // Paper - Add cause to Weather/ThunderChangeEvents this.serverLevelData.setRaining(false, org.bukkit.event.weather.WeatherChangeEvent.Cause.SLEEP); // Paper - Add cause to Weather/ThunderChangeEvents
// If we stop due to everyone sleeping we should reset the weather duration to some other random value. // If we stop due to everyone sleeping we should reset the weather duration to some other random value.
// Not that everyone ever manages to get the whole server to sleep at the same time.... // Not that everyone ever manages to get the whole server to sleep at the same time....
@@ -1197,6 +1291,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe @@ -936,6 +_,7 @@
this.serverLevelData.setRainTime(0); this.serverLevelData.setRainTime(0);
} }
// CraftBukkit end // CraftBukkit end
@@ -204,7 +197,7 @@ index bfbfbaa9660d21071c420b60b10be0a02a1bc87e..f3f53791d4c5532434abc281a5798ee0
this.serverLevelData.setThundering(false, org.bukkit.event.weather.ThunderChangeEvent.Cause.SLEEP); // Paper - Add cause to Weather/ThunderChangeEvents this.serverLevelData.setThundering(false, org.bukkit.event.weather.ThunderChangeEvent.Cause.SLEEP); // Paper - Add cause to Weather/ThunderChangeEvents
// CraftBukkit start // CraftBukkit start
// If we stop due to everyone sleeping we should reset the weather duration to some other random value. // If we stop due to everyone sleeping we should reset the weather duration to some other random value.
@@ -2674,7 +2769,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe @@ -2384,7 +_,7 @@
// Spigot start // Spigot start
if (entity.getBukkitEntity() instanceof org.bukkit.inventory.InventoryHolder && (!(entity instanceof ServerPlayer) || entity.getRemovalReason() != Entity.RemovalReason.KILLED)) { // SPIGOT-6876: closeInventory clears death message if (entity.getBukkitEntity() instanceof org.bukkit.inventory.InventoryHolder && (!(entity instanceof ServerPlayer) || entity.getRemovalReason() != Entity.RemovalReason.KILLED)) { // SPIGOT-6876: closeInventory clears death message
// Paper start - Fix merchant inventory not closing on entity removal // Paper start - Fix merchant inventory not closing on entity removal

View File

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

View File

@@ -1,14 +1,6 @@
From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001
From: File <noreply+automated@papermc.io>
Date: Sun, 20 Apr 1997 06:37:42 -0700
Subject: [PATCH] purpur File Patches
diff --git a/net/minecraft/server/network/ServerCommonPacketListenerImpl.java b/net/minecraft/server/network/ServerCommonPacketListenerImpl.java
index 186393485396cfe9b1baef29586198356e2d2600..66d70c330fd70009018d8d0a7441b93fcef96c97 100644
--- a/net/minecraft/server/network/ServerCommonPacketListenerImpl.java --- a/net/minecraft/server/network/ServerCommonPacketListenerImpl.java
+++ b/net/minecraft/server/network/ServerCommonPacketListenerImpl.java +++ b/net/minecraft/server/network/ServerCommonPacketListenerImpl.java
@@ -41,6 +41,7 @@ public abstract class ServerCommonPacketListenerImpl implements ServerCommonPack @@ -43,6 +_,7 @@
private long keepAliveChallenge; private long keepAliveChallenge;
private long closedListenerTime; private long closedListenerTime;
private boolean closed = false; private boolean closed = false;
@@ -16,7 +8,7 @@ index 186393485396cfe9b1baef29586198356e2d2600..66d70c330fd70009018d8d0a7441b93f
private int latency; private int latency;
private volatile boolean suspendFlushingOnServerThread = false; private volatile boolean suspendFlushingOnServerThread = false;
// CraftBukkit start // CraftBukkit start
@@ -51,6 +52,7 @@ public abstract class ServerCommonPacketListenerImpl implements ServerCommonPack @@ -53,6 +_,7 @@
public final java.util.Map<java.util.UUID, net.kyori.adventure.resource.ResourcePackCallback> packCallbacks = new java.util.concurrent.ConcurrentHashMap<>(); // Paper - adventure resource pack callbacks public final java.util.Map<java.util.UUID, net.kyori.adventure.resource.ResourcePackCallback> packCallbacks = new java.util.concurrent.ConcurrentHashMap<>(); // Paper - adventure resource pack callbacks
private static final long KEEPALIVE_LIMIT = Long.getLong("paper.playerconnection.keepalive", 30) * 1000; // Paper - provide property to set keepalive limit private static final long KEEPALIVE_LIMIT = Long.getLong("paper.playerconnection.keepalive", 30) * 1000; // Paper - provide property to set keepalive limit
protected static final net.minecraft.resources.ResourceLocation MINECRAFT_BRAND = net.minecraft.resources.ResourceLocation.withDefaultNamespace("brand"); // Paper - Brand support protected static final net.minecraft.resources.ResourceLocation MINECRAFT_BRAND = net.minecraft.resources.ResourceLocation.withDefaultNamespace("brand"); // Paper - Brand support
@@ -24,7 +16,7 @@ index 186393485396cfe9b1baef29586198356e2d2600..66d70c330fd70009018d8d0a7441b93f
public ServerCommonPacketListenerImpl(MinecraftServer server, Connection connection, CommonListenerCookie cookie, net.minecraft.server.level.ServerPlayer player) { // CraftBukkit public ServerCommonPacketListenerImpl(MinecraftServer server, Connection connection, CommonListenerCookie cookie, net.minecraft.server.level.ServerPlayer player) { // CraftBukkit
this.server = server; this.server = server;
@@ -118,6 +120,16 @@ public abstract class ServerCommonPacketListenerImpl implements ServerCommonPack @@ -120,6 +_,16 @@
@Override @Override
public void handleKeepAlive(ServerboundKeepAlivePacket packet) { public void handleKeepAlive(ServerboundKeepAlivePacket packet) {
@@ -41,7 +33,7 @@ index 186393485396cfe9b1baef29586198356e2d2600..66d70c330fd70009018d8d0a7441b93f
if (this.keepAlivePending && packet.getId() == this.keepAliveChallenge) { if (this.keepAlivePending && packet.getId() == this.keepAliveChallenge) {
int i = (int)(Util.getMillis() - this.keepAliveTime); int i = (int)(Util.getMillis() - this.keepAliveTime);
this.latency = (this.latency * 3 + i) / 4; this.latency = (this.latency * 3 + i) / 4;
@@ -169,6 +181,12 @@ public abstract class ServerCommonPacketListenerImpl implements ServerCommonPack @@ -171,6 +_,12 @@
return; return;
} }
@@ -54,7 +46,7 @@ index 186393485396cfe9b1baef29586198356e2d2600..66d70c330fd70009018d8d0a7441b93f
if (identifier.equals(MINECRAFT_BRAND)) { if (identifier.equals(MINECRAFT_BRAND)) {
this.player.clientBrandName = new net.minecraft.network.FriendlyByteBuf(io.netty.buffer.Unpooled.wrappedBuffer(data)).readUtf(256); this.player.clientBrandName = new net.minecraft.network.FriendlyByteBuf(io.netty.buffer.Unpooled.wrappedBuffer(data)).readUtf(256);
} }
@@ -242,6 +260,22 @@ public abstract class ServerCommonPacketListenerImpl implements ServerCommonPack @@ -250,6 +_,22 @@
// Paper start - give clients a longer time to respond to pings as per pre 1.12.2 timings // Paper start - give clients a longer time to respond to pings as per pre 1.12.2 timings
// This should effectively place the keepalive handling back to "as it was" before 1.12.2 // This should effectively place the keepalive handling back to "as it was" before 1.12.2
final long elapsedTime = millis - this.keepAliveTime; final long elapsedTime = millis - this.keepAliveTime;

View File

@@ -1,6 +1,6 @@
--- a/net/minecraft/server/network/ServerLoginPacketListenerImpl.java --- a/net/minecraft/server/network/ServerLoginPacketListenerImpl.java
+++ b/net/minecraft/server/network/ServerLoginPacketListenerImpl.java +++ b/net/minecraft/server/network/ServerLoginPacketListenerImpl.java
@@ -308,7 +_,7 @@ @@ -306,7 +_,7 @@
ServerLoginPacketListenerImpl.LOGGER.warn("Failed to verify username but will let them in anyway!"); ServerLoginPacketListenerImpl.LOGGER.warn("Failed to verify username but will let them in anyway!");
ServerLoginPacketListenerImpl.this.startClientVerification(ServerLoginPacketListenerImpl.this.createOfflineProfile(string1)); // Spigot ServerLoginPacketListenerImpl.this.startClientVerification(ServerLoginPacketListenerImpl.this.createOfflineProfile(string1)); // Spigot
} else { } else {

View File

@@ -1,14 +1,6 @@
From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001
From: File <noreply+automated@papermc.io>
Date: Sun, 20 Apr 1997 06:37:42 -0700
Subject: [PATCH] purpur File Patches
diff --git a/net/minecraft/world/entity/ExperienceOrb.java b/net/minecraft/world/entity/ExperienceOrb.java
index c97a0e500e889b406cb2d679a3870715775f5393..81aa1a91a2ecda3053b22c2eb9e59f0ea2faf7b5 100644
--- a/net/minecraft/world/entity/ExperienceOrb.java --- a/net/minecraft/world/entity/ExperienceOrb.java
+++ b/net/minecraft/world/entity/ExperienceOrb.java +++ b/net/minecraft/world/entity/ExperienceOrb.java
@@ -328,7 +328,7 @@ public class ExperienceOrb extends Entity { @@ -358,7 +_,7 @@
public void playerTouch(Player entity) { public void playerTouch(Player entity) {
if (entity instanceof ServerPlayer serverPlayer) { if (entity instanceof ServerPlayer serverPlayer) {
if (entity.takeXpDelay == 0 && new com.destroystokyo.paper.event.player.PlayerPickupExperienceEvent(serverPlayer.getBukkitEntity(), (org.bukkit.entity.ExperienceOrb) this.getBukkitEntity()).callEvent()) { // Paper - PlayerPickupExperienceEvent if (entity.takeXpDelay == 0 && new com.destroystokyo.paper.event.player.PlayerPickupExperienceEvent(serverPlayer.getBukkitEntity(), (org.bukkit.entity.ExperienceOrb) this.getBukkitEntity()).callEvent()) { // Paper - PlayerPickupExperienceEvent
@@ -17,7 +9,7 @@ index c97a0e500e889b406cb2d679a3870715775f5393..81aa1a91a2ecda3053b22c2eb9e59f0e
entity.take(this, 1); entity.take(this, 1);
int i = this.repairPlayerItems(serverPlayer, this.getValue()); int i = this.repairPlayerItems(serverPlayer, this.getValue());
if (i > 0) { if (i > 0) {
@@ -344,7 +344,7 @@ public class ExperienceOrb extends Entity { @@ -374,7 +_,7 @@
} }
private int repairPlayerItems(ServerPlayer player, int value) { private int repairPlayerItems(ServerPlayer player, int value) {

View File

@@ -1,14 +1,6 @@
From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001
From: File <noreply+automated@papermc.io>
Date: Sun, 20 Apr 1997 06:37:42 -0700
Subject: [PATCH] purpur File Patches
diff --git a/net/minecraft/world/entity/LivingEntity.java b/net/minecraft/world/entity/LivingEntity.java
index ef92dc4384f698cc6b5c4e67fe052a3d4af98f4c..20d9856daa5ef4c42010381091c2a85e0755fa77 100644
--- a/net/minecraft/world/entity/LivingEntity.java --- a/net/minecraft/world/entity/LivingEntity.java
+++ b/net/minecraft/world/entity/LivingEntity.java +++ b/net/minecraft/world/entity/LivingEntity.java
@@ -430,6 +430,12 @@ public abstract class LivingEntity extends Entity implements Attackable { @@ -444,6 +_,12 @@
if (d < 0.0) { if (d < 0.0) {
double damagePerBlock = serverLevel1.getWorldBorder().getDamagePerBlock(); double damagePerBlock = serverLevel1.getWorldBorder().getDamagePerBlock();
if (damagePerBlock > 0.0) { if (damagePerBlock > 0.0) {
@@ -21,7 +13,7 @@ index ef92dc4384f698cc6b5c4e67fe052a3d4af98f4c..20d9856daa5ef4c42010381091c2a85e
this.hurtServer(serverLevel1, this.damageSources().outOfBorder(), Math.max(1, Mth.floor(-d * damagePerBlock))); this.hurtServer(serverLevel1, this.damageSources().outOfBorder(), Math.max(1, Mth.floor(-d * damagePerBlock)));
} }
} }
@@ -442,10 +448,10 @@ public abstract class LivingEntity extends Entity implements Attackable { @@ -456,10 +_,10 @@
&& (!flag || !((Player)this).getAbilities().invulnerable); && (!flag || !((Player)this).getAbilities().invulnerable);
if (flag1) { if (flag1) {
this.setAirSupply(this.decreaseAirSupply(this.getAirSupply())); this.setAirSupply(this.decreaseAirSupply(this.getAirSupply()));
@@ -34,7 +26,7 @@ index ef92dc4384f698cc6b5c4e67fe052a3d4af98f4c..20d9856daa5ef4c42010381091c2a85e
} }
} else if (this.getAirSupply() < this.getMaxAirSupply()) { } else if (this.getAirSupply() < this.getMaxAirSupply()) {
this.setAirSupply(this.increaseAirSupply(this.getAirSupply())); this.setAirSupply(this.increaseAirSupply(this.getAirSupply()));
@@ -1014,15 +1020,33 @@ public abstract class LivingEntity extends Entity implements Attackable { @@ -1039,14 +_,32 @@
if (lookingEntity != null) { if (lookingEntity != null) {
ItemStack itemBySlot = this.getItemBySlot(EquipmentSlot.HEAD); ItemStack itemBySlot = this.getItemBySlot(EquipmentSlot.HEAD);
EntityType<?> type = lookingEntity.getType(); EntityType<?> type = lookingEntity.getType();
@@ -44,13 +36,15 @@ index ef92dc4384f698cc6b5c4e67fe052a3d4af98f4c..20d9856daa5ef4c42010381091c2a85e
- || type == EntityType.PIGLIN_BRUTE && itemBySlot.is(Items.PIGLIN_HEAD) - || type == EntityType.PIGLIN_BRUTE && itemBySlot.is(Items.PIGLIN_HEAD)
- || type == EntityType.CREEPER && itemBySlot.is(Items.CREEPER_HEAD)) { - || type == EntityType.CREEPER && itemBySlot.is(Items.CREEPER_HEAD)) {
- d *= 0.5; - d *= 0.5;
- }
- }
+ // Purpur start - Mob head visibility percent + // Purpur start - Mob head visibility percent
+ if (type == EntityType.SKELETON && itemBySlot.is(Items.SKELETON_SKULL)) { + if (type == EntityType.SKELETON && itemBySlot.is(Items.SKELETON_SKULL)) {
+ d *= lookingEntity.level().purpurConfig.skeletonHeadVisibilityPercent; + d *= lookingEntity.level().purpurConfig.skeletonHeadVisibilityPercent;
+ } + }
+ else if (type == EntityType.ZOMBIE && itemBySlot.is(Items.ZOMBIE_HEAD)) { + else if (type == EntityType.ZOMBIE && itemBySlot.is(Items.ZOMBIE_HEAD)) {
+ d *= lookingEntity.level().purpurConfig.zombieHeadVisibilityPercent; + d *= lookingEntity.level().purpurConfig.zombieHeadVisibilityPercent;
} + }
+ else if ((type == EntityType.PIGLIN || type == EntityType.PIGLIN_BRUTE) && itemBySlot.is(Items.PIGLIN_HEAD)) { + else if ((type == EntityType.PIGLIN || type == EntityType.PIGLIN_BRUTE) && itemBySlot.is(Items.PIGLIN_HEAD)) {
+ d *= lookingEntity.level().purpurConfig.piglinHeadVisibilityPercent; + d *= lookingEntity.level().purpurConfig.piglinHeadVisibilityPercent;
+ } + }
@@ -58,8 +52,8 @@ index ef92dc4384f698cc6b5c4e67fe052a3d4af98f4c..20d9856daa5ef4c42010381091c2a85e
+ d *= lookingEntity.level().purpurConfig.creeperHeadVisibilityPercent; + d *= lookingEntity.level().purpurConfig.creeperHeadVisibilityPercent;
+ } + }
+ // Purpur end - Mob head visibility percent + // Purpur end - Mob head visibility percent
} + }
+
+ // Purpur start - Configurable mob blindness + // Purpur start - Configurable mob blindness
+ if (lookingEntity instanceof LivingEntity entityliving) { + if (lookingEntity instanceof LivingEntity entityliving) {
+ if (entityliving.hasEffect(MobEffects.BLINDNESS)) { + if (entityliving.hasEffect(MobEffects.BLINDNESS)) {
@@ -70,11 +64,10 @@ index ef92dc4384f698cc6b5c4e67fe052a3d4af98f4c..20d9856daa5ef4c42010381091c2a85e
+ } + }
+ } + }
+ // Purpur end - Configurable mob blindness + // Purpur end - Configurable mob blindness
+
return d; return d;
} }
@@ -1093,6 +_,7 @@
@@ -1068,6 +1092,7 @@ public abstract class LivingEntity extends Entity implements Attackable {
Iterator<MobEffectInstance> iterator = this.activeEffects.values().iterator(); Iterator<MobEffectInstance> iterator = this.activeEffects.values().iterator();
while (iterator.hasNext()) { while (iterator.hasNext()) {
MobEffectInstance effect = iterator.next(); MobEffectInstance effect = iterator.next();
@@ -82,7 +75,7 @@ index ef92dc4384f698cc6b5c4e67fe052a3d4af98f4c..20d9856daa5ef4c42010381091c2a85e
EntityPotionEffectEvent event = CraftEventFactory.callEntityPotionEffectChangeEvent(this, effect, null, cause, EntityPotionEffectEvent.Action.CLEARED); EntityPotionEffectEvent event = CraftEventFactory.callEntityPotionEffectChangeEvent(this, effect, null, cause, EntityPotionEffectEvent.Action.CLEARED);
if (event.isCancelled()) { if (event.isCancelled()) {
continue; continue;
@@ -1385,6 +1410,24 @@ public abstract class LivingEntity extends Entity implements Attackable { @@ -1417,6 +_,24 @@
this.stopSleeping(); this.stopSleeping();
} }
@@ -107,7 +100,7 @@ index ef92dc4384f698cc6b5c4e67fe052a3d4af98f4c..20d9856daa5ef4c42010381091c2a85e
this.noActionTime = 0; this.noActionTime = 0;
if (amount < 0.0F) { if (amount < 0.0F) {
amount = 0.0F; amount = 0.0F;
@@ -1646,10 +1689,10 @@ public abstract class LivingEntity extends Entity implements Attackable { @@ -1678,10 +_,10 @@
protected Player resolvePlayerResponsibleForDamage(DamageSource damageSource) { protected Player resolvePlayerResponsibleForDamage(DamageSource damageSource) {
Entity entity = damageSource.getEntity(); Entity entity = damageSource.getEntity();
if (entity instanceof Player player) { if (entity instanceof Player player) {
@@ -120,7 +113,7 @@ index ef92dc4384f698cc6b5c4e67fe052a3d4af98f4c..20d9856daa5ef4c42010381091c2a85e
} else { } else {
this.lastHurtByPlayer = null; this.lastHurtByPlayer = null;
this.lastHurtByPlayerMemoryTime = 0; this.lastHurtByPlayerMemoryTime = 0;
@@ -1700,6 +1743,18 @@ public abstract class LivingEntity extends Entity implements Attackable { @@ -1732,6 +_,18 @@
} }
} }
@@ -139,7 +132,7 @@ index ef92dc4384f698cc6b5c4e67fe052a3d4af98f4c..20d9856daa5ef4c42010381091c2a85e
final org.bukkit.inventory.EquipmentSlot handSlot = (hand != null) ? org.bukkit.craftbukkit.CraftEquipmentSlot.getHand(hand) : null; final org.bukkit.inventory.EquipmentSlot handSlot = (hand != null) ? org.bukkit.craftbukkit.CraftEquipmentSlot.getHand(hand) : null;
final EntityResurrectEvent event = new EntityResurrectEvent((org.bukkit.entity.LivingEntity) this.getBukkitEntity(), handSlot); final EntityResurrectEvent event = new EntityResurrectEvent((org.bukkit.entity.LivingEntity) this.getBukkitEntity(), handSlot);
event.setCancelled(itemStack == null); event.setCancelled(itemStack == null);
@@ -1875,6 +1930,7 @@ public abstract class LivingEntity extends Entity implements Attackable { @@ -1907,6 +_,7 @@
boolean flag = this.lastHurtByPlayerMemoryTime > 0; boolean flag = this.lastHurtByPlayerMemoryTime > 0;
this.dropEquipment(level); // CraftBukkit - from below this.dropEquipment(level); // CraftBukkit - from below
if (this.shouldDropLoot() && level.getGameRules().getBoolean(GameRules.RULE_DOMOBLOOT)) { if (this.shouldDropLoot() && level.getGameRules().getBoolean(GameRules.RULE_DOMOBLOOT)) {
@@ -147,7 +140,7 @@ index ef92dc4384f698cc6b5c4e67fe052a3d4af98f4c..20d9856daa5ef4c42010381091c2a85e
this.dropFromLootTable(level, damageSource, flag); this.dropFromLootTable(level, damageSource, flag);
// Paper start // Paper start
final boolean prev = this.clearEquipmentSlots; final boolean prev = this.clearEquipmentSlots;
@@ -1883,6 +1939,7 @@ public abstract class LivingEntity extends Entity implements Attackable { @@ -1915,6 +_,7 @@
// Paper end // Paper end
this.dropCustomDeathLoot(level, damageSource, flag); this.dropCustomDeathLoot(level, damageSource, flag);
this.clearEquipmentSlots = prev; // Paper this.clearEquipmentSlots = prev; // Paper
@@ -155,7 +148,7 @@ index ef92dc4384f698cc6b5c4e67fe052a3d4af98f4c..20d9856daa5ef4c42010381091c2a85e
} }
// CraftBukkit start - Call death event // Paper start - call advancement triggers with correct entity equipment // CraftBukkit start - Call death event // Paper start - call advancement triggers with correct entity equipment
@@ -3057,6 +3114,7 @@ public abstract class LivingEntity extends Entity implements Attackable { @@ -3109,6 +_,7 @@
float f = (float)(d * 10.0 - 3.0); float f = (float)(d * 10.0 - 3.0);
if (f > 0.0F) { if (f > 0.0F) {
this.playSound(this.getFallDamageSound((int)f), 1.0F, 1.0F); this.playSound(this.getFallDamageSound((int)f), 1.0F, 1.0F);
@@ -163,16 +156,16 @@ index ef92dc4384f698cc6b5c4e67fe052a3d4af98f4c..20d9856daa5ef4c42010381091c2a85e
this.hurt(this.damageSources().flyIntoWall(), f); this.hurt(this.damageSources().flyIntoWall(), f);
} }
} }
@@ -4452,6 +4510,12 @@ public abstract class LivingEntity extends Entity implements Attackable { @@ -4507,6 +_,12 @@
? slot == EquipmentSlot.MAINHAND && this.canUseSlot(EquipmentSlot.MAINHAND)
: slot == equippable.slot() && this.canUseSlot(equippable.slot()) && equippable.canBeEquippedBy(this.getType()); : slot == equippable.slot() && this.canUseSlot(equippable.slot()) && equippable.canBeEquippedBy(this.getType());
} }
+
+ // Purpur start - Dispenser curse of binding protection + // Purpur start - Dispenser curse of binding protection
+ public @Nullable EquipmentSlot getEquipmentSlotForDispenserItem(ItemStack itemstack) { + public @Nullable EquipmentSlot getEquipmentSlotForDispenserItem(ItemStack itemstack) {
+ return EnchantmentHelper.getItemEnchantmentLevel(net.minecraft.world.item.enchantment.Enchantments.BINDING_CURSE, itemstack) > 0 ? null : this.getEquipmentSlotForItem(itemstack); + return EnchantmentHelper.getItemEnchantmentLevel(net.minecraft.world.item.enchantment.Enchantments.BINDING_CURSE, itemstack) > 0 ? null : this.getEquipmentSlotForItem(itemstack);
+ } + }
+ // Purpur end - Dispenser curse of binding protection + // Purpur end - Dispenser curse of binding protection
+
private static SlotAccess createEquipmentSlotAccess(LivingEntity entity, EquipmentSlot slot) { private static SlotAccess createEquipmentSlotAccess(LivingEntity entity, EquipmentSlot slot) {
return slot != EquipmentSlot.HEAD && slot != EquipmentSlot.MAINHAND && slot != EquipmentSlot.OFFHAND return slot != EquipmentSlot.HEAD && slot != EquipmentSlot.MAINHAND && slot != EquipmentSlot.OFFHAND
? SlotAccess.forEquipmentSlot(entity, slot, itemStack -> itemStack.isEmpty() || entity.getEquipmentSlotForItem(itemStack) == slot)

View File

@@ -1,14 +1,6 @@
From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001
From: File <noreply+automated@papermc.io>
Date: Sun, 20 Apr 1997 06:37:42 -0700
Subject: [PATCH] purpur File Patches
diff --git a/net/minecraft/world/entity/item/ItemEntity.java b/net/minecraft/world/entity/item/ItemEntity.java
index 6c0ebfb2be4e8b884456a2aa3d5fdc87e45a0e3c..4ddf1cdf7a47bf06f95c5bfce8f3c4d035e87cfc 100644
--- a/net/minecraft/world/entity/item/ItemEntity.java --- a/net/minecraft/world/entity/item/ItemEntity.java
+++ b/net/minecraft/world/entity/item/ItemEntity.java +++ b/net/minecraft/world/entity/item/ItemEntity.java
@@ -59,6 +59,12 @@ public class ItemEntity extends Entity implements TraceableEntity { @@ -56,6 +_,12 @@
public boolean canMobPickup = true; // Paper - Item#canEntityPickup public boolean canMobPickup = true; // Paper - Item#canEntityPickup
private int despawnRate = -1; // Paper - Alternative item-despawn-rate private int despawnRate = -1; // Paper - Alternative item-despawn-rate
public net.kyori.adventure.util.TriState frictionState = net.kyori.adventure.util.TriState.NOT_SET; // Paper - Friction API public net.kyori.adventure.util.TriState frictionState = net.kyori.adventure.util.TriState.NOT_SET; // Paper - Friction API
@@ -21,7 +13,7 @@ index 6c0ebfb2be4e8b884456a2aa3d5fdc87e45a0e3c..4ddf1cdf7a47bf06f95c5bfce8f3c4d0
public ItemEntity(EntityType<? extends ItemEntity> entityType, Level level) { public ItemEntity(EntityType<? extends ItemEntity> entityType, Level level) {
super(entityType, level); super(entityType, level);
@@ -344,7 +350,16 @@ public class ItemEntity extends Entity implements TraceableEntity { @@ -334,7 +_,16 @@
@Override @Override
public final boolean hurtServer(ServerLevel level, DamageSource damageSource, float amount) { public final boolean hurtServer(ServerLevel level, DamageSource damageSource, float amount) {
@@ -39,7 +31,7 @@ index 6c0ebfb2be4e8b884456a2aa3d5fdc87e45a0e3c..4ddf1cdf7a47bf06f95c5bfce8f3c4d0
return false; return false;
} else if (!level.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING) && damageSource.getEntity() instanceof Mob) { } else if (!level.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING) && damageSource.getEntity() instanceof Mob) {
return false; return false;
@@ -528,6 +543,12 @@ public class ItemEntity extends Entity implements TraceableEntity { @@ -513,6 +_,12 @@
public void setItem(ItemStack stack) { public void setItem(ItemStack stack) {
this.getEntityData().set(DATA_ITEM, stack); this.getEntityData().set(DATA_ITEM, stack);
this.despawnRate = this.level().paperConfig().entities.spawning.altItemDespawnRate.enabled ? this.level().paperConfig().entities.spawning.altItemDespawnRate.items.getOrDefault(stack.getItem(), this.level().spigotConfig.itemDespawnRate) : this.level().spigotConfig.itemDespawnRate; // Paper - Alternative item-despawn-rate this.despawnRate = this.level().paperConfig().entities.spawning.altItemDespawnRate.enabled ? this.level().paperConfig().entities.spawning.altItemDespawnRate.items.getOrDefault(stack.getItem(), this.level().spigotConfig.itemDespawnRate) : this.level().spigotConfig.itemDespawnRate; // Paper - Alternative item-despawn-rate

View File

@@ -1,6 +1,6 @@
--- a/net/minecraft/world/entity/monster/Phantom.java --- a/net/minecraft/world/entity/monster/Phantom.java
+++ b/net/minecraft/world/entity/monster/Phantom.java +++ b/net/minecraft/world/entity/monster/Phantom.java
@@ -169,7 +_,11 @@ @@ -174,7 +_,11 @@
ServerLevelAccessor level, DifficultyInstance difficulty, EntitySpawnReason spawnReason, @Nullable SpawnGroupData spawnGroupData ServerLevelAccessor level, DifficultyInstance difficulty, EntitySpawnReason spawnReason, @Nullable SpawnGroupData spawnGroupData
) { ) {
this.anchorPoint = this.blockPosition().above(5); this.anchorPoint = this.blockPosition().above(5);

View File

@@ -1,14 +1,6 @@
From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001
From: File <noreply+automated@papermc.io>
Date: Sun, 20 Apr 1997 06:37:42 -0700
Subject: [PATCH] purpur File Patches
diff --git a/net/minecraft/world/entity/npc/Villager.java b/net/minecraft/world/entity/npc/Villager.java
index e0e0d2ea7fc60e3142c675404d152eca60263240..49d43837b88d8f278baa5062aed83a297fe20ed8 100644
--- a/net/minecraft/world/entity/npc/Villager.java --- a/net/minecraft/world/entity/npc/Villager.java
+++ b/net/minecraft/world/entity/npc/Villager.java +++ b/net/minecraft/world/entity/npc/Villager.java
@@ -178,6 +178,8 @@ public class Villager extends AbstractVillager implements ReputationEventHandler @@ -179,6 +_,8 @@
MemoryModuleType.MEETING_POINT, MemoryModuleType.MEETING_POINT,
(villager, poiType) -> poiType.is(PoiTypes.MEETING) (villager, poiType) -> poiType.is(PoiTypes.MEETING)
); );
@@ -17,7 +9,7 @@ index e0e0d2ea7fc60e3142c675404d152eca60263240..49d43837b88d8f278baa5062aed83a29
public Villager(EntityType<? extends Villager> entityType, Level level) { public Villager(EntityType<? extends Villager> entityType, Level level) {
this(entityType, level, VillagerType.PLAINS); this(entityType, level, VillagerType.PLAINS);
@@ -196,6 +198,57 @@ public class Villager extends AbstractVillager implements ReputationEventHandler @@ -197,6 +_,57 @@
this.setVillagerData(this.getVillagerData().withType(villagerType).withProfession(level.registryAccess(), VillagerProfession.NONE)); this.setVillagerData(this.getVillagerData().withType(villagerType).withProfession(level.registryAccess(), VillagerProfession.NONE));
} }
@@ -75,7 +67,7 @@ index e0e0d2ea7fc60e3142c675404d152eca60263240..49d43837b88d8f278baa5062aed83a29
@Override @Override
public Brain<Villager> getBrain() { public Brain<Villager> getBrain() {
return (Brain<Villager>)super.getBrain(); return (Brain<Villager>)super.getBrain();
@@ -292,11 +345,24 @@ public class Villager extends AbstractVillager implements ReputationEventHandler @@ -293,11 +_,24 @@
// Paper start - EAR 2 // Paper start - EAR 2
this.customServerAiStep(level, false); this.customServerAiStep(level, false);
} }
@@ -102,7 +94,7 @@ index e0e0d2ea7fc60e3142c675404d152eca60263240..49d43837b88d8f278baa5062aed83a29
profilerFiller.pop(); profilerFiller.pop();
if (this.assignProfessionWhenSpawned) { if (this.assignProfessionWhenSpawned) {
this.assignProfessionWhenSpawned = false; this.assignProfessionWhenSpawned = false;
@@ -368,6 +434,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler @@ -369,6 +_,7 @@
return InteractionResult.CONSUME; return InteractionResult.CONSUME;
} }
@@ -110,7 +102,7 @@ index e0e0d2ea7fc60e3142c675404d152eca60263240..49d43837b88d8f278baa5062aed83a29
this.startTrading(player); this.startTrading(player);
} }
@@ -504,7 +571,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler @@ -505,7 +_,7 @@
private void updateDemand() { private void updateDemand() {
for (MerchantOffer merchantOffer : this.getOffers()) { for (MerchantOffer merchantOffer : this.getOffers()) {
@@ -119,7 +111,7 @@ index e0e0d2ea7fc60e3142c675404d152eca60263240..49d43837b88d8f278baa5062aed83a29
} }
} }
@@ -697,7 +764,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler @@ -698,7 +_,7 @@
@Override @Override
public boolean canBreed() { public boolean canBreed() {
@@ -128,7 +120,7 @@ index e0e0d2ea7fc60e3142c675404d152eca60263240..49d43837b88d8f278baa5062aed83a29
} }
private boolean hungry() { private boolean hungry() {
@@ -919,6 +986,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler @@ -920,6 +_,7 @@
} }
public void spawnGolemIfNeeded(ServerLevel serverLevel, long gameTime, int minVillagerAmount) { public void spawnGolemIfNeeded(ServerLevel serverLevel, long gameTime, int minVillagerAmount) {
@@ -136,7 +128,7 @@ index e0e0d2ea7fc60e3142c675404d152eca60263240..49d43837b88d8f278baa5062aed83a29
if (this.wantsToSpawnGolem(gameTime)) { if (this.wantsToSpawnGolem(gameTime)) {
AABB aabb = this.getBoundingBox().inflate(10.0, 10.0, 10.0); AABB aabb = this.getBoundingBox().inflate(10.0, 10.0, 10.0);
List<Villager> entitiesOfClass = serverLevel.getEntitiesOfClass(Villager.class, aabb); List<Villager> entitiesOfClass = serverLevel.getEntitiesOfClass(Villager.class, aabb);
@@ -992,6 +1060,12 @@ public class Villager extends AbstractVillager implements ReputationEventHandler @@ -993,6 +_,12 @@
@Override @Override
public void startSleeping(BlockPos pos) { public void startSleeping(BlockPos pos) {

View File

@@ -1,14 +1,6 @@
From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001
From: File <noreply+automated@papermc.io>
Date: Sun, 20 Apr 1997 06:37:42 -0700
Subject: [PATCH] purpur File Patches
diff --git a/net/minecraft/world/entity/player/Player.java b/net/minecraft/world/entity/player/Player.java
index 248ee263a853d1d3148746a63ba422115853f6a1..bd4d3a920e015db49436336cc180bc0b937750a0 100644
--- a/net/minecraft/world/entity/player/Player.java --- a/net/minecraft/world/entity/player/Player.java
+++ b/net/minecraft/world/entity/player/Player.java +++ b/net/minecraft/world/entity/player/Player.java
@@ -210,11 +210,20 @@ public abstract class Player extends LivingEntity { @@ -219,11 +_,20 @@
private int currentImpulseContextResetGraceTime = 0; private int currentImpulseContextResetGraceTime = 0;
public boolean affectsSpawning = true; // Paper - Affects Spawning API public boolean affectsSpawning = true; // Paper - Affects Spawning API
public net.kyori.adventure.util.TriState flyingFallDamage = net.kyori.adventure.util.TriState.NOT_SET; // Paper - flying fall damage public net.kyori.adventure.util.TriState flyingFallDamage = net.kyori.adventure.util.TriState.NOT_SET; // Paper - flying fall damage
@@ -29,7 +21,7 @@ index 248ee263a853d1d3148746a63ba422115853f6a1..bd4d3a920e015db49436336cc180bc0b
@Override @Override
public org.bukkit.craftbukkit.entity.CraftHumanEntity getBukkitEntity() { public org.bukkit.craftbukkit.entity.CraftHumanEntity getBukkitEntity() {
return (org.bukkit.craftbukkit.entity.CraftHumanEntity) super.getBukkitEntity(); return (org.bukkit.craftbukkit.entity.CraftHumanEntity) super.getBukkitEntity();
@@ -277,6 +286,12 @@ public abstract class Player extends LivingEntity { @@ -287,6 +_,12 @@
@Override @Override
public void tick() { public void tick() {
@@ -42,7 +34,7 @@ index 248ee263a853d1d3148746a63ba422115853f6a1..bd4d3a920e015db49436336cc180bc0b
this.noPhysics = this.isSpectator(); this.noPhysics = this.isSpectator();
if (this.isSpectator() || this.isPassenger()) { if (this.isSpectator() || this.isPassenger()) {
this.setOnGround(false); this.setOnGround(false);
@@ -355,6 +370,17 @@ public abstract class Player extends LivingEntity { @@ -365,6 +_,17 @@
this.turtleHelmetTick(); this.turtleHelmetTick();
} }
@@ -60,7 +52,7 @@ index 248ee263a853d1d3148746a63ba422115853f6a1..bd4d3a920e015db49436336cc180bc0b
this.cooldowns.tick(); this.cooldowns.tick();
this.updatePlayerPose(); this.updatePlayerPose();
if (this.currentImpulseContextResetGraceTime > 0) { if (this.currentImpulseContextResetGraceTime > 0) {
@@ -620,7 +646,7 @@ public abstract class Player extends LivingEntity { @@ -630,7 +_,7 @@
List<Entity> list = Lists.newArrayList(); List<Entity> list = Lists.newArrayList();
for (Entity entity : entities) { for (Entity entity : entities) {
@@ -69,7 +61,7 @@ index 248ee263a853d1d3148746a63ba422115853f6a1..bd4d3a920e015db49436336cc180bc0b
list.add(entity); list.add(entity);
} else if (!entity.isRemoved()) { } else if (!entity.isRemoved()) {
this.touch(entity); this.touch(entity);
@@ -1214,7 +1240,7 @@ public abstract class Player extends LivingEntity { @@ -1226,7 +_,7 @@
flag2 = flag2 && !this.level().paperConfig().entities.behavior.disablePlayerCrits; // Paper - Toggleable player crits flag2 = flag2 && !this.level().paperConfig().entities.behavior.disablePlayerCrits; // Paper - Toggleable player crits
if (flag2) { if (flag2) {
damageSource = damageSource.critical(); // Paper - critical damage API damageSource = damageSource.critical(); // Paper - critical damage API
@@ -78,7 +70,7 @@ index 248ee263a853d1d3148746a63ba422115853f6a1..bd4d3a920e015db49436336cc180bc0b
} }
float f2 = f + f1; float f2 = f + f1;
@@ -1811,7 +1837,23 @@ public abstract class Player extends LivingEntity { @@ -1823,7 +_,23 @@
@Override @Override
protected int getBaseExperienceReward(ServerLevel level) { protected int getBaseExperienceReward(ServerLevel level) {
@@ -103,17 +95,17 @@ index 248ee263a853d1d3148746a63ba422115853f6a1..bd4d3a920e015db49436336cc180bc0b
} }
@Override @Override
@@ -1850,6 +1892,13 @@ public abstract class Player extends LivingEntity { @@ -1861,6 +_,13 @@
public boolean addItem(ItemStack stack) {
return this.inventory.add(stack); return this.inventory.add(stack);
} }
+
+ // Purpur start - Player ridable in water option + // Purpur start - Player ridable in water option
+ @Override + @Override
+ public boolean dismountsUnderwater() { + public boolean dismountsUnderwater() {
+ return !level().purpurConfig.playerRidableInWater; + return !level().purpurConfig.playerRidableInWater;
+ } + }
+ // Purpur end - Player ridable in water option + // Purpur end - Player ridable in water option
+
public boolean setEntityOnShoulder(CompoundTag entityCompound) { public boolean setEntityOnShoulder(CompoundTag entityCompound) {
if (this.isPassenger() || !this.onGround() || this.isInWater() || this.isInPowderSnow) { if (this.isPassenger() || !this.onGround() || this.isInWater() || this.isInPowderSnow) {
return false;

View File

@@ -1,14 +1,6 @@
From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001
From: File <noreply+automated@papermc.io>
Date: Sun, 20 Apr 1997 06:37:42 -0700
Subject: [PATCH] purpur File Patches
diff --git a/net/minecraft/world/inventory/AnvilMenu.java b/net/minecraft/world/inventory/AnvilMenu.java
index 65c400444314049d5529f1f76d65fbd6b1ea7af2..bcffac9f7781ea489e8e4d778181b9ae2392590f 100644
--- a/net/minecraft/world/inventory/AnvilMenu.java --- a/net/minecraft/world/inventory/AnvilMenu.java
+++ b/net/minecraft/world/inventory/AnvilMenu.java +++ b/net/minecraft/world/inventory/AnvilMenu.java
@@ -20,6 +20,12 @@ import net.minecraft.world.level.block.AnvilBlock; @@ -21,6 +_,12 @@
import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.BlockState;
import org.slf4j.Logger; import org.slf4j.Logger;
@@ -21,7 +13,7 @@ index 65c400444314049d5529f1f76d65fbd6b1ea7af2..bcffac9f7781ea489e8e4d778181b9ae
public class AnvilMenu extends ItemCombinerMenu { public class AnvilMenu extends ItemCombinerMenu {
public static final int INPUT_SLOT = 0; public static final int INPUT_SLOT = 0;
public static final int ADDITIONAL_SLOT = 1; public static final int ADDITIONAL_SLOT = 1;
@@ -49,6 +55,10 @@ public class AnvilMenu extends ItemCombinerMenu { @@ -50,6 +_,10 @@
private org.bukkit.craftbukkit.inventory.view.CraftAnvilView bukkitEntity; private org.bukkit.craftbukkit.inventory.view.CraftAnvilView bukkitEntity;
// CraftBukkit end // CraftBukkit end
public boolean bypassEnchantmentLevelRestriction = false; // Paper - bypass anvil level restrictions public boolean bypassEnchantmentLevelRestriction = false; // Paper - bypass anvil level restrictions
@@ -32,7 +24,7 @@ index 65c400444314049d5529f1f76d65fbd6b1ea7af2..bcffac9f7781ea489e8e4d778181b9ae
public AnvilMenu(int containerId, Inventory playerInventory) { public AnvilMenu(int containerId, Inventory playerInventory) {
this(containerId, playerInventory, ContainerLevelAccess.NULL); this(containerId, playerInventory, ContainerLevelAccess.NULL);
@@ -74,12 +84,17 @@ public class AnvilMenu extends ItemCombinerMenu { @@ -75,12 +_,17 @@
@Override @Override
protected boolean mayPickup(Player player, boolean hasStack) { protected boolean mayPickup(Player player, boolean hasStack) {
@@ -51,7 +43,7 @@ index 65c400444314049d5529f1f76d65fbd6b1ea7af2..bcffac9f7781ea489e8e4d778181b9ae
player.giveExperienceLevels(-this.cost.get()); player.giveExperienceLevels(-this.cost.get());
} }
@@ -126,13 +141,19 @@ public class AnvilMenu extends ItemCombinerMenu { @@ -133,13 +_,19 @@
@Override @Override
public void createResult() { public void createResult() {
@@ -72,7 +64,7 @@ index 65c400444314049d5529f1f76d65fbd6b1ea7af2..bcffac9f7781ea489e8e4d778181b9ae
ItemStack itemStack = item.copy(); ItemStack itemStack = item.copy();
ItemStack item1 = this.inputSlots.getItem(1); ItemStack item1 = this.inputSlots.getItem(1);
ItemEnchantments.Mutable mutable = new ItemEnchantments.Mutable(EnchantmentHelper.getEnchantmentsForCrafting(itemStack)); ItemEnchantments.Mutable mutable = new ItemEnchantments.Mutable(EnchantmentHelper.getEnchantmentsForCrafting(itemStack));
@@ -190,23 +211,34 @@ public class AnvilMenu extends ItemCombinerMenu { @@ -197,23 +_,34 @@
int intValue = entry.getIntValue(); int intValue = entry.getIntValue();
intValue = level == intValue ? intValue + 1 : Math.max(intValue, level); intValue = level == intValue ? intValue + 1 : Math.max(intValue, level);
Enchantment enchantment = holder.value(); Enchantment enchantment = holder.value();
@@ -111,7 +103,7 @@ index 65c400444314049d5529f1f76d65fbd6b1ea7af2..bcffac9f7781ea489e8e4d778181b9ae
intValue = enchantment.getMaxLevel(); intValue = enchantment.getMaxLevel();
} }
@@ -235,6 +267,54 @@ public class AnvilMenu extends ItemCombinerMenu { @@ -242,6 +_,54 @@
if (!this.itemName.equals(item.getHoverName().getString())) { if (!this.itemName.equals(item.getHoverName().getString())) {
i1 = 1; i1 = 1;
i += i1; i += i1;
@@ -166,7 +158,7 @@ index 65c400444314049d5529f1f76d65fbd6b1ea7af2..bcffac9f7781ea489e8e4d778181b9ae
itemStack.set(DataComponents.CUSTOM_NAME, Component.literal(this.itemName)); itemStack.set(DataComponents.CUSTOM_NAME, Component.literal(this.itemName));
} }
} else if (item.has(DataComponents.CUSTOM_NAME)) { } else if (item.has(DataComponents.CUSTOM_NAME)) {
@@ -259,6 +339,12 @@ public class AnvilMenu extends ItemCombinerMenu { @@ -266,6 +_,12 @@
this.onlyRenaming = true; this.onlyRenaming = true;
} }
@@ -179,7 +171,7 @@ index 65c400444314049d5529f1f76d65fbd6b1ea7af2..bcffac9f7781ea489e8e4d778181b9ae
if (this.cost.get() >= this.maximumRepairCost && !this.player.hasInfiniteMaterials()) { // CraftBukkit if (this.cost.get() >= this.maximumRepairCost && !this.player.hasInfiniteMaterials()) { // CraftBukkit
itemStack = ItemStack.EMPTY; itemStack = ItemStack.EMPTY;
} }
@@ -279,6 +365,13 @@ public class AnvilMenu extends ItemCombinerMenu { @@ -286,6 +_,13 @@
org.bukkit.craftbukkit.event.CraftEventFactory.callPrepareAnvilEvent(this.getBukkitView(), itemStack); // CraftBukkit org.bukkit.craftbukkit.event.CraftEventFactory.callPrepareAnvilEvent(this.getBukkitView(), itemStack); // CraftBukkit
this.broadcastChanges(); this.broadcastChanges();
@@ -193,7 +185,7 @@ index 65c400444314049d5529f1f76d65fbd6b1ea7af2..bcffac9f7781ea489e8e4d778181b9ae
} else { } else {
org.bukkit.craftbukkit.event.CraftEventFactory.callPrepareAnvilEvent(this.getBukkitView(), ItemStack.EMPTY); // CraftBukkit org.bukkit.craftbukkit.event.CraftEventFactory.callPrepareAnvilEvent(this.getBukkitView(), ItemStack.EMPTY); // CraftBukkit
this.cost.set(AnvilMenu.DEFAULT_DENIED_COST); // CraftBukkit - use a variable for set a cost for denied item this.cost.set(AnvilMenu.DEFAULT_DENIED_COST); // CraftBukkit - use a variable for set a cost for denied item
@@ -287,7 +380,7 @@ public class AnvilMenu extends ItemCombinerMenu { @@ -294,7 +_,7 @@
} }
public static int calculateIncreasedRepairCost(int oldRepairCost) { public static int calculateIncreasedRepairCost(int oldRepairCost) {

View File

@@ -9,9 +9,9 @@
// Paper start - Fire BlockExpEvent on grindstone use // Paper start - Fire BlockExpEvent on grindstone use
org.bukkit.event.block.BlockExpEvent event = new org.bukkit.event.block.BlockExpEvent(org.bukkit.craftbukkit.block.CraftBlock.at(level, blockPos), this.getExperienceAmount(level)); org.bukkit.event.block.BlockExpEvent event = new org.bukkit.event.block.BlockExpEvent(org.bukkit.craftbukkit.block.CraftBlock.at(level, blockPos), this.getExperienceAmount(level));
event.callEvent(); event.callEvent();
- ExperienceOrb.award((ServerLevel) level, Vec3.atCenterOf(blockPos), event.getExpToDrop(), org.bukkit.entity.ExperienceOrb.SpawnReason.GRINDSTONE, player); - ExperienceOrb.awardWithDirection((ServerLevel) level, Vec3.atCenterOf(blockPos), Vec3.ZERO, event.getExpToDrop(), org.bukkit.entity.ExperienceOrb.SpawnReason.GRINDSTONE, player, null);
+ org.purpurmc.purpur.event.inventory.GrindstoneTakeResultEvent grindstoneTakeResultEvent = new org.purpurmc.purpur.event.inventory.GrindstoneTakeResultEvent(player.getBukkitEntity(), getBukkitView(), org.bukkit.craftbukkit.inventory.CraftItemStack.asCraftMirror(itemstack), event.getExpToDrop()); grindstoneTakeResultEvent.callEvent(); // Purpur - Grindstone API + org.purpurmc.purpur.event.inventory.GrindstoneTakeResultEvent grindstoneTakeResultEvent = new org.purpurmc.purpur.event.inventory.GrindstoneTakeResultEvent(player.getBukkitEntity(), getBukkitView(), org.bukkit.craftbukkit.inventory.CraftItemStack.asCraftMirror(itemstack), event.getExpToDrop()); grindstoneTakeResultEvent.callEvent(); // Purpur - Grindstone API
+ ExperienceOrb.award((ServerLevel) level, Vec3.atCenterOf(blockPos), grindstoneTakeResultEvent.getExperienceAmount(), org.bukkit.entity.ExperienceOrb.SpawnReason.GRINDSTONE, player); // Purpur - Grindstone API + ExperienceOrb.awardWithDirection((ServerLevel) level, Vec3.atCenterOf(blockPos), Vec3.ZERO, grindstoneTakeResultEvent.getExperienceAmount(), org.bukkit.entity.ExperienceOrb.SpawnReason.GRINDSTONE, player, null); // Purpur - Grindstone API
// Paper end - Fire BlockExpEvent on grindstone use // Paper end - Fire BlockExpEvent on grindstone use
} }

View File

@@ -1,14 +1,6 @@
From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001
From: File <noreply+automated@papermc.io>
Date: Sun, 20 Apr 1997 06:37:42 -0700
Subject: [PATCH] purpur File Patches
diff --git a/net/minecraft/world/level/BaseSpawner.java b/net/minecraft/world/level/BaseSpawner.java
index 650ebce14d618076cec2066d134d2ae51a87076a..0babc951d9fed6d32d3dba549cc5ced4dc6b0588 100644
--- a/net/minecraft/world/level/BaseSpawner.java --- a/net/minecraft/world/level/BaseSpawner.java
+++ b/net/minecraft/world/level/BaseSpawner.java +++ b/net/minecraft/world/level/BaseSpawner.java
@@ -54,6 +54,7 @@ public abstract class BaseSpawner { @@ -61,6 +_,7 @@
} }
public boolean isNearPlayer(Level level, BlockPos pos) { public boolean isNearPlayer(Level level, BlockPos pos) {

View File

@@ -1,6 +1,6 @@
--- a/net/minecraft/world/level/Level.java --- a/net/minecraft/world/level/Level.java
+++ b/net/minecraft/world/level/Level.java +++ b/net/minecraft/world/level/Level.java
@@ -152,11 +_,55 @@ @@ -159,11 +_,55 @@
} }
// Paper end - add paper world config // Paper end - add paper world config
@@ -56,7 +56,7 @@
public CraftWorld getWorld() { public CraftWorld getWorld() {
return this.world; return this.world;
} }
@@ -199,6 +_,8 @@ @@ -207,6 +_,8 @@
) { ) {
this.spigotConfig = new org.spigotmc.SpigotWorldConfig(((net.minecraft.world.level.storage.PrimaryLevelData) levelData).getLevelName()); // Spigot 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 this.paperConfig = paperWorldConfigCreator.apply(this.spigotConfig); // Paper - create paper world config
@@ -65,7 +65,7 @@
this.generator = generator; this.generator = generator;
this.world = new CraftWorld((ServerLevel) this, generator, biomeProvider, environment); this.world = new CraftWorld((ServerLevel) this, generator, biomeProvider, environment);
@@ -1407,4 +_,14 @@ @@ -1417,4 +_,14 @@
return this.id; return this.id;
} }
} }

View File

@@ -1,14 +1,6 @@
From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001
From: File <noreply+automated@papermc.io>
Date: Sun, 20 Apr 1997 06:37:42 -0700
Subject: [PATCH] purpur File Patches
diff --git a/net/minecraft/world/level/chunk/storage/RegionFileStorage.java b/net/minecraft/world/level/chunk/storage/RegionFileStorage.java
index 384f2cd090d6d23bd1308d6e82c24338f2bf55d1..77db68349aa73d33b86a867099c9395c96d5a02d 100644
--- a/net/minecraft/world/level/chunk/storage/RegionFileStorage.java --- a/net/minecraft/world/level/chunk/storage/RegionFileStorage.java
+++ b/net/minecraft/world/level/chunk/storage/RegionFileStorage.java +++ b/net/minecraft/world/level/chunk/storage/RegionFileStorage.java
@@ -308,7 +308,7 @@ public class RegionFileStorage implements AutoCloseable, ca.spottedleaf.moonrise @@ -49,7 +_,7 @@
// Paper start // Paper start
private static void printOversizedLog(String msg, Path file, int x, int z) { private static void printOversizedLog(String msg, Path file, int x, int z) {

View File

@@ -17,10 +17,10 @@ You should have received a copy of the GNU General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>. 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 diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java
index 041fc1d4182834bda5de9b2172601a2a59b5514b..2c87953a3b99c5e776fe06271d5cba5cc355bf53 100644 index 771bd838bdda98f0cb626e58be893ee82140f81e..1e153eb974be9d1fde9d3a0ad2d8fbd2c3c44803 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
@@ -301,6 +301,7 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { @@ -304,6 +304,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()) {
@@ -29,10 +29,10 @@ index 041fc1d4182834bda5de9b2172601a2a59b5514b..2c87953a3b99c5e776fe06271d5cba5c
} }
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 3c8e98218e4bc63a9260ea31af10981e033fe81b..fcc7bc9098e2544588d8b36dd0cff59e6a2563bd 100644 index e48849bff8e64a16f04d75ad3f0ff769ef3a813e..0d303c3c614142b4183e76f9347e613d7e6db211 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
@@ -1436,6 +1436,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player { @@ -1439,6 +1439,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()) {
@@ -40,7 +40,7 @@ index 3c8e98218e4bc63a9260ea31af10981e033fe81b..fcc7bc9098e2544588d8b36dd0cff59e
return false; return false;
} }
@@ -1457,6 +1458,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player { @@ -1460,6 +1461,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
} }
if (entity.isVehicle() && !ignorePassengers) { // Paper - Teleport API if (entity.isVehicle() && !ignorePassengers) { // Paper - Teleport API

View File

@@ -6,10 +6,10 @@ Subject: [PATCH] API for any mob to burn daylight
Co-authored by: Encode42 <me@encode42.dev> 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 diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java
index 2c87953a3b99c5e776fe06271d5cba5cc355bf53..395951c968e95adffa97e1851d104faf192744fd 100644 index 1e153eb974be9d1fde9d3a0ad2d8fbd2c3c44803..86a9adcb98281396b7447aac20b87cb8c15557dd 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
@@ -112,6 +112,13 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { @@ -115,6 +115,13 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity {
} }
// Purpur end - Fire Immunity API // Purpur end - Fire Immunity API

View File

@@ -13,12 +13,12 @@
getManifestAttribute(manifest, ATTRIBUTE_BRAND_ID) getManifestAttribute(manifest, ATTRIBUTE_BRAND_ID)
.map(Key::key) .map(Key::key)
- .orElse(BRAND_PAPER_ID), - .orElse(BRAND_PAPER_ID),
+ .orElse(BRAND_PURPUR_ID), // Purpur - Fix pufferfish issues // Purpur - Rebrand + .orElse(BRAND_PURPUR_ID), // Purpur - Rebrand
getManifestAttribute(manifest, ATTRIBUTE_BRAND_NAME) getManifestAttribute(manifest, ATTRIBUTE_BRAND_NAME)
- .orElse(BRAND_PAPER_NAME), - .orElse(BRAND_PAPER_NAME),
+ .orElse(BRAND_PURPUR_NAME), // Purpur - Fix pufferfish issues // Purpur - Rebrand + .orElse(BRAND_PURPUR_NAME), // Purpur - Rebrand
SharedConstants.getCurrentVersion().getId(), SharedConstants.getCurrentVersion().id(),
SharedConstants.getCurrentVersion().getName(), SharedConstants.getCurrentVersion().name(),
getManifestAttribute(manifest, ATTRIBUTE_BUILD_NUMBER) getManifestAttribute(manifest, ATTRIBUTE_BUILD_NUMBER)
@@ -61,7 +_,7 @@ @@ -61,7 +_,7 @@

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
@@ -336,6 +_,12 @@ @@ -340,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;
@@ -573,4 +_,183 @@ @@ -577,4 +_,183 @@
manager.save(); manager.save();
} }
} }

View File

@@ -1,6 +1,6 @@
--- 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 +_,7 @@ @@ -75,7 +_,7 @@
public int getRange() { public int getRange() {
this.ensureNoWorldGeneration(); this.ensureNoWorldGeneration();
ConduitBlockEntity conduit = (ConduitBlockEntity) this.getBlockEntityFromWorld(); ConduitBlockEntity conduit = (ConduitBlockEntity) this.getBlockEntityFromWorld();

View File

@@ -1,6 +1,6 @@
--- 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
@@ -100,6 +_,18 @@ @@ -103,6 +_,18 @@
this.entityType = CraftEntityType.minecraftToBukkit(entity.getType()); this.entityType = CraftEntityType.minecraftToBukkit(entity.getType());
} }

View File

@@ -1,6 +1,6 @@
--- 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
@@ -295,6 +_,7 @@ @@ -301,6 +_,7 @@
@Override @Override
public void recalculatePermissions() { public void recalculatePermissions() {
this.perm.recalculatePermissions(); this.perm.recalculatePermissions();

View File

@@ -1,8 +1,8 @@
--- 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
@@ -143,4 +_,53 @@ @@ -145,4 +_,53 @@
public UUID getThrower() { public UUID getThrower() {
return this.getHandle().thrower; return Optionull.map(this.getHandle().thrower, EntityReference::getUUID);
} }
+ +
+ // Purpur start - Item entity immunities + // Purpur start - Item entity immunities

View File

@@ -1,6 +1,6 @@
--- 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
@@ -614,10 +_,15 @@ @@ -617,10 +_,15 @@
@Override @Override
public void setPlayerListName(String name) { public void setPlayerListName(String name) {
@@ -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)) {
@@ -2723,6 +_,28 @@ @@ -2718,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);
} }
@@ -3576,4 +_,76 @@ @@ -3571,4 +_,76 @@
public void setDeathScreenScore(final int score) { public void setDeathScreenScore(final int score) {
getHandle().setScore(score); getHandle().setScore(score);
} }

View File

@@ -1,6 +1,6 @@
--- a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java --- a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
+++ b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java +++ b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
@@ -485,7 +_,7 @@ @@ -487,7 +_,7 @@
@Override @Override
public com.destroystokyo.paper.util.VersionFetcher getVersionFetcher() { public com.destroystokyo.paper.util.VersionFetcher getVersionFetcher() {