diff --git a/divinemc-server/minecraft-patches/features/0008-Parallel-world-ticking.patch b/divinemc-server/minecraft-patches/features/0008-Parallel-world-ticking.patch index 46ae01f..f8fa0e0 100644 --- a/divinemc-server/minecraft-patches/features/0008-Parallel-world-ticking.patch +++ b/divinemc-server/minecraft-patches/features/0008-Parallel-world-ticking.patch @@ -441,7 +441,7 @@ index 61eeec6a0d789e5e44abdeb5826d7ee2307301ba..d6b8486d8ec534b8fcfa50899cae4281 try { org.purpurmc.purpur.PurpurConfig.init((java.io.File) options.valueOf("purpur-settings")); diff --git a/net/minecraft/server/level/ServerLevel.java b/net/minecraft/server/level/ServerLevel.java -index fdfb92daeb5dd60360a80baf5c1778d641cfd9be..04d36514e55e31d867dca6cd46fdef4fa601c97d 100644 +index 95d24f500e919f1deae1b7b1ce6e67fa24566eff..a3f363d0c86142e03edc7fc6e2ff6ed81de8ed65 100644 --- a/net/minecraft/server/level/ServerLevel.java +++ b/net/minecraft/server/level/ServerLevel.java @@ -184,7 +184,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe @@ -521,10 +521,10 @@ index fdfb92daeb5dd60360a80baf5c1778d641cfd9be..04d36514e55e31d867dca6cd46fdef4f // Paper start - extra debug info if (entity.valid) { diff --git a/net/minecraft/server/level/ServerPlayer.java b/net/minecraft/server/level/ServerPlayer.java -index 515b2178e71a3723eace26c89032e45678145224..7bafc62f601d0205bc673c2b6accbd2a80c75277 100644 +index a9f723528dd05cb9583319edcb14143b784a2fd7..16fb9ee92f2e7b648d81bb0d90ede61405700001 100644 --- a/net/minecraft/server/level/ServerPlayer.java +++ b/net/minecraft/server/level/ServerPlayer.java -@@ -427,6 +427,7 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc +@@ -434,6 +434,7 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc return this.viewDistanceHolder; } // Paper end - rewrite chunk system @@ -532,7 +532,7 @@ index 515b2178e71a3723eace26c89032e45678145224..7bafc62f601d0205bc673c2b6accbd2a public ServerPlayer(MinecraftServer server, ServerLevel level, GameProfile gameProfile, ClientInformation clientInformation) { super(level, level.getSharedSpawnPos(), level.getSharedSpawnAngle(), gameProfile); -@@ -803,6 +804,7 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc +@@ -810,6 +811,7 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc @Override public void tick() { @@ -540,7 +540,7 @@ index 515b2178e71a3723eace26c89032e45678145224..7bafc62f601d0205bc673c2b6accbd2a // CraftBukkit start if (this.joining) { this.joining = false; -@@ -1448,6 +1450,7 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc +@@ -1455,6 +1457,7 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc return this; } else { // CraftBukkit start @@ -548,7 +548,7 @@ index 515b2178e71a3723eace26c89032e45678145224..7bafc62f601d0205bc673c2b6accbd2a /* this.isChangingDimension = true; LevelData levelData = level.getLevelData(); -@@ -1815,6 +1818,12 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc +@@ -1822,6 +1825,12 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc return OptionalInt.empty(); } else { // CraftBukkit start @@ -561,7 +561,7 @@ index 515b2178e71a3723eace26c89032e45678145224..7bafc62f601d0205bc673c2b6accbd2a this.containerMenu = abstractContainerMenu; // Moved up if (!this.isImmobile()) this.connection -@@ -1879,6 +1888,11 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc +@@ -1886,6 +1895,11 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc } @Override public void closeContainer(org.bukkit.event.inventory.InventoryCloseEvent.Reason reason) { @@ -574,7 +574,7 @@ index 515b2178e71a3723eace26c89032e45678145224..7bafc62f601d0205bc673c2b6accbd2a // Paper end - Inventory close reason this.connection.send(new ClientboundContainerClosePacket(this.containerMenu.containerId)); diff --git a/net/minecraft/server/players/PlayerList.java b/net/minecraft/server/players/PlayerList.java -index 04fdd32394e473995648842027b88bf7ed0136ba..676b56c2898d714423dcc87170f325963749cec7 100644 +index 6f66c5a93383b2897425e117c32add9a34054add..3d8c1c5aa922ec0417388a1ff27d423cdb6d1351 100644 --- a/net/minecraft/server/players/PlayerList.java +++ b/net/minecraft/server/players/PlayerList.java @@ -150,6 +150,7 @@ public abstract class PlayerList { @@ -630,7 +630,7 @@ index 3709efe15b30e4140ba677ffdcd4634b06e34d7d..33f24b21e2170700f3d38e072c106e1a List list = new ArrayList<>(passengers.size()); this.ejectPassengers(); diff --git a/net/minecraft/world/inventory/AbstractContainerMenu.java b/net/minecraft/world/inventory/AbstractContainerMenu.java -index 3dcd8df0b395a8fed8bc0cbe0ff78f4ae0056fd3..43a421306ee2ebd68981d12ec382ad63cdfeb897 100644 +index e6419715fab462b12790ecb175ce1e1a1fceed8f..40040b1e78765a4a686f9e430d16361c8c31fb14 100644 --- a/net/minecraft/world/inventory/AbstractContainerMenu.java +++ b/net/minecraft/world/inventory/AbstractContainerMenu.java @@ -92,8 +92,14 @@ public abstract class AbstractContainerMenu { diff --git a/divinemc-server/minecraft-patches/features/0028-Implement-NoChatReports.patch b/divinemc-server/minecraft-patches/features/0028-Implement-NoChatReports.patch index 79b5edf..2f2dd51 100644 --- a/divinemc-server/minecraft-patches/features/0028-Implement-NoChatReports.patch +++ b/divinemc-server/minecraft-patches/features/0028-Implement-NoChatReports.patch @@ -287,7 +287,7 @@ index 398c1733824b689520170de0be94006731afa5cd..072e9b8810a6ccc292f1eb5ffe02355a if (packet == null || this.processedDisconnect) { // Spigot return; diff --git a/net/minecraft/server/players/PlayerList.java b/net/minecraft/server/players/PlayerList.java -index 676b56c2898d714423dcc87170f325963749cec7..13f9f9ad57c8f2575dfe5822122abccf29c367a9 100644 +index 3d8c1c5aa922ec0417388a1ff27d423cdb6d1351..6cbd57650f1f966955ee14039bca8ceb164599cd 100644 --- a/net/minecraft/server/players/PlayerList.java +++ b/net/minecraft/server/players/PlayerList.java @@ -274,7 +274,7 @@ public abstract class PlayerList { @@ -299,7 +299,7 @@ index 676b56c2898d714423dcc87170f325963749cec7..13f9f9ad57c8f2575dfe5822122abccf ) ); player.getBukkitEntity().sendSupportedChannels(); // CraftBukkit -@@ -1328,6 +1328,7 @@ public abstract class PlayerList { +@@ -1333,6 +1333,7 @@ public abstract class PlayerList { } public boolean verifyChatTrusted(PlayerChatMessage message) { // Paper - private -> public diff --git a/divinemc-server/minecraft-patches/sources/net/minecraft/server/level/ServerPlayer.java.patch b/divinemc-server/minecraft-patches/sources/net/minecraft/server/level/ServerPlayer.java.patch index f759c2f..f79e55a 100644 --- a/divinemc-server/minecraft-patches/sources/net/minecraft/server/level/ServerPlayer.java.patch +++ b/divinemc-server/minecraft-patches/sources/net/minecraft/server/level/ServerPlayer.java.patch @@ -1,6 +1,6 @@ --- a/net/minecraft/server/level/ServerPlayer.java +++ b/net/minecraft/server/level/ServerPlayer.java -@@ -2259,6 +_,7 @@ +@@ -2266,6 +_,7 @@ this.connection.send(new ClientboundGameEventPacket(ClientboundGameEventPacket.CHANGE_GAME_MODE, gameMode.getId())); if (gameMode == GameType.SPECTATOR) { this.removeEntitiesOnShoulder(); diff --git a/divinemc-server/paper-patches/features/0001-Rebrand.patch b/divinemc-server/paper-patches/features/0001-Rebrand.patch index dd101fc..00a5000 100644 --- a/divinemc-server/paper-patches/features/0001-Rebrand.patch +++ b/divinemc-server/paper-patches/features/0001-Rebrand.patch @@ -113,6 +113,67 @@ index bc7e4e5560708fea89c584b1d8b471f4966f311a..6567ff18cb1c21230565c2d92caf3a7f .variable(LineReader.HISTORY_FILE, java.nio.file.Paths.get(".console_history")) .completer(new ConsoleCommandCompleter(this.server)) .option(LineReader.Option.COMPLETE_IN_WORD, true); +diff --git a/src/main/java/io/papermc/paper/PaperBootstrap.java b/src/main/java/io/papermc/paper/PaperBootstrap.java +deleted file mode 100644 +index d543b1b107ab8d3eeb1fc3c1cadf489928d2786e..0000000000000000000000000000000000000000 +--- a/src/main/java/io/papermc/paper/PaperBootstrap.java ++++ /dev/null +@@ -1,55 +0,0 @@ +-package io.papermc.paper; +- +-import java.util.List; +-import joptsimple.OptionSet; +-import net.minecraft.SharedConstants; +-import net.minecraft.server.Main; +-import org.slf4j.Logger; +-import org.slf4j.LoggerFactory; +- +-public final class PaperBootstrap { +- private static final Logger LOGGER = LoggerFactory.getLogger("bootstrap"); +- +- private PaperBootstrap() { +- } +- +- public static void boot(final OptionSet options) { +- SharedConstants.tryDetectVersion(); +- +- getStartupVersionMessages().forEach(LOGGER::info); +- +- Main.main(options); +- } +- +- private static List getStartupVersionMessages() { +- final String javaSpecVersion = System.getProperty("java.specification.version"); +- final String javaVmName = System.getProperty("java.vm.name"); +- final String javaVmVersion = System.getProperty("java.vm.version"); +- final String javaVendor = System.getProperty("java.vendor"); +- final String javaVendorVersion = System.getProperty("java.vendor.version"); +- final String osName = System.getProperty("os.name"); +- final String osVersion = System.getProperty("os.version"); +- final String osArch = System.getProperty("os.arch"); +- +- final ServerBuildInfo bi = ServerBuildInfo.buildInfo(); +- return List.of( +- String.format( +- "Running Java %s (%s %s; %s %s) on %s %s (%s)", +- javaSpecVersion, +- javaVmName, +- javaVmVersion, +- javaVendor, +- javaVendorVersion, +- osName, +- osVersion, +- osArch +- ), +- String.format( +- "Loading %s %s for Minecraft %s", +- bi.brandName(), +- bi.asString(ServerBuildInfo.StringRepresentation.VERSION_FULL), +- bi.minecraftVersionId() +- ) +- ); +- } +-} diff --git a/src/main/java/io/papermc/paper/ServerBuildInfoImpl.java b/src/main/java/io/papermc/paper/ServerBuildInfoImpl.java index b36e30fd4057a938e4d90cb42a2dca661f16478e..4e29f5f55b9a894099bef6f7c7f11e2a96b02fc8 100644 --- a/src/main/java/io/papermc/paper/ServerBuildInfoImpl.java diff --git a/divinemc-server/paper-patches/features/0007-Optimize-canSee-checks.patch b/divinemc-server/paper-patches/features/0007-Optimize-canSee-checks.patch index 161fad0..0dc2611 100644 --- a/divinemc-server/paper-patches/features/0007-Optimize-canSee-checks.patch +++ b/divinemc-server/paper-patches/features/0007-Optimize-canSee-checks.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Optimize canSee checks diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index 36fc0ec6e21af31e10f63b6bb3952008530b8f81..e744c4a13092f20a591d092fe537f790d23d1db1 100644 +index db2cd4603c26bca59654f0a5225b18c446a7f612..fcc124e1005f4ddda10b9d08226e6d64693f9009 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -@@ -214,7 +214,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player { +@@ -215,7 +215,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player { private boolean hasPlayedBefore = false; private final ConversationTracker conversationTracker = new ConversationTracker(); private final Set channels = new HashSet(); @@ -17,7 +17,7 @@ index 36fc0ec6e21af31e10f63b6bb3952008530b8f81..e744c4a13092f20a591d092fe537f790 private final Set unlistedEntities = new HashSet<>(); // Paper - Add Listing API for Player private static final WeakHashMap> pluginWeakReferences = new WeakHashMap<>(); private int hash = 0; -@@ -2270,9 +2270,15 @@ public class CraftPlayer extends CraftHumanEntity implements Player { +@@ -2272,9 +2272,15 @@ public class CraftPlayer extends CraftHumanEntity implements Player { @Override public boolean canSee(org.bukkit.entity.Entity entity) { diff --git a/divinemc-server/src/main/java/org/bxteam/divinemc/DivineBootstrap.java b/divinemc-server/src/main/java/org/bxteam/divinemc/DivineBootstrap.java index 2172506..63bb374 100644 --- a/divinemc-server/src/main/java/org/bxteam/divinemc/DivineBootstrap.java +++ b/divinemc-server/src/main/java/org/bxteam/divinemc/DivineBootstrap.java @@ -1,20 +1,23 @@ package org.bxteam.divinemc; -import io.papermc.paper.PaperBootstrap; +import io.papermc.paper.ServerBuildInfo; import joptsimple.OptionSet; +import net.minecraft.SharedConstants; import net.minecraft.server.Eula; +import net.minecraft.server.Main; import org.slf4j.Logger; import org.slf4j.LoggerFactory; + +import java.lang.management.ManagementFactory; import java.nio.file.Path; import java.nio.file.Paths; +import java.util.List; public class DivineBootstrap { - private static final Logger LOGGER = LoggerFactory.getLogger("bootstrap"); + private static final Logger LOGGER = LoggerFactory.getLogger("DivineBootstrap"); public static void boot(final OptionSet options) { - runPreBootTasks(); - - // DivineMC start - Verify Minecraft EULA earlier + SharedConstants.tryDetectVersion(); Path path2 = Paths.get("eula.txt"); Eula eula = new Eula(path2); boolean eulaAgreed = Boolean.getBoolean("com.mojang.eula.agree"); @@ -28,28 +31,44 @@ public class DivineBootstrap { return; } System.out.println("Loading libraries, please wait..."); // Restore CraftBukkit log - // DivineMC end - Verify Minecraft EULA earlier + getStartupVersionMessages().forEach(LOGGER::info); - PaperBootstrap.boot(options); + Main.main(options); } - private static void runPreBootTasks() { - if (getJavaVersion() > 21) { - System.setProperty("jdk.console", "java.base"); - } - } + private static List getStartupVersionMessages() { + final String javaSpecVersion = System.getProperty("java.specification.version"); + final String javaVmName = System.getProperty("java.vm.name"); + final String javaVmVersion = System.getProperty("java.vm.version"); + final String javaVendor = System.getProperty("java.vendor"); + final String javaVendorVersion = System.getProperty("java.vendor.version"); + final String osName = System.getProperty("os.name"); + final String osVersion = System.getProperty("os.version"); + final String osArch = System.getProperty("os.arch"); - private static int getJavaVersion() { - String version = System.getProperty("java.version"); - if (version.startsWith("1.")) { - version = version.substring(2, 3); - } else { - int dot = version.indexOf("."); - if (dot != -1) { - version = version.substring(0, dot); - } - } - version = version.split("-")[0]; - return Integer.parseInt(version); + final ServerBuildInfo bi = ServerBuildInfo.buildInfo(); + return List.of( + String.format( + "Running Java %s (%s %s; %s %s) on %s %s (%s)", + javaSpecVersion, + javaVmName, + javaVmVersion, + javaVendor, + javaVendorVersion, + osName, + osVersion, + osArch + ), + String.format( + "Loading %s %s for Minecraft %s", + bi.brandName(), + bi.asString(ServerBuildInfo.StringRepresentation.VERSION_FULL), + bi.minecraftVersionId() + ), + String.format( + "Running JVM args %s", + ManagementFactory.getRuntimeMXBean().getInputArguments().toString() + ) + ); } } diff --git a/gradle.properties b/gradle.properties index b0f8aa8..6175cfd 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,8 +1,8 @@ group = org.bxteam.divinemc +version=1.21.4-R0.1-SNAPSHOT mcVersion=1.21.4 -version=1.21.4-R0.1-SNAPSHOT -purpurRef=3a1b29a9e153da446987bbf2ab5e4878cd60f814 +purpurRef=5d1df7046101ae74283ed66dd88f800d3d25d860 experimental=false org.gradle.configuration-cache=true diff --git a/settings.gradle.kts b/settings.gradle.kts index 5b5579b..67c5e4d 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -22,11 +22,12 @@ if (!file(".git").exists()) { the DivineMC repository using Git, not download a code zip from GitHub. - Built Gale jars are available for download at - https://github.com/BX-Team/DivineMC/actions + Built DivineMC jars are available for download at + https://github.com/BX-Team/DivineMC/releases or + at https://mcjars.app/DIVINEMC/versions - See https://github.com/PaperMC/Paper/blob/main/CONTRIBUTING.md - for further information on building and modifying Paper forks. + See https://bxteam.org/docs/divinemc/development/contributing + for further information on building and modifying DivineMC. =================================================== """.trimIndent() error(errorText)