Jump to content
  • v1.18.2-rc.3/rc.4 Lore Update: The Resonance Archives - server perf tweaks ctd.


    Dear Extraordinary Survivalists
    v1.18.2-rc.3 & rc.4, a unstable release, can now be downloaded through the account manager (section "Other Goodies").

    [Edit:] Also release rc.4 to fix a multiplayer crash issue and add some missing localization.

    This update focusses some more on server performance and should fix one or two significant issues introduced in rc.1 / 2.

    "winter hunting", shared by outlaw#9502 on discord

    Game updates

    • Tweak: Added ability for server owners to blacklist client side mods. Add "ModIdBlackList": ["modid1","modid2"], to server config.
    • Tweak: Further performance tweaks for large numbers of entities / large numbers of item drops.  Cumulatively these approximately half the overall amount of time per tick spent on ticking entities:
      • Entity ticking: improve dropped items and other passive entities (details: these now use a CachingCollisionTester as well, and various minor tweaks)
      • Entity ticking: significant reduction in tick time for dropped items
      • Significant reduction in server tick time when large numbers of entities (e.g item drops) have to be despawned
      • Entity AI ticking: no performance drop when large numbers of dropped items are nearby creatures
      • Entity AI ticking: improvement to task-startexecute-idle and task-startexecute-stayclosetoentity
      • Entity ticking: reduce general ticking overhead (~3-10ms average for 10k entities on average hardware, occasionally more)
      • Entity ticking: greatly reduce time for behavior-timeddespawn and behavior-floatupwhenstuck
      • Entity physics: improvements in locomotors (details: refactor EntityPlayer-only code into a new locomotor PlayerEntityInAir)
      • Entity physics: Stats "walkspeed" checks are now checked only by player entities
    • Tweak: Despawn time of dropped items can now be reduced by editing the asset file item.json without affecting the timer for dropped items during player death (the timer for dropped items on death is now hardcoded to 10 minutes)
    • Tweak: Added missing English-language localizations for the trait names and various aged chests
    • Tweak: Added new localization keys for gamemode settings, seed growth in days, beehive population size, lantern linings, and various hotkeys
    • Tweak: Mouse scroll on number input fields works now in the same direction as the buttons (up = Turn the wheel upward (away from you) => increases the number)
    • Fixed: Number input fields could mess up the output when using mouse scroll + (SHIFT/CTRL)
    • Fixed: Client-side trader dialogue crashes in 1.18.2-rc1 and rc2
    • Fixed: Client-side crashes for some players joining multiplayer after other players are already present on the server, in 1.18.2-rc3
    • Fixed: Very rare crash with charcoal and other art pigments in hand
    • Fixed: Handbook links to Display Cases now work (link shown on items which can be stored in Display Cases)
    • Api Tweak: Added onshelfTransform to '.tfedit' for the Shelf and Bookshelfs
    • Api Tweak: Display case, shelf, bookshelf, ground storage, tool/mold rack now update live when editing in the transform editor
    • Api Tweak: When switching tabs in tfedit the applied transforms are now reset: only clicking Close & Apply retains the changes
    • Api Technical notes for code modders (1):   For performance, the EntityPartitioning system now holds only Interactable entities in partitions.  GetNearestEntity() and WalkEntities() deprecated and replaced with GetNearestInteractableEntity() and WalkInteractableEntities() to make this clear.  Player GameMode or NoClip changes therefore now require the EntityPlayer's partition be updated because its IsInteractable state may have changed, for example if the mode was changed to / from Spectator mode.  Changes to GameMode settings therefore now have to call EntityPlayer.UpdatePartitioning().  If your mod creates an entity whose IsInteractable status depends on the entity's current properties then you may need to implement a similar method in your entity, when those properties change.
    • Api Technical notes for code modders (2):  server.LoadedEntities is now a CachingConcurrentDictionary instead of a ConcurrentDictionary and is now marked internal, not intended to be directly accessed by mods.  If your code directly accesses server.LoadedEntities (unlikely) then you may need to recompile your code for 1.18.2-rc3.  In any case we recommend not accessing server fields directly, instead use the API, specifically IServerWorldAccessor.LoadedEntities.   There is no API change.  Mods which are already using the API as intended should be unaffected and will not need to recompile.  For more details see the updated XML documentation for IServerWorldAccessor.LoadedEntities.  An example of intended use of the API by mods to access the loaded entities, this example code will still work and is unaffected by the change discussed here: 
              ICollection<Entity> entities;
              if (api.Side == EnumAppSide.Server) entities = (api as ICoreServerAPI).World.LoadedEntities.Values;
              else entities = (api as ICoreClientAPI).World.LoadedEntities.Values;
    • Api Technical notes for code modders (3):  "walkspeed" stats relate to the armor and character class changes to a player's walking speed.  If your coded mod uses Entity.Stats "walkspeed" for a non-player entity, for example NPCs, you might need to make changes similar to the code changes to EntityPlayer in this update.  For example override Entity.GetWalkSpeedMultiplier in your entity.  Example code:

              public override double GetWalkSpeedMultiplier(double groundDragFactor = 0.3)
                  double mul = base.GetWalkSpeedMultiplier(groundDragFactor);
                  mul *= Stats.GetBlended("walkspeed");
                  return mul;


    • Like 5
    • Cookie time 2
    • Sad 1
    • Thanks 4

  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.