diff --git a/patches/api/0006-Remove-Timings.patch b/patches/api/0006-Remove-Timings.patch deleted file mode 100644 index 2a5ad8866..000000000 --- a/patches/api/0006-Remove-Timings.patch +++ /dev/null @@ -1,152 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: BillyGalbreath -Date: Fri, 1 Jul 2022 04:03:26 -0500 -Subject: [PATCH] Remove Timings - - -diff --git a/src/main/java/co/aikar/timings/TimedEventExecutor.java b/src/main/java/co/aikar/timings/TimedEventExecutor.java -index 34e43e56ccc663e05b9cae36643e8df5eee5cb17..2c15b67149d014fdce2dd74a550013d83b6e44c8 100644 ---- a/src/main/java/co/aikar/timings/TimedEventExecutor.java -+++ b/src/main/java/co/aikar/timings/TimedEventExecutor.java -@@ -76,9 +76,9 @@ public class TimedEventExecutor implements EventExecutor { - executor.execute(listener, event); - return; - } -- try (Timing ignored = timings.startTiming()){ -+ //try (Timing ignored = timings.startTiming()){ // Purpur - executor.execute(listener, event); -- } -+ //} // Purpur - } - - @Override -diff --git a/src/main/java/co/aikar/timings/Timing.java b/src/main/java/co/aikar/timings/Timing.java -index a21e5ead5024fd0058c5e3302d8201dd249d32bc..505908e987a032a801ae03d7fb020dfb662bf81b 100644 ---- a/src/main/java/co/aikar/timings/Timing.java -+++ b/src/main/java/co/aikar/timings/Timing.java -@@ -36,6 +36,7 @@ public interface Timing extends AutoCloseable { - * @return Timing - */ - @NotNull -+ @io.papermc.paper.annotation.DoNotUse // Purpur - Timing startTiming(); - - /** -@@ -43,6 +44,7 @@ public interface Timing extends AutoCloseable { - * - * Will automatically be called when this Timing is used with try-with-resources - */ -+ @io.papermc.paper.annotation.DoNotUse // Purpur - void stopTiming(); - - /** -@@ -53,6 +55,7 @@ public interface Timing extends AutoCloseable { - * @return Timing - */ - @NotNull -+ @io.papermc.paper.annotation.DoNotUse // Purpur - Timing startTimingIfSync(); - - /** -@@ -62,12 +65,14 @@ public interface Timing extends AutoCloseable { - * - * But only if we are on the primary thread. - */ -+ @io.papermc.paper.annotation.DoNotUse // Purpur - void stopTimingIfSync(); - - /** - * @deprecated Doesn't do anything - Removed - */ - @Deprecated -+ @io.papermc.paper.annotation.DoNotUse // Purpur - void abort(); - - /** -@@ -79,5 +84,6 @@ public interface Timing extends AutoCloseable { - TimingHandler getTimingHandler(); - - @Override -+ @io.papermc.paper.annotation.DoNotUse // Purpur - void close(); - } -diff --git a/src/main/java/co/aikar/timings/Timings.java b/src/main/java/co/aikar/timings/Timings.java -index dd72a34eaa4bedd9ea0b92eaa79091b00eb4dd09..759e9cbcedb50894821dcb6dcc602af4f0c3453e 100644 ---- a/src/main/java/co/aikar/timings/Timings.java -+++ b/src/main/java/co/aikar/timings/Timings.java -@@ -114,7 +114,7 @@ public final class Timings { - @NotNull - public static Timing ofStart(@NotNull Plugin plugin, @NotNull String name, @Nullable Timing groupHandler) { - Timing timing = of(plugin, name, groupHandler); -- timing.startTiming(); -+ //timing.startTiming(); // Purpur - return timing; - } - -diff --git a/src/main/java/co/aikar/timings/TimingsCommand.java b/src/main/java/co/aikar/timings/TimingsCommand.java -index 3132dc98d26c54c5e46162e53aaed195d7335c8d..b461b5c50f97f11cb9ef68abc520271bb72440fa 100644 ---- a/src/main/java/co/aikar/timings/TimingsCommand.java -+++ b/src/main/java/co/aikar/timings/TimingsCommand.java -@@ -44,7 +44,7 @@ public class TimingsCommand extends BukkitCommand { - public TimingsCommand(@NotNull String name) { - super(name); - this.description = "Manages Spigot Timings data to see performance of the server."; -- this.usageMessage = "/timings "; -+ this.usageMessage = "/timings";// "; // Purpur - this.setPermission("bukkit.command.timings"); - } - -@@ -53,6 +53,13 @@ public class TimingsCommand extends BukkitCommand { - if (!testPermission(sender)) { - return true; - } -+ if (true) { -+ net.kyori.adventure.text.minimessage.MiniMessage mm = net.kyori.adventure.text.minimessage.MiniMessage.miniMessage(); -+ sender.sendMessage(mm.deserialize("Purpur has removed timings to save your performance. Please use /spark instead")); -+ sender.sendMessage(mm.deserialize("For more information, view its documentation at")); -+ sender.sendMessage(mm.deserialize("https://spark.lucko.me/docs/Command-Usage")); -+ return true; -+ } - if (args.length < 1) { - sender.sendMessage(text("Usage: " + this.usageMessage, NamedTextColor.RED)); - return true; -@@ -111,7 +118,7 @@ public class TimingsCommand extends BukkitCommand { - Preconditions.checkNotNull(args, "Arguments cannot be null"); - Preconditions.checkNotNull(alias, "Alias cannot be null"); - -- if (args.length == 1) { -+ if (false && args.length == 1) { // Purpur - return StringUtil.copyPartialMatches(args[0], TIMINGS_SUBCOMMANDS, - new ArrayList(TIMINGS_SUBCOMMANDS.size())); - } -diff --git a/src/main/java/org/bukkit/command/SimpleCommandMap.java b/src/main/java/org/bukkit/command/SimpleCommandMap.java -index 0bc24d0effe9b2e44c41a1c00060b0ebf7395c4a..aad6edb02f690b875db28e8db9bcd4e36b90d766 100644 ---- a/src/main/java/org/bukkit/command/SimpleCommandMap.java -+++ b/src/main/java/org/bukkit/command/SimpleCommandMap.java -@@ -163,10 +163,10 @@ public class SimpleCommandMap implements CommandMap { - // Paper end - - try { -- try (co.aikar.timings.Timing ignored = target.timings.startTiming()) { // Paper - use try with resources -+ //try (co.aikar.timings.Timing ignored = target.timings.startTiming()) { // Paper - use try with resources // Purpur - // Note: we don't return the result of target.execute as thats success / failure, we return handled (true) or not handled (false) - target.execute(sender, sentCommandLabel, parsedArgs); // Purpur -- } // target.timings.stopTiming(); // Spigot // Paper -+ //} // target.timings.stopTiming(); // Spigot // Paper // Purpur - } catch (CommandException ex) { - server.getPluginManager().callEvent(new com.destroystokyo.paper.event.server.ServerExceptionEvent(new com.destroystokyo.paper.exception.ServerCommandException(ex, target, sender, args))); // Paper - //target.timings.stopTiming(); // Spigot // Paper -diff --git a/src/main/java/org/spigotmc/CustomTimingsHandler.java b/src/main/java/org/spigotmc/CustomTimingsHandler.java -index 123647bb10fc89508437d7a0bd3fd31d58ee7c82..ce209668dd7f11b284bd7f5688191a0b3ae86a09 100644 ---- a/src/main/java/org/spigotmc/CustomTimingsHandler.java -+++ b/src/main/java/org/spigotmc/CustomTimingsHandler.java -@@ -61,7 +61,7 @@ public final class CustomTimingsHandler { - handler = timing; - } - -- public void startTiming() { handler.startTiming(); } -- public void stopTiming() { handler.stopTiming(); } -+ public void startTiming() { /*handler.startTiming();*/ } // Purpur -+ public void stopTiming() { /*handler.stopTiming();*/ } // Purpur - - } diff --git a/patches/server/0068-Remove-Mojang-Profiler.patch b/patches/server/0068-Remove-Mojang-Profiler.patch deleted file mode 100644 index 5af2e2f1d..000000000 --- a/patches/server/0068-Remove-Mojang-Profiler.patch +++ /dev/null @@ -1,1842 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: BillyGalbreath -Date: Sat, 16 Jul 2022 21:37:10 -0500 -Subject: [PATCH] Remove Mojang Profiler - - -diff --git a/src/main/java/net/minecraft/commands/Commands.java b/src/main/java/net/minecraft/commands/Commands.java -index edd378813873ed367784379b0f1666d1ccf2194d..eb4dac2239592d680ef31edf47f1ab660299762d 100644 ---- a/src/main/java/net/minecraft/commands/Commands.java -+++ b/src/main/java/net/minecraft/commands/Commands.java -@@ -137,7 +137,7 @@ public class Commands { - CloneCommands.register(this.dispatcher, commandRegistryAccess); - DataCommands.register(this.dispatcher); - DataPackCommand.register(this.dispatcher); -- DebugCommand.register(this.dispatcher); -+ //DebugCommand.register(this.dispatcher); // Purpur - DefaultGameModeCommands.register(this.dispatcher); - DifficultyCommand.register(this.dispatcher); - EffectCommands.register(this.dispatcher); -@@ -298,9 +298,9 @@ public class Commands { - public int performCommand(ParseResults parseresults, String s, String label) { // CraftBukkit - CommandSourceStack commandlistenerwrapper = (CommandSourceStack) parseresults.getContext().getSource(); - -- commandlistenerwrapper.getServer().getProfiler().push(() -> { -+ /*commandlistenerwrapper.getServer().getProfiler().push(() -> { // Purpur - return "/" + s; -- }); -+ });*/ // Purpur - - byte b0; - -@@ -363,7 +363,7 @@ public class Commands { - b0 = 0; - } - } finally { -- commandlistenerwrapper.getServer().getProfiler().pop(); -+ //commandlistenerwrapper.getServer().getProfiler().pop(); // Purpur - } - - return b0; -diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 72ac77dd27840c834cbf368ffe5173ba5f21cc30..2c6461491881da9f878bd5aa245272ea49dd5fd8 100644 ---- a/src/main/java/net/minecraft/server/MinecraftServer.java -+++ b/src/main/java/net/minecraft/server/MinecraftServer.java -@@ -328,13 +328,13 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop registryreadops, Thread thread, LevelStorageSource.LevelStorageAccess convertable_conversionsession, PackRepository resourcepackrepository, WorldStem worldstem, Proxy proxy, DataFixer datafixer, Services services, ChunkProgressListenerFactory worldloadlistenerfactory) { - super("Server"); - SERVER = this; // Paper - better singleton -- this.metricsRecorder = InactiveMetricsRecorder.INSTANCE; -- this.profiler = this.metricsRecorder.getProfiler(); -- this.onMetricsRecordingStopped = (methodprofilerresults) -> { -+ //this.metricsRecorder = InactiveMetricsRecorder.INSTANCE; // Purpur -+ //this.profiler = this.metricsRecorder.getProfiler(); // Purpur -+ /*this.onMetricsRecordingStopped = (methodprofilerresults) -> { // Purpur - this.stopRecordingMetrics(); -- }; -- this.onMetricsRecordingFinished = (path) -> { -- }; -+ };*/ // Purpur -+ //this.onMetricsRecordingFinished = (path) -> { // Purpur -+ //}; // Purpur - this.status = new ServerStatus(); - this.random = RandomSource.create(); - this.port = -1; -@@ -936,9 +936,9 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop 0 && this.tickCount % autosavePeriod == 0; - try { - this.isSaving = true; -@@ -1464,7 +1464,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop 0; // Purpur - net.minecraft.world.level.block.entity.HopperBlockEntity.skipHopperEvents = worldserver.paperConfig().hopper.disableMoveEvent || org.bukkit.event.inventory.InventoryMoveItemEvent.getHandlerList().getRegisteredListeners().length == 0; // Paper - -- this.profiler.push(() -> { -+ /*this.profiler.push(() -> { // Purpur - return worldserver + " " + worldserver.dimension().location(); -- }); -+ });*/ // Purpur - /* Drop global time updates - if (this.tickCount % 20 == 0) { -- this.profiler.push("timeSync"); -+ //this.profiler.push("timeSync"); // Purpur - this.playerList.broadcastAll(new PacketPlayOutUpdateTime(worldserver.getGameTime(), worldserver.getDayTime(), worldserver.getGameRules().getBoolean(GameRules.RULE_DAYLIGHT)), worldserver.dimension()); -- this.profiler.pop(); -+ //this.profiler.pop(); // Purpur - } - // CraftBukkit end */ - -- this.profiler.push("tick"); -+ //this.profiler.push("tick"); // Purpur - - try { - //worldserver.timings.doTick.startTiming(); // Spigot // Purpur -@@ -1582,17 +1582,17 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop { - this.executeBlocking(() -> { - this.saveDebugReport(path.resolve("server")); -@@ -2506,40 +2506,40 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop resultConsumer, Consumer dumpConsumer) { -- this.onMetricsRecordingStopped = (methodprofilerresults) -> { -+ /*this.onMetricsRecordingStopped = (methodprofilerresults) -> { // Purpur - this.stopRecordingMetrics(); - resultConsumer.accept(methodprofilerresults); - }; - this.onMetricsRecordingFinished = dumpConsumer; -- this.willStartRecordingMetrics = true; -+ this.willStartRecordingMetrics = true;*/ // Purpur - } - - public void stopRecordingMetrics() { -- this.metricsRecorder = InactiveMetricsRecorder.INSTANCE; -+ //this.metricsRecorder = InactiveMetricsRecorder.INSTANCE; // Purpur - } - - public void finishRecordingMetrics() { -- this.metricsRecorder.end(); -+ //this.metricsRecorder.end(); // Purpur - } - - public void cancelRecordingMetrics() { -- this.metricsRecorder.cancel(); -- this.profiler = this.metricsRecorder.getProfiler(); -+ //this.metricsRecorder.cancel(); // Purpur -+ //this.profiler = this.metricsRecorder.getProfiler(); // Purpur - } - - public Path getWorldPath(LevelResource worldSavePath) { -@@ -2584,15 +2584,15 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop functions, ResourceLocation label) { -- ProfilerFiller gameprofilerfiller = this.server.getProfiler(); -+ //ProfilerFiller gameprofilerfiller = this.server.getProfiler(); // Purpur - - Objects.requireNonNull(label); -- gameprofilerfiller.push(label::toString); -+ //gameprofilerfiller.push(label::toString); // Purpur - Iterator iterator = functions.iterator(); - - while (iterator.hasNext()) { -@@ -69,7 +69,7 @@ public class ServerFunctionManager { - this.execute(customfunction, this.getGameLoopSender()); - } - -- this.server.getProfiler().pop(); -+ //this.server.getProfiler().pop(); // Purpur - } - - public int execute(CommandFunction function, CommandSourceStack source) { -@@ -177,10 +177,10 @@ public class ServerFunctionManager { - - try { - ServerFunctionManager.QueuedCommand customfunctiondata_b = (ServerFunctionManager.QueuedCommand) this.commandQueue.removeFirst(); -- ProfilerFiller gameprofilerfiller = ServerFunctionManager.this.server.getProfiler(); -+ //ProfilerFiller gameprofilerfiller = ServerFunctionManager.this.server.getProfiler(); // Purpur - - Objects.requireNonNull(customfunctiondata_b); -- gameprofilerfiller.push(customfunctiondata_b::toString); -+ //gameprofilerfiller.push(customfunctiondata_b::toString); // Purpur - this.depth = customfunctiondata_b.depth; - customfunctiondata_b.execute(ServerFunctionManager.this, this.commandQueue, i, this.tracer); - if (!this.nestedCalls.isEmpty()) { -@@ -192,7 +192,7 @@ public class ServerFunctionManager { - this.nestedCalls.clear(); - } - } finally { -- ServerFunctionManager.this.server.getProfiler().pop(); -+ //ServerFunctionManager.this.server.getProfiler().pop(); // Purpur - } - - ++j; -diff --git a/src/main/java/net/minecraft/server/level/ChunkMap.java b/src/main/java/net/minecraft/server/level/ChunkMap.java -index fac291c9a48b2563d33fe7250e57556aa29ec669..ceaa44e8fbf02aef36f5ae663269dfc1026e4086 100644 ---- a/src/main/java/net/minecraft/server/level/ChunkMap.java -+++ b/src/main/java/net/minecraft/server/level/ChunkMap.java -@@ -606,20 +606,20 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider - } - - protected void tick(BooleanSupplier shouldKeepTicking) { -- ProfilerFiller gameprofilerfiller = this.level.getProfiler(); -+ //ProfilerFiller gameprofilerfiller = this.level.getProfiler(); // Purpur - - //try (Timing ignored = this.level.timings.poiUnload.startTiming()) { // Paper // Purpur -- gameprofilerfiller.push("poi"); -+ //gameprofilerfiller.push("poi"); // Purpur - this.poiManager.tick(shouldKeepTicking); - //} // Paper // Purpur -- gameprofilerfiller.popPush("chunk_unload"); -+ //gameprofilerfiller.popPush("chunk_unload"); // Purpur - if (!this.level.noSave()) { - //try (Timing ignored = this.level.timings.chunkUnload.startTiming()) { // Paper // Purpur - this.processUnloads(shouldKeepTicking); - //} // Paper // Purpur - } - -- gameprofilerfiller.pop(); -+ //gameprofilerfiller.pop(); // Purpur - } - - public boolean hasWork() { -diff --git a/src/main/java/net/minecraft/server/level/ServerChunkCache.java b/src/main/java/net/minecraft/server/level/ServerChunkCache.java -index 6a11e522c5bd9042dcf89e2538d354448e501fbe..3bee0bfc481ffe3ea1860c5b23ad2efbe81cb0ba 100644 ---- a/src/main/java/net/minecraft/server/level/ServerChunkCache.java -+++ b/src/main/java/net/minecraft/server/level/ServerChunkCache.java -@@ -430,16 +430,16 @@ public class ServerChunkCache extends ChunkSource { - return ifLoaded; - } - // Paper end -- ProfilerFiller gameprofilerfiller = this.level.getProfiler(); -+ //ProfilerFiller gameprofilerfiller = this.level.getProfiler(); // Purpur - -- gameprofilerfiller.incrementCounter("getChunk"); -+ //gameprofilerfiller.incrementCounter("getChunk"); // Purpur - long k = ChunkPos.asLong(x, z); - - ChunkAccess ichunkaccess; - - // Paper - rewrite chunk system - there are no correct callbacks to remove items from cache in the new chunk system - -- gameprofilerfiller.incrementCounter("getChunkCacheMiss"); -+ //gameprofilerfiller.incrementCounter("getChunkCacheMiss"); // Purpur - CompletableFuture> completablefuture = this.getChunkFutureMainThread(x, z, leastStatus, create, true); // Paper - ServerChunkCache.MainThreadExecutor chunkproviderserver_b = this.mainThreadProcessor; - -@@ -627,24 +627,24 @@ public class ServerChunkCache extends ChunkSource { - // CraftBukkit start - modelled on below - public void purgeUnload() { - if (true) return; // Paper - tickets will be removed later, this behavior isn't really well accounted for by the chunk system -- this.level.getProfiler().push("purge"); -+ //this.level.getProfiler().push("purge"); // Purpur - this.distanceManager.purgeStaleTickets(); - this.runDistanceManagerUpdates(); -- this.level.getProfiler().popPush("unload"); -+ //this.level.getProfiler().popPush("unload"); // Purpur - this.chunkMap.tick(() -> true); -- this.level.getProfiler().pop(); -+ //this.level.getProfiler().pop(); // Purpur - this.clearCache(); - } - // CraftBukkit end - - @Override - public void tick(BooleanSupplier shouldKeepTicking, boolean tickChunks) { -- this.level.getProfiler().push("purge"); -+ //this.level.getProfiler().push("purge"); // Purpur - //this.level.timings.doChunkMap.startTiming(); // Spigot // Purpur - this.distanceManager.purgeStaleTickets(); - this.runDistanceManagerUpdates(); - //this.level.timings.doChunkMap.stopTiming(); // Spigot // Purpur -- this.level.getProfiler().popPush("chunks"); -+ //this.level.getProfiler().popPush("chunks"); // Purpur - if (tickChunks) { - //this.level.timings.chunks.startTiming(); // Paper - timings // Purpur - this.chunkMap.playerChunkManager.tick(); // Paper - this is mostly is to account for view distance changes -@@ -653,10 +653,10 @@ public class ServerChunkCache extends ChunkSource { - } - - //this.level.timings.doChunkUnload.startTiming(); // Spigot // Purpur -- this.level.getProfiler().popPush("unload"); -+ //this.level.getProfiler().popPush("unload"); // Purpur - this.chunkMap.tick(shouldKeepTicking); - //this.level.timings.doChunkUnload.stopTiming(); // Spigot // Purpur -- this.level.getProfiler().pop(); -+ //this.level.getProfiler().pop(); // Purpur - this.clearCache(); - } - -@@ -702,14 +702,14 @@ public class ServerChunkCache extends ChunkSource { - } - // Paper end - optimize isOutisdeRange - LevelData worlddata = this.level.getLevelData(); -- ProfilerFiller gameprofilerfiller = this.level.getProfiler(); -+ //ProfilerFiller gameprofilerfiller = this.level.getProfiler(); // Purpur - -- gameprofilerfiller.push("pollingChunks"); -+ //gameprofilerfiller.push("pollingChunks"); // Purpur - this.level.resetIceAndSnowTick(); // Pufferfish - reset ice & snow tick random - int k = this.level.getGameRules().getInt(GameRules.RULE_RANDOMTICKING); - boolean flag1 = level.ticksPerSpawnCategory.getLong(org.bukkit.entity.SpawnCategory.ANIMAL) != 0L && worlddata.getGameTime() % level.ticksPerSpawnCategory.getLong(org.bukkit.entity.SpawnCategory.ANIMAL) == 0L; // CraftBukkit - -- gameprofilerfiller.push("naturalSpawnCount"); -+ //gameprofilerfiller.push("naturalSpawnCount"); // Purpur - //this.level.timings.countNaturalMobs.startTiming(); // Paper - timings // Purpur - int l = this.distanceManager.getNaturalSpawnChunkCount(); - // Paper start - per player mob spawning -@@ -734,13 +734,13 @@ public class ServerChunkCache extends ChunkSource { - //this.level.timings.countNaturalMobs.stopTiming(); // Paper - timings // Purpur - - //this.lastSpawnState = spawnercreature_d; // Pufferfish - this is managed asynchronously -- gameprofilerfiller.popPush("filteringLoadedChunks"); -+ //gameprofilerfiller.popPush("filteringLoadedChunks"); // Purpur - // Paper - moved down - //this.level.timings.chunkTicks.startTiming(); // Paper // Purpur - - // Paper - moved down - -- gameprofilerfiller.popPush("spawnAndTick"); -+ //gameprofilerfiller.popPush("spawnAndTick"); // Purpur - boolean flag2 = this.level.getGameRules().getBoolean(GameRules.RULE_DOMOBSPAWNING) && !this.level.players().isEmpty(); // CraftBukkit - - // Paper - only shuffle if per-player mob spawning is disabled -@@ -791,15 +791,15 @@ public class ServerChunkCache extends ChunkSource { - } - // Paper end - optimise chunk tick iteration - //this.level.timings.chunkTicks.stopTiming(); // Paper // Purpur -- gameprofilerfiller.popPush("customSpawners"); -+ //gameprofilerfiller.popPush("customSpawners"); // Purpur - if (flag2) { - //try (co.aikar.timings.Timing ignored = this.level.timings.miscMobSpawning.startTiming()) { // Paper - timings // Purpur - this.level.tickCustomSpawners(this.spawnEnemies, this.spawnFriendlies); - //} // Paper - timings // Purpur - } -- gameprofilerfiller.pop(); -+ //gameprofilerfiller.pop(); // Purpur - // Paper start - use set of chunks requiring updates, rather than iterating every single one loaded -- gameprofilerfiller.popPush("broadcast"); -+ //gameprofilerfiller.popPush("broadcast"); // Purpur - //this.level.timings.broadcastChunkUpdates.startTiming(); // Paper - timing // Purpur - if (!this.chunkMap.needsChangeBroadcasting.isEmpty()) { - ReferenceOpenHashSet copy = this.chunkMap.needsChangeBroadcasting.clone(); -@@ -813,7 +813,7 @@ public class ServerChunkCache extends ChunkSource { - } - } - //this.level.timings.broadcastChunkUpdates.stopTiming(); // Paper - timing // Purpur -- gameprofilerfiller.pop(); -+ //gameprofilerfiller.pop(); // Purpur - // Paper end - use set of chunks requiring updates, rather than iterating every single one loaded - // Paper start - controlled flush for entity tracker packets - List disabledFlushes = new java.util.ArrayList<>(this.level.players.size()); -@@ -1024,7 +1024,7 @@ public class ServerChunkCache extends ChunkSource { - - @Override - protected void doRunTask(Runnable task) { -- ServerChunkCache.this.level.getProfiler().incrementCounter("runTask"); -+ //ServerChunkCache.this.level.getProfiler().incrementCounter("runTask"); // Purpur - super.doRunTask(task); - } - -diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index 7af1b6036fa05533c2e9801988dcf07b51c18f6f..4921c791c7900210e6dd96e03256ea529fd1d03d 100644 ---- a/src/main/java/net/minecraft/server/level/ServerLevel.java -+++ b/src/main/java/net/minecraft/server/level/ServerLevel.java -@@ -654,12 +654,12 @@ public class ServerLevel extends Level implements WorldGenLevel { - } - } - // Paper end - optimise checkDespawn -- ProfilerFiller gameprofilerfiller = this.getProfiler(); -+ //ProfilerFiller gameprofilerfiller = this.getProfiler(); // Purpur - - this.handlingTick = true; -- gameprofilerfiller.push("world border"); -+ //gameprofilerfiller.push("world border"); // Purpur - this.getWorldBorder().tick(); -- gameprofilerfiller.popPush("weather"); -+ //gameprofilerfiller.popPush("weather"); // Purpur - this.advanceWeatherCycle(); - int i = this.getGameRules().getInt(GameRules.RULE_PLAYERS_SLEEPING_PERCENTAGE); - long j; -@@ -686,32 +686,32 @@ public class ServerLevel extends Level implements WorldGenLevel { - - this.updateSkyBrightness(); - this.tickTime(); -- gameprofilerfiller.popPush("tickPending"); -+ //gameprofilerfiller.popPush("tickPending"); // Purpur - //timings.scheduledBlocks.startTiming(); // Paper // Purpur - if (!this.isDebug()) { - j = this.getGameTime(); -- gameprofilerfiller.push("blockTicks"); -+ //gameprofilerfiller.push("blockTicks"); // Purpur - this.blockTicks.tick(j, 65536, this::tickBlock); -- gameprofilerfiller.popPush("fluidTicks"); -+ //gameprofilerfiller.popPush("fluidTicks"); // Purpur - this.fluidTicks.tick(j, 65536, this::tickFluid); -- gameprofilerfiller.pop(); -+ //gameprofilerfiller.pop(); // Purpur - } - //timings.scheduledBlocks.stopTiming(); // Paper // Purpur - -- gameprofilerfiller.popPush("raid"); -+ //gameprofilerfiller.popPush("raid"); // Purpur - //this.timings.raids.startTiming(); // Paper - timings // Purpur - this.raids.tick(); - //this.timings.raids.stopTiming(); // Paper - timings // Purpur -- gameprofilerfiller.popPush("chunkSource"); -+ //gameprofilerfiller.popPush("chunkSource"); // Purpur - //this.timings.chunkProviderTick.startTiming(); // Paper - timings // Purpur - this.getChunkSource().tick(shouldKeepTicking, true); - //this.timings.chunkProviderTick.stopTiming(); // Paper - timings // Purpur -- gameprofilerfiller.popPush("blockEvents"); -+ //gameprofilerfiller.popPush("blockEvents"); // Purpur - //timings.doSounds.startTiming(); // Spigot // Purpur - this.runBlockEvents(); - //timings.doSounds.stopTiming(); // Spigot // Purpur - this.handlingTick = false; -- gameprofilerfiller.pop(); -+ //gameprofilerfiller.pop(); // Purpur - boolean flag = true || !this.players.isEmpty() || !this.getForcedChunks().isEmpty(); // CraftBukkit - this prevents entity cleanup, other issues on servers with no players - - if (flag) { -@@ -719,12 +719,12 @@ public class ServerLevel extends Level implements WorldGenLevel { - } - - if (flag || this.emptyTime++ < 300) { -- gameprofilerfiller.push("entities"); -+ //gameprofilerfiller.push("entities"); // Purpur - //timings.tickEntities.startTiming(); // Spigot // Purpur - if (this.dragonFight != null) { -- gameprofilerfiller.push("dragonFight"); -+ //gameprofilerfiller.push("dragonFight"); // Purpur - this.dragonFight.tick(); -- gameprofilerfiller.pop(); -+ //gameprofilerfiller.pop(); // Purpur - } - - org.spigotmc.ActivationRange.activateEntities(this); // Spigot -@@ -735,9 +735,9 @@ public class ServerLevel extends Level implements WorldGenLevel { - if (false && this.shouldDiscardEntity(entity)) { // CraftBukkit - We prevent spawning in general, so this butchering is not needed - entity.discard(); - } else { -- gameprofilerfiller.push("checkDespawn"); -+ //gameprofilerfiller.push("checkDespawn"); // Purpur - entity.checkDespawn(); -- gameprofilerfiller.pop(); -+ //gameprofilerfiller.pop(); // Purpur - if (true || this.chunkSource.chunkMap.getDistanceManager().inEntityTickingRange(entity.chunkPosition().toLong())) { // Paper - now always true if in the ticking list - Entity entity1 = entity.getVehicle(); - -@@ -749,7 +749,7 @@ public class ServerLevel extends Level implements WorldGenLevel { - entity.stopRiding(); - } - -- gameprofilerfiller.push("tick"); -+ //gameprofilerfiller.push("tick"); // Purpur - // Pufferfish start - copied from this.guardEntityTick - try { - this.tickNonPassenger(entity); // Pufferfish - changed -@@ -764,22 +764,22 @@ public class ServerLevel extends Level implements WorldGenLevel { - // Paper end - } - // Pufferfish end -- gameprofilerfiller.pop(); -+ //gameprofilerfiller.pop(); // Purpur - } - } - } - }); - //timings.entityTick.stopTiming(); // Spigot // Purpur - //timings.tickEntities.stopTiming(); // Spigot // Purpur -- gameprofilerfiller.pop(); -+ //gameprofilerfiller.pop(); // Purpur - this.tickBlockEntities(); - } - -- gameprofilerfiller.push("entityManagement"); -+ //gameprofilerfiller.push("entityManagement"); // Purpur - //this.entityManager.tick(); // Paper - rewrite chunk system -- gameprofilerfiller.popPush("gameEvents"); -+ //gameprofilerfiller.popPush("gameEvents"); // Purpur - this.sendGameEvents(); -- gameprofilerfiller.pop(); -+ //gameprofilerfiller.pop(); // Purpur - } - - @Override -@@ -861,9 +861,9 @@ public class ServerLevel extends Level implements WorldGenLevel { - boolean flag = this.isRaining(); - int j = chunkcoordintpair.getMinBlockX(); - int k = chunkcoordintpair.getMinBlockZ(); -- ProfilerFiller gameprofilerfiller = this.getProfiler(); -+ //ProfilerFiller gameprofilerfiller = this.getProfiler(); // Purpur - -- gameprofilerfiller.push("thunder"); -+ //gameprofilerfiller.push("thunder"); // Purpur - final BlockPos.MutableBlockPos blockposition = this.chunkTickMutablePosition; // Paper - use mutable to reduce allocation rate, final to force compile fail on change - - if (!this.paperConfig().environment.disableThunder && flag && this.isThundering() && this.spigotConfig.thunderChance > 0 && /*this.random.nextInt(this.spigotConfig.thunderChance) == 0 &&*/ chunk.shouldDoLightning(this.random)) { // Spigot // Paper - disable thunder // Pufferfish - replace random with shouldDoLightning -@@ -895,7 +895,7 @@ public class ServerLevel extends Level implements WorldGenLevel { - } - } - -- gameprofilerfiller.popPush("iceandsnow"); -+ //gameprofilerfiller.popPush("iceandsnow"); // Purpur - if (!this.paperConfig().environment.disableIceAndSnow && (this.currentIceAndSnowTick++ & 15) == 0) { // Paper - Disable ice and snow // Paper - optimise random ticking // Pufferfish - optimize further random ticking - // Paper start - optimise chunk ticking - this.getRandomBlockPosition(j, 0, k, 15, blockposition); -@@ -931,7 +931,7 @@ public class ServerLevel extends Level implements WorldGenLevel { - } - - // Paper start - optimise random block ticking -- gameprofilerfiller.popPush("randomTick"); -+ //gameprofilerfiller.popPush("randomTick"); // Purpur - //timings.chunkTicksBlocks.startTiming(); // Paper // Purpur - if (randomTickSpeed > 0) { - LevelChunkSection[] sections = chunk.getSections(); -@@ -967,7 +967,7 @@ public class ServerLevel extends Level implements WorldGenLevel { - } - // Paper end - optimise random block ticking - //timings.chunkTicksBlocks.stopTiming(); // Paper // Purpur -- gameprofilerfiller.pop(); -+ //gameprofilerfiller.pop(); // Purpur - } - - public Optional findLightningRod(BlockPos pos) { -@@ -1263,19 +1263,19 @@ public class ServerLevel extends Level implements WorldGenLevel { - //try { // Purpur - // Paper end - timings - entity.setOldPosAndRot(); -- ProfilerFiller gameprofilerfiller = this.getProfiler(); -+ //ProfilerFiller gameprofilerfiller = this.getProfiler(); // Purpur - - ++entity.tickCount; -- this.getProfiler().push(() -> { -+ /*this.getProfiler().push(() -> { // Purpur - return Registry.ENTITY_TYPE.getKey(entity.getType()).toString(); -- }); -- gameprofilerfiller.incrementCounter("tickNonPassenger"); -+ });*/ // Purpur -+ //gameprofilerfiller.incrementCounter("tickNonPassenger"); // Purpur - if (isActive) { // Paper - EAR 2 - TimingHistory.activatedEntityTicks++; - entity.tick(); - entity.postTick(); // CraftBukkit - } else { entity.inactiveTick(); } // Paper - EAR 2 -- this.getProfiler().pop(); -+ //this.getProfiler().pop(); // Purpur - //} finally { timer.stopTiming(); } // Paper - timings // Purpur - Iterator iterator = entity.getPassengers().iterator(); - -@@ -1304,12 +1304,12 @@ public class ServerLevel extends Level implements WorldGenLevel { - // Paper end - passenger.setOldPosAndRot(); - ++passenger.tickCount; -- ProfilerFiller gameprofilerfiller = this.getProfiler(); -+ //ProfilerFiller gameprofilerfiller = this.getProfiler(); // Purpur - -- gameprofilerfiller.push(() -> { -+ /*gameprofilerfiller.push(() -> { // Purpur - return Registry.ENTITY_TYPE.getKey(passenger.getType()).toString(); -- }); -- gameprofilerfiller.incrementCounter("tickPassenger"); -+ });*/ // Purpur -+ //gameprofilerfiller.incrementCounter("tickPassenger"); // Purpur - // Paper start - EAR 2 - if (isActive) { - passenger.rideTick(); -@@ -1321,7 +1321,7 @@ public class ServerLevel extends Level implements WorldGenLevel { - vehicle.positionRider(passenger); - } - // Paper end - EAR 2 -- gameprofilerfiller.pop(); -+ //gameprofilerfiller.pop(); // Purpur - Iterator iterator = passenger.getPassengers().iterator(); - - while (iterator.hasNext()) { -diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index f6032bc75aaad33e183804a7dea5423720e2ae55..d4bebb739d8ff19a610be6775ee25ede4bce2a8c 100644 ---- a/src/main/java/net/minecraft/server/level/ServerPlayer.java -+++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java -@@ -1157,7 +1157,7 @@ public class ServerPlayer extends Player { - PortalInfo shapedetectorshape = this.findDimensionEntryPoint(worldserver); - - if (shapedetectorshape != null) { -- worldserver1.getProfiler().push("moving"); -+ //worldserver1.getProfiler().push("moving"); // Purpur - worldserver = shapedetectorshape.world; // CraftBukkit - if (worldserver == null) { } else // CraftBukkit - empty to fall through to null to event - if (resourcekey == LevelStem.OVERWORLD && worldserver.getTypeKey() == LevelStem.NETHER) { // CraftBukkit -@@ -1180,8 +1180,8 @@ public class ServerPlayer extends Player { - worldserver = ((CraftWorld) exit.getWorld()).getHandle(); - // CraftBukkit end - -- worldserver1.getProfiler().pop(); -- worldserver1.getProfiler().push("placing"); -+ //worldserver1.getProfiler().pop(); // Purpur -+ //worldserver1.getProfiler().push("placing"); // Purpur - if (true) { // CraftBukkit - this.isChangingDimension = true; // CraftBukkit - Set teleport invulnerability only if player changing worlds - -@@ -1200,7 +1200,7 @@ public class ServerPlayer extends Player { - worldserver.addDuringPortalTeleport(this); - this.connection.teleport(exit); // CraftBukkit - use internal teleport without event - this.connection.resetPosition(); // CraftBukkit - sync position after changing it (from PortalTravelAgent#findAndteleport) -- worldserver1.getProfiler().pop(); -+ //worldserver1.getProfiler().pop(); // Purpur - this.triggerDimensionChangeTriggers(worldserver1); - this.connection.send(new ClientboundPlayerAbilitiesPacket(this.getAbilities())); - playerlist.sendLevelInfo(this, worldserver); -diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index 66c89b3c3668cfc0d427bca85918dbd7fc7089af..7bdc02e997b67c4b579f226ed5ea7f1465dd8546 100644 ---- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -+++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -416,7 +416,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic - this.aboveGroundVehicleTickCount = 0; - }} // Paper - end if (valid) - -- this.server.getProfiler().push("keepAlive"); -+ //this.server.getProfiler().push("keepAlive"); // Purpur - // Paper Start - give clients a longer time to respond to pings as per pre 1.12.2 timings - // This should effectively place the keepalive handling back to "as it was" before 1.12.2 - long currentTime = Util.getMillis(); -@@ -452,7 +452,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic - } - // Paper end - -- this.server.getProfiler().pop(); -+ //this.server.getProfiler().pop(); // Purpur - // CraftBukkit start - for (int spam; (spam = this.chatSpamTickCount.get()) > 0 && !this.chatSpamTickCount.compareAndSet(spam, spam - 1); ) ; - if (tabSpamLimiter.get() > 0) tabSpamLimiter.getAndDecrement(); // Paper - split to seperate variable -diff --git a/src/main/java/net/minecraft/server/packs/resources/ResourceManagerReloadListener.java b/src/main/java/net/minecraft/server/packs/resources/ResourceManagerReloadListener.java -index 9ddbfcf80d9a381dace78a62880f85a4d767e0eb..7383c7d3820dce06108eaafd236a7c6c06a10a42 100644 ---- a/src/main/java/net/minecraft/server/packs/resources/ResourceManagerReloadListener.java -+++ b/src/main/java/net/minecraft/server/packs/resources/ResourceManagerReloadListener.java -@@ -9,11 +9,11 @@ public interface ResourceManagerReloadListener extends PreparableReloadListener - @Override - default CompletableFuture reload(PreparableReloadListener.PreparationBarrier synchronizer, ResourceManager manager, ProfilerFiller prepareProfiler, ProfilerFiller applyProfiler, Executor prepareExecutor, Executor applyExecutor) { - return synchronizer.wait(Unit.INSTANCE).thenRunAsync(() -> { -- applyProfiler.startTick(); -- applyProfiler.push("listener"); -+ //applyProfiler.startTick(); // Purpur -+ //applyProfiler.push("listener"); // Purpur - this.onResourceManagerReload(manager); -- applyProfiler.pop(); -- applyProfiler.endTick(); -+ //applyProfiler.pop(); // Purpur -+ //applyProfiler.endTick(); // Purpur - }, applyExecutor); - } - -diff --git a/src/main/java/net/minecraft/util/profiling/ActiveProfiler.java b/src/main/java/net/minecraft/util/profiling/ActiveProfiler.java -index 6d96da16f25e2359e053c45270310886e168f828..de024b88e7328c25748f59288fb7ff575fce1fdc 100644 ---- a/src/main/java/net/minecraft/util/profiling/ActiveProfiler.java -+++ b/src/main/java/net/minecraft/util/profiling/ActiveProfiler.java -@@ -55,7 +55,7 @@ public class ActiveProfiler implements ProfileCollector { - this.started = true; - this.path = ""; - this.paths.clear(); -- this.push("root"); -+ //this.push("root"); // Purpur - } - } - -@@ -64,7 +64,7 @@ public class ActiveProfiler implements ProfileCollector { - if (!this.started) { - LOGGER.error("Profiler tick already ended - missing startTick()?"); - } else { -- this.pop(); -+ //this.pop(); // Purpur - this.started = false; - if (!this.path.isEmpty()) { - LOGGER.error("Profiler tick ended before path was fully popped (remainder: '{}'). Mismatched push/pop?", LogUtils.defer(() -> { -@@ -93,7 +93,7 @@ public class ActiveProfiler implements ProfileCollector { - - @Override - public void push(Supplier locationGetter) { -- this.push(locationGetter.get()); -+ //this.push(locationGetter.get()); // Purpur - } - - @Override -@@ -132,14 +132,14 @@ public class ActiveProfiler implements ProfileCollector { - - @Override - public void popPush(String location) { -- this.pop(); -- this.push(location); -+ //this.pop(); // Purpur -+ //this.push(location); // Purpur - } - - @Override - public void popPush(Supplier locationGetter) { -- this.pop(); -- this.push(locationGetter); -+ //this.pop(); // Purpur -+ //this.push(locationGetter); // Purpur - } - - private ActiveProfiler.PathEntry getCurrentEntry() { -diff --git a/src/main/java/net/minecraft/util/profiling/ProfilerFiller.java b/src/main/java/net/minecraft/util/profiling/ProfilerFiller.java -index 5725c6593480fada65facc29664a00a8cc073512..ccb1f998ae3122d1856d77149ff7e7dffeedc71a 100644 ---- a/src/main/java/net/minecraft/util/profiling/ProfilerFiller.java -+++ b/src/main/java/net/minecraft/util/profiling/ProfilerFiller.java -@@ -6,32 +6,44 @@ import net.minecraft.util.profiling.metrics.MetricCategory; - public interface ProfilerFiller { - String ROOT = "root"; - -+ @io.papermc.paper.annotation.DoNotUse // Purpur - void startTick(); - -+ @io.papermc.paper.annotation.DoNotUse // Purpur - void endTick(); - -+ @io.papermc.paper.annotation.DoNotUse // Purpur - void push(String location); - -+ @io.papermc.paper.annotation.DoNotUse // Purpur - void push(Supplier locationGetter); - -+ @io.papermc.paper.annotation.DoNotUse // Purpur - void pop(); - -+ @io.papermc.paper.annotation.DoNotUse // Purpur - void popPush(String location); - -+ @io.papermc.paper.annotation.DoNotUse // Purpur - void popPush(Supplier locationGetter); - -+ @io.papermc.paper.annotation.DoNotUse // Purpur - void markForCharting(MetricCategory type); - -+ @io.papermc.paper.annotation.DoNotUse // Purpur - default void incrementCounter(String marker) { -- this.incrementCounter(marker, 1); -+ //this.incrementCounter(marker, 1); // Purpur - } - -+ @io.papermc.paper.annotation.DoNotUse // Purpur - void incrementCounter(String marker, int i); - -+ @io.papermc.paper.annotation.DoNotUse // Purpur - default void incrementCounter(Supplier markerGetter) { -- this.incrementCounter(markerGetter, 1); -+ //this.incrementCounter(markerGetter, 1); // Purpur - } - -+ @io.papermc.paper.annotation.DoNotUse // Purpur - void incrementCounter(Supplier markerGetter, int i); - - static ProfilerFiller tee(final ProfilerFiller a, final ProfilerFiller b) { -@@ -41,62 +53,62 @@ public interface ProfilerFiller { - return b == InactiveProfiler.INSTANCE ? a : new ProfilerFiller() { - @Override - public void startTick() { -- a.startTick(); -- b.startTick(); -+ //a.startTick(); // Purpur -+ //b.startTick(); // Purpur - } - - @Override - public void endTick() { -- a.endTick(); -- b.endTick(); -+ //a.endTick(); // Purpur -+ //b.endTick(); // Purpur - } - - @Override - public void push(String location) { -- a.push(location); -- b.push(location); -+ //a.push(location); // Purpur -+ //b.push(location); // Purpur - } - - @Override - public void push(Supplier locationGetter) { -- a.push(locationGetter); -- b.push(locationGetter); -+ //a.push(locationGetter); // Purpur -+ //b.push(locationGetter); // Purpur - } - - @Override - public void markForCharting(MetricCategory type) { -- a.markForCharting(type); -- b.markForCharting(type); -+ //a.markForCharting(type); // Purpur -+ //b.markForCharting(type); // Purpur - } - - @Override - public void pop() { -- a.pop(); -- b.pop(); -+ //a.pop(); // Purpur -+ //b.pop(); // Purpur - } - - @Override - public void popPush(String location) { -- a.popPush(location); -- b.popPush(location); -+ //a.popPush(location); // Purpur -+ //b.popPush(location); // Purpur - } - - @Override - public void popPush(Supplier locationGetter) { -- a.popPush(locationGetter); -- b.popPush(locationGetter); -+ //a.popPush(locationGetter); // Purpur -+ //b.popPush(locationGetter); // Purpur - } - - @Override - public void incrementCounter(String marker, int i) { -- a.incrementCounter(marker, i); -- b.incrementCounter(marker, i); -+ //a.incrementCounter(marker, i); // Purpur -+ //b.incrementCounter(marker, i); // Purpur - } - - @Override - public void incrementCounter(Supplier markerGetter, int i) { -- a.incrementCounter(markerGetter, i); -- b.incrementCounter(markerGetter, i); -+ //a.incrementCounter(markerGetter, i); // Purpur -+ //b.incrementCounter(markerGetter, i); // Purpur - } - }; - } -diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index bf55ce8f12650037fab0a2133cc1c047a891b5bb..0981acb2a87bb2535a0b447c4f23e14befcc81d3 100644 ---- a/src/main/java/net/minecraft/world/entity/Entity.java -+++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -822,7 +822,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { - return; - } - // Pufferfish end - entity TTL -- this.level.getProfiler().push("entityBaseTick"); -+ //this.level.getProfiler().push("entityBaseTick"); // Purpur - if (firstTick && this instanceof net.minecraft.world.entity.NeutralMob neutralMob) neutralMob.tickInitialPersistentAnger(level); // Paper - Update last hurt when ticking - this.feetBlockState = null; - if (this.isPassenger() && this.getVehicle().isRemoved()) { -@@ -883,7 +883,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { - } - - this.firstTick = false; -- this.level.getProfiler().pop(); -+ //this.level.getProfiler().pop(); // Purpur - } - - public void setSharedFlagOnFire(boolean onFire) { -@@ -1057,7 +1057,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { - } - } - -- this.level.getProfiler().push("move"); -+ //this.level.getProfiler().push("move"); // Purpur - if (this.stuckSpeedMultiplier.lengthSqr() > 1.0E-7D) { - movement = movement.multiply(this.stuckSpeedMultiplier); - this.stuckSpeedMultiplier = Vec3.ZERO; -@@ -1066,7 +1066,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { - // Paper start - ignore movement changes while inactive. - if (isTemporarilyActive && !(this instanceof ItemEntity || this instanceof net.minecraft.world.entity.vehicle.AbstractMinecart) && movement == getDeltaMovement() && movementType == MoverType.SELF) { - setDeltaMovement(Vec3.ZERO); -- this.level.getProfiler().pop(); -+ //this.level.getProfiler().pop(); // Purpur - return; - } - // Paper end -@@ -1087,8 +1087,8 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { - this.setPos(this.getX() + vec3d1.x, this.getY() + vec3d1.y, this.getZ() + vec3d1.z); - } - -- this.level.getProfiler().pop(); -- this.level.getProfiler().push("rest"); -+ //this.level.getProfiler().pop(); // Purpur -+ //this.level.getProfiler().push("rest"); // Purpur - boolean flag = !Mth.equal(movement.x, vec3d1.x); - boolean flag1 = !Mth.equal(movement.z, vec3d1.z); - -@@ -1107,7 +1107,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { - - this.checkFallDamage(vec3d1.y, this.onGround, iblockdata, blockposition); - if (this.isRemoved()) { -- this.level.getProfiler().pop(); -+ //this.level.getProfiler().pop(); // Purpur - } else { - if (this.horizontalCollision) { - Vec3 vec3d2 = this.getDeltaMovement(); -@@ -1248,7 +1248,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { - this.setRemainingFireTicks(-this.getFireImmuneTicks()); - } - -- this.level.getProfiler().pop(); -+ //this.level.getProfiler().pop(); // Purpur - } - } - // Paper start - detailed watchdog information -@@ -2917,7 +2917,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { - ServerLevel worldserver1 = minecraftserver.getLevel(resourcekey); - - if (true && !this.isPassenger() && this.portalTime++ >= i) { // CraftBukkit -- this.level.getProfiler().push("portal"); -+ //this.level.getProfiler().push("portal"); // Purpur - this.portalTime = i; - // Paper start - io.papermc.paper.event.entity.EntityPortalReadyEvent event = new io.papermc.paper.event.entity.EntityPortalReadyEvent(this.getBukkitEntity(), worldserver1 == null ? null : worldserver1.getWorld(), org.bukkit.PortalType.NETHER); -@@ -2935,7 +2935,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { - } - } // Paper - // CraftBukkit end -- this.level.getProfiler().pop(); -+ //this.level.getProfiler().pop(); // Purpur - } - - this.isInsidePortal = false; -@@ -3393,14 +3393,14 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { - } - // Paper end - if (this.level instanceof ServerLevel && !this.isRemoved()) { -- this.level.getProfiler().push("changeDimension"); -+ //this.level.getProfiler().push("changeDimension"); // Purpur - // CraftBukkit start - // this.decouple(); - if (worldserver == null) { - return null; - } - // CraftBukkit end -- this.level.getProfiler().push("reposition"); -+ //this.level.getProfiler().push("reposition"); // Purpur - PortalInfo shapedetectorshape = (location == null) ? this.findDimensionEntryPoint(worldserver) : new PortalInfo(new Vec3(location.x(), location.y(), location.z()), Vec3.ZERO, this.yRot, this.xRot, worldserver, null); // CraftBukkit - - if (shapedetectorshape == null) { -@@ -3434,7 +3434,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { - this.unRide(); - // CraftBukkit end - -- this.level.getProfiler().popPush("reloading"); -+ //this.level.getProfiler().popPush("reloading"); // Purpur - // Paper start - Change lead drop timing to prevent dupe - if (this instanceof Mob) { - ((Mob) this).dropLeash(true, true); // Paper drop lead -@@ -3457,10 +3457,10 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { - } - - this.removeAfterChangingDimensions(); -- this.level.getProfiler().pop(); -+ //this.level.getProfiler().pop(); // Purpur - ((ServerLevel) this.level).resetEmptyTime(); - worldserver.resetEmptyTime(); -- this.level.getProfiler().pop(); -+ //this.level.getProfiler().pop(); // Purpur - return entity; - } - } else { -diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index 0717f59c94f9579e05ed2938e14567be495ad1b0..45f11b6ae25a2f509b788c185dcf9cf33ef2271e 100644 ---- a/src/main/java/net/minecraft/world/entity/LivingEntity.java -+++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java -@@ -397,7 +397,7 @@ public abstract class LivingEntity extends Entity { - } - - super.baseTick(); -- this.level.getProfiler().push("livingEntityBaseTick"); -+ //this.level.getProfiler().push("livingEntityBaseTick"); // Purpur - if (this.fireImmune() || this.level.isClientSide) { - this.clearFire(); - } -@@ -501,7 +501,7 @@ public abstract class LivingEntity extends Entity { - this.yHeadRotO = this.yHeadRot; - this.yRotO = this.getYRot(); - this.xRotO = this.getXRot(); -- this.level.getProfiler().pop(); -+ //this.level.getProfiler().pop(); // Purpur - } - - public boolean canSpawnSoulSpeedParticle() { -@@ -3105,10 +3105,10 @@ public abstract class LivingEntity extends Entity { - } - - this.run += (f3 - this.run) * 0.3F; -- this.level.getProfiler().push("headTurn"); -+ //this.level.getProfiler().push("headTurn"); // Purpur - f2 = this.tickHeadTurn(f1, f2); -- this.level.getProfiler().pop(); -- this.level.getProfiler().push("rangeChecks"); -+ //this.level.getProfiler().pop(); // Purpur -+ //this.level.getProfiler().push("rangeChecks"); // Purpur - - // Paper start - stop large pitch and yaw changes from crashing the server - this.yRotO += Math.round((this.getYRot() - this.yRotO) / 360.0F) * 360.0F; -@@ -3120,7 +3120,7 @@ public abstract class LivingEntity extends Entity { - this.yHeadRotO += Math.round((this.yHeadRot - this.yHeadRotO) / 360.0F) * 360.0F; - // Paper end - -- this.level.getProfiler().pop(); -+ //this.level.getProfiler().pop(); // Purpur - this.animStep += f2; - if (this.isFallFlying()) { - ++this.fallFlyTicks; -@@ -3413,19 +3413,19 @@ public abstract class LivingEntity extends Entity { - } - - this.setDeltaMovement(d4, d5, d6); -- this.level.getProfiler().push("ai"); -+ //this.level.getProfiler().push("ai"); // Purpur - if (this.isImmobile()) { - this.jumping = false; - this.xxa = 0.0F; - this.zza = 0.0F; - } else if (this.isEffectiveAi()) { -- this.level.getProfiler().push("newAi"); -+ //this.level.getProfiler().push("newAi"); // Purpur - this.serverAiStep(); -- this.level.getProfiler().pop(); -+ //this.level.getProfiler().pop(); // Purpur - } - -- this.level.getProfiler().pop(); -- this.level.getProfiler().push("jump"); -+ //this.level.getProfiler().pop(); // Purpur -+ //this.level.getProfiler().push("jump"); // Purpur - if (this.jumping && this.isAffectedByFluids()) { - double d7; - -@@ -3452,8 +3452,8 @@ public abstract class LivingEntity extends Entity { - this.noJumpDelay = 0; - } - -- this.level.getProfiler().pop(); -- this.level.getProfiler().push("travel"); -+ //this.level.getProfiler().pop(); // Purpur -+ //this.level.getProfiler().push("travel"); // Purpur - this.xxa *= 0.98F; - this.zza *= 0.98F; - this.updateFallFlying(); -@@ -3462,8 +3462,8 @@ public abstract class LivingEntity extends Entity { - // SpigotTimings.timerEntityAIMove.startTiming(); // Spigot // Paper - this.travel(new Vec3((double) this.xxa, (double) this.yya, (double) this.zza)); - // SpigotTimings.timerEntityAIMove.stopTiming(); // Spigot // Paper -- this.level.getProfiler().pop(); -- this.level.getProfiler().push("freezing"); -+ //this.level.getProfiler().pop(); // Purpur -+ //this.level.getProfiler().push("freezing"); // Purpur - boolean flag1 = this.getType().is(EntityTypeTags.FREEZE_HURTS_EXTRA_TYPES); - int i; - -@@ -3483,15 +3483,15 @@ public abstract class LivingEntity extends Entity { - this.hurt(DamageSource.FREEZE, (float) i); - } - -- this.level.getProfiler().pop(); -- this.level.getProfiler().push("push"); -+ //this.level.getProfiler().pop(); // Purpur -+ //this.level.getProfiler().push("push"); // Purpur - if (this.autoSpinAttackTicks > 0) { - --this.autoSpinAttackTicks; - this.checkAutoSpinAttack(axisalignedbb, this.getBoundingBox()); - } - - this.pushEntities(); -- this.level.getProfiler().pop(); -+ //this.level.getProfiler().pop(); // Purpur - // Paper start - // Purpur start - if (this.xo != this.getX() || this.yo != this.getY() || this.zo != this.getZ() || this.yRotO != this.getYRot() || this.xRotO != this.getXRot()) { -diff --git a/src/main/java/net/minecraft/world/entity/Mob.java b/src/main/java/net/minecraft/world/entity/Mob.java -index 8c534ea4b461550c14c6d5ee131e5650784c2e0f..bc18c166ca776b0ef6e816eb034e410c391258b6 100644 ---- a/src/main/java/net/minecraft/world/entity/Mob.java -+++ b/src/main/java/net/minecraft/world/entity/Mob.java -@@ -332,14 +332,14 @@ public abstract class Mob extends LivingEntity { - @Override - public void baseTick() { - super.baseTick(); -- this.level.getProfiler().push("mobBaseTick"); -+ //this.level.getProfiler().push("mobBaseTick"); // Purpur - if (this.isAlive() && this.random.nextInt(1000) < this.ambientSoundTime++) { - this.resetAmbientSoundTime(); - this.playAmbientSound(); - } - - incrementTicksSinceLastInteraction(); // Purpur -- this.level.getProfiler().pop(); -+ //this.level.getProfiler().pop(); // Purpur - } - - // Purpur start -@@ -669,7 +669,7 @@ public abstract class Mob extends LivingEntity { - @Override - public void aiStep() { - super.aiStep(); -- this.level.getProfiler().push("looting"); -+ //this.level.getProfiler().push("looting"); // Purpur - if (!this.level.isClientSide && this.canPickUpLoot() && this.isAlive() && !this.dead && (this.level.purpurConfig.entitiesPickUpLootBypassMobGriefing || this.level.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING))) { - Vec3i baseblockposition = this.getPickupReach(); - List list = this.level.getEntitiesOfClass(ItemEntity.class, this.getBoundingBox().inflate((double) baseblockposition.getX(), (double) baseblockposition.getY(), (double) baseblockposition.getZ())); -@@ -689,7 +689,7 @@ public abstract class Mob extends LivingEntity { - } - } - -- this.level.getProfiler().pop(); -+ //this.level.getProfiler().pop(); // Purpur - } - - protected Vec3i getPickupReach() { -@@ -884,46 +884,46 @@ public abstract class Mob extends LivingEntity { - return; - } - // Paper end -- this.level.getProfiler().push("sensing"); -+ //this.level.getProfiler().push("sensing"); // Purpur - this.sensing.tick(); -- this.level.getProfiler().pop(); -+ //this.level.getProfiler().pop(); // Purpur - int i = this.level.getServer().getTickCount() + this.getId(); - - if (i % 2 != 0 && this.tickCount > 1) { -- this.level.getProfiler().push("targetSelector"); -+ //this.level.getProfiler().push("targetSelector"); // Purpur - if (this.targetSelector.inactiveTick(this.activatedPriority, false)) // Pufferfish - use this to alternate ticking - this.targetSelector.tickRunningGoals(false); -- this.level.getProfiler().pop(); -- this.level.getProfiler().push("goalSelector"); -+ //this.level.getProfiler().pop(); // Purpur -+ //this.level.getProfiler().push("goalSelector"); // Purpur - if (this.goalSelector.inactiveTick(this.activatedPriority, false)) // Pufferfish - use this to alternate ticking - this.goalSelector.tickRunningGoals(false); -- this.level.getProfiler().pop(); -+ //this.level.getProfiler().pop(); // Purpur - } else { -- this.level.getProfiler().push("targetSelector"); -+ //this.level.getProfiler().push("targetSelector"); // Purpur - if (this.targetSelector.inactiveTick(this.activatedPriority, false)) // Pufferfish - use this to alternate ticking - this.targetSelector.tick(); -- this.level.getProfiler().pop(); -- this.level.getProfiler().push("goalSelector"); -+ //this.level.getProfiler().pop(); // Purpur -+ //this.level.getProfiler().push("goalSelector"); // Purpur - if (this.goalSelector.inactiveTick(this.activatedPriority, false)) // Pufferfish - use this to alternate ticking - this.goalSelector.tick(); -- this.level.getProfiler().pop(); -+ //this.level.getProfiler().pop(); // Purpur - } - -- this.level.getProfiler().push("navigation"); -+ //this.level.getProfiler().push("navigation"); // Purpur - this.navigation.tick(); -- this.level.getProfiler().pop(); -- this.level.getProfiler().push("mob tick"); -+ //this.level.getProfiler().pop(); // Purpur -+ //this.level.getProfiler().push("mob tick"); // Purpur - this.customServerAiStep(); -- this.level.getProfiler().pop(); -- this.level.getProfiler().push("controls"); -- this.level.getProfiler().push("move"); -+ //this.level.getProfiler().pop(); // Purpur -+ //this.level.getProfiler().push("controls"); // Purpur -+ //this.level.getProfiler().push("move"); // Purpur - this.moveControl.tick(); -- this.level.getProfiler().popPush("look"); -+ //this.level.getProfiler().popPush("look"); // Purpur - this.lookControl.tick(); -- this.level.getProfiler().popPush("jump"); -+ //this.level.getProfiler().popPush("jump"); // Purpur - this.jumpControl.tick(); -- this.level.getProfiler().pop(); -- this.level.getProfiler().pop(); -+ //this.level.getProfiler().pop(); // Purpur -+ //this.level.getProfiler().pop(); // Purpur - this.sendDebugPackets(); - } - -diff --git a/src/main/java/net/minecraft/world/entity/ai/goal/GoalSelector.java b/src/main/java/net/minecraft/world/entity/ai/goal/GoalSelector.java -index bc3defa2c2ca0971ce3d9642a38380973a82de46..cbe957013d958d10ed6707a3785893f6856b9c3f 100644 ---- a/src/main/java/net/minecraft/world/entity/ai/goal/GoalSelector.java -+++ b/src/main/java/net/minecraft/world/entity/ai/goal/GoalSelector.java -@@ -102,8 +102,8 @@ public class GoalSelector { - } - - public void tick() { -- ProfilerFiller profilerFiller = this.profiler.get(); -- profilerFiller.push("goalCleanup"); -+ //ProfilerFiller profilerFiller = this.profiler.get(); // Purpur -+ //profilerFiller.push("goalCleanup"); // Purpur - - for(WrappedGoal wrappedGoal : this.availableGoals) { - if (wrappedGoal.isRunning() && (goalContainsAnyFlags(wrappedGoal, this.goalTypes) || !wrappedGoal.canContinueToUse())) { -@@ -120,8 +120,8 @@ public class GoalSelector { - } - } - -- profilerFiller.pop(); -- profilerFiller.push("goalUpdate"); -+ //profilerFiller.pop(); // Purpur -+ //profilerFiller.push("goalUpdate"); // Purpur - - for(WrappedGoal wrappedGoal2 : this.availableGoals) { - // Paper start -@@ -141,13 +141,13 @@ public class GoalSelector { - } - } - -- profilerFiller.pop(); -+ //profilerFiller.pop(); // Purpur - this.tickRunningGoals(true); - } - - public void tickRunningGoals(boolean tickAll) { -- ProfilerFiller profilerFiller = this.profiler.get(); -- profilerFiller.push("goalTick"); -+ //ProfilerFiller profilerFiller = this.profiler.get(); // Purpur -+ //profilerFiller.push("goalTick"); // Purpur - - for(WrappedGoal wrappedGoal : this.availableGoals) { - if (wrappedGoal.isRunning() && (tickAll || wrappedGoal.requiresUpdateEveryTick())) { -@@ -155,7 +155,7 @@ public class GoalSelector { - } - } - -- profilerFiller.pop(); -+ //profilerFiller.pop(); // Purpur - } - - public Set getAvailableGoals() { -diff --git a/src/main/java/net/minecraft/world/entity/ai/navigation/PathNavigation.java b/src/main/java/net/minecraft/world/entity/ai/navigation/PathNavigation.java -index 1d9d502e071324f50c8b7655790091c0c55263ba..2289ebc669078e8db054a0ecf7092b736bb99f12 100644 ---- a/src/main/java/net/minecraft/world/entity/ai/navigation/PathNavigation.java -+++ b/src/main/java/net/minecraft/world/entity/ai/navigation/PathNavigation.java -@@ -170,12 +170,12 @@ public abstract class PathNavigation { - } - } - // Paper end -- this.level.getProfiler().push("pathfind"); -+ //this.level.getProfiler().push("pathfind"); // Purpur - BlockPos blockPos = useHeadPos ? this.mob.blockPosition().above() : this.mob.blockPosition(); - int i = (int)(followRange + (float)range); - PathNavigationRegion pathNavigationRegion = new PathNavigationRegion(this.level, blockPos.offset(-i, -i, -i), blockPos.offset(i, i, i)); - Path path = this.pathFinder.findPath(pathNavigationRegion, this.mob, positions, followRange, distance, this.maxVisitedNodesMultiplier); -- this.level.getProfiler().pop(); -+ //this.level.getProfiler().pop(); // Purpur - if (path != null && path.getTarget() != null) { - this.targetPos = path.getTarget(); - this.reachRange = distance; -diff --git a/src/main/java/net/minecraft/world/entity/ai/sensing/Sensing.java b/src/main/java/net/minecraft/world/entity/ai/sensing/Sensing.java -index 288c6627906d07c0d223eacd84ae4eb31a349998..9babe636176da3c40598eb5bdac0919a1704eaa0 100644 ---- a/src/main/java/net/minecraft/world/entity/ai/sensing/Sensing.java -+++ b/src/main/java/net/minecraft/world/entity/ai/sensing/Sensing.java -@@ -26,9 +26,9 @@ public class Sensing { - } else if (this.unseen.contains(i)) { - return false; - } else { -- this.mob.level.getProfiler().push("hasLineOfSight"); -+ //this.mob.level.getProfiler().push("hasLineOfSight"); // Purpur - boolean bl = this.mob.hasLineOfSight(entity); -- this.mob.level.getProfiler().pop(); -+ //this.mob.level.getProfiler().pop(); // Purpur - if (bl) { - this.seen.add(i); - } else { -diff --git a/src/main/java/net/minecraft/world/entity/animal/allay/Allay.java b/src/main/java/net/minecraft/world/entity/animal/allay/Allay.java -index 28633838cb314ba59b4ff3bbdb99343d98ee66ae..499a6b84f0db4a7ad881224f445558feae4f893f 100644 ---- a/src/main/java/net/minecraft/world/entity/animal/allay/Allay.java -+++ b/src/main/java/net/minecraft/world/entity/animal/allay/Allay.java -@@ -266,13 +266,13 @@ public class Allay extends PathfinderMob implements InventoryCarrier { - private int behaviorTick = 0; // Pufferfish - @Override - protected void customServerAiStep() { -- this.level.getProfiler().push("allayBrain"); -+ //this.level.getProfiler().push("allayBrain"); // Purpur - if (this.behaviorTick++ % this.activatedPriority == 0) // Pufferfish - this.getBrain().tick((ServerLevel) this.level, this); -- this.level.getProfiler().pop(); -- this.level.getProfiler().push("allayActivityUpdate"); -+ //this.level.getProfiler().pop(); // Purpur -+ //this.level.getProfiler().push("allayActivityUpdate"); // Purpur - AllayAi.updateActivity(this); -- this.level.getProfiler().pop(); -+ //this.level.getProfiler().pop(); // Purpur - super.customServerAiStep(); - } - -diff --git a/src/main/java/net/minecraft/world/entity/animal/axolotl/Axolotl.java b/src/main/java/net/minecraft/world/entity/animal/axolotl/Axolotl.java -index b543387da275a0b3675a968b6cebf05cc227af14..2e0f340f9b339b1d772c0676e97c12f389827848 100644 ---- a/src/main/java/net/minecraft/world/entity/animal/axolotl/Axolotl.java -+++ b/src/main/java/net/minecraft/world/entity/animal/axolotl/Axolotl.java -@@ -328,13 +328,13 @@ public class Axolotl extends Animal implements LerpingModel, Bucketable { - private int behaviorTick = 0; // Pufferfish - @Override - protected void customServerAiStep() { -- this.level.getProfiler().push("axolotlBrain"); -+ //this.level.getProfiler().push("axolotlBrain"); // Purpur - if (this.behaviorTick++ % this.activatedPriority == 0) // Pufferfish - this.getBrain().tick((ServerLevel) this.level, this); -- this.level.getProfiler().pop(); -- this.level.getProfiler().push("axolotlActivityUpdate"); -+ //this.level.getProfiler().pop(); // Purpur -+ //this.level.getProfiler().push("axolotlActivityUpdate"); // Purpur - AxolotlAi.updateActivity(this); -- this.level.getProfiler().pop(); -+ //this.level.getProfiler().pop(); // Purpur - if (!this.isNoAi()) { - Optional optional = this.getBrain().getMemory(MemoryModuleType.PLAY_DEAD_TICKS); - -diff --git a/src/main/java/net/minecraft/world/entity/animal/frog/Frog.java b/src/main/java/net/minecraft/world/entity/animal/frog/Frog.java -index e739416fa58b182d7bd311be094d6aab2a7f7133..22f8db91f31be6a6d981c70e2ab94d031723ac9c 100644 ---- a/src/main/java/net/minecraft/world/entity/animal/frog/Frog.java -+++ b/src/main/java/net/minecraft/world/entity/animal/frog/Frog.java -@@ -230,13 +230,13 @@ public class Frog extends Animal { - private int behaviorTick = 0; // Pufferfish - @Override - protected void customServerAiStep() { -- this.level.getProfiler().push("frogBrain"); -+ //this.level.getProfiler().push("frogBrain"); // Purpur - if (this.behaviorTick++ % this.activatedPriority == 0) // Pufferfish - this.getBrain().tick((ServerLevel)this.level, this); -- this.level.getProfiler().pop(); -- this.level.getProfiler().push("frogActivityUpdate"); -+ //this.level.getProfiler().pop(); // Purpur -+ //this.level.getProfiler().push("frogActivityUpdate"); // Purpur - FrogAi.updateActivity(this); -- this.level.getProfiler().pop(); -+ //this.level.getProfiler().pop(); // Purpur - super.customServerAiStep(); - } - -diff --git a/src/main/java/net/minecraft/world/entity/animal/frog/Tadpole.java b/src/main/java/net/minecraft/world/entity/animal/frog/Tadpole.java -index 8561d1994cb8c42e69ef77fad16d037c205dad33..5268a56a7967275df63f5a5ddb59219904f9a3c4 100644 ---- a/src/main/java/net/minecraft/world/entity/animal/frog/Tadpole.java -+++ b/src/main/java/net/minecraft/world/entity/animal/frog/Tadpole.java -@@ -116,13 +116,13 @@ public class Tadpole extends AbstractFish { - private int behaviorTick = 0; // Pufferfish - @Override - protected void customServerAiStep() { -- this.level.getProfiler().push("tadpoleBrain"); -+ //this.level.getProfiler().push("tadpoleBrain"); // Purpur - if (this.behaviorTick++ % this.activatedPriority == 0) // Pufferfish - this.getBrain().tick((ServerLevel) this.level, this); -- this.level.getProfiler().pop(); -- this.level.getProfiler().push("tadpoleActivityUpdate"); -+ //this.level.getProfiler().pop(); // Purpur -+ //this.level.getProfiler().push("tadpoleActivityUpdate"); // Purpur - TadpoleAi.updateActivity(this); -- this.level.getProfiler().pop(); -+ //this.level.getProfiler().pop(); // Purpur - super.customServerAiStep(); - } - -diff --git a/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java b/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java -index fcbee79d3d872fe6ccf81b7ff932b86b1f9c93b4..6df25a181567021ee60ea72847459e25b9ee5b99 100644 ---- a/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java -+++ b/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java -@@ -203,13 +203,13 @@ public class Goat extends Animal { - private int behaviorTick = 0; // Pufferfish - @Override - protected void customServerAiStep() { -- this.level.getProfiler().push("goatBrain"); -+ //this.level.getProfiler().push("goatBrain"); // Purpur - if ((getRider() == null || !this.isControllable()) && this.behaviorTick++ % this.activatedPriority == 0) // Pufferfish // Purpur - only use brain if no rider - this.getBrain().tick((ServerLevel) this.level, this); -- this.level.getProfiler().pop(); -- this.level.getProfiler().push("goatActivityUpdate"); -+ //this.level.getProfiler().pop(); // Purpur -+ //this.level.getProfiler().push("goatActivityUpdate"); // Purpur - GoatAi.updateActivity(this); -- this.level.getProfiler().pop(); -+ //this.level.getProfiler().pop(); // Purpur - super.customServerAiStep(); - } - -diff --git a/src/main/java/net/minecraft/world/entity/monster/Zoglin.java b/src/main/java/net/minecraft/world/entity/monster/Zoglin.java -index 66b824ac3c24c46014d615b355a8a04e59f45e1b..cc6e65d8fd760e46f20a7bcc6aff1cc08d7ca6a9 100644 ---- a/src/main/java/net/minecraft/world/entity/monster/Zoglin.java -+++ b/src/main/java/net/minecraft/world/entity/monster/Zoglin.java -@@ -231,10 +231,10 @@ public class Zoglin extends Monster implements Enemy, HoglinBase { - - @Override - protected void customServerAiStep() { -- this.level.getProfiler().push("zoglinBrain"); -+ //this.level.getProfiler().push("zoglinBrain"); // Purpur - if (getRider() == null || !this.isControllable()) // Purpur - only use brain if no rider - this.getBrain().tick((ServerLevel)this.level, this); -- this.level.getProfiler().pop(); -+ //this.level.getProfiler().pop(); // Purpur - this.updateActivity(); - } - -diff --git a/src/main/java/net/minecraft/world/entity/monster/hoglin/Hoglin.java b/src/main/java/net/minecraft/world/entity/monster/hoglin/Hoglin.java -index 9d65b412e30f528d378de9072b48632c56c3e5bb..9ff882352b3fb69d8a8ecaf1908709761b3e9658 100644 ---- a/src/main/java/net/minecraft/world/entity/monster/hoglin/Hoglin.java -+++ b/src/main/java/net/minecraft/world/entity/monster/hoglin/Hoglin.java -@@ -166,10 +166,10 @@ public class Hoglin extends Animal implements Enemy, HoglinBase { - private int behaviorTick; // Pufferfish - @Override - protected void customServerAiStep() { -- this.level.getProfiler().push("hoglinBrain"); -+ //this.level.getProfiler().push("hoglinBrain"); // Purpur - if ((getRider() == null || !this.isControllable()) && this.behaviorTick++ % this.activatedPriority == 0) // Pufferfish // Purpur - only use brain if no rider - this.getBrain().tick((ServerLevel)this.level, this); -- this.level.getProfiler().pop(); -+ //this.level.getProfiler().pop(); // Purpur - HoglinAi.updateActivity(this); - if (this.isConverting()) { - ++this.timeInOverworld; -diff --git a/src/main/java/net/minecraft/world/entity/monster/piglin/Piglin.java b/src/main/java/net/minecraft/world/entity/monster/piglin/Piglin.java -index be060e07938e6b0a6f480e0b7b047ed16302057e..11fa67a167493bf15d85b68a0ceac36c0626e1dc 100644 ---- a/src/main/java/net/minecraft/world/entity/monster/piglin/Piglin.java -+++ b/src/main/java/net/minecraft/world/entity/monster/piglin/Piglin.java -@@ -324,10 +324,10 @@ public class Piglin extends AbstractPiglin implements CrossbowAttackMob, Invento - private int behaviorTick; // Pufferfish - @Override - protected void customServerAiStep() { -- this.level.getProfiler().push("piglinBrain"); -+ //this.level.getProfiler().push("piglinBrain"); // Purpur - if ((getRider() == null || !this.isControllable()) && this.behaviorTick++ % this.activatedPriority == 0) // Pufferfish // Purpur - only use brain if no rider - this.getBrain().tick((ServerLevel) this.level, this); -- this.level.getProfiler().pop(); -+ //this.level.getProfiler().pop(); // Purpur - PiglinAi.updateActivity(this); - super.customServerAiStep(); - } -diff --git a/src/main/java/net/minecraft/world/entity/monster/piglin/PiglinBrute.java b/src/main/java/net/minecraft/world/entity/monster/piglin/PiglinBrute.java -index 760015f7a98e70b735707c77472c084d8bd052bb..bc6572b1025d74a7590d7e1cc49132f95af0560a 100644 ---- a/src/main/java/net/minecraft/world/entity/monster/piglin/PiglinBrute.java -+++ b/src/main/java/net/minecraft/world/entity/monster/piglin/PiglinBrute.java -@@ -117,10 +117,10 @@ public class PiglinBrute extends AbstractPiglin { - - @Override - protected void customServerAiStep() { -- this.level.getProfiler().push("piglinBruteBrain"); -+ //this.level.getProfiler().push("piglinBruteBrain"); // Purpur - if (getRider() == null || this.isControllable()) // Purpur - only use brain if no rider - this.getBrain().tick((ServerLevel)this.level, this); -- this.level.getProfiler().pop(); -+ //this.level.getProfiler().pop(); // Purpur - PiglinBruteAi.updateActivity(this); - PiglinBruteAi.maybePlayActivitySound(this); - super.customServerAiStep(); -diff --git a/src/main/java/net/minecraft/world/entity/monster/warden/Warden.java b/src/main/java/net/minecraft/world/entity/monster/warden/Warden.java -index df55f9a9f684b474a3bff0977069471727b242f4..5dab2eea9e9c50e41c7971daefc3bbe819583207 100644 ---- a/src/main/java/net/minecraft/world/entity/monster/warden/Warden.java -+++ b/src/main/java/net/minecraft/world/entity/monster/warden/Warden.java -@@ -299,10 +299,10 @@ public class Warden extends Monster implements VibrationListener.VibrationListen - protected void customServerAiStep() { - ServerLevel worldserver = (ServerLevel) this.level; - -- worldserver.getProfiler().push("wardenBrain"); -+ //worldserver.getProfiler().push("wardenBrain"); // Purpur - if (this.behaviorTick++ % this.activatedPriority == 0) // Pufferfish - this.getBrain().tick(worldserver, this); -- this.level.getProfiler().pop(); -+ //this.level.getProfiler().pop(); // Purpur - super.customServerAiStep(); - if ((this.tickCount + this.getId()) % 120 == 0) { - Warden.applyDarknessAround(worldserver, this.position(), this, 20); -diff --git a/src/main/java/net/minecraft/world/entity/npc/Villager.java b/src/main/java/net/minecraft/world/entity/npc/Villager.java -index 36dedae44ae743e1a5bc170c420e0a847bcb3a50..4c98f1dc73bdce5c87f77f27507f1ed1f710243d 100644 ---- a/src/main/java/net/minecraft/world/entity/npc/Villager.java -+++ b/src/main/java/net/minecraft/world/entity/npc/Villager.java -@@ -337,7 +337,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler - @Override - protected void customServerAiStep() { mobTick(false); } - protected void mobTick(boolean inactive) { -- this.level.getProfiler().push("villagerBrain"); -+ //this.level.getProfiler().push("villagerBrain"); // Purpur - // Purpur start - if (this.level.purpurConfig.villagerLobotomizeEnabled) { - // treat as inactive if lobotomized -@@ -363,7 +363,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler - restock(); - } - // Purpur end -- this.level.getProfiler().pop(); -+ //this.level.getProfiler().pop(); // Purpur - if (this.assignProfessionWhenSpawned) { - this.assignProfessionWhenSpawned = false; - } -diff --git a/src/main/java/net/minecraft/world/level/Explosion.java b/src/main/java/net/minecraft/world/level/Explosion.java -index 31708d1e94b557896d42199aa0bc6ed26a4c6d8a..e9245a476936590f165a1e5c42515218d7572906 100644 ---- a/src/main/java/net/minecraft/world/level/Explosion.java -+++ b/src/main/java/net/minecraft/world/level/Explosion.java -@@ -366,7 +366,7 @@ public class Explosion { - if (!iblockdata.isAir() && iblockdata.isDestroyable()) { // Paper - BlockPos blockposition1 = blockposition.immutable(); - -- this.level.getProfiler().push("explosion_blocks"); -+ //this.level.getProfiler().push("explosion_blocks"); // Purpur - if (block.dropFromExplosion(this)) { - Level world = this.level; - -@@ -388,7 +388,7 @@ public class Explosion { - - this.level.setBlock(blockposition, Blocks.AIR.defaultBlockState(), 3); - block.wasExploded(this.level, blockposition, this); -- this.level.getProfiler().pop(); -+ //this.level.getProfiler().pop(); // Purpur - } - } - -diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java -index 5e3acd365d9aca4271a590564e3eaad0d268bf11..0bb14272d024af90e7aef40f2f694e184af607d3 100644 ---- a/src/main/java/net/minecraft/world/level/Level.java -+++ b/src/main/java/net/minecraft/world/level/Level.java -@@ -712,9 +712,9 @@ public abstract class Level implements LevelAccessor, AutoCloseable { - BlockState iblockdata2 = this.getBlockState(pos); - - if ((flags & 128) == 0 && iblockdata2 != iblockdata1 && (iblockdata2.getLightBlock(this, pos) != iblockdata1.getLightBlock(this, pos) || iblockdata2.getLightEmission() != iblockdata1.getLightEmission() || iblockdata2.useShapeForLightOcclusion() || iblockdata1.useShapeForLightOcclusion())) { -- this.getProfiler().push("queueCheckLight"); -+ //this.getProfiler().push("queueCheckLight"); // Purpur - this.getChunkSource().getLightEngine().checkBlock(pos); -- this.getProfiler().pop(); -+ //this.getProfiler().pop(); // Purpur - } - - /* -@@ -991,9 +991,9 @@ public abstract class Level implements LevelAccessor, AutoCloseable { - } - - protected void tickBlockEntities() { -- ProfilerFiller gameprofilerfiller = this.getProfiler(); -+ //ProfilerFiller gameprofilerfiller = this.getProfiler(); // Purpur - -- gameprofilerfiller.push("blockEntities"); -+ //gameprofilerfiller.push("blockEntities"); // Purpur - //timings.tileEntityPending.startTiming(); // Spigot // Purpur - this.tickingBlockEntities = true; - if (!this.pendingBlockEntityTickers.isEmpty()) { -@@ -1038,7 +1038,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable { - //timings.tileEntityTick.stopTiming(); // Spigot // Purpur - this.tickingBlockEntities = false; - co.aikar.timings.TimingHistory.tileEntityTicks += this.blockEntityTickers.size(); // Paper -- gameprofilerfiller.pop(); -+ //gameprofilerfiller.pop(); // Purpur - spigotConfig.currentPrimedTnt = 0; // Spigot - } - -@@ -1199,7 +1199,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable { - - @Override - public List getEntities(@Nullable Entity except, AABB box, Predicate predicate) { -- this.getProfiler().incrementCounter("getEntities"); -+ //this.getProfiler().incrementCounter("getEntities"); // Purpur - List list = Lists.newArrayList(); - ((ServerLevel)this).getEntityLookup().getEntities(except, box, list, predicate); // Paper - optimise this call - return list; -@@ -1207,7 +1207,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable { - - @Override - public List getEntities(EntityTypeTest filter, AABB box, Predicate predicate) { -- this.getProfiler().incrementCounter("getEntities"); -+ //this.getProfiler().incrementCounter("getEntities"); // Purpur - List list = Lists.newArrayList(); - - // Paper start - optimise this call -@@ -1538,7 +1538,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable { - } - - public ProfilerFiller getProfiler() { -- if (gg.pufferfish.pufferfish.PufferfishConfig.disableMethodProfiler) return net.minecraft.util.profiling.InactiveProfiler.INSTANCE; // Pufferfish -+ if (true || gg.pufferfish.pufferfish.PufferfishConfig.disableMethodProfiler) return net.minecraft.util.profiling.InactiveProfiler.INSTANCE; // Pufferfish // Purpur - return (ProfilerFiller) this.profiler.get(); - } - -diff --git a/src/main/java/net/minecraft/world/level/NaturalSpawner.java b/src/main/java/net/minecraft/world/level/NaturalSpawner.java -index 2d19db940d4f1624631cec29547e88842a4cfb98..5b5c18f70a989da6bff77485692a4ceef9a6f08d 100644 ---- a/src/main/java/net/minecraft/world/level/NaturalSpawner.java -+++ b/src/main/java/net/minecraft/world/level/NaturalSpawner.java -@@ -131,7 +131,7 @@ public final class NaturalSpawner { - } - - public static void spawnForChunk(ServerLevel world, LevelChunk chunk, NaturalSpawner.SpawnState info, boolean spawnAnimals, boolean spawnMonsters, boolean rareSpawn) { -- world.getProfiler().push("spawner"); -+ //world.getProfiler().push("spawner"); // Purpur - //world.timings.mobSpawn.startTiming(); // Spigot // Purpur - MobCategory[] aenumcreaturetype = NaturalSpawner.SPAWNING_CATEGORIES; - int i = aenumcreaturetype.length; -@@ -188,7 +188,7 @@ public final class NaturalSpawner { - } - - //world.timings.mobSpawn.stopTiming(); // Spigot // Purpur -- world.getProfiler().pop(); -+ //world.getProfiler().pop(); // Purpur - } - - // Paper start -diff --git a/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java b/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java -index 772a2dc21071a3f687b51fbddf9f12a90d41ce79..2877441927de3aeba28f5c3dd876e2ae4c15797c 100644 ---- a/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java -+++ b/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java -@@ -1309,9 +1309,9 @@ public class LevelChunk extends ChunkAccess { - - if (LevelChunk.this.isTicking(blockposition)) { - try { -- ProfilerFiller gameprofilerfiller = LevelChunk.this.level.getProfiler(); -+ //ProfilerFiller gameprofilerfiller = LevelChunk.this.level.getProfiler(); // Purpur - -- gameprofilerfiller.push(this::getType); -+ //gameprofilerfiller.push(this::getType); // Purpur - //this.blockEntity.tickTimer.startTiming(); // Spigot // Purpur - BlockState iblockdata = LevelChunk.this.getBlockState(blockposition); - -@@ -1323,7 +1323,7 @@ public class LevelChunk extends ChunkAccess { - LevelChunk.LOGGER.warn("Block entity {} @ {} state {} invalid for ticking:", new Object[]{LogUtils.defer(this::getType), LogUtils.defer(this::getPos), iblockdata}); - } - -- gameprofilerfiller.pop(); -+ //gameprofilerfiller.pop(); // Purpur - } catch (Throwable throwable) { - if (throwable instanceof ThreadDeath) throw throwable; // Paper - // Paper start - Prevent tile entity and entity crashes -diff --git a/src/main/java/net/minecraft/world/level/pathfinder/PathFinder.java b/src/main/java/net/minecraft/world/level/pathfinder/PathFinder.java -index d23481453717f715124156b5d83f6448f720d049..a8af51a25b0f99c3a64d9150fdfcd6b818aa7581 100644 ---- a/src/main/java/net/minecraft/world/level/pathfinder/PathFinder.java -+++ b/src/main/java/net/minecraft/world/level/pathfinder/PathFinder.java -@@ -53,8 +53,8 @@ public class PathFinder { - @Nullable - // Paper start - optimize collection - private Path findPath(ProfilerFiller profiler, Node startNode, List> positions, float followRange, int distance, float rangeMultiplier) { -- profiler.push("find_path"); -- profiler.markForCharting(MetricCategory.PATH_FINDING); -+ //profiler.push("find_path"); // Purpur -+ //profiler.markForCharting(MetricCategory.PATH_FINDING); // Purpur - // Set set = positions.keySet(); - startNode.g = 0.0F; - startNode.h = this.getBestH(startNode, positions); // Paper - optimize collection -diff --git a/src/main/java/net/minecraft/world/ticks/LevelTicks.java b/src/main/java/net/minecraft/world/ticks/LevelTicks.java -index 7f1ac2cb29eb84833c0895442d611dfa0504527e..5dea8414964e0d2d1fb15a6baa27227e9722bfc7 100644 ---- a/src/main/java/net/minecraft/world/ticks/LevelTicks.java -+++ b/src/main/java/net/minecraft/world/ticks/LevelTicks.java -@@ -86,20 +86,20 @@ public class LevelTicks implements LevelTickAccess { - } - - public void tick(long time, int maxTicks, BiConsumer ticker) { -- ProfilerFiller profilerFiller = this.profiler.get(); -- profilerFiller.push("collect"); -- this.collectTicks(time, maxTicks, profilerFiller); -- profilerFiller.popPush("run"); -- profilerFiller.incrementCounter("ticksToRun", this.toRunThisTick.size()); -+ //ProfilerFiller profilerFiller = this.profiler.get(); // Purpur -+ //profilerFiller.push("collect"); // Purpur -+ this.collectTicks(time, maxTicks, null); // Purpur -+ //profilerFiller.popPush("run"); // Purpur -+ //profilerFiller.incrementCounter("ticksToRun", this.toRunThisTick.size()); // Purpur - this.runCollectedTicks(ticker); -- profilerFiller.popPush("cleanup"); -+ //profilerFiller.popPush("cleanup"); // Purpur - this.cleanupAfterTick(); -- profilerFiller.pop(); -+ //profilerFiller.pop(); // Purpur - } - - private void collectTicks(long time, int maxTicks, ProfilerFiller profiler) { - this.sortContainersToTick(time); -- profiler.incrementCounter("containersToTick", this.containersToTick.size()); -+ //profiler.incrementCounter("containersToTick", this.containersToTick.size()); // Purpur - this.drainContainers(time, maxTicks); - this.rescheduleLeftoverContainers(); - }