Closed Artuto closed 3 years ago
I would be pretty surprised if that's actually slowing anything down, but... yeah Citizens in 1.16.x should not be operating with 1.12-era data (this is probably only there at all because Citizens still theoretically supports all the way back to MC 1.8, which tends to leave a lot of weird messes in the code like that one) https://github.com/CitizensDev/CitizensAPI/blob/e772f57f83ca16d2e771613cd05026de6728eafd/src/main/java/net/citizensnpcs/api/util/ItemStorage.java#L356-L358
EDIT: Apparently loading the legacy handler really does take a few seconds at startup, which... wtf, spigot.
I assume it takes a while because it has to load all the conversions. In the exception I sent it took about 7 seconds
(That loading should take a matter of milliseconds at worst ... Spigot did something weird)
This should be fixed by https://github.com/CitizensDev/CitizensAPI/commit/5658d91266012aa491af59cb2942005090fa6d7e https://github.com/CitizensDev/CitizensAPI/commit/2676e358021f81c9308606be926e0df71f826d17 for build 2268+ from https://ci.citizensnpcs.co/job/Citizens2/
After updating to Citizens version 2.0.27-SNAPSHOT (build 2268)
I'm afraid it is still happening:
[22:23:57 WARN]: Initializing Legacy Material Support. Unless you have legacy plugins and/or data this is a bug!
[22:23:57 WARN]: java.lang.Exception
[22:23:57 WARN]: at org.bukkit.craftbukkit.v1_16_R3.legacy.CraftLegacy.<clinit>(CraftLegacy.java:259)
[22:23:57 WARN]: at org.bukkit.craftbukkit.v1_16_R3.util.CraftMagicNumbers.toLegacy(CraftMagicNumbers.java:192)
[22:23:57 WARN]: at org.bukkit.inventory.ItemStack.getData(ItemStack.java:176)
[22:23:57 WARN]: at net.citizensnpcs.api.util.ItemStorage.loadItemStack(ItemStorage.java:326)
[22:23:57 WARN]: at net.citizensnpcs.api.trait.trait.Inventory.parseContents(Inventory.java:127)
[22:23:57 WARN]: at net.citizensnpcs.api.trait.trait.Inventory.load(Inventory.java:81)
[22:23:57 WARN]: at net.citizensnpcs.api.npc.AbstractNPC.loadTrait(AbstractNPC.java:328)
[22:23:57 WARN]: at net.citizensnpcs.api.npc.AbstractNPC.load(AbstractNPC.java:322)
[22:23:57 WARN]: at net.citizensnpcs.npc.CitizensNPC.load(CitizensNPC.java:157)
[22:23:57 WARN]: at net.citizensnpcs.api.npc.SimpleNPCDataStore.loadInto(SimpleNPCDataStore.java:59)
[22:23:57 WARN]: at net.citizensnpcs.Citizens$CitizensLoadTask.run(Citizens.java:501)
[22:23:57 WARN]: at org.bukkit.craftbukkit.v1_16_R3.scheduler.CraftTask.run(CraftTask.java:100)
[22:23:57 WARN]: at org.bukkit.craftbukkit.v1_16_R3.scheduler.CraftScheduler.mainThreadHeartbeat(CraftScheduler.java:468)
[22:23:57 WARN]: at net.minecraft.server.v1_16_R3.MinecraftServer.w(MinecraftServer.java:947)
[22:23:57 WARN]: at net.minecraft.server.v1_16_R3.MinecraftServer.lambda$a$0(MinecraftServer.java:175)
[22:23:57 WARN]: at java.base/java.lang.Thread.run(Thread.java:834
That might just be old data still present - ie at next restart it won't appear again
Server boot is getting slowed down by Citizen's usage of Legacy Material.
How to reproduce:
The result will be this warning that gives a convenient exception to track who is using Legacy Materials:
The output of command
/version
on my server is: This server is running Paper version git-Paper-467 (MC: 1.16.5) (Implementing API version 1.16.5-R0.1-SNAPSHOT) The output of command/version citizens
on my server is: Citizens version 2.0.27-SNAPSHOT (build 2260)