diff --git a/redist/redist-client-preview/Assembly-CSharp.dll b/redist/redist-client-preview/Assembly-CSharp.dll
index b7e4297b..043d89db 100755
Binary files a/redist/redist-client-preview/Assembly-CSharp.dll and b/redist/redist-client-preview/Assembly-CSharp.dll differ
diff --git a/redist/redist-client-preview/Assembly-CSharp.xml b/redist/redist-client-preview/Assembly-CSharp.xml
index a7848c6f..9dbb1e9b 100755
--- a/redist/redist-client-preview/Assembly-CSharp.xml
+++ b/redist/redist-client-preview/Assembly-CSharp.xml
@@ -2344,6 +2344,15 @@
Unsorted list of world space generators turned-on and fueled.
+
+
+ 2026-05-11: previously, code using this called getBundle(path, true). If an asset bundle
+ matching path existed on disk it allowed customizing UI icons, but in practice nobody
+ used this (likely in part because it was undocumented). If an asset bundle *didn't*
+ exist, icons were loaded from the Resources folder. Now this returns a wrapper object
+ to load icons from the core asset bundle.
+
+
Optional parameter for error logging.
@@ -3223,6 +3232,11 @@
Flag in case levelObject is destroyed.
+
+
+ Substitute for StaticResourceRefs pointing to icons.
+
+
When placing structures that snap to grid multiple requests can come
@@ -3851,7 +3865,7 @@
*ATTEMPTS* to replace IPv4 address(es) with .
Should only be called if is enabled.
Case-by-case redaction should be preferred for performance reasons over using this function. This function
- is intended for third-party messages (e.g., BattlEye) that we don't have control over.
+ is intended for third-party messages (e.g., anti-cheat) that we don't have control over.
True if message was modified.
@@ -3876,83 +3890,9 @@
Doesn't apply if handle is currently being dragged.
-
-
- When this attribute is enabled a warning is shown in the server lobby.
- Applied to options which reduce accessibility.
-
-
-
-
- URL of a 64x64 image shown in the upper-left of the server lobby menu.
-
-
-
-
- URL of a 32x32 image shown in the server list.
-
-
-
-
- Short description underneath the server name in the server lobby menu.
-
-
-
-
- Long description in the lower-right of the server lobby menu.
-
-
-
-
- Short description underneath the server name in the server list.
-
-
-
-
- Documentation: https://docs.smartlydressedgames.com/en/stable/servers/game-server-login-tokens.html
- To generate a new token visit: https://steamcommunity.com/dev/managegameservers
-
-
-
-
- IP address, DNS name, or a web address (to perform GET request) to advertise.
-
- Servers not using Fake IP can specify just a DNS entry. This way if server's IP changes clients can rejoin.
- For example, if you own the "example.com" domain you could add an A record "myunturnedserver" pointing at
- your game server IP and set that record here "myunturnedserver.example.com".
-
- Servers using Fake IP are assigned random ports at startup, but can implement a web API endpoint to return
- the IP and port. Clients perform a GET request if this string starts with http:// or https://. The returned
- text can be an IP address or DNS name with optional query port override. (e.g., "127.0.0.1:27015")
-
- Documentation: https://docs.smartlydressedgames.com/en/stable/servers/bookmark-host.html
-
-
-
-
- If true, the server lobby warns that in-game ping may be higher than shown.
-
-
-
-
- How the server is monetized (if at all).
-
-
-
-
- Used to find overrides in json file.
-
-
-
+
- Buttons shown in the server lobby menu. For example:
- ` Links
- ` [
- ` {
- ` Message Visit our website!
- ` URL https://smartlydressedgames.com/
- ` }
- ` ]
+ Whether to enable BattlEye Anti-Cheat.
@@ -3960,11 +3900,6 @@
Whether to enable Valve Anti-Cheat.
-
-
- Whether to enable BattlEye Anti-Cheat.
-
-
Players with a ping higher than this are kicked.
@@ -4124,6 +4059,85 @@
rather than just "client disconnected."
+
+
+ When this attribute is enabled a warning is shown in the server lobby.
+ Applied to options which reduce accessibility.
+
+
+
+
+ URL of a 64x64 image shown in the upper-left of the server lobby menu.
+
+
+
+
+ URL of a 32x32 image shown in the server list.
+
+
+
+
+ Short description underneath the server name in the server lobby menu.
+
+
+
+
+ Long description in the lower-right of the server lobby menu.
+
+
+
+
+ Short description underneath the server name in the server list.
+
+
+
+
+ Documentation: https://docs.smartlydressedgames.com/en/stable/servers/game-server-login-tokens.html
+ To generate a new token visit: https://steamcommunity.com/dev/managegameservers
+
+
+
+
+ IP address, DNS name, or a web address (to perform GET request) to advertise.
+
+ Servers not using Fake IP can specify just a DNS entry. This way if server's IP changes clients can rejoin.
+ For example, if you own the "example.com" domain you could add an A record "myunturnedserver" pointing at
+ your game server IP and set that record here "myunturnedserver.example.com".
+
+ Servers using Fake IP are assigned random ports at startup, but can implement a web API endpoint to return
+ the IP and port. Clients perform a GET request if this string starts with http:// or https://. The returned
+ text can be an IP address or DNS name with optional query port override. (e.g., "127.0.0.1:27015")
+
+ Documentation: https://docs.smartlydressedgames.com/en/stable/servers/bookmark-host.html
+
+
+
+
+ If true, the server lobby warns that in-game ping may be higher than shown.
+
+
+
+
+ How the server is monetized (if at all).
+
+
+
+
+ Used to find overrides in json file.
+
+
+
+
+ Buttons shown in the server lobby menu. For example:
+ ` Links
+ ` [
+ ` {
+ ` Message Visit our website!
+ ` URL https://smartlydressedgames.com/
+ ` }
+ ` ]
+
+
Percentage [0 to 1] of item spawns to use.
@@ -6638,9 +6652,9 @@
Client providing Steam login token.
-
+
- Client sending BattlEye payload to server.
+ Client sending thirdparty anti-cheat payload to server.
@@ -7038,6 +7052,16 @@
Moves highlighting plugin dependency out of SDK release.
+
+
+ Name shown in the main menu.
+
+
+
+
+ Author name shown in the main menu.
+
+
Actual unfiltered text.
@@ -7091,21 +7115,6 @@
Path to directory containing "Editor", "Menu", "Player", "Curse_Words.txt", etc files.
-
-
- Called clientside by BattlEye when it needs us to send a packet to the server.
-
-
-
-
- Event for plugins when BattlEye wants to kick a player.
-
-
-
-
- Called serverside by BattlEye when it needs us to send a packet to a player.
-
-
Call whenever something impacting rich presence changes for example loading a server or changing lobbies.
@@ -7126,9 +7135,9 @@
Set after initial response is received.
-
+
- On client, is current server protected by BattlEye?
+ On client, is current server protected by thirdparty anti-cheat?
Set after initial response is received.
@@ -7303,10 +7312,10 @@
Set on clients after initial response is received.
-
+
- Set on the server when initializing BattlEye API.
- Used to notify pending clients whether BE is active.
+ Set on the server when initializing thirdparty anti-cheat API.
+ Used to notify pending clients whether thirdparty anti-cheat is active.
Set on clients after initial response is received.
@@ -7478,6 +7487,11 @@
If hosting a server, get the game traffic port.
+
+
+ Non-null if this is a custom build of the game.
+
+
Populated when parsing modeConfigData. Level overrides check whether a property is overridden here before applying.
@@ -7638,6 +7652,21 @@
If specified, all Steam achievements are unlocked during startup.
+
+
+ Called clientside by BattlEye when it needs us to send a packet to the server.
+
+
+
+
+ Event for plugins when BattlEye wants to kick a player.
+
+
+
+
+ Called serverside by BattlEye when it needs us to send a packet to a player.
+
+
Render character with hair and skin otherwise it might be cyan.
@@ -7810,6 +7839,11 @@
Unlike format, this returns string.Empty if key doesn't exist.
+
+
+ If active language is not English always reads from English fallback.
+
+
List of all loaded blueprints potentially craftable by player. Updated when assets are refreshed. This
@@ -7887,6 +7921,17 @@
This overload doesn't support legacy Condition_# format.
+
+
+ Each quality tier has different rarities.
+ Legendary: 5% Epic: 20% Rare: 75%
+
+
+
+
+ Each item has an equal chance regardless of quality.
+
+
Can be added to any GameObject to receive text chat events.
@@ -7948,17 +7993,6 @@
Invoked when a player message passes the filters.
-
-
- Each quality tier has different rarities.
- Legendary: 5% Epic: 20% Rare: 75%
-
-
-
-
- Each item has an equal chance regardless of quality.
-
-
Determines how to handle a server if it matches a rule.
@@ -11393,9 +11427,9 @@
Allows foreach loop to iterate Vector2Int within RegionBoundsInt.
-
+
- Not an actual Steam ID or BattlEye ID, instead this is used to map player references to and from BE.
+ Not an actual external ID, instead this is used to map player references to and from thirdparty anti-cheat systems.
@@ -13691,9 +13725,9 @@
VAC status advertised on server list does not match during connect.
-
+
- BattlEye status advertised on server list does not match during connect.
+ Third-party anti-cheat status advertised on server list does not match during connect.
@@ -13743,6 +13777,16 @@
(public issue #5001)
+
+
+ Provider.GetModInfo().Name did not match between client and server.
+
+
+
+
+ Provider.GetModInfo().Version did not match between client and server.
+
+
Nelson 2024-10-18: Moved to a constant because clients need this value for footsteps and they don't have the
@@ -15583,6 +15627,11 @@
Called on the client to notify the server of admin usage changes (if any).
+
+
+ Older versions had a console command to request enabling this. It's only kept in case plugins were setting it.
+
+
Teleport to a random player spawn designated in the level.
@@ -16035,6 +16084,12 @@
Auto-registering list of volume manager subclasses for level editor.
+
+
+ Note: some caller code (e.g., getWaterSurfaceElevation) assumes this returns all results
+ on the Y axis. (I.e., that regionalVolumes only sorts on the XZ plane.)
+
+
Called in play mode if level has asserted that volumes do not move.
@@ -18020,6 +18075,16 @@
Used in a test scene to quickly test UI Toolkit implementation.
+
+
+ See Bundles.getIconsBundle.
+
+
+
+
+ In practice, T is a Texture2D or a Sprite.
+
+
Is the application running as a headless server?
@@ -19144,6 +19209,16 @@
(public issue #5001)
+
+
+ Provider.GetModInfo().Name did not match between client and server.
+
+
+
+
+ Provider.GetModInfo().Version did not match between client and server.
+
+
Can be added to Vehicle GameObject to receive events.
@@ -20470,9 +20545,9 @@
Should be converted to an RPC. Leftover from prior to net messaging code.
-
+
- Server sending BattlEye payload to client.
+ Server sending thirdparty anti-cheat payload to client.
@@ -20866,6 +20941,12 @@
If set, we are responsible for destroying texture.
+
+
+ The main/entry scene was originally called "Setup" in the same folder as other scenes
+ but has been moved to the project root and renamed "GameStartup" to be easier to find.
+
+
Is a point safely within the level bounds?
@@ -22145,6 +22226,11 @@
Not called on dedicated server.
+
+
+ Moved out of constructor so that it can access Provider.steamAppInstallDirectory.
+
+
Response data from IInventoryService GetInventory web API.
diff --git a/redist/redist-client-preview/RocketModFix.Unturned.Redist.Client.nuspec b/redist/redist-client-preview/RocketModFix.Unturned.Redist.Client.nuspec
index c1183467..647f77df 100644
--- a/redist/redist-client-preview/RocketModFix.Unturned.Redist.Client.nuspec
+++ b/redist/redist-client-preview/RocketModFix.Unturned.Redist.Client.nuspec
@@ -2,7 +2,7 @@
RocketModFix.Unturned.Redist.Client
- 3.26.3.2-preview23133803
+ 3.26.4.100-preview23479280
Unturned 3 Client-side redistributables. Standalone and always up-to-date.
diff --git a/redist/redist-client-preview/SDG.Glazier.Runtime.dll b/redist/redist-client-preview/SDG.Glazier.Runtime.dll
index c6931e0b..5cd3aedf 100755
Binary files a/redist/redist-client-preview/SDG.Glazier.Runtime.dll and b/redist/redist-client-preview/SDG.Glazier.Runtime.dll differ
diff --git a/redist/redist-client-preview/SDG.HostBans.Runtime.dll b/redist/redist-client-preview/SDG.HostBans.Runtime.dll
index cf4184f2..148ed4fc 100755
Binary files a/redist/redist-client-preview/SDG.HostBans.Runtime.dll and b/redist/redist-client-preview/SDG.HostBans.Runtime.dll differ
diff --git a/redist/redist-client-preview/SDG.NetPak.Runtime.dll b/redist/redist-client-preview/SDG.NetPak.Runtime.dll
index 76dbc337..840af627 100755
Binary files a/redist/redist-client-preview/SDG.NetPak.Runtime.dll and b/redist/redist-client-preview/SDG.NetPak.Runtime.dll differ
diff --git a/redist/redist-client-preview/SDG.NetTransport.dll b/redist/redist-client-preview/SDG.NetTransport.dll
index 713228d4..159eb5f6 100755
Binary files a/redist/redist-client-preview/SDG.NetTransport.dll and b/redist/redist-client-preview/SDG.NetTransport.dll differ
diff --git a/redist/redist-client-preview/SystemEx.dll b/redist/redist-client-preview/SystemEx.dll
index c662b576..09214f49 100755
Binary files a/redist/redist-client-preview/SystemEx.dll and b/redist/redist-client-preview/SystemEx.dll differ
diff --git a/redist/redist-client-preview/UnityEx.dll b/redist/redist-client-preview/UnityEx.dll
index 587ca40c..f46a67b5 100755
Binary files a/redist/redist-client-preview/UnityEx.dll and b/redist/redist-client-preview/UnityEx.dll differ
diff --git a/redist/redist-client-preview/UnturnedDat.dll b/redist/redist-client-preview/UnturnedDat.dll
index 48563d5f..d435efd0 100755
Binary files a/redist/redist-client-preview/UnturnedDat.dll and b/redist/redist-client-preview/UnturnedDat.dll differ
diff --git a/redist/redist-client-preview/com.rlabrecque.steamworks.net.dll b/redist/redist-client-preview/com.rlabrecque.steamworks.net.dll
index 9ec8fe9c..b7460142 100755
Binary files a/redist/redist-client-preview/com.rlabrecque.steamworks.net.dll and b/redist/redist-client-preview/com.rlabrecque.steamworks.net.dll differ
diff --git a/redist/redist-client-preview/manifest.sha256.json b/redist/redist-client-preview/manifest.sha256.json
index 074446a6..b665f5e5 100644
--- a/redist/redist-client-preview/manifest.sha256.json
+++ b/redist/redist-client-preview/manifest.sha256.json
@@ -1,13 +1,13 @@
{
+ "SDG.HostBans.Runtime.dll": "6b5c9e0e658731faa6341f32565bf5903feba43bc2d088f9d41144354e135035",
+ "SDG.Glazier.Runtime.dll": "a0cd7b4f1f6c8e425801d6163889859440af64db899d825ccd1eddc0ffd7924f",
"SDG.NetPak.Runtime.xml": "f9592fc449fbf9564e4d5d6b28d2d6c9cda75e94bc38250e65c1a1ff064aad11",
- "Assembly-CSharp.dll": "3be06580fab70fbc8bc542a1060f5a4181ca2dcc08153e02bcd08ae1d8096d72",
- "SDG.NetPak.Runtime.dll": "7ac3ae26695fb7deb679b3306767e23a3c9e0c3046daeaf6d996fcff4655b45b",
- "SDG.Glazier.Runtime.dll": "74d061456933820f204b111489d3a395b7ddf5256d8e18d503134e8c4ba73a2c",
- "SystemEx.dll": "aab3891657f8e7594bab7b4fe15362191459ae00c0ba97dc804e9b1a04d34f4a",
- "UnityEx.dll": "d8b410ca5b6d65333965bd39ca96a959147cb17fb0b6edaea0d9c9df49e0e950",
- "SDG.NetTransport.dll": "ac76c2b2e0cc1a859644f8ae375f9e5ddba652e66f931da26b755c6f68ee0635",
- "UnturnedDat.dll": "ea720a0e90d7c4dfad3b57307b6722622214a4bfcac253b8373a35cb6f083181",
- "SDG.HostBans.Runtime.dll": "92e615e52fac45fa896b22020d36d3c7d09860f7fd062924ff0bb72197d0406c",
- "Assembly-CSharp.xml": "e6c170253d855b05292391b01bf6242fa659465ef9ca3c27bada4cf9502b751f",
- "com.rlabrecque.steamworks.net.dll": "458c97b649e8c7e5b856384bb853d23999003d32c218a7203a4381f29c5b9175"
+ "SDG.NetTransport.dll": "9ecbde549308c8ebb4d4fb1a1ec6383724cda03e243681b67d28f2810e4b5bb1",
+ "SystemEx.dll": "e9c5ba28aa439ebb3c628b802c0e6dbc14a1000021fab08882ad25a95c64e30c",
+ "SDG.NetPak.Runtime.dll": "c577c51e6770eb433e0e9cf1ced4f382010da749b97dcb0e138af904c93c730d",
+ "Assembly-CSharp.dll": "2d37fa8c3adfa463f86ff07e9fcc23966ad97a12e8394d5dc1d0e3183d3a27ab",
+ "Assembly-CSharp.xml": "73bd1a9ef4d882e28e1b8a8f0218219fe6c25c5059fcce323607eff7fb4f80da",
+ "com.rlabrecque.steamworks.net.dll": "3fd0227261f773a8735414a6c8198d0e212981b6fd4ea3fdaacdfb9b04408d49",
+ "UnityEx.dll": "8154c61b1d4a695b61c63e29b0f4716fadf81465526773b051fbfe5ba029de5e",
+ "UnturnedDat.dll": "0b79976c753f5acca9c38b3849062a3ab418395665dacfadb904bad77bd2ca07"
}
\ No newline at end of file
diff --git a/redist/redist-client-preview/version.preview.json b/redist/redist-client-preview/version.preview.json
index 546c4d17..278280ed 100644
--- a/redist/redist-client-preview/version.preview.json
+++ b/redist/redist-client-preview/version.preview.json
@@ -1,7 +1,7 @@
{
- "GameVersion": "3.26.3.2",
- "BuildId": "23133803",
- "NuGetVersion": "3.26.3.2-preview23133803",
- "FilesHash": "72439469464F4C73AA6CFBAADDDAD6E1323977EDC17F151A85CCAA5E8CA9AADE",
- "LastUpdated": "2026-05-07T20:20:18.4240463Z"
+ "GameVersion": "3.26.4.100",
+ "BuildId": "23479280",
+ "NuGetVersion": "3.26.4.100-preview23479280",
+ "FilesHash": "B942036D47EF577044364DDECF21BC5178A563930F8C4FF756B3281AC388CBEA",
+ "LastUpdated": "2026-05-29T22:52:07.6353086Z"
}
\ No newline at end of file
diff --git a/redist/redist-manifests/.manifest.redist-client-preview.txt b/redist/redist-manifests/.manifest.redist-client-preview.txt
index 3b8e0ea5..1607e1c0 100644
--- a/redist/redist-manifests/.manifest.redist-client-preview.txt
+++ b/redist/redist-manifests/.manifest.redist-client-preview.txt
@@ -1 +1 @@
-3123791573447273711
+6484140218604384819