Updated Upstream (Paper & Purpur)

This commit is contained in:
AlphaKR93
2024-05-14 18:18:42 +09:00
parent 069250da59
commit 34fef470e5
42 changed files with 477 additions and 4141 deletions

View File

@@ -1,6 +1,6 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: granny <contact@granny.dev>
Date: Wed, 8 May 2024 08:14:50 +0000
Date: Tue, 14 May 2024 17:29:02 +0900
Subject: [PATCH] Purpur Server Changes
PurpurMC
@@ -25,25 +25,19 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
diff --git a/build.gradle.kts b/build.gradle.kts
index 5d448d8a7cf6626a11791f30ad52baf41a099272..81996f00384674b29368e8bea944bdd14d631da3 100644
index 87bb3fd9b97506f61734ae7f2e6860610ba794e7..89f21e21efc5f5ab99d1586f4f3b8f2f3c48ac06 100644
--- a/build.gradle.kts
+++ b/build.gradle.kts
@@ -12,8 +12,12 @@ configurations.named(log4jPlugins.compileClasspathConfigurationName) {
@@ -12,7 +12,7 @@ configurations.named(log4jPlugins.compileClasspathConfigurationName) {
val alsoShade: Configuration by configurations.creating
dependencies {
- implementation(project(":paper-api"))
- implementation(project(":paper-mojangapi"))
+ // Purpur start
+ implementation(project(":purpur-api"))
+ implementation("io.papermc.paper:paper-mojangapi:${project.version}") {
+ exclude("io.papermc.paper", "paper-api")
+ }
+ // Purpur end
+ implementation(project(":purpur-api")) // Purpur
// Paper start
implementation("org.jline:jline-terminal-jansi:3.21.0")
implementation("net.minecrell:terminalconsoleappender:1.3.0")
@@ -47,6 +51,10 @@ dependencies {
@@ -46,6 +46,10 @@ dependencies {
runtimeOnly("org.apache.maven.resolver:maven-resolver-connector-basic:1.9.18")
runtimeOnly("org.apache.maven.resolver:maven-resolver-transport-http:1.9.18")
@@ -54,7 +48,7 @@ index 5d448d8a7cf6626a11791f30ad52baf41a099272..81996f00384674b29368e8bea944bdd1
testImplementation("io.github.classgraph:classgraph:4.8.47") // Paper - mob goal test
testImplementation("org.junit.jupiter:junit-jupiter:5.10.2")
testImplementation("org.hamcrest:hamcrest:2.2")
@@ -79,7 +87,7 @@ tasks.jar {
@@ -78,7 +82,7 @@ tasks.jar {
attributes(
"Main-Class" to "org.bukkit.craftbukkit.Main",
"Implementation-Title" to "CraftBukkit",
@@ -63,7 +57,7 @@ index 5d448d8a7cf6626a11791f30ad52baf41a099272..81996f00384674b29368e8bea944bdd1
"Implementation-Vendor" to date, // Paper
"Specification-Title" to "Bukkit",
"Specification-Version" to project.version,
@@ -138,7 +146,7 @@ fun TaskContainer.registerRunTask(
@@ -137,7 +141,7 @@ fun TaskContainer.registerRunTask(
name: String,
block: JavaExec.() -> Unit
): TaskProvider<JavaExec> = register<JavaExec>(name) {
@@ -491,6 +485,30 @@ index f0fce4113fb07c64adbec029d177c236cbdcbae8..e94224ed280247ee69dfdff8dc960f2b
sender.sendMessage(component);
}
diff --git a/src/main/java/io/papermc/paper/command/brigadier/bukkit/BukkitCommandNode.java b/src/main/java/io/papermc/paper/command/brigadier/bukkit/BukkitCommandNode.java
index 10a113b057b0a4d27cce3bae975e1108aaa7b517..02597f890ac7f2dc12c94c283356b8309638dd17 100644
--- a/src/main/java/io/papermc/paper/command/brigadier/bukkit/BukkitCommandNode.java
+++ b/src/main/java/io/papermc/paper/command/brigadier/bukkit/BukkitCommandNode.java
@@ -75,16 +75,16 @@ public class BukkitCommandNode extends LiteralCommandNode<CommandSourceStack> {
// Plugins do weird things to workaround normal registration
if (this.command.timings == null) {
- this.command.timings = co.aikar.timings.TimingsManager.getCommandTiming(null, this.command);
+ //this.command.timings = co.aikar.timings.TimingsManager.getCommandTiming(null, this.command); // Purpur
}
String content = context.getRange().get(context.getInput());
String[] args = org.apache.commons.lang3.StringUtils.split(content, ' '); // fix adjacent spaces (from console/plugins) causing empty array elements
- try (Timing ignored = this.command.timings.startTiming()) {
+ //try (Timing ignored = this.command.timings.startTiming()) { // Purpur
// Note: we don't return the result of target.execute as thats success / failure, we return handled (true) or not handled (false)
this.command.execute(sender, this.literal, Arrays.copyOfRange(args, 1, args.length));
- }
+ //} // Purpur
// return true as command was handled
return 1;
diff --git a/src/main/java/io/papermc/paper/logging/SysoutCatcher.java b/src/main/java/io/papermc/paper/logging/SysoutCatcher.java
index a8e813ca89b033f061e695288b3383bdcf128531..1ab65af9359d19530bba7f985a604d2a430ee234 100644
--- a/src/main/java/io/papermc/paper/logging/SysoutCatcher.java
@@ -656,10 +674,10 @@ index 4f3cc14d48690bb183d09bb7a5ba1e23e8a0c08a..c366d84518979e842a6f10f969a59515
stringbuilder.append(CrashReport.getErrorComment());
stringbuilder.append("\n\n");
diff --git a/src/main/java/net/minecraft/commands/CommandSourceStack.java b/src/main/java/net/minecraft/commands/CommandSourceStack.java
index e6c7f62ed379a78645933670299e4fcda8540ed1..7475aaac2673729091eabc741c8ebb561aeec8f1 100644
index 59d7e8a3d83d3ab7aa28606401bb129ccaeff240..684536f600cca94ea346129a139ec4aac4d9f979 100644
--- a/src/main/java/net/minecraft/commands/CommandSourceStack.java
+++ b/src/main/java/net/minecraft/commands/CommandSourceStack.java
@@ -230,6 +230,19 @@ public class CommandSourceStack implements ExecutionCommandSource<CommandSourceS
@@ -209,6 +209,19 @@ public class CommandSourceStack implements ExecutionCommandSource<CommandSourceS
}
// CraftBukkit end
@@ -679,7 +697,7 @@ index e6c7f62ed379a78645933670299e4fcda8540ed1..7475aaac2673729091eabc741c8ebb56
public Vec3 getPosition() {
return this.worldPosition;
}
@@ -331,6 +344,30 @@ public class CommandSourceStack implements ExecutionCommandSource<CommandSourceS
@@ -310,6 +323,30 @@ public class CommandSourceStack implements ExecutionCommandSource<CommandSourceS
}
}
@@ -711,7 +729,7 @@ index e6c7f62ed379a78645933670299e4fcda8540ed1..7475aaac2673729091eabc741c8ebb56
boolean flag1 = this.source.acceptsSuccess() && !this.silent;
boolean flag2 = broadcastToOps && this.source.shouldInformAdmins() && !this.silent;
diff --git a/src/main/java/net/minecraft/commands/Commands.java b/src/main/java/net/minecraft/commands/Commands.java
index aa2fca6917fb67fe0e9ba067d11487c3a274f675..f9d0e8ee9414b3897f268ba78a1469ddf868f51a 100644
index 24086a82e1687cb1925398218b18c2384fa8f6e3..55b29e9a540cfc00dc32c7ae14d603c150e8863d 100644
--- a/src/main/java/net/minecraft/commands/Commands.java
+++ b/src/main/java/net/minecraft/commands/Commands.java
@@ -166,7 +166,7 @@ public class Commands {
@@ -749,8 +767,8 @@ index aa2fca6917fb67fe0e9ba067d11487c3a274f675..f9d0e8ee9414b3897f268ba78a1469dd
}
if (environment.includeIntegrated) {
@@ -327,9 +335,9 @@ public class Commands {
public void performCommand(ParseResults<CommandSourceStack> parseresults, String s, String label) { // CraftBukkit
@@ -339,9 +347,9 @@ public class Commands {
// Paper end
CommandSourceStack commandlistenerwrapper = (CommandSourceStack) parseresults.getContext().getSource();
- commandlistenerwrapper.getServer().getProfiler().push(() -> {
@@ -761,7 +779,7 @@ index aa2fca6917fb67fe0e9ba067d11487c3a274f675..f9d0e8ee9414b3897f268ba78a1469dd
ContextChain contextchain = this.finishParsing(parseresults, s, commandlistenerwrapper, label); // CraftBukkit // Paper - Add UnknownCommandEvent
try {
@@ -358,7 +366,7 @@ public class Commands {
@@ -371,7 +379,7 @@ public class Commands {
Commands.LOGGER.error("'/{}' threw an exception", s, exception);
}
} finally {
@@ -770,7 +788,7 @@ index aa2fca6917fb67fe0e9ba067d11487c3a274f675..f9d0e8ee9414b3897f268ba78a1469dd
}
}
@@ -501,6 +509,7 @@ public class Commands {
@@ -514,6 +522,7 @@ public class Commands {
private void runSync(ServerPlayer player, Collection<String> bukkit, RootCommandNode<SharedSuggestionProvider> rootcommandnode) {
// Paper end - Perf: Async command map building
new com.destroystokyo.paper.event.brigadier.AsyncPlayerSendCommandsEvent<CommandSourceStack>(player.getBukkitEntity(), (RootCommandNode) rootcommandnode, false).callEvent(); // Paper - Brigadier API
@@ -778,7 +796,7 @@ index aa2fca6917fb67fe0e9ba067d11487c3a274f675..f9d0e8ee9414b3897f268ba78a1469dd
PlayerCommandSendEvent event = new PlayerCommandSendEvent(player.getBukkitEntity(), new LinkedHashSet<>(bukkit));
event.getPlayer().getServer().getPluginManager().callEvent(event);
@@ -511,6 +520,7 @@ public class Commands {
@@ -524,6 +533,7 @@ public class Commands {
}
}
// CraftBukkit end
@@ -1050,7 +1068,7 @@ index 5443013060b62e3bfcc51cddca96d1c0bc59fe72..411f1f8c6be072cfc5ba88cbec38dbc4
Bootstrap.bootStrap();
Bootstrap.validate();
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
index 8dc2f9df367c849ca333bf1a1fd92ff91617b548..21327a92b75a460c7beb3aa408502f37a7db31fa 100644
index 39303bb4e336732db0ab19dee0c1f8b609bbb134..dfe3d28bd97d1335457d1005ecf69afe75d5ff80 100644
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
@@ -300,6 +300,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -1060,7 +1078,7 @@ index 8dc2f9df367c849ca333bf1a1fd92ff91617b548..21327a92b75a460c7beb3aa408502f37
+ public static final long startTimeMillis = System.currentTimeMillis();
public java.util.Queue<Runnable> processQueue = new java.util.concurrent.ConcurrentLinkedQueue<Runnable>();
public int autosavePeriod;
public Commands vanillaCommandDispatcher;
// Paper - don't store the vanilla dispatcher
@@ -310,11 +311,13 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
public static final int TICK_TIME = 1000000000 / MinecraftServer.TPS;
private static final int SAMPLE_INTERVAL = 20; // Paper - improve server tick loop
@@ -1096,7 +1114,7 @@ index 8dc2f9df367c849ca333bf1a1fd92ff91617b548..21327a92b75a460c7beb3aa408502f37
this.random = RandomSource.create();
this.port = -1;
this.levels = Maps.newLinkedHashMap();
@@ -960,7 +963,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -962,7 +965,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
shutdownThread = Thread.currentThread();
org.spigotmc.WatchdogThread.doStop(); // Paper
if (!isSameThread()) {
@@ -1105,7 +1123,7 @@ index 8dc2f9df367c849ca333bf1a1fd92ff91617b548..21327a92b75a460c7beb3aa408502f37
while (this.getRunningThread().isAlive()) {
this.getRunningThread().stop();
try {
@@ -970,13 +973,21 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -972,13 +975,21 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
}
// Paper end
// CraftBukkit end
@@ -1129,7 +1147,7 @@ index 8dc2f9df367c849ca333bf1a1fd92ff91617b548..21327a92b75a460c7beb3aa408502f37
// CraftBukkit start
if (this.server != null) {
this.server.disablePlugins();
@@ -1059,6 +1070,8 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -1061,6 +1072,8 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
this.safeShutdown(waitForShutdown, false);
}
public void safeShutdown(boolean waitForShutdown, boolean isRestarting) {
@@ -1138,7 +1156,7 @@ index 8dc2f9df367c849ca333bf1a1fd92ff91617b548..21327a92b75a460c7beb3aa408502f37
this.isRestarting = isRestarting;
this.hasLoggedStop = true; // Paper - Debugging
if (isDebugging()) io.papermc.paper.util.TraceUtil.dumpTraceForThread("Server stopped"); // Paper - Debugging
@@ -1085,6 +1098,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -1087,6 +1100,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
private static final long MAX_CATCHUP_BUFFER = TICK_TIME * TPS * 60L;
private long lastTick = 0;
private long catchupTime = 0;
@@ -1146,7 +1164,7 @@ index 8dc2f9df367c849ca333bf1a1fd92ff91617b548..21327a92b75a460c7beb3aa408502f37
public final RollingAverage tps1 = new RollingAverage(60);
public final RollingAverage tps5 = new RollingAverage(60 * 5);
public final RollingAverage tps15 = new RollingAverage(60 * 15);
@@ -1174,6 +1188,16 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -1176,6 +1190,16 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
}
// Paper end - Add onboarding message for initial server start
@@ -1163,7 +1181,7 @@ index 8dc2f9df367c849ca333bf1a1fd92ff91617b548..21327a92b75a460c7beb3aa408502f37
while (this.running) {
// Paper start - rewrite chunk system
// guarantee that nothing can stop the server from halting if it can at least still tick
@@ -1207,14 +1231,19 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -1209,14 +1233,19 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
if (++MinecraftServer.currentTick % MinecraftServer.SAMPLE_INTERVAL == 0) {
final long diff = currentTime - tickSection;
final java.math.BigDecimal currentTps = TPS_BASE.divide(new java.math.BigDecimal(diff), 30, java.math.RoundingMode.HALF_UP);
@@ -1186,7 +1204,7 @@ index 8dc2f9df367c849ca333bf1a1fd92ff91617b548..21327a92b75a460c7beb3aa408502f37
tickSection = currentTime;
}
// Paper end - further improve server tick loop
@@ -1222,22 +1251,28 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -1224,22 +1253,28 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
boolean flag = i == 0L;
@@ -1220,7 +1238,7 @@ index 8dc2f9df367c849ca333bf1a1fd92ff91617b548..21327a92b75a460c7beb3aa408502f37
this.startMeasuringTaskExecutionTime();
this.waitUntilNextTick();
this.finishMeasuringTaskExecutionTime();
@@ -1245,9 +1280,9 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -1247,9 +1282,9 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
this.tickRateManager.endTickWork();
}
@@ -1233,7 +1251,7 @@ index 8dc2f9df367c849ca333bf1a1fd92ff91617b548..21327a92b75a460c7beb3aa408502f37
this.isReady = true;
JvmProfiler.INSTANCE.onServerTick(this.smoothedTickTimeMillis);
}
@@ -1456,7 +1491,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -1458,7 +1493,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
return;
}
@@ -1242,7 +1260,7 @@ index 8dc2f9df367c849ca333bf1a1fd92ff91617b548..21327a92b75a460c7beb3aa408502f37
try {
for (;;) {
boolean moreTasks = this.tickMidTickTasks();
@@ -1483,7 +1518,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -1485,7 +1520,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
}
}
} finally {
@@ -1251,7 +1269,7 @@ index 8dc2f9df367c849ca333bf1a1fd92ff91617b548..21327a92b75a460c7beb3aa408502f37
}
}
// Paper end - execute chunk tasks mid tick
@@ -1511,7 +1546,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -1513,7 +1548,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
}
public void doRunTask(TickTask ticktask) { // CraftBukkit - decompile error
@@ -1260,7 +1278,7 @@ index 8dc2f9df367c849ca333bf1a1fd92ff91617b548..21327a92b75a460c7beb3aa408502f37
super.doRunTask(ticktask);
}
@@ -1558,15 +1593,15 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -1560,15 +1595,15 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
}
public void tickServer(BooleanSupplier shouldKeepTicking) {
@@ -1279,7 +1297,7 @@ index 8dc2f9df367c849ca333bf1a1fd92ff91617b548..21327a92b75a460c7beb3aa408502f37
// Paper end
new com.destroystokyo.paper.event.server.ServerTickStartEvent(this.tickCount+1).callEvent(); // Paper - Server Tick Events
@@ -1584,7 +1619,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -1586,7 +1621,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
if (playerSaveInterval < 0) {
playerSaveInterval = autosavePeriod;
}
@@ -1288,7 +1306,7 @@ index 8dc2f9df367c849ca333bf1a1fd92ff91617b548..21327a92b75a460c7beb3aa408502f37
final boolean fullSave = autosavePeriod > 0 && this.tickCount % autosavePeriod == 0;
try {
this.isSaving = true;
@@ -1599,20 +1634,20 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -1601,20 +1636,20 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
} finally {
this.isSaving = false;
}
@@ -1313,7 +1331,7 @@ index 8dc2f9df367c849ca333bf1a1fd92ff91617b548..21327a92b75a460c7beb3aa408502f37
long j = Util.getNanos() - i;
int k = this.tickCount % 100;
@@ -1626,9 +1661,9 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -1628,9 +1663,9 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
this.tickTimes60s.add(this.tickCount, j);
// Paper end - Add tick times API and /mspt command
this.logTickMethodTime(i);
@@ -1325,7 +1343,7 @@ index 8dc2f9df367c849ca333bf1a1fd92ff91617b548..21327a92b75a460c7beb3aa408502f37
}
private void logTickMethodTime(long tickStartTime) {
@@ -1699,9 +1734,9 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -1701,9 +1736,9 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
this.getPlayerList().getPlayers().forEach((entityplayer) -> {
entityplayer.connection.suspendFlushing();
});
@@ -1337,7 +1355,7 @@ index 8dc2f9df367c849ca333bf1a1fd92ff91617b548..21327a92b75a460c7beb3aa408502f37
// Paper start - Folia scheduler API
((io.papermc.paper.threadedregions.scheduler.FoliaGlobalRegionScheduler) Bukkit.getGlobalRegionScheduler()).tick();
getAllLevels().forEach(level -> {
@@ -1717,22 +1752,22 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -1719,22 +1754,22 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
});
// Paper end - Folia scheduler API
io.papermc.paper.adventure.providers.ClickCallbackProviderImpl.CALLBACK_MANAGER.handleQueue(this.tickCount); // Paper
@@ -1367,7 +1385,7 @@ index 8dc2f9df367c849ca333bf1a1fd92ff91617b548..21327a92b75a460c7beb3aa408502f37
// Send time updates to everyone, it will get the right time from the world the player is in.
// Paper start - Perf: Optimize time updates
for (final ServerLevel level : this.getAllLevels()) {
@@ -1741,7 +1776,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -1743,7 +1778,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
long worldTime = level.getGameTime();
final ClientboundSetTimePacket worldPacket = new ClientboundSetTimePacket(worldTime, dayTime, doDaylight);
for (Player entityhuman : level.players()) {
@@ -1376,7 +1394,7 @@ index 8dc2f9df367c849ca333bf1a1fd92ff91617b548..21327a92b75a460c7beb3aa408502f37
continue;
}
ServerPlayer entityplayer = (ServerPlayer) entityhuman;
@@ -1752,7 +1787,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -1754,7 +1789,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
}
}
// Paper end - Perf: Optimize time updates
@@ -1385,7 +1403,7 @@ index 8dc2f9df367c849ca333bf1a1fd92ff91617b548..21327a92b75a460c7beb3aa408502f37
this.isIteratingOverLevels = true; // Paper - Throw exception on world create while being ticked
Iterator iterator = this.getAllLevels().iterator(); // Paper - Throw exception on world create while being ticked; move down
@@ -1762,31 +1797,32 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -1764,31 +1799,32 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
worldserver.hasEntityMoveEvent = io.papermc.paper.event.entity.EntityMoveEvent.getHandlerList().getRegisteredListeners().length > 0; // Paper - Add EntityMoveEvent
net.minecraft.world.level.block.entity.HopperBlockEntity.skipHopperEvents = worldserver.paperConfig().hopper.disableMoveEvent || org.bukkit.event.inventory.InventoryMoveItemEvent.getHandlerList().getRegisteredListeners().length == 0; // Paper - Perf: Optimize Hoppers
worldserver.updateLagCompensationTick(); // Paper - lag compensation
@@ -1425,7 +1443,7 @@ index 8dc2f9df367c849ca333bf1a1fd92ff91617b548..21327a92b75a460c7beb3aa408502f37
} catch (Throwable throwable) {
CrashReport crashreport = CrashReport.forThrowable(throwable, "Exception ticking world");
@@ -1794,33 +1830,33 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -1796,33 +1832,33 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
throw new ReportedException(crashreport);
}
@@ -1471,7 +1489,7 @@ index 8dc2f9df367c849ca333bf1a1fd92ff91617b548..21327a92b75a460c7beb3aa408502f37
iterator = this.playerList.getPlayers().iterator();
while (iterator.hasNext()) {
@@ -1830,7 +1866,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -1832,7 +1868,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
entityplayer.connection.resumeFlushing();
}
@@ -1480,7 +1498,7 @@ index 8dc2f9df367c849ca333bf1a1fd92ff91617b548..21327a92b75a460c7beb3aa408502f37
}
private void synchronizeTime(ServerLevel world) {
@@ -1838,7 +1874,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -1840,7 +1876,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
}
public void forceTimeSynchronization() {
@@ -1489,7 +1507,7 @@ index 8dc2f9df367c849ca333bf1a1fd92ff91617b548..21327a92b75a460c7beb3aa408502f37
Iterator iterator = this.getAllLevels().iterator();
while (iterator.hasNext()) {
@@ -1847,7 +1883,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -1849,7 +1885,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
this.synchronizeTime(worldserver);
}
@@ -1498,7 +1516,7 @@ index 8dc2f9df367c849ca333bf1a1fd92ff91617b548..21327a92b75a460c7beb3aa408502f37
}
public boolean isNetherEnabled() {
@@ -1924,7 +1960,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -1926,7 +1962,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@DontObfuscate
public String getServerModName() {
@@ -1507,7 +1525,7 @@ index 8dc2f9df367c849ca333bf1a1fd92ff91617b548..21327a92b75a460c7beb3aa408502f37
}
public SystemReport fillSystemReport(SystemReport details) {
@@ -2550,6 +2586,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -2561,6 +2597,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
}
public ProfilerFiller getProfiler() {
@@ -1515,7 +1533,7 @@ index 8dc2f9df367c849ca333bf1a1fd92ff91617b548..21327a92b75a460c7beb3aa408502f37
return this.profiler;
}
@@ -2796,7 +2833,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -2807,7 +2844,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
// CraftBukkit end
private void startMetricsRecordingTick() {
@@ -1524,7 +1542,7 @@ index 8dc2f9df367c849ca333bf1a1fd92ff91617b548..21327a92b75a460c7beb3aa408502f37
this.metricsRecorder = ActiveMetricsRecorder.createStarted(new ServerMetricsSamplersProvider(Util.timeSource, this.isDedicatedServer()), Util.timeSource, Util.ioPool(), new MetricsPersister("server"), this.onMetricsRecordingStopped, (path) -> {
this.executeBlocking(() -> {
this.saveDebugReport(path.resolve("server"));
@@ -2806,40 +2843,40 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -2817,40 +2854,40 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
this.willStartRecordingMetrics = false;
}
@@ -1577,7 +1595,7 @@ index 8dc2f9df367c849ca333bf1a1fd92ff91617b548..21327a92b75a460c7beb3aa408502f37
}
public Path getWorldPath(LevelResource worldSavePath) {
@@ -2892,15 +2929,15 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -2903,15 +2940,15 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
}
public boolean isTimeProfilerRunning() {
@@ -1617,7 +1635,7 @@ index c7e1f2bac3eca9bb72bf1f8c26cccb2905e1ddfc..ef520d1dd00ae9473c1f34e2df4d8b06
// Paper end
}
diff --git a/src/main/java/net/minecraft/server/ServerFunctionManager.java b/src/main/java/net/minecraft/server/ServerFunctionManager.java
index a0ec6c3d122ad28d65d37f1b9f82541997b37d37..775b24a9e55528944b629fd85e1f6ebef9a9892f 100644
index c6d7ee0d498bd92d4321acd30ade10abea611e42..7aa1b3705ff548023f8b040678e4008cca3b8514 100644
--- a/src/main/java/net/minecraft/server/ServerFunctionManager.java
+++ b/src/main/java/net/minecraft/server/ServerFunctionManager.java
@@ -53,10 +53,10 @@ public class ServerFunctionManager {
@@ -1720,7 +1738,7 @@ index 47355158e5e762540a10dc67b23092a0fc53bce3..9f1c8a62bda242781a0966fa2fc01534
entityitem = entityplayer.drop(itemstack, false, false, false); // CraftBukkit - SPIGOT-2942: Add boolean to call event
if (entityitem != null) {
diff --git a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java
index eb4fc900164d1fb3a78653ae8bc42ea30323f5b7..775c5de4f5094260096cef6723dd50dfe2cb0c81 100644
index 2eb9c584cc77237f1c82d880a51a3f8b51008d73..957da64ddd0a56f457122a3f590b45e348f22382 100644
--- a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java
+++ b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java
@@ -110,6 +110,7 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface
@@ -1745,9 +1763,9 @@ index eb4fc900164d1fb3a78653ae8bc42ea30323f5b7..775c5de4f5094260096cef6723dd50df
+ org.purpurmc.purpur.PurpurConfig.registerCommands();
+ // Purpur end
com.destroystokyo.paper.VersionHistoryManager.INSTANCE.getClass(); // Paper - load version history now
io.papermc.paper.brigadier.PaperBrigadierProviderImpl.INSTANCE.getClass(); // Paper - init PaperBrigadierProvider
@@ -281,6 +291,30 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface
this.setPvpAllowed(dedicatedserverproperties.pvp);
@@ -280,6 +290,30 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface
if (true) throw new IllegalStateException("Failed to bind to port", ioexception); // Paper - Propagate failed to bind to port error
return false;
}
@@ -1778,7 +1796,7 @@ index eb4fc900164d1fb3a78653ae8bc42ea30323f5b7..775c5de4f5094260096cef6723dd50df
// CraftBukkit start
// this.setPlayerList(new DedicatedPlayerList(this, this.registries(), this.playerDataStorage)); // Spigot - moved up
@@ -354,6 +388,8 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface
@@ -353,6 +387,8 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface
DedicatedServer.LOGGER.info("JMX monitoring enabled");
}
@@ -1787,7 +1805,7 @@ index eb4fc900164d1fb3a78653ae8bc42ea30323f5b7..775c5de4f5094260096cef6723dd50df
return true;
}
}
@@ -506,7 +542,7 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface
@@ -505,7 +541,7 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface
}
public void handleConsoleInputs() {
@@ -1796,7 +1814,7 @@ index eb4fc900164d1fb3a78653ae8bc42ea30323f5b7..775c5de4f5094260096cef6723dd50df
// Paper start - Perf: use proper queue
ConsoleInput servercommand;
while ((servercommand = this.serverCommandQueue.poll()) != null) {
@@ -523,7 +559,7 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface
@@ -522,7 +558,7 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface
// CraftBukkit end
}
@@ -1968,7 +1986,7 @@ index 096c89bd01cec2abd151bf6fffc4847d1bcd548f..cd0a8a6a1be75cab8bbb8ee3ac17bb73
this.values[this.vp++ & 0xFF] = (int)(l * 100L / Runtime.getRuntime().maxMemory());
this.repaint();
diff --git a/src/main/java/net/minecraft/server/level/ChunkMap.java b/src/main/java/net/minecraft/server/level/ChunkMap.java
index dbe9df1e1973db133f7c8516256697ef7c968137..4e6fccec4f5ca14562bf5bae495ac36c14982d85 100644
index 7fb9ba3dadb1eca4a1000ea8cf4d13fed2b7db1e..345f143b0eeb77acb96e4bc716f3b23782ac782f 100644
--- a/src/main/java/net/minecraft/server/level/ChunkMap.java
+++ b/src/main/java/net/minecraft/server/level/ChunkMap.java
@@ -541,20 +541,20 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider
@@ -2258,7 +2276,7 @@ index b99f50604bafecbc68835974c9ed0caa91911a40..476a04d87a61b021816d2970e86042bd
}
diff --git a/src/main/java/net/minecraft/server/level/ServerEntity.java b/src/main/java/net/minecraft/server/level/ServerEntity.java
index 4f103f731623a8570238a6867fda1c5f83fca4e4..39e7dcf3c92c9203c190782be401c00c010b8aeb 100644
index f16a69775332a08ed0e87d27acd0fc959359694c..dd6278fe99e2ee4daa95249c71ea935dd08b0025 100644
--- a/src/main/java/net/minecraft/server/level/ServerEntity.java
+++ b/src/main/java/net/minecraft/server/level/ServerEntity.java
@@ -77,7 +77,7 @@ public class ServerEntity {
@@ -2271,7 +2289,7 @@ index 4f103f731623a8570238a6867fda1c5f83fca4e4..39e7dcf3c92c9203c190782be401c00c
public ServerEntity(ServerLevel worldserver, Entity entity, int i, boolean flag, Consumer<Packet<?>> consumer, Set<ServerPlayerConnection> trackedPlayers) {
this.trackedPlayers = trackedPlayers;
diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java
index 0981d440d0dbfe4df668d1f3f1b5706a93bc4434..f72af2feb74626abbdfbfd090c15357457810240 100644
index ca56a0b596976448da6bb2a0e82b3d5cd4133e12..7924e3c597164f71056cd58dd167ee8b1d41b9c3 100644
--- a/src/main/java/net/minecraft/server/level/ServerLevel.java
+++ b/src/main/java/net/minecraft/server/level/ServerLevel.java
@@ -220,6 +220,8 @@ public class ServerLevel extends Level implements WorldGenLevel {
@@ -2759,7 +2777,7 @@ index 0981d440d0dbfe4df668d1f3f1b5706a93bc4434..f72af2feb74626abbdfbfd090c153574
}
// Paper end - Fix merchant inventory not closing on entity removal
diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java
index 8437316888c6056060a2780652147590b6fe7443..d7e4a9fe9676563845d9981523bff1a7ff12282c 100644
index c10401e587a710d49c4af481c1e531b4bf51f755..37636343c1b62b7dfa426bd6ca2bd425fd1bfff3 100644
--- a/src/main/java/net/minecraft/server/level/ServerPlayer.java
+++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java
@@ -298,6 +298,10 @@ public class ServerPlayer extends Player {
@@ -3116,7 +3134,7 @@ index 1351423a12c19a01f602a202832372a399e6a867..1e2025674eafcf56460c741083c91e2e
Util.logAndPauseIfInIde("Detected setBlock in a far chunk [" + i + ", " + j + "], pos: " + String.valueOf(pos) + ", status: " + String.valueOf(this.generatingStatus) + (this.currentlyGenerating == null ? "" : ", currently generating: " + (String) this.currentlyGenerating.get()));
hasSetFarWarned = true;
diff --git a/src/main/java/net/minecraft/server/network/ServerCommonPacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerCommonPacketListenerImpl.java
index 8ac5d8ccf731100a1be690cb2ed1be82cadba8ed..8368c5ff929df9d32cdb95cc2da0e9f7f3b85d2a 100644
index 308aef9c4933b2bcdd622a34b68efab4a220fe4d..b82a72775f9de5ad65ae46a8b97f93a7ef852265 100644
--- a/src/main/java/net/minecraft/server/network/ServerCommonPacketListenerImpl.java
+++ b/src/main/java/net/minecraft/server/network/ServerCommonPacketListenerImpl.java
@@ -73,11 +73,13 @@ public abstract class ServerCommonPacketListenerImpl implements ServerCommonPack
@@ -3190,8 +3208,8 @@ index 8ac5d8ccf731100a1be690cb2ed1be82cadba8ed..8368c5ff929df9d32cdb95cc2da0e9f7
+ } else
+ // Purpur end
+
if (!this.isSingleplayerOwner() && elapsedTime >= KEEPALIVE_LIMIT) { // Paper - check keepalive limit, don't fire if already disconnected
if (this.keepAlivePending && !this.processedDisconnect) { // Paper
if (!this.isSingleplayerOwner() && elapsedTime >= 15000L) { // Paper - use vanilla's 15000L between keep alive packets
if (this.keepAlivePending && !this.processedDisconnect && elapsedTime >= KEEPALIVE_LIMIT) { // Paper - check keepalive limit, don't fire if already disconnected
this.disconnect(ServerCommonPacketListenerImpl.TIMEOUT_DISCONNECTION_MESSAGE, org.bukkit.event.player.PlayerKickEvent.Cause.TIMEOUT); // Paper - kick event cause
@@ -264,7 +298,7 @@ public abstract class ServerCommonPacketListenerImpl implements ServerCommonPack
}
@@ -3203,7 +3221,7 @@ index 8ac5d8ccf731100a1be690cb2ed1be82cadba8ed..8368c5ff929df9d32cdb95cc2da0e9f7
private boolean checkIfClosed(long time) {
diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
index 5e9202bc7fc649764568b55d66ba0d684118c00c..478f3bba5e0768c8ab800d7cb591f07db1bc20da 100644
index b9b3277c8ed94e0cd30b20b9c00a33eaad48e5ac..0c3768bb183451e9dfe94bbc9b203bd79e474b99 100644
--- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
+++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
@@ -332,6 +332,20 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
@@ -3443,34 +3461,7 @@ index 5e9202bc7fc649764568b55d66ba0d684118c00c..478f3bba5e0768c8ab800d7cb591f07d
org.bukkit.event.player.PlayerInteractEvent event = CraftEventFactory.callPlayerInteractEvent(this.player, Action.RIGHT_CLICK_AIR, itemstack, enumhand);
cancelled = event.useItemInHand() == Event.Result.DENY;
} else {
@@ -2466,7 +2546,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
public void handleCommand(String s) { // Paper - private -> public
org.spigotmc.AsyncCatcher.catchOp("Command Dispatched Async: " + s); // Paper - Add async catcher
- co.aikar.timings.MinecraftTimings.playerCommandTimer.startTiming(); // Paper
+ //co.aikar.timings.MinecraftTimings.playerCommandTimer.startTiming(); // Paper // Purpur
if ( org.spigotmc.SpigotConfig.logCommands ) // Spigot
this.LOGGER.info(this.player.getScoreboardName() + " issued server command: " + s);
@@ -2476,7 +2556,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
this.cserver.getPluginManager().callEvent(event);
if (event.isCancelled()) {
- co.aikar.timings.MinecraftTimings.playerCommandTimer.stopTiming(); // Paper
+ //co.aikar.timings.MinecraftTimings.playerCommandTimer.stopTiming(); // Paper // Purpur
return;
}
@@ -2489,7 +2569,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
java.util.logging.Logger.getLogger(ServerGamePacketListenerImpl.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
return;
} finally {
- co.aikar.timings.MinecraftTimings.playerCommandTimer.stopTiming(); // Paper
+ //co.aikar.timings.MinecraftTimings.playerCommandTimer.stopTiming(); // Paper // Purpur
}
}
// CraftBukkit end
@@ -2776,6 +2856,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
@@ -2759,6 +2839,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
AABB axisalignedbb = entity.getBoundingBox();
if (this.player.canInteractWithEntity(axisalignedbb, 1.0D)) {
@@ -3478,7 +3469,7 @@ index 5e9202bc7fc649764568b55d66ba0d684118c00c..478f3bba5e0768c8ab800d7cb591f07d
packet.dispatch(new ServerboundInteractPacket.Handler() {
private void performInteraction(InteractionHand enumhand, ServerGamePacketListenerImpl.EntityInteraction playerconnection_a, PlayerInteractEntityEvent event) { // CraftBukkit
ItemStack itemstack = ServerGamePacketListenerImpl.this.player.getItemInHand(enumhand);
@@ -2789,6 +2870,8 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
@@ -2772,6 +2853,8 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
ServerGamePacketListenerImpl.this.cserver.getPluginManager().callEvent(event);
@@ -3916,11 +3907,11 @@ index 99a7e9eb75231c15bd8bb24fbb4e296bc9fdedff..4fb025a63628eb60509d90b680922a02
}
}
diff --git a/src/main/java/net/minecraft/world/damagesource/DamageSource.java b/src/main/java/net/minecraft/world/damagesource/DamageSource.java
index 359a2f0492a9b938a4f015c546e100e0092ae1d4..25e614be19b2b29b36af136b823f27f85e1650fa 100644
index dd9638bdb228a53e72820e0e7cf6fe6fcc08fe4b..1ce1235cbbf23fe975c85a0f713280b433459951 100644
--- a/src/main/java/net/minecraft/world/damagesource/DamageSource.java
+++ b/src/main/java/net/minecraft/world/damagesource/DamageSource.java
@@ -29,6 +29,8 @@ public class DamageSource {
private boolean withSweep = false;
private boolean sweep = false;
private boolean melting = false;
private boolean poison = false;
+ private boolean scissors = false; // Purpur
@@ -3953,10 +3944,10 @@ index 359a2f0492a9b938a4f015c546e100e0092ae1d4..25e614be19b2b29b36af136b823f27f8
+ // Purpur end
+
// Paper start - fix DamageSource API
public @Nullable Entity getCustomEventDamager() {
return (this.customEventDamager != null) ? this.customEventDamager : this.directEntity;
@@ -101,6 +123,8 @@ public class DamageSource {
damageSource.withSweep = this.isSweep();
@Nullable
public Entity getCustomEventDamager() {
@@ -117,6 +139,8 @@ public class DamageSource {
damageSource.sweep = this.isSweep();
damageSource.poison = this.isPoison();
damageSource.melting = this.isMelting();
+ damageSource.scissors = this.isScissors(); // Purpur
@@ -3964,7 +3955,7 @@ index 359a2f0492a9b938a4f015c546e100e0092ae1d4..25e614be19b2b29b36af136b823f27f8
return damageSource;
}
// CraftBukkit end
@@ -173,10 +197,19 @@ public class DamageSource {
@@ -189,10 +213,19 @@ public class DamageSource {
ItemStack itemstack1 = itemstack;
@@ -3986,7 +3977,7 @@ index 359a2f0492a9b938a4f015c546e100e0092ae1d4..25e614be19b2b29b36af136b823f27f8
return this.type().msgId();
}
diff --git a/src/main/java/net/minecraft/world/damagesource/DamageSources.java b/src/main/java/net/minecraft/world/damagesource/DamageSources.java
index a1c53f04c2dd505e6af72e512e111d7994786035..5ffe772e29dfd422b664e8123e7f5cf396158674 100644
index 5ec8cbd07a1830876f58e1fd33de6df4466d7e95..b1fb94380b7d6bd2a3be31a4e8fe95367e948fe2 100644
--- a/src/main/java/net/minecraft/world/damagesource/DamageSources.java
+++ b/src/main/java/net/minecraft/world/damagesource/DamageSources.java
@@ -44,11 +44,15 @@ public class DamageSources {
@@ -4648,7 +4639,7 @@ index 09fdea983772612ef3fff6b2da3cf469a34e4ec0..3e2ea26c23e88c395856b65001f2895d
protected ParticleOptions getInkParticle() {
return ParticleTypes.GLOW_SQUID_INK;
diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java
index 6e043457a29a890bcefd27fc5bb07c1a7e4e30f7..53ff232129443ba3242cfc57fc57026bf76d96e8 100644
index 517e10c3d8b1549cd30fd0e7cf2bcb35e88eb8ed..3776b9bf7abce6b3024c50f04741031ef0e8e9c4 100644
--- a/src/main/java/net/minecraft/world/entity/LivingEntity.java
+++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java
@@ -229,9 +229,9 @@ public abstract class LivingEntity extends Entity implements Attackable {
@@ -4864,7 +4855,7 @@ index 6e043457a29a890bcefd27fc5bb07c1a7e4e30f7..53ff232129443ba3242cfc57fc57026b
+ } // Purpur
}
// CraftBukkit start - Call death event // Paper start - call advancement triggers with correct entity equipment
org.bukkit.event.entity.EntityDeathEvent deathEvent = CraftEventFactory.callEntityDeathEvent(this, this.drops, () -> {
org.bukkit.event.entity.EntityDeathEvent deathEvent = CraftEventFactory.callEntityDeathEvent(this, source, this.drops, () -> {
@@ -2363,6 +2412,21 @@ public abstract class LivingEntity extends Entity implements Attackable {
}
}
@@ -10230,7 +10221,7 @@ index d8e440e14b72dc48ae97244f1bed2c06abd997ab..15ca426701f1fc821da94a4dee577fdb
this.remove(Entity.RemovalReason.KILLED, EntityRemoveEvent.Cause.DEATH); // CraftBukkit - add Bukkit remove cause
}
diff --git a/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java b/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java
index 6f14607a88761171a72e274b3c9b476b20a272f1..3da1f7a6e443954e4976dd59391ea19b9c903cf7 100644
index 0e797e2714a2fd103cbd51548764577fd9b6412d..52e1dd6e064dc03312e18ca515a24e7d3e9be957 100644
--- a/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java
+++ b/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java
@@ -106,6 +106,7 @@ public class EnderDragon extends Mob implements Enemy {
@@ -10694,7 +10685,7 @@ index 7ddca52f7fe3f289b4b867e134326b1ead1a2aee..4a98027a12c2535d1df3a9f6390eb851
}
diff --git a/src/main/java/net/minecraft/world/entity/decoration/ArmorStand.java b/src/main/java/net/minecraft/world/entity/decoration/ArmorStand.java
index c2bd2e303f956d390319f6bbbe9a6492ebec5154..6697cd8a632becd72ee132007a61d1221e817abf 100644
index a02ca704e98ef42f32c3c50b111ee3537f60bf7b..92521cbedcf89a855f10a3401933acaf84bc3f98 100644
--- a/src/main/java/net/minecraft/world/entity/decoration/ArmorStand.java
+++ b/src/main/java/net/minecraft/world/entity/decoration/ArmorStand.java
@@ -103,10 +103,12 @@ public class ArmorStand extends LivingEntity {
@@ -10734,7 +10725,7 @@ index c2bd2e303f956d390319f6bbbe9a6492ebec5154..6697cd8a632becd72ee132007a61d122
// Paper start - Allow ArmorStands not to tick
if (!this.canTick) {
if (this.noTickPoseDirty) {
@@ -1003,4 +1008,18 @@ public class ArmorStand extends LivingEntity {
@@ -1008,4 +1013,18 @@ public class ArmorStand extends LivingEntity {
}
}
// Paper end
@@ -11132,7 +11123,7 @@ index 87e4b300ac248f6c13d9b4a8f24fd78b24b565b4..43b5a0e7993ae9daef1c1ea67722347f
public boolean doHurtTarget(Entity target) {
if (super.doHurtTarget(target)) {
diff --git a/src/main/java/net/minecraft/world/entity/monster/Creeper.java b/src/main/java/net/minecraft/world/entity/monster/Creeper.java
index cbcb2bfa8f91099e5c374f590f48885390bdf7a7..1829bedfa8084c4932a0e67c36f48f19993e22b6 100644
index 0ae4ba060b2ce2c79e1235c939f3c1926eb6e33e..76a0bc9bd6033f1c66e940392f5bed360e7db43c 100644
--- a/src/main/java/net/minecraft/world/entity/monster/Creeper.java
+++ b/src/main/java/net/minecraft/world/entity/monster/Creeper.java
@@ -61,21 +61,99 @@ public class Creeper extends Monster implements PowerableMob {
@@ -11288,8 +11279,8 @@ index cbcb2bfa8f91099e5c374f590f48885390bdf7a7..1829bedfa8084c4932a0e67c36f48f19
if (!event.isCancelled()) {
// CraftBukkit end
this.dead = true;
- this.level().explode(this, this.getX(), this.getY(), this.getZ(), event.getRadius(), event.getFire(), Level.ExplosionInteraction.MOB); // CraftBukkit // Paper - fix DamageSource API
+ this.level().explode(this, this.getX(), this.getY(), this.getZ(), event.getRadius(), event.getFire(), this.level().getGameRules().getBoolean(net.minecraft.world.level.GameRules.RULE_MOBGRIEFING) && level().purpurConfig.creeperAllowGriefing ? Level.ExplosionInteraction.MOB : Level.ExplosionInteraction.NONE); // CraftBukkit // Paper - fix DamageSource API // Purpur
- this.level().explode(this, this.getX(), this.getY(), this.getZ(), event.getRadius(), event.getFire(), Level.ExplosionInteraction.MOB); // CraftBukkit // Paper - fix DamageSource API (revert to vanilla, no, just no, don't change this)
+ this.level().explode(this, this.getX(), this.getY(), this.getZ(), event.getRadius(), event.getFire(), this.level().getGameRules().getBoolean(net.minecraft.world.level.GameRules.RULE_MOBGRIEFING) && level().purpurConfig.creeperAllowGriefing ? Level.ExplosionInteraction.MOB : Level.ExplosionInteraction.NONE); // CraftBukkit // Paper - fix DamageSource API (revert to vanilla, no, just no, don't change this) // Purpur
this.discard(EntityRemoveEvent.Cause.EXPLODE); // CraftBukkit - add Bukkit remove cause
this.spawnLingeringCloud();
// CraftBukkit start
@@ -15018,7 +15009,7 @@ index c72b6ea5530e54fc373c701028e1c147cea34b59..96e9fce5f9084737d2fcf4deb8330573
if (spawnplacementtype.isSpawnPositionOk(world, blockposition2, EntityType.WANDERING_TRADER)) {
blockposition1 = blockposition2;
diff --git a/src/main/java/net/minecraft/world/entity/player/Player.java b/src/main/java/net/minecraft/world/entity/player/Player.java
index 093d1388ff90ad59110a37536b6639f939549068..845c4af5d5d38d54de4a1b20fe32bf5dd4776a29 100644
index 093d1388ff90ad59110a37536b6639f939549068..9bef8e88fb6c04388b329011a7ca2fc592a283bb 100644
--- a/src/main/java/net/minecraft/world/entity/player/Player.java
+++ b/src/main/java/net/minecraft/world/entity/player/Player.java
@@ -195,17 +195,40 @@ public abstract class Player extends LivingEntity {
@@ -15156,6 +15147,15 @@ index 093d1388ff90ad59110a37536b6639f939549068..845c4af5d5d38d54de4a1b20fe32bf5d
public boolean setEntityOnShoulder(CompoundTag entityNbt) {
if (!this.isPassenger() && this.onGround() && !this.isInWater() && !this.isInPowderSnow) {
if (this.getShoulderEntityLeft().isEmpty()) {
@@ -2312,7 +2368,7 @@ public abstract class Player extends LivingEntity {
}
}
- return this.abilities.instabuild ? new ItemStack(Items.ARROW) : ItemStack.EMPTY;
+ return this.abilities.instabuild || (level().purpurConfig.infinityWorksWithoutArrows && net.minecraft.world.item.enchantment.EnchantmentHelper.getItemEnchantmentLevel(net.minecraft.world.item.enchantment.Enchantments.INFINITY, stack) > 0) ? new ItemStack(Items.ARROW) : ItemStack.EMPTY; // Purpur
}
}
}
@@ -2321,7 +2377,7 @@ public abstract class Player extends LivingEntity {
public ItemStack eat(Level world, ItemStack stack) {
this.getFoodData().eat(stack);
@@ -15318,10 +15318,10 @@ index 2b4d206c0d31ba38d7b2af654bd420e85145d441..1b9d0e28e518c501b4b93ae385ddd64a
protected void onHit(HitResult hitResult) {
super.onHit(hitResult);
diff --git a/src/main/java/net/minecraft/world/entity/projectile/ThrownEnderpearl.java b/src/main/java/net/minecraft/world/entity/projectile/ThrownEnderpearl.java
index 1fb1e729d6879568d8b4943071fa940325b2e5b0..d9761d8fe746e925a7a32dfc15eb8045c6150fe5 100644
index 519755b7f8bc7e8bb9fab135fc5bf7de3a9419f9..61bd2459f2b9164dce90134103abaddce42b0621 100644
--- a/src/main/java/net/minecraft/world/entity/projectile/ThrownEnderpearl.java
+++ b/src/main/java/net/minecraft/world/entity/projectile/ThrownEnderpearl.java
@@ -71,10 +71,11 @@ public class ThrownEnderpearl extends ThrowableItemProjectile {
@@ -70,10 +70,11 @@ public class ThrownEnderpearl extends ThrowableItemProjectile {
Bukkit.getPluginManager().callEvent(teleEvent);
if (!teleEvent.isCancelled() && entityplayer.connection.isAcceptingMessages()) {
@@ -15334,7 +15334,7 @@ index 1fb1e729d6879568d8b4943071fa940325b2e5b0..d9761d8fe746e925a7a32dfc15eb8045
entityendermite.moveTo(entity.getX(), entity.getY(), entity.getZ(), entity.getYRot(), entity.getXRot());
this.level().addFreshEntity(entityendermite, CreatureSpawnEvent.SpawnReason.ENDER_PEARL);
}
@@ -86,7 +87,7 @@ public class ThrownEnderpearl extends ThrowableItemProjectile {
@@ -85,7 +86,7 @@ public class ThrownEnderpearl extends ThrowableItemProjectile {
entityplayer.connection.teleport(teleEvent.getTo());
entity.resetFallDistance();
@@ -15857,10 +15857,10 @@ index 0dbfd23bbfc6ad203f048142f8c90ef741849fe1..9a80427d2bb470b6b1638e59aba57216
return new ChestMenu(MenuType.GENERIC_9x6, syncId, playerInventory, inventory, 6);
}
diff --git a/src/main/java/net/minecraft/world/inventory/EnchantmentMenu.java b/src/main/java/net/minecraft/world/inventory/EnchantmentMenu.java
index 5b3e33807e0e13480e3359c0cf067719e5749237..c3a644b0f8c7c5622acc9e1a496f95d432718806 100644
index 480d093105073edfd3acdd7b079b4ca5aa5fdc6d..6d28f1097caa3e37c2917eb401018ebf48c13a39 100644
--- a/src/main/java/net/minecraft/world/inventory/EnchantmentMenu.java
+++ b/src/main/java/net/minecraft/world/inventory/EnchantmentMenu.java
@@ -38,6 +38,12 @@ import org.bukkit.event.enchantment.PrepareItemEnchantEvent;
@@ -39,6 +39,12 @@ import org.bukkit.event.enchantment.PrepareItemEnchantEvent;
import org.bukkit.entity.Player;
// CraftBukkit end
@@ -15873,7 +15873,7 @@ index 5b3e33807e0e13480e3359c0cf067719e5749237..c3a644b0f8c7c5622acc9e1a496f95d4
public class EnchantmentMenu extends AbstractContainerMenu {
static final ResourceLocation EMPTY_SLOT_LAPIS_LAZULI = new ResourceLocation("item/empty_slot_lapis_lazuli");
@@ -72,6 +78,22 @@ public class EnchantmentMenu extends AbstractContainerMenu {
@@ -73,6 +79,22 @@ public class EnchantmentMenu extends AbstractContainerMenu {
return context.getLocation();
}
// CraftBukkit end
@@ -15896,7 +15896,7 @@ index 5b3e33807e0e13480e3359c0cf067719e5749237..c3a644b0f8c7c5622acc9e1a496f95d4
};
this.random = RandomSource.create();
this.enchantmentSeed = DataSlot.standalone();
@@ -97,6 +119,17 @@ public class EnchantmentMenu extends AbstractContainerMenu {
@@ -98,6 +120,17 @@ public class EnchantmentMenu extends AbstractContainerMenu {
}
});
@@ -15914,7 +15914,7 @@ index 5b3e33807e0e13480e3359c0cf067719e5749237..c3a644b0f8c7c5622acc9e1a496f95d4
int j;
for (j = 0; j < 3; ++j) {
@@ -332,6 +365,7 @@ public class EnchantmentMenu extends AbstractContainerMenu {
@@ -333,6 +366,7 @@ public class EnchantmentMenu extends AbstractContainerMenu {
public void removed(net.minecraft.world.entity.player.Player player) {
super.removed(player);
this.access.execute((world, blockposition) -> {
@@ -16128,7 +16128,7 @@ index 786e4a8700cb84b16dd9b8892a0d1d5803924d81..b108ca4c7900ccf6a14ebea01c21c103
// CraftBukkit start
Level world = pointer.level();
diff --git a/src/main/java/net/minecraft/world/item/ArmorStandItem.java b/src/main/java/net/minecraft/world/item/ArmorStandItem.java
index 1634a7d5ff06583408cf2f02f2b5f90931b1e02a..dfe8473a880cbddfc3ac6a9c97f1a500624eeb38 100644
index 1634a7d5ff06583408cf2f02f2b5f90931b1e02a..fd83261f64c6469aebde8ab13a6777b9b269cea2 100644
--- a/src/main/java/net/minecraft/world/item/ArmorStandItem.java
+++ b/src/main/java/net/minecraft/world/item/ArmorStandItem.java
@@ -58,6 +58,14 @@ public class ArmorStandItem extends Item {
@@ -16139,7 +16139,7 @@ index 1634a7d5ff06583408cf2f02f2b5f90931b1e02a..dfe8473a880cbddfc3ac6a9c97f1a500
+ if (!world.purpurConfig.persistentDroppableEntityDisplayNames) {
+ entityarmorstand.setCustomName(null);
+ }
+ if (world.purpurConfig.armorstandSetNameVisible) {
+ if (world.purpurConfig.armorstandSetNameVisible && entityarmorstand.getCustomName() != null) {
+ entityarmorstand.setCustomNameVisible(true);
+ }
+ // Purpur end
@@ -16276,7 +16276,7 @@ index eb74d45ad458b80cf8455297c3bc550186adaea3..ef01856c487e4ab982996e0153761823
return InteractionResultHolder.fail(itemstack);
} else {
diff --git a/src/main/java/net/minecraft/world/item/BowItem.java b/src/main/java/net/minecraft/world/item/BowItem.java
index 5ca843df5b4caa668953e5e36a9b20fabeb35046..8bca38ec152f9612298bf6b3e10e7e0566ec3b78 100644
index 5ca843df5b4caa668953e5e36a9b20fabeb35046..ec21d3d00deac4ad51f0a4beec2894675a461618 100644
--- a/src/main/java/net/minecraft/world/item/BowItem.java
+++ b/src/main/java/net/minecraft/world/item/BowItem.java
@@ -31,7 +31,7 @@ public class BowItem extends ProjectileWeaponItem {
@@ -16288,15 +16288,6 @@ index 5ca843df5b4caa668953e5e36a9b20fabeb35046..8bca38ec152f9612298bf6b3e10e7e05
}
world.playSound(
@@ -81,7 +81,7 @@ public class BowItem extends ProjectileWeaponItem {
public InteractionResultHolder<ItemStack> use(Level world, Player user, InteractionHand hand) {
ItemStack itemStack = user.getItemInHand(hand);
boolean bl = !user.getProjectile(itemStack).isEmpty();
- if (!user.hasInfiniteMaterials() && !bl) {
+ if (!(world.purpurConfig.infinityWorksWithoutArrows && net.minecraft.world.item.enchantment.EnchantmentHelper.getItemEnchantmentLevel(net.minecraft.world.item.enchantment.Enchantments.INFINITY, itemStack) > 0) && !user.hasInfiniteMaterials() && !bl) { // Purpur
return InteractionResultHolder.fail(itemStack);
} else {
user.startUsingItem(hand);
diff --git a/src/main/java/net/minecraft/world/item/BucketItem.java b/src/main/java/net/minecraft/world/item/BucketItem.java
index 49557d6f22c5725c663a231deab019d4f6fe95fa..046652e8f9c5dcdf7c90acb9391214cac46bd7d8 100644
--- a/src/main/java/net/minecraft/world/item/BucketItem.java
@@ -16951,7 +16942,7 @@ index ea0aee88c7d901034427db201c1b2430f8a1d522..1f28bfb435c1e4d97da713f96c452aba
if (range < 0.0 || d < range * range) {
return true;
diff --git a/src/main/java/net/minecraft/world/level/Explosion.java b/src/main/java/net/minecraft/world/level/Explosion.java
index dc88014c4d9f172cc54e5d77b488128f9ffbc73d..f5e84bf8817e2d53557e0909d8c9e0e0e8206a16 100644
index 082b804f4793f72e76361f5427f0358273454b3d..133d994d9ac9d4f9527135ac0c77e5749917f8c3 100644
--- a/src/main/java/net/minecraft/world/level/Explosion.java
+++ b/src/main/java/net/minecraft/world/level/Explosion.java
@@ -98,7 +98,7 @@ public class Explosion {
@@ -16983,7 +16974,7 @@ index dc88014c4d9f172cc54e5d77b488128f9ffbc73d..f5e84bf8817e2d53557e0909d8c9e0e0
+ }else {
+ Location location = new Location(this.level.getWorld(), this.x, this.y, this.z);
+ org.bukkit.block.Block block = location.getBlock();
+ org.bukkit.block.BlockState blockState = (this.damageSource.blockState != null) ? this.damageSource.blockState : block.getState();
+ org.bukkit.block.BlockState blockState = (this.damageSource.getDirectBlockState() != null) ? this.damageSource.getDirectBlockState() : block.getState();
+ if(!new org.purpurmc.purpur.event.PreBlockExplodeEvent(location.getBlock(), this.blockInteraction == Explosion.BlockInteraction.DESTROY_WITH_DECAY ? 1.0F / this.radius : 1.0F, blockState).callEvent()) {
+ this.wasCanceled = true;
+ return;
@@ -17291,7 +17282,7 @@ index ce9f189bdafec26360bfadd0f36a8bc2726e132b..d5465b48531fd4b4094874c135274abf
return true;
} else {
diff --git a/src/main/java/net/minecraft/world/level/block/BedBlock.java b/src/main/java/net/minecraft/world/level/block/BedBlock.java
index 4459685d1fb655f93a523ae50b62d6b97785ed90..a4a988ab1399702b943019e9c4e2cde3652b4e85 100644
index 85d598c3354ee62f0fd1b26e485e0084967c0380..17c994a39a1b99cc7727e328ce7493d534247a21 100644
--- a/src/main/java/net/minecraft/world/level/block/BedBlock.java
+++ b/src/main/java/net/minecraft/world/level/block/BedBlock.java
@@ -104,7 +104,7 @@ public class BedBlock extends HorizontalDirectionalBlock implements EntityBlock
@@ -17307,8 +17298,8 @@ index 4459685d1fb655f93a523ae50b62d6b97785ed90..a4a988ab1399702b943019e9c4e2cde3
Vec3 vec3d = blockposition.getCenter();
- world.explode((Entity) null, world.damageSources().badRespawnPointExplosion(vec3d, world, iblockdata, blockposition, blockEntity), (ExplosionDamageCalculator) null, vec3d, 5.0F, true, Level.ExplosionInteraction.BLOCK); // CraftBukkit - add state // Paper - add BlockEntity
+ if (world.purpurConfig.bedExplode) world.explode((Entity) null, world.damageSources().badRespawnPointExplosion(vec3d, world, iblockdata, blockposition, blockEntity), (ExplosionDamageCalculator) null, vec3d, (float) world.purpurConfig.bedExplosionPower, world.purpurConfig.bedExplosionFire, world.purpurConfig.bedExplosionEffect); // CraftBukkit - add state // Paper - add BlockEntity // Purpur
- world.explode((Entity) null, world.damageSources().badRespawnPointExplosion(vec3d, blockState), (ExplosionDamageCalculator) null, vec3d, 5.0F, true, Level.ExplosionInteraction.BLOCK); // CraftBukkit - add state
+ if (world.purpurConfig.bedExplode) world.explode((Entity) null, world.damageSources().badRespawnPointExplosion(vec3d, blockState), (ExplosionDamageCalculator) null, vec3d, (float) world.purpurConfig.bedExplosionPower, world.purpurConfig.bedExplosionFire, world.purpurConfig.bedExplosionEffect); // CraftBukkit - add state // Purpur
return InteractionResult.SUCCESS;
}
}
@@ -18246,15 +18237,15 @@ index 9603d8c84ff483030dc08e82d3579b89e5c1f6e9..8fc65c32a3c6e6842a76b36f45e1b1c2
} else {
int j = pos.getX();
diff --git a/src/main/java/net/minecraft/world/level/block/RespawnAnchorBlock.java b/src/main/java/net/minecraft/world/level/block/RespawnAnchorBlock.java
index 0699211428f182d8d56a2ba019d89ce05c920430..351fb74d2cccd7f63c2efee197a2968f822eda42 100644
index 94d067e9eeee73183de25165d8c97043fe256103..00b6941951e1af9993f8f6da5425d31b8eaa85e4 100644
--- a/src/main/java/net/minecraft/world/level/block/RespawnAnchorBlock.java
+++ b/src/main/java/net/minecraft/world/level/block/RespawnAnchorBlock.java
@@ -149,7 +149,7 @@ public class RespawnAnchorBlock extends Block {
@@ -150,7 +150,7 @@ public class RespawnAnchorBlock extends Block {
};
Vec3 vec3d = explodedPos.getCenter();
- world.explode((Entity) null, world.damageSources().badRespawnPointExplosion(vec3d, world, state, explodedPos, null), explosiondamagecalculator, vec3d, 5.0F, true, Level.ExplosionInteraction.BLOCK); // CraftBukkit - add state // Paper
+ if (world.purpurConfig.respawnAnchorExplode) world.explode((Entity) null, world.damageSources().badRespawnPointExplosion(vec3d, world, state, explodedPos, null), explosiondamagecalculator, vec3d, (float) world.purpurConfig.respawnAnchorExplosionPower, world.purpurConfig.respawnAnchorExplosionFire, world.purpurConfig.respawnAnchorExplosionEffect); // CraftBukkit - add state // Paper // Purpur
- world.explode((Entity) null, world.damageSources().badRespawnPointExplosion(vec3d, blockState), explosiondamagecalculator, vec3d, 5.0F, true, Level.ExplosionInteraction.BLOCK); // CraftBukkit - add state
+ if (world.purpurConfig.respawnAnchorExplode) world.explode((Entity) null, world.damageSources().badRespawnPointExplosion(vec3d, blockState), explosiondamagecalculator, vec3d, (float) world.purpurConfig.respawnAnchorExplosionPower, world.purpurConfig.respawnAnchorExplosionFire, world.purpurConfig.respawnAnchorExplosionEffect); // CraftBukkit - add state // Purpur
}
public static boolean canSetSpawn(Level world) {
@@ -19692,10 +19683,10 @@ index 9d93130f23addb18b97d7f5ec013faef17a74529..29d2fb87a65778926aea2cfc7a5b486c
+ // Purpur end - OfflinePlayer API
}
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
index 57db399bc1d3b6b015740b059987bc8d9bcc3101..19937ffa2c93cb75ea8dba58dd5a8214adc035fa 100644
index da1aed63af837b193900bb85393611edbd56c363..b82c66c402823874e3a5fc9bb7b1df73c708aec5 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
@@ -268,7 +268,7 @@ import javax.annotation.Nullable; // Paper
@@ -269,7 +269,7 @@ import javax.annotation.Nullable; // Paper
import javax.annotation.Nonnull; // Paper
public final class CraftServer implements Server {
@@ -19704,10 +19695,10 @@ index 57db399bc1d3b6b015740b059987bc8d9bcc3101..19937ffa2c93cb75ea8dba58dd5a8214
private final String serverVersion;
private final String bukkitVersion = Versioning.getBukkitVersion();
private final Logger logger = Logger.getLogger("Minecraft");
@@ -403,6 +403,20 @@ public final class CraftServer implements Server {
this.serverTickManager = new CraftServerTickManager(console.tickRateManager());
Bukkit.setServer(this);
@@ -410,6 +410,20 @@ public final class CraftServer implements Server {
this.paperPluginManager = new io.papermc.paper.plugin.manager.PaperPluginManagerImpl(this, this.commandMap, pluginManager);
this.pluginManager.paperPluginManager = this.paperPluginManager;
// Paper end
+ // Purpur start
+ org.purpurmc.purpur.language.Language.setLanguage(new org.purpurmc.purpur.language.Language() {
+ private net.minecraft.locale.Language language = net.minecraft.locale.Language.getInstance();
@@ -19725,7 +19716,7 @@ index 57db399bc1d3b6b015740b059987bc8d9bcc3101..19937ffa2c93cb75ea8dba58dd5a8214
CraftRegistry.setMinecraftRegistry(console.registryAccess());
@@ -1054,6 +1068,7 @@ public final class CraftServer implements Server {
@@ -1038,6 +1052,7 @@ public final class CraftServer implements Server {
org.spigotmc.SpigotConfig.init((File) this.console.options.valueOf("spigot-settings")); // Spigot
this.console.paperConfigurations.reloadConfigs(this.console);
@@ -19733,7 +19724,7 @@ index 57db399bc1d3b6b015740b059987bc8d9bcc3101..19937ffa2c93cb75ea8dba58dd5a8214
for (ServerLevel world : this.console.getAllLevels()) {
// world.serverLevelData.setDifficulty(config.difficulty); // Paper - per level difficulty
world.setSpawnSettings(world.serverLevelData.getDifficulty() != Difficulty.PEACEFUL && config.spawnMonsters, config.spawnAnimals); // Paper - per level difficulty (from MinecraftServer#setDifficulty(ServerLevel, Difficulty, boolean))
@@ -1069,6 +1084,7 @@ public final class CraftServer implements Server {
@@ -1053,6 +1068,7 @@ public final class CraftServer implements Server {
}
}
world.spigotConfig.init(); // Spigot
@@ -19741,7 +19732,7 @@ index 57db399bc1d3b6b015740b059987bc8d9bcc3101..19937ffa2c93cb75ea8dba58dd5a8214
}
Plugin[] pluginClone = pluginManager.getPlugins().clone(); // Paper
@@ -1084,6 +1100,7 @@ public final class CraftServer implements Server {
@@ -1069,6 +1085,7 @@ public final class CraftServer implements Server {
this.reloadData();
org.spigotmc.SpigotConfig.registerCommands(); // Spigot
io.papermc.paper.command.PaperCommands.registerCommands(this.console); // Paper
@@ -19749,7 +19740,7 @@ index 57db399bc1d3b6b015740b059987bc8d9bcc3101..19937ffa2c93cb75ea8dba58dd5a8214
this.overrideAllCommandBlockCommands = this.commandsConfiguration.getStringList("command-block-overrides").contains("*");
this.ignoreVanillaPermissions = this.commandsConfiguration.getBoolean("ignore-vanilla-permissions");
@@ -1586,6 +1603,55 @@ public final class CraftServer implements Server {
@@ -1577,6 +1594,55 @@ public final class CraftServer implements Server {
return true;
}
@@ -19805,7 +19796,7 @@ index 57db399bc1d3b6b015740b059987bc8d9bcc3101..19937ffa2c93cb75ea8dba58dd5a8214
@Override
public List<Recipe> getRecipesFor(ItemStack result) {
Preconditions.checkArgument(result != null, "ItemStack cannot be null");
@@ -3048,6 +3114,18 @@ public final class CraftServer implements Server {
@@ -3039,6 +3105,18 @@ public final class CraftServer implements Server {
return CraftServer.this.console.paperConfigurations.createLegacyObject(CraftServer.this.console);
}
@@ -19824,7 +19815,7 @@ index 57db399bc1d3b6b015740b059987bc8d9bcc3101..19937ffa2c93cb75ea8dba58dd5a8214
@Override
public void restart() {
org.spigotmc.RestartCommand.restart();
@@ -3077,6 +3155,7 @@ public final class CraftServer implements Server {
@@ -3068,6 +3146,7 @@ public final class CraftServer implements Server {
@Override
public double[] getTPS() {
return new double[] {
@@ -19832,7 +19823,7 @@ index 57db399bc1d3b6b015740b059987bc8d9bcc3101..19937ffa2c93cb75ea8dba58dd5a8214
net.minecraft.server.MinecraftServer.getServer().tps1.getAverage(),
net.minecraft.server.MinecraftServer.getServer().tps5.getAverage(),
net.minecraft.server.MinecraftServer.getServer().tps15.getAverage()
@@ -3278,4 +3357,16 @@ public final class CraftServer implements Server {
@@ -3269,4 +3348,16 @@ public final class CraftServer implements Server {
return this.potionBrewer;
}
// Paper end
@@ -20266,7 +20257,7 @@ index aa351df679f300018367244c7ccb3e5a59e9276f..b452ebbe11145987fb5e66b399938984
+ // Purpur end
}
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftLlama.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftLlama.java
index 0ad16ee7b33582d214dab41eeee378d52c8e38ed..16bd1294c219f15ada653ef810bc2d748222d0da 100644
index 351f42842b780d053cd2e5bad9ae299449141b10..4860574e7fad7a9527dda599703c573c5b4b234b 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftLlama.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftLlama.java
@@ -90,4 +90,16 @@ public class CraftLlama extends CraftChestedHorse implements Llama, com.destroys
@@ -20287,7 +20278,7 @@ index 0ad16ee7b33582d214dab41eeee378d52c8e38ed..16bd1294c219f15ada653ef810bc2d74
+ // Purpur end
}
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
index 5f896948d158651cd9837364759dbfbcce6b7d21..88948526f9acf4bb2157484b80891902fd843b02 100644
index 561a7a8e96e2d91bbb87fe6230e94b5f38073d27..2c9726d0f2dec1136a2f45768e8f8169ce165a1d 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
@@ -574,10 +574,15 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
@@ -20318,7 +20309,7 @@ index 5f896948d158651cd9837364759dbfbcce6b7d21..88948526f9acf4bb2157484b80891902
return false;
}
@@ -2736,6 +2745,28 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
@@ -2733,6 +2742,28 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
return this.getHandle().getAbilities().walkingSpeed * 2f;
}
@@ -20347,7 +20338,7 @@ index 5f896948d158651cd9837364759dbfbcce6b7d21..88948526f9acf4bb2157484b80891902
private void validateSpeed(float value) {
Preconditions.checkArgument(value <= 1f && value >= -1f, "Speed value (%s) need to be between -1f and 1f", value);
}
@@ -3522,4 +3553,70 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
@@ -3519,4 +3550,70 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
public void setSendViewDistance(final int viewDistance) {
this.getHandle().setSendViewDistance(viewDistance);
}
@@ -20500,7 +20491,7 @@ index 86574da257731de7646a712ed73384955fe35aa3..e223234dd64b0e41441c3b9f649f0b64
+ // Purpur end
}
diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
index 547ab158cd0cbf51da06ea97740cfce34bca651b..6fed586c9a778f7a57e1b4ca2e6f2dbc15c8769d 100644
index 34b91eff3190848bae38b20e1d956ece497b1473..e650b85464ac886b4adb1a8924026d34f805aba6 100644
--- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
+++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
@@ -592,6 +592,15 @@ public class CraftEventFactory {
@@ -20519,8 +20510,8 @@ index 547ab158cd0cbf51da06ea97740cfce34bca651b..6fed586c9a778f7a57e1b4ca2e6f2dbc
return event;
}
@@ -1121,7 +1130,7 @@ public class CraftEventFactory {
return CraftEventFactory.callEntityDamageEvent(source.getDirectBlock(), entity, DamageCause.LAVA, bukkitDamageSource, modifiers, modifierFunctions, cancelled);
@@ -1123,7 +1132,7 @@ public class CraftEventFactory {
return CraftEventFactory.callEntityDamageEvent(source.getDirectBlock(), source.getDirectBlockState(), entity, DamageCause.LAVA, bukkitDamageSource, modifiers, modifierFunctions, cancelled);
} else if (source.getDirectBlock() != null) {
DamageCause cause;
- if (source.is(DamageTypes.CACTUS) || source.is(DamageTypes.SWEET_BERRY_BUSH) || source.is(DamageTypes.STALAGMITE) || source.is(DamageTypes.FALLING_STALACTITE) || source.is(DamageTypes.FALLING_ANVIL)) {
@@ -20528,7 +20519,7 @@ index 547ab158cd0cbf51da06ea97740cfce34bca651b..6fed586c9a778f7a57e1b4ca2e6f2dbc
cause = DamageCause.CONTACT;
} else if (source.is(DamageTypes.HOT_FLOOR)) {
cause = DamageCause.HOT_FLOOR;
@@ -1179,6 +1188,7 @@ public class CraftEventFactory {
@@ -1181,6 +1190,7 @@ public class CraftEventFactory {
EntityDamageEvent event;
if (damager != null) {
event = new EntityDamageByEntityEvent(damager.getBukkitEntity(), damagee.getBukkitEntity(), cause, bukkitDamageSource, modifiers, modifierFunctions, critical);
@@ -20627,7 +20618,7 @@ index 6ba29875d78ede4aa7978ff689e588f7fed11528..4afec4387971612f62b825e9e56c2ead
throw new IllegalArgumentException("Unknown recipe stack instance " + bukkit);
}
diff --git a/src/main/java/org/bukkit/craftbukkit/legacy/CraftLegacy.java b/src/main/java/org/bukkit/craftbukkit/legacy/CraftLegacy.java
index 71d057dc8c7362f8e7aaca5e31c9f02b2bf3f281..9d9405af0db28c0f3ffff2881b54f1dc84675a9d 100644
index ae6d9453cbfb708ed00a61a221bd425110b291a4..9dba941b28e1f9d9b6f8d106cf8f6adcd5a436be 100644
--- a/src/main/java/org/bukkit/craftbukkit/legacy/CraftLegacy.java
+++ b/src/main/java/org/bukkit/craftbukkit/legacy/CraftLegacy.java
@@ -256,6 +256,7 @@ public final class CraftLegacy {
@@ -20740,10 +20731,10 @@ index b3e1adeb932da9b3bed16acd94e2f16da48a7c72..d3ec817e95628f1fc8be4a29c9a0f13c
// Paper end - add timings for scoreboard search
}
diff --git a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
index a1c9989df460d7ae3666fffe7968750832a30b85..ad7f21566271260270db452e2f15c32f8a829d28 100644
index 5a382907285a288f2a223189e690d3dbdf45594c..3daf674f1e0de3fdd89db5536cc1e34140a5abb8 100644
--- a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
+++ b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
@@ -507,7 +507,7 @@ public final class CraftMagicNumbers implements UnsafeValues {
@@ -511,7 +511,7 @@ public final class CraftMagicNumbers implements UnsafeValues {
@Override
public com.destroystokyo.paper.util.VersionFetcher getVersionFetcher() {
@@ -21395,7 +21386,7 @@ index 0000000000000000000000000000000000000000..de70bfdbdd7740fdf20dd063a7a623a9
+}
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
new file mode 100644
index 0000000000000000000000000000000000000000..d8de8710d9b8cf2ae5c434b2b0b27e76ffbbe4bf
index 0000000000000000000000000000000000000000..6717941d18dbd6871b4613106b9787063e11722f
--- /dev/null
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -0,0 +1,3306 @@
@@ -21498,7 +21489,7 @@ index 0000000000000000000000000000000000000000..d8de8710d9b8cf2ae5c434b2b0b27e76
+ }
+
+ public float armorstandStepHeight = 0.0F;
+ public boolean armorstandSetNameVisible = true;
+ public boolean armorstandSetNameVisible = false;
+ public boolean armorstandFixNametags = false;
+ public boolean armorstandMovement = true;
+ public boolean armorstandWaterMovement = true;

View File

@@ -5,17 +5,17 @@ Subject: [PATCH] Use Gradle Version Catalogs
diff --git a/build.gradle.kts b/build.gradle.kts
index 81996f00384674b29368e8bea944bdd14d631da3..feaff0406fa47ffb265ce316b057fb52aa367870 100644
index 89f21e21efc5f5ab99d1586f4f3b8f2f3c48ac06..ec151f06541d7c3b4ffb1cac75e94bf3914dacaf 100644
--- a/build.gradle.kts
+++ b/build.gradle.kts
@@ -18,57 +18,27 @@ dependencies {
exclude("io.papermc.paper", "paper-api")
}
// Purpur end
@@ -13,57 +13,26 @@ val alsoShade: Configuration by configurations.creating
dependencies {
implementation(project(":purpur-api")) // Purpur
- // Paper start
- implementation("org.jline:jline-terminal-jansi:3.21.0")
- implementation("net.minecrell:terminalconsoleappender:1.3.0")
- implementation("net.kyori:adventure-text-serializer-ansi:4.16.0") // Keep in sync with adventureVersion from Paper-API build file
- implementation("net.kyori:adventure-text-serializer-ansi:4.17.0") // Keep in sync with adventureVersion from Paper-API build file
- /*
- Required to add the missing Log4j2Plugins.dat file from log4j-core
- which has been removed by Mojang. Without it, log4j has to classload
@@ -24,22 +24,8 @@ index 81996f00384674b29368e8bea944bdd14d631da3..feaff0406fa47ffb265ce316b057fb52
- */
- implementation("org.apache.logging.log4j:log4j-core:2.19.0") // Paper - implementation
- log4jPlugins.annotationProcessorConfigurationName("org.apache.logging.log4j:log4j-core:2.19.0") // Paper - Needed to generate meta for our Log4j plugins
+
+ // Plazma start - Use Gradle Version Catalogs
+ implementation(server.bundles.implementation)
+ implementation(common.asm.commons)
+ implementation(common.log4j.iostreams)
+ implementation(common.commons.lang2)
+ implementation(server.velocity) { isTransitive = false }
+
+ runtimeOnly(common.maven.provider)
+ runtimeOnly(common.bundles.maven)
+ runtimeOnly(server.bundles.runtime)
+
+ implementation(common.log4j.core) // Paper - implementation
+ log4jPlugins.annotationProcessorConfigurationName(common.log4j.core) // Paper - Needed to generate meta for our Log4j plugins
runtimeOnly(log4jPlugins.output)
alsoShade(log4jPlugins.output)
- runtimeOnly(log4jPlugins.output)
- alsoShade(log4jPlugins.output)
- implementation("io.netty:netty-codec-haproxy:4.1.97.Final") // Paper - Add support for proxy protocol
- // Paper end
- implementation("org.apache.logging.log4j:log4j-iostreams:2.22.1") // Paper - remove exclusion
@@ -77,6 +63,21 @@ index 81996f00384674b29368e8bea944bdd14d631da3..feaff0406fa47ffb265ce316b057fb52
- implementation("io.papermc:reflection-rewriter-runtime:$reflectionRewriterVersion")
- implementation("io.papermc:reflection-rewriter-proxy-generator:$reflectionRewriterVersion")
- // Paper end - Remap reflection
+ // Plazma start - Use Gradle Version Catalogs
+ implementation(server.bundles.implementation)
+ implementation(common.asm.commons)
+ implementation(common.log4j.iostreams)
+ implementation(common.commons.lang2)
+ implementation(server.velocity) { isTransitive = false }
+
+ runtimeOnly(common.maven.provider)
+ runtimeOnly(common.bundles.maven)
+ runtimeOnly(server.bundles.runtime)
+
+ implementation(common.log4j.core) // Paper - implementation
+ log4jPlugins.annotationProcessorConfigurationName(common.log4j.core) // Paper - Needed to generate meta for our Log4j plugins
+ runtimeOnly(log4jPlugins.output) // Plazma - diff on patch
+ alsoShade(log4jPlugins.output) // Plazma - diff on patch
+
+ testImplementation(server.bundles.test)
+ testImplementation(common.bundles.test)

View File

@@ -4,33 +4,52 @@ Date: Wed, 21 Dec 2022 19:31:24 +0900
Subject: [PATCH] Rebrand
diff --git a/MIT.txt b/MIT.txt
new file mode 100644
index 0000000000000000000000000000000000000000..67d405764ed68083d0164b1af0eabc0af7f6efea
--- /dev/null
+++ b/MIT.txt
@@ -0,0 +1,21 @@
+The MIT License (MIT)
+
+Copyright (c) 2024 Paper Contributors
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the "Software"),
+to deal in the Software without restriction, including without limitation
+the rights to use, copy, modify, merge, publish, distribute, sublicense,
+and/or sell copies of the Software, and to permit persons to whom
+the Software is furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included
+in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
+WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE
+AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
+BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
+OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/build.gradle.kts b/build.gradle.kts
index feaff0406fa47ffb265ce316b057fb52aa367870..279e1cfd24f29d3ac55e74759d8b542a7520de3d 100644
index ec151f06541d7c3b4ffb1cac75e94bf3914dacaf..3cf30564db4e5cb2eeb09258940d0b2b5f9b0edc 100644
--- a/build.gradle.kts
+++ b/build.gradle.kts
@@ -12,12 +12,10 @@ configurations.named(log4jPlugins.compileClasspathConfigurationName) {
@@ -12,7 +12,7 @@ configurations.named(log4jPlugins.compileClasspathConfigurationName) {
val alsoShade: Configuration by configurations.creating
dependencies {
- // Purpur start
- implementation(project(":purpur-api"))
- implementation("io.papermc.paper:paper-mojangapi:${project.version}") {
- exclude("io.papermc.paper", "paper-api")
- }
- // Purpur end
+ // Plazma start - Rebrand
+ implementation(project(":${parent!!.property("projectName").toString().lowercase()}-api"))
+ implementation(project(":${parent!!.property("projectName").toString().lowercase()}-mojangapi"))
+ // Plazma end
- implementation(project(":purpur-api")) // Purpur
+ implementation(project(":${parent!!.property("projectName").toString().lowercase()}-api")) // Plazma - Rebrand
// Plazma start - Use Gradle Version Catalogs
implementation(server.bundles.implementation)
@@ -57,7 +55,7 @@ tasks.jar {
implementation(common.asm.commons)
@@ -51,7 +51,7 @@ tasks.jar {
attributes(
"Main-Class" to "org.bukkit.craftbukkit.Main",
"Implementation-Title" to "CraftBukkit",
- "Implementation-Version" to "git-Purpur-$implementationVersion", // Pufferfish // Purpur
+ "Implementation-Version" to "git-${parent!!.property("projectName")}-$implementationVersion", // Pufferfish // Purpur // Plazma - Setup Gradle Project
+ "Implementation-Version" to "git-${parent!!.property("projectName")}-$implementationVersion", // Pufferfish // Purpur // Plazma - Rebrand
"Implementation-Vendor" to date, // Paper
"Specification-Title" to "Bukkit",
"Specification-Version" to project.version,
@@ -225,10 +244,10 @@ index 411f1f8c6be072cfc5ba88cbec38dbc4300a41d1..0fb3eeab083a0b1e9b495bd2c5c556fc
Main.LOGGER.error(awtException);
return;
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
index 21327a92b75a460c7beb3aa408502f37a7db31fa..6d549448e67a110a42dde6f8eeaab1f0033f3462 100644
index dfe3d28bd97d1335457d1005ecf69afe75d5ff80..dc571ad9882a6c35e25b20086da1f2c51d3b4b57 100644
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
@@ -496,8 +496,8 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -495,8 +495,8 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
if (!newWorld.isDirectory() && oldWorld.isDirectory() && oldLevelDat.isFile()) {
MinecraftServer.LOGGER.info("---- Migration of old " + worldType + " folder required ----");
@@ -239,7 +258,7 @@ index 21327a92b75a460c7beb3aa408502f37a7db31fa..6d549448e67a110a42dde6f8eeaab1f0
MinecraftServer.LOGGER.info("Attempting to move " + oldWorld + " to " + newWorld + "...");
if (newWorld.exists()) {
@@ -963,7 +963,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -965,7 +965,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
shutdownThread = Thread.currentThread();
org.spigotmc.WatchdogThread.doStop(); // Paper
if (!isSameThread()) {
@@ -248,7 +267,7 @@ index 21327a92b75a460c7beb3aa408502f37a7db31fa..6d549448e67a110a42dde6f8eeaab1f0
while (this.getRunningThread().isAlive()) {
this.getRunningThread().stop();
try {
@@ -1183,7 +1183,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -1185,7 +1185,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
LOGGER.info("*************************************************************************************");
LOGGER.info("This is the first time you're starting this server.");
LOGGER.info("It's recommended you read our 'Getting Started' documentation for guidance.");
@@ -258,10 +277,10 @@ index 21327a92b75a460c7beb3aa408502f37a7db31fa..6d549448e67a110a42dde6f8eeaab1f0
}
// Paper end - Add onboarding message for initial server start
diff --git a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java
index 775c5de4f5094260096cef6723dd50dfe2cb0c81..d606da8627219b5ecf4f1500086905fb4f572ca9 100644
index 957da64ddd0a56f457122a3f590b45e348f22382..a8cef5417273a48e1f76e4116e848b6ba15928f2 100644
--- a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java
+++ b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java
@@ -793,7 +793,7 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface
@@ -792,7 +792,7 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface
org.bukkit.plugin.Plugin[] plugins = this.server.getPluginManager().getPlugins();
result.append(this.server.getName());
@@ -356,15 +375,15 @@ index f6e3b745fc417354380d4a969f83aee430bad785..d2795cacee1b3dd2d73ec91553bb8aa3
private static CompoundTag readOversizedChunk(RegionFile regionfile, ChunkPos chunkCoordinate) throws IOException {
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
index 19937ffa2c93cb75ea8dba58dd5a8214adc035fa..4f9638d360497ceef72fb193a4bb6423fd9175d6 100644
index b82c66c402823874e3a5fc9bb7b1df73c708aec5..ebc75eb4ae38dd2f24eb81e5797ae48e25ae93c7 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
@@ -268,7 +268,7 @@ import javax.annotation.Nullable; // Paper
@@ -269,7 +269,7 @@ import javax.annotation.Nullable; // Paper
import javax.annotation.Nonnull; // Paper
public final class CraftServer implements Server {
- private final String serverName = "Purpur"; // Paper // Pufferfish // Purpur
+ private final String serverName = Versioning.BRANDING; // Paper // Pufferfish // Purpur // Plazma - Rebrand
+ private final String serverName = Versioning.BRANDING; // Paper // Pufferfish // Purpur
private final String serverVersion;
private final String bukkitVersion = Versioning.getBukkitVersion();
private final Logger logger = Logger.getLogger("Minecraft");

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] Plazma Configurations
diff --git a/build.gradle.kts b/build.gradle.kts
index 279e1cfd24f29d3ac55e74759d8b542a7520de3d..5b81ed7a9f978b59b1b287126c9161aa6446a28d 100644
index 3cf30564db4e5cb2eeb09258940d0b2b5f9b0edc..92826a38773b6d76acfbf18774ada8a395e9007f 100644
--- a/build.gradle.kts
+++ b/build.gradle.kts
@@ -22,6 +22,7 @@ dependencies {
@@ -18,6 +18,7 @@ dependencies {
implementation(common.asm.commons)
implementation(common.log4j.iostreams)
implementation(common.commons.lang2)
@@ -517,7 +517,7 @@ index 83a726bcf8b7dce73a361b0d79dbd63a0afc7a12..3c893e5da90f7fcf519f190e34e2b15e
+
}
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
index 6d549448e67a110a42dde6f8eeaab1f0033f3462..065308f8cca471dee8360857bd627402849976dc 100644
index dc571ad9882a6c35e25b20086da1f2c51d3b4b57..7d20729d18187d2f576a1fe2f9b633429ee96923 100644
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
@@ -314,6 +314,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -528,7 +528,7 @@ index 6d549448e67a110a42dde6f8eeaab1f0033f3462..065308f8cca471dee8360857bd627402
public static long currentTickLong = 0L; // Paper - track current tick as a long
public boolean isIteratingOverLevels = false; // Paper - Throw exception on world create while being ticked
public boolean lagging = false; // Purpur
@@ -425,6 +426,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -424,6 +425,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
Runtime.getRuntime().addShutdownHook(new org.bukkit.craftbukkit.util.ServerShutdownThread(this));
// CraftBukkit end
this.paperConfigurations = services.paperConfigurations(); // Paper - add paper configuration files
@@ -596,7 +596,7 @@ index 33e3815a0c979609d4c7ab83ad91e87ac07a556d..4f1071c48fec78036d6759cdff179df3
}
diff --git a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java
index d606da8627219b5ecf4f1500086905fb4f572ca9..28e8967a87715fb2db25feb84e8736c446f355b5 100644
index a8cef5417273a48e1f76e4116e848b6ba15928f2..6b2aabb9ab3b8e30a8c3b333b7cb6fa9ebb01879 100644
--- a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java
+++ b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java
@@ -222,6 +222,8 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface
@@ -617,7 +617,7 @@ index d606da8627219b5ecf4f1500086905fb4f572ca9..28e8967a87715fb2db25feb84e8736c4
// Purpur start
try {
diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java
index f72af2feb74626abbdfbfd090c15357457810240..aef5d7562e1636e85382ed60b694a9a0d5dccd9d 100644
index 7924e3c597164f71056cd58dd167ee8b1d41b9c3..5df20b97f3c88248ab70e7686b5fa0ca8e5a58c2 100644
--- a/src/main/java/net/minecraft/server/level/ServerLevel.java
+++ b/src/main/java/net/minecraft/server/level/ServerLevel.java
@@ -700,15 +700,33 @@ public class ServerLevel extends Level implements WorldGenLevel {
@@ -705,10 +705,10 @@ index eda2f8cc034cf46293be1be117a60cf8b663c303..1e5964f315b3e944d249032744991721
this.playerBreedingCooldowns = this.getNewBreedingCooldownCache(); // Purpur
this.generator = gen;
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
index 4f9638d360497ceef72fb193a4bb6423fd9175d6..26e93a0c346204ccccf8255d0f87da03e943bcfb 100644
index ebc75eb4ae38dd2f24eb81e5797ae48e25ae93c7..841ce275ff3f49783a61af71d83020b8cda35473 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
@@ -1068,6 +1068,7 @@ public final class CraftServer implements Server {
@@ -1052,6 +1052,7 @@ public final class CraftServer implements Server {
org.spigotmc.SpigotConfig.init((File) this.console.options.valueOf("spigot-settings")); // Spigot
this.console.paperConfigurations.reloadConfigs(this.console);
@@ -716,7 +716,7 @@ index 4f9638d360497ceef72fb193a4bb6423fd9175d6..26e93a0c346204ccccf8255d0f87da03
org.purpurmc.purpur.PurpurConfig.init((File) console.options.valueOf("purpur-settings")); // Purpur
for (ServerLevel world : this.console.getAllLevels()) {
// world.serverLevelData.setDifficulty(config.difficulty); // Paper - per level difficulty
@@ -3126,6 +3127,13 @@ public final class CraftServer implements Server {
@@ -3117,6 +3118,13 @@ public final class CraftServer implements Server {
}
// Purpur end

View File

@@ -137,7 +137,7 @@ index f164256d59b761264876ca0c85f812d101bfd5de..deaeb134c47da8710afa747bf980bd00
final TrackedChunk chunk = this.byChunk.get(CoordinateUtils.getChunkKey(chunkX, chunkZ));
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
index 065308f8cca471dee8360857bd627402849976dc..eb4c8b516be77423c7decb247f261a264b1cfc89 100644
index 7d20729d18187d2f576a1fe2f9b633429ee96923..9d5257f810f9f88504b913fa0c7c214acc1da2cb 100644
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
@@ -323,6 +323,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -148,7 +148,7 @@ index 065308f8cca471dee8360857bd627402849976dc..eb4c8b516be77423c7decb247f261a26
public static <S extends MinecraftServer> S spin(Function<Thread, S> serverFactory) {
AtomicReference<S> atomicreference = new AtomicReference();
@@ -1741,17 +1742,15 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -1743,17 +1744,15 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
//MinecraftTimings.bukkitSchedulerTimer.stopTiming(); // Spigot // Paper // Purpur
// Paper start - Folia scheduler API
((io.papermc.paper.threadedregions.scheduler.FoliaGlobalRegionScheduler) Bukkit.getGlobalRegionScheduler()).tick();
@@ -175,7 +175,7 @@ index 065308f8cca471dee8360857bd627402849976dc..eb4c8b516be77423c7decb247f261a26
// Paper end - Folia scheduler API
io.papermc.paper.adventure.providers.ClickCallbackProviderImpl.CALLBACK_MANAGER.handleQueue(this.tickCount); // Paper
//this.profiler.push("commandFunctions"); // Purpur
@@ -1818,7 +1817,15 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -1820,7 +1819,15 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
try {
//worldserver.timings.doTick.startTiming(); // Spigot // Purpur
@@ -192,7 +192,7 @@ index 065308f8cca471dee8360857bd627402849976dc..eb4c8b516be77423c7decb247f261a26
for (final io.papermc.paper.chunk.SingleThreadChunkRegionManager regionManager : worldserver.getChunkSource().chunkMap.regionManagers) {
regionManager.recalculateRegions();
diff --git a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java
index 28e8967a87715fb2db25feb84e8736c446f355b5..32332070cc62c0842333b05c53005feb30051914 100644
index 6b2aabb9ab3b8e30a8c3b333b7cb6fa9ebb01879..ca1e8da7540457ecba5684acd42129509c8204f5 100644
--- a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java
+++ b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java
@@ -224,6 +224,7 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface
@@ -204,7 +204,7 @@ index 28e8967a87715fb2db25feb84e8736c446f355b5..32332070cc62c0842333b05c53005feb
// Paper start - fix converting txt to json file; convert old users earlier after PlayerList creation but before file load/save
if (this.convertOldUsers()) {
diff --git a/src/main/java/net/minecraft/server/level/ChunkMap.java b/src/main/java/net/minecraft/server/level/ChunkMap.java
index 4e6fccec4f5ca14562bf5bae495ac36c14982d85..9162c6338dbb516ce60f4853e57da6e49be79282 100644
index 345f143b0eeb77acb96e4bc716f3b23782ac782f..4f112e2550fae57ccd41f6525bffe6d6974a8dd1 100644
--- a/src/main/java/net/minecraft/server/level/ChunkMap.java
+++ b/src/main/java/net/minecraft/server/level/ChunkMap.java
@@ -1439,7 +1439,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider
@@ -212,7 +212,7 @@ index 4e6fccec4f5ca14562bf5bae495ac36c14982d85..9162c6338dbb516ce60f4853e57da6e4
// CraftBukkit start - respect vanish API
- if (flag && !player.getBukkitEntity().canSee(this.entity.getBukkitEntity())) { // Paper - only consider hits
+ if (flag && !player.getBukkitEntity().canSeeChunkMapUpdatePlauer(this.entity.getBukkitEntity())) { // Paper - only consider hits
+ if (flag && !player.getBukkitEntity().chunkMapCanSee(this.entity.getBukkitEntity())) { // Paper - only consider hits // Plazma - Port SparklyPaper patches; Optimize canSee check
flag = false;
}
// CraftBukkit end
@@ -230,7 +230,7 @@ index 476a04d87a61b021816d2970e86042bde32d95a2..53c0b48966558f43bb9bd7d29d9588f9
continue;
}
diff --git a/src/main/java/net/minecraft/server/level/ServerEntity.java b/src/main/java/net/minecraft/server/level/ServerEntity.java
index 39e7dcf3c92c9203c190782be401c00c010b8aeb..b86ae3929ec5d3c4eb69d92774dc445aa5b3093e 100644
index dd6278fe99e2ee4daa95249c71ea935dd08b0025..a528685040bf5596fe20fc055d691fd7e663762c 100644
--- a/src/main/java/net/minecraft/server/level/ServerEntity.java
+++ b/src/main/java/net/minecraft/server/level/ServerEntity.java
@@ -78,6 +78,7 @@ public class ServerEntity {
@@ -241,18 +241,18 @@ index 39e7dcf3c92c9203c190782be401c00c010b8aeb..b86ae3929ec5d3c4eb69d92774dc445a
public ServerEntity(ServerLevel worldserver, Entity entity, int i, boolean flag, Consumer<Packet<?>> consumer, Set<ServerPlayerConnection> trackedPlayers) {
this.trackedPlayers = trackedPlayers;
@@ -208,12 +209,16 @@ public class ServerEntity {
@@ -215,12 +216,15 @@ public class ServerEntity {
if ((this.trackDelta || this.entity.hasImpulse || this.entity instanceof LivingEntity && ((LivingEntity) this.entity).isFallFlying()) && this.tickCount > 0) {
Vec3 vec3d1 = this.entity.getDeltaMovement();
- double d0 = vec3d1.distanceToSqr(this.ap);
+ // Plazma start - SparklyPaper port; Skip distanceToSqr if the delta movement hasn't changed
+ if (!skipSqrWhenNoDeltaChanges && vec3d1 != this.ap) {
+ double d0 = vec3d1.distanceToSqr(this.ap);
-
- if (d0 > 1.0E-7D || d0 > 0.0D && vec3d1.lengthSqr() == 0.0D) {
- this.ap = vec3d1;
- this.broadcast.accept(new ClientboundSetEntityMotionPacket(this.entity.getId(), this.ap));
+ // Plazma start - SparklyPaper port; Skip distanceToSqr if the delta movement hasn't changed
+ if (!skipSqrWhenNoDeltaChanges && vec3d1 != this.ap) {
+ double d0 = vec3d1.distanceToSqr(this.ap);
+ if (d0 > 1.0E-7D || d0 > 0.0D && vec3d1.lengthSqr() == 0.0D) {
+ this.ap = vec3d1;
+ this.broadcast.accept(new ClientboundSetEntityMotionPacket(this.entity.getId(), this.ap));
@@ -263,7 +263,7 @@ index 39e7dcf3c92c9203c190782be401c00c010b8aeb..b86ae3929ec5d3c4eb69d92774dc445a
if (packet1 != null) {
diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java
index aef5d7562e1636e85382ed60b694a9a0d5dccd9d..dc8cb0e9c8abdbefb0420599a243b1a4fe66bb05 100644
index 5df20b97f3c88248ab70e7686b5fa0ca8e5a58c2..d1b2e68a702ce01c33cfe0e1297a8809e3acf088 100644
--- a/src/main/java/net/minecraft/server/level/ServerLevel.java
+++ b/src/main/java/net/minecraft/server/level/ServerLevel.java
@@ -233,6 +233,12 @@ public class ServerLevel extends Level implements WorldGenLevel {
@@ -826,7 +826,7 @@ index 0000000000000000000000000000000000000000..f8c26e26025d7a7b5489ed5b3274ba73
+
+}
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
index 88948526f9acf4bb2157484b80891902fd843b02..20acef32cabdb8f860088341248fe9960f04fbfd 100644
index 2c9726d0f2dec1136a2f45768e8f8169ce165a1d..4f199eea0c8a05f94e8443917c5a6f2c42f0b25e 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
@@ -976,7 +976,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
@@ -838,19 +838,23 @@ index 88948526f9acf4bb2157484b80891902fd843b02..20acef32cabdb8f860088341248fe996
for (Map.Entry<? extends io.papermc.paper.math.Position, BlockData> entry : blockChanges.entrySet()) {
BlockData blockData = entry.getValue();
@@ -2240,6 +2240,12 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
return this.equals(entity) || entity.isVisibleByDefault() ^ this.invertedVisibilityEntities.containsKey(entity.getUniqueId()); // SPIGOT-7312: Can always see self
@@ -2237,9 +2237,15 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
@Override
public boolean canSee(org.bukkit.entity.Entity entity) {
- return this.equals(entity) || entity.isVisibleByDefault() ^ this.invertedVisibilityEntities.containsKey(entity.getUniqueId()); // SPIGOT-7312: Can always see self
+ return this.equals(entity) || this.chunkMapCanSee(entity); // SPIGOT-7312: Can always see self // Plazma - Port SparklyPaper patches; Optimize canSee check
}
+ // Plazma start - Port SparklyPaper patches; Optimize canSee check
+ public boolean canSeeChunkMapUpdatePlauer(org.bukkit.entity.Entity entity) {
+ // Plazma start - Port SparklyPaper patches; Optimize canSee check (The check in ChunkMap#updatePlayer already rejects if it is the same entity, so we don't need to check it twice, especially because CraftPlayer's equals check is a bit expensive)
+ public boolean chunkMapCanSee(org.bukkit.entity.Entity entity) {
+ return entity.isVisibleByDefault() ^ (!invertedVisibilityEntities.isEmpty() && this.invertedVisibilityEntities.containsKey(entity.getUniqueId()));
+ }
+ // Plazma end - Port SparklyPaper patches; Optimize canSee check
+
public boolean canSee(UUID uuid) {
public boolean canSeePlayer(UUID uuid) {
org.bukkit.entity.Entity entity = this.getServer().getPlayer(uuid);
if (entity == null) {
diff --git a/src/main/java/org/bukkit/craftbukkit/map/CraftMapColorCache.java b/src/main/java/org/bukkit/craftbukkit/map/CraftMapColorCache.java
index 8149b9c51b78eb5c689b7218a2ca3aab60e73bcf..b9a303f6280a2f6ad3616da152922a4f4a504281 100644
--- a/src/main/java/org/bukkit/craftbukkit/map/CraftMapColorCache.java

View File

@@ -324,10 +324,10 @@ index 55e16ed1151c5d53f492581f66a3406ac418b653..9af7df196ed74a48a6b6426df36353f9
this.enableJmxMonitoring = this.get("enable-jmx-monitoring", false);
this.enableStatus = this.get("enable-status", true);
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
index 26e93a0c346204ccccf8255d0f87da03e943bcfb..d53be3e57e97cf9806b04f6d6bdd6a3a9fdb299b 100644
index 841ce275ff3f49783a61af71d83020b8cda35473..509c7536b84019c854163471cb9d42b969747366 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
@@ -426,7 +426,7 @@ public final class CraftServer implements Server {
@@ -433,7 +433,7 @@ public final class CraftServer implements Server {
this.configuration = YamlConfiguration.loadConfiguration(this.getConfigFile());
this.configuration.options().copyDefaults(true);
@@ -398,7 +398,7 @@ index 85f4a9300aebfd4ee64d179dfa1f7ffd314cb3b8..fa209964eec7dae8e2a0fa7bb44e0e87
private static void networkSettings() {
useUPnP = getBoolean("settings.network.upnp-port-forwarding", useUPnP);
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index d8de8710d9b8cf2ae5c434b2b0b27e76ffbbe4bf..72dc81d3015dc7c6365997de9abc269b261649b1 100644
index 6717941d18dbd6871b4613106b9787063e11722f..b6a6a74dfd00a4536258c8693048c9d1ac4df435 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -433,7 +433,7 @@ public class PurpurWorldConfig {

View File

@@ -5,7 +5,7 @@ Subject: [PATCH] Tweak console logging
diff --git a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java
index f661418d27f5692a51b880f64180866f7d19d66a..ddfbc49a693d3100e915f5083f1f8e99df2d4b64 100644
index ca1e8da7540457ecba5684acd42129509c8204f5..9af4efcf9a2c8dee2208ddf37b1bb963a2894666 100644
--- a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java
+++ b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java
@@ -193,16 +193,6 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface
@@ -43,7 +43,7 @@ index f661418d27f5692a51b880f64180866f7d19d66a..ddfbc49a693d3100e915f5083f1f8e99
// Paper start - fix converting txt to json file; convert old users earlier after PlayerList creation but before file load/save
if (this.convertOldUsers()) {
this.getProfileCache().save(false); // Paper
@@ -331,6 +332,7 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface
@@ -330,6 +331,7 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface
String proxyFlavor = (io.papermc.paper.configuration.GlobalConfiguration.get().proxies.velocity.enabled) ? "Velocity" : "BungeeCord";
String proxyLink = (io.papermc.paper.configuration.GlobalConfiguration.get().proxies.velocity.enabled) ? "https://docs.papermc.io/velocity/security" : "http://www.spigotmc.org/wiki/firewall-guide/";
// Paper end - Add Velocity IP Forwarding Support
@@ -51,7 +51,7 @@ index f661418d27f5692a51b880f64180866f7d19d66a..ddfbc49a693d3100e915f5083f1f8e99
if (!this.usesAuthentication()) {
DedicatedServer.LOGGER.warn("**** SERVER IS RUNNING IN OFFLINE/INSECURE MODE!");
DedicatedServer.LOGGER.warn("The server will make no attempt to authenticate usernames. Beware.");
@@ -344,7 +346,7 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface
@@ -343,7 +345,7 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface
DedicatedServer.LOGGER.warn("While this makes the game possible to play without internet access, it also opens up the ability for hackers to connect with any username they choose.");
}
// Spigot end

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] Completely remove Mojang Profiler
diff --git a/src/main/java/net/minecraft/commands/Commands.java b/src/main/java/net/minecraft/commands/Commands.java
index f9d0e8ee9414b3897f268ba78a1469ddf868f51a..58d89000af36f72d629d8e0873d6efbbbb720fe1 100644
index 55b29e9a540cfc00dc32c7ae14d603c150e8863d..4f1976333662662bc6aa844bde9667b8c9a0b159 100644
--- a/src/main/java/net/minecraft/commands/Commands.java
+++ b/src/main/java/net/minecraft/commands/Commands.java
@@ -429,7 +429,7 @@ public class Commands {
@@ -442,7 +442,7 @@ public class Commands {
int j = minecraftserver.getGameRules().getInt(GameRules.RULE_MAX_COMMAND_FORK_COUNT);
try {
@@ -65,7 +65,7 @@ index f626a2f28f2aebb3237cebb6afef3c4fa1a6cb37..467e17bfce31d0919d603698c9d88a04
public int forkLimit() {
return this.forkLimit;
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
index eb4c8b516be77423c7decb247f261a264b1cfc89..da5275e9137023b39f7a0a20255e483b61a5237f 100644
index 9d5257f810f9f88504b913fa0c7c214acc1da2cb..e0f50dcfe30abf439cea3ecd7837569802bd16c8 100644
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
@@ -104,18 +104,18 @@ import net.minecraft.util.datafix.DataFixers;
@@ -120,7 +120,7 @@ index eb4c8b516be77423c7decb247f261a264b1cfc89..da5275e9137023b39f7a0a20255e483b
private ServerConnectionListener connection;
public final ChunkProgressListenerFactory progressListenerFactory;
@Nullable
@@ -2594,10 +2594,12 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -2605,10 +2605,12 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
}
}
@@ -133,7 +133,7 @@ index eb4c8b516be77423c7decb247f261a264b1cfc89..da5275e9137023b39f7a0a20255e483b
public abstract boolean isSingleplayerOwner(GameProfile profile);
@@ -2841,6 +2843,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -2852,6 +2854,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
}
// CraftBukkit end
@@ -141,7 +141,7 @@ index eb4c8b516be77423c7decb247f261a264b1cfc89..da5275e9137023b39f7a0a20255e483b
private void startMetricsRecordingTick() {
if (false && this.willStartRecordingMetrics) { // Purpur
this.metricsRecorder = ActiveMetricsRecorder.createStarted(new ServerMetricsSamplersProvider(Util.timeSource, this.isDedicatedServer()), Util.timeSource, Util.ioPool(), new MetricsPersister("server"), this.onMetricsRecordingStopped, (path) -> {
@@ -2867,12 +2870,12 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -2878,12 +2881,12 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
}
public void startRecordingMetrics(Consumer<ProfileResults> resultConsumer, Consumer<Path> dumpConsumer) {
@@ -156,7 +156,7 @@ index eb4c8b516be77423c7decb247f261a264b1cfc89..da5275e9137023b39f7a0a20255e483b
}
public void stopRecordingMetrics() {
@@ -2887,6 +2890,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -2898,6 +2901,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
//this.metricsRecorder.cancel(); // Purpur
//this.profiler = this.metricsRecorder.getProfiler(); // Purpur
}
@@ -164,7 +164,7 @@ index eb4c8b516be77423c7decb247f261a264b1cfc89..da5275e9137023b39f7a0a20255e483b
public Path getWorldPath(LevelResource worldSavePath) {
return this.storageSource.getLevelPath(worldSavePath);
@@ -2937,6 +2941,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -2948,6 +2952,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
return this.isSaving;
}
@@ -172,7 +172,7 @@ index eb4c8b516be77423c7decb247f261a264b1cfc89..da5275e9137023b39f7a0a20255e483b
public boolean isTimeProfilerRunning() {
return false; //this.debugCommandProfilerDelayStart || this.debugCommandProfiler != null; // Purpur
}
@@ -2955,6 +2960,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -2966,6 +2971,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
return methodprofilerresults;
}
}
@@ -180,7 +180,7 @@ index eb4c8b516be77423c7decb247f261a264b1cfc89..da5275e9137023b39f7a0a20255e483b
public int getMaxChainedNeighborUpdates() {
return 1000000;
@@ -3006,6 +3012,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -3017,6 +3023,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
}
}
@@ -188,7 +188,7 @@ index eb4c8b516be77423c7decb247f261a264b1cfc89..da5275e9137023b39f7a0a20255e483b
private static class TimeProfiler {
final long startNanos;
@@ -3055,6 +3062,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -3066,6 +3073,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
};
}
}
@@ -243,7 +243,7 @@ index bae0d208b31aa0a6977c30f2f8484ab3c316bc71..05d8ca83abf69226aae43ec6f7505572
Executor applyExecutor
) {
diff --git a/src/main/java/net/minecraft/server/ServerFunctionManager.java b/src/main/java/net/minecraft/server/ServerFunctionManager.java
index 775b24a9e55528944b629fd85e1f6ebef9a9892f..579e0b0040ea3315fc7c0e209574b7fef799d2d1 100644
index 7aa1b3705ff548023f8b040678e4008cca3b8514..771a4ad40114961f3340a9100d136d4b3a567c4e 100644
--- a/src/main/java/net/minecraft/server/ServerFunctionManager.java
+++ b/src/main/java/net/minecraft/server/ServerFunctionManager.java
@@ -16,7 +16,7 @@ import net.minecraft.commands.functions.CommandFunction;
@@ -361,10 +361,10 @@ index 8c587f829c5e8c6b6df3150024c4ae704988c47b..319f484b535143a94ee2da11114acacc
}
+// Plazma end - Completely remove Mojang's Profiler
diff --git a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java
index 0559c251107ebbcf49940a5c7647dce2310eae92..b8fcb2841abf0b00f278d21cb344866ed987b4ce 100644
index 9af4efcf9a2c8dee2208ddf37b1bb963a2894666..cbc884db2cacdcba264033dd06988150ba4ee0ba 100644
--- a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java
+++ b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java
@@ -923,11 +923,13 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface
@@ -922,11 +922,13 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface
return this.settings.getProperties().serverResourcePackInfo;
}
@@ -379,7 +379,7 @@ index 0559c251107ebbcf49940a5c7647dce2310eae92..b8fcb2841abf0b00f278d21cb344866e
@Override
public SampleLogger getTickTimeLogger() {
diff --git a/src/main/java/net/minecraft/server/level/ChunkMap.java b/src/main/java/net/minecraft/server/level/ChunkMap.java
index 9162c6338dbb516ce60f4853e57da6e49be79282..809d74ce3a0b02538b1543346485731828a9f139 100644
index 4f112e2550fae57ccd41f6525bffe6d6974a8dd1..88d52e26fa543cacf0801b4e42c1e1fe0d8dd774 100644
--- a/src/main/java/net/minecraft/server/level/ChunkMap.java
+++ b/src/main/java/net/minecraft/server/level/ChunkMap.java
@@ -68,7 +68,7 @@ import net.minecraft.server.level.progress.ChunkProgressListener;
@@ -405,7 +405,7 @@ index 53c0b48966558f43bb9bd7d29d9588f9d83e0de7..7ff845a0ddb308e8b69881f05086105f
import net.minecraft.world.entity.Entity;
import net.minecraft.world.entity.ai.village.poi.PoiManager;
diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java
index dc8cb0e9c8abdbefb0420599a243b1a4fe66bb05..134b9bc1ad77b295e25bd36fcc47e4eed3273c43 100644
index d1b2e68a702ce01c33cfe0e1297a8809e3acf088..f88955fac16576e0eb4d8f6782aa2c8a298f4474 100644
--- a/src/main/java/net/minecraft/server/level/ServerLevel.java
+++ b/src/main/java/net/minecraft/server/level/ServerLevel.java
@@ -79,7 +79,7 @@ import net.minecraft.util.ProgressListener;

View File

@@ -5,7 +5,7 @@ Subject: [PATCH] Reduce create random instance
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
index da5275e9137023b39f7a0a20255e483b61a5237f..33b7b4f544d3ec597075edcbd265815c65c9f8fa 100644
index e0f50dcfe30abf439cea3ecd7837569802bd16c8..5a5661c3f4759c1e7501c2b59f541be11af0a83d 100644
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
@@ -235,6 +235,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -30,7 +30,7 @@ index b47a8a082170bcb630c4354be7c77a4cac71d105..7fe6b99e146e7374cd29534f1e89046e
double d1 = (double) (center.y - maxRange);
double d2 = (double) (center.x + maxRange);
diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java
index d7e4a9fe9676563845d9981523bff1a7ff12282c..b7b9e02ab31206c48f0db88beabc331b7e73245c 100644
index 37636343c1b62b7dfa426bd6ca2bd425fd1bfff3..4ae9db093d7d3bd84c0f14e2067a458579fdd178 100644
--- a/src/main/java/net/minecraft/server/level/ServerPlayer.java
+++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java
@@ -482,7 +482,7 @@ public class ServerPlayer extends Player {
@@ -165,10 +165,10 @@ index fdff9788eaf663be79214b2ca491f0f0444f6136..de50b06f13df481fa59e1abe16d5181b
this.level = world;
this.id = nbt.getInt("Id");
diff --git a/src/main/java/net/minecraft/world/inventory/EnchantmentMenu.java b/src/main/java/net/minecraft/world/inventory/EnchantmentMenu.java
index c3a644b0f8c7c5622acc9e1a496f95d432718806..ce8fb88b31af1d27a7118735154673a9f05499ec 100644
index 6d28f1097caa3e37c2917eb401018ebf48c13a39..9397f1fa3b53423deabbedc6f7bb0f98d68c89a2 100644
--- a/src/main/java/net/minecraft/world/inventory/EnchantmentMenu.java
+++ b/src/main/java/net/minecraft/world/inventory/EnchantmentMenu.java
@@ -95,7 +95,7 @@ public class EnchantmentMenu extends AbstractContainerMenu {
@@ -96,7 +96,7 @@ public class EnchantmentMenu extends AbstractContainerMenu {
}
// Purpur end
};
@@ -178,7 +178,7 @@ index c3a644b0f8c7c5622acc9e1a496f95d432718806..ce8fb88b31af1d27a7118735154673a9
this.costs = new int[3];
this.enchantClue = new int[]{-1, -1, -1};
diff --git a/src/main/java/net/minecraft/world/level/Explosion.java b/src/main/java/net/minecraft/world/level/Explosion.java
index f5e84bf8817e2d53557e0909d8c9e0e0e8206a16..1792f18397d733d87ef067a7daaf076be4163c63 100644
index 133d994d9ac9d4f9527135ac0c77e5749917f8c3..9771279c913a5be86e516db74792fd045c27e4cd 100644
--- a/src/main/java/net/minecraft/world/level/Explosion.java
+++ b/src/main/java/net/minecraft/world/level/Explosion.java
@@ -93,7 +93,7 @@ public class Explosion {
@@ -191,7 +191,7 @@ index f5e84bf8817e2d53557e0909d8c9e0e0e8206a16..1792f18397d733d87ef067a7daaf076b
this.hitPlayers = Maps.newHashMap();
this.level = world;
diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java
index 11a92adbcc97233f10cbe2547352213e92d0a09c..0857723b627c54e1992647c3d605809675397bc5 100644
index 2a6bbd570ba885c4666ea4be3dd044ddfe3d9eb9..47fcbff8a0b7feedbc700b6c3cf44d3a02a60246 100644
--- a/src/main/java/net/minecraft/world/level/Level.java
+++ b/src/main/java/net/minecraft/world/level/Level.java
@@ -121,16 +121,16 @@ public abstract class Level implements LevelAccessor, AutoCloseable {

View File

@@ -7,10 +7,10 @@ Subject: [PATCH] Ignore useless entity packets
- PurpurMC/Purpur
diff --git a/src/main/java/net/minecraft/server/level/ServerEntity.java b/src/main/java/net/minecraft/server/level/ServerEntity.java
index b86ae3929ec5d3c4eb69d92774dc445aa5b3093e..44e4a768a0ccde83cae5547c7ba07744cec4c693 100644
index a528685040bf5596fe20fc055d691fd7e663762c..9fe8dcea8f5075a5420a4355bb3c27c2311d8f94 100644
--- a/src/main/java/net/minecraft/server/level/ServerEntity.java
+++ b/src/main/java/net/minecraft/server/level/ServerEntity.java
@@ -205,6 +205,8 @@ public class ServerEntity {
@@ -212,6 +212,8 @@ public class ServerEntity {
flag4 = true;
flag5 = true;
}
@@ -19,7 +19,7 @@ index b86ae3929ec5d3c4eb69d92774dc445aa5b3093e..44e4a768a0ccde83cae5547c7ba07744
}
if ((this.trackDelta || this.entity.hasImpulse || this.entity instanceof LivingEntity && ((LivingEntity) this.entity).isFallFlying()) && this.tickCount > 0) {
@@ -288,6 +290,19 @@ public class ServerEntity {
@@ -295,6 +297,19 @@ public class ServerEntity {
});
}
@@ -40,7 +40,7 @@ index b86ae3929ec5d3c4eb69d92774dc445aa5b3093e..44e4a768a0ccde83cae5547c7ba07744
this.entity.stopSeenByPlayer(player);
player.connection.send(new ClientboundRemoveEntitiesPacket(new int[]{this.entity.getId()}));
diff --git a/src/main/java/org/plazmamc/plazma/configurations/WorldConfigurations.java b/src/main/java/org/plazmamc/plazma/configurations/WorldConfigurations.java
index 922d1d250f2e2e5a4177bcf5fe7487ff2b43413b..c8a3e91d0d6510b519e927027f5a534cddf7d0a3 100644
index b83a1058484e3d4d46f91d659f795f59d7087b72..9debf554deb5b7aa021502ff7d600905f56fa25c 100644
--- a/src/main/java/org/plazmamc/plazma/configurations/WorldConfigurations.java
+++ b/src/main/java/org/plazmamc/plazma/configurations/WorldConfigurations.java
@@ -29,6 +29,8 @@ public class WorldConfigurations extends ConfigurationPart {

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] Suppress errors from dirty attributes
diff --git a/src/main/java/net/minecraft/server/level/ServerEntity.java b/src/main/java/net/minecraft/server/level/ServerEntity.java
index 44e4a768a0ccde83cae5547c7ba07744cec4c693..7954be9d04d88444601144bab560701c04274aa7 100644
index 9fe8dcea8f5075a5420a4355bb3c27c2311d8f94..acf1cb25f75b35e064e7099d85693632073df858 100644
--- a/src/main/java/net/minecraft/server/level/ServerEntity.java
+++ b/src/main/java/net/minecraft/server/level/ServerEntity.java
@@ -406,7 +406,8 @@ public class ServerEntity {
@@ -413,7 +413,8 @@ public class ServerEntity {
}
if (this.entity instanceof LivingEntity) {
@@ -18,7 +18,7 @@ index 44e4a768a0ccde83cae5547c7ba07744cec4c693..7954be9d04d88444601144bab560701c
if (!set.isEmpty()) {
// CraftBukkit start - Send scaled max health
@@ -417,7 +418,7 @@ public class ServerEntity {
@@ -424,7 +425,7 @@ public class ServerEntity {
this.broadcastAndSend(new ClientboundUpdateAttributesPacket(this.entity.getId(), set));
}
@@ -28,7 +28,7 @@ index 44e4a768a0ccde83cae5547c7ba07744cec4c693..7954be9d04d88444601144bab560701c
}
diff --git a/src/main/java/org/plazmamc/plazma/configurations/WorldConfigurations.java b/src/main/java/org/plazmamc/plazma/configurations/WorldConfigurations.java
index 1e7c23c8851ba1d0f37d2b17fd334220e060888e..29514dd01d46ba9f6b123bf3af56981541f670db 100644
index bc35244533621436e3c0fb871edf7834ad937f81..a9c8a5918184a2ea364261e279edf7169ae270c7 100644
--- a/src/main/java/org/plazmamc/plazma/configurations/WorldConfigurations.java
+++ b/src/main/java/org/plazmamc/plazma/configurations/WorldConfigurations.java
@@ -31,6 +31,7 @@ public class WorldConfigurations extends ConfigurationPart {

View File

@@ -94,7 +94,7 @@ index 03be23690a94a14d7343526acad67ccf53b85c70..416c0a736edf47f76a37be0bc5fe8678
)
);
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
index 33b7b4f544d3ec597075edcbd265815c65c9f8fa..3a7c0b25d160ca18a26ebd29cb3b0fcf78fef146 100644
index 5a5661c3f4759c1e7501c2b59f541be11af0a83d..7f5ea3282f5069a4a911b69c758981b6f4dcadc0 100644
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
@@ -257,8 +257,10 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -108,7 +108,7 @@ index 33b7b4f544d3ec597075edcbd265815c65c9f8fa..3a7c0b25d160ca18a26ebd29cb3b0fcf
public final TickTimes tickTimes60s = new TickTimes(1200);
// Paper end - Add tick times API and /mspt command
@Nullable
@@ -1823,8 +1825,10 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -1825,8 +1827,10 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
worldserver.tick(shouldKeepTicking);
long after = Util.getNanos() - before;
@@ -120,7 +120,7 @@ index 33b7b4f544d3ec597075edcbd265815c65c9f8fa..3a7c0b25d160ca18a26ebd29cb3b0fcf
// Plazma end - Port SparklyPaper patches; Track World specific MSPT
// Paper start
diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java
index 49307871db084a7f22a0f8570a27c9aa8f7f2f30..997a8eb1e0b72bee871cfff36cd9f66d5c87953b 100644
index f88955fac16576e0eb4d8f6782aa2c8a298f4474..fbc698007059d930a102197749c6a5b8e6821b46 100644
--- a/src/main/java/net/minecraft/server/level/ServerLevel.java
+++ b/src/main/java/net/minecraft/server/level/ServerLevel.java
@@ -234,8 +234,10 @@ public class ServerLevel extends Level implements WorldGenLevel {

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] Use Akair's flag when running the test server with gradle
diff --git a/build.gradle.kts b/build.gradle.kts
index 41c335bc9d80abb40e58dfbc4842b66db23e0cba..d3f8a3ff1ae30b6e3d253a58cc584cee7d11771c 100644
index 92826a38773b6d76acfbf18774ada8a395e9007f..99bf51cb7dd5a8a2d9f87c18bcf9745cead4ba61 100644
--- a/build.gradle.kts
+++ b/build.gradle.kts
@@ -125,7 +125,7 @@ fun TaskContainer.registerRunTask(
@@ -121,7 +121,7 @@ fun TaskContainer.registerRunTask(
languageVersion.set(JavaLanguageVersion.of(21))
vendor.set(JvmVendorSpec.JETBRAINS)
})

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] Use Plazma logo instead if server favicon doesn't exist
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
index 3a7c0b25d160ca18a26ebd29cb3b0fcf78fef146..4635d67ed906886f533b6d5911d99a163810ea11 100644
index 7f5ea3282f5069a4a911b69c758981b6f4dcadc0..0df87edbd9625b2888b303c1000aefa9bdbd2f26 100644
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
@@ -1557,29 +1557,36 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -1559,29 +1559,36 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
}
private Optional<ServerStatus.Favicon> loadStatusIcon() {

View File

@@ -20,10 +20,10 @@ You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
diff --git a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java
index 6d39a0d5455fbb0af3916b751d02386af3aa3598..ba059d797251750ac866f8f2e077315597ae737f 100644
index cbc884db2cacdcba264033dd06988150ba4ee0ba..99479a594f573aaac2a96bbecd9ef70e845f4677 100644
--- a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java
+++ b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java
@@ -705,6 +705,7 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface
@@ -704,6 +704,7 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface
// Paper start - Add setting for proxy online mode status
return dedicatedserverproperties.enforceSecureProfile
&& io.papermc.paper.configuration.GlobalConfiguration.get().proxies.isProxyOnlineMode()
@@ -32,7 +32,7 @@ index 6d39a0d5455fbb0af3916b751d02386af3aa3598..ba059d797251750ac866f8f2e0773155
// Paper end - Add setting for proxy online mode status
}
diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java
index c36ebab552c480d34e7fd48a45f0a320a97b9677..361fcabfe5e6f54903fcbeddc96ad2311cfcfdb6 100644
index c36ebab552c480d34e7fd48a45f0a320a97b9677..fdfe8f5bc5ad0e5f5ded41d87756a5866d041df1 100644
--- a/src/main/java/net/minecraft/server/players/PlayerList.java
+++ b/src/main/java/net/minecraft/server/players/PlayerList.java
@@ -135,6 +135,7 @@ public abstract class PlayerList {