3,978 Commits over 1,035 Days - 0.16cph!
Final fix for premium status not deserializing properly
merge from premium_servers -> main
Initial refresh premium status 60s after launch to reduce worst case players waiting 10m before seeing their initial premium status
Print out content as warning if HTTP request fails and slight cleanup
Switch PremiumStatusResult from struct -> class because it seems IL2CPP can't deserialize JSON into a struct
merge from premium_servers -> main
Cherrpick rest of commits from `manual_refresh` -> `premium_servers` after the merge from main (so we don't take staging updates onto `premium_servers`)
merge from manual_refresh -> premium_servers (before the merge from main)
Show "Error" when manually refreshing premium status if the API threw an error instead of `$0/$0`
Don't update the local premium status from manual refresh if it threw an error
Ensure premium status is always saved to registry when it's changed
Fix manual refresh only showing the new status in the UI but not updating the premium status across the whole client
Update premium modal prefab
Add blue refresh button style
Add manual refresh button code to premium modal
Implement route to manually refresh premium status
merge from fix_spawnitem_ownership -> main
Fix item ownership not applying when using `spawnitem` command
merge from ownership_barrel_fix -> main
Fix item ownership not applying to items from barrels
merge from ranking_change -> premium_servers
Update server browser menu prefab
Only prioritize official premium servers, leave community servers to sort normally regardless of premium status
Fix NRE causing players to get kicked when they loot an empty loot container in primitive
Add `loadclipboard` and `saveclipboard` commands
Allow `copybox`, `copyradius`, `copybuilding` and `paste` to skip name parameter to act like it's using a clipboard by using the filename `clipboard`
Remove duplicate attempts to load ItemDefinition in Item.Load() to a single attempt
Move check for invalid ItemDefinition to the top of Item.Load() instead of halfway through it
▍▄█ ▆█▌▇▅ ▋▋▋█▋▌█ ▊▍▉▋██ ▋▍▌▉ ▆▆▊▇▉▉█ ▇▌█▇▌▅▄▌ ▆▉▉▉▊▇█ ▍▋▅▆█▄▌ ▆▆ ▅▊▊▅▉▋▋ ▆▅▆ ▄▍█▅▌▌ █▍▆ ▍▅▇ ▅▆▋▇▌▆
merge from fix_item_ownership_nre -> main
Fix NRE from Item.Load() method feeding in null ItemDefinition
Prevent other item ownership methods from throwing exception (instead pass empty string)
merge from fix_copy_radius -> main
Fix copyradius not working after moving clientside
Add tests to confirm it converts generic names properly
Fix TypeNameCache having a typo in the regex that converts List`1[int] -> List<int>
merge from fix_ownership_scientist -> main
Fix scientist corpses not assigning item ownership
merge from fix_ownership_giveall -> main
Fix `giveall` saying the player who recieved the item is the player who spawned the item, not the admin who ran the command
Ensure item ownership names are fed through steam's chat filter so vulgar names are filtered if you have steam chat filtering enabled
merge from fix_copy_paste_global -> main
Fix copy paste not working on procgen maps because the copy_paste entity wasn't set to global network
Instead try fixing compile errors by switching to LogWarning() on client
merge from premium_servers -> main
Hide current inventory value (since we don't have that exposed in API yet) and shift "Not Active" text over to compensate
merge from premium-servers-ui-tweaks -> premium_servers
Hide logging behind `log_premium_status` convar
Add PremiumClientCache
- stores last premium result in PlayerPref so it will show last result if web api has issues
- queries web api every 10min to recheck premium status
- switch from convars to check premium to using web api
- add convar `qualify_premium_override` to manually override whether you qualify for premium on the client
- add convar `recheck_premium` to manually refresh premium status
` add convar `premium_refresh_interval` to control how often client checks premium api (default 10min)
Refactor `CheckIfPlayerIsPremium()` so it can be called from both server and client
- don't print errors on client since it will cause a kick
- return struct instead of bool so can get the string message we want to reject connection attempt with
merge from main -> premium_servers
merge from fix_itemodswap_outofrange -> main