Uploaded image for project: 'Spigot'
  1. Spigot
  2. SPIGOT-6973

Setting biome calls String#intern for every biome placed

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Fixed
    • Icon: Minor Minor
    • None
    • None
    • None
    • Win10, 5900X

    •  3464-Spigot-ffceeae-e9f972d (MC: 1.18.2)
    • Yes

      Setting biomes using World#setBiome, delegating to CraftWorld#setBiome will create a new ResourceKey every time a biome is set, using String#intern on the biome ID obtained from the bukkit biome, to convert it to an internal BiomeBase. This is an extremely resource-costly method and setting relatively small regions of biome (in this example a 91x91x384 region) can have a massive performance impact on the server.

      PlotSquared uses a chunk-by-chunk approach that attempts to place a chunk at a time, without overloading the server, however the repeated use of String#intern overloads the server very quickly leading to very high tick times when biomes are being placed.

      Timings: https://timings.spigotmc.org/?url=alalexubuc
      Spark profile: https://spark.lucko.me/60E2fYza9B

            Unassigned Unassigned
            dordsor21 dordsor
            Votes:
            1 Vote for this issue
            Watchers:
            2 Start watching this issue

              Created:
              Updated:
              Resolved: