Spigot Timings
Overhauls the Timings System adding performance tracking all around the Minecraft Server By: Aikar <aikar@aikar.co>
This commit is contained in:
@@ -188,10 +188,14 @@
|
||||
if (tileentity != null) {
|
||||
Level world = this.level;
|
||||
|
||||
@@ -553,6 +582,57 @@
|
||||
|
||||
}
|
||||
|
||||
@@ -549,10 +578,61 @@
|
||||
if (this.postLoad != null) {
|
||||
this.postLoad.run(this);
|
||||
this.postLoad = null;
|
||||
+ }
|
||||
+
|
||||
+ }
|
||||
+
|
||||
+ // CraftBukkit start
|
||||
+ public void loadCallback() {
|
||||
+ org.bukkit.Server server = this.level.getCraftServer();
|
||||
@@ -225,9 +229,9 @@
|
||||
+ }
|
||||
+ server.getPluginManager().callEvent(new org.bukkit.event.world.ChunkPopulateEvent(bukkitChunk));
|
||||
+ }
|
||||
+ }
|
||||
}
|
||||
+ }
|
||||
+
|
||||
|
||||
+ public void unloadCallback() {
|
||||
+ org.bukkit.Server server = this.level.getCraftServer();
|
||||
+ org.bukkit.Chunk bukkitChunk = new org.bukkit.craftbukkit.CraftChunk(this);
|
||||
@@ -235,8 +239,8 @@
|
||||
+ server.getPluginManager().callEvent(unloadEvent);
|
||||
+ // note: saving can be prevented, but not forced if no saving is actually required
|
||||
+ this.mustNotSave = !unloadEvent.isSaveChunk();
|
||||
+ }
|
||||
+
|
||||
}
|
||||
|
||||
+ @Override
|
||||
+ public boolean isUnsaved() {
|
||||
+ return super.isUnsaved() && !this.mustNotSave;
|
||||
@@ -264,3 +268,22 @@
|
||||
this.ticker = blockentityticker;
|
||||
}
|
||||
|
||||
@@ -855,6 +935,7 @@
|
||||
ProfilerFiller gameprofilerfiller = Profiler.get();
|
||||
|
||||
gameprofilerfiller.push(this::getType);
|
||||
+ this.blockEntity.tickTimer.startTiming(); // Spigot
|
||||
BlockState iblockdata = LevelChunk.this.getBlockState(blockposition);
|
||||
|
||||
if (this.blockEntity.getType().isValid(iblockdata)) {
|
||||
@@ -872,6 +953,10 @@
|
||||
|
||||
this.blockEntity.fillCrashReportCategory(crashreportsystemdetails);
|
||||
throw new ReportedException(crashreport);
|
||||
+ // Spigot start
|
||||
+ } finally {
|
||||
+ this.blockEntity.tickTimer.stopTiming();
|
||||
+ // Spigot end
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -132,7 +132,31 @@
|
||||
return nbttagcompound;
|
||||
}
|
||||
|
||||
@@ -623,6 +649,12 @@
|
||||
@@ -550,12 +576,15 @@
|
||||
@Nullable
|
||||
private static LevelChunk.PostLoadProcessor postLoadChunk(ServerLevel world, List<CompoundTag> entities, List<CompoundTag> blockEntities) {
|
||||
return entities.isEmpty() && blockEntities.isEmpty() ? null : (chunk) -> {
|
||||
+ world.timings.syncChunkLoadEntitiesTimer.startTiming(); // Spigot
|
||||
if (!entities.isEmpty()) {
|
||||
world.addLegacyChunkEntities(EntityType.loadEntitiesRecursive(entities, world, EntitySpawnReason.LOAD));
|
||||
}
|
||||
+ world.timings.syncChunkLoadEntitiesTimer.stopTiming(); // Spigot
|
||||
|
||||
Iterator iterator = blockEntities.iterator();
|
||||
|
||||
+ world.timings.syncChunkLoadTileEntitiesTimer.startTiming(); // Spigot
|
||||
while (iterator.hasNext()) {
|
||||
CompoundTag nbttagcompound = (CompoundTag) iterator.next();
|
||||
boolean flag = nbttagcompound.getBoolean("keepPacked");
|
||||
@@ -571,6 +600,7 @@
|
||||
}
|
||||
}
|
||||
}
|
||||
+ world.timings.syncChunkLoadTileEntitiesTimer.stopTiming(); // Spigot
|
||||
|
||||
};
|
||||
}
|
||||
@@ -623,6 +653,12 @@
|
||||
StructureStart structurestart = StructureStart.loadStaticStart(context, nbttagcompound1.getCompound(s), worldSeed);
|
||||
|
||||
if (structurestart != null) {
|
||||
|
||||
Reference in New Issue
Block a user