diff --git a/gradle.properties b/gradle.properties index 4237de5..b1884b1 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,7 +2,7 @@ group = space.bxteam.divinemc mcVersion = 1.21.3 version = 1.21.3-R0.1-SNAPSHOT -purpurRef = e86a1b6801b3f00280b860a9762be773698b0a5e +purpurRef = ca668ab3297e0a85723f30214744832a304b937f org.gradle.caching = true org.gradle.parallel = true diff --git a/patches/api/0001-Divine-Branding.patch b/patches/api/0001-Divine-Branding.patch index 8ba2941..913f0d9 100644 --- a/patches/api/0001-Divine-Branding.patch +++ b/patches/api/0001-Divine-Branding.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Divine Branding diff --git a/build.gradle.kts b/build.gradle.kts -index 628ec6699d34c1877c02001de95096bc7b44120e..92a2b2494cc181e76528af403cd866f82e3de736 100644 +index b0fd6c1804844f09428051952e3ac4e58f8c859c..b2d0775719ef98fa3006a8c674df60ce8aa6c077 100644 --- a/build.gradle.kts +++ b/build.gradle.kts -@@ -237,3 +237,12 @@ tasks.check { +@@ -255,3 +255,12 @@ tasks.check { dependsOn(scanJarForOldGeneratedCode) } // Paper end diff --git a/patches/api/0002-Divine-Configuration.patch b/patches/api/0002-Divine-Configuration.patch index cb186ee..e0e4adc 100644 --- a/patches/api/0002-Divine-Configuration.patch +++ b/patches/api/0002-Divine-Configuration.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Divine Configuration diff --git a/src/main/java/org/bukkit/Server.java b/src/main/java/org/bukkit/Server.java -index 84b07a7fd7941b2f75b531646b67a124a0607390..10b3a0b42f1c3fca9714b578cbb20ad727a4d5bb 100644 +index ddb1ff894910761a78b91a343f32e129f03a03c4..ca097588b84912b6d8a763b7e36885fbdf3dffec 100644 --- a/src/main/java/org/bukkit/Server.java +++ b/src/main/java/org/bukkit/Server.java -@@ -2277,6 +2277,13 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi +@@ -2295,6 +2295,13 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi } // Purpur end diff --git a/patches/api/0005-Delete-Timings.patch b/patches/api/0005-Delete-Timings.patch index f3ad9f7..0139f64 100644 --- a/patches/api/0005-Delete-Timings.patch +++ b/patches/api/0005-Delete-Timings.patch @@ -2104,23 +2104,28 @@ index 632c4961515f5052551f841cfa840e60bba7a257..00000000000000000000000000000000 - } -} diff --git a/src/main/java/org/bukkit/command/Command.java b/src/main/java/org/bukkit/command/Command.java -index 0a26fffe9b1e5080b5639767a03af11006108b4a..c55bc18316d4be79bd610128f0592b13325cf534 100644 +index 0a26fffe9b1e5080b5639767a03af11006108b4a..3b73c0e59788f5f49ca2423032550f11855d52ae 100644 --- a/src/main/java/org/bukkit/command/Command.java +++ b/src/main/java/org/bukkit/command/Command.java -@@ -37,11 +37,6 @@ public abstract class Command { - * @deprecated Timings will be removed in the future - */ - @Deprecated(forRemoval = true) +@@ -33,16 +33,6 @@ public abstract class Command { + protected String usageMessage; + private String permission; + private net.kyori.adventure.text.Component permissionMessage; // Paper +- /** +- * @deprecated Timings will be removed in the future +- */ +- @Deprecated(forRemoval = true) - public co.aikar.timings.Timing timings; // Paper - /** - * @deprecated Timings will be removed in the future - */ - @Deprecated(forRemoval = true) - @NotNull public String getTimingName() {return getName();} // Paper +- @NotNull public String getTimingName() {return getName();} // Paper protected Command(@NotNull String name) { + this(name, "", "/" + name, new ArrayList()); diff --git a/src/main/java/org/bukkit/command/FormattedCommandAlias.java b/src/main/java/org/bukkit/command/FormattedCommandAlias.java -index abe256e1e45ce28036da4aa1586715bc8a1a3414..b359306500e640f4b0761ae9aa996cf64e4fe63f 100644 +index abe256e1e45ce28036da4aa1586715bc8a1a3414..9eab8024e0675865f17669847759a26d28f74f3a 100644 --- a/src/main/java/org/bukkit/command/FormattedCommandAlias.java +++ b/src/main/java/org/bukkit/command/FormattedCommandAlias.java @@ -12,7 +12,6 @@ public class FormattedCommandAlias extends Command { @@ -2131,6 +2136,17 @@ index abe256e1e45ce28036da4aa1586715bc8a1a3414..b359306500e640f4b0761ae9aa996cf6 this.formatStrings = formatStrings; } +@@ -120,10 +119,6 @@ public class FormattedCommandAlias extends Command { + return formatString.trim(); // Paper - Causes an extra space at the end, breaks with brig commands + } + +- @NotNull +- @Override // Paper +- public String getTimingName() {return "Command Forwarder - " + super.getTimingName();} // Paper +- + private static boolean inRange(int i, int j, int k) { + return i >= j && i <= k; + } diff --git a/src/main/java/org/bukkit/command/SimpleCommandMap.java b/src/main/java/org/bukkit/command/SimpleCommandMap.java index 7740ad53796d08584bb0110f99af5639993e4d71..f0da5a8ae7e989e120f9d5ef2a417a9840aed7d0 100644 --- a/src/main/java/org/bukkit/command/SimpleCommandMap.java diff --git a/patches/api/0006-DivineMC-API-Publish.patch b/patches/api/0006-DivineMC-API-Publish.patch index dd859a4..98ea132 100644 --- a/patches/api/0006-DivineMC-API-Publish.patch +++ b/patches/api/0006-DivineMC-API-Publish.patch @@ -5,10 +5,10 @@ Subject: [PATCH] DivineMC API Publish diff --git a/build.gradle.kts b/build.gradle.kts -index 92a2b2494cc181e76528af403cd866f82e3de736..f459d04e10c7162405cea4ce39c94073dfa0b9d5 100644 +index b2d0775719ef98fa3006a8c674df60ce8aa6c077..b0b9d9d37c86fd409353c8d18551f1ced7fe4272 100644 --- a/build.gradle.kts +++ b/build.gradle.kts -@@ -246,3 +246,14 @@ tasks.withType { +@@ -264,3 +264,14 @@ tasks.withType { compilerArgs.add("-Xlint:-dep-ann") } // DivineMC end diff --git a/patches/api/0007-Bump-Dependencies.patch b/patches/api/0007-Bump-Dependencies.patch index 88503e7..772b154 100644 --- a/patches/api/0007-Bump-Dependencies.patch +++ b/patches/api/0007-Bump-Dependencies.patch @@ -5,10 +5,19 @@ Subject: [PATCH] Bump Dependencies diff --git a/build.gradle.kts b/build.gradle.kts -index f459d04e10c7162405cea4ce39c94073dfa0b9d5..b6cfcd33f79171ff34fd598babc8956f04d37410 100644 +index b0b9d9d37c86fd409353c8d18551f1ced7fe4272..ed0f69335089c459061241afc8cc93ba82212013 100644 --- a/build.gradle.kts +++ b/build.gradle.kts -@@ -12,8 +12,8 @@ java { +@@ -9,11 +9,17 @@ java { + withJavadocJar() + } + ++// DivineMC start - Bump Dependencies ++repositories { ++ mavenCentral() ++} ++// DivineMC end ++ val annotationsVersion = "24.1.0" val bungeeCordChatVersion = "1.20-R0.2" val adventureVersion = "4.17.0" @@ -19,16 +28,7 @@ index f459d04e10c7162405cea4ce39c94073dfa0b9d5..b6cfcd33f79171ff34fd598babc8956f val apiAndDocs: Configuration by configurations.creating { attributes { attribute(Category.CATEGORY_ATTRIBUTE, objects.named(Category.DOCUMENTATION)) -@@ -26,11 +26,17 @@ configurations.api { - extendsFrom(apiAndDocs) - } - -+// DivineMC start - Bump Dependencies -+repositories { -+ mavenCentral() -+} -+// DivineMC end -+ +@@ -41,8 +47,8 @@ abstract class MockitoAgentProvider : CommandLineArgumentProvider { dependencies { api("com.mojang:brigadier:1.2.9") // Paper - Brigadier command api // api dependencies are listed transitively to API consumers @@ -39,7 +39,7 @@ index f459d04e10c7162405cea4ce39c94073dfa0b9d5..b6cfcd33f79171ff34fd598babc8956f // Paper start - adventure api("net.md-5:bungeecord-chat:$bungeeCordChatVersion-deprecated+build.18") { exclude("com.google.guava", "guava") -@@ -42,7 +48,7 @@ dependencies { +@@ -54,7 +60,7 @@ dependencies { api("com.googlecode.json-simple:json-simple:1.1.1") { isTransitive = false // includes junit } @@ -48,7 +48,7 @@ index f459d04e10c7162405cea4ce39c94073dfa0b9d5..b6cfcd33f79171ff34fd598babc8956f apiAndDocs(platform("net.kyori:adventure-bom:$adventureVersion")) apiAndDocs("net.kyori:adventure-api") apiAndDocs("net.kyori:adventure-text-minimessage") -@@ -58,23 +64,23 @@ dependencies { +@@ -70,23 +76,23 @@ dependencies { implementation("org.ow2.asm:asm-commons:9.7.1") // Paper end @@ -78,7 +78,7 @@ index f459d04e10c7162405cea4ce39c94073dfa0b9d5..b6cfcd33f79171ff34fd598babc8956f testImplementation("org.hamcrest:hamcrest:2.2") testImplementation("org.mockito:mockito-core:5.14.1") testImplementation("org.ow2.asm:asm-tree:9.7.1") -@@ -162,12 +168,12 @@ tasks.withType { +@@ -175,12 +181,12 @@ tasks.withType { options.use() options.isDocFilesSubDirs = true options.links( @@ -93,7 +93,7 @@ index f459d04e10c7162405cea4ce39c94073dfa0b9d5..b6cfcd33f79171ff34fd598babc8956f "https://www.javadoc.io/doc/com.google.code.gson/gson/2.10.1", "https://jspecify.dev/docs/api/", // Paper end -@@ -180,9 +186,9 @@ tasks.withType { +@@ -193,9 +199,9 @@ tasks.withType { "https://jd.advntr.dev/text-serializer-plain/$adventureVersion/", "https://jd.advntr.dev/text-logger-slf4j/$adventureVersion/", "https://javadoc.io/doc/org.slf4j/slf4j-api/$slf4jVersion/", diff --git a/patches/server/0001-Divine-Branding.patch b/patches/server/0001-Divine-Branding.patch index 5dcbef2..a1de430 100644 --- a/patches/server/0001-Divine-Branding.patch +++ b/patches/server/0001-Divine-Branding.patch @@ -5,11 +5,11 @@ Subject: [PATCH] Divine Branding diff --git a/build.gradle.kts b/build.gradle.kts -index ccb31eb5993db028d0cbf104261205c9462f8734..fdddaf24a7d5cd650579f0dd828ff120f64b64d1 100644 +index b4579fb919d8cc981edc4863b82abca531349f1e..9155c953c1a08ff6027838b4e53b0e8fc84cd821 100644 --- a/build.gradle.kts +++ b/build.gradle.kts -@@ -13,7 +13,7 @@ configurations.named(log4jPlugins.compileClasspathConfigurationName) { - val alsoShade: Configuration by configurations.creating +@@ -25,7 +25,7 @@ abstract class MockitoAgentProvider : CommandLineArgumentProvider { + // Paper end - configure mockito agent that is needed in newer java versions dependencies { - implementation(project(":purpur-api")) // Pufferfish // Paper // Purpur @@ -17,7 +17,7 @@ index ccb31eb5993db028d0cbf104261205c9462f8734..fdddaf24a7d5cd650579f0dd828ff120 // Paper start implementation("org.jline:jline-terminal-jansi:3.21.0") implementation("net.minecrell:terminalconsoleappender:1.3.0") -@@ -89,14 +89,14 @@ tasks.jar { +@@ -102,14 +102,14 @@ tasks.jar { val gitBranch = git("rev-parse", "--abbrev-ref", "HEAD").getText().trim() // Paper attributes( "Main-Class" to "org.bukkit.craftbukkit.Main", @@ -37,7 +37,7 @@ index ccb31eb5993db028d0cbf104261205c9462f8734..fdddaf24a7d5cd650579f0dd828ff120 "Build-Number" to (build ?: ""), "Build-Time" to Instant.now().toString(), "Git-Branch" to gitBranch, // Paper -@@ -236,3 +236,12 @@ tasks.registerRunTask("runReobfPaperclip") { +@@ -254,3 +254,12 @@ tasks.registerRunTask("runReobfPaperclip") { classpath(rootProject.tasks.named("createReobfPaperclipJar").flatMap { it.outputZip }) mainClass.set(null as String?) } diff --git a/patches/server/0002-Divine-Configuration.patch b/patches/server/0002-Divine-Configuration.patch index bc603e8..b54744c 100644 --- a/patches/server/0002-Divine-Configuration.patch +++ b/patches/server/0002-Divine-Configuration.patch @@ -62,7 +62,7 @@ index c2aff2f03451b97f1ec6bd4ee987bb729177320a..9fd40654eeacf9c5a8fe136e2b58b8a8 this.generator = gen; 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 eef85316dc310afef805f29c6665107a24a6a3d1..557eaa1393ba698165893c259ed57ecd589c333c 100644 +index 51770b116695c9d60d43785ae56e249672227025..dd04b709827293d01b22e2c75022e3f49e317453 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java @@ -268,6 +268,8 @@ import net.md_5.bungee.api.chat.BaseComponent; // Spigot @@ -98,7 +98,7 @@ index eef85316dc310afef805f29c6665107a24a6a3d1..557eaa1393ba698165893c259ed57ecd this.overrideAllCommandBlockCommands = this.commandsConfiguration.getStringList("command-block-overrides").contains("*"); this.ignoreVanillaPermissions = this.commandsConfiguration.getBoolean("ignore-vanilla-permissions"); -@@ -3090,6 +3095,13 @@ public final class CraftServer implements Server { +@@ -3100,6 +3105,13 @@ public final class CraftServer implements Server { } // Purpur end @@ -113,7 +113,7 @@ index eef85316dc310afef805f29c6665107a24a6a3d1..557eaa1393ba698165893c259ed57ecd 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 b2d60b214b58d9a5fadf3629e5ebc358c904d1c6..3cceec60d1664a014472fafb47d6f41ec0082051 100644 +index 316c5e1460ccf3386c4c8623eabb7f087df8c4b9..5823144e8a987c401126a4a0750e91fa6e83ba1a 100644 --- a/src/main/java/org/bukkit/craftbukkit/Main.java +++ b/src/main/java/org/bukkit/craftbukkit/Main.java @@ -184,6 +184,14 @@ public class Main { diff --git a/patches/server/0008-Fix-MC-172801.patch b/patches/server/0008-Fix-MC-172801.patch index c9bb14d..f9371e0 100644 --- a/patches/server/0008-Fix-MC-172801.patch +++ b/patches/server/0008-Fix-MC-172801.patch @@ -6,10 +6,10 @@ Subject: [PATCH] Fix MC-172801 Original post on Mojira: https://bugs.mojang.com/browse/MC-172801 diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index 4539a6ad5334417b9c3ff239609466efd8516ef7..9c28b7b271ffde6f80d8d42f82d79c8c190527e7 100644 +index 31dff231c8ff073e65ba8bd120bb29d10b80af6c..875cc726ff769fe51422e49278df009b58225d94 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java -@@ -3289,7 +3289,13 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -3290,7 +3290,13 @@ public abstract class LivingEntity extends Entity implements Attackable { } protected float getFlyingSpeed() { diff --git a/patches/server/0009-Fix-MC-2025.patch b/patches/server/0009-Fix-MC-2025.patch index d70ac78..18d56fe 100644 --- a/patches/server/0009-Fix-MC-2025.patch +++ b/patches/server/0009-Fix-MC-2025.patch @@ -7,10 +7,10 @@ Original post on Mojira: https://bugs.mojang.com/browse/MC-2025 Fix taken from Reddit: https://redd.it/8pgd4q diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 1230b058d2ea791bebb0e05eabe4e789a93448af..10f9889cd98043479751e51fd718e80e18a0f708 100644 +index b97e814d836f2924dae44fe3536e1ae2f25c989b..b2685ef358759d575eac82858e1a9c2408d34549 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -2754,6 +2754,17 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -2755,6 +2755,17 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess nbttagcompound.putBoolean("Purpur.FireImmune", immuneToFire); } // Purpur end @@ -28,7 +28,7 @@ index 1230b058d2ea791bebb0e05eabe4e789a93448af..10f9889cd98043479751e51fd718e80e return nbttagcompound; } catch (Throwable throwable) { CrashReport crashreport = CrashReport.forThrowable(throwable, "Saving entity NBT"); -@@ -2832,6 +2843,14 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -2833,6 +2844,14 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess this.reapplyPosition(); } diff --git a/patches/server/0012-vmp-skip-entity-move-if-movement-is-zero.patch b/patches/server/0012-vmp-skip-entity-move-if-movement-is-zero.patch index f7c4212..a69409e 100644 --- a/patches/server/0012-vmp-skip-entity-move-if-movement-is-zero.patch +++ b/patches/server/0012-vmp-skip-entity-move-if-movement-is-zero.patch @@ -7,10 +7,10 @@ Original code by RelativityMC, licensed under MIT You can find the original code on https://github.com/RelativityMC/VMP-fabric (Yarn mappings) diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 10f9889cd98043479751e51fd718e80e18a0f708..92f8091a9fb7069ef0ed09322fd88b7158e6123d 100644 +index b2685ef358759d575eac82858e1a9c2408d34549..4d550730148d166806694fce65c5d10c61d9dca6 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -325,6 +325,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -326,6 +326,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess public float yRotO; public float xRotO; private AABB bb; @@ -18,7 +18,7 @@ index 10f9889cd98043479751e51fd718e80e18a0f708..92f8091a9fb7069ef0ed09322fd88b71 public boolean onGround; public boolean horizontalCollision; public boolean verticalCollision; -@@ -1221,6 +1222,12 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -1222,6 +1223,12 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess // Paper end - detailed watchdog information public void move(MoverType type, Vec3 movement) { @@ -31,7 +31,7 @@ index 10f9889cd98043479751e51fd718e80e18a0f708..92f8091a9fb7069ef0ed09322fd88b71 final Vec3 originalMovement = movement; // Paper - Expose pre-collision velocity // Paper start - detailed watchdog information ca.spottedleaf.moonrise.common.util.TickThread.ensureTickThread("Cannot move an entity off-main"); -@@ -4500,6 +4507,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -4501,6 +4508,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess } public final void setBoundingBox(AABB boundingBox) { diff --git a/patches/server/0017-lithium-entity.fast_elytra_check-entity.fast_hand_sw.patch b/patches/server/0017-lithium-entity.fast_elytra_check-entity.fast_hand_sw.patch index cf73e4d..20a04a2 100644 --- a/patches/server/0017-lithium-entity.fast_elytra_check-entity.fast_hand_sw.patch +++ b/patches/server/0017-lithium-entity.fast_elytra_check-entity.fast_hand_sw.patch @@ -7,10 +7,10 @@ Original code by CaffeineMC, licensed under LGPL v3 You can find the original code on https://github.com/CaffeineMC/lithium-fabric (Yarn mappings) diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index 9c28b7b271ffde6f80d8d42f82d79c8c190527e7..f9f553152a4af3fcc1b04c1278e0b35b85916a0c 100644 +index 875cc726ff769fe51422e49278df009b58225d94..c37e2298b9bd8fa78703ac2fce1ac89294450ea0 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java -@@ -2771,6 +2771,7 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -2772,6 +2772,7 @@ public abstract class LivingEntity extends Entity implements Attackable { } protected void updateSwingTime() { diff --git a/patches/server/0031-Block-Log4Shell-exploit.patch b/patches/server/0031-Block-Log4Shell-exploit.patch index bb9d4f5..3ed6a97 100644 --- a/patches/server/0031-Block-Log4Shell-exploit.patch +++ b/patches/server/0031-Block-Log4Shell-exploit.patch @@ -33,10 +33,10 @@ index 50bc64000f24aa2ae0df2ce7fc77f27d760b8764..9aabf8d4a333f96f1431da12cd42766a for (int i = 0; i < message.length(); ++i) { if (!StringUtil.isAllowedChatCharacter(message.charAt(i))) { diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index 48ad261eec1b74fad5a4fc1516b75fd2aaecd528..05739dc79fb6518680b861ebbd632514e30907c2 100644 +index 3ffd75c2547e1c113f65cf258ae6a9ce8d353fef..100ea754bd2168628251f2c66356e13224b2cfb5 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -@@ -768,6 +768,8 @@ public class CraftPlayer extends CraftHumanEntity implements Player { +@@ -756,6 +756,8 @@ public class CraftPlayer extends CraftHumanEntity implements Player { Preconditions.checkArgument(msg != null, "msg cannot be null"); if (this.getHandle().connection == null) return; diff --git a/patches/server/0048-Implement-Secure-Seed.patch b/patches/server/0048-Implement-Secure-Seed.patch index e17a16d..68c70ed 100644 --- a/patches/server/0048-Implement-Secure-Seed.patch +++ b/patches/server/0048-Implement-Secure-Seed.patch @@ -29,7 +29,7 @@ index 0b500b19a99fa6c2740c0db350a166462668df9c..f13185628dec90a044bf03cf38394b5b })); } diff --git a/src/main/java/net/minecraft/server/dedicated/DedicatedServerProperties.java b/src/main/java/net/minecraft/server/dedicated/DedicatedServerProperties.java -index ee70e7a2f87ca31b1c2918148d585e90601d277b..7d11d8a7baafbcc4c33db37c44975351925ca5ce 100644 +index 05e16103af3fd276f0196ddf1a2e5b729b025c34..e0118dfee89d4319f70a0d2f84ba4c21b03a9ed9 100644 --- a/src/main/java/net/minecraft/server/dedicated/DedicatedServerProperties.java +++ b/src/main/java/net/minecraft/server/dedicated/DedicatedServerProperties.java @@ -167,7 +167,17 @@ public class DedicatedServerProperties extends Settings { diff --git a/src/main/java/net/minecraft/server/level/ServerChunkCache.java b/src/main/java/net/minecraft/server/level/ServerChunkCache.java -index 3c711e1df57ac5b0f8795ebb12299d275792b1d4..2637795942327c51870e9d8dc5858c64bc97d0b8 100644 +index aaaadb7be8abf867624a1ca83371595bef4ab633..414bc5d7ba297472487d9a9aa3a20c67d54e880c 100644 --- a/src/main/java/net/minecraft/server/level/ServerChunkCache.java +++ b/src/main/java/net/minecraft/server/level/ServerChunkCache.java -@@ -644,6 +644,7 @@ public class ServerChunkCache extends ChunkSource implements ca.spottedleaf.moon +@@ -641,6 +641,7 @@ public class ServerChunkCache extends ChunkSource implements ca.spottedleaf.moon } public ChunkGenerator getGenerator() { @@ -64,7 +64,7 @@ index 3c711e1df57ac5b0f8795ebb12299d275792b1d4..2637795942327c51870e9d8dc5858c64 } diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index 072316cc08e864c40dd3225709d67cb59e89c6cd..005275d3a3e71c03b382903567445f16c62b8207 100644 +index 63ba7e35ee93b90c7b81f69e638eae410609746b..de84d398297859aee2c18546c1836d47d8c109d4 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java @@ -636,6 +636,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe @@ -453,7 +453,7 @@ index 0074bc0e7147dc3a8c538e796f14ac9bf8725896..2f9e110fc8067dff39eb0222a1fb47b9 @Override diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index 269255b94851d1a3e8bc12bd7418c2c78977e283..405103cbe0f897ae1ca1bfef03c7831186e5acae 100644 +index 7aea486e9b3c5bfb42097081bada8257834e5249..05a3c8c7f65ae7a3d287a8d749b2c0690e54e091 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java @@ -1400,7 +1400,11 @@ public final class CraftServer implements Server { diff --git a/patches/server/0050-Delete-Timings.patch b/patches/server/0050-Delete-Timings.patch new file mode 100644 index 0000000..07e76b1 --- /dev/null +++ b/patches/server/0050-Delete-Timings.patch @@ -0,0 +1,52 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: NONPLAYT <76615486+NONPLAYT@users.noreply.github.com> +Date: Mon, 18 Nov 2024 17:05:17 +0300 +Subject: [PATCH] Delete Timings + + +diff --git a/src/main/java/io/papermc/paper/plugin/manager/PaperEventManager.java b/src/main/java/io/papermc/paper/plugin/manager/PaperEventManager.java +index 0e3bed7a75f8f4611f9f44a1f78fd70cc06eaa54..fe955dda558a55f67e25cad3c8ebfadb514da224 100644 +--- a/src/main/java/io/papermc/paper/plugin/manager/PaperEventManager.java ++++ b/src/main/java/io/papermc/paper/plugin/manager/PaperEventManager.java +@@ -1,6 +1,5 @@ + package io.papermc.paper.plugin.manager; + +-import co.aikar.timings.TimedEventExecutor; + import com.destroystokyo.paper.event.server.ServerExceptionEvent; + import com.destroystokyo.paper.exception.ServerEventException; + import com.google.common.collect.Sets; +@@ -102,7 +101,6 @@ class PaperEventManager { + throw new IllegalPluginAccessException("Plugin attempted to register " + event + " while not enabled"); + } + +- executor = new TimedEventExecutor(executor, plugin, null, event); + this.getEventListeners(event).register(new RegisteredListener(listener, executor, priority, plugin, ignoreCancelled)); + } + +diff --git a/src/main/java/io/papermc/paper/plugin/manager/PaperPluginManagerImpl.java b/src/main/java/io/papermc/paper/plugin/manager/PaperPluginManagerImpl.java +index 097500a59336db1bbfffcd1aa4cff7a8586e46ec..35b00c139864dd7925d46a2d6a317d7e3aae9638 100644 +--- a/src/main/java/io/papermc/paper/plugin/manager/PaperPluginManagerImpl.java ++++ b/src/main/java/io/papermc/paper/plugin/manager/PaperPluginManagerImpl.java +@@ -232,7 +232,7 @@ public class PaperPluginManagerImpl implements PluginManager, DependencyContext + + @Override + public boolean useTimings() { +- return co.aikar.timings.Timings.isTimingsEnabled(); ++ return false; + } + + @Override +diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java +index 0a5cbfee55020e16af86044dbcd173cd3cd96f34..70f41e0d703296fa4bacf31feb0d478daa642d78 100644 +--- a/src/main/java/net/minecraft/server/MinecraftServer.java ++++ b/src/main/java/net/minecraft/server/MinecraftServer.java +@@ -3,9 +3,6 @@ package net.minecraft.server; + import com.google.common.base.Preconditions; + import com.google.common.base.Splitter; + import com.google.common.collect.ImmutableList; +-import co.aikar.timings.Timings; +-import com.destroystokyo.paper.event.server.PaperServerListPingEvent; +-import com.google.common.base.Stopwatch; + import com.google.common.collect.Lists; + import com.google.common.collect.Maps; + import com.google.common.collect.Sets; diff --git a/patches/unapplied/server/0028-Delete-Timings.patch b/patches/unapplied/server/0028-Delete-Timings.patch deleted file mode 100644 index 59204fe..0000000 --- a/patches/unapplied/server/0028-Delete-Timings.patch +++ /dev/null @@ -1,1249 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: NONPLAYT <76615486+NONPLAYT@users.noreply.github.com> -Date: Sun, 12 May 2024 20:58:42 +0300 -Subject: [PATCH] Delete Timings - - -diff --git a/src/main/java/co/aikar/timings/MinecraftTimings.java b/src/main/java/co/aikar/timings/MinecraftTimings.java -deleted file mode 100644 -index 6b3cde6d4d1e63bec01f502f2027ee9fddac08aa..0000000000000000000000000000000000000000 ---- a/src/main/java/co/aikar/timings/MinecraftTimings.java -+++ /dev/null -@@ -1,178 +0,0 @@ --package co.aikar.timings; -- --import com.google.common.collect.MapMaker; --import io.papermc.paper.configuration.GlobalConfiguration; --import net.minecraft.commands.functions.CommandFunction; --import net.minecraft.network.protocol.Packet; --import net.minecraft.world.level.block.Block; --import net.minecraft.world.level.block.entity.BlockEntity; --import org.bukkit.plugin.Plugin; --import org.bukkit.scheduler.BukkitTask; -- --import org.bukkit.craftbukkit.scheduler.CraftTask; -- --import java.util.Map; -- --// TODO: Re-implement missing timers --@Deprecated(forRemoval = true) --public final class MinecraftTimings { -- -- public static final Timing serverOversleep = Timings.ofSafe("Server Oversleep"); -- public static final Timing playerListTimer = Timings.ofSafe("Player List"); -- public static final Timing commandFunctionsTimer = Timings.ofSafe("Command Functions"); -- public static final Timing connectionTimer = Timings.ofSafe("Connection Handler"); -- public static final Timing tickablesTimer = Timings.ofSafe("Tickables"); -- public static final Timing minecraftSchedulerTimer = Timings.ofSafe("Minecraft Scheduler"); -- public static final Timing bukkitSchedulerTimer = Timings.ofSafe("Bukkit Scheduler"); -- public static final Timing bukkitSchedulerPendingTimer = Timings.ofSafe("Bukkit Scheduler - Pending"); -- public static final Timing bukkitSchedulerFinishTimer = Timings.ofSafe("Bukkit Scheduler - Finishing"); -- public static final Timing chunkIOTickTimer = Timings.ofSafe("ChunkIOTick"); -- public static final Timing timeUpdateTimer = Timings.ofSafe("Time Update"); -- public static final Timing serverCommandTimer = Timings.ofSafe("Server Command"); -- public static final Timing savePlayers = Timings.ofSafe("Save Players"); -- -- public static final Timing tickEntityTimer = Timings.ofSafe("## tickEntity"); -- public static final Timing tickTileEntityTimer = Timings.ofSafe("## tickTileEntity"); -- public static final Timing packetProcessTimer = Timings.ofSafe("## Packet Processing"); -- public static final Timing scheduledBlocksTimer = Timings.ofSafe("## Scheduled Blocks"); -- public static final Timing structureGenerationTimer = Timings.ofSafe("Structure Generation"); -- -- public static final Timing processQueueTimer = Timings.ofSafe("processQueue"); -- public static final Timing processTasksTimer = Timings.ofSafe("processTasks"); -- -- public static final Timing playerCommandTimer = Timings.ofSafe("playerCommand"); -- -- public static final Timing entityActivationCheckTimer = Timings.ofSafe("entityActivationCheck"); -- -- public static final Timing antiXrayUpdateTimer = Timings.ofSafe("anti-xray - update"); -- public static final Timing antiXrayObfuscateTimer = Timings.ofSafe("anti-xray - obfuscate"); -- public static final Timing scoreboardScoreSearch = Timings.ofSafe("Scoreboard score search"); // Paper - add timings for scoreboard search -- -- private static final Map, String> taskNameCache = new MapMaker().weakKeys().makeMap(); -- -- private MinecraftTimings() {} -- -- public static Timing getInternalTaskName(String taskName) { -- return Timings.ofSafe(taskName); -- } -- -- /** -- * Gets a timer associated with a plugins tasks. -- * @param bukkitTask -- * @param period -- * @return -- */ -- public static Timing getPluginTaskTimings(BukkitTask bukkitTask, long period) { -- if (!bukkitTask.isSync()) { -- return NullTimingHandler.NULL; -- } -- Plugin plugin; -- -- CraftTask craftTask = (CraftTask) bukkitTask; -- -- final Class taskClass = craftTask.getTaskClass(); -- if (bukkitTask.getOwner() != null) { -- plugin = bukkitTask.getOwner(); -- } else { -- plugin = TimingsManager.getPluginByClassloader(taskClass); -- } -- -- final String taskname = taskNameCache.computeIfAbsent(taskClass, clazz -> { -- try { -- String clsName = !clazz.isMemberClass() -- ? clazz.getName() -- : clazz.getCanonicalName(); -- if (clsName != null && clsName.contains("$Lambda$")) { -- clsName = clsName.replaceAll("(Lambda\\$.*?)/.*", "$1"); -- } -- return clsName != null ? clsName : "UnknownTask"; -- } catch (Throwable ex) { -- new Exception("Error occurred detecting class name", ex).printStackTrace(); -- return "MangledClassFile"; -- } -- }); -- -- StringBuilder name = new StringBuilder(64); -- name.append("Task: ").append(taskname); -- if (period > 0) { -- name.append(" (interval:").append(period).append(")"); -- } else { -- name.append(" (Single)"); -- } -- -- if (plugin == null) { -- return Timings.ofSafe(null, name.toString()); -- } -- -- return Timings.ofSafe(plugin, name.toString()); -- } -- -- /** -- * Get a named timer for the specified entity type to track type specific timings. -- * @param entityType -- * @return -- */ -- public static Timing getEntityTimings(String entityType, String type) { -- return Timings.ofSafe("Minecraft", "## tickEntity - " + entityType + " - " + type, tickEntityTimer); -- } -- -- public static Timing getBehaviorTimings(String type) { -- return Timings.ofSafe("## Behavior - " + type); -- } -- -- public static Timing getSensorTimings(String type, int rate) { -- return Timings.ofSafe("## Sensor - " + type + " (Default rate: " + rate + ")"); -- } -- -- /** -- * Get a named timer for the specified tile entity type to track type specific timings. -- * @param entity -- * @return -- */ -- public static Timing getTileEntityTimings(BlockEntity entity) { -- String entityType = entity.getClass().getName(); -- return Timings.ofSafe("Minecraft", "## tickTileEntity - " + entityType, tickTileEntityTimer); -- } -- public static Timing getCancelTasksTimer() { -- return Timings.ofSafe("Cancel Tasks"); -- } -- public static Timing getCancelTasksTimer(Plugin plugin) { -- return Timings.ofSafe(plugin, "Cancel Tasks"); -- } -- -- public static void stopServer() { -- TimingsManager.stopServer(); -- } -- -- public static Timing getBlockTiming(Block block) { -- return Timings.ofSafe("## Scheduled Block: " + block.toString(), scheduledBlocksTimer); -- } --/* -- public static Timing getStructureTiming(StructureGenerator structureGenerator) { -- return Timings.ofSafe("Structure Generator - " + structureGenerator.getName(), structureGenerationTimer); -- }*/ -- -- public static Timing getPacketTiming(Packet packet) { -- return Timings.ofSafe("## Packet - " + packet.getClass().getName(), packetProcessTimer); -- } -- -- public static Timing getCommandFunctionTiming(CommandFunction function) { -- return Timings.ofSafe("Command Function - " + function.id()); -- } -- -- public static void processConfig(GlobalConfiguration.Timings config) { -- TimingsManager.url = config.url; -- if (!TimingsManager.url.endsWith("/")) { -- TimingsManager.url += "/"; -- } -- TimingsManager.privacy = config.serverNamePrivacy; -- if (!config.hiddenConfigEntries.contains("proxies.velocity.secret")) { -- config.hiddenConfigEntries.add("proxies.velocity.secret"); -- } -- TimingsManager.hiddenConfigs.addAll(config.hiddenConfigEntries); -- co.aikar.timings.Timings.setVerboseTimingsEnabled(config.verbose); -- co.aikar.timings.Timings.setTimingsEnabled(config.enabled); -- co.aikar.timings.Timings.setHistoryInterval(config.historyInterval * 20); -- co.aikar.timings.Timings.setHistoryLength(config.historyLength * 20); -- } --} -diff --git a/src/main/java/co/aikar/timings/TimingsExport.java b/src/main/java/co/aikar/timings/TimingsExport.java -deleted file mode 100644 -index b35a9f4c5f8960864c402ede8a51fb5ab9c4fcc0..0000000000000000000000000000000000000000 ---- a/src/main/java/co/aikar/timings/TimingsExport.java -+++ /dev/null -@@ -1,389 +0,0 @@ --/* -- * This file is licensed under the MIT License (MIT). -- * -- * Copyright (c) 2014 Daniel Ennis -- * -- * 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. -- */ --package co.aikar.timings; -- --import com.google.common.collect.Sets; --import io.papermc.paper.adventure.PaperAdventure; --import net.kyori.adventure.text.event.ClickEvent; --import net.kyori.adventure.text.format.NamedTextColor; --import net.kyori.adventure.text.serializer.plain.PlainTextComponentSerializer; --import net.minecraft.server.MinecraftServer; --import org.apache.commons.lang.StringUtils; --import org.bukkit.Bukkit; --import org.bukkit.Material; --import org.bukkit.configuration.ConfigurationSection; --import org.bukkit.configuration.MemorySection; --import org.bukkit.entity.EntityType; --import org.json.simple.JSONObject; --import org.json.simple.JSONValue; --import oshi.SystemInfo; --import oshi.hardware.HardwareAbstractionLayer; -- --import java.io.ByteArrayOutputStream; --import java.io.IOException; --import java.io.InputStream; --import java.io.OutputStream; --import java.lang.management.ManagementFactory; --import java.lang.management.OperatingSystemMXBean; --import java.lang.management.RuntimeMXBean; --import java.net.HttpURLConnection; --import java.net.InetAddress; --import java.net.URL; --import java.util.List; --import java.util.Map; --import java.util.Set; --import java.util.logging.Level; --import java.util.zip.GZIPOutputStream; -- --import static co.aikar.timings.TimingsManager.HISTORY; --import static co.aikar.util.JSONUtil.appendObjectData; --import static co.aikar.util.JSONUtil.createObject; --import static co.aikar.util.JSONUtil.pair; --import static co.aikar.util.JSONUtil.toArray; --import static co.aikar.util.JSONUtil.toArrayMapper; --import static co.aikar.util.JSONUtil.toObjectMapper; --import static net.kyori.adventure.text.Component.text; -- --@SuppressWarnings({"rawtypes", "SuppressionAnnotation"}) --@Deprecated(forRemoval = true) --public class TimingsExport extends Thread { -- -- private final TimingsReportListener listeners; -- private final Map out; -- private final TimingHistory[] history; -- private static long lastReport = 0; -- -- private TimingsExport(TimingsReportListener listeners, Map out, TimingHistory[] history) { -- super("Timings paste thread"); -- this.listeners = listeners; -- this.out = out; -- this.history = history; -- } -- -- /** -- * Checks if any pending reports are being requested, and builds one if needed. -- */ -- public static void reportTimings() { -- if (Timings.requestingReport.isEmpty()) { -- return; -- } -- TimingsReportListener listeners = new TimingsReportListener(Timings.requestingReport); -- listeners.addConsoleIfNeeded(); -- -- Timings.requestingReport.clear(); -- long now = System.currentTimeMillis(); -- final long lastReportDiff = now - lastReport; -- if (lastReportDiff < 60000) { -- listeners.sendMessage(text("Please wait at least 1 minute in between Timings reports. (" + (int)((60000 - lastReportDiff) / 1000) + " seconds)", NamedTextColor.RED)); -- listeners.done(); -- return; -- } -- final long lastStartDiff = now - TimingsManager.timingStart; -- if (lastStartDiff < 180000) { -- listeners.sendMessage(text("Please wait at least 3 minutes before generating a Timings report. Unlike Timings v1, v2 benefits from longer timings and is not as useful with short timings. (" + (int)((180000 - lastStartDiff) / 1000) + " seconds)", NamedTextColor.RED)); -- listeners.done(); -- return; -- } -- listeners.sendMessage(text("Preparing Timings Report...", NamedTextColor.GREEN)); -- lastReport = now; -- Map parent = createObject( -- // Get some basic system details about the server -- pair("version", Bukkit.getVersion()), -- pair("maxplayers", Bukkit.getMaxPlayers()), -- pair("start", TimingsManager.timingStart / 1000), -- pair("end", System.currentTimeMillis() / 1000), -- pair("online-mode", Bukkit.getServer().getOnlineMode()), -- pair("sampletime", (System.currentTimeMillis() - TimingsManager.timingStart) / 1000), -- pair("datapacks", toArrayMapper(MinecraftServer.getServer().getPackRepository().getSelectedPacks(), pack -> { -- return PlainTextComponentSerializer.plainText().serialize(PaperAdventure.asAdventure(pack.getChatLink(true))); -- })) -- ); -- if (!TimingsManager.privacy) { -- appendObjectData(parent, -- pair("server", Bukkit.getUnsafe().getTimingsServerName()), -- pair("motd", Bukkit.getServer().getMotd()), -- pair("icon", Bukkit.getServer().getServerIcon().getData()) -- ); -- } -- -- final Runtime runtime = Runtime.getRuntime(); -- RuntimeMXBean runtimeBean = ManagementFactory.getRuntimeMXBean(); -- -- OperatingSystemMXBean osInfo = ManagementFactory.getOperatingSystemMXBean(); -- -- HardwareAbstractionLayer hardwareInfo = new SystemInfo().getHardware(); -- -- parent.put("system", createObject( -- pair("timingcost", getCost()), -- pair("loadavg", osInfo.getSystemLoadAverage()), -- pair("name", System.getProperty("os.name")), -- pair("version", System.getProperty("os.version")), -- pair("jvmversion", System.getProperty("java.version")), -- pair("jvmvendor", System.getProperty("java.vendor")), -- pair("jvmvendorversion", System.getProperty("java.vendor.version")), -- pair("arch", System.getProperty("os.arch")), -- pair("maxmem", runtime.maxMemory()), -- pair("memory", createObject( -- pair("heap", ManagementFactory.getMemoryMXBean().getHeapMemoryUsage().toString()), -- pair("nonheap", ManagementFactory.getMemoryMXBean().getNonHeapMemoryUsage().toString()), -- pair("finalizing", ManagementFactory.getMemoryMXBean().getObjectPendingFinalizationCount()) -- )), -- pair("cpu", runtime.availableProcessors()), -- pair("cpuname", hardwareInfo.getProcessor().getProcessorIdentifier().getName().trim()), -- pair("runtime", runtimeBean.getUptime()), -- pair("flags", StringUtils.join(runtimeBean.getInputArguments(), " ")), -- pair("gc", toObjectMapper(ManagementFactory.getGarbageCollectorMXBeans(), input -> pair(input.getName(), toArray(input.getCollectionCount(), input.getCollectionTime())))) -- ) -- ); -- -- parent.put("worlds", toObjectMapper(MinecraftServer.getServer().getAllLevels(), world -> { -- if (world.getWorld().getName().equals("worldeditregentempworld")) return null; -- return pair(world.getWorld().getName(), createObject( -- pair("gamerules", toObjectMapper(world.getWorld().getGameRules(), rule -> { -- return pair(rule, world.getWorld().getGameRuleValue(rule)); -- })), -- pair("ticking-distance", world.getWorld().getSimulationDistance()), -- pair("no-ticking-distance", world.getWorld().getViewDistance()), -- pair("sending-distance", world.getWorld().getSendViewDistance()) -- )); -- })); -- -- Set tileEntityTypeSet = Sets.newHashSet(); -- Set entityTypeSet = Sets.newHashSet(); -- -- int size = HISTORY.size(); -- TimingHistory[] history = new TimingHistory[size + 1]; -- int i = 0; -- for (TimingHistory timingHistory : HISTORY) { -- tileEntityTypeSet.addAll(timingHistory.tileEntityTypeSet); -- entityTypeSet.addAll(timingHistory.entityTypeSet); -- history[i++] = timingHistory; -- } -- -- history[i] = new TimingHistory(); // Current snapshot -- tileEntityTypeSet.addAll(history[i].tileEntityTypeSet); -- entityTypeSet.addAll(history[i].entityTypeSet); -- -- -- Map handlers = createObject(); -- Map groupData; -- synchronized (TimingIdentifier.GROUP_MAP) { -- for (TimingIdentifier.TimingGroup group : TimingIdentifier.GROUP_MAP.values()) { -- synchronized (group.handlers) { -- for (TimingHandler id : group.handlers) { -- -- if (!id.isTimed() && !id.isSpecial()) { -- continue; -- } -- -- String name = id.identifier.name; -- if (name.startsWith("##")) { -- name = name.substring(3); -- } -- handlers.put(id.id, toArray( -- group.id, -- name -- )); -- } -- } -- } -- -- groupData = toObjectMapper( -- TimingIdentifier.GROUP_MAP.values(), group -> pair(group.id, group.name)); -- } -- -- parent.put("idmap", createObject( -- pair("groups", groupData), -- pair("handlers", handlers), -- pair("worlds", toObjectMapper(TimingHistory.worldMap.entrySet(), input -> pair(input.getValue(), input.getKey()))), -- pair("tileentity", -- toObjectMapper(tileEntityTypeSet, input -> pair(input.ordinal(), input.name()))), -- pair("entity", -- toObjectMapper(entityTypeSet, input -> pair(input.ordinal(), input.name()))) -- )); -- -- // Information about loaded plugins -- -- parent.put("plugins", toObjectMapper(Bukkit.getPluginManager().getPlugins(), -- plugin -> pair(plugin.getName(), createObject( -- pair("version", plugin.getDescription().getVersion()), -- pair("description", String.valueOf(plugin.getDescription().getDescription()).trim()), -- pair("website", plugin.getDescription().getWebsite()), -- pair("authors", StringUtils.join(plugin.getDescription().getAuthors(), ", ")) -- )))); -- -- -- -- // Information on the users Config -- -- parent.put("config", createObject( -- pair("spigot", mapAsJSON(Bukkit.spigot().getSpigotConfig(), null)), -- pair("bukkit", mapAsJSON(Bukkit.spigot().getBukkitConfig(), null)), -- pair("paper", mapAsJSON(Bukkit.spigot().getPaperConfig(), null)), // Pufferfish -- pair("pufferfish", mapAsJSON(gg.pufferfish.pufferfish.PufferfishConfig.getConfigCopy(), null)) // Pufferfish -- )); -- -- new TimingsExport(listeners, parent, history).start(); -- } -- -- static long getCost() { -- // Benchmark the users System.nanotime() for cost basis -- int passes = 100; -- TimingHandler SAMPLER1 = Timings.ofSafe("Timings Sampler 1"); -- TimingHandler SAMPLER2 = Timings.ofSafe("Timings Sampler 2"); -- TimingHandler SAMPLER3 = Timings.ofSafe("Timings Sampler 3"); -- TimingHandler SAMPLER4 = Timings.ofSafe("Timings Sampler 4"); -- TimingHandler SAMPLER5 = Timings.ofSafe("Timings Sampler 5"); -- TimingHandler SAMPLER6 = Timings.ofSafe("Timings Sampler 6"); -- -- long start = System.nanoTime(); -- for (int i = 0; i < passes; i++) { -- SAMPLER1.startTiming(); -- SAMPLER2.startTiming(); -- SAMPLER3.startTiming(); -- SAMPLER3.stopTiming(); -- SAMPLER4.startTiming(); -- SAMPLER5.startTiming(); -- SAMPLER6.startTiming(); -- SAMPLER6.stopTiming(); -- SAMPLER5.stopTiming(); -- SAMPLER4.stopTiming(); -- SAMPLER2.stopTiming(); -- SAMPLER1.stopTiming(); -- } -- long timingsCost = (System.nanoTime() - start) / passes / 6; -- SAMPLER1.reset(true); -- SAMPLER2.reset(true); -- SAMPLER3.reset(true); -- SAMPLER4.reset(true); -- SAMPLER5.reset(true); -- SAMPLER6.reset(true); -- return timingsCost; -- } -- -- private static JSONObject mapAsJSON(ConfigurationSection config, String parentKey) { -- -- JSONObject object = new JSONObject(); -- for (String key : config.getKeys(false)) { -- String fullKey = (parentKey != null ? parentKey + "." + key : key); -- if (fullKey.equals("database") || fullKey.equals("settings.bungeecord-addresses") || TimingsManager.hiddenConfigs.contains(fullKey) || key.startsWith("seed-") || key.equals("worldeditregentempworld") || key.equals("feature-seeds")) { -- continue; -- } -- final Object val = config.get(key); -- -- object.put(key, valAsJSON(val, fullKey)); -- } -- return object; -- } -- -- private static Object valAsJSON(Object val, final String parentKey) { -- if (!(val instanceof MemorySection)) { -- if (val instanceof List) { -- Iterable v = (Iterable) val; -- return toArrayMapper(v, input -> valAsJSON(input, parentKey)); -- } else { -- return String.valueOf(val); -- } -- } else { -- return mapAsJSON((ConfigurationSection) val, parentKey); -- } -- } -- -- @Override -- public void run() { -- out.put("data", toArrayMapper(history, TimingHistory::export)); -- -- -- String response = null; -- String timingsURL = null; -- try { -- HttpURLConnection con = (HttpURLConnection) new URL(TimingsManager.url + "post").openConnection(); -- con.setDoOutput(true); -- String hostName = "BrokenHost"; -- try { -- hostName = InetAddress.getLocalHost().getHostName(); -- } catch (Exception ignored) {} -- con.setRequestProperty("User-Agent", "Paper/" + Bukkit.getUnsafe().getTimingsServerName() + "/" + hostName); -- con.setRequestMethod("POST"); -- con.setInstanceFollowRedirects(false); -- -- OutputStream request = new GZIPOutputStream(con.getOutputStream()) {{ -- this.def.setLevel(7); -- }}; -- -- request.write(JSONValue.toJSONString(out).getBytes("UTF-8")); -- request.close(); -- -- response = getResponse(con); -- -- if (con.getResponseCode() != 302) { -- listeners.sendMessage(text( "Upload Error: " + con.getResponseCode() + ": " + con.getResponseMessage(), NamedTextColor.RED)); -- listeners.sendMessage(text("Check your logs for more information", NamedTextColor.RED)); -- if (response != null) { -- Bukkit.getLogger().log(Level.SEVERE, response); -- } -- return; -- } -- -- timingsURL = con.getHeaderField("Location"); -- listeners.sendMessage(text("View Timings Report: ", NamedTextColor.GREEN).append(text(timingsURL).clickEvent(ClickEvent.clickEvent(ClickEvent.Action.OPEN_URL, timingsURL)))); -- -- if (response != null && !response.isEmpty()) { -- Bukkit.getLogger().log(Level.INFO, "Timing Response: " + response); -- } -- } catch (IOException ex) { -- listeners.sendMessage(text("Error uploading timings, check your logs for more information", NamedTextColor.RED)); -- if (response != null) { -- Bukkit.getLogger().log(Level.SEVERE, response); -- } -- Bukkit.getLogger().log(Level.SEVERE, "Could not paste timings", ex); -- } finally { -- this.listeners.done(timingsURL); -- } -- } -- -- private String getResponse(HttpURLConnection con) throws IOException { -- InputStream is = null; -- try { -- is = con.getInputStream(); -- ByteArrayOutputStream bos = new ByteArrayOutputStream(); -- -- byte[] b = new byte[1024]; -- int bytesRead; -- while ((bytesRead = is.read(b)) != -1) { -- bos.write(b, 0, bytesRead); -- } -- return bos.toString(); -- -- } catch (IOException ex) { -- listeners.sendMessage(text("Error uploading timings, check your logs for more information", NamedTextColor.RED)); -- Bukkit.getLogger().log(Level.WARNING, con.getResponseMessage(), ex); -- return null; -- } finally { -- if (is != null) { -- is.close(); -- } -- } -- } --} -diff --git a/src/main/java/co/aikar/timings/WorldTimingsHandler.java b/src/main/java/co/aikar/timings/WorldTimingsHandler.java -deleted file mode 100644 -index 2f0d9b953802dee821cfde82d22b0567cce8ee91..0000000000000000000000000000000000000000 ---- a/src/main/java/co/aikar/timings/WorldTimingsHandler.java -+++ /dev/null -@@ -1,120 +0,0 @@ --package co.aikar.timings; -- --import net.minecraft.server.level.ServerLevel; --import net.minecraft.world.level.Level; --import net.minecraft.world.level.storage.PrimaryLevelData; -- --/** -- * Set of timers per world, to track world specific timings. -- */ --// TODO: Re-implement missing timers --@Deprecated(forRemoval = true) --public class WorldTimingsHandler { -- public final Timing mobSpawn; -- public final Timing doChunkUnload; -- public final Timing doPortalForcer; -- public final Timing scheduledBlocks; -- public final Timing scheduledBlocksCleanup; -- public final Timing scheduledBlocksTicking; -- public final Timing chunkTicks; -- public final Timing lightChunk; -- public final Timing chunkTicksBlocks; -- public final Timing doVillages; -- public final Timing doChunkMap; -- public final Timing doChunkMapUpdate; -- public final Timing doChunkMapToUpdate; -- public final Timing doChunkMapSortMissing; -- public final Timing doChunkMapSortSendToPlayers; -- public final Timing doChunkMapPlayersNeedingChunks; -- public final Timing doChunkMapPendingSendToPlayers; -- public final Timing doChunkMapUnloadChunks; -- public final Timing doChunkGC; -- public final Timing doSounds; -- public final Timing entityRemoval; -- public final Timing entityTick; -- public final Timing tileEntityTick; -- public final Timing tileEntityPending; -- public final Timing tracker1; -- public final Timing tracker2; -- public final Timing doTick; -- public final Timing tickEntities; -- public final Timing chunks; -- public final Timing newEntities; -- public final Timing raids; -- public final Timing chunkProviderTick; -- public final Timing broadcastChunkUpdates; -- public final Timing countNaturalMobs; -- -- public final Timing chunkLoad; -- public final Timing chunkLoadPopulate; -- public final Timing syncChunkLoad; -- public final Timing chunkLoadLevelTimer; -- public final Timing chunkIO; -- public final Timing chunkPostLoad; -- public final Timing worldSave; -- public final Timing worldSaveChunks; -- public final Timing worldSaveLevel; -- public final Timing chunkSaveData; -- -- -- public final Timing miscMobSpawning; -- -- public WorldTimingsHandler(Level server) { -- String name = ((PrimaryLevelData) server.getLevelData()).getLevelName() + " - "; -- -- mobSpawn = Timings.ofSafe(name + "mobSpawn"); -- doChunkUnload = Timings.ofSafe(name + "doChunkUnload"); -- scheduledBlocks = Timings.ofSafe(name + "Scheduled Blocks"); -- scheduledBlocksCleanup = Timings.ofSafe(name + "Scheduled Blocks - Cleanup"); -- scheduledBlocksTicking = Timings.ofSafe(name + "Scheduled Blocks - Ticking"); -- chunkTicks = Timings.ofSafe(name + "Chunk Ticks"); -- lightChunk = Timings.ofSafe(name + "Light Chunk"); -- chunkTicksBlocks = Timings.ofSafe(name + "Chunk Ticks - Blocks"); -- doVillages = Timings.ofSafe(name + "doVillages"); -- doChunkMap = Timings.ofSafe(name + "doChunkMap"); -- doChunkMapUpdate = Timings.ofSafe(name + "doChunkMap - Update"); -- doChunkMapToUpdate = Timings.ofSafe(name + "doChunkMap - To Update"); -- doChunkMapSortMissing = Timings.ofSafe(name + "doChunkMap - Sort Missing"); -- doChunkMapSortSendToPlayers = Timings.ofSafe(name + "doChunkMap - Sort Send To Players"); -- doChunkMapPlayersNeedingChunks = Timings.ofSafe(name + "doChunkMap - Players Needing Chunks"); -- doChunkMapPendingSendToPlayers = Timings.ofSafe(name + "doChunkMap - Pending Send To Players"); -- doChunkMapUnloadChunks = Timings.ofSafe(name + "doChunkMap - Unload Chunks"); -- doSounds = Timings.ofSafe(name + "doSounds"); -- doChunkGC = Timings.ofSafe(name + "doChunkGC"); -- doPortalForcer = Timings.ofSafe(name + "doPortalForcer"); -- entityTick = Timings.ofSafe(name + "entityTick"); -- entityRemoval = Timings.ofSafe(name + "entityRemoval"); -- tileEntityTick = Timings.ofSafe(name + "tileEntityTick"); -- tileEntityPending = Timings.ofSafe(name + "tileEntityPending"); -- -- chunkLoad = Timings.ofSafe(name + "Chunk Load"); -- chunkLoadPopulate = Timings.ofSafe(name + "Chunk Load - Populate"); -- syncChunkLoad = Timings.ofSafe(name + "Sync Chunk Load"); -- chunkLoadLevelTimer = Timings.ofSafe(name + "Chunk Load - Load Level"); -- chunkIO = Timings.ofSafe(name + "Chunk Load - DiskIO"); -- chunkPostLoad = Timings.ofSafe(name + "Chunk Load - Post Load"); -- worldSave = Timings.ofSafe(name + "World Save"); -- worldSaveLevel = Timings.ofSafe(name + "World Save - Level"); -- worldSaveChunks = Timings.ofSafe(name + "World Save - Chunks"); -- chunkSaveData = Timings.ofSafe(name + "Chunk Save - Data"); -- -- tracker1 = Timings.ofSafe(name + "tracker stage 1"); -- tracker2 = Timings.ofSafe(name + "tracker stage 2"); -- doTick = Timings.ofSafe(name + "doTick"); -- tickEntities = Timings.ofSafe(name + "tickEntities"); -- -- chunks = Timings.ofSafe(name + "Chunks"); -- newEntities = Timings.ofSafe(name + "New entity registration"); -- raids = Timings.ofSafe(name + "Raids"); -- chunkProviderTick = Timings.ofSafe(name + "Chunk provider tick"); -- broadcastChunkUpdates = Timings.ofSafe(name + "Broadcast chunk updates"); -- countNaturalMobs = Timings.ofSafe(name + "Count natural mobs"); -- -- -- miscMobSpawning = Timings.ofSafe(name + "Mob spawning - Misc"); -- } -- -- public static Timing getTickList(ServerLevel worldserver, String timingsType) { -- return Timings.ofSafe(((PrimaryLevelData) worldserver.getLevelData()).getLevelName() + " - Scheduled " + timingsType); -- } --} -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 24121a43aeb5e9bce013f30c92dddd15f99736c6..791cb04a13597eee4dbd28fabe2835ab41eb13f9 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 -@@ -1,6 +1,5 @@ - package io.papermc.paper.command.brigadier.bukkit; - --import co.aikar.timings.Timing; - import com.mojang.brigadier.arguments.StringArgumentType; - import com.mojang.brigadier.builder.RequiredArgumentBuilder; - import com.mojang.brigadier.context.CommandContext; -@@ -79,9 +78,6 @@ public class BukkitCommandNode extends LiteralCommandNode { - CommandSender sender = context.getSource().getSender(); - - // Plugins do weird things to workaround normal registration -- if (this.command.timings == null) { -- //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 -diff --git a/src/main/java/io/papermc/paper/configuration/GlobalConfiguration.java b/src/main/java/io/papermc/paper/configuration/GlobalConfiguration.java -index 06b75003e88363aa3902cfef97b3bd3efc43fec9..3bbd408290e1058d6dfcdc797eb4e3a5e93b747a 100644 ---- a/src/main/java/io/papermc/paper/configuration/GlobalConfiguration.java -+++ b/src/main/java/io/papermc/paper/configuration/GlobalConfiguration.java -@@ -1,6 +1,5 @@ - package io.papermc.paper.configuration; - --import co.aikar.timings.MinecraftTimings; - import com.mojang.logging.LogUtils; - import io.papermc.paper.configuration.constraint.Constraints; - import io.papermc.paper.configuration.type.number.DoubleOr; -@@ -100,29 +99,6 @@ public class GlobalConfiguration extends ConfigurationPart { - public boolean enableImmediately = false; - } - -- @Deprecated(forRemoval = true) -- public Timings timings; -- -- @Deprecated(forRemoval = true) -- public class Timings extends ConfigurationPart { -- public boolean enabled = false; -- public boolean verbose = true; -- public String url = "https://timings.aikar.co/"; -- public boolean serverNamePrivacy = false; -- public List hiddenConfigEntries = List.of( -- "database", -- "proxies.velocity.secret" -- ); -- public int historyInterval = 300; -- public int historyLength = 3600; -- public String serverName = "Unknown Server"; -- -- @PostProcess -- private void postProcess() { -- MinecraftTimings.processConfig(this); -- } -- } -- - public Proxies proxies; - - public class Proxies extends ConfigurationPart { -diff --git a/src/main/java/io/papermc/paper/plugin/manager/PaperEventManager.java b/src/main/java/io/papermc/paper/plugin/manager/PaperEventManager.java -index 0e3bed7a75f8f4611f9f44a1f78fd70cc06eaa54..126ed4bd24d993b598c112c2dbfcb9d662038925 100644 ---- a/src/main/java/io/papermc/paper/plugin/manager/PaperEventManager.java -+++ b/src/main/java/io/papermc/paper/plugin/manager/PaperEventManager.java -@@ -1,6 +1,5 @@ - package io.papermc.paper.plugin.manager; - --import co.aikar.timings.TimedEventExecutor; - import com.destroystokyo.paper.event.server.ServerExceptionEvent; - import com.destroystokyo.paper.exception.ServerEventException; - import com.google.common.collect.Sets; -@@ -102,7 +101,6 @@ class PaperEventManager { - throw new IllegalPluginAccessException("Plugin attempted to register " + event + " while not enabled"); - } - -- executor = new TimedEventExecutor(executor, plugin, null, event); - this.getEventListeners(event).register(new RegisteredListener(listener, executor, priority, plugin, ignoreCancelled)); - } - -@@ -189,7 +187,7 @@ class PaperEventManager { - } - } - -- EventExecutor executor = new TimedEventExecutor(EventExecutor.create(method, eventClass), plugin, method, eventClass); -+ EventExecutor executor = EventExecutor.create(method, eventClass); - eventSet.add(new RegisteredListener(listener, executor, eh.priority(), plugin, eh.ignoreCancelled())); - } - return ret; -diff --git a/src/main/java/io/papermc/paper/plugin/manager/PaperPluginManagerImpl.java b/src/main/java/io/papermc/paper/plugin/manager/PaperPluginManagerImpl.java -index 097500a59336db1bbfffcd1aa4cff7a8586e46ec..35b00c139864dd7925d46a2d6a317d7e3aae9638 100644 ---- a/src/main/java/io/papermc/paper/plugin/manager/PaperPluginManagerImpl.java -+++ b/src/main/java/io/papermc/paper/plugin/manager/PaperPluginManagerImpl.java -@@ -232,7 +232,7 @@ public class PaperPluginManagerImpl implements PluginManager, DependencyContext - - @Override - public boolean useTimings() { -- return co.aikar.timings.Timings.isTimingsEnabled(); -+ return false; - } - - @Override -diff --git a/src/main/java/net/minecraft/network/protocol/PacketUtils.java b/src/main/java/net/minecraft/network/protocol/PacketUtils.java -index 01efbc507b3d58f13f78ee286f93df40cdc3f0cb..1f7f68aad97ee73763c042837f239bdc7167db55 100644 ---- a/src/main/java/net/minecraft/network/protocol/PacketUtils.java -+++ b/src/main/java/net/minecraft/network/protocol/PacketUtils.java -@@ -51,8 +51,7 @@ public class PacketUtils { - try { // Paper - detailed watchdog information - if (listener instanceof ServerCommonPacketListenerImpl serverCommonPacketListener && serverCommonPacketListener.processedDisconnect) return; // CraftBukkit - Don't handle sync packets for kicked players - if (listener.shouldHandleMessage(packet)) { -- co.aikar.timings.Timing timing = co.aikar.timings.MinecraftTimings.getPacketTiming(packet); // Paper - timings -- try { // Paper - timings // Purpur -+ try { - packet.handle(listener); - } catch (Exception exception) { - if (exception instanceof ReportedException) { -diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index d78cb68c3a53b277aa26186062efc716c8f80f36..8658296b919fd6fa28e64a64186060d3704271db 100644 ---- a/src/main/java/net/minecraft/server/MinecraftServer.java -+++ b/src/main/java/net/minecraft/server/MinecraftServer.java -@@ -3,7 +3,6 @@ package net.minecraft.server; - import com.google.common.base.Preconditions; - import com.google.common.base.Splitter; - import com.google.common.collect.ImmutableList; --import co.aikar.timings.Timings; - import com.destroystokyo.paper.event.server.PaperServerListPingEvent; - import com.google.common.base.Stopwatch; - import com.google.common.collect.Lists; -@@ -196,8 +195,6 @@ import org.bukkit.craftbukkit.CraftRegistry; - import org.bukkit.event.server.ServerLoadEvent; - // CraftBukkit end - --import co.aikar.timings.MinecraftTimings; // Paper -- - public abstract class MinecraftServer extends ReentrantBlockableEventLoop implements ServerInfo, ChunkIOErrorReporter, CommandSource, AutoCloseable, ca.spottedleaf.moonrise.patches.chunk_system.server.ChunkSystemMinecraftServer { // Paper - rewrite chunk system - - private static MinecraftServer SERVER; // Paper -@@ -1042,7 +1039,6 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop { - return !this.canOversleep(); - }); -- //isOversleep = false;MinecraftTimings.serverOversleep.stopTiming(); // Purpur -+ isOversleep = false; - // Paper end - this.server.spark.tickStart(); // Paper - spark - new com.destroystokyo.paper.event.server.ServerTickStartEvent(this.tickCount+1).callEvent(); // Paper - Server Tick Events -@@ -1669,9 +1664,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop waitable = new Waitable<>() { -- @Override -- protected String evaluate() { -- return sender.getBuffer(); -- } -- }; -- waitableArray[0] = waitable; -- co.aikar.timings.Timings.generateReport(new co.aikar.timings.TimingsReportListener(sender, waitable)); -- } else { - // Paper end - ConsoleInput serverCommand = new ConsoleInput(event.getCommand(), wrapper); - this.server.dispatchServerCommand(event.getSender(), serverCommand); -- } // Paper - }); - // Paper start - if (waitableArray[0] != null) { -diff --git a/src/main/java/net/minecraft/server/level/ChunkMap.java b/src/main/java/net/minecraft/server/level/ChunkMap.java -index 857c8bd79b2d9a634db25408d7305968e29f9846..82c7563de4c947c7ee3331112720ad7160f362b8 100644 ---- a/src/main/java/net/minecraft/server/level/ChunkMap.java -+++ b/src/main/java/net/minecraft/server/level/ChunkMap.java -@@ -1,6 +1,5 @@ - package net.minecraft.server.level; - --import co.aikar.timings.Timing; // Paper - import com.google.common.collect.ImmutableList; - import com.google.common.collect.ImmutableList.Builder; - import com.google.common.collect.Iterables; -diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index 067b10134b087626e05596225744b905211e8b63..c093aa5f957083cf288843ea0cb4a5ae77c7fa69 100644 ---- a/src/main/java/net/minecraft/server/level/ServerLevel.java -+++ b/src/main/java/net/minecraft/server/level/ServerLevel.java -@@ -1,7 +1,6 @@ - package net.minecraft.server.level; - - import com.google.common.annotations.VisibleForTesting; --import co.aikar.timings.TimingHistory; // Paper - import com.google.common.collect.Lists; - import com.mojang.datafixers.DataFixer; - import com.mojang.datafixers.util.Pair; -@@ -1301,9 +1300,7 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. - currentlyTickingEntity.lazySet(entity); - } - // Paper end - log detailed entity tick information -- ++TimingHistory.entityTicks; // Paper - timings - // Spigot start -- co.aikar.timings.Timing timer; // Paper - /*if (!org.spigotmc.ActivationRange.checkIfActive(entity)) { // Paper - comment out - EAR 2, reimplement below - entity.tickCount++; - timer = entity.getType().inactiveTickTimer.startTiming(); try { // Paper - timings -@@ -1326,7 +1323,6 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. - });*/ // Purpur - //gameprofilerfiller.incrementCounter("tickNonPassenger"); // Purpur - if (isActive) { // Paper - EAR 2 -- TimingHistory.activatedEntityTicks++; - entity.tick(); - entity.postTick(); // CraftBukkit - } else { entity.inactiveTick(); } // Paper - EAR 2 -diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java -index 0ea07da1b4bd420cd6765577b4719a2368b5740c..fa795cf24e0af1ea9e8142a09d1aa62a8f323666 100644 ---- a/src/main/java/net/minecraft/server/players/PlayerList.java -+++ b/src/main/java/net/minecraft/server/players/PlayerList.java -@@ -1,6 +1,5 @@ - package net.minecraft.server.players; - --import co.aikar.timings.MinecraftTimings; - import com.google.common.collect.Lists; - import com.google.common.collect.Maps; - import com.google.common.collect.Sets; -diff --git a/src/main/java/net/minecraft/world/entity/EntityType.java b/src/main/java/net/minecraft/world/entity/EntityType.java -index d3de0362dd1ef3954d05c4d8fa56a25edfe1bb2b..6ac3dfab99cfb0b51c81cc20e71da1261a8c567c 100644 ---- a/src/main/java/net/minecraft/world/entity/EntityType.java -+++ b/src/main/java/net/minecraft/world/entity/EntityType.java -@@ -356,10 +356,6 @@ public class EntityType implements FeatureElement, EntityTypeT - this(factory, spawnGroup, saveable, summonable, fireImmune, spawnableFarFromPlayer, canSpawnInside, dimensions, spawnBoxScale, maxTrackDistance, trackTickInterval, requiredFeatures, "custom"); - } - public EntityType(EntityType.EntityFactory factory, MobCategory spawnGroup, boolean saveable, boolean summonable, boolean fireImmune, boolean spawnableFarFromPlayer, ImmutableSet canSpawnInside, EntityDimensions dimensions, float spawnBoxScale, int maxTrackDistance, int trackTickInterval, FeatureFlagSet requiredFeatures, String id) { -- this.tickTimer = co.aikar.timings.MinecraftTimings.getEntityTimings(id, "tick"); -- this.inactiveTickTimer = co.aikar.timings.MinecraftTimings.getEntityTimings(id, "inactiveTick"); -- this.passengerTickTimer = co.aikar.timings.MinecraftTimings.getEntityTimings(id, "passengerTick"); -- this.passengerInactiveTickTimer = co.aikar.timings.MinecraftTimings.getEntityTimings(id, "passengerInactiveTick"); - // Paper end - this.builtInRegistryHolder = BuiltInRegistries.ENTITY_TYPE.createIntrusiveHolder(this); - this.factory = factory; -@@ -729,12 +725,6 @@ public class EntityType implements FeatureElement, EntityTypeT - return this.updateInterval; - } - -- // Paper start - timings -- public final co.aikar.timings.Timing tickTimer; -- public final co.aikar.timings.Timing inactiveTickTimer; -- public final co.aikar.timings.Timing passengerTickTimer; -- public final co.aikar.timings.Timing passengerInactiveTickTimer; -- // Paper end - public boolean trackDeltas() { - return this != EntityType.PLAYER && this != EntityType.LLAMA_SPIT && this != EntityType.WITHER && this != EntityType.BAT && this != EntityType.ITEM_FRAME && this != EntityType.GLOW_ITEM_FRAME && this != EntityType.LEASH_KNOT && this != EntityType.PAINTING && this != EntityType.END_CRYSTAL && this != EntityType.EVOKER_FANGS; - } -diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index f3a9aa64d2b9d2dfb4c1a4d9e79c7eead34da45a..7cbe457b65c65e6b72e7deb3a6868c0af13d8497 100644 ---- a/src/main/java/net/minecraft/world/entity/LivingEntity.java -+++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java -@@ -157,7 +157,6 @@ import org.bukkit.event.entity.EntityTeleportEvent; - import org.bukkit.event.player.PlayerItemConsumeEvent; - // CraftBukkit end - -- - public abstract class LivingEntity extends Entity implements Attackable { - - private static final Logger LOGGER = LogUtils.getLogger(); -diff --git a/src/main/java/net/minecraft/world/entity/ai/behavior/Behavior.java b/src/main/java/net/minecraft/world/entity/ai/behavior/Behavior.java -index 612a14806ec63b0dcf31814396282f4b7f4a527c..4ba50f688566f789c7d06cab57fb17cb4fb22760 100644 ---- a/src/main/java/net/minecraft/world/entity/ai/behavior/Behavior.java -+++ b/src/main/java/net/minecraft/world/entity/ai/behavior/Behavior.java -@@ -16,7 +16,6 @@ public abstract class Behavior implements BehaviorContro - private final int maxDuration; - // Paper start - configurable behavior tick rate and timings - private final String configKey; -- private final co.aikar.timings.Timing timing; - // Paper end - configurable behavior tick rate and timings - - public Behavior(Map, MemoryStatus> requiredMemoryState) { -@@ -38,7 +37,6 @@ public abstract class Behavior implements BehaviorContro - key = key.substring(lastSeparator + 1); - } - this.configKey = key.toLowerCase(java.util.Locale.ROOT); -- this.timing = co.aikar.timings.MinecraftTimings.getBehaviorTimings(configKey); - // Paper end - configurable behavior tick rate and timings - } - -diff --git a/src/main/java/net/minecraft/world/entity/ai/sensing/Sensor.java b/src/main/java/net/minecraft/world/entity/ai/sensing/Sensor.java -index 09a7b418ddf564c0be13297f7c216db2e7ae1578..1e26b1099139d76e49fce14ee72061e10bf4dcb9 100644 ---- a/src/main/java/net/minecraft/world/entity/ai/sensing/Sensor.java -+++ b/src/main/java/net/minecraft/world/entity/ai/sensing/Sensor.java -@@ -28,7 +28,6 @@ public abstract class Sensor { - private long timeToTick; - // Paper start - configurable sensor tick rate and timings - private final String configKey; -- private final co.aikar.timings.Timing timing; - // Paper end - - public Sensor(int senseInterval) { -@@ -39,7 +38,6 @@ public abstract class Sensor { - key = key.substring(lastSeparator + 1); - } - this.configKey = key.toLowerCase(java.util.Locale.ROOT); -- this.timing = co.aikar.timings.MinecraftTimings.getSensorTimings(configKey, senseInterval); - // Paper end - this.scanRate = senseInterval; - this.timeToTick = (long)RANDOM.nextInt(senseInterval); -diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java -index e90304a1bd97709e8e639835ef062da154092ed1..fb484fe2f491898917965bbd865e1540ddf92c98 100644 ---- a/src/main/java/net/minecraft/world/level/Level.java -+++ b/src/main/java/net/minecraft/world/level/Level.java -@@ -176,7 +176,6 @@ public abstract class Level implements LevelAccessor, AutoCloseable, ca.spottedl - public final com.destroystokyo.paper.antixray.ChunkPacketBlockController chunkPacketBlockController; // Paper - Anti-Xray - public final org.purpurmc.purpur.PurpurWorldConfig purpurConfig; // Purpur - public final DivineWorldConfig divinemcConfig; // DivineMC -- public final co.aikar.timings.WorldTimingsHandler timings; // Paper - public static BlockPos lastPhysicsProblem; // Spigot - private int tileTickPosition; - public final Map explosionDensityCache = new HashMap<>(); // Paper - Optimize explosions -@@ -810,7 +809,6 @@ public abstract class Level implements LevelAccessor, AutoCloseable, ca.spottedl - public void onBorderSetDamageSafeZOne(WorldBorder border, double safeZoneRadius) {} - }); - // CraftBukkit end -- this.timings = new co.aikar.timings.WorldTimingsHandler(this); // Paper - code below can generate new world and access timings - this.entityLookup = new ca.spottedleaf.moonrise.patches.chunk_system.level.entity.dfl.DefaultEntityLookup(this); // Paper - rewrite chunk system - // Paper start - optimise collisions - this.minSection = ca.spottedleaf.moonrise.common.util.WorldUtil.getMinSection(this); -@@ -1453,9 +1451,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable, ca.spottedl - } - this.blockEntityTickers.removeAll(toRemove); // Paper - Fix MC-117075 - -- //this.timings.tileEntityTick.stopTiming(); // Spigot // Purpur - this.tickingBlockEntities = false; -- co.aikar.timings.TimingHistory.tileEntityTicks += this.blockEntityTickers.size(); // Paper - //gameprofilerfiller.pop(); // Purpur - this.spigotConfig.currentPrimedTnt = 0; // Spigot - } -diff --git a/src/main/java/net/minecraft/world/level/block/Block.java b/src/main/java/net/minecraft/world/level/block/Block.java -index 26dd81b4a6fb929f2b4304442f79e7f3f6c46aa3..4f913e7af8de027f8745832ae3cad11780ded84b 100644 ---- a/src/main/java/net/minecraft/world/level/block/Block.java -+++ b/src/main/java/net/minecraft/world/level/block/Block.java -@@ -106,13 +106,6 @@ public class Block extends BlockBehaviour implements ItemLike { - this != Blocks.STRUCTURE_BLOCK && - this != Blocks.JIGSAW; - } -- public co.aikar.timings.Timing timing; -- public co.aikar.timings.Timing getTiming() { -- if (timing == null) { -- timing = co.aikar.timings.MinecraftTimings.getBlockTiming(this); -- } -- return timing; -- } - // Paper end - @Nullable - private String descriptionId; -diff --git a/src/main/java/net/minecraft/world/level/block/entity/BlockEntity.java b/src/main/java/net/minecraft/world/level/block/entity/BlockEntity.java -index a7b6c20afd9ec3fe61d2bdf42f96398c8d6751cc..73c9f91457683e8e6bd8293b4393ccbd984eddb7 100644 ---- a/src/main/java/net/minecraft/world/level/block/entity/BlockEntity.java -+++ b/src/main/java/net/minecraft/world/level/block/entity/BlockEntity.java -@@ -33,14 +33,9 @@ import org.bukkit.craftbukkit.persistence.CraftPersistentDataTypeRegistry; - import org.bukkit.inventory.InventoryHolder; - // CraftBukkit end - --import org.spigotmc.CustomTimingsHandler; // Spigot --import co.aikar.timings.MinecraftTimings; // Paper --import co.aikar.timings.Timing; // Paper -- - public abstract class BlockEntity { - static boolean ignoreTileUpdates; // Paper - Perf: Optimize Hoppers - -- public Timing tickTimer = MinecraftTimings.getTileEntityTimings(this); // Paper - // CraftBukkit start - data containers - private static final CraftPersistentDataTypeRegistry DATA_TYPE_REGISTRY = new CraftPersistentDataTypeRegistry(); - public CraftPersistentDataContainer persistentDataContainer; -diff --git a/src/main/java/org/bukkit/craftbukkit/scheduler/CraftScheduler.java b/src/main/java/org/bukkit/craftbukkit/scheduler/CraftScheduler.java -index 3cef3e99e0db3582465309b8bf485145acb5aa7b..b66fbdd38b7c6d35b4a7e01d69dc1ec99e1db0d9 100644 ---- a/src/main/java/org/bukkit/craftbukkit/scheduler/CraftScheduler.java -+++ b/src/main/java/org/bukkit/craftbukkit/scheduler/CraftScheduler.java -@@ -1,6 +1,5 @@ - package org.bukkit.craftbukkit.scheduler; - --import co.aikar.timings.MinecraftTimings; // Paper - import com.google.common.base.Preconditions; - import com.google.common.util.concurrent.ThreadFactoryBuilder; - import java.util.ArrayList; -@@ -297,7 +296,7 @@ public class CraftScheduler implements BukkitScheduler { - } - return false; - } -- }){{this.timings=co.aikar.timings.MinecraftTimings.getCancelTasksTimer();}}; // Paper -+ }); - this.handle(task, 0L); - for (CraftTask taskPending = this.head.getNext(); taskPending != null; taskPending = taskPending.getNext()) { - if (taskPending == task) { -@@ -337,7 +336,7 @@ public class CraftScheduler implements BukkitScheduler { - } - } - } -- }){{this.timings=co.aikar.timings.MinecraftTimings.getCancelTasksTimer(plugin);}}; // Paper -+ }); // Paper - this.handle(task, 0L); - for (CraftTask taskPending = this.head.getNext(); taskPending != null; taskPending = taskPending.getNext()) { - if (taskPending == task) { -diff --git a/src/main/java/org/bukkit/craftbukkit/scheduler/CraftTask.java b/src/main/java/org/bukkit/craftbukkit/scheduler/CraftTask.java -index 8f181e03eda734b18f8c9ee80ee6e45f8689d178..f43561f7c8c4e63b5037d70bd1cde6d857656442 100644 ---- a/src/main/java/org/bukkit/craftbukkit/scheduler/CraftTask.java -+++ b/src/main/java/org/bukkit/craftbukkit/scheduler/CraftTask.java -@@ -2,15 +2,10 @@ package org.bukkit.craftbukkit.scheduler; - - import java.util.function.Consumer; - --import co.aikar.timings.NullTimingHandler; - import org.bukkit.Bukkit; - import org.bukkit.plugin.Plugin; - import org.bukkit.scheduler.BukkitTask; - --import org.spigotmc.CustomTimingsHandler; // Spigot --import co.aikar.timings.MinecraftTimings; // Paper --import co.aikar.timings.Timing; // Paper -- - public class CraftTask implements BukkitTask, Runnable { // Spigot - - private volatile CraftTask next = null; -@@ -31,7 +26,6 @@ public class CraftTask implements BukkitTask, Runnable { // Spigot - private long nextRun; - public final Runnable rTask; // Paper - public final Consumer cTask; // Paper -- public Timing timings; // Paper - private final Plugin plugin; - private final int id; - private final long createdAt = System.nanoTime(); -@@ -61,7 +55,6 @@ public class CraftTask implements BukkitTask, Runnable { // Spigot - } - this.id = id; - this.period = period; -- timings = task != null ? MinecraftTimings.getPluginTaskTimings(this, period) : NullTimingHandler.NULL; // Paper - } - - @Override -diff --git a/src/main/java/org/bukkit/craftbukkit/scoreboard/CraftScoreboardManager.java b/src/main/java/org/bukkit/craftbukkit/scoreboard/CraftScoreboardManager.java -index d3ec817e95628f1fc8be4a29c9a0f13c7d5fd552..e9798517b9211c50a20ea5c69603aab35f614f02 100644 ---- a/src/main/java/org/bukkit/craftbukkit/scoreboard/CraftScoreboardManager.java -+++ b/src/main/java/org/bukkit/craftbukkit/scoreboard/CraftScoreboardManager.java -@@ -115,16 +115,9 @@ public final class CraftScoreboardManager implements ScoreboardManager { - public void forAllObjectives(ObjectiveCriteria criteria, ScoreHolder holder, Consumer consumer) { - // Paper start - add timings for scoreboard search - // plugins leaking scoreboards will make this very expensive, let server owners debug it easily -- //co.aikar.timings.MinecraftTimings.scoreboardScoreSearch.startTimingIfSync(); // Purpur -- try { -- // Paper end - add timings for scoreboard search - for (CraftScoreboard scoreboard : this.scoreboards) { - Scoreboard board = scoreboard.board; - board.forAllObjectives(criteria, holder, (score) -> consumer.accept(score)); - } -- } finally { // Paper start - add timings for scoreboard search -- //co.aikar.timings.MinecraftTimings.scoreboardScoreSearch.stopTimingIfSync(); // Purpur -- } -- // 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 5505c13d0e602f39fe02dde350082c11a2f2a2e0..eb945d9574377d8f30530504e1c92c7b3a6972ac 100644 ---- a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java -+++ b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java -@@ -202,7 +202,7 @@ public final class CraftMagicNumbers implements UnsafeValues { - // Paper start - @Override - public void reportTimings() { -- co.aikar.timings.TimingsExport.reportTimings(); -+ - } - // Paper end - -@@ -484,7 +484,7 @@ public final class CraftMagicNumbers implements UnsafeValues { - // Paper start - @Override - public String getTimingsServerName() { -- return io.papermc.paper.configuration.GlobalConfiguration.get().timings.serverName; -+ return "Unknown Server"; // DivineMC - strict assignment of the server name to an unknown - } - - @Override -diff --git a/src/main/java/org/spigotmc/ActivationRange.java b/src/main/java/org/spigotmc/ActivationRange.java -index ed1cdea66dd117ecafd14a52727f094430f39b60..ad6a9d49d16a24e177a20ffc5b2d716f3f4b15c3 100644 ---- a/src/main/java/org/spigotmc/ActivationRange.java -+++ b/src/main/java/org/spigotmc/ActivationRange.java -@@ -34,7 +34,6 @@ import net.minecraft.world.entity.projectile.FireworkRocketEntity; - import net.minecraft.world.entity.projectile.ThrowableProjectile; - import net.minecraft.world.entity.projectile.ThrownTrident; - import net.minecraft.world.entity.raid.Raider; --import co.aikar.timings.MinecraftTimings; - import net.minecraft.world.entity.schedule.Activity; - import net.minecraft.world.level.Level; - import net.minecraft.world.phys.AABB; diff --git a/patches/unapplied/server/0055-Implement-Linear-region-format.patch b/patches/unapplied/server/0055-Implement-Linear-region-format.patch index 3e760af..5e8938f 100644 --- a/patches/unapplied/server/0055-Implement-Linear-region-format.patch +++ b/patches/unapplied/server/0055-Implement-Linear-region-format.patch @@ -3,6 +3,7 @@ From: NONPLAYT <76615486+NONPLAYT@users.noreply.github.com> Date: Wed, 10 Jul 2024 02:40:08 +0300 Subject: [PATCH] Implement Linear region format +Status: may be replaced with SlimeWorldManager soon diff --git a/build.gradle.kts b/build.gradle.kts index 3e2a092c797ec7918f5c4b838f28b0778c70531c..bb44922202e3cdb705a4773ea7c9ec807b5f3de2 100644