Skip to content

Release 6 - 2nd Anniverary

Compare
Choose a tag to compare
@drakewill-CRL drakewill-CRL released this 13 Aug 12:53
· 585 commits to master since this release

Release 6 is largely a quality-of-life improvement for the server, shortening the amount of code that needs written to do common things. Several of these additions are things I realized I need as I worked on my own game built around the server. This is also the end of the 2nd year of development on PraxisMapper!

  • Added .PickOneRandom() extension methods to Lists and ICollections in PraxisCore for convenience in plugins.
  • Added .ToPoint() extension on GeoArea, to get an NTS Point at the center of a PlusCode.
    • Added extension methods to make it faster (for developers) to save or load data. Can use .ToJsonByteArray() on anything when saving and then use .FromJsonTo<T>() after loading data from GenericData endpoints. Other helpers for some cases where casting straight to JSON were also added.
  • Moved DELETE /Server/Player to DELETE /Sever/Account, includes auth data entry now.
  • Plugins can now have a class implement IPraxisStartup, to have a static Startup() method run once when the plugin is loaded. Useful for setting up values that need calculated or loaded once or any other prepwork a plugin might need.
  • Pluigns have been moved to the /plugins folder, reducing startup times.
  • Can now select a random point inside the server's boundaries through Place.RandomPoint() or /Server/RandomPoint.
  • GenericData can now search all player's data for a specific key. Intended for things like leaderboards.
  • GenericData calls can now automatically serialize an object to JSON before saving, and can deserialize JSON to an object automatically. Cuts down on how much typing is needed for saving and loading complex objects.
  • Data/Terrain and Data/Terrain/All can now search on any style set to process results. Useful for in-game terrain types versus OSM map tag terrains.
  • Creating an account on the server automatically creates a 'password' entry for the user with an auto-assigned internal password by the core server instead of expecting plugins to do it.
  • GenericData.GetInternalPassword() added, primarily to be used by PraxisAuthentication on login.
  • Added a new GetPaintOps method that calls TagParser to determine the style on each element, instead of using game element name.
  • IsInBounds() can now have a single member set and have that always checked against for convenience.
  • ImageStats now has a constructor with a single PlusCode string as a parameter.
  • Points are now drawn automatically on the map based on the size of the image for ImageStats constructors. Default can still be overridden after creating the ImageStats object.
  • Other small bugfixes and security improvements.