diff --git a/patches/unapplied-server/0001-Rebrand.patch b/patches/server/0001-Rebrand.patch similarity index 95% rename from patches/unapplied-server/0001-Rebrand.patch rename to patches/server/0001-Rebrand.patch index 052131c52..3c52b047a 100644 --- a/patches/unapplied-server/0001-Rebrand.patch +++ b/patches/server/0001-Rebrand.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Rebrand diff --git a/build.gradle.kts b/build.gradle.kts -index 4998aff0b7cb084dcda15c6a18bbe45e99b6000a..d23ecfabf6bf1e355fb2efe5abd80236259ce3c4 100644 +index b06f38b87765d084565bc11cf5da6076562b6be8..5353a88c2667513a6c47cf1545d5a5726aae774d 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -13,7 +13,7 @@ configurations.named(log4jPlugins.compileClasspathConfigurationName) { @@ -17,7 +17,7 @@ index 4998aff0b7cb084dcda15c6a18bbe45e99b6000a..d23ecfabf6bf1e355fb2efe5abd80236 // Paper start implementation("org.jline:jline-terminal-jansi:3.21.0") implementation("net.minecrell:terminalconsoleappender:1.3.0") -@@ -47,6 +47,10 @@ dependencies { +@@ -42,6 +42,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") @@ -28,7 +28,7 @@ index 4998aff0b7cb084dcda15c6a18bbe45e99b6000a..d23ecfabf6bf1e355fb2efe5abd80236 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") -@@ -80,14 +84,14 @@ tasks.jar { +@@ -75,14 +79,14 @@ tasks.jar { val gitBranch = git("rev-parse", "--abbrev-ref", "HEAD").getText().trim() // Paper attributes( "Main-Class" to "org.bukkit.craftbukkit.Main", @@ -48,7 +48,7 @@ index 4998aff0b7cb084dcda15c6a18bbe45e99b6000a..d23ecfabf6bf1e355fb2efe5abd80236 "Build-Number" to (build ?: ""), "Build-Time" to Instant.now().toString(), "Git-Branch" to gitBranch, // Paper -@@ -144,7 +148,7 @@ fun TaskContainer.registerRunTask( +@@ -139,7 +143,7 @@ fun TaskContainer.registerRunTask( name: String, block: JavaExec.() -> Unit ): TaskProvider = register(name) { @@ -184,33 +184,18 @@ index 790bad0494454ca12ee152e3de6da3da634d9b20..a6e5950b5875cafd734300cdfbf58f5d @Override diff --git a/src/main/java/net/minecraft/CrashReport.java b/src/main/java/net/minecraft/CrashReport.java -index 4f3cc14d48690bb183d09bb7a5ba1e23e8a0c08a..c366d84518979e842a6f10f969a5951539ecac93 100644 +index 589a8bf75be6ccc59f1e5dd5d8d9afed41c4772d..fea76d9d0b2a75d6a0b39cafafcb11c5a8d7d447 100644 --- a/src/main/java/net/minecraft/CrashReport.java +++ b/src/main/java/net/minecraft/CrashReport.java -@@ -125,6 +125,10 @@ public class CrashReport { +@@ -124,7 +124,7 @@ public class CrashReport { + public String getFriendlyReport(ReportType type, List extraInfo) { StringBuilder stringbuilder = new StringBuilder(); - stringbuilder.append("---- Minecraft Crash Report ----\n"); -+ // Purpur start -+ stringbuilder.append("// "); -+ stringbuilder.append("// DO NOT REPORT THIS TO PAPER! REPORT TO PURPUR INSTEAD!"); -+ // Purpur end - stringbuilder.append("// "); - stringbuilder.append(CrashReport.getErrorComment()); - stringbuilder.append("\n\n"); -diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 3751c2a077bd13bac330b93c6efc2a640a17f4f2..38d2dfcee9462aaf9aa4954effe2b40242d4bb76 100644 ---- a/src/main/java/net/minecraft/server/MinecraftServer.java -+++ b/src/main/java/net/minecraft/server/MinecraftServer.java -@@ -956,7 +956,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop { String minecraftVersion = Bukkit.getVersion(); -@@ -602,16 +602,8 @@ public class Metrics { +@@ -597,16 +597,8 @@ public class Metrics { })); metrics.addCustomChart(new Metrics.SingleLineChart("players", () -> Bukkit.getOnlinePlayers().size())); @@ -37,7 +37,7 @@ index 4b002e8b75d117b726b0de274a76d3596fce015b..8cde30544e14f8fc2dac32966ae3c21f metrics.addCustomChart(new Metrics.DrilldownPie("java_version", () -> { Map> map = new HashMap<>(); diff --git a/src/main/java/net/minecraft/commands/CommandSourceStack.java b/src/main/java/net/minecraft/commands/CommandSourceStack.java -index 59d7e8a3d83d3ab7aa28606401bb129ccaeff240..b51850c0368b0fa2c9eb4ca44b9c931eb46478fc 100644 +index 4017b82e72fefd6685e9250a936686fd8a0891f1..c98247a6ccc015f1da2c11995fb392b24197e888 100644 --- a/src/main/java/net/minecraft/commands/CommandSourceStack.java +++ b/src/main/java/net/minecraft/commands/CommandSourceStack.java @@ -310,6 +310,30 @@ public class CommandSourceStack implements ExecutionCommandSource resourcekey, RegistryAccess iregistrycustom, Holder holder, Supplier supplier, boolean flag, boolean flag1, long i, int j, org.bukkit.generator.ChunkGenerator gen, org.bukkit.generator.BiomeProvider biomeProvider, org.bukkit.World.Environment env, java.util.function.Function paperWorldConfigCreator, java.util.concurrent.Executor executor) { // Paper - create paper world config; Async-Anti-Xray: Pass executor +@@ -202,6 +203,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable { + protected Level(WritableLevelData worlddatamutable, ResourceKey resourcekey, RegistryAccess iregistrycustom, Holder holder, Supplier supplier, boolean flag, boolean flag1, long i, int j, org.bukkit.generator.ChunkGenerator gen, org.bukkit.generator.BiomeProvider biomeProvider, org.bukkit.World.Environment env, java.util.function.Function paperWorldConfigCreator) { // Paper - create paper world config this.spigotConfig = new org.spigotmc.SpigotWorldConfig(((net.minecraft.world.level.storage.PrimaryLevelData) worlddatamutable).getLevelName()); // Spigot this.paperConfig = paperWorldConfigCreator.apply(this.spigotConfig); // Paper - create paper world config + this.purpurConfig = new org.purpurmc.purpur.PurpurWorldConfig(((net.minecraft.world.level.storage.PrimaryLevelData) worlddatamutable).getLevelName(), env); // Purpur @@ -112,10 +112,10 @@ index 14281a4e72f49dc4eb2ca3da8479c1f81a3a175d..be8bc5b5d5fdf41da40fb5aef9e6bb16 this.world = new CraftWorld((ServerLevel) this, gen, biomeProvider, env); diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index 5db08432b6afd3639688830e717f40ceaf599248..987cc39ebc9332ba0c974fb4e8b89ebbe05aff5f 100644 +index 77f3ac4e45a691181a94831cf49f7840c9f88e3a..0d40596884f3b9ecfe3e7267e204f4003c50cab2 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -@@ -1056,6 +1056,7 @@ public final class CraftServer implements Server { +@@ -1059,6 +1059,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); @@ -123,7 +123,7 @@ index 5db08432b6afd3639688830e717f40ceaf599248..987cc39ebc9332ba0c974fb4e8b89ebb 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)) -@@ -1071,6 +1072,7 @@ public final class CraftServer implements Server { +@@ -1074,6 +1075,7 @@ public final class CraftServer implements Server { } } world.spigotConfig.init(); // Spigot @@ -131,7 +131,7 @@ index 5db08432b6afd3639688830e717f40ceaf599248..987cc39ebc9332ba0c974fb4e8b89ebb } Plugin[] pluginClone = pluginManager.getPlugins().clone(); // Paper -@@ -1087,6 +1089,7 @@ public final class CraftServer implements Server { +@@ -1090,6 +1092,7 @@ public final class CraftServer implements Server { this.reloadData(); org.spigotmc.SpigotConfig.registerCommands(); // Spigot io.papermc.paper.command.PaperCommands.registerCommands(this.console); // Paper @@ -139,7 +139,7 @@ index 5db08432b6afd3639688830e717f40ceaf599248..987cc39ebc9332ba0c974fb4e8b89ebb this.overrideAllCommandBlockCommands = this.commandsConfiguration.getStringList("command-block-overrides").contains("*"); this.ignoreVanillaPermissions = this.commandsConfiguration.getBoolean("ignore-vanilla-permissions"); -@@ -3053,6 +3056,18 @@ public final class CraftServer implements Server { +@@ -2978,6 +2981,18 @@ public final class CraftServer implements Server { return CraftServer.this.console.paperConfigurations.createLegacyObject(CraftServer.this.console); } @@ -159,7 +159,7 @@ index 5db08432b6afd3639688830e717f40ceaf599248..987cc39ebc9332ba0c974fb4e8b89ebb public void restart() { org.spigotmc.RestartCommand.restart(); diff --git a/src/main/java/org/bukkit/craftbukkit/Main.java b/src/main/java/org/bukkit/craftbukkit/Main.java -index b86ba59158964f73abd6622341a9acb98a33fa44..af153da19fadf3020191e1de7d10d6688bf8c2d8 100644 +index 6e1f92b45504cef0c4dcbbebf3df339ef4cad0a1..48e8b7405270632130721e87579ee2438a0f0b75 100644 --- a/src/main/java/org/bukkit/craftbukkit/Main.java +++ b/src/main/java/org/bukkit/craftbukkit/Main.java @@ -176,6 +176,14 @@ public class Main { diff --git a/patches/unapplied-server/0003-Purpur-client-support.patch b/patches/server/0003-Purpur-client-support.patch similarity index 69% rename from patches/unapplied-server/0003-Purpur-client-support.patch rename to patches/server/0003-Purpur-client-support.patch index 638ca8728..6ba5cb0a2 100644 --- a/patches/unapplied-server/0003-Purpur-client-support.patch +++ b/patches/server/0003-Purpur-client-support.patch @@ -5,32 +5,32 @@ Subject: [PATCH] Purpur client support diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index 6a4637eef14cbd84bbe26ef16f004b8f93367a3d..32c02333eee85dd3e90f259873bf8bbb4c9177a7 100644 +index 40b5d379e917771b30d888eb390f5d5698a34ffb..922ff0589cfde06b3e9abab60c7fd051465bb413 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java -@@ -298,6 +298,7 @@ public class ServerPlayer extends Player { +@@ -296,6 +296,7 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player { public com.destroystokyo.paper.event.entity.PlayerNaturallySpawnCreaturesEvent playerNaturallySpawnedEvent; // Paper - PlayerNaturallySpawnCreaturesEvent public @Nullable String clientBrandName = null; // Paper - Brand support public org.bukkit.event.player.PlayerQuitEvent.QuitReason quitReason = null; // Paper - Add API for quit reason; there are a lot of changes to do if we change all methods leading to the event + public boolean purpurClient = false; // Purpur - // Paper start - replace player chunk loader - private final java.util.concurrent.atomic.AtomicReference viewDistances = new java.util.concurrent.atomic.AtomicReference<>(new io.papermc.paper.chunk.system.RegionizedPlayerChunkLoader.ViewDistances(-1, -1, -1)); + public ServerPlayer(MinecraftServer server, ServerLevel world, GameProfile profile, ClientInformation clientOptions) { + super(world, world.getSharedSpawnPos(), world.getSharedSpawnAngle(), profile); diff --git a/src/main/java/net/minecraft/server/network/ServerCommonPacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerCommonPacketListenerImpl.java -index 308aef9c4933b2bcdd622a34b68efab4a220fe4d..a8edeb5a40cd9aac933805259407e32c544d181e 100644 +index b43f87ff4b9853b5d4bbea5ff9686d64d9d0d26b..b66d4047b5e529f5f737efb0ff1edda805de1316 100644 --- a/src/main/java/net/minecraft/server/network/ServerCommonPacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerCommonPacketListenerImpl.java -@@ -78,6 +78,7 @@ public abstract class ServerCommonPacketListenerImpl implements ServerCommonPack +@@ -79,6 +79,7 @@ public abstract class ServerCommonPacketListenerImpl implements ServerCommonPack public final java.util.Map packCallbacks = new java.util.concurrent.ConcurrentHashMap<>(); // Paper - adventure resource pack callbacks private static final long KEEPALIVE_LIMIT = Long.getLong("paper.playerconnection.keepalive", 30) * 1000; // Paper - provide property to set keepalive limit - protected static final ResourceLocation MINECRAFT_BRAND = new ResourceLocation("brand"); // Paper - Brand support -+ protected static final ResourceLocation PURPUR_CLIENT = new ResourceLocation("purpur", "client"); // Purpur + protected static final ResourceLocation MINECRAFT_BRAND = ResourceLocation.withDefaultNamespace("brand"); // Paper - Brand support ++ protected static final ResourceLocation PURPUR_CLIENT = ResourceLocation.fromNamespaceAndPath("purpur", "client"); // Purpur public ServerCommonPacketListenerImpl(MinecraftServer minecraftserver, Connection networkmanager, CommonListenerCookie commonlistenercookie, ServerPlayer player) { // CraftBukkit this.server = minecraftserver; -@@ -170,6 +171,13 @@ public abstract class ServerCommonPacketListenerImpl implements ServerCommonPack +@@ -171,6 +172,13 @@ public abstract class ServerCommonPacketListenerImpl implements ServerCommonPack ServerGamePacketListenerImpl.LOGGER.error("Couldn\'t register custom payload", ex); - this.disconnect("Invalid payload REGISTER!", org.bukkit.event.player.PlayerKickEvent.Cause.INVALID_PAYLOAD); // Paper - kick event cause + this.disconnect(Component.literal("Invalid payload REGISTER!"), PlayerKickEvent.Cause.INVALID_PAYLOAD); // Paper - kick event cause } + // Purpur start + } else if (identifier.equals(PURPUR_CLIENT)) { @@ -43,12 +43,12 @@ index 308aef9c4933b2bcdd622a34b68efab4a220fe4d..a8edeb5a40cd9aac933805259407e32c try { String channels = payload.toString(com.google.common.base.Charsets.UTF_8); diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index 40155cc70ba959eea8011626a30e26f44298c99d..69de5167aeaa6f9cb66fa7c2daa63a2e72c93fd0 100644 +index fc7fa260bb55ae28b17a3ea05682a51ad4fa39df..e2c3a8f14d0d48bc756c6845be652eefde58a85d 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -@@ -3528,4 +3528,11 @@ public class CraftPlayer extends CraftHumanEntity implements Player { +@@ -3534,4 +3534,11 @@ public class CraftPlayer extends CraftHumanEntity implements Player { public void setSendViewDistance(final int viewDistance) { - this.getHandle().setSendViewDistance(viewDistance); + throw new UnsupportedOperationException("Not implemented yet"); } + + // Purpur start diff --git a/patches/unapplied-server/0004-Fix-decompile-errors.patch b/patches/server/0004-Fix-decompile-errors.patch similarity index 100% rename from patches/unapplied-server/0004-Fix-decompile-errors.patch rename to patches/server/0004-Fix-decompile-errors.patch diff --git a/patches/unapplied-server/0005-Component-related-conveniences.patch b/patches/server/0005-Component-related-conveniences.patch similarity index 87% rename from patches/unapplied-server/0005-Component-related-conveniences.patch rename to patches/server/0005-Component-related-conveniences.patch index d47604210..25b17035e 100644 --- a/patches/unapplied-server/0005-Component-related-conveniences.patch +++ b/patches/server/0005-Component-related-conveniences.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Component related conveniences diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index 32c02333eee85dd3e90f259873bf8bbb4c9177a7..8a183fc9d0a79dd9a952bc1759c53da286908188 100644 +index 922ff0589cfde06b3e9abab60c7fd051465bb413..2c02e1ccc8005c1bff952d4aa17557002c7e3d84 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java -@@ -1979,6 +1979,26 @@ public class ServerPlayer extends Player { +@@ -1969,6 +1969,26 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player { this.lastSentExp = -1; // CraftBukkit - Added to reset } @@ -36,10 +36,10 @@ index 32c02333eee85dd3e90f259873bf8bbb4c9177a7..8a183fc9d0a79dd9a952bc1759c53da2 public void displayClientMessage(Component message, boolean overlay) { this.sendSystemMessage(message, overlay); diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java -index a2142930b4d4b05987c90496fb9d733d99040aa0..2d6b6795703431939005aa09d1ed590c3f755163 100644 +index 8ba99f6ef2b50ceb8e279ed559a375ada6877576..ab3cdaecf0e5e45acd3ac19be590c863cba9019a 100644 --- a/src/main/java/net/minecraft/server/players/PlayerList.java +++ b/src/main/java/net/minecraft/server/players/PlayerList.java -@@ -1063,6 +1063,20 @@ public abstract class PlayerList { +@@ -1015,6 +1015,20 @@ public abstract class PlayerList { } // CraftBukkit end @@ -61,10 +61,10 @@ index a2142930b4d4b05987c90496fb9d733d99040aa0..2d6b6795703431939005aa09d1ed590c Iterator iterator = this.players.iterator(); diff --git a/src/main/java/net/minecraft/world/damagesource/DamageSource.java b/src/main/java/net/minecraft/world/damagesource/DamageSource.java -index dd9638bdb228a53e72820e0e7cf6fe6fcc08fe4b..bc5071efe710614309308dad5b6d9c56197ee888 100644 +index bb1a60180e58c1333e7bb33e8acf1b0225eda8a8..c83e80ebdbbfb2d0e08561a44486a308d16f50af 100644 --- a/src/main/java/net/minecraft/world/damagesource/DamageSource.java +++ b/src/main/java/net/minecraft/world/damagesource/DamageSource.java -@@ -193,6 +193,15 @@ public class DamageSource { +@@ -198,6 +198,15 @@ public class DamageSource { } } @@ -81,10 +81,10 @@ index dd9638bdb228a53e72820e0e7cf6fe6fcc08fe4b..bc5071efe710614309308dad5b6d9c56 return this.type().msgId(); } diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 4ee843dfd826772c9157ca421d8fe1f36f814b51..ffcd965586acc5993c8122336ea2ec661932d4b7 100644 +index 8779d54c816bb97ccdeb268d1929f693d322ee14..6735bea3a56e0b44eb22dcd403a6b937e31b45c7 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -4195,6 +4195,20 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -3913,6 +3913,20 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess return SlotAccess.NULL; }