- Fixed draw distance not working properly (#23)
- Removed broken community playlists. GG-Radio has been taken offline.
- Fixed Noise-fm playlist
- Fixed stream title output
- Fixed songs ending with "sound stopped" on song switch
- Radios owned by admins will allow all URLs as admins are a trusted sources of media. ConVar: `sv_streamradio_url_whitelist_trust_admin_radios 0/1`, Enabled by default.
- Fixed Lua errors:
- `lua/streamradio_core/tool.lua:480: attempt to call method 'GetMode' (a nil value)`
- `lua/entities/base_streamradio.lua:486: attempt to index upvalue 'LIBUtil' (a nil value)`
- Fixed global scope pollution
- Some code clean up and new glualint config
- Added a new GUI skin preset called "Stream Original"
- Updated help and description texts to reflect the latest changes. Spelling and grammar fixes.
- Added info buttons and new options to admin panel
- Updated help links in whitelisting errors
- CFC Whitelist and built-in whitelist logic are completely separated now
- Added ConVar `sv_streamradio_url_whitelist_enable_on_cfcwhitelist`. Built-in whitelist is disabled by default if CFC Whitelist is installed to improve radio usability. Use added ConVar to change this behavior. It's safe to change.
- Fixed "stopsounds" concommand not working on radios.
- Added GUI cases and controls to resume radios stopped by "stopsounds".
- Added context menu options for resuming radios stopped by "stopsounds".
- Improved Dropbox support with CFC HTTP Whitelist.
- Improved URL checks for addon's whitelist.
- Improved URL checks for CFC HTTP Whitelist.
- Improved rendering performance of GUIs a bit..
- Refactored auto converters for URLs and removed dead YouTube code.
- Added max age of files (7 days) to the cache system. Older cache files are deleted.
- Moved the file cache location to "cache-sv" and "cache-cl" for server/client. The old cache directory is wiped.
- Added Stream URL whitelisting:
- It is on by default, even for existing installs.
- Can be changed in admin panel or via console `sv_streamradio_url_whitelist_enable 1/0`. Although, it is not recommended to turn it off.
- Clients will ask the server if a URL is good. If it isn't, any attempt to play from it will result in error 1000 (`STREAM_ERROR_URL_NOT_WHITELISTED`). This will prevent radio abuse such as IP graping and other malicious intends. You can ask an admin to have it whitelisted on the server.
- Whitelists is based on the installed playlist.
- Added several ways for admins to quickly add new whitelist entries to so-called quick-whitelists. Quick-whitelists are playlist files too.
- Removed `sv_streamradio_allow_customurls`, as it has been replaced with the new whitelisting.
- Added integration for CFC HTTP Whitelist to this addon's whitelist. If CFC whitelists an URL, the addon will whitelist it for your client too (but not necessarily for others).
- Improved info texts a bit.
- Optimized networking to have less entity.__index calls.
- Added better URL and path sanitation.
- Fixed potential race conditions when loading files or streams.
- Added extra error code for drive letter paths ("C:/..."). These never worked and shouldn't be used. This will help users to learn how to use relative paths.
- Added more information about relative paths to the Stream URL description in the spawner tool.
- Removed crash fix in an debug output, as it it has been fixed on engine level. Requires latest game version.
- Fixed radio not playing from toolgun on spawn.
- Fixed a crash when the radio is being looked at in developer 1 on some streams. This was caused by a debugoverlay.EntityTextAtPosition() call.
- Improved Stream URL text fields. They are multi line now to improve UX with long URLs. You can still put only one URL it it, though.
- Put the Toolgun Stream URL description into a collapsible box.
- Sanitized Stream URLs to prevent abuse with malformed URLs.
- Limited Stream URLs to 480 chars (GMod networking limit). This also prevents abuse.
- Radios owned by admins are no longer affected by "sv_streamradio_allow_customurls 1". So admins can always spawn radios with customs URLs.
- Changes to "sv_streamradio_allow_customurls" will affect all spawned radios immediately. Including automatically stopping/resuming streams with "illegal" URLs.
- Added multiple Wire Inputs and Outputs for Display and switching tracks.
- Fixed the radio restarting the song when a new player approaches it.
- Fixed dupe load up being wonky sometimes.
- Fixed networking being wonky sometimes. It should no longer getting stuck on some servers.
- Added a new loading screen. It is used when the GUI loads up.
- Added an option to reset the GUI in case it went stuck.
- Changed the noise sound to start up later, so no more static noise between songs.
- Local and caches songs are played immediately now.
- Fixed a ton of race conditions in GUI.
- Long songs (longer than 1.5 hours) can not longer be cached.
- Fixed potential memory leaks.
- Fixed addon not loading on some servers. Fixed error spam.
- A lot of minor optimizations and some code clean up
- Reduced networking footprint of lists and GUI skins.
- Better error handling. If the addon won't load, it will tell you why in a graceful way. This fixes error spams.
- The addon loads on servers with version 230628 or later now. This also fixes error spams.
- Some hardening against abuse. All network caches are limited now, so they no longer fill up until out of memory. Caches are cleared on overflow and on map cleanup event.
UX:
- Moved error buttons to the side to make more space for the error message.
- Added entity options (C-Menu > Right click) for the radio.
- Added clientside only options to the entity options and entity property editor for volume and muting. (Not affected by Prop Protection)
- Added a clientside only way to look up the error state and the URL on GUI less radios (e.g. speakers). (Not affected by Prop Protection)
- Added a better explanation for "error 20".
- Added more error codes for future updates.
- Added mute option (not clientside!) to the toolgun and added seperator lines to its UI.
Performance / Networking:
- Networking is now delayed to ease on the server performance.
- The GUI is loaded with a delay to avoid freezes on radio spawns.
- The GUI is actually deleted when disabled instead of just being hidden.
- Fixed freezes when entering/leaving a room full of radios.
- The radio being randomly broken/desynced (empty or white screen) on spawn is a way less likely to happen. If it does disabling/enabling the GUI can fix it.
Anti-Abuse / Security:
- Radios from other players can be muted via the addon settings. Does not support buddies.
- Individual radios can be muted on the clientside, even if Prop Protection would block access otherwise.
- Individual radios can have their volume changed the clientside, even if Prop Protection would block access otherwise.
- Added support to the cfc_cl_http_whitelist addon. It is a security addon that whitelist and monitors HTTP and streaming requests. The Radio has a decicated error state for blocked URLs and content now.
- Clientside GM_BASS3 loading can be disabled by the server. (sv_streamradio_bass3_allow_client 0)
ConVars:
- Changed the CVar default of sv_streamradio_rebuildplaylists_community_auto to 2. Pre-existing installs are not affected.
- Added sv_streamradio_bass3_enable: When set to 1, it uses GM_BASS3 on the server if installed. Default: 1
- Added sv_streamradio_bass3_allow_client: Allows connected clients to use GM_BASS3 when set to 1. Overrides cl_streamradio_bass3_enable. Default: 1
- Added cl_streamradio_bass3_enable: When set to 1, it uses GM_BASS3 if installed and allowed on the server. Default: 1
GM_BASS3:
- If installed GM_BASS3 is lazy loaded now. It only loads if it is actually needed by an radio. GM_BASS3 is not supported on x86-64 branches.
- This should fix the playlist not loading for some users.
- Fixed radio entities being miscounted on the client side for some users.
- Moved bigrig.fm to new URL. It still might not work as it is currently down.
- Added a cache to prop protection +USE checks avoid call spams. The cache expires after 3 seconds.
- Fixed some edge cases with attempting to use a radio blocked by prop protection.
- Fixed display freezing or menus disappearing when they aren't supposed too.
Thanks for reporting this issue on Steam:
- [DSTM] hesitantv4mpire
- BEan
- Added option for cursor in VR. It was requested by user Peekofwar on Steam.
- Added button for switching playback mode (no loop, song loop, playlist loop). Fixes #12
- Added option for the playback mode to the Toolgun.
- Added/Changed Wiremod ports represent the playback mode.
- Added support (including the GUI) for the Wiremod User entity. It can be used in contraptions to trigger use operations (+use) as like as play would do on other entities.
- Changed playlist icons to a new custom one.
- Moved networking from NW2Vars to NWVars, because NW2 is actually a buggy unfinished mess.
- Fixed multiple cases of networking being unreliable casing the radio being wonky in multiplayer. It should be much more robust now.
- Reduced networking overhead, by utilizing string tables for repeated strings.
- Improved overall performance.
- Fixed huge FPS drops when seeking songs. This happened also when the radio synchronizes between players or other radios (master / slave setup).
- The GUI is no longer re-rendered every frame when radio playback is paused or stopped. It still has too when it play backs a song, though.
- Fixed several UI / UX bugs, causing hiccups, stucked playback and other wonky behaviors.
- Replaced hacky hashing algorithms (for networking). Because the game actually ships with decent official ones now, we no longer have to abuse util.CRC()
- Added support for 3 radio models from 2 addons.
- Fixed broken community playlists. Added "WCCK dead" and "Deutsche Welle" playlists. Removed Radiorecords.ru playlist, because this station is no longer compatible with this addon.
- Added a Button to the tool and settings panels to switch between those more easily
- Updated model selector note on the tool panel
- The radio auto-converts input Drobbox URLs to their internal download URL on input.
- Added limited support for media that can not be played back in "noblock" mode. This media can not be played in sync and it can not be seeked in.