├── .gitattributes
├── .github
└── workflows
│ ├── build_release.yml
│ ├── publish_release.yml
│ └── publish_resources.yml
├── .gitignore
├── .vscode
└── settings.json
├── API
├── Abstractions
│ ├── EconomyItem.cs
│ ├── HierarchyItemTypeIdentifiers.cs
│ ├── IOptionalPatch.cs
│ ├── OptionalPatches.cs
│ └── TranslationSource.cs
├── AccessorExtensions.cs
├── Cartography
│ ├── CartographyCaptureData.cs
│ ├── CartographyCompositing.cs
│ ├── CartographyConfigurationSource.cs
│ ├── CartographyTool.cs
│ ├── CartographyType.cs
│ ├── ChartCartography.cs
│ ├── ChartColorProviders
│ │ ├── ChartColorProviderInfo.cs
│ │ ├── IChartColorProvider.cs
│ │ ├── IFullChartColorProvider.cs
│ │ ├── ISamplingChartColorProvider.cs
│ │ └── RaycastChartColorProvider.cs
│ ├── Compositors
│ │ ├── CartographyCompositorConfigurationInfo.cs
│ │ ├── CartographyCompositorInfo.cs
│ │ ├── CompositorPipeline.cs
│ │ ├── CompositorPipelineDatabase.cs
│ │ └── ICartographyCompositor.cs
│ └── SatelliteCartography.cs
├── Commands
│ ├── CommandContext.cs
│ ├── CommandExecutionMode.cs
│ ├── DevkitServerCommand.cs
│ ├── ICommandHandler.cs
│ └── IExecutableCommand.cs
├── ConnectionArgs.cs
├── ConnectionSide.cs
├── CreateDirectoryAttribute.cs
├── Devkit
│ ├── IDevkitHighlightHandler.cs
│ ├── IDevkitSelectionDeletableHandler.cs
│ └── Spawns
│ │ ├── AnimalSpawnpointNode.cs
│ │ ├── BaseSpawnpointNode.cs
│ │ ├── ItemSpawnpointNode.cs
│ │ ├── PlayerSpawnpointNode.cs
│ │ ├── SpawnType.cs
│ │ ├── SpawnpointEventResult.cs
│ │ ├── VehicleSpawnpointNode.cs
│ │ └── ZombieSpawnpointNode.cs
├── EarlyTypeInitAttribute.cs
├── GenericAttributes.cs
├── HierarchicalEventSource.cs
├── IConfigProvider.cs
├── IDefaultable.cs
├── IDevkitServerPlugin.cs
├── Iterators
│ └── DistanceListIterator.cs
├── JsonConfigurationFile.cs
├── Lighting
│ └── LightingValue.cs
├── LocalDictionary.cs
├── Logging
│ ├── IDevkitServerLogger.cs
│ ├── IDevkitServerSourceLogger.cs
│ ├── ILogSource.cs
│ ├── ITerminal.cs
│ ├── Logger.cs
│ ├── LoggerExtensions.cs
│ └── Severity.cs
├── Multiplayer
│ ├── BaseLargeMessageTransmissionClientHandler.cs
│ ├── CustomNetMessageListeners.cs
│ ├── IActionListener.cs
│ └── ICustomNetMessageListener.cs
├── Permissions
│ ├── IPermissionHandler.cs
│ ├── IUserPermissionHandler.cs
│ ├── NoPermissionsException.cs
│ ├── PermissionBranch.cs
│ ├── PermissionGroup.cs
│ ├── PermissionLeaf.cs
│ ├── PermissionManager.cs
│ └── PermissionMode.cs
├── Plugin.cs
├── PluginModule.cs
├── Storage
│ ├── VirtualDirectories.cs
│ ├── VirtualDirectoryRoot.cs
│ └── VirtualFile.cs
├── TangentHandle.cs
├── TerminalFormatting.cs
├── TransformUpdateTracker.cs
├── TranslationData.cs
└── UI
│ ├── EditorMessage.cs
│ ├── Extensions
│ ├── DevkitServerUIExtensionInfo.cs
│ └── DevkitServerUIExtensionManager.cs
│ └── Icons
│ ├── AssetIconPreset.cs
│ ├── DefaultProviders
│ ├── BillboardDefaultProvider.cs
│ ├── FlagDefaultProvider.cs
│ ├── NPCDefaultProvider.cs
│ ├── NoteDefaultProvider.cs
│ └── PosterDefaultProvider.cs
│ ├── IDefaultIconProvider.cs
│ ├── ObjectIconGenerator.cs
│ ├── ObjectIconPresets.cs
│ └── ObjectIconRenderOptions.cs
├── AssetTools
└── Grabber.cs
├── CommitId.cs
├── Common.targets
├── Compat
├── DefaultIconProviderProxies.cs
├── LevelObjectIconsCompat.cs
└── ModulePlugin.cs
├── Compiler
└── IsExternalInit.cs
├── Configuration
├── BackupConfiguration.cs
├── Converters
│ ├── AssetReferenceJsonConverterFactory.cs
│ ├── CSteamIDJsonConverter.cs
│ ├── Color32JsonConverter.cs
│ ├── ColorJsonConverter.cs
│ ├── NetId64JsonConverter.cs
│ ├── NetIdJsonConverter.cs
│ ├── QuaternionJsonConverter.cs
│ ├── ScheduleConverter.cs
│ ├── TimeSpanConverter.cs
│ ├── TypeJsonConverter.cs
│ ├── Vector2JsonConverter.cs
│ ├── Vector3JsonConverter.cs
│ └── Vector4JsonConverter.cs
├── DevkitServerConfig.cs
├── JsonIndent.cs
├── SchemaConfiguration.cs
├── Utf8JsonReaderEx.cs
└── Utf8JsonWriterEx.cs
├── Core
├── Cartography
│ ├── CartographyHelper.cs
│ ├── CartographyReplication.cs
│ ├── ChartColorProviders
│ │ ├── BundledStripChartColorProvider.cs
│ │ ├── FallbackChartColorProvider.cs
│ │ ├── JsonChartColorData.cs
│ │ └── JsonChartColorProvider.cs
│ ├── Compositors
│ │ └── OverlayCartographyCompositor.cs
│ ├── Jobs
│ │ ├── EncodeImageJob.cs
│ │ └── SetupChartRaycastsJob.cs
│ └── LevelCartographyConfigData.cs
├── Commands
│ ├── ControlCommand.cs
│ ├── PermissionsCommand.cs
│ ├── Subsystem
│ │ ├── CommandEx.cs
│ │ ├── CommandHandler.cs
│ │ ├── CommandParser.cs
│ │ ├── DevkitServerPermissions.cs
│ │ ├── VanillaCommand.cs
│ │ └── VanillaCommandInfo.cs
│ └── TestCommand.cs
├── Logging
│ ├── ANSIFileLogger.cs
│ ├── LogMessage.cs
│ ├── Loggers
│ │ └── CoreLogger.cs
│ ├── Terminals
│ │ ├── BackgroundLoggingTerminal.cs
│ │ ├── ExternalLoggingTerminal.cs
│ │ ├── ServerTerminal.cs
│ │ └── WindowsClientTerminal.cs
│ └── WindowsConsoleHelper.cs
├── OptionalPatch.cs
├── Permissions
│ ├── DevkitServerGlobalPermissions.cs
│ ├── PermissionGroupConfig.cs
│ └── VanillaPermissions.cs
├── SharedResources.cs
├── Tools
│ ├── DevkitServerSelectionTool.cs
│ ├── DevkitServerSelectionToolTransactions.cs
│ ├── DevkitServerSpawnsTool.cs
│ └── RemoveSpawnTransaction.cs
└── UI
│ ├── Extensions
│ ├── BaseEditorSpawnsUIExtension.cs
│ ├── BaseEditorSpawnsUIExtensionNormalTables.cs
│ ├── EditorLevelObjectsUIExtension.cs
│ ├── EditorLevelPlayersUIExtension.cs
│ ├── EditorPauseUIExtension.cs
│ ├── EditorSpawnsAnimalsUIExtension.cs
│ ├── EditorSpawnsItemsUIExtension.cs
│ ├── EditorSpawnsVehiclesUIExtension.cs
│ ├── EditorSpawnsZombiesUIExtension.cs
│ ├── EditorUIExtension.cs
│ ├── MenuDashboardUIExtension.cs
│ ├── MenuPlaySingleplayerUIExtension.cs
│ └── MenuWorkshopEditorUIExtension.cs
│ └── SleekCompositorPipeline.cs
├── DevkitServer.Launcher
├── DevkitServer.Launcher.csproj
├── DevkitServerAutoUpdateComponent.cs
├── DevkitServerLauncherLogger.cs
├── DevkitServerLauncherModule.cs
├── Models
│ ├── NuGetIndexModels.cs
│ └── NuGetVersionsResponse.cs
├── Module
│ ├── DevkitServer.Launcher.module
│ ├── English.dat
│ └── Libraries
│ │ ├── NuGet
│ │ ├── LICENSE.txt
│ │ ├── NuGet.Common.dll
│ │ ├── NuGet.Configuration.dll
│ │ ├── NuGet.Frameworks.dll
│ │ ├── NuGet.Packaging.Core.Types.dll
│ │ ├── NuGet.Packaging.Core.dll
│ │ ├── NuGet.Packaging.dll
│ │ └── NuGet.Versioning.dll
│ │ ├── System.IO.Compression.FileSystem
│ │ ├── LICENSE.txt
│ │ └── System.IO.Compression.FileSystem.dll
│ │ ├── System.IO.Compression
│ │ ├── LICENSE.txt
│ │ └── System.IO.Compression.dll
│ │ └── System.Xml.Linq
│ │ ├── LICENSE.txt
│ │ └── System.Xml.Linq.dll
├── Privacy Info.md
├── Properties
│ └── AssemblyInfo.cs
└── devkitserver.launcher.dll.publickey
├── DevkitServer.Resources
├── DevkitServer.Resources.csproj
├── DevkitServerFileResource.cs
├── DevkitServerResources.cs
├── Properties
│ ├── AssemblyInfo.cs
│ ├── Resources.Designer.cs
│ └── Resources.resx
├── README.md
├── Side.cs
└── devkitserver.resources.dll.publickey
├── DevkitServer.Tests
├── AssertEx.cs
├── CommandTests.cs
├── DevkitServer.Tests.csproj
├── DevkitServerUtilityTests.cs
├── FormattingUtilTests.cs
├── IteratorTests.cs
├── ParseWorldTimeTests.cs
├── PermissionTests.cs
├── Properties
│ └── AssemblyInfo.cs
├── TestHelpers.cs
└── devkitserver.tests.exe.publickey
├── DevkitServer.csproj
├── DevkitServer.csproj.DotSettings
├── DevkitServer.sln
├── DevkitServer.sln.DotSettings
├── DevkitServerModule.cs
├── Documentation
├── Cartography
│ ├── Bundle Chart Colors.md
│ ├── Compositor Pipelines.md
│ ├── Custom Color Providers.md
│ ├── Custom Compositors.md
│ ├── Introduction.md
│ └── JSON Chart Colors.md
└── Object Icons.md
├── ForwardingTargets
└── LevelObjectIcons
│ ├── API
│ └── IDefaultIconProvider.cs
│ ├── Configuration
│ ├── IDefaultable.cs
│ ├── JsonConfigurationFile.cs
│ └── LevelObjectIconsConfig.cs
│ ├── Converters
│ ├── QuaternionConverter.cs
│ └── Vector3Converter.cs
│ ├── IconGenerator.cs
│ ├── LevelObjectIcons.csproj
│ ├── LevelObjectIconsNexus.cs
│ ├── Models
│ ├── AssetIconPreset.cs
│ └── ObjectRenderOptions.cs
│ └── ObjectIconPresets.cs
├── Framework
└── AssemblyResolver.cs
├── LICENSE
├── LaunchOptions.cs
├── Levels
├── BackupLogs.cs
├── BackupManager.cs
├── DirtyManagerState.cs
├── IBackupLog.cs
└── LevelData.cs
├── Libraries
├── Client
│ ├── Assembly-CSharp.dll
│ ├── AstarPathfindingProject.dll
│ ├── BattlEye.dll
│ ├── DevkitServer.dll
│ ├── HighlightingSystem.dll
│ ├── Pathfinding.ClipperLib.dll
│ ├── Pathfinding.Ionic.Zip.Reduced.dll
│ ├── Pathfinding.JsonFx.dll
│ ├── Pathfinding.Poly2Tri.dll
│ ├── SDG.Glazier.Runtime.dll
│ ├── SDG.HostBans.Runtime.dll
│ ├── SDG.NetPak.Runtime.dll
│ ├── SDG.NetTransport.dll
│ ├── StandardAssets.dll
│ ├── SystemEx.dll
│ ├── UniTask.dll
│ ├── Unity.Postprocessing.Runtime.dll
│ ├── Unity.TextMeshPro.dll
│ ├── UnityEngine.AIModule.dll
│ ├── UnityEngine.ARModule.dll
│ ├── UnityEngine.AccessibilityModule.dll
│ ├── UnityEngine.AndroidJNIModule.dll
│ ├── UnityEngine.AnimationModule.dll
│ ├── UnityEngine.AssetBundleModule.dll
│ ├── UnityEngine.AudioModule.dll
│ ├── UnityEngine.ClothModule.dll
│ ├── UnityEngine.ClusterInputModule.dll
│ ├── UnityEngine.ClusterRendererModule.dll
│ ├── UnityEngine.CoreModule.dll
│ ├── UnityEngine.CrashReportingModule.dll
│ ├── UnityEngine.DSPGraphModule.dll
│ ├── UnityEngine.DirectorModule.dll
│ ├── UnityEngine.GameCenterModule.dll
│ ├── UnityEngine.GridModule.dll
│ ├── UnityEngine.IMGUIModule.dll
│ ├── UnityEngine.ImageConversionModule.dll
│ ├── UnityEngine.InputLegacyModule.dll
│ ├── UnityEngine.InputModule.dll
│ ├── UnityEngine.JSONSerializeModule.dll
│ ├── UnityEngine.LocalizationModule.dll
│ ├── UnityEngine.NVIDIAModule.dll
│ ├── UnityEngine.ParticleSystemModule.dll
│ ├── UnityEngine.PerformanceReportingModule.dll
│ ├── UnityEngine.Physics2DModule.dll
│ ├── UnityEngine.PhysicsModule.dll
│ ├── UnityEngine.ScreenCaptureModule.dll
│ ├── UnityEngine.SharedInternalsModule.dll
│ ├── UnityEngine.SpriteMaskModule.dll
│ ├── UnityEngine.SpriteShapeModule.dll
│ ├── UnityEngine.StreamingModule.dll
│ ├── UnityEngine.SubsystemsModule.dll
│ ├── UnityEngine.TLSModule.dll
│ ├── UnityEngine.TerrainModule.dll
│ ├── UnityEngine.TerrainPhysicsModule.dll
│ ├── UnityEngine.TextCoreFontEngineModule.dll
│ ├── UnityEngine.TextCoreTextEngineModule.dll
│ ├── UnityEngine.TextRenderingModule.dll
│ ├── UnityEngine.TilemapModule.dll
│ ├── UnityEngine.UI.dll
│ ├── UnityEngine.UIElementsModule.dll
│ ├── UnityEngine.UIElementsNativeModule.dll
│ ├── UnityEngine.UIModule.dll
│ ├── UnityEngine.UNETModule.dll
│ ├── UnityEngine.UnityAnalyticsCommonModule.dll
│ ├── UnityEngine.UnityAnalyticsModule.dll
│ ├── UnityEngine.UnityConnectModule.dll
│ ├── UnityEngine.UnityCurlModule.dll
│ ├── UnityEngine.UnityWebRequestAssetBundleModule.dll
│ ├── UnityEngine.UnityWebRequestAudioModule.dll
│ ├── UnityEngine.UnityWebRequestModule.dll
│ ├── UnityEngine.UnityWebRequestTextureModule.dll
│ ├── UnityEngine.UnityWebRequestWWWModule.dll
│ ├── UnityEngine.VFXModule.dll
│ ├── UnityEngine.VRModule.dll
│ ├── UnityEngine.VehiclesModule.dll
│ ├── UnityEngine.VideoModule.dll
│ ├── UnityEngine.VirtualTexturingModule.dll
│ ├── UnityEngine.WindModule.dll
│ ├── UnityEngine.XRModule.dll
│ ├── UnityEngine.dll
│ ├── UnityEx.dll
│ ├── Unturned.LiveConfig.Runtime.dll
│ ├── UnturnedDat.dll
│ └── com.rlabrecque.steamworks.net.dll
└── Server
│ ├── Assembly-CSharp.dll
│ ├── AstarPathfindingProject.dll
│ ├── BattlEye.dll
│ ├── DevkitServer.dll
│ ├── HighlightingSystem.dll
│ ├── Pathfinding.ClipperLib.dll
│ ├── Pathfinding.Ionic.Zip.Reduced.dll
│ ├── Pathfinding.JsonFx.dll
│ ├── Pathfinding.Poly2Tri.dll
│ ├── SDG.HostBans.Runtime.dll
│ ├── SDG.NetPak.Runtime.dll
│ ├── SDG.NetTransport.dll
│ ├── StandardAssets.dll
│ ├── SystemEx.dll
│ ├── UniTask.dll
│ ├── Unity.Postprocessing.Runtime.dll
│ ├── Unity.TextMeshPro.dll
│ ├── UnityEngine.AIModule.dll
│ ├── UnityEngine.ARModule.dll
│ ├── UnityEngine.AccessibilityModule.dll
│ ├── UnityEngine.AndroidJNIModule.dll
│ ├── UnityEngine.AnimationModule.dll
│ ├── UnityEngine.AssetBundleModule.dll
│ ├── UnityEngine.AudioModule.dll
│ ├── UnityEngine.ClothModule.dll
│ ├── UnityEngine.ClusterInputModule.dll
│ ├── UnityEngine.ClusterRendererModule.dll
│ ├── UnityEngine.CoreModule.dll
│ ├── UnityEngine.CrashReportingModule.dll
│ ├── UnityEngine.DSPGraphModule.dll
│ ├── UnityEngine.DirectorModule.dll
│ ├── UnityEngine.GameCenterModule.dll
│ ├── UnityEngine.GridModule.dll
│ ├── UnityEngine.IMGUIModule.dll
│ ├── UnityEngine.ImageConversionModule.dll
│ ├── UnityEngine.InputLegacyModule.dll
│ ├── UnityEngine.InputModule.dll
│ ├── UnityEngine.JSONSerializeModule.dll
│ ├── UnityEngine.LocalizationModule.dll
│ ├── UnityEngine.NVIDIAModule.dll
│ ├── UnityEngine.ParticleSystemModule.dll
│ ├── UnityEngine.PerformanceReportingModule.dll
│ ├── UnityEngine.Physics2DModule.dll
│ ├── UnityEngine.PhysicsModule.dll
│ ├── UnityEngine.ScreenCaptureModule.dll
│ ├── UnityEngine.SharedInternalsModule.dll
│ ├── UnityEngine.SpriteMaskModule.dll
│ ├── UnityEngine.SpriteShapeModule.dll
│ ├── UnityEngine.StreamingModule.dll
│ ├── UnityEngine.SubsystemsModule.dll
│ ├── UnityEngine.TLSModule.dll
│ ├── UnityEngine.TerrainModule.dll
│ ├── UnityEngine.TerrainPhysicsModule.dll
│ ├── UnityEngine.TextCoreFontEngineModule.dll
│ ├── UnityEngine.TextCoreTextEngineModule.dll
│ ├── UnityEngine.TextRenderingModule.dll
│ ├── UnityEngine.TilemapModule.dll
│ ├── UnityEngine.UI.dll
│ ├── UnityEngine.UIElementsModule.dll
│ ├── UnityEngine.UIElementsNativeModule.dll
│ ├── UnityEngine.UIModule.dll
│ ├── UnityEngine.UNETModule.dll
│ ├── UnityEngine.UnityAnalyticsCommonModule.dll
│ ├── UnityEngine.UnityAnalyticsModule.dll
│ ├── UnityEngine.UnityConnectModule.dll
│ ├── UnityEngine.UnityCurlModule.dll
│ ├── UnityEngine.UnityWebRequestAssetBundleModule.dll
│ ├── UnityEngine.UnityWebRequestAudioModule.dll
│ ├── UnityEngine.UnityWebRequestModule.dll
│ ├── UnityEngine.UnityWebRequestTextureModule.dll
│ ├── UnityEngine.UnityWebRequestWWWModule.dll
│ ├── UnityEngine.VFXModule.dll
│ ├── UnityEngine.VRModule.dll
│ ├── UnityEngine.VehiclesModule.dll
│ ├── UnityEngine.VideoModule.dll
│ ├── UnityEngine.VirtualTexturingModule.dll
│ ├── UnityEngine.WindModule.dll
│ ├── UnityEngine.XRModule.dll
│ ├── UnityEngine.dll
│ ├── UnityEx.dll
│ ├── UnturnedDat.dll
│ └── com.rlabrecque.steamworks.net.dll
├── Models
├── AutoFoundationProperties.cs
├── AutoSlopeProperties.cs
├── Delegates.cs
├── RegionIdentifier.cs
├── RoadVertexIdentifier.cs
├── SpawnAssetIdentifier.cs
├── SpawnTierIdentifier.cs
├── TransformationDelta.cs
└── Transformations.cs
├── Module
├── Bin
│ └── LICENSE.txt
├── Bundles
│ ├── MasterBundle.dat
│ ├── devkitserver.masterbundle
│ ├── devkitserver.masterbundle.hash
│ ├── devkitserver.masterbundle.manifest
│ ├── devkitserver_linux.masterbundle
│ ├── devkitserver_linux.masterbundle.manifest
│ ├── devkitserver_mac.masterbundle
│ └── devkitserver_mac.masterbundle.manifest
├── Data
│ └── Object Icon Presets (Vanilla).json
├── Defaults
│ ├── backup_config.json
│ ├── cartography_config.json
│ ├── chart_colors.json
│ ├── client_config.json
│ ├── permission_groups.json
│ └── server_config.json
├── DevkitServer.module
├── English.dat
├── Libraries
│ ├── .NET Standard 2.1
│ │ ├── LICENSE.txt
│ │ └── netstandard.dll
│ ├── DanielWillett.ReflectionTools
│ │ ├── DanielWillett.ReflectionTools.Harmony.dll
│ │ ├── DanielWillett.ReflectionTools.dll
│ │ └── LICENSE.txt
│ ├── DanielWillett.SpeedBytes
│ │ ├── DanielWillett.SpeedBytes.Unity.dll
│ │ ├── DanielWillett.SpeedBytes.dll
│ │ └── LICENSE.txt
│ ├── DanielWillett.StackCleaner
│ │ ├── DanielWillett.StackCleaner.dll
│ │ ├── DanielWillett.StackCleaner.pdb
│ │ ├── DanielWillett.StackCleaner.xml
│ │ └── LICENSE.txt
│ ├── ForwardingTargets
│ │ └── DanielWillett.LevelObjectIcons.dll
│ ├── Lib.Harmony
│ │ ├── 0Harmony.dll
│ │ └── LICENSE.txt
│ ├── Microsoft.Bcl.AsyncInterfaces
│ │ ├── LICENSE.txt
│ │ └── Microsoft.Bcl.AsyncInterfaces.dll
│ ├── Microsoft.Bcl.HashCode
│ │ ├── LICENSE.txt
│ │ └── Microsoft.Bcl.HashCode.dll
│ ├── System.Buffers
│ │ ├── LICENSE.txt
│ │ └── System.Buffers.dll
│ ├── System.IO.Compression.FileSystem
│ │ ├── LICENSE.txt
│ │ └── System.IO.Compression.FileSystem.dll
│ ├── System.IO.Compression
│ │ ├── LICENSE.txt
│ │ └── System.IO.Compression.dll
│ ├── System.Memory
│ │ ├── LICENSE.txt
│ │ └── System.Memory.dll
│ ├── System.Numerics.Vectors
│ │ ├── LICENSE.txt
│ │ └── System.Numerics.Vectors.dll
│ ├── System.Runtime.CompilerServices.Unsafe
│ │ ├── LICENSE.txt
│ │ └── System.Runtime.CompilerServices.Unsafe.dll
│ ├── System.Text.Encodings.Web
│ │ ├── LICENSE.txt
│ │ └── System.Text.Encodings.Web.dll
│ ├── System.Text.Json
│ │ ├── LICENSE.txt
│ │ └── System.Text.Json.dll
│ ├── System.Threading.Tasks.Extensions
│ │ └── System.Threading.Tasks.Extensions.dll
│ ├── System.ValueTuple
│ │ ├── LICENSE.txt
│ │ └── System.ValueTuple.dll
│ ├── UniTask
│ │ ├── LICENSE.txt
│ │ ├── UniTask.deps.json
│ │ ├── UniTask.dll
│ │ ├── UniTask.pdb
│ │ └── UniTask.xml
│ └── UnturnedUITools
│ │ ├── LICENSE.txt
│ │ ├── UnturnedUITools.dll
│ │ ├── UnturnedUITools.pdb
│ │ └── UnturnedUITools.xml
└── Schemas
│ ├── backup_schema.json
│ ├── cartography_compositor_pipeline_schema.json
│ ├── cartography_config_schema.json
│ ├── chart_colors_schema.json
│ ├── client_config_schema.json
│ ├── permission_groups_schema.json
│ └── server_config_schema.json
├── Multiplayer
├── Actions
│ ├── ActionSettings.cs
│ ├── ActionSettingsCollection.cs
│ ├── Actions.cs
│ ├── ClientEventModels.cs
│ ├── ClientEvents.cs
│ ├── EditorActionCodeGeneration.cs
│ ├── EditorActions.cs
│ ├── FoliageActions.cs
│ ├── HierarchyActions.cs
│ ├── LightingActions.cs
│ ├── NavigationActions.cs
│ ├── NetId64.cs
│ ├── ObjectActions.cs
│ ├── RoadActions.cs
│ ├── SpawnActions.cs
│ ├── SpawnTableActions.cs
│ ├── TemporaryEditorActions.cs
│ └── TerrainActions.cs
├── BuildableResponsibilities.cs
├── ClientFPSLimiter.cs
├── ClientInfo.cs
├── Cryptography
│ └── UserCryptographyStore.cs
├── DevkitServerGamemode.cs
├── HierarchyResponsibilities.cs
├── InstanceIdResponsibilityTable.cs
├── LevelObjectResponsibilities.cs
├── Levels
│ ├── EditorLevel.cs
│ ├── HierarchyItemNetIdDatabase.cs
│ ├── LevelObjectNetIdDatabase.cs
│ ├── LevelTransmissionHandler.cs
│ ├── NavigationNetIdDatabase.cs
│ ├── ReplicatedLevelDataRegistry.cs
│ ├── RoadNetIdDatabase.cs
│ └── SpawnsNetIdDatabase.cs
├── Movement
│ ├── ClientUserMovement.cs
│ ├── EditorInputPacket.cs
│ ├── ServerUserMovement.cs
│ └── UserMovement.cs
├── NetId64Registry.cs
├── Networking
│ ├── DevkitServerNetCall.cs
│ ├── HighSpeedConnection.cs
│ ├── HighSpeedNetFactory.cs
│ ├── HighSpeedServer.cs
│ ├── Invocables.cs
│ ├── MessageContext.cs
│ ├── MessageFlags.cs
│ ├── MessageOverhead.cs
│ ├── NetFactory.cs
│ ├── NetTask.cs
│ ├── NetworkBuffer.cs
│ └── ProgressTracker.cs
├── Sync
│ ├── AuthoritativeSync.cs
│ ├── HierarchySync.cs
│ ├── NavigationSync.cs
│ ├── ObjectSync.cs
│ ├── RoadSync.cs
│ └── TileSync.cs
└── UserManager.cs
├── Patches
├── ClientAssetIntegrityPatches.cs
├── FoliageEditorPatches.cs
├── LandscapeTilePatches.cs
├── LevelObjectPatches.cs
├── LightingPatches.cs
├── MapCreation.cs
├── NavigationPatches.cs
├── PatchHelpers.cs
├── PatchesMain.cs
├── RoadsPatches.cs
├── SelectionToolPatches.cs
├── ServerGizmoPatches.cs
├── SpawnsEditorPatches.cs
├── TerrainEditorPatches.cs
├── TransactionPatches.cs
└── TransportPatcher.cs
├── Players
├── EditorInteractEx.cs
├── EditorUser.cs
├── UserControl.cs
├── UserTPVControl.cs
└── UserTransactions.cs
├── Plugins
└── PluginLoader.cs
├── Promo
└── icon.png
├── Properties
└── AssemblyInfo.cs
├── README.md
├── TestPlugin
├── Properties
│ └── AssemblyInfo.cs
├── TestPlugin.cs
├── TestPlugin.csproj
├── TestPluginConfig.cs
└── TestPluginSubmodule.cs
├── Unturned.targets
├── Util
├── AssetUtil.cs
├── CachedMulticastEvent.cs
├── CachedTime.cs
├── ColoredOpCodeFormatter.cs
├── CommonErrors.cs
├── Comparers
│ ├── AssetComparer.cs
│ └── LevelObjectComparer.cs
├── Debugging
│ └── RegionDebug.cs
├── DevkitServerGLUtility.cs
├── DevkitServerUITools.cs
├── DevkitServerUtility.cs
├── Encoding
│ ├── ByteReaders.cs
│ ├── ByteWriters.cs
│ ├── DevkitServerEncodingExtensions.cs
│ ├── LargeMessageTransmission.cs
│ ├── LargeMessageTransmissionCommunications.cs
│ └── UnsafeBitConverter.cs
├── FastList.cs
├── FileUtil.cs
├── FoliageUtil.cs
├── FormattingUtil.cs
├── HierarchyUtil.cs
├── HighlighterUtil.cs
├── InputUtil.cs
├── LandscapeUtil.cs
├── LevelObjectUtil.cs
├── LightingUtil.cs
├── MainThreadTask.cs
├── MovementUtil.cs
├── NavigationUtil.cs
├── Region
│ ├── ListRegionsEnumerator.cs
│ ├── RegionUtil.cs
│ ├── RegionsIterator.cs
│ ├── SurroundingRegionsIterator.cs
│ └── SurroundingTilesIterator.cs
├── RoadUtil.cs
├── SpanExtensions.cs
├── SpawnTableUtil.cs
├── SpawnUtil.cs
└── TaskYieldInstruction.cs
├── devkitserver.dll.publickey
└── pre-push CommitId.cs hook.txt
/.github/workflows/build_release.yml:
--------------------------------------------------------------------------------
1 | name: Release Build
2 | on:
3 | pull_request:
4 | types: [opened, reopened]
5 | push:
6 | branches: [ "master" ]
7 |
8 | jobs:
9 | build:
10 | runs-on: ubuntu-latest
11 | timeout-minutes: 10
12 | steps:
13 | - name: Checkout
14 | uses: actions/checkout@v4
15 | with:
16 | ref: 'master'
17 |
18 | - name: SetupDotNet
19 | uses: actions/setup-dotnet@v4
20 | with:
21 | dotnet-version: '9.x.x'
22 |
23 | - name: Decode DevkitServer .snk
24 | uses: akiojin/decode-base64-github-action@v0.1.0
25 | id: decode-base64
26 | with:
27 | base64: ${{ secrets.DEVKITSERVER_SNK }}
28 | output-path: ${{ runner.temp }}/devkitserver.dll.snk
29 |
30 | - name: Build Server
31 | run: dotnet build "DevkitServer.csproj" --configuration ServerRelease "/p:IsInGitHubActions=True;AssemblyOriginatorKeyFile=${{ steps.decode-base64.outputs.output-path }};SignAssembly=True"
32 |
33 | - name: Build Client
34 | run: dotnet build "DevkitServer.csproj" --configuration ClientRelease "/p:IsInGitHubActions=True;AssemblyOriginatorKeyFile=${{ steps.decode-base64.outputs.output-path }};SignAssembly=True"
35 |
36 | - name: Test Server
37 | run: dotnet test "DevkitServer.Tests/DevkitServer.Tests.csproj" --configuration ServerRelease "/p:IsInGitHubActions=True;AssemblyOriginatorKeyFile=${{ steps.decode-base64.outputs.output-path }};SignAssembly=True"
38 |
39 | - name: Test Client
40 | run: dotnet test "DevkitServer.Tests/DevkitServer.Tests.csproj" --configuration ClientRelease "/p:IsInGitHubActions=True;AssemblyOriginatorKeyFile=${{ steps.decode-base64.outputs.output-path }};SignAssembly=True"
41 |
--------------------------------------------------------------------------------
/.github/workflows/publish_resources.yml:
--------------------------------------------------------------------------------
1 | name: Publish Resources NuGet Release
2 | on:
3 | workflow_dispatch:
4 | inputs:
5 | sem_version:
6 | description: "Version"
7 | required: true
8 | type: string
9 | change_notes:
10 | description: "Change Notes"
11 | required: true
12 | type: string
13 | jobs:
14 | build:
15 | runs-on: ubuntu-latest
16 | timeout-minutes: 10
17 | steps:
18 | - name: Checkout
19 | uses: actions/checkout@v4
20 | with:
21 | ref: 'master'
22 |
23 | - name: SetupDotNet
24 | uses: actions/setup-dotnet@v4
25 | with:
26 | dotnet-version: '9.x.x'
27 |
28 | - name: Decode DevkitServer.Resources .snk
29 | uses: akiojin/decode-base64-github-action@v0.1.0
30 | id: decode-base64
31 | with:
32 | base64: ${{ secrets.DEVKITSERVER_RESX_SNK }}
33 | output-path: ${{ runner.temp }}/devkitserver.resources.dll.snk
34 |
35 | - name: Build Resources
36 | run: dotnet build "DevkitServer.Resources/DevkitServer.Resources.csproj" --configuration ServerRelease "/p:Version=${{ inputs.sem_version }};PackageReleaseNotes=${{ inputs.change_notes }};IsInGitHubActions=True;AssemblyOriginatorKeyFile=${{ steps.decode-base64.outputs.output-path }};SignAssembly=True"
37 |
38 | - name: Pack Resources
39 | run: dotnet pack "DevkitServer.Resources/DevkitServer.Resources.csproj" --configuration ServerRelease "/p:Version=${{ inputs.sem_version }};PackageReleaseNotes=${{ inputs.change_notes }};IsInGitHubActions=True;AssemblyOriginatorKeyFile=${{ steps.decode-base64.outputs.output-path }};SignAssembly=True" --no-build --output .
40 |
41 | - name: Push Packages
42 | run: dotnet nuget push *.nupkg --source https://api.nuget.org/v3/index.json --api-key ${NUGET_TOKEN}
43 | env:
44 | NUGET_TOKEN: ${{ secrets.NUGET_TOKEN }}
45 |
--------------------------------------------------------------------------------
/.vscode/settings.json:
--------------------------------------------------------------------------------
1 | {
2 | "search.useIgnoreFiles": false
3 | }
--------------------------------------------------------------------------------
/API/Abstractions/IOptionalPatch.cs:
--------------------------------------------------------------------------------
1 | using System.Reflection;
2 |
3 | namespace DevkitServer.API.Abstractions;
4 | public interface IOptionalPatch
5 | {
6 | MethodBase? Method { get; }
7 | MethodInfo? Patch { get; }
8 | bool Unpatch();
9 | }
10 |
--------------------------------------------------------------------------------
/API/Cartography/CartographyConfigurationSource.cs:
--------------------------------------------------------------------------------
1 | using System.Text.Json;
2 |
3 | namespace DevkitServer.API.Cartography;
4 |
5 | public readonly struct CartographyConfigurationSource : IDisposable
6 | {
7 | public readonly string? Path;
8 | public readonly JsonElement Configuraiton;
9 | public readonly IDisposable? Disposable;
10 |
11 | public CartographyConfigurationSource(string? path, JsonElement configuraiton, IDisposable? disposable = null)
12 | {
13 | Path = path;
14 | Configuraiton = configuraiton;
15 | Disposable = disposable;
16 | }
17 |
18 | ///
19 | public override string ToString() => Path ?? "";
20 |
21 | public void Dispose()
22 | {
23 | Disposable?.Dispose();
24 | }
25 | }
--------------------------------------------------------------------------------
/API/Cartography/CartographyType.cs:
--------------------------------------------------------------------------------
1 | namespace DevkitServer.API.Cartography;
2 |
3 | ///
4 | /// Distinguishes the two types of cartography workflows.
5 | ///
6 | public enum CartographyType
7 | {
8 | ///
9 | /// No map, applicable in some usages.
10 | ///
11 | None,
12 |
13 | ///
14 | /// Top-down view of the map as-is. Also called GPS. Handled by .
15 | ///
16 | Satellite,
17 |
18 | ///
19 | /// Stylized 'drawing' of a top-down view of the map's roads, landmarks, and terrain. Handled by .
20 | ///
21 | Chart
22 | }
--------------------------------------------------------------------------------
/API/Cartography/ChartColorProviders/ChartColorProviderInfo.cs:
--------------------------------------------------------------------------------
1 | namespace DevkitServer.API.Cartography.ChartColorProviders;
2 |
3 | ///
4 | /// Defines a plugin-implemented color provider.
5 | ///
6 | public readonly struct ChartColorProviderInfo
7 | {
8 | ///
9 | /// Type of the color provider. Implements .
10 | ///
11 | public Type Type { get; }
12 |
13 | ///
14 | /// Plugin that implements the provider.
15 | ///
16 | public IDevkitServerPlugin Plugin { get; }
17 |
18 | ///
19 | /// Priority for this provider.
20 | ///
21 | public int Priority { get; }
22 |
23 | internal ChartColorProviderInfo(Type type, IDevkitServerPlugin plugin, int priority)
24 | {
25 | Type = type;
26 | Plugin = plugin;
27 | Priority = priority;
28 | }
29 | }
30 |
--------------------------------------------------------------------------------
/API/Cartography/ChartColorProviders/IChartColorProvider.cs:
--------------------------------------------------------------------------------
1 | using System.Text.Json;
2 |
3 | namespace DevkitServer.API.Cartography.ChartColorProviders;
4 |
5 | ///
6 | /// Provides handling for capturing a chart image.
7 | ///
8 | /// Use for providers that enumerate every pixel on the chart.
9 | public interface IChartColorProvider
10 | {
11 | ///
12 | /// Check for non-existant files or missing features to use this provider before moving on to the next one, or initialize any needed resources.
13 | ///
14 | /// If this provider was explicitly requested by config.
15 | /// Optionally supplied config. Check that is not .
16 | /// can be used for cleanup.
17 | /// if this provider can be used, otherwise .
18 | bool TryInitialize(in CartographyCaptureData data, JsonElement configuration, bool isExplicitlyDefined);
19 | }
--------------------------------------------------------------------------------
/API/Cartography/ChartColorProviders/IFullChartColorProvider.cs:
--------------------------------------------------------------------------------
1 | using System.Diagnostics;
2 | using DevkitServer.Core.Cartography;
3 |
4 | namespace DevkitServer.API.Cartography.ChartColorProviders;
5 |
6 | ///
7 | /// Provides handling for capturing a chart image where all chart logic is handled by the provider.
8 | ///
9 | public interface IFullChartColorProvider : IChartColorProvider
10 | {
11 | ///
12 | /// Capture the entire chart and write any output to the pointer .
13 | /// Start index of the 3 RGB bytes can be calculated by (pixelX + pixelY * data.ImageSize.x) * 3.
14 | ///
15 | /// Output pointer for raw RGB24 image data.
16 | /// After hitting an object, good implementations will use and to apply chart overrides from config.
17 | unsafe void CaptureChart(in CartographyCaptureData data, LevelCartographyConfigData? config, byte* rawRgb24Data, Stopwatch jobStopwatch);
18 | }
--------------------------------------------------------------------------------
/API/Cartography/ChartColorProviders/ISamplingChartColorProvider.cs:
--------------------------------------------------------------------------------
1 | using DevkitServer.Core.Cartography;
2 |
3 | namespace DevkitServer.API.Cartography.ChartColorProviders;
4 |
5 | ///
6 | /// Provides logic for converting world coordinates to chart colors.
7 | ///
8 | /// Should handle interpolating sub-pixels internally.
9 | public interface ISamplingChartColorProvider : IChartColorProvider
10 | {
11 | ///
12 | /// Sample a position on the chart in world coordinates. This method will be called for every pixel on the map image.
13 | ///
14 | /// After hitting an object, good implementations will use and to apply chart overrides from config.
15 | Color32 SampleChartPosition(in CartographyCaptureData data, LevelCartographyConfigData? config, Vector2 worldCoordinates);
16 | }
--------------------------------------------------------------------------------
/API/Cartography/Compositors/CartographyCompositorConfigurationInfo.cs:
--------------------------------------------------------------------------------
1 | using System.Text.Json;
2 |
3 | namespace DevkitServer.API.Cartography.Compositors;
4 |
5 | public struct CartographyCompositorConfigurationInfo
6 | {
7 | ///
8 | /// The name of the type to use for compositing this layer.
9 | ///
10 | public string? TypeName;
11 |
12 | ///
13 | /// Optional extra configuration usually supplied through the object in the compositor list.
14 | ///
15 | public JsonElement ExtraConfig;
16 | }
17 |
--------------------------------------------------------------------------------
/API/Cartography/Compositors/CartographyCompositorInfo.cs:
--------------------------------------------------------------------------------
1 | using System.Text.Json;
2 |
3 | #if CLIENT
4 | namespace DevkitServer.API.Cartography.Compositors;
5 |
6 | ///
7 | /// Defines a plugin-implemented cartography compositor.
8 | ///
9 | public struct CartographyCompositorInfo
10 | {
11 | ///
12 | /// Type of the color provider. Implements .
13 | ///
14 | public Type Type { get; }
15 |
16 | ///
17 | /// Custom configuration that can optionally be provded to a compositor.
18 | ///
19 | public JsonElement Config { get; internal set; }
20 |
21 | ///
22 | /// Plugin that implements the provider.
23 | ///
24 | public IDevkitServerPlugin Plugin { get; }
25 |
26 | ///
27 | /// Priority for this provider.
28 | ///
29 | public int Priority { get; }
30 |
31 | ///
32 | /// Is this enabled for satellite renders?
33 | ///
34 | public bool SupportsSatellite { get; }
35 |
36 | ///
37 | /// Is this enabled for chart renders?
38 | ///
39 | public bool SupportsChart { get; }
40 |
41 | internal CartographyCompositorInfo(Type type, IDevkitServerPlugin plugin, int priority, bool supportsSatellite, bool supportsChart)
42 | {
43 | Type = type;
44 | Plugin = plugin;
45 | Priority = priority;
46 | SupportsSatellite = supportsSatellite;
47 | SupportsChart = supportsChart;
48 | }
49 | }
50 | #endif
--------------------------------------------------------------------------------
/API/Cartography/Compositors/ICartographyCompositor.cs:
--------------------------------------------------------------------------------
1 | using System.Text.Json;
2 |
3 | #if CLIENT
4 | namespace DevkitServer.API.Cartography.Compositors;
5 |
6 | ///
7 | /// Exposes functions for post-processing on chart and satellite renders.
8 | ///
9 | /// This will be initialized on load to collect the values of and .
10 | public interface ICartographyCompositor
11 | {
12 | ///
13 | /// Is this enabled for satellite renders?
14 | ///
15 | public bool SupportsSatellite { get; }
16 |
17 | ///
18 | /// Is this enabled for chart renders?
19 | ///
20 | public bool SupportsChart { get; }
21 |
22 | ///
23 | /// Apply any compositing to a . The render texture is not created until it's first used.
24 | ///
25 | /// If this compositor was explicitly requested by config.
26 | /// Optionally supplied config. Check that is not .
27 | /// if any changes were made, otherwise .
28 | bool Composite(in CartographyCaptureData data, Lazy texture, bool isExplicitlyDefined, JsonElement configuration);
29 | }
30 | #endif
--------------------------------------------------------------------------------
/API/Commands/ICommandHandler.cs:
--------------------------------------------------------------------------------
1 | using DevkitServer.Core.Commands.Subsystem;
2 | #if SERVER
3 | using DevkitServer.Players;
4 | #endif
5 |
6 | namespace DevkitServer.API.Commands;
7 | public interface ICommandHandler
8 | {
9 | IReadOnlyList Commands { get; }
10 |
11 | event CommandHandler.ExecutedCommand OnCommandExecuted;
12 | event CommandHandler.ExecutingCommand OnExecutingCommand;
13 | event Action OnCommandRegistered;
14 | event Action OnCommandDeregistered;
15 |
16 | void Init();
17 | void ExecuteCommand(IExecutableCommand command,
18 | #if SERVER
19 | SteamPlayer? user,
20 | #endif
21 | #if CLIENT
22 | bool console,
23 | #endif
24 | string[] args, string originalMessage);
25 | void SendHelpMessage(
26 | #if SERVER
27 | SteamPlayer? user
28 | #endif
29 | #if CLIENT
30 | bool console
31 | #endif
32 | );
33 | void SendNoPermissionMessage(
34 | #if SERVER
35 | SteamPlayer? user,
36 | #endif
37 | #if CLIENT
38 | bool console,
39 | #endif
40 | IExecutableCommand command);
41 | bool TryRegisterCommand(IExecutableCommand command);
42 | bool TryDeregisterCommand(IExecutableCommand command);
43 | void HandleCommandException(CommandContext ctx, Exception ex);
44 | #if CLIENT
45 | void TransitionCommandExecutionToServer(CommandContext ctx);
46 | #endif
47 | }
--------------------------------------------------------------------------------
/API/ConnectionArgs.cs:
--------------------------------------------------------------------------------
1 | namespace DevkitServer.API;
2 |
3 | public delegate void ConnectionArgs(
4 | #if SERVER
5 | ITransportConnection transportConnection
6 | #elif CLIENT
7 | IClientTransport clientTransport
8 | #endif
9 | );
10 |
--------------------------------------------------------------------------------
/API/ConnectionSide.cs:
--------------------------------------------------------------------------------
1 | namespace DevkitServer.API;
2 |
3 | ///
4 | /// Defines server/client side relationships.
5 | ///
6 | [Flags]
7 | public enum ConnectionSide : byte
8 | {
9 | ///
10 | /// This component will not be used at all.
11 | ///
12 | Neither = 0,
13 |
14 | ///
15 | /// This component will only be used on the dedicated server build.
16 | ///
17 | Server = 0b01,
18 |
19 | ///
20 | /// This component will only be used on the client build.
21 | ///
22 | Client = 0b10,
23 |
24 | ///
25 | /// This component will always be used.
26 | ///
27 | Both = Server | Client
28 | }
29 |
--------------------------------------------------------------------------------
/API/Devkit/IDevkitHighlightHandler.cs:
--------------------------------------------------------------------------------
1 | using HighlightingSystem;
2 |
3 | namespace DevkitServer.API.Devkit;
4 | public interface IDevkitHighlightHandler
5 | {
6 | void OnHighlight(Highlighter highlighter);
7 | }
8 |
--------------------------------------------------------------------------------
/API/Devkit/IDevkitSelectionDeletableHandler.cs:
--------------------------------------------------------------------------------
1 | #if CLIENT
2 | namespace DevkitServer.API.Devkit;
3 | public interface IDevkitSelectionDeletableHandler
4 | {
5 | void Delete(ref bool destroy);
6 | }
7 | #endif
--------------------------------------------------------------------------------
/API/Devkit/Spawns/SpawnType.cs:
--------------------------------------------------------------------------------
1 | namespace DevkitServer.API.Devkit.Spawns;
2 |
3 | ///
4 | /// Represents a type of spawnpoint or spawn table.
5 | ///
6 | public enum SpawnType : byte
7 | {
8 | // do not rename these
9 |
10 | None,
11 |
12 | ///
13 | /// and .
14 | ///
15 | /// Global index based.
16 | Player,
17 |
18 | ///
19 | /// , , , , and .
20 | ///
21 | /// Global index based.
22 | Animal,
23 |
24 | ///
25 | /// , , , , and .
26 | ///
27 | /// Regional index based.
28 | Zombie,
29 |
30 | ///
31 | /// , , , , and .
32 | ///
33 | /// Regional index based.
34 | Item,
35 |
36 | ///
37 | /// , , , , and .
38 | ///
39 | /// Global index based.
40 | Vehicle
41 | }
--------------------------------------------------------------------------------
/API/Devkit/Spawns/SpawnpointEventResult.cs:
--------------------------------------------------------------------------------
1 | using DevkitServer.Models;
2 | using DevkitServer.Multiplayer.Actions;
3 |
4 | namespace DevkitServer.API.Devkit.Spawns;
5 |
6 | ///
7 | /// Defines a result from a method in that may not merit an exception.
8 | ///
9 | public enum SpawnpointEventResult
10 | {
11 | ///
12 | /// All went well.
13 | ///
14 | Success,
15 |
16 | ///
17 | /// The value was already what you're trying to set it to, so the method did nothing.
18 | ///
19 | IgnoredAlreadySameValue,
20 |
21 | ///
22 | /// The spawn at the provided index or did not exist.
23 | ///
24 | IndexOutOfRange,
25 |
26 | ///
27 | /// Unable to find a associated with the given spawnpoint. This could be due to a plugin not using DevkitServer APIs.
28 | ///
29 | NetIdNotFound,
30 |
31 | ///
32 | /// A OnXXXRequested event in cancelled the request.
33 | ///
34 | CancelledByEvent,
35 |
36 | ///
37 | /// The current user doesn't have permissions to make this request.
38 | ///
39 | NoPermissions
40 | }
41 |
--------------------------------------------------------------------------------
/API/EarlyTypeInitAttribute.cs:
--------------------------------------------------------------------------------
1 | namespace DevkitServer.API;
2 |
3 | ///
4 | /// Marks a class to have it's static constructor (type initializer) ran on load.
5 | /// Helps ensure there are no errors hidden in your static members that will pop up later, and moves all load time to when the game/server actually loads.
6 | ///
7 | /// Works in plugins as well.
8 | [AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct)]
9 | public sealed class EarlyTypeInitAttribute : Attribute
10 | {
11 | ///
12 | /// Defines the order in which type initializers run. Lower gets ran first. Default priority is zero.
13 | ///
14 | public int Priority { get; }
15 | internal bool RequiresUIAccessTools { get; set; }
16 |
17 | public EarlyTypeInitAttribute() : this(0) { }
18 |
19 | public EarlyTypeInitAttribute(int priority)
20 | {
21 | Priority = priority;
22 | }
23 | internal EarlyTypeInitAttribute(bool requiresUIAccessTools)
24 | {
25 | RequiresUIAccessTools = requiresUIAccessTools;
26 | }
27 | internal EarlyTypeInitAttribute(int priority, bool requiresUIAccessTools)
28 | {
29 | Priority = priority;
30 | RequiresUIAccessTools = requiresUIAccessTools;
31 | }
32 | }
--------------------------------------------------------------------------------
/API/GenericAttributes.cs:
--------------------------------------------------------------------------------
1 | using DevkitServer.API.Permissions;
2 |
3 | namespace DevkitServer.API;
4 |
5 | ///
6 | /// Identifies which plugin a member belongs to.
7 | ///
8 | [AttributeUsage(AttributeTargets.All, Inherited = false)]
9 | [BaseTypeRequired(typeof(IDevkitServerPlugin))]
10 | public class PluginIdentifierAttribute : Attribute
11 | {
12 | public Type? PluginType { get; set; }
13 |
14 | ///
15 | /// Identifies which plugin a member belongs to.
16 | ///
17 | public PluginIdentifierAttribute(Type? pluginType)
18 | {
19 | PluginType = pluginType;
20 | }
21 | }
22 |
23 | ///
24 | /// Overrides the permission prefix for a plugin.
25 | ///
26 | /// A permission prefix is the value that goes in front of permissions for a plugin. Used in and .
27 | [AttributeUsage(AttributeTargets.Class | AttributeTargets.Assembly, Inherited = false)]
28 | [BaseTypeRequired(typeof(IDevkitServerPlugin))]
29 | public sealed class PermissionPrefixAttribute : Attribute
30 | {
31 | ///
32 | /// The value that goes in front of permissions for a plugin. Used in and .
33 | ///
34 | public string Prefix { get; }
35 |
36 | ///
37 | /// Overrides the permission prefix for a plugin.
38 | ///
39 | /// A permission prefix is the value that goes in front of permissions for a plugin. Used in and .
40 | public PermissionPrefixAttribute(string prefix) => Prefix = prefix;
41 | }
--------------------------------------------------------------------------------
/API/HierarchicalEventSource.cs:
--------------------------------------------------------------------------------
1 | namespace DevkitServer.API;
2 |
3 | ///
4 | /// When events are chain-invoked for child objects in a hierarchy, defines how many generations of parent objects away the object that invoked the event is.
5 | ///
6 | public enum HierarchicalEventSource
7 | {
8 | ///
9 | /// The object raising the event is on the same hierarchical level as the one that was removed.
10 | ///
11 | ThisObject,
12 |
13 | ///
14 | /// The object raising the event's parent is on the same hierarchical level as the one that was removed.
15 | ///
16 | ParentObject,
17 |
18 | ///
19 | /// The object raising the event's parent's parent is on the same hierarchical level as the one that was removed.
20 | ///
21 | GrandparentObject,
22 |
23 | ///
24 | /// The object raising the event's parent's parent's parent is on the same hierarchical level as the one that was removed.
25 | ///
26 | GreatGrandparentObject
27 | }
28 |
--------------------------------------------------------------------------------
/API/IConfigProvider.cs:
--------------------------------------------------------------------------------
1 | using System.Text.Json;
2 |
3 | namespace DevkitServer.API;
4 |
5 | ///
6 | /// Provides a configuration implementation with reload and save methods.
7 | ///
8 | public interface IConfigProvider where TConfig : class, new()
9 | {
10 | TConfig Configuration { get; }
11 | void ReloadConfig();
12 | void SaveConfig();
13 | }
14 |
15 | ///
16 | /// Provides config for JSON serialization.
17 | ///
18 | public interface IJsonSettingProvider
19 | {
20 | JsonReaderOptions ReaderOptions { get; }
21 | JsonWriterOptions WriterOptions { get; }
22 | JsonSerializerOptions SerializerOptions { get; }
23 | }
--------------------------------------------------------------------------------
/API/IDefaultable.cs:
--------------------------------------------------------------------------------
1 | namespace DevkitServer.API;
2 |
3 | ///
4 | /// Adds a method to set default values for a configuration class.
5 | ///
6 | public interface IDefaultable
7 | {
8 | ///
9 | /// Set default values for a configuration class.
10 | ///
11 | void SetDefaults();
12 | }
13 |
--------------------------------------------------------------------------------
/API/Lighting/LightingValue.cs:
--------------------------------------------------------------------------------
1 | namespace DevkitServer.API.Lighting;
2 |
3 | ///
4 | /// Represents a , , asset reference, per , or per in the lighting menu.
5 | ///
6 | public enum LightingValue
7 | {
8 | ///
9 | Azimuth,
10 | ///
11 | Bias,
12 | ///
13 | Fade,
14 | ///
15 | SeaLevel,
16 | ///
17 | SnowLevel,
18 | ///
19 | HasRain,
20 | ///
21 | HasSnow,
22 | ///
23 | RainFrequency,
24 | ///
25 | RainDuration,
26 | ///
27 | SnowFrequency,
28 | ///
29 | SnowDuration,
30 | ///
31 | Moon,
32 | ///
33 | Time,
34 | ///
35 | WeatherAsset,
36 | /// , ,
37 | TimeColor,
38 | /// , ,
39 | TimeSingle
40 | }
--------------------------------------------------------------------------------
/API/LocalDictionary.cs:
--------------------------------------------------------------------------------
1 | namespace DevkitServer.API;
2 | public class LocalDatDictionary : Dictionary { }
3 |
--------------------------------------------------------------------------------
/API/Logging/IDevkitServerLogger.cs:
--------------------------------------------------------------------------------
1 | namespace DevkitServer.API.Logging;
2 |
3 | ///
4 | /// Represents a log handler for DevkitServer.
5 | ///
6 | public interface IDevkitServerLogger
7 | {
8 | ///
9 | /// Accepts a log line.
10 | ///
11 | /// Usually will be , , or .
12 | /// Console colors will have an A=0 and can be casted straight to .
13 | void AddLog(ITerminal terminal, object? source, Severity severity, ReadOnlySpan message, Exception? exception, int baseColorArgb);
14 | }
--------------------------------------------------------------------------------
/API/Logging/IDevkitServerSourceLogger.cs:
--------------------------------------------------------------------------------
1 | namespace DevkitServer.API.Logging;
2 | public interface IDevkitServerSourceLogger : IDevkitServerLogger, ILogSource;
3 |
--------------------------------------------------------------------------------
/API/Logging/ILogSource.cs:
--------------------------------------------------------------------------------
1 | namespace DevkitServer.API.Logging;
2 |
3 | ///
4 | /// Provides a source context for logging.
5 | ///
6 | public interface ILogSource
7 | {
8 | ///
9 | /// Source context to hint at where logs came from.
10 | ///
11 | string Source { get; }
12 |
13 | ///
14 | /// Gets an override for whether a certain is visible.
15 | ///
16 | bool? GetExplicitVisibilitySetting(Severity severity) => null;
17 | }
18 |
--------------------------------------------------------------------------------
/API/Logging/ITerminal.cs:
--------------------------------------------------------------------------------
1 | namespace DevkitServer.API.Logging;
2 |
3 | ///
4 | /// Represents a command line interface.
5 | ///
6 | public interface ITerminal
7 | {
8 | ///
9 | /// Invoke when input is received from the command line.
10 | ///
11 | event TerminalPreReadDelegate? OnInput;
12 |
13 | ///
14 | /// Invoke before outputting data to the command line.
15 | ///
16 | event TerminalPreWriteDelegate? OnOutput;
17 |
18 | ///
19 | /// Is manually adding logs to that weren't added before.
20 | ///
21 | bool IsComittingToUnturnedLog { get; }
22 |
23 | ///
24 | /// Write or queue a write for command line data.
25 | ///
26 | void Write(ReadOnlySpan input, ConsoleColor? color, bool saveToUnturnedLog, Severity severity);
27 |
28 | ///
29 | /// Called on start.
30 | ///
31 | void Init();
32 |
33 | ///
34 | /// Called on close or when a new is set.
35 | ///
36 | void Close();
37 | }
38 |
39 | public delegate void TerminalPreReadDelegate(ReadOnlySpan inputMessage, ref bool shouldHandle);
40 | public delegate void TerminalPostReadDelegate(ReadOnlySpan inputMessage);
41 |
42 | public delegate void TerminalPreWriteDelegate(ref ReadOnlySpan outputMessage, ref ConsoleColor? color, Severity severity);
43 | public delegate void TerminalPostWriteDelegate(ReadOnlySpan outputMessage, ConsoleColor? color, Severity severity);
--------------------------------------------------------------------------------
/API/Logging/Severity.cs:
--------------------------------------------------------------------------------
1 | namespace DevkitServer.API.Logging;
2 | public enum Severity
3 | {
4 | Debug,
5 | Info,
6 | Warning,
7 | Error,
8 | Fatal
9 | }
--------------------------------------------------------------------------------
/API/Multiplayer/IActionListener.cs:
--------------------------------------------------------------------------------
1 | using DevkitServer.Multiplayer.Actions;
2 |
3 | namespace DevkitServer.API.Multiplayer;
4 | public interface IActionListener
5 | {
6 | ActionSettings Settings { get; }
7 | int QueueSize { get; }
8 | }
9 |
10 | public delegate void AppliedAction(IActionListener caller, IAction action);
11 | public delegate void ApplyingAction(IActionListener caller, IAction action, ref bool execute);
--------------------------------------------------------------------------------
/API/Permissions/NoPermissionsException.cs:
--------------------------------------------------------------------------------
1 | namespace DevkitServer.API.Permissions;
2 |
3 | ///
4 | /// Thrown when a client-side action requires permissions that aren't granted.
5 | ///
6 | public class NoPermissionsException : Exception
7 | {
8 | ///
9 | /// Permission that was required to perform the action.
10 | ///
11 | public PermissionLeaf? RequiredPermission { get; }
12 |
13 | public NoPermissionsException(PermissionLeaf? requiredPermission) : base(requiredPermission != null ? "Missing permission: \"" + requiredPermission + "\"" : "Missing permissions")
14 | {
15 | RequiredPermission = requiredPermission;
16 | }
17 |
18 | public NoPermissionsException(PermissionLeaf? requiredPermission, Exception inner) : base(requiredPermission != null ? "Missing permission: \"" + requiredPermission + "\"" : "Missing permissions", inner)
19 | {
20 | RequiredPermission = requiredPermission;
21 | }
22 | }
--------------------------------------------------------------------------------
/API/Permissions/PermissionMode.cs:
--------------------------------------------------------------------------------
1 | namespace DevkitServer.API.Permissions;
2 |
3 | public enum PermissionMode
4 | {
5 | Additive,
6 | Subtractive
7 | }
--------------------------------------------------------------------------------
/API/Storage/VirtualDirectoryRoot.cs:
--------------------------------------------------------------------------------
1 | using System.Text;
2 |
3 | namespace DevkitServer.API.Storage;
4 |
5 | ///
6 | /// Stores a file structure and contents in-memory.
7 | ///
8 | public class VirtualDirectoryRoot(IReadOnlyList directories, IReadOnlyList files) : ITerminalFormattable
9 | {
10 | ///
11 | /// List of all directories.
12 | ///
13 | public IReadOnlyList Directories { get; } = directories;
14 |
15 | ///
16 | /// List of all files and their contents.
17 | ///
18 | public IReadOnlyList Files { get; } = files;
19 |
20 | ///
21 | /// Dumps all folders and files (and their sizes) to printable text.
22 | ///
23 | public override string ToString()
24 | {
25 | StringBuilder sb = new StringBuilder(" • Virtual Directory:" + Environment.NewLine);
26 |
27 | sb.AppendLine(" + Folders:");
28 | foreach (string folder in Directories.OrderBy(x => x).ToList())
29 | {
30 | sb.AppendLine(" • \"" + folder + "\"");
31 | }
32 |
33 | sb.AppendLine(" + Files:");
34 | foreach (VirtualFile file in Files.OrderBy(x => x.Path).ToList())
35 | {
36 | sb.AppendLine($" • \"{file.Path}\" ({FormattingUtil.FormatCapacity(file.Content.Count)})");
37 | }
38 |
39 | return sb.ToString();
40 | }
41 |
42 | public string Format(ITerminalFormatProvider provider)
43 | {
44 | StringBuilder sb = new StringBuilder(" • Virtual Directory:" + Environment.NewLine);
45 |
46 | sb.AppendLine(" + Folders:");
47 | foreach (string folder in Directories.OrderBy(x => x).ToList())
48 | {
49 | sb.AppendLine(" • " + folder.Format(true));
50 | }
51 |
52 | sb.AppendLine(" + Files:");
53 | foreach (VirtualFile file in Files.OrderBy(x => x.Path).ToList())
54 | {
55 | sb.AppendLine($" • {file.Path.Format(true)} ({FormattingUtil.FormatCapacity(file.Content.Count, colorize: true)})");
56 | }
57 |
58 | return sb.ToString();
59 | }
60 | }
--------------------------------------------------------------------------------
/API/Storage/VirtualFile.cs:
--------------------------------------------------------------------------------
1 | namespace DevkitServer.API.Storage;
2 |
3 | ///
4 | /// Represents a file stored in memory.
5 | ///
6 | public sealed class VirtualFile(string path, ArraySegment content)
7 | {
8 | ///
9 | /// Path of the file relative to a .
10 | ///
11 | public string Path { get; } = path;
12 |
13 | ///
14 | /// Raw contents of the file.
15 | ///
16 | public ArraySegment Content { get; } = content;
17 | }
--------------------------------------------------------------------------------
/API/TangentHandle.cs:
--------------------------------------------------------------------------------
1 | namespace DevkitServer.API;
2 |
3 | ///
4 | /// Represents the two tangent handles for roads.
5 | ///
6 | public enum TangentHandle : byte
7 | {
8 | ///
9 | /// Faces towards the joint one index below the owning joint.
10 | ///
11 | Negative = 0,
12 | ///
13 | /// Faces towards the joint one index above the owning joint.
14 | ///
15 | Positive = 1
16 | }
--------------------------------------------------------------------------------
/API/TerminalFormatting.cs:
--------------------------------------------------------------------------------
1 | using StackCleaner;
2 | using System.Diagnostics;
3 |
4 | namespace DevkitServer.API;
5 |
6 | ///
7 | /// Implement custom format handling for .
8 | ///
9 | public interface ITerminalFormattable
10 | {
11 | ///
12 | /// Format handling for .
13 | ///
14 | string Format(ITerminalFormatProvider provider);
15 | }
16 |
17 | ///
18 | /// Provides a instance for formatting stuff in .
19 | ///
20 | public interface ITerminalFormatProvider
21 | {
22 | ///
23 | /// Provides a configuration for cleaning s and formatting members.
24 | ///
25 | public StackTraceCleaner StackCleaner { get; }
26 | }
27 |
--------------------------------------------------------------------------------
/API/UI/Extensions/DevkitServerUIExtensionInfo.cs:
--------------------------------------------------------------------------------
1 | #if CLIENT
2 | using DevkitServer;
3 | using DevkitServer.API;
4 | using DevkitServer.Plugins;
5 | using SDG.Framework.Modules;
6 |
7 | // ReSharper disable once CheckNamespace
8 | namespace DanielWillett.UITools.API.Extensions;
9 |
10 | ///
11 | /// Stores cached information about a UI extension.
12 | ///
13 | public class DevkitServerUIExtensionInfo : UIExtensionInfo
14 | {
15 | ///
16 | /// Plugin the extension is from.
17 | ///
18 | public IDevkitServerPlugin? Plugin { get; }
19 |
20 | internal DevkitServerUIExtensionInfo(Type implementationType, Type parentType, int priority, IDevkitServerPlugin? plugin)
21 | : base(implementationType, parentType, priority, plugin == null ? DevkitServerModule.Module : PluginLoader.GetMockModule(plugin))
22 | {
23 | Plugin = plugin;
24 | }
25 |
26 | internal DevkitServerUIExtensionInfo(Type implementationType, Type parentType, int priority, Module module)
27 | : base(implementationType, parentType, priority, module)
28 | {
29 | Plugin = null;
30 | }
31 | }
32 | #endif
--------------------------------------------------------------------------------
/API/UI/Icons/AssetIconPreset.cs:
--------------------------------------------------------------------------------
1 | using DevkitServer.Configuration.Converters;
2 | using System.Text.Json.Serialization;
3 |
4 | namespace DevkitServer.API.UI.Icons;
5 | public class AssetIconPreset
6 | {
7 | [JsonPropertyName("object")]
8 | [JsonConverter(typeof(AssetReferenceJsonConverterFactory.AssetReferenceJsonConverterGuidPreferred))]
9 | public AssetReference Asset { get; set; }
10 |
11 | [JsonPropertyName("position")]
12 | public Vector3 IconPosition { get; set; }
13 |
14 | [JsonPropertyName("rotation")]
15 | [JsonConverter(typeof(QuaternionEulerPreferredJsonConverter))]
16 | public Quaternion IconRotation { get; set; }
17 |
18 | [JsonPropertyName("priority")]
19 | public int Priority { get; set; }
20 |
21 | [JsonIgnore]
22 | public string? File { get; set; }
23 | }
--------------------------------------------------------------------------------
/API/UI/Icons/DefaultProviders/BillboardDefaultProvider.cs:
--------------------------------------------------------------------------------
1 | namespace DevkitServer.API.UI.Icons.DefaultProviders;
2 | internal class BillboardDefaultProvider : IDefaultIconProvider
3 | {
4 | private static readonly Vector3 DefaultPosition = new Vector3(-3f, -10f, 9f);
5 | private static readonly Quaternion DefaultRotation = Quaternion.Euler(-107f, -80f, 260f);
6 |
7 | ///
8 | public int Priority => int.MinValue;
9 |
10 | ///
11 | public void GetMetrics(ObjectAsset @object, out Vector3 position, out Quaternion rotation)
12 | {
13 | position = DefaultPosition;
14 | rotation = DefaultRotation;
15 | }
16 |
17 | ///
18 | public bool AppliesTo(ObjectAsset @object) => @object.type == EObjectType.LARGE && @object.name.StartsWith("Billboard_", StringComparison.Ordinal);
19 | }
20 |
--------------------------------------------------------------------------------
/API/UI/Icons/DefaultProviders/FlagDefaultProvider.cs:
--------------------------------------------------------------------------------
1 | namespace DevkitServer.API.UI.Icons.DefaultProviders;
2 | internal class FlagDefaultProvider : IDefaultIconProvider
3 | {
4 | private static readonly Vector3 DefaultPosition = new Vector3(-4.95f, 1.97f, 10.74f);
5 | private static readonly Quaternion DefaultRotation = Quaternion.Euler(0.71f, 92.61f, 77.94f);
6 |
7 | ///
8 | public int Priority => int.MinValue;
9 |
10 | ///
11 | public void GetMetrics(ObjectAsset @object, out Vector3 position, out Quaternion rotation)
12 | {
13 | position = DefaultPosition;
14 | rotation = DefaultRotation;
15 | }
16 |
17 | ///
18 | public bool AppliesTo(ObjectAsset @object) => @object is
19 | {
20 | isSnowshoe: true,
21 | interactability: EObjectInteractability.RUBBLE,
22 | type: EObjectType.MEDIUM or EObjectType.LARGE or EObjectType.SMALL
23 | } && @object.name.StartsWith("Flag_", StringComparison.Ordinal);
24 | }
25 |
--------------------------------------------------------------------------------
/API/UI/Icons/DefaultProviders/NPCDefaultProvider.cs:
--------------------------------------------------------------------------------
1 | namespace DevkitServer.API.UI.Icons.DefaultProviders;
2 | internal class NPCDefaultProvider : IDefaultIconProvider
3 | {
4 | private static readonly Vector3 DefaultPosition = new Vector3(1.48f, -2.46f, 1.69f);
5 | private static readonly Quaternion DefaultRotation = Quaternion.Euler(301.81f, 243.1f, 293.33f);
6 |
7 | ///
8 | public int Priority => int.MinValue;
9 |
10 | ///
11 | public void GetMetrics(ObjectAsset @object, out Vector3 position, out Quaternion rotation)
12 | {
13 | position = DefaultPosition;
14 | rotation = DefaultRotation;
15 | }
16 |
17 | ///
18 | public bool AppliesTo(ObjectAsset @object) => @object.type == EObjectType.NPC;
19 | }
20 |
--------------------------------------------------------------------------------
/API/UI/Icons/DefaultProviders/NoteDefaultProvider.cs:
--------------------------------------------------------------------------------
1 | namespace DevkitServer.API.UI.Icons.DefaultProviders;
2 | internal class NoteDefaultProvider : IDefaultIconProvider
3 | {
4 | private static readonly Vector3 DefaultPosition = new Vector3(0f, 0f, 0.8f);
5 | private static readonly Quaternion DefaultRotation = Quaternion.Euler(0f, 180f, 180f);
6 |
7 | ///
8 | public int Priority => int.MinValue;
9 |
10 | ///
11 | public void GetMetrics(ObjectAsset @object, out Vector3 position, out Quaternion rotation)
12 | {
13 | position = DefaultPosition;
14 | rotation = DefaultRotation;
15 | }
16 |
17 | ///
18 | public bool AppliesTo(ObjectAsset @object) => @object.type is EObjectType.MEDIUM or EObjectType.LARGE or EObjectType.SMALL && @object.interactability == EObjectInteractability.NOTE;
19 | }
20 |
--------------------------------------------------------------------------------
/API/UI/Icons/DefaultProviders/PosterDefaultProvider.cs:
--------------------------------------------------------------------------------
1 | namespace DevkitServer.API.UI.Icons.DefaultProviders;
2 | internal class PosterDefaultProvider : IDefaultIconProvider
3 | {
4 | private static readonly Vector3 DefaultPosition = new Vector3(2f, 0f, 0f);
5 | private static readonly Quaternion DefaultRotation = Quaternion.Euler(0f, 270f, 270f);
6 |
7 | ///
8 | public int Priority => int.MinValue;
9 |
10 | ///
11 | public void GetMetrics(ObjectAsset @object, out Vector3 position, out Quaternion rotation)
12 | {
13 | position = DefaultPosition;
14 | rotation = DefaultRotation;
15 | }
16 |
17 | ///
18 | public bool AppliesTo(ObjectAsset @object) => @object.type is EObjectType.MEDIUM or EObjectType.LARGE or EObjectType.SMALL && @object.name.StartsWith("Poster_", StringComparison.Ordinal);
19 | }
20 |
--------------------------------------------------------------------------------
/API/UI/Icons/IDefaultIconProvider.cs:
--------------------------------------------------------------------------------
1 | namespace DevkitServer.API.UI.Icons;
2 |
3 | ///
4 | /// Provides information about default objects offsets.
5 | ///
6 | public interface IDefaultIconProvider
7 | {
8 | ///
9 | /// 0 = default, higher is ran before lower.
10 | ///
11 | int Priority { get; }
12 |
13 | ///
14 | /// Set the offsets of the object's default icon.
15 | ///
16 | void GetMetrics(ObjectAsset @object, out Vector3 position, out Quaternion rotation);
17 |
18 | ///
19 | /// Is this object affected by this provider?
20 | ///
21 | bool AppliesTo(ObjectAsset @object);
22 | }
23 |
--------------------------------------------------------------------------------
/API/UI/Icons/ObjectIconRenderOptions.cs:
--------------------------------------------------------------------------------
1 | namespace DevkitServer.API.UI.Icons;
2 | ///
3 | /// Options for .
4 | ///
5 | public class ObjectIconRenderOptions
6 | {
7 | ///
8 | /// Override the index in a of the material to use. Defaults to a random index.
9 | ///
10 | public int MaterialIndexOverride { get; set; } = -1;
11 |
12 | ///
13 | /// Override a to use for rendering. Defaults to a the one defined in the dat file.
14 | ///
15 | public AssetReference MaterialPaletteOverride { get; set; } = AssetReference.invalid;
16 | }
17 |
--------------------------------------------------------------------------------
/CommitId.cs:
--------------------------------------------------------------------------------
1 | namespace DevkitServer;
2 |
3 | // This file is automatically overwritten during commit.
4 | internal static class CommitId
5 | {
6 | public static readonly string Commit = "f21dd0f3f0c6b1793a45fe354b0ada2d889975d1";
7 | }
8 |
--------------------------------------------------------------------------------
/Compat/DefaultIconProviderProxies.cs:
--------------------------------------------------------------------------------
1 | #if CLIENT
2 | using DanielWillett.ReflectionTools;
3 | using DevkitServer.API.UI.Icons;
4 |
5 | namespace DevkitServer.Compat;
6 |
7 | [Ignore]
8 | internal class DefaultIconProviderProxyToInternal : IDefaultIconProvider
9 | {
10 | private readonly DanielWillett.LevelObjectIcons.API.IDefaultIconProvider _implementation;
11 | public DefaultIconProviderProxyToInternal(DanielWillett.LevelObjectIcons.API.IDefaultIconProvider implementation)
12 | {
13 | _implementation = implementation;
14 | }
15 | public void GetMetrics(ObjectAsset @object, out Vector3 position, out Quaternion rotation) => _implementation.GetMetrics(@object, out position, out rotation);
16 | public bool AppliesTo(ObjectAsset @object) => _implementation.AppliesTo(@object);
17 | public int Priority => _implementation.Priority;
18 | }
19 | #endif
--------------------------------------------------------------------------------
/Compat/LevelObjectIconsCompat.cs:
--------------------------------------------------------------------------------
1 | #if CLIENT
2 | using DanielWillett.ReflectionTools;
3 | using DevkitServer.API.UI.Icons;
4 | using DevkitServer.Configuration;
5 | using SDG.Framework.Modules;
6 |
7 | namespace DevkitServer.Compat;
8 | internal static class LevelObjectIconsCompat
9 | {
10 | internal static void AddIconProviders(IList providers)
11 | {
12 | Logger.DevkitServer.LogInfo(ObjectIconGenerator.Source, $"Loading compat layer for {"LevelObjectIcons".Colorize(new Color32(255, 255, 102, 255))}...");
13 | IEnumerable types = !DevkitServerConfig.Config.DisableDefaultLevelObjectIconProviderSearch
14 | ? Accessor.GetTypesSafe(ModuleHook.modules.Where(x => x.assemblies != null).SelectMany(x => x.assemblies), true)
15 | : Accessor.GetTypesSafe(true);
16 |
17 | foreach (Type type in types.Where(x => x is { IsInterface: false, IsAbstract: false }))
18 | {
19 | try
20 | {
21 | if (!typeof(DanielWillett.LevelObjectIcons.API.IDefaultIconProvider).IsAssignableFrom(type))
22 | continue;
23 | }
24 | catch (Exception ex)
25 | {
26 | Logger.DevkitServer.LogInfo(ObjectIconGenerator.Source, $"Unable to check type {type.Format()} for {typeof(DanielWillett.LevelObjectIcons.API.IDefaultIconProvider).Format()} - {ex.GetType().Format()} {ex.Message.Format(true)}");
27 | continue;
28 | }
29 |
30 | try
31 | {
32 | DanielWillett.LevelObjectIcons.API.IDefaultIconProvider provider = (DanielWillett.LevelObjectIcons.API.IDefaultIconProvider)Activator.CreateInstance(type);
33 | providers.Add(new DefaultIconProviderProxyToInternal(provider));
34 | }
35 | catch (Exception ex)
36 | {
37 | Logger.DevkitServer.LogError(ObjectIconGenerator.Source, ex, $"Unable to apply icon provider: {type.Format()}.");
38 | }
39 | }
40 | }
41 | }
42 | #endif
--------------------------------------------------------------------------------
/Compiler/IsExternalInit.cs:
--------------------------------------------------------------------------------
1 | // ReSharper disable once CheckNamespace
2 | namespace System.Runtime.CompilerServices;
3 |
4 | [AttributeUsage(AttributeTargets.Property)]
5 | internal class IsExternalInit : Attribute;
6 |
--------------------------------------------------------------------------------
/Configuration/Converters/TimeSpanConverter.cs:
--------------------------------------------------------------------------------
1 | using System.Globalization;
2 | using System.Text.Json;
3 | using System.Text.Json.Serialization;
4 |
5 | namespace DevkitServer.Configuration.Converters;
6 | public sealed class TimeSpanConverter : JsonConverter
7 | {
8 | public override TimeSpan Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
9 | {
10 | if (reader.TokenType != JsonTokenType.String)
11 | {
12 | throw new JsonException("Invalid token type: " + reader.TokenType + ", expected String.");
13 | }
14 |
15 | return TimeSpan.Parse(reader.GetString()!, CultureInfo.InvariantCulture);
16 | }
17 | public override void Write(Utf8JsonWriter writer, TimeSpan value, JsonSerializerOptions options)
18 | {
19 | writer.WriteStringValue(value.ToString("c"));
20 | }
21 | }
--------------------------------------------------------------------------------
/Configuration/JsonIndent.cs:
--------------------------------------------------------------------------------
1 | using DanielWillett.ReflectionTools;
2 | using DevkitServer.API;
3 | using System.Text.Json;
4 |
5 | namespace DevkitServer.Configuration;
6 |
7 | ///
8 | /// Represents a temporarily indented or not indented section of JSON while using a .
9 | ///
10 | /// Use with and .
11 | [EarlyTypeInit]
12 | public readonly struct JsonIndent : IDisposable
13 | {
14 | internal static readonly InstanceSetter? SetOptions = Accessor.GenerateInstanceSetter("_options");
15 |
16 | ///
17 | /// Initial value of the indent setting.
18 | ///
19 | public readonly bool StartValue;
20 |
21 | ///
22 | /// Active writer for this indent section.
23 | ///
24 | public readonly Utf8JsonWriter? Writer;
25 | internal JsonIndent(Utf8JsonWriter writer, bool isIndented)
26 | {
27 | Writer = writer;
28 | StartValue = writer.Options.Indented;
29 | if (StartValue != isIndented)
30 | SetOptions?.Invoke(writer, writer.Options with { Indented = StartValue });
31 | }
32 |
33 | ///
34 | /// Revert your changes to the indent setting of a .
35 | ///
36 | public void Dispose()
37 | {
38 | if (Writer != null && Writer.Options.Indented != StartValue)
39 | SetOptions?.Invoke(Writer, Writer.Options with { Indented = StartValue });
40 | }
41 | }
--------------------------------------------------------------------------------
/Configuration/SchemaConfiguration.cs:
--------------------------------------------------------------------------------
1 | using Newtonsoft.Json;
2 | using System.Text.Json.Serialization;
3 |
4 | namespace DevkitServer.Configuration;
5 |
6 | ///
7 | /// Allows easily adding a schema to your configuration file by deriving your class from this class.
8 | ///
9 | public abstract class SchemaConfiguration
10 | {
11 | ///
12 | /// Relative or absolute URI to a JSON schema file.
13 | ///
14 | [JsonProperty("$schema", DefaultValueHandling = DefaultValueHandling.Ignore, Order = 1)]
15 | [JsonPropertyName("$schema")]
16 | public string SchemaURI => GetSchemaURI();
17 |
18 | ///
19 | /// Return a plain-text URL or relative path to the JSON schema for this config.
20 | ///
21 | protected abstract string GetSchemaURI();
22 | }
23 |
--------------------------------------------------------------------------------
/Configuration/Utf8JsonWriterEx.cs:
--------------------------------------------------------------------------------
1 | using System.Text.Json;
2 |
3 | namespace DevkitServer.Configuration;
4 |
5 | ///
6 | /// Extension methods for .
7 | ///
8 | public static class Utf8JsonWriterEx
9 | {
10 | ///
11 | /// Stops indenting until disposed. Use this with a statement.
12 | ///
13 | public static JsonIndent StopIndenting(this Utf8JsonWriter writer)
14 | {
15 | return JsonIndent.SetOptions == null || !writer.Options.Indented ? default : new JsonIndent(writer, false);
16 | }
17 |
18 | ///
19 | /// Starts indenting until disposed. Use this with a statement.
20 | ///
21 | public static JsonIndent StartIndenting(this Utf8JsonWriter writer)
22 | {
23 | return JsonIndent.SetOptions == null || writer.Options.Indented ? default : new JsonIndent(writer, true);
24 | }
25 | }
--------------------------------------------------------------------------------
/Core/Cartography/CartographyHelper.cs:
--------------------------------------------------------------------------------
1 | using DanielWillett.ReflectionTools;
2 | using System.Reflection;
3 |
4 | namespace DevkitServer.Core.Cartography;
5 |
6 | ///
7 | /// Contains helpers for writing cartography providers.
8 | ///
9 | public static class CartographyHelper
10 | {
11 | private static readonly Action? CallListen = Accessor.GenerateStaticCaller(
12 | typeof(Provider).GetMethod("listen", BindingFlags.Static | BindingFlags.NonPublic | BindingFlags.Public)!,
13 | throwOnError: false);
14 |
15 | #if CLIENT
16 | ///
17 | /// Keeps the client alive when called from the main thread, dequeuing any incomming messages and sending ping requests.
18 | ///
19 | /// in the case of a reflection failure.
20 | public static bool KeepClientAlive()
21 | {
22 | if (CallListen == null)
23 | return false;
24 |
25 | try
26 | {
27 | CallListen();
28 | }
29 | catch (Exception ex)
30 | {
31 | Logger.DevkitServer.LogWarning("Provider.listen", ex, "An error was thrown listening for incoming messages.");
32 | }
33 | return true;
34 | }
35 | #endif
36 | }
37 |
--------------------------------------------------------------------------------
/Core/Cartography/Jobs/EncodeImageJob.cs:
--------------------------------------------------------------------------------
1 | using Unity.Collections;
2 | using Unity.Jobs;
3 | using UnityEngine.Experimental.Rendering;
4 |
5 | namespace DevkitServer.Core.Cartography.Jobs;
6 |
7 | // https://gamedev.stackexchange.com/questions/200761/using-unity-jobs-to-encode-file-to-png-and-then-save-it-on-main-thread
8 | internal struct EncodeImageJob : IJob
9 | {
10 | public NativeArray InputTexture;
11 | public NativeArray OutputPNG;
12 | public GraphicsFormat GraphicsFormat;
13 | public NativeArray OutputSize;
14 | public Vector2Int Size;
15 | public bool UseJpeg;
16 | public int JpegQuality;
17 | public void Execute()
18 | {
19 | NativeArray actualOutput = UseJpeg
20 | ? ImageConversion.EncodeNativeArrayToJPG(InputTexture, GraphicsFormat, (uint)Size.x, (uint)Size.y, quality: JpegQuality)
21 | : ImageConversion.EncodeNativeArrayToPNG(InputTexture, GraphicsFormat, (uint)Size.x, (uint)Size.y);
22 |
23 | NativeArray.Copy(actualOutput, OutputPNG, actualOutput.Length);
24 |
25 | OutputSize[0] = actualOutput.Length;
26 |
27 | actualOutput.Dispose();
28 | }
29 | }
30 |
--------------------------------------------------------------------------------
/Core/Cartography/Jobs/SetupChartRaycastsJob.cs:
--------------------------------------------------------------------------------
1 | using Unity.Collections;
2 | using Unity.Jobs;
3 |
4 | namespace DevkitServer.Core.Cartography.Jobs;
5 |
6 | internal struct SetupChartRaycastsJob : IJobParallelFor
7 | {
8 | private static readonly int ChartMask = RayMasks.CHART;
9 |
10 | public NativeArray Commands;
11 | public NativeArray Casts;
12 | public Vector3 Direction;
13 | public float Length;
14 | public float Height;
15 | public void Execute(int index)
16 | {
17 | Vector2 castPoint = Casts[index];
18 | index *= 4;
19 |
20 | Vector3 dir = Direction;
21 | float len = Length;
22 | int chart = ChartMask;
23 | float height = Height;
24 |
25 | Commands[index] = new RaycastCommand(new Vector3(castPoint.x + 0.75f, height, castPoint.y + 0.75f), dir, len, chart);
26 | Commands[index + 1] = new RaycastCommand(new Vector3(castPoint.x + 0.25f, height, castPoint.y + 0.75f), dir, len, chart);
27 | Commands[index + 2] = new RaycastCommand(new Vector3(castPoint.x + 0.75f, height, castPoint.y + 0.25f), dir, len, chart);
28 | Commands[index + 3] = new RaycastCommand(new Vector3(castPoint.x + 0.25f, height, castPoint.y + 0.25f), dir, len, chart);
29 | }
30 | }
31 |
--------------------------------------------------------------------------------
/Core/Logging/LogMessage.cs:
--------------------------------------------------------------------------------
1 | namespace DevkitServer.Core.Logging;
2 |
3 | public readonly record struct LogMessage(string Message, ConsoleColor? Color, bool SaveToUnturnedLog, Severity Severity);
--------------------------------------------------------------------------------
/Core/Logging/Terminals/ExternalLoggingTerminal.cs:
--------------------------------------------------------------------------------
1 | using DevkitServer.API.Logging;
2 |
3 | namespace DevkitServer.Core.Logging.Terminals;
4 | internal sealed class ExternalLoggingTerminal : ITerminal
5 | {
6 | #pragma warning disable CS0067
7 | public event TerminalPreReadDelegate? OnInput;
8 | public event TerminalPreWriteDelegate? OnOutput;
9 | public bool IsComittingToUnturnedLog => false;
10 | #pragma warning restore CS0067
11 | public void Write(ReadOnlySpan input, ConsoleColor? color, bool saveToUnturnedLog, Severity severity)
12 | {
13 | OnOutput?.Invoke(ref input, ref color, severity);
14 | lock (this)
15 | {
16 | ConsoleColor foregroundOld = Console.ForegroundColor;
17 | if (color.HasValue)
18 | Console.ForegroundColor = color.Value;
19 |
20 | Console.WriteLine(input.ToString());
21 |
22 | if (color.HasValue)
23 | Console.ForegroundColor = foregroundOld;
24 | }
25 | }
26 | public void Init() { }
27 | public void Close() { }
28 | }
29 |
--------------------------------------------------------------------------------
/Core/OptionalPatch.cs:
--------------------------------------------------------------------------------
1 | using DevkitServer.API.Abstractions;
2 | using HarmonyLib;
3 | using System.Reflection;
4 |
5 | namespace DevkitServer.Core;
6 | public class OptionalPatch(Harmony patcher, MethodBase originalMethod, MethodInfo patch, IDevkitServerLogger logger, object? source) : IOptionalPatch
7 | {
8 | public MethodBase Method { get; } = originalMethod;
9 | public MethodInfo Patch { get; } = patch;
10 | public bool Unpatch()
11 | {
12 | try
13 | {
14 | patcher.Unpatch(Method, Patch);
15 | return true;
16 | }
17 | catch (Exception ex)
18 | {
19 | if (source is not ILogSource logSource)
20 | logger.LogWarning(source?.ToString() ?? nameof(Unpatch), ex, $"Failed to unpatch {Method.Format()}.");
21 | else
22 | logger.LogWarning(logSource, ex, $"Failed to unpatch {Method.Format()}.");
23 | return false;
24 | }
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/Core/Permissions/DevkitServerGlobalPermissions.cs:
--------------------------------------------------------------------------------
1 | using DevkitServer.API.Permissions;
2 |
3 | namespace DevkitServer.Core.Permissions;
4 | public static class DevkitServerGlobalPermissions
5 | {
6 | public static PermissionLeaf UploadFiles = new PermissionLeaf("files.upload", devkitServer: true);
7 | }
8 |
--------------------------------------------------------------------------------
/Core/SharedResources.cs:
--------------------------------------------------------------------------------
1 | namespace DevkitServer.Core;
2 | internal static class SharedResources
3 | {
4 | #if CLIENT
5 | public static Shader? LogicShader;
6 | #endif
7 |
8 | internal static void LoadFromBundle()
9 | {
10 | Bundle? bundle = DevkitServerModule.Bundle;
11 | if (bundle == null)
12 | {
13 | Logger.DevkitServer.LogWarning(nameof(LoadFromBundle), "Tried to setup shared resources without a loaded bundle.");
14 | return;
15 | }
16 | #if CLIENT
17 | if (LogicShader == null || !LogicShader.name.Equals("Unlit/DS_Passthrough"))
18 | {
19 | Material? mat = bundle.load("resources/mat_passthrough");
20 | LogicShader = mat == null ? Shader.Find("Unlit/Color") : mat.shader;
21 | }
22 | else
23 | LogicShader = Shader.Find("Unlit/Color");
24 |
25 | Logger.DevkitServer.LogDebug(nameof(LoadFromBundle), $"Found logic shader: {LogicShader?.name.Format()}.");
26 | #endif
27 | }
28 |
29 | }
30 |
--------------------------------------------------------------------------------
/Core/Tools/RemoveSpawnTransaction.cs:
--------------------------------------------------------------------------------
1 | #if CLIENT
2 | using DevkitServer.API.Devkit.Spawns;
3 | using SDG.Framework.Devkit.Transactions;
4 |
5 | namespace DevkitServer.Core.Tools;
6 |
7 | public class RemoveSpawnTransaction(BaseSpawnpointNode node) : IDevkitTransaction
8 | {
9 | protected bool _isActive;
10 | bool IDevkitTransaction.delta => true;
11 | public BaseSpawnpointNode Node { get; } = node;
12 |
13 | public void begin() => redo();
14 |
15 | public void end() { }
16 |
17 | public void forget()
18 | {
19 | if (Node == null || _isActive)
20 | return;
21 | Node.RemoveSpawnFromList(true);
22 | }
23 |
24 | public void undo()
25 | {
26 | if (Node != null)
27 | {
28 | Node.AddSpawnToList();
29 | Node.gameObject.SetActive(Node.ShouldBeVisible);
30 | }
31 | _isActive = true;
32 | }
33 |
34 | public void redo()
35 | {
36 | if (Node != null)
37 | {
38 | Node.RemoveSpawnFromList(false);
39 | Node.gameObject.SetActive(false);
40 | }
41 | _isActive = false;
42 | }
43 | }
44 | #endif
--------------------------------------------------------------------------------
/Core/UI/Extensions/EditorLevelPlayersUIExtension.cs:
--------------------------------------------------------------------------------
1 | #if CLIENT
2 | using DanielWillett.UITools.API.Extensions;
3 | using DanielWillett.UITools.API.Extensions.Members;
4 | using DevkitServer.API.Devkit.Spawns;
5 |
6 | namespace DevkitServer.Core.UI.Extensions;
7 |
8 | [UIExtension(typeof(EditorLevelPlayersUI))]
9 | internal class EditorLevelPlayersUIExtension : BaseEditorSpawnsUIExtension
10 | {
11 | [ExistingMember("altToggle", FailureBehavior = ExistingMemberFailureBehavior.Ignore)]
12 | protected ISleekToggle? AlternateToggle;
13 | protected override bool IsVisible
14 | {
15 | get => LevelVisibility.playersVisible;
16 | set => LevelVisibility.playersVisible = value;
17 | }
18 | public EditorLevelPlayersUIExtension() : base(new Vector3(0f, 3f, 0f), 20f, 120f, SpawnType.Player)
19 | {
20 | if (AlternateToggle != null)
21 | AlternateToggle.PositionOffset_Y = -40;
22 | }
23 | protected override void OnRegionUpdated(RegionCoord oldRegion, RegionCoord newRegion, bool isInRegion) { }
24 | protected override Vector3 GetPosition(PlayerSpawnpoint spawn) => spawn.node.position;
25 | protected override bool CheckLabelAlive(PlayerSpawnpoint spawn) => spawn.node != null;
26 | }
27 | #endif
--------------------------------------------------------------------------------
/Core/UI/Extensions/MenuDashboardUIExtension.cs:
--------------------------------------------------------------------------------
1 | #if CLIENT
2 | #nullable disable
3 | using DanielWillett.UITools.API.Extensions;
4 | using DanielWillett.UITools.API.Extensions.Members;
5 | using DanielWillett.UITools.Util;
6 | using System.Diagnostics;
7 |
8 | namespace DevkitServer.Core.UI.Extensions;
9 |
10 | [UIExtension(typeof(MenuDashboardUI))]
11 | internal class MenuDashboardUIExtension : UIExtension, IDisposable
12 | {
13 | private readonly ISleekButton _githubButton;
14 | [ExistingMember("exitButton")]
15 | private SleekButtonIcon ExitButton { get; set; }
16 |
17 | [ExistingMember("container")]
18 | private SleekFullscreenBox Container { get; set; }
19 |
20 | public MenuDashboardUIExtension()
21 | {
22 | _githubButton = Glazier.Get().CreateButton();
23 |
24 | _githubButton.CopyTransformFrom(ExitButton);
25 | _githubButton.PositionOffset_Y = ExitButton.PositionOffset_Y - 60;
26 | _githubButton.Text = "DevkitServer GitHub";
27 | _githubButton.FontSize = ESleekFontSize.Medium;
28 | _githubButton.OnClicked += OnClickedDevkitServerGithubButton;
29 | _githubButton.BackgroundColor = ESleekTint.BACKGROUND;
30 |
31 | Container.AddChild(_githubButton);
32 | }
33 |
34 | private static void OnClickedDevkitServerGithubButton(ISleekElement button)
35 | {
36 | Process.Start(new ProcessStartInfo
37 | {
38 | FileName = DevkitServerModule.RepositoryUrl,
39 | UseShellExecute = true
40 | });
41 | }
42 |
43 | public void Dispose()
44 | {
45 | _githubButton.OnClicked -= OnClickedDevkitServerGithubButton;
46 | Container.TryRemoveChild(_githubButton);
47 | }
48 | }
49 | #nullable restore
50 | #endif
--------------------------------------------------------------------------------
/Core/UI/Extensions/MenuPlaySingleplayerUIExtension.cs:
--------------------------------------------------------------------------------
1 | #if CLIENT
2 | using DanielWillett.UITools.API.Extensions;
3 | using DanielWillett.UITools.API.Extensions.Members;
4 |
5 | namespace DevkitServer.Core.UI.Extensions;
6 |
7 | [UIExtension(typeof(MenuPlaySingleplayerUI), SuppressUIExtensionParentWarning = true)]
8 | internal class MenuPlaySingleplayerUIExtension
9 | {
10 | #nullable disable
11 | [ExistingMember("container")]
12 | private SleekFullscreenBox Container { get; set; }
13 | #nullable restore
14 | public MenuPlaySingleplayerUIExtension()
15 | {
16 | ISleekButton refreshButton = Glazier.Get().CreateButton();
17 |
18 | refreshButton.PositionOffset_X = -305;
19 | refreshButton.PositionOffset_Y = 520;
20 | refreshButton.PositionScale_X = 0.5f;
21 | refreshButton.SizeOffset_X = 200;
22 | refreshButton.SizeOffset_Y = 30;
23 | refreshButton.Text = DevkitServerModule.MainLocalization.Translate("RefreshLevelsButton");
24 | refreshButton.OnClicked += OnClickedRefresh;
25 |
26 | Container.AddChild(refreshButton);
27 | }
28 |
29 | private void OnClickedRefresh(ISleekElement button)
30 | {
31 | AssetUtil.RescanAllLevels();
32 | }
33 | }
34 | #endif
--------------------------------------------------------------------------------
/Core/UI/Extensions/MenuWorkshopEditorUIExtension.cs:
--------------------------------------------------------------------------------
1 | #if CLIENT
2 | using DanielWillett.UITools.API.Extensions;
3 | using DanielWillett.UITools.API.Extensions.Members;
4 |
5 | namespace DevkitServer.Core.UI.Extensions;
6 |
7 | [UIExtension(typeof(MenuWorkshopEditorUI), SuppressUIExtensionParentWarning = true)]
8 | internal class MenuWorkshopEditorUIExtension
9 | {
10 | #nullable disable
11 | [ExistingMember("container")]
12 | private SleekFullscreenBox Container { get; set; }
13 | #nullable restore
14 | public MenuWorkshopEditorUIExtension()
15 | {
16 | ISleekButton refreshButton = Glazier.Get().CreateButton();
17 |
18 | refreshButton.PositionOffset_X = -305;
19 | refreshButton.PositionOffset_Y = 570;
20 | refreshButton.PositionScale_X = 0.5f;
21 | refreshButton.SizeOffset_X = 200;
22 | refreshButton.SizeOffset_Y = 30;
23 | refreshButton.Text = DevkitServerModule.MainLocalization.Translate("RefreshLevelsButton");
24 | refreshButton.OnClicked += OnClickedRefresh;
25 |
26 | Container.AddChild(refreshButton);
27 | }
28 |
29 | private void OnClickedRefresh(ISleekElement button)
30 | {
31 | AssetUtil.RescanAllLevels();
32 | }
33 | }
34 | #endif
--------------------------------------------------------------------------------
/Core/UI/SleekCompositorPipeline.cs:
--------------------------------------------------------------------------------
1 | #if CLIENT
2 | using Cysharp.Threading.Tasks;
3 | using DevkitServer.API.Cartography;
4 | using DevkitServer.API.Cartography.Compositors;
5 | using System.Diagnostics;
6 | using System.Text.Json;
7 |
8 | namespace DevkitServer.Core.UI;
9 |
10 | public class SleekCompositorPipeline : SleekWrapper
11 | {
12 | private readonly SleekButtonIcon _buttonWithIcon;
13 | public string FileName { get; }
14 | public CartographyType Type { get; }
15 | public SleekCompositorPipeline(string fileName, string displayName, CartographyType type, Texture2D? texture)
16 | {
17 | FileName = fileName;
18 | Type = type;
19 |
20 | _buttonWithIcon = new SleekButtonIcon(texture, 20, false)
21 | {
22 | text = displayName,
23 | tooltip = fileName,
24 | SizeScale_X = 1f,
25 | SizeScale_Y = 1f
26 | };
27 |
28 | _buttonWithIcon.onClickedButton += OnClicked;
29 | _buttonWithIcon.onRightClickedButton += OnRightClicked;
30 |
31 | AddChild(_buttonWithIcon);
32 | }
33 |
34 | private void OnRightClicked(ISleekElement button)
35 | {
36 | if (!File.Exists(FileName))
37 | return;
38 |
39 | Process.Start(new ProcessStartInfo
40 | {
41 | FileName = FileName,
42 | UseShellExecute = true
43 | });
44 | }
45 |
46 | private void OnClicked(ISleekElement button)
47 | {
48 | CompositorPipeline? pipeline = CompositorPipeline.FromFile(FileName, out JsonDocument doc);
49 |
50 | if (pipeline == null)
51 | {
52 | doc.Dispose();
53 | return;
54 | }
55 |
56 | UniTask.Create(async () =>
57 | {
58 | string? path = await pipeline.Composite();
59 | pipeline.Dispose();
60 | if (path == null || !pipeline.AutoOpen)
61 | return;
62 |
63 | Process.Start(new ProcessStartInfo
64 | {
65 | FileName = path,
66 | UseShellExecute = true
67 | });
68 | });
69 | }
70 | }
71 | #endif
--------------------------------------------------------------------------------
/DevkitServer.Launcher/Models/NuGetIndexModels.cs:
--------------------------------------------------------------------------------
1 | extern alias NSJ;
2 |
3 | using NuGet.Versioning;
4 | using System;
5 | using NSJ::Newtonsoft.Json;
6 |
7 | namespace DevkitServer.Launcher.Models;
8 | internal class NuGetIndex
9 | {
10 | [JsonProperty("version")]
11 | public string? Version { get; set; }
12 |
13 | [JsonProperty("resources")]
14 | public NuGetResource[] Resources { get; set; } = Array.Empty();
15 | }
16 |
17 | #nullable disable
18 | internal class NuGetResource
19 | {
20 | [JsonProperty("@id")]
21 | public string Id { get; set; }
22 |
23 | [JsonProperty("@type")]
24 | public string Type { get; set; }
25 |
26 | [JsonProperty("comment")]
27 | public string Comment { get; set; }
28 | }
29 | #nullable restore
--------------------------------------------------------------------------------
/DevkitServer.Launcher/Models/NuGetVersionsResponse.cs:
--------------------------------------------------------------------------------
1 | extern alias NSJ;
2 |
3 | using NSJ::Newtonsoft.Json;
4 | using System;
5 |
6 | namespace DevkitServer.Launcher.Models;
7 | internal class NuGetVersionsResponse
8 | {
9 | [JsonProperty("versions")]
10 | public string[] Versions { get; set; } = Array.Empty();
11 | }
--------------------------------------------------------------------------------
/DevkitServer.Launcher/Module/DevkitServer.Launcher.module:
--------------------------------------------------------------------------------
1 | {
2 | "IsEnabled": true,
3 | "Name": "DevkitServer.Launcher",
4 | "Version": "1.0.0.4",
5 | "Assemblies":
6 | [
7 | {
8 | "Path": "/Libraries/NuGet/NuGet.Versioning.dll",
9 | "Role": "Both_Optional"
10 | },
11 | {
12 | "Path": "/Libraries/NuGet/NuGet.Packaging.Core.Types.dll",
13 | "Role": "Both_Optional"
14 | },
15 | {
16 | "Path": "/Libraries/NuGet/NuGet.Common.dll",
17 | "Role": "Both_Optional"
18 | },
19 | {
20 | "Path": "/Libraries/NuGet/NuGet.Packaging.dll",
21 | "Role": "Both_Optional"
22 | },
23 | {
24 | "Path": "/Libraries/NuGet/NuGet.Packaging.Core.dll",
25 | "Role": "Both_Optional"
26 | },
27 | {
28 | "Path": "/Libraries/NuGet/NuGet.Frameworks.dll",
29 | "Role": "Both_Optional"
30 | },
31 | {
32 | "Path": "/Libraries/System.IO.Compression/System.IO.Compression.dll",
33 | "Role": "Both_Optional"
34 | },
35 | {
36 | "Path": "/Bin/DevkitServer.Launcher.dll",
37 | "Role": "Client"
38 | },
39 | {
40 | "Path": "/Bin/DevkitServer.Launcher.dll",
41 | "Role": "Server"
42 | }
43 | ]
44 | }
45 |
--------------------------------------------------------------------------------
/DevkitServer.Launcher/Module/English.dat:
--------------------------------------------------------------------------------
1 | Name Devkit Server Launcher
2 | Description Launcher/updater for DevkitServer, a multiplayer map editor module for Unturned.
3 |
--------------------------------------------------------------------------------
/DevkitServer.Launcher/Module/Libraries/NuGet/NuGet.Common.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DanielWillett/DevkitServer/557c59f537c0caca18954818a106bd73c40dbb36/DevkitServer.Launcher/Module/Libraries/NuGet/NuGet.Common.dll
--------------------------------------------------------------------------------
/DevkitServer.Launcher/Module/Libraries/NuGet/NuGet.Configuration.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DanielWillett/DevkitServer/557c59f537c0caca18954818a106bd73c40dbb36/DevkitServer.Launcher/Module/Libraries/NuGet/NuGet.Configuration.dll
--------------------------------------------------------------------------------
/DevkitServer.Launcher/Module/Libraries/NuGet/NuGet.Frameworks.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DanielWillett/DevkitServer/557c59f537c0caca18954818a106bd73c40dbb36/DevkitServer.Launcher/Module/Libraries/NuGet/NuGet.Frameworks.dll
--------------------------------------------------------------------------------
/DevkitServer.Launcher/Module/Libraries/NuGet/NuGet.Packaging.Core.Types.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DanielWillett/DevkitServer/557c59f537c0caca18954818a106bd73c40dbb36/DevkitServer.Launcher/Module/Libraries/NuGet/NuGet.Packaging.Core.Types.dll
--------------------------------------------------------------------------------
/DevkitServer.Launcher/Module/Libraries/NuGet/NuGet.Packaging.Core.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DanielWillett/DevkitServer/557c59f537c0caca18954818a106bd73c40dbb36/DevkitServer.Launcher/Module/Libraries/NuGet/NuGet.Packaging.Core.dll
--------------------------------------------------------------------------------
/DevkitServer.Launcher/Module/Libraries/NuGet/NuGet.Packaging.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DanielWillett/DevkitServer/557c59f537c0caca18954818a106bd73c40dbb36/DevkitServer.Launcher/Module/Libraries/NuGet/NuGet.Packaging.dll
--------------------------------------------------------------------------------
/DevkitServer.Launcher/Module/Libraries/NuGet/NuGet.Versioning.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DanielWillett/DevkitServer/557c59f537c0caca18954818a106bd73c40dbb36/DevkitServer.Launcher/Module/Libraries/NuGet/NuGet.Versioning.dll
--------------------------------------------------------------------------------
/DevkitServer.Launcher/Module/Libraries/System.IO.Compression.FileSystem/System.IO.Compression.FileSystem.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DanielWillett/DevkitServer/557c59f537c0caca18954818a106bd73c40dbb36/DevkitServer.Launcher/Module/Libraries/System.IO.Compression.FileSystem/System.IO.Compression.FileSystem.dll
--------------------------------------------------------------------------------
/DevkitServer.Launcher/Module/Libraries/System.IO.Compression/System.IO.Compression.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DanielWillett/DevkitServer/557c59f537c0caca18954818a106bd73c40dbb36/DevkitServer.Launcher/Module/Libraries/System.IO.Compression/System.IO.Compression.dll
--------------------------------------------------------------------------------
/DevkitServer.Launcher/Module/Libraries/System.Xml.Linq/LICENSE.txt:
--------------------------------------------------------------------------------
1 | The MIT License (MIT)
2 |
3 | Copyright (c) .NET Foundation and Contributors
4 |
5 | All rights reserved.
6 |
7 | Permission is hereby granted, free of charge, to any person obtaining a copy
8 | of this software and associated documentation files (the "Software"), to deal
9 | in the Software without restriction, including without limitation the rights
10 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
11 | copies of the Software, and to permit persons to whom the Software is
12 | furnished to do so, subject to the following conditions:
13 |
14 | The above copyright notice and this permission notice shall be included in all
15 | copies or substantial portions of the Software.
16 |
17 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
18 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
19 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
20 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
21 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
22 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
23 | SOFTWARE.
--------------------------------------------------------------------------------
/DevkitServer.Launcher/Module/Libraries/System.Xml.Linq/System.Xml.Linq.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DanielWillett/DevkitServer/557c59f537c0caca18954818a106bd73c40dbb36/DevkitServer.Launcher/Module/Libraries/System.Xml.Linq/System.Xml.Linq.dll
--------------------------------------------------------------------------------
/DevkitServer.Launcher/Privacy Info.md:
--------------------------------------------------------------------------------
1 | # Privacy Policy
2 | `DevkitServer`, `DevkitServer.Launcher`, or `DevkitServer.Resources` do not collect any information about the user whatsoever.
3 |
4 | `DevkitServer.Server` does communicate with clients directly in some cases (instead of through Steam servers). This can be disabled in the server settings (`enable_high_speed_support: false`).
5 |
6 | As a client, be aware that there is no limit to what a server host could put in the map that is sent to your client. Make sure you trust the server you are joining.
7 | While there is a file type filter, it's easy enough to get around.
8 |
9 | ## DevkitServer.Launcher
10 | NuGet collects some information when downloading a DevkitServer update or checking for updates.
11 |
12 | This applies to anyone using `DevkitServer.Launcher`.
13 |
14 | Their policies can be read here: https://github.com/NuGet/Home/blob/dev/Privacy-Policy.md, https://privacy.microsoft.com/en-us/privacystatement
15 |
16 | To avoid this, install DevkitServer manually.
--------------------------------------------------------------------------------
/DevkitServer.Launcher/Properties/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | using System.Reflection;
2 | using System.Runtime.CompilerServices;
3 | using System.Runtime.InteropServices;
4 |
5 | // Setting ComVisible to false makes the types in this assembly not visible
6 | // to COM components. If you need to access a type in this assembly from
7 | // COM, set the ComVisible attribute to true on that type.
8 | [assembly: ComVisible(false)]
9 |
10 | // The following GUID is for the ID of the typelib if this project is exposed to COM
11 | [assembly: Guid("5b03e97d-9e96-4f25-9200-33035ccd1902")]
12 |
--------------------------------------------------------------------------------
/DevkitServer.Launcher/devkitserver.launcher.dll.publickey:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DanielWillett/DevkitServer/557c59f537c0caca18954818a106bd73c40dbb36/DevkitServer.Launcher/devkitserver.launcher.dll.publickey
--------------------------------------------------------------------------------
/DevkitServer.Resources/Properties/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | using System.Runtime.CompilerServices;
2 | using System.Runtime.InteropServices;
3 |
4 | // Setting ComVisible to false makes the types in this assembly not visible
5 | // to COM components. If you need to access a type in this assembly from
6 | // COM, set the ComVisible attribute to true on that type.
7 | [assembly: ComVisible(false)]
8 |
9 | // The following GUID is for the ID of the typelib if this project is exposed to COM
10 | [assembly: Guid("5b03e97d-9e96-4f25-9200-33035ccd1902")]
11 | #if DEBUG
12 | [assembly: InternalsVisibleTo("DevkitServer.Launcher")]
13 | #else
14 | [assembly: InternalsVisibleTo("DevkitServer.Launcher, PublicKey=00240000048000009400000006020000002400005253413100040000010001005514b81610f0d4950ccb290c37453cf2af725553b1e262b2b26c8b302062c334d437df5a3bc474d0feb5061cd745e4de76a701ebd0c6d0d01cf9edf7e141a22e9db2aa45e0f6a52721f3030d57e64c85f4d36a758afbef01f0d567e969e7f33bfa8a1918fbbc1cb379cb422580cef4fb1f589ad73bdd4be4d8619a677ac07dd3")]
15 | #endif
--------------------------------------------------------------------------------
/DevkitServer.Resources/README.md:
--------------------------------------------------------------------------------
1 | This project packs all the module files and libraries for DevkitServer (https://github.com/DanielWillett/DevkitServer).
2 |
3 | It's used to update those files automatically.
--------------------------------------------------------------------------------
/DevkitServer.Resources/Side.cs:
--------------------------------------------------------------------------------
1 | namespace DevkitServer.Resources;
2 | public enum Side
3 | {
4 | None = 0,
5 | Client = 1,
6 | Server = 2,
7 | Both = Client | Server
8 | }
9 |
--------------------------------------------------------------------------------
/DevkitServer.Resources/devkitserver.resources.dll.publickey:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DanielWillett/DevkitServer/557c59f537c0caca18954818a106bd73c40dbb36/DevkitServer.Resources/devkitserver.resources.dll.publickey
--------------------------------------------------------------------------------
/DevkitServer.Tests/AssertEx.cs:
--------------------------------------------------------------------------------
1 | using Microsoft.VisualStudio.TestTools.UnitTesting;
2 | using SDG.Unturned;
3 |
4 | namespace DevkitServer.Tests;
5 | internal static class AssertEx
6 | {
7 | public static void AreNearlyEqual(this Assert impl, float expected, float actual)
8 | {
9 | if (!MathfEx.IsNearlyEqual(expected, actual))
10 | throw new AssertFailedException($"Failed to assert IsNearlyEqual: Expected: <{expected}>, Actual: <{actual}>.");
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/DevkitServer.Tests/FormattingUtilTests.cs:
--------------------------------------------------------------------------------
1 | using System.Globalization;
2 | using Microsoft.VisualStudio.TestTools.UnitTesting;
3 |
4 | namespace DevkitServer.Tests;
5 | /// Unit tests for .
6 |
7 | [TestClass]
8 | public class FormattingUtilTests
9 | {
10 | [TestMethod]
11 | public void TestSpaceProperCaseStringNormal()
12 | {
13 | string result = FormattingUtil.SpaceProperCaseString("DevkitServer");
14 |
15 | Assert.AreEqual("Devkit Server", result);
16 | }
17 |
18 | [TestMethod]
19 | public void TestSpaceProperCaseStringStartingAcronym()
20 | {
21 | string result = FormattingUtil.SpaceProperCaseString("AAABbb");
22 |
23 | Assert.AreEqual("AAA Bbb", result);
24 | }
25 |
26 | [TestMethod]
27 | public void TestSpaceProperCaseStringFullAcronym()
28 | {
29 | string result = FormattingUtil.SpaceProperCaseString("AAAA");
30 |
31 | Assert.AreEqual("AAAA", result);
32 | }
33 |
34 | [TestMethod]
35 | public void TestSpaceProperCaseStringFullAcronymWithSpaces()
36 | {
37 | string result = FormattingUtil.SpaceProperCaseString("UI EXT MANAGER");
38 |
39 | Assert.AreEqual("UI EXT MANAGER", result);
40 | }
41 |
42 | [TestMethod]
43 | public void TestSpaceProperCaseStringMiddleAcronym()
44 | {
45 | string result = FormattingUtil.SpaceProperCaseString("AaaaAABb");
46 |
47 | Assert.AreEqual("Aaaa AA Bb", result);
48 | }
49 |
50 | [TestMethod]
51 | public void TestSpaceProperCaseStringEndingAcronym()
52 | {
53 | string result = FormattingUtil.SpaceProperCaseString("AaAA");
54 |
55 | Assert.AreEqual("Aa AA", result);
56 | }
57 | [TestMethod]
58 | public void TestSpaceProperCaseUnderscoresNormal()
59 | {
60 | string result = FormattingUtil.SpaceProperCaseString("Devkit_Server");
61 |
62 | Assert.AreEqual("Devkit Server", result);
63 | }
64 | }
65 |
--------------------------------------------------------------------------------
/DevkitServer.Tests/ParseWorldTimeTests.cs:
--------------------------------------------------------------------------------
1 | using Microsoft.VisualStudio.TestTools.UnitTesting;
2 | using System.Globalization;
3 |
4 | namespace DevkitServer.Tests;
5 |
6 | [TestClass]
7 | public class ParseWorldTimeTests
8 | {
9 | [TestMethod]
10 | [DataRow("0:0", 0, 0)]
11 | [DataRow("00:00", 0, 0)]
12 | [DataRow("000:000", 0, 0)]
13 | [DataRow("12:00", 12, 0)]
14 | [DataRow("12:59", 12, 59)]
15 | [DataRow("23:59", 23, 59)]
16 | [DataRow("23:59:59", 23, 59)]
17 |
18 | [DataRow("11:59 AM", 11, 59)]
19 | [DataRow("11:59:00 AM", 11, 59)]
20 | [DataRow("11:59 PM", 23, 59)]
21 | [DataRow("11:59:00 PM", 23, 59)]
22 |
23 | [DataRow("3", 3, 0)]
24 |
25 | [DataRow("3 AM", 3, 0)]
26 | [DataRow("3AM", 3, 0)]
27 | [DataRow("3 PM", 15, 0)]
28 | [DataRow("3PM", 15, 0)]
29 |
30 | [DataRow("12 PM", 12, 0)]
31 | [DataRow("12 AM", 0, 0)]
32 | public void TestTimeParse(string time, int hrs, int mins)
33 | {
34 | Assert.IsTrue(LightingUtil.TryParseTime(time, CultureInfo.InvariantCulture, out uint hours, out uint minutes));
35 |
36 | Assert.AreEqual((uint)hrs, hours);
37 | Assert.AreEqual((uint)mins, minutes);
38 | }
39 |
40 | [TestMethod]
41 | [DataRow("24:00")]
42 | [DataRow("-10:00")]
43 | [DataRow("10:-10")]
44 | [DataRow("3:60")]
45 | [DataRow("25:61")]
46 | [DataRow("0 AM")]
47 | [DataRow("0:00 AM")]
48 | [DataRow("0 PM")]
49 | [DataRow("0:00 PM")]
50 | public void TestOutOfRangeTimeParse(string time)
51 | {
52 | Assert.IsFalse(LightingUtil.TryParseTime(time, CultureInfo.InvariantCulture, out uint hours, out uint minutes));
53 | }
54 |
55 | }
--------------------------------------------------------------------------------
/DevkitServer.Tests/Properties/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | using System.Reflection;
2 | using System.Runtime.CompilerServices;
3 | using System.Runtime.InteropServices;
4 |
5 | [assembly: ComVisible(false)]
6 |
7 | [assembly: Guid("1653cb14-e527-4fd1-ab0f-06dac72bfcdf")]
8 |
--------------------------------------------------------------------------------
/DevkitServer.Tests/TestHelpers.cs:
--------------------------------------------------------------------------------
1 | using DevkitServer.API;
2 | using StackCleaner;
3 | using System.Reflection;
4 | using System.Threading;
5 |
6 | namespace DevkitServer.Tests;
7 | internal class TestHelpers
8 | {
9 | public static void SetupMainThread()
10 | {
11 | typeof(ThreadUtil).GetProperty("gameThread", BindingFlags.Static | BindingFlags.Public)!
12 | .GetSetMethod(true)!.Invoke(null, [ Thread.CurrentThread ]);
13 | }
14 | public static void SetupFormatProvider()
15 | {
16 | StackTraceCleaner cleaner = new StackTraceCleaner(new StackCleanerConfiguration
17 | {
18 | ColorFormatting = StackColorFormatType.None,
19 | Colors = Color4Config.Default
20 | });
21 | FormattingUtil.FormatProvider = new TestFormatProvider(cleaner);
22 | }
23 | }
24 |
25 | file class TestFormatProvider(StackTraceCleaner cleaner) : ITerminalFormatProvider
26 | {
27 | public StackTraceCleaner StackCleaner { get; } = cleaner;
28 | }
--------------------------------------------------------------------------------
/DevkitServer.Tests/devkitserver.tests.exe.publickey:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DanielWillett/DevkitServer/557c59f537c0caca18954818a106bd73c40dbb36/DevkitServer.Tests/devkitserver.tests.exe.publickey
--------------------------------------------------------------------------------
/DevkitServer.csproj.DotSettings:
--------------------------------------------------------------------------------
1 |
2 | True
--------------------------------------------------------------------------------
/DevkitServer.sln.DotSettings:
--------------------------------------------------------------------------------
1 |
2 | True
3 | FPS
--------------------------------------------------------------------------------
/Documentation/Cartography/Custom Color Providers.md:
--------------------------------------------------------------------------------
1 | # Creating a custom IChartColorProvider
2 |
3 | Plugins can define custom color providers.
4 |
5 | They must implement one of the following types:
6 |
7 | | Type | Use Case |
8 | | ----------------------------- | ----------------------------------------------------------------------------------------------- |
9 | | `RaycastChartColorProvider` | Provides an API for working with the results of ray casts directly, using Unity Jobs for speed. |
10 | | `ISamplingChartColorProvider` | Provides an API for simply returning a color for each pixel given it's world position. |
11 | | `IFullChartColorProvider` | Provides an API for capturing the entire image in a fully custom way. |
12 |
13 | The provider uses the `bool TryInitialize` function to decide whether or not the provider can be used.
14 |
15 | This could be by checking for the presence of a file, etc.
16 |
17 | Note that when using `RaycastChartColorProvider` it's important to call `base.TryInitialize` if you're overriding it.
18 |
19 | An `isExplicitlyDefined` parameter says whether or not the `cartography_config.json` file explicitly asked for this provider.
20 |
21 |
--------------------------------------------------------------------------------
/Documentation/Cartography/Custom Compositors.md:
--------------------------------------------------------------------------------
1 | # Creating a custom ICartographyCompositor
2 |
3 | Plugins can define custom compositors to perform post-processing on the output images for satellites and charts.
4 |
5 | They must implement `ICartographyCompositor` and can define which map types they support using `SupportsSatellite` and `SupportsChart`.
6 |
7 | `bool Composite` will be invoked after the image is created, returning whether or not the compositor actually made any changes (just for logging).
8 |
9 | If no compositors are defined in the `cartography_config.json`, all available compositors will be used in order of their priority (lowest priority first so the highest priority graphics render on top).
--------------------------------------------------------------------------------
/ForwardingTargets/LevelObjectIcons/API/IDefaultIconProvider.cs:
--------------------------------------------------------------------------------
1 | using SDG.Unturned;
2 | using UnityEngine;
3 |
4 | namespace DanielWillett.LevelObjectIcons.API;
5 | public interface IDefaultIconProvider
6 | {
7 | int Priority { get; }
8 | void GetMetrics(ObjectAsset @object, out Vector3 position, out Quaternion rotation);
9 | bool AppliesTo(ObjectAsset @object);
10 | }
--------------------------------------------------------------------------------
/ForwardingTargets/LevelObjectIcons/Configuration/IDefaultable.cs:
--------------------------------------------------------------------------------
1 | namespace DanielWillett.LevelObjectIcons.Configuration;
2 | public interface IDefaultable
3 | {
4 | void SetDefaults();
5 | }
6 |
--------------------------------------------------------------------------------
/ForwardingTargets/LevelObjectIcons/Configuration/LevelObjectIconsConfig.cs:
--------------------------------------------------------------------------------
1 | using UnityEngine;
2 |
3 | namespace DanielWillett.LevelObjectIcons.Configuration;
4 | public class LevelObjectIconsConfig
5 | {
6 | public string SchemaURI => "https://raw.githubusercontent.com/DanielWillett/LevelObjectIcons/master/Schemas/level_object_icons_config_schema.json";
7 | public KeyCode EditKeybind { get; set; } = KeyCode.F8;
8 | public KeyCode LogMissingKeybind { get; set; } = KeyCode.Keypad5;
9 | public bool ShouldCycleMaterialPalette { get; set; } = true;
10 | public bool EnableDebugLogging { get; set; }
11 | public bool DisableDefaultProviderSearch { get; set; }
12 | }
--------------------------------------------------------------------------------
/ForwardingTargets/LevelObjectIcons/LevelObjectIcons.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | DanielWillett.LevelObjectIcons
5 | netstandard2.1
6 | enable
7 | preview
8 | True
9 | C:\Users\danny\OneDrive\Documents\Strong Name Keys\LevelObjectIcons\LevelObjectIcons.dll.snk
10 | 1.1.2
11 | $(Version).999
12 | $(Version).999
13 | ClientRelease
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
--------------------------------------------------------------------------------
/ForwardingTargets/LevelObjectIcons/LevelObjectIconsNexus.cs:
--------------------------------------------------------------------------------
1 | using DanielWillett.LevelObjectIcons.Configuration;
2 | using DevkitServer;
3 | using DevkitServer.Configuration;
4 | using DevkitServer.Util;
5 | using HarmonyLib;
6 | using SDG.Framework.Modules;
7 | using SDG.Unturned;
8 | using System;
9 | using DevkitServer.API;
10 | using UnityEngine;
11 |
12 | namespace DanielWillett.LevelObjectIcons;
13 |
14 | public sealed class LevelObjectIconsNexus : IModuleNexus
15 | {
16 | public static LevelObjectIconsConfig Config => new LevelObjectIconsConfig
17 | {
18 | EditKeybind = DevkitServerConfig.Config.LevelObjectEditKeybind,
19 | DisableDefaultProviderSearch = DevkitServerConfig.Config.DisableDefaultLevelObjectIconProviderSearch,
20 | LogMissingKeybind = DevkitServerConfig.Config.LogMissingLevelObjectKeybind,
21 | EnableDebugLogging = DevkitServerModule.IsDebug,
22 | ShouldCycleMaterialPalette = DevkitServerConfig.Config.ShouldCycleLevelObjectMaterialPalette
23 | };
24 | public static Asset? SelectedAsset => LevelObjectUtil.SelectedAsset;
25 | public static Local Localization = DevkitServerModule.MainLocalization;
26 | public static Harmony Patcher => AccessorExtensions.DevkitServerModulePatcher;
27 | public static GameObject GameObjectHost => DevkitServerModule.GameObjectHost;
28 | public static void SaveConfig() => DevkitServerConfig.Save();
29 | public static void ReloadConfig() => DevkitServerConfig.Reload();
30 | public static void ReloadTranslations() => DevkitServerModule.ReloadMainLocalization();
31 | void IModuleNexus.initialize() => throw new NotImplementedException();
32 | void IModuleNexus.shutdown() => throw new NotImplementedException();
33 | }
--------------------------------------------------------------------------------
/ForwardingTargets/LevelObjectIcons/Models/AssetIconPreset.cs:
--------------------------------------------------------------------------------
1 | using SDG.Unturned;
2 | using System;
3 | using UnityEngine;
4 |
5 | namespace DanielWillett.LevelObjectIcons.Models;
6 |
7 | public class AssetIconPreset
8 | {
9 | public string? Name => Assets.find(Object)?.name;
10 | public Guid Object { get; set; }
11 | public Vector3 IconPosition { get; set; }
12 | public Quaternion IconRotation { get; set; }
13 | public int Priority { get; set; }
14 | public string? File { get; set; }
15 | }
--------------------------------------------------------------------------------
/ForwardingTargets/LevelObjectIcons/Models/ObjectRenderOptions.cs:
--------------------------------------------------------------------------------
1 | using SDG.Unturned;
2 |
3 | namespace DanielWillett.LevelObjectIcons.Models;
4 | public class ObjectRenderOptions
5 | {
6 | public int MaterialIndexOverride { get; set; } = -1;
7 | public AssetReference MaterialPaletteOverride { get; set; } = AssetReference.invalid;
8 | }
9 |
10 |
--------------------------------------------------------------------------------
/ForwardingTargets/LevelObjectIcons/ObjectIconPresets.cs:
--------------------------------------------------------------------------------
1 | using DanielWillett.LevelObjectIcons.Models;
2 | using DevkitServer.Util;
3 | using System;
4 | using System.Collections.Generic;
5 | using System.Collections.ObjectModel;
6 | using UnityEngine;
7 |
8 | namespace DanielWillett.LevelObjectIcons;
9 | public static class ObjectIconPresets
10 | {
11 | public static readonly Quaternion DefaultObjectRotation = LevelObjectUtil.DefaultObjectRotation;
12 | public static AssetIconPreset? ActivelyEditing => FromInternal(DevkitServer.API.UI.Icons.ObjectIconPresets.ActivelyEditing);
13 | public static bool DebugLogging { get; set; }
14 | public static IReadOnlyDictionary ActivePresets => new ReadOnlyDictionary(GetInternalDictionary());
15 | private static AssetIconPreset? FromInternal(DevkitServer.API.UI.Icons.AssetIconPreset? internalIconAssetPreset)
16 | {
17 | if (internalIconAssetPreset == null)
18 | return null;
19 |
20 | return new AssetIconPreset
21 | {
22 | File = internalIconAssetPreset.File,
23 | IconPosition = internalIconAssetPreset.IconPosition,
24 | IconRotation = internalIconAssetPreset.IconRotation,
25 | Object = internalIconAssetPreset.Asset.GUID,
26 | Priority = internalIconAssetPreset.Priority
27 | };
28 | }
29 | private static Dictionary GetInternalDictionary()
30 | {
31 | IReadOnlyDictionary otherDict = DevkitServer.API.UI.Icons.ObjectIconPresets.ActivePresets;
32 |
33 | Dictionary newDict = new Dictionary(otherDict.Count);
34 |
35 | foreach (KeyValuePair kvp in otherDict)
36 | newDict.Add(kvp.Key, FromInternal(kvp.Value)!);
37 |
38 | return newDict;
39 | }
40 | }
41 |
--------------------------------------------------------------------------------
/LaunchOptions.cs:
--------------------------------------------------------------------------------
1 | namespace DevkitServer;
2 | internal static class LaunchOptions
3 | {
4 | /*
5 | * Prevents deleting files from DevkitServer/Temp/* until needed.
6 | */
7 | public static CommandLineFlag KeepTempFiles = new CommandLineFlag(false, "-DevkitServerKeepTemporaryFiles");
8 | }
9 |
--------------------------------------------------------------------------------
/Levels/DirtyManagerState.cs:
--------------------------------------------------------------------------------
1 | using SDG.Framework.Devkit;
2 |
3 | namespace DevkitServer.Levels;
4 | internal sealed class DirtyManagerState
5 | {
6 | public List States = new List(DirtyManager.dirty.Count);
7 | private DirtyManagerState() { }
8 | public static DirtyManagerState Create()
9 | {
10 | DirtyManagerState state = new DirtyManagerState();
11 | state.States.AddRange(DirtyManager.dirty);
12 | Logger.DevkitServer.LogDebug(nameof(DirtyManagerState), $"Backed up states of {state.States.Count.Format()} {typeof(IDirtyable).Format()}(s).");
13 | return state;
14 | }
15 |
16 | public void Apply()
17 | {
18 | foreach (IDirtyable dirty in States)
19 | {
20 | dirty.isDirty = true;
21 | Logger.DevkitServer.LogDebug(nameof(DirtyManagerState), $"Recovered dirty state of {dirty.Format()}.");
22 | if (!DirtyManager.dirty.Contains(dirty))
23 | DirtyManager.markDirty(dirty);
24 | }
25 |
26 | States.Clear();
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/Levels/IBackupLog.cs:
--------------------------------------------------------------------------------
1 | namespace DevkitServer.Levels;
2 | public interface IBackupLog
3 | {
4 | string RelativeName { get; }
5 | void Write(TextWriter fileWriter);
6 | }
--------------------------------------------------------------------------------
/Libraries/Client/Assembly-CSharp.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DanielWillett/DevkitServer/557c59f537c0caca18954818a106bd73c40dbb36/Libraries/Client/Assembly-CSharp.dll
--------------------------------------------------------------------------------
/Libraries/Client/AstarPathfindingProject.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DanielWillett/DevkitServer/557c59f537c0caca18954818a106bd73c40dbb36/Libraries/Client/AstarPathfindingProject.dll
--------------------------------------------------------------------------------
/Libraries/Client/BattlEye.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DanielWillett/DevkitServer/557c59f537c0caca18954818a106bd73c40dbb36/Libraries/Client/BattlEye.dll
--------------------------------------------------------------------------------
/Libraries/Client/DevkitServer.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DanielWillett/DevkitServer/557c59f537c0caca18954818a106bd73c40dbb36/Libraries/Client/DevkitServer.dll
--------------------------------------------------------------------------------
/Libraries/Client/HighlightingSystem.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DanielWillett/DevkitServer/557c59f537c0caca18954818a106bd73c40dbb36/Libraries/Client/HighlightingSystem.dll
--------------------------------------------------------------------------------
/Libraries/Client/Pathfinding.ClipperLib.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DanielWillett/DevkitServer/557c59f537c0caca18954818a106bd73c40dbb36/Libraries/Client/Pathfinding.ClipperLib.dll
--------------------------------------------------------------------------------
/Libraries/Client/Pathfinding.Ionic.Zip.Reduced.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DanielWillett/DevkitServer/557c59f537c0caca18954818a106bd73c40dbb36/Libraries/Client/Pathfinding.Ionic.Zip.Reduced.dll
--------------------------------------------------------------------------------
/Libraries/Client/Pathfinding.JsonFx.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DanielWillett/DevkitServer/557c59f537c0caca18954818a106bd73c40dbb36/Libraries/Client/Pathfinding.JsonFx.dll
--------------------------------------------------------------------------------
/Libraries/Client/Pathfinding.Poly2Tri.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DanielWillett/DevkitServer/557c59f537c0caca18954818a106bd73c40dbb36/Libraries/Client/Pathfinding.Poly2Tri.dll
--------------------------------------------------------------------------------
/Libraries/Client/SDG.Glazier.Runtime.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DanielWillett/DevkitServer/557c59f537c0caca18954818a106bd73c40dbb36/Libraries/Client/SDG.Glazier.Runtime.dll
--------------------------------------------------------------------------------
/Libraries/Client/SDG.HostBans.Runtime.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DanielWillett/DevkitServer/557c59f537c0caca18954818a106bd73c40dbb36/Libraries/Client/SDG.HostBans.Runtime.dll
--------------------------------------------------------------------------------
/Libraries/Client/SDG.NetPak.Runtime.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DanielWillett/DevkitServer/557c59f537c0caca18954818a106bd73c40dbb36/Libraries/Client/SDG.NetPak.Runtime.dll
--------------------------------------------------------------------------------
/Libraries/Client/SDG.NetTransport.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DanielWillett/DevkitServer/557c59f537c0caca18954818a106bd73c40dbb36/Libraries/Client/SDG.NetTransport.dll
--------------------------------------------------------------------------------
/Libraries/Client/StandardAssets.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DanielWillett/DevkitServer/557c59f537c0caca18954818a106bd73c40dbb36/Libraries/Client/StandardAssets.dll
--------------------------------------------------------------------------------
/Libraries/Client/SystemEx.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DanielWillett/DevkitServer/557c59f537c0caca18954818a106bd73c40dbb36/Libraries/Client/SystemEx.dll
--------------------------------------------------------------------------------
/Libraries/Client/UniTask.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DanielWillett/DevkitServer/557c59f537c0caca18954818a106bd73c40dbb36/Libraries/Client/UniTask.dll
--------------------------------------------------------------------------------
/Libraries/Client/Unity.Postprocessing.Runtime.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DanielWillett/DevkitServer/557c59f537c0caca18954818a106bd73c40dbb36/Libraries/Client/Unity.Postprocessing.Runtime.dll
--------------------------------------------------------------------------------
/Libraries/Client/Unity.TextMeshPro.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DanielWillett/DevkitServer/557c59f537c0caca18954818a106bd73c40dbb36/Libraries/Client/Unity.TextMeshPro.dll
--------------------------------------------------------------------------------
/Libraries/Client/UnityEngine.AIModule.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DanielWillett/DevkitServer/557c59f537c0caca18954818a106bd73c40dbb36/Libraries/Client/UnityEngine.AIModule.dll
--------------------------------------------------------------------------------
/Libraries/Client/UnityEngine.ARModule.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DanielWillett/DevkitServer/557c59f537c0caca18954818a106bd73c40dbb36/Libraries/Client/UnityEngine.ARModule.dll
--------------------------------------------------------------------------------
/Libraries/Client/UnityEngine.AccessibilityModule.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DanielWillett/DevkitServer/557c59f537c0caca18954818a106bd73c40dbb36/Libraries/Client/UnityEngine.AccessibilityModule.dll
--------------------------------------------------------------------------------
/Libraries/Client/UnityEngine.AndroidJNIModule.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DanielWillett/DevkitServer/557c59f537c0caca18954818a106bd73c40dbb36/Libraries/Client/UnityEngine.AndroidJNIModule.dll
--------------------------------------------------------------------------------
/Libraries/Client/UnityEngine.AnimationModule.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DanielWillett/DevkitServer/557c59f537c0caca18954818a106bd73c40dbb36/Libraries/Client/UnityEngine.AnimationModule.dll
--------------------------------------------------------------------------------
/Libraries/Client/UnityEngine.AssetBundleModule.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DanielWillett/DevkitServer/557c59f537c0caca18954818a106bd73c40dbb36/Libraries/Client/UnityEngine.AssetBundleModule.dll
--------------------------------------------------------------------------------
/Libraries/Client/UnityEngine.AudioModule.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DanielWillett/DevkitServer/557c59f537c0caca18954818a106bd73c40dbb36/Libraries/Client/UnityEngine.AudioModule.dll
--------------------------------------------------------------------------------
/Libraries/Client/UnityEngine.ClothModule.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DanielWillett/DevkitServer/557c59f537c0caca18954818a106bd73c40dbb36/Libraries/Client/UnityEngine.ClothModule.dll
--------------------------------------------------------------------------------
/Libraries/Client/UnityEngine.ClusterInputModule.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DanielWillett/DevkitServer/557c59f537c0caca18954818a106bd73c40dbb36/Libraries/Client/UnityEngine.ClusterInputModule.dll
--------------------------------------------------------------------------------
/Libraries/Client/UnityEngine.ClusterRendererModule.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DanielWillett/DevkitServer/557c59f537c0caca18954818a106bd73c40dbb36/Libraries/Client/UnityEngine.ClusterRendererModule.dll
--------------------------------------------------------------------------------
/Libraries/Client/UnityEngine.CoreModule.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DanielWillett/DevkitServer/557c59f537c0caca18954818a106bd73c40dbb36/Libraries/Client/UnityEngine.CoreModule.dll
--------------------------------------------------------------------------------
/Libraries/Client/UnityEngine.CrashReportingModule.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DanielWillett/DevkitServer/557c59f537c0caca18954818a106bd73c40dbb36/Libraries/Client/UnityEngine.CrashReportingModule.dll
--------------------------------------------------------------------------------
/Libraries/Client/UnityEngine.DSPGraphModule.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DanielWillett/DevkitServer/557c59f537c0caca18954818a106bd73c40dbb36/Libraries/Client/UnityEngine.DSPGraphModule.dll
--------------------------------------------------------------------------------
/Libraries/Client/UnityEngine.DirectorModule.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DanielWillett/DevkitServer/557c59f537c0caca18954818a106bd73c40dbb36/Libraries/Client/UnityEngine.DirectorModule.dll
--------------------------------------------------------------------------------
/Libraries/Client/UnityEngine.GameCenterModule.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DanielWillett/DevkitServer/557c59f537c0caca18954818a106bd73c40dbb36/Libraries/Client/UnityEngine.GameCenterModule.dll
--------------------------------------------------------------------------------
/Libraries/Client/UnityEngine.GridModule.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DanielWillett/DevkitServer/557c59f537c0caca18954818a106bd73c40dbb36/Libraries/Client/UnityEngine.GridModule.dll
--------------------------------------------------------------------------------
/Libraries/Client/UnityEngine.IMGUIModule.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DanielWillett/DevkitServer/557c59f537c0caca18954818a106bd73c40dbb36/Libraries/Client/UnityEngine.IMGUIModule.dll
--------------------------------------------------------------------------------
/Libraries/Client/UnityEngine.ImageConversionModule.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DanielWillett/DevkitServer/557c59f537c0caca18954818a106bd73c40dbb36/Libraries/Client/UnityEngine.ImageConversionModule.dll
--------------------------------------------------------------------------------
/Libraries/Client/UnityEngine.InputLegacyModule.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DanielWillett/DevkitServer/557c59f537c0caca18954818a106bd73c40dbb36/Libraries/Client/UnityEngine.InputLegacyModule.dll
--------------------------------------------------------------------------------
/Libraries/Client/UnityEngine.InputModule.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DanielWillett/DevkitServer/557c59f537c0caca18954818a106bd73c40dbb36/Libraries/Client/UnityEngine.InputModule.dll
--------------------------------------------------------------------------------
/Libraries/Client/UnityEngine.JSONSerializeModule.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DanielWillett/DevkitServer/557c59f537c0caca18954818a106bd73c40dbb36/Libraries/Client/UnityEngine.JSONSerializeModule.dll
--------------------------------------------------------------------------------
/Libraries/Client/UnityEngine.LocalizationModule.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DanielWillett/DevkitServer/557c59f537c0caca18954818a106bd73c40dbb36/Libraries/Client/UnityEngine.LocalizationModule.dll
--------------------------------------------------------------------------------
/Libraries/Client/UnityEngine.NVIDIAModule.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DanielWillett/DevkitServer/557c59f537c0caca18954818a106bd73c40dbb36/Libraries/Client/UnityEngine.NVIDIAModule.dll
--------------------------------------------------------------------------------
/Libraries/Client/UnityEngine.ParticleSystemModule.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DanielWillett/DevkitServer/557c59f537c0caca18954818a106bd73c40dbb36/Libraries/Client/UnityEngine.ParticleSystemModule.dll
--------------------------------------------------------------------------------
/Libraries/Client/UnityEngine.PerformanceReportingModule.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DanielWillett/DevkitServer/557c59f537c0caca18954818a106bd73c40dbb36/Libraries/Client/UnityEngine.PerformanceReportingModule.dll
--------------------------------------------------------------------------------
/Libraries/Client/UnityEngine.Physics2DModule.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DanielWillett/DevkitServer/557c59f537c0caca18954818a106bd73c40dbb36/Libraries/Client/UnityEngine.Physics2DModule.dll
--------------------------------------------------------------------------------
/Libraries/Client/UnityEngine.PhysicsModule.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DanielWillett/DevkitServer/557c59f537c0caca18954818a106bd73c40dbb36/Libraries/Client/UnityEngine.PhysicsModule.dll
--------------------------------------------------------------------------------
/Libraries/Client/UnityEngine.ScreenCaptureModule.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DanielWillett/DevkitServer/557c59f537c0caca18954818a106bd73c40dbb36/Libraries/Client/UnityEngine.ScreenCaptureModule.dll
--------------------------------------------------------------------------------
/Libraries/Client/UnityEngine.SharedInternalsModule.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DanielWillett/DevkitServer/557c59f537c0caca18954818a106bd73c40dbb36/Libraries/Client/UnityEngine.SharedInternalsModule.dll
--------------------------------------------------------------------------------
/Libraries/Client/UnityEngine.SpriteMaskModule.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DanielWillett/DevkitServer/557c59f537c0caca18954818a106bd73c40dbb36/Libraries/Client/UnityEngine.SpriteMaskModule.dll
--------------------------------------------------------------------------------
/Libraries/Client/UnityEngine.SpriteShapeModule.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DanielWillett/DevkitServer/557c59f537c0caca18954818a106bd73c40dbb36/Libraries/Client/UnityEngine.SpriteShapeModule.dll
--------------------------------------------------------------------------------
/Libraries/Client/UnityEngine.StreamingModule.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DanielWillett/DevkitServer/557c59f537c0caca18954818a106bd73c40dbb36/Libraries/Client/UnityEngine.StreamingModule.dll
--------------------------------------------------------------------------------
/Libraries/Client/UnityEngine.SubsystemsModule.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DanielWillett/DevkitServer/557c59f537c0caca18954818a106bd73c40dbb36/Libraries/Client/UnityEngine.SubsystemsModule.dll
--------------------------------------------------------------------------------
/Libraries/Client/UnityEngine.TLSModule.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DanielWillett/DevkitServer/557c59f537c0caca18954818a106bd73c40dbb36/Libraries/Client/UnityEngine.TLSModule.dll
--------------------------------------------------------------------------------
/Libraries/Client/UnityEngine.TerrainModule.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DanielWillett/DevkitServer/557c59f537c0caca18954818a106bd73c40dbb36/Libraries/Client/UnityEngine.TerrainModule.dll
--------------------------------------------------------------------------------
/Libraries/Client/UnityEngine.TerrainPhysicsModule.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DanielWillett/DevkitServer/557c59f537c0caca18954818a106bd73c40dbb36/Libraries/Client/UnityEngine.TerrainPhysicsModule.dll
--------------------------------------------------------------------------------
/Libraries/Client/UnityEngine.TextCoreFontEngineModule.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DanielWillett/DevkitServer/557c59f537c0caca18954818a106bd73c40dbb36/Libraries/Client/UnityEngine.TextCoreFontEngineModule.dll
--------------------------------------------------------------------------------
/Libraries/Client/UnityEngine.TextCoreTextEngineModule.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DanielWillett/DevkitServer/557c59f537c0caca18954818a106bd73c40dbb36/Libraries/Client/UnityEngine.TextCoreTextEngineModule.dll
--------------------------------------------------------------------------------
/Libraries/Client/UnityEngine.TextRenderingModule.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DanielWillett/DevkitServer/557c59f537c0caca18954818a106bd73c40dbb36/Libraries/Client/UnityEngine.TextRenderingModule.dll
--------------------------------------------------------------------------------
/Libraries/Client/UnityEngine.TilemapModule.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DanielWillett/DevkitServer/557c59f537c0caca18954818a106bd73c40dbb36/Libraries/Client/UnityEngine.TilemapModule.dll
--------------------------------------------------------------------------------
/Libraries/Client/UnityEngine.UI.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DanielWillett/DevkitServer/557c59f537c0caca18954818a106bd73c40dbb36/Libraries/Client/UnityEngine.UI.dll
--------------------------------------------------------------------------------
/Libraries/Client/UnityEngine.UIElementsModule.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DanielWillett/DevkitServer/557c59f537c0caca18954818a106bd73c40dbb36/Libraries/Client/UnityEngine.UIElementsModule.dll
--------------------------------------------------------------------------------
/Libraries/Client/UnityEngine.UIElementsNativeModule.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DanielWillett/DevkitServer/557c59f537c0caca18954818a106bd73c40dbb36/Libraries/Client/UnityEngine.UIElementsNativeModule.dll
--------------------------------------------------------------------------------
/Libraries/Client/UnityEngine.UIModule.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DanielWillett/DevkitServer/557c59f537c0caca18954818a106bd73c40dbb36/Libraries/Client/UnityEngine.UIModule.dll
--------------------------------------------------------------------------------
/Libraries/Client/UnityEngine.UNETModule.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DanielWillett/DevkitServer/557c59f537c0caca18954818a106bd73c40dbb36/Libraries/Client/UnityEngine.UNETModule.dll
--------------------------------------------------------------------------------
/Libraries/Client/UnityEngine.UnityAnalyticsCommonModule.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DanielWillett/DevkitServer/557c59f537c0caca18954818a106bd73c40dbb36/Libraries/Client/UnityEngine.UnityAnalyticsCommonModule.dll
--------------------------------------------------------------------------------
/Libraries/Client/UnityEngine.UnityAnalyticsModule.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DanielWillett/DevkitServer/557c59f537c0caca18954818a106bd73c40dbb36/Libraries/Client/UnityEngine.UnityAnalyticsModule.dll
--------------------------------------------------------------------------------
/Libraries/Client/UnityEngine.UnityConnectModule.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DanielWillett/DevkitServer/557c59f537c0caca18954818a106bd73c40dbb36/Libraries/Client/UnityEngine.UnityConnectModule.dll
--------------------------------------------------------------------------------
/Libraries/Client/UnityEngine.UnityCurlModule.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DanielWillett/DevkitServer/557c59f537c0caca18954818a106bd73c40dbb36/Libraries/Client/UnityEngine.UnityCurlModule.dll
--------------------------------------------------------------------------------
/Libraries/Client/UnityEngine.UnityWebRequestAssetBundleModule.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DanielWillett/DevkitServer/557c59f537c0caca18954818a106bd73c40dbb36/Libraries/Client/UnityEngine.UnityWebRequestAssetBundleModule.dll
--------------------------------------------------------------------------------
/Libraries/Client/UnityEngine.UnityWebRequestAudioModule.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DanielWillett/DevkitServer/557c59f537c0caca18954818a106bd73c40dbb36/Libraries/Client/UnityEngine.UnityWebRequestAudioModule.dll
--------------------------------------------------------------------------------
/Libraries/Client/UnityEngine.UnityWebRequestModule.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DanielWillett/DevkitServer/557c59f537c0caca18954818a106bd73c40dbb36/Libraries/Client/UnityEngine.UnityWebRequestModule.dll
--------------------------------------------------------------------------------
/Libraries/Client/UnityEngine.UnityWebRequestTextureModule.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DanielWillett/DevkitServer/557c59f537c0caca18954818a106bd73c40dbb36/Libraries/Client/UnityEngine.UnityWebRequestTextureModule.dll
--------------------------------------------------------------------------------
/Libraries/Client/UnityEngine.UnityWebRequestWWWModule.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DanielWillett/DevkitServer/557c59f537c0caca18954818a106bd73c40dbb36/Libraries/Client/UnityEngine.UnityWebRequestWWWModule.dll
--------------------------------------------------------------------------------
/Libraries/Client/UnityEngine.VFXModule.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DanielWillett/DevkitServer/557c59f537c0caca18954818a106bd73c40dbb36/Libraries/Client/UnityEngine.VFXModule.dll
--------------------------------------------------------------------------------
/Libraries/Client/UnityEngine.VRModule.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DanielWillett/DevkitServer/557c59f537c0caca18954818a106bd73c40dbb36/Libraries/Client/UnityEngine.VRModule.dll
--------------------------------------------------------------------------------
/Libraries/Client/UnityEngine.VehiclesModule.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DanielWillett/DevkitServer/557c59f537c0caca18954818a106bd73c40dbb36/Libraries/Client/UnityEngine.VehiclesModule.dll
--------------------------------------------------------------------------------
/Libraries/Client/UnityEngine.VideoModule.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DanielWillett/DevkitServer/557c59f537c0caca18954818a106bd73c40dbb36/Libraries/Client/UnityEngine.VideoModule.dll
--------------------------------------------------------------------------------
/Libraries/Client/UnityEngine.VirtualTexturingModule.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DanielWillett/DevkitServer/557c59f537c0caca18954818a106bd73c40dbb36/Libraries/Client/UnityEngine.VirtualTexturingModule.dll
--------------------------------------------------------------------------------
/Libraries/Client/UnityEngine.WindModule.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DanielWillett/DevkitServer/557c59f537c0caca18954818a106bd73c40dbb36/Libraries/Client/UnityEngine.WindModule.dll
--------------------------------------------------------------------------------
/Libraries/Client/UnityEngine.XRModule.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DanielWillett/DevkitServer/557c59f537c0caca18954818a106bd73c40dbb36/Libraries/Client/UnityEngine.XRModule.dll
--------------------------------------------------------------------------------
/Libraries/Client/UnityEngine.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DanielWillett/DevkitServer/557c59f537c0caca18954818a106bd73c40dbb36/Libraries/Client/UnityEngine.dll
--------------------------------------------------------------------------------
/Libraries/Client/UnityEx.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DanielWillett/DevkitServer/557c59f537c0caca18954818a106bd73c40dbb36/Libraries/Client/UnityEx.dll
--------------------------------------------------------------------------------
/Libraries/Client/Unturned.LiveConfig.Runtime.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DanielWillett/DevkitServer/557c59f537c0caca18954818a106bd73c40dbb36/Libraries/Client/Unturned.LiveConfig.Runtime.dll
--------------------------------------------------------------------------------
/Libraries/Client/UnturnedDat.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DanielWillett/DevkitServer/557c59f537c0caca18954818a106bd73c40dbb36/Libraries/Client/UnturnedDat.dll
--------------------------------------------------------------------------------
/Libraries/Client/com.rlabrecque.steamworks.net.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DanielWillett/DevkitServer/557c59f537c0caca18954818a106bd73c40dbb36/Libraries/Client/com.rlabrecque.steamworks.net.dll
--------------------------------------------------------------------------------
/Libraries/Server/Assembly-CSharp.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DanielWillett/DevkitServer/557c59f537c0caca18954818a106bd73c40dbb36/Libraries/Server/Assembly-CSharp.dll
--------------------------------------------------------------------------------
/Libraries/Server/AstarPathfindingProject.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DanielWillett/DevkitServer/557c59f537c0caca18954818a106bd73c40dbb36/Libraries/Server/AstarPathfindingProject.dll
--------------------------------------------------------------------------------
/Libraries/Server/BattlEye.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DanielWillett/DevkitServer/557c59f537c0caca18954818a106bd73c40dbb36/Libraries/Server/BattlEye.dll
--------------------------------------------------------------------------------
/Libraries/Server/DevkitServer.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DanielWillett/DevkitServer/557c59f537c0caca18954818a106bd73c40dbb36/Libraries/Server/DevkitServer.dll
--------------------------------------------------------------------------------
/Libraries/Server/HighlightingSystem.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DanielWillett/DevkitServer/557c59f537c0caca18954818a106bd73c40dbb36/Libraries/Server/HighlightingSystem.dll
--------------------------------------------------------------------------------
/Libraries/Server/Pathfinding.ClipperLib.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DanielWillett/DevkitServer/557c59f537c0caca18954818a106bd73c40dbb36/Libraries/Server/Pathfinding.ClipperLib.dll
--------------------------------------------------------------------------------
/Libraries/Server/Pathfinding.Ionic.Zip.Reduced.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DanielWillett/DevkitServer/557c59f537c0caca18954818a106bd73c40dbb36/Libraries/Server/Pathfinding.Ionic.Zip.Reduced.dll
--------------------------------------------------------------------------------
/Libraries/Server/Pathfinding.JsonFx.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DanielWillett/DevkitServer/557c59f537c0caca18954818a106bd73c40dbb36/Libraries/Server/Pathfinding.JsonFx.dll
--------------------------------------------------------------------------------
/Libraries/Server/Pathfinding.Poly2Tri.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DanielWillett/DevkitServer/557c59f537c0caca18954818a106bd73c40dbb36/Libraries/Server/Pathfinding.Poly2Tri.dll
--------------------------------------------------------------------------------
/Libraries/Server/SDG.HostBans.Runtime.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DanielWillett/DevkitServer/557c59f537c0caca18954818a106bd73c40dbb36/Libraries/Server/SDG.HostBans.Runtime.dll
--------------------------------------------------------------------------------
/Libraries/Server/SDG.NetPak.Runtime.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DanielWillett/DevkitServer/557c59f537c0caca18954818a106bd73c40dbb36/Libraries/Server/SDG.NetPak.Runtime.dll
--------------------------------------------------------------------------------
/Libraries/Server/SDG.NetTransport.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DanielWillett/DevkitServer/557c59f537c0caca18954818a106bd73c40dbb36/Libraries/Server/SDG.NetTransport.dll
--------------------------------------------------------------------------------
/Libraries/Server/StandardAssets.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DanielWillett/DevkitServer/557c59f537c0caca18954818a106bd73c40dbb36/Libraries/Server/StandardAssets.dll
--------------------------------------------------------------------------------
/Libraries/Server/SystemEx.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DanielWillett/DevkitServer/557c59f537c0caca18954818a106bd73c40dbb36/Libraries/Server/SystemEx.dll
--------------------------------------------------------------------------------
/Libraries/Server/UniTask.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DanielWillett/DevkitServer/557c59f537c0caca18954818a106bd73c40dbb36/Libraries/Server/UniTask.dll
--------------------------------------------------------------------------------
/Libraries/Server/Unity.Postprocessing.Runtime.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DanielWillett/DevkitServer/557c59f537c0caca18954818a106bd73c40dbb36/Libraries/Server/Unity.Postprocessing.Runtime.dll
--------------------------------------------------------------------------------
/Libraries/Server/Unity.TextMeshPro.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DanielWillett/DevkitServer/557c59f537c0caca18954818a106bd73c40dbb36/Libraries/Server/Unity.TextMeshPro.dll
--------------------------------------------------------------------------------
/Libraries/Server/UnityEngine.AIModule.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DanielWillett/DevkitServer/557c59f537c0caca18954818a106bd73c40dbb36/Libraries/Server/UnityEngine.AIModule.dll
--------------------------------------------------------------------------------
/Libraries/Server/UnityEngine.ARModule.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DanielWillett/DevkitServer/557c59f537c0caca18954818a106bd73c40dbb36/Libraries/Server/UnityEngine.ARModule.dll
--------------------------------------------------------------------------------
/Libraries/Server/UnityEngine.AccessibilityModule.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DanielWillett/DevkitServer/557c59f537c0caca18954818a106bd73c40dbb36/Libraries/Server/UnityEngine.AccessibilityModule.dll
--------------------------------------------------------------------------------
/Libraries/Server/UnityEngine.AndroidJNIModule.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DanielWillett/DevkitServer/557c59f537c0caca18954818a106bd73c40dbb36/Libraries/Server/UnityEngine.AndroidJNIModule.dll
--------------------------------------------------------------------------------
/Libraries/Server/UnityEngine.AnimationModule.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DanielWillett/DevkitServer/557c59f537c0caca18954818a106bd73c40dbb36/Libraries/Server/UnityEngine.AnimationModule.dll
--------------------------------------------------------------------------------
/Libraries/Server/UnityEngine.AssetBundleModule.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DanielWillett/DevkitServer/557c59f537c0caca18954818a106bd73c40dbb36/Libraries/Server/UnityEngine.AssetBundleModule.dll
--------------------------------------------------------------------------------
/Libraries/Server/UnityEngine.AudioModule.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DanielWillett/DevkitServer/557c59f537c0caca18954818a106bd73c40dbb36/Libraries/Server/UnityEngine.AudioModule.dll
--------------------------------------------------------------------------------
/Libraries/Server/UnityEngine.ClothModule.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DanielWillett/DevkitServer/557c59f537c0caca18954818a106bd73c40dbb36/Libraries/Server/UnityEngine.ClothModule.dll
--------------------------------------------------------------------------------
/Libraries/Server/UnityEngine.ClusterInputModule.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DanielWillett/DevkitServer/557c59f537c0caca18954818a106bd73c40dbb36/Libraries/Server/UnityEngine.ClusterInputModule.dll
--------------------------------------------------------------------------------
/Libraries/Server/UnityEngine.ClusterRendererModule.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DanielWillett/DevkitServer/557c59f537c0caca18954818a106bd73c40dbb36/Libraries/Server/UnityEngine.ClusterRendererModule.dll
--------------------------------------------------------------------------------
/Libraries/Server/UnityEngine.CoreModule.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DanielWillett/DevkitServer/557c59f537c0caca18954818a106bd73c40dbb36/Libraries/Server/UnityEngine.CoreModule.dll
--------------------------------------------------------------------------------
/Libraries/Server/UnityEngine.CrashReportingModule.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DanielWillett/DevkitServer/557c59f537c0caca18954818a106bd73c40dbb36/Libraries/Server/UnityEngine.CrashReportingModule.dll
--------------------------------------------------------------------------------
/Libraries/Server/UnityEngine.DSPGraphModule.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DanielWillett/DevkitServer/557c59f537c0caca18954818a106bd73c40dbb36/Libraries/Server/UnityEngine.DSPGraphModule.dll
--------------------------------------------------------------------------------
/Libraries/Server/UnityEngine.DirectorModule.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DanielWillett/DevkitServer/557c59f537c0caca18954818a106bd73c40dbb36/Libraries/Server/UnityEngine.DirectorModule.dll
--------------------------------------------------------------------------------
/Libraries/Server/UnityEngine.GameCenterModule.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DanielWillett/DevkitServer/557c59f537c0caca18954818a106bd73c40dbb36/Libraries/Server/UnityEngine.GameCenterModule.dll
--------------------------------------------------------------------------------
/Libraries/Server/UnityEngine.GridModule.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DanielWillett/DevkitServer/557c59f537c0caca18954818a106bd73c40dbb36/Libraries/Server/UnityEngine.GridModule.dll
--------------------------------------------------------------------------------
/Libraries/Server/UnityEngine.IMGUIModule.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DanielWillett/DevkitServer/557c59f537c0caca18954818a106bd73c40dbb36/Libraries/Server/UnityEngine.IMGUIModule.dll
--------------------------------------------------------------------------------
/Libraries/Server/UnityEngine.ImageConversionModule.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DanielWillett/DevkitServer/557c59f537c0caca18954818a106bd73c40dbb36/Libraries/Server/UnityEngine.ImageConversionModule.dll
--------------------------------------------------------------------------------
/Libraries/Server/UnityEngine.InputLegacyModule.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DanielWillett/DevkitServer/557c59f537c0caca18954818a106bd73c40dbb36/Libraries/Server/UnityEngine.InputLegacyModule.dll
--------------------------------------------------------------------------------
/Libraries/Server/UnityEngine.InputModule.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DanielWillett/DevkitServer/557c59f537c0caca18954818a106bd73c40dbb36/Libraries/Server/UnityEngine.InputModule.dll
--------------------------------------------------------------------------------
/Libraries/Server/UnityEngine.JSONSerializeModule.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DanielWillett/DevkitServer/557c59f537c0caca18954818a106bd73c40dbb36/Libraries/Server/UnityEngine.JSONSerializeModule.dll
--------------------------------------------------------------------------------
/Libraries/Server/UnityEngine.LocalizationModule.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DanielWillett/DevkitServer/557c59f537c0caca18954818a106bd73c40dbb36/Libraries/Server/UnityEngine.LocalizationModule.dll
--------------------------------------------------------------------------------
/Libraries/Server/UnityEngine.NVIDIAModule.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DanielWillett/DevkitServer/557c59f537c0caca18954818a106bd73c40dbb36/Libraries/Server/UnityEngine.NVIDIAModule.dll
--------------------------------------------------------------------------------
/Libraries/Server/UnityEngine.ParticleSystemModule.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DanielWillett/DevkitServer/557c59f537c0caca18954818a106bd73c40dbb36/Libraries/Server/UnityEngine.ParticleSystemModule.dll
--------------------------------------------------------------------------------
/Libraries/Server/UnityEngine.PerformanceReportingModule.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DanielWillett/DevkitServer/557c59f537c0caca18954818a106bd73c40dbb36/Libraries/Server/UnityEngine.PerformanceReportingModule.dll
--------------------------------------------------------------------------------
/Libraries/Server/UnityEngine.Physics2DModule.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DanielWillett/DevkitServer/557c59f537c0caca18954818a106bd73c40dbb36/Libraries/Server/UnityEngine.Physics2DModule.dll
--------------------------------------------------------------------------------
/Libraries/Server/UnityEngine.PhysicsModule.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DanielWillett/DevkitServer/557c59f537c0caca18954818a106bd73c40dbb36/Libraries/Server/UnityEngine.PhysicsModule.dll
--------------------------------------------------------------------------------
/Libraries/Server/UnityEngine.ScreenCaptureModule.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DanielWillett/DevkitServer/557c59f537c0caca18954818a106bd73c40dbb36/Libraries/Server/UnityEngine.ScreenCaptureModule.dll
--------------------------------------------------------------------------------
/Libraries/Server/UnityEngine.SharedInternalsModule.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DanielWillett/DevkitServer/557c59f537c0caca18954818a106bd73c40dbb36/Libraries/Server/UnityEngine.SharedInternalsModule.dll
--------------------------------------------------------------------------------
/Libraries/Server/UnityEngine.SpriteMaskModule.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DanielWillett/DevkitServer/557c59f537c0caca18954818a106bd73c40dbb36/Libraries/Server/UnityEngine.SpriteMaskModule.dll
--------------------------------------------------------------------------------
/Libraries/Server/UnityEngine.SpriteShapeModule.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DanielWillett/DevkitServer/557c59f537c0caca18954818a106bd73c40dbb36/Libraries/Server/UnityEngine.SpriteShapeModule.dll
--------------------------------------------------------------------------------
/Libraries/Server/UnityEngine.StreamingModule.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DanielWillett/DevkitServer/557c59f537c0caca18954818a106bd73c40dbb36/Libraries/Server/UnityEngine.StreamingModule.dll
--------------------------------------------------------------------------------
/Libraries/Server/UnityEngine.SubsystemsModule.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DanielWillett/DevkitServer/557c59f537c0caca18954818a106bd73c40dbb36/Libraries/Server/UnityEngine.SubsystemsModule.dll
--------------------------------------------------------------------------------
/Libraries/Server/UnityEngine.TLSModule.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DanielWillett/DevkitServer/557c59f537c0caca18954818a106bd73c40dbb36/Libraries/Server/UnityEngine.TLSModule.dll
--------------------------------------------------------------------------------
/Libraries/Server/UnityEngine.TerrainModule.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DanielWillett/DevkitServer/557c59f537c0caca18954818a106bd73c40dbb36/Libraries/Server/UnityEngine.TerrainModule.dll
--------------------------------------------------------------------------------
/Libraries/Server/UnityEngine.TerrainPhysicsModule.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DanielWillett/DevkitServer/557c59f537c0caca18954818a106bd73c40dbb36/Libraries/Server/UnityEngine.TerrainPhysicsModule.dll
--------------------------------------------------------------------------------
/Libraries/Server/UnityEngine.TextCoreFontEngineModule.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DanielWillett/DevkitServer/557c59f537c0caca18954818a106bd73c40dbb36/Libraries/Server/UnityEngine.TextCoreFontEngineModule.dll
--------------------------------------------------------------------------------
/Libraries/Server/UnityEngine.TextCoreTextEngineModule.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DanielWillett/DevkitServer/557c59f537c0caca18954818a106bd73c40dbb36/Libraries/Server/UnityEngine.TextCoreTextEngineModule.dll
--------------------------------------------------------------------------------
/Libraries/Server/UnityEngine.TextRenderingModule.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DanielWillett/DevkitServer/557c59f537c0caca18954818a106bd73c40dbb36/Libraries/Server/UnityEngine.TextRenderingModule.dll
--------------------------------------------------------------------------------
/Libraries/Server/UnityEngine.TilemapModule.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DanielWillett/DevkitServer/557c59f537c0caca18954818a106bd73c40dbb36/Libraries/Server/UnityEngine.TilemapModule.dll
--------------------------------------------------------------------------------
/Libraries/Server/UnityEngine.UI.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DanielWillett/DevkitServer/557c59f537c0caca18954818a106bd73c40dbb36/Libraries/Server/UnityEngine.UI.dll
--------------------------------------------------------------------------------
/Libraries/Server/UnityEngine.UIElementsModule.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DanielWillett/DevkitServer/557c59f537c0caca18954818a106bd73c40dbb36/Libraries/Server/UnityEngine.UIElementsModule.dll
--------------------------------------------------------------------------------
/Libraries/Server/UnityEngine.UIElementsNativeModule.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DanielWillett/DevkitServer/557c59f537c0caca18954818a106bd73c40dbb36/Libraries/Server/UnityEngine.UIElementsNativeModule.dll
--------------------------------------------------------------------------------
/Libraries/Server/UnityEngine.UIModule.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DanielWillett/DevkitServer/557c59f537c0caca18954818a106bd73c40dbb36/Libraries/Server/UnityEngine.UIModule.dll
--------------------------------------------------------------------------------
/Libraries/Server/UnityEngine.UNETModule.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DanielWillett/DevkitServer/557c59f537c0caca18954818a106bd73c40dbb36/Libraries/Server/UnityEngine.UNETModule.dll
--------------------------------------------------------------------------------
/Libraries/Server/UnityEngine.UnityAnalyticsCommonModule.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DanielWillett/DevkitServer/557c59f537c0caca18954818a106bd73c40dbb36/Libraries/Server/UnityEngine.UnityAnalyticsCommonModule.dll
--------------------------------------------------------------------------------
/Libraries/Server/UnityEngine.UnityAnalyticsModule.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DanielWillett/DevkitServer/557c59f537c0caca18954818a106bd73c40dbb36/Libraries/Server/UnityEngine.UnityAnalyticsModule.dll
--------------------------------------------------------------------------------
/Libraries/Server/UnityEngine.UnityConnectModule.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DanielWillett/DevkitServer/557c59f537c0caca18954818a106bd73c40dbb36/Libraries/Server/UnityEngine.UnityConnectModule.dll
--------------------------------------------------------------------------------
/Libraries/Server/UnityEngine.UnityCurlModule.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DanielWillett/DevkitServer/557c59f537c0caca18954818a106bd73c40dbb36/Libraries/Server/UnityEngine.UnityCurlModule.dll
--------------------------------------------------------------------------------
/Libraries/Server/UnityEngine.UnityWebRequestAssetBundleModule.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DanielWillett/DevkitServer/557c59f537c0caca18954818a106bd73c40dbb36/Libraries/Server/UnityEngine.UnityWebRequestAssetBundleModule.dll
--------------------------------------------------------------------------------
/Libraries/Server/UnityEngine.UnityWebRequestAudioModule.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DanielWillett/DevkitServer/557c59f537c0caca18954818a106bd73c40dbb36/Libraries/Server/UnityEngine.UnityWebRequestAudioModule.dll
--------------------------------------------------------------------------------
/Libraries/Server/UnityEngine.UnityWebRequestModule.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DanielWillett/DevkitServer/557c59f537c0caca18954818a106bd73c40dbb36/Libraries/Server/UnityEngine.UnityWebRequestModule.dll
--------------------------------------------------------------------------------
/Libraries/Server/UnityEngine.UnityWebRequestTextureModule.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DanielWillett/DevkitServer/557c59f537c0caca18954818a106bd73c40dbb36/Libraries/Server/UnityEngine.UnityWebRequestTextureModule.dll
--------------------------------------------------------------------------------
/Libraries/Server/UnityEngine.UnityWebRequestWWWModule.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DanielWillett/DevkitServer/557c59f537c0caca18954818a106bd73c40dbb36/Libraries/Server/UnityEngine.UnityWebRequestWWWModule.dll
--------------------------------------------------------------------------------
/Libraries/Server/UnityEngine.VFXModule.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DanielWillett/DevkitServer/557c59f537c0caca18954818a106bd73c40dbb36/Libraries/Server/UnityEngine.VFXModule.dll
--------------------------------------------------------------------------------
/Libraries/Server/UnityEngine.VRModule.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DanielWillett/DevkitServer/557c59f537c0caca18954818a106bd73c40dbb36/Libraries/Server/UnityEngine.VRModule.dll
--------------------------------------------------------------------------------
/Libraries/Server/UnityEngine.VehiclesModule.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DanielWillett/DevkitServer/557c59f537c0caca18954818a106bd73c40dbb36/Libraries/Server/UnityEngine.VehiclesModule.dll
--------------------------------------------------------------------------------
/Libraries/Server/UnityEngine.VideoModule.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DanielWillett/DevkitServer/557c59f537c0caca18954818a106bd73c40dbb36/Libraries/Server/UnityEngine.VideoModule.dll
--------------------------------------------------------------------------------
/Libraries/Server/UnityEngine.VirtualTexturingModule.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DanielWillett/DevkitServer/557c59f537c0caca18954818a106bd73c40dbb36/Libraries/Server/UnityEngine.VirtualTexturingModule.dll
--------------------------------------------------------------------------------
/Libraries/Server/UnityEngine.WindModule.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DanielWillett/DevkitServer/557c59f537c0caca18954818a106bd73c40dbb36/Libraries/Server/UnityEngine.WindModule.dll
--------------------------------------------------------------------------------
/Libraries/Server/UnityEngine.XRModule.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DanielWillett/DevkitServer/557c59f537c0caca18954818a106bd73c40dbb36/Libraries/Server/UnityEngine.XRModule.dll
--------------------------------------------------------------------------------
/Libraries/Server/UnityEngine.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DanielWillett/DevkitServer/557c59f537c0caca18954818a106bd73c40dbb36/Libraries/Server/UnityEngine.dll
--------------------------------------------------------------------------------
/Libraries/Server/UnityEx.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DanielWillett/DevkitServer/557c59f537c0caca18954818a106bd73c40dbb36/Libraries/Server/UnityEx.dll
--------------------------------------------------------------------------------
/Libraries/Server/UnturnedDat.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DanielWillett/DevkitServer/557c59f537c0caca18954818a106bd73c40dbb36/Libraries/Server/UnturnedDat.dll
--------------------------------------------------------------------------------
/Libraries/Server/com.rlabrecque.steamworks.net.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DanielWillett/DevkitServer/557c59f537c0caca18954818a106bd73c40dbb36/Libraries/Server/com.rlabrecque.steamworks.net.dll
--------------------------------------------------------------------------------
/Models/AutoFoundationProperties.cs:
--------------------------------------------------------------------------------
1 | namespace DevkitServer.Models;
2 | public readonly struct AutoFoundationProperties
3 | {
4 | public readonly float Radius;
5 | public readonly float Length;
6 | public readonly ERayMask Mask;
7 | public AutoFoundationProperties(float radius, float length, ERayMask mask)
8 | {
9 | Radius = radius;
10 | Length = length;
11 | Mask = mask;
12 | }
13 | }
--------------------------------------------------------------------------------
/Models/AutoSlopeProperties.cs:
--------------------------------------------------------------------------------
1 | namespace DevkitServer.Models;
2 | public readonly struct AutoSlopeProperties
3 | {
4 | public readonly float MinimumAngleStart;
5 | public readonly float MinimumAngleEnd;
6 | public readonly float MaximumAngleStart;
7 | public readonly float MaximumAngleEnd;
8 | public AutoSlopeProperties(float minimumAngleStart, float minimumAngleEnd, float maximumAngleStart, float maximumAngleEnd)
9 | {
10 | MinimumAngleStart = minimumAngleStart;
11 | MinimumAngleEnd = minimumAngleEnd;
12 | MaximumAngleStart = maximumAngleStart;
13 | MaximumAngleEnd = maximumAngleEnd;
14 | }
15 | }
--------------------------------------------------------------------------------
/Models/Delegates.cs:
--------------------------------------------------------------------------------
1 | namespace DevkitServer.Models;
2 |
3 | public delegate void ForEach(T value);
4 | public delegate bool ForEachWhile(T value);
--------------------------------------------------------------------------------
/Module/Bin/LICENSE.txt:
--------------------------------------------------------------------------------
1 | DevkitServer (and accompanying software) - Multi-user map editor addon for the game Unturned.
2 | Copyright (C) 2023 Daniel Willett
3 |
4 | This program is free software: you can redistribute it and/or modify
5 | it under the terms of the GNU General Public License as published by
6 | the Free Software Foundation, either version 3 of the License, or
7 | (at your option) any later version.
8 |
9 | This program is distributed in the hope that it will be useful,
10 | but WITHOUT ANY WARRANTY; without even the implied warranty of
11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 | GNU General Public License for more details.
13 |
14 | You should have received a copy of the GNU General Public License
15 | along with this program. If not, see .
--------------------------------------------------------------------------------
/Module/Bundles/MasterBundle.dat:
--------------------------------------------------------------------------------
1 | Asset_Bundle_Name devkitserver.masterbundle
2 | Asset_Prefix Assets/DevkitServer
3 | Asset_Bundle_Version 5
--------------------------------------------------------------------------------
/Module/Bundles/devkitserver.masterbundle:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DanielWillett/DevkitServer/557c59f537c0caca18954818a106bd73c40dbb36/Module/Bundles/devkitserver.masterbundle
--------------------------------------------------------------------------------
/Module/Bundles/devkitserver.masterbundle.hash:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DanielWillett/DevkitServer/557c59f537c0caca18954818a106bd73c40dbb36/Module/Bundles/devkitserver.masterbundle.hash
--------------------------------------------------------------------------------
/Module/Bundles/devkitserver.masterbundle.manifest:
--------------------------------------------------------------------------------
1 | ManifestFileVersion: 0
2 | CRC: 3844059435
3 | Hashes:
4 | AssetFileHash:
5 | serializedVersion: 2
6 | Hash: aa4ab7a1fe8388a79aefcd6753f1ef19
7 | TypeTreeHash:
8 | serializedVersion: 2
9 | Hash: a7a21288fe2bd6ae3724c7054e7a1302
10 | HashAppended: 0
11 | ClassTypes:
12 | - Class: 1
13 | Script: {instanceID: 0}
14 | - Class: 4
15 | Script: {instanceID: 0}
16 | - Class: 21
17 | Script: {instanceID: 0}
18 | - Class: 23
19 | Script: {instanceID: 0}
20 | - Class: 28
21 | Script: {instanceID: 0}
22 | - Class: 33
23 | Script: {instanceID: 0}
24 | - Class: 43
25 | Script: {instanceID: 0}
26 | - Class: 48
27 | Script: {instanceID: 0}
28 | - Class: 213
29 | Script: {instanceID: 0}
30 | SerializeReferenceClassIdentifiers: []
31 | Assets:
32 | - Assets/DevkitServer/Resources/S_Passthrough.shader
33 | - Assets/DevkitServer/Resources/TPV_Char_Server.prefab
34 | - Assets/DevkitServer/Resources/SM_TPV.fbx
35 | - Assets/DevkitServer/Icons/DevkitServer_80.png
36 | - Assets/DevkitServer/Resources/MAT_Passthrough.mat
37 | Dependencies: []
38 |
--------------------------------------------------------------------------------
/Module/Bundles/devkitserver_linux.masterbundle:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DanielWillett/DevkitServer/557c59f537c0caca18954818a106bd73c40dbb36/Module/Bundles/devkitserver_linux.masterbundle
--------------------------------------------------------------------------------
/Module/Bundles/devkitserver_linux.masterbundle.manifest:
--------------------------------------------------------------------------------
1 | ManifestFileVersion: 0
2 | CRC: 1945459106
3 | Hashes:
4 | AssetFileHash:
5 | serializedVersion: 2
6 | Hash: 798f368977914b0f78911e6607cc171d
7 | TypeTreeHash:
8 | serializedVersion: 2
9 | Hash: a7a21288fe2bd6ae3724c7054e7a1302
10 | HashAppended: 0
11 | ClassTypes:
12 | - Class: 1
13 | Script: {instanceID: 0}
14 | - Class: 4
15 | Script: {instanceID: 0}
16 | - Class: 21
17 | Script: {instanceID: 0}
18 | - Class: 23
19 | Script: {instanceID: 0}
20 | - Class: 28
21 | Script: {instanceID: 0}
22 | - Class: 33
23 | Script: {instanceID: 0}
24 | - Class: 43
25 | Script: {instanceID: 0}
26 | - Class: 48
27 | Script: {instanceID: 0}
28 | - Class: 213
29 | Script: {instanceID: 0}
30 | SerializeReferenceClassIdentifiers: []
31 | Assets:
32 | - Assets/DevkitServer/Resources/S_Passthrough.shader
33 | - Assets/DevkitServer/Resources/TPV_Char_Server.prefab
34 | - Assets/DevkitServer/Resources/SM_TPV.fbx
35 | - Assets/DevkitServer/Icons/DevkitServer_80.png
36 | - Assets/DevkitServer/Resources/MAT_Passthrough.mat
37 | Dependencies: []
38 |
--------------------------------------------------------------------------------
/Module/Bundles/devkitserver_mac.masterbundle:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DanielWillett/DevkitServer/557c59f537c0caca18954818a106bd73c40dbb36/Module/Bundles/devkitserver_mac.masterbundle
--------------------------------------------------------------------------------
/Module/Bundles/devkitserver_mac.masterbundle.manifest:
--------------------------------------------------------------------------------
1 | ManifestFileVersion: 0
2 | CRC: 3508676581
3 | Hashes:
4 | AssetFileHash:
5 | serializedVersion: 2
6 | Hash: ffbaba95a4762ea5fe874e331f6449bf
7 | TypeTreeHash:
8 | serializedVersion: 2
9 | Hash: a7a21288fe2bd6ae3724c7054e7a1302
10 | HashAppended: 0
11 | ClassTypes:
12 | - Class: 1
13 | Script: {instanceID: 0}
14 | - Class: 4
15 | Script: {instanceID: 0}
16 | - Class: 21
17 | Script: {instanceID: 0}
18 | - Class: 23
19 | Script: {instanceID: 0}
20 | - Class: 28
21 | Script: {instanceID: 0}
22 | - Class: 33
23 | Script: {instanceID: 0}
24 | - Class: 43
25 | Script: {instanceID: 0}
26 | - Class: 48
27 | Script: {instanceID: 0}
28 | - Class: 213
29 | Script: {instanceID: 0}
30 | SerializeReferenceClassIdentifiers: []
31 | Assets:
32 | - Assets/DevkitServer/Resources/S_Passthrough.shader
33 | - Assets/DevkitServer/Resources/TPV_Char_Server.prefab
34 | - Assets/DevkitServer/Resources/SM_TPV.fbx
35 | - Assets/DevkitServer/Icons/DevkitServer_80.png
36 | - Assets/DevkitServer/Resources/MAT_Passthrough.mat
37 | Dependencies: []
38 |
--------------------------------------------------------------------------------
/Module/Defaults/cartography_config.json:
--------------------------------------------------------------------------------
1 | {
2 | "$schema": "https://raw.githubusercontent.com/DanielWillett/DevkitServer/master/Module/Schemas/cartography_config_schema.json",
3 |
4 | /*
5 | * Overrides the chart color provider to use when rendering charts.
6 | * These types can be added by plugin types that implement the IChartColorProvider interface.
7 | *
8 | * In vanilla you can either use 'BundledStripChartColorProvider' or 'JsonChartColorProvider'.
9 | * By default the first successfully initialized provider is applied in the order of their Priority attributes.
10 | */
11 | "override_chart_color_provider": "BundledStripChartColorProvider",
12 |
13 | /*
14 | * Provides an override ordered list of compositors to apply after rendering charts.
15 | * These types can be added by plugin types that implement the ICartographyCompositor interface.
16 | *
17 | * In vanilla you can only use 'OverlayCartographyCompositor'.
18 | * By default all compositors are applied sorted by their Priority attributes.
19 | */
20 | "override_active_compositors": [
21 | "OverlayCartographyCompositor"
22 | ],
23 |
24 | /*
25 | * Allows overriding specific object, resource, and road chart types
26 | * without having to change their .dat files.
27 | */
28 | "chart_type_overrides": {
29 | // "cc906876e40f49ab948924b0e457a45d": "IGNORE", // ignore Airport_1
30 | // "Path_1": "HIGHWAY" // convert the road 'Path_1' to show as a highway
31 | },
32 |
33 | /*
34 | * Set a consistant time at at which the satellite image is rendered.
35 | * This prevents shadows depending on the time at which the image was baked.
36 | */
37 | "time": "12 PM"
38 | }
--------------------------------------------------------------------------------
/Module/Defaults/permission_groups.json:
--------------------------------------------------------------------------------
1 | {
2 | "$schema": "https://raw.githubusercontent.com/DanielWillett/DevkitServer/master/Module/Schemas/permission_groups_schema.json",
3 | "groups": [
4 | {
5 | "id": "director",
6 | "name": "Director",
7 | "color": "#33ccff",
8 | "priority": 2,
9 | "permissions": [
10 | "*"
11 | ]
12 | },
13 | {
14 | "id": "terrain_editor",
15 | "name": "Terrain Editor",
16 | "color": "#33cc33",
17 | "priority": 1,
18 | "permissions": [
19 | "unturned::level.terrain.*",
20 | "unturned::level.roads.*",
21 | "unturned::level.cartography.bake.*"
22 | ]
23 | },
24 | {
25 | "id": "location_builder",
26 | "name": "Location Builder",
27 | "color": "#ffff99",
28 | "priority": 1,
29 | "permissions": [
30 | "unturned::level.terrain.*",
31 | "unturned::level.roads.*",
32 | "unturned::level.cartography.bake.*",
33 | "unturned::level.objects.*",
34 | "unturned::level.volumes.*",
35 | "unturned::level.volumes.arena_compactor.*",
36 | "unturned::level.volumes.cartography.*",
37 | "unturned::level.volumes.foliage.*",
38 | "unturned::level.volumes.landscape_hole.*",
39 | "unturned::level.nodes.*"
40 | ]
41 | },
42 | {
43 | "id": "viewer",
44 | "name": "Viewer",
45 | "color": "#ffcc66",
46 | "priority": 0,
47 | "permissions": []
48 | }
49 | ]
50 | }
--------------------------------------------------------------------------------
/Module/DevkitServer.module:
--------------------------------------------------------------------------------
1 | {
2 | "IsEnabled": true,
3 | "Name": "DevkitServer",
4 | "Version": "0.0.0.0",
5 | "Dependencies":
6 | [
7 | {
8 | "Name": "DevkitServer.Launcher",
9 | "Version": "1.0.0.3"
10 | }
11 | ],
12 | "Assemblies":
13 | [
14 | {
15 | "Path": "/Libraries/.NET Standard 2.1/netstandard.dll",
16 | "Role": "Both_Optional",
17 | "Load_As_Byte_Array": false
18 | },
19 | {
20 | "Path": "/Libraries/Lib.Harmony/0Harmony.dll",
21 | "Role": "Both_Optional",
22 | "Load_As_Byte_Array": false
23 | },
24 | {
25 | "Path": "/Bin/DevkitServer_Server.dll",
26 | "Role": "Server",
27 | "Load_As_Byte_Array": false
28 | },
29 | {
30 | "Path": "/Bin/DevkitServer_Client.dll",
31 | "Role": "Client",
32 | "Load_As_Byte_Array": false
33 | }
34 | ]
35 | }
--------------------------------------------------------------------------------
/Module/English.dat:
--------------------------------------------------------------------------------
1 | Name Devkit Server
2 | Description Multi-user editing for the level editor by @blazingflame (github.com/DanielWillett).
3 |
--------------------------------------------------------------------------------
/Module/Libraries/.NET Standard 2.1/LICENSE.txt:
--------------------------------------------------------------------------------
1 | “Unity Reference Assemblies copyright © 2021 Unity Technologies
2 |
3 | Licensed under the Unity Package Distribution License (see https://unity3d.com/legal/licenses/Unity_Package_Distribution_License ).
4 |
5 | Unless expressly provided otherwise, the software under this license is made available strictly on an “AS IS” BASIS WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED. Please review the license for details on these and other terms and conditions.”
6 |
7 |
--------------------------------------------------------------------------------
/Module/Libraries/.NET Standard 2.1/netstandard.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DanielWillett/DevkitServer/557c59f537c0caca18954818a106bd73c40dbb36/Module/Libraries/.NET Standard 2.1/netstandard.dll
--------------------------------------------------------------------------------
/Module/Libraries/DanielWillett.ReflectionTools/DanielWillett.ReflectionTools.Harmony.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DanielWillett/DevkitServer/557c59f537c0caca18954818a106bd73c40dbb36/Module/Libraries/DanielWillett.ReflectionTools/DanielWillett.ReflectionTools.Harmony.dll
--------------------------------------------------------------------------------
/Module/Libraries/DanielWillett.ReflectionTools/DanielWillett.ReflectionTools.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DanielWillett/DevkitServer/557c59f537c0caca18954818a106bd73c40dbb36/Module/Libraries/DanielWillett.ReflectionTools/DanielWillett.ReflectionTools.dll
--------------------------------------------------------------------------------
/Module/Libraries/DanielWillett.SpeedBytes/DanielWillett.SpeedBytes.Unity.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DanielWillett/DevkitServer/557c59f537c0caca18954818a106bd73c40dbb36/Module/Libraries/DanielWillett.SpeedBytes/DanielWillett.SpeedBytes.Unity.dll
--------------------------------------------------------------------------------
/Module/Libraries/DanielWillett.SpeedBytes/DanielWillett.SpeedBytes.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DanielWillett/DevkitServer/557c59f537c0caca18954818a106bd73c40dbb36/Module/Libraries/DanielWillett.SpeedBytes/DanielWillett.SpeedBytes.dll
--------------------------------------------------------------------------------
/Module/Libraries/DanielWillett.SpeedBytes/LICENSE.txt:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2024 Daniel Willett
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
--------------------------------------------------------------------------------
/Module/Libraries/DanielWillett.StackCleaner/DanielWillett.StackCleaner.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DanielWillett/DevkitServer/557c59f537c0caca18954818a106bd73c40dbb36/Module/Libraries/DanielWillett.StackCleaner/DanielWillett.StackCleaner.dll
--------------------------------------------------------------------------------
/Module/Libraries/DanielWillett.StackCleaner/DanielWillett.StackCleaner.pdb:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DanielWillett/DevkitServer/557c59f537c0caca18954818a106bd73c40dbb36/Module/Libraries/DanielWillett.StackCleaner/DanielWillett.StackCleaner.pdb
--------------------------------------------------------------------------------
/Module/Libraries/DanielWillett.StackCleaner/LICENSE.txt:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2023 Daniel Willett
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/Module/Libraries/ForwardingTargets/DanielWillett.LevelObjectIcons.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DanielWillett/DevkitServer/557c59f537c0caca18954818a106bd73c40dbb36/Module/Libraries/ForwardingTargets/DanielWillett.LevelObjectIcons.dll
--------------------------------------------------------------------------------
/Module/Libraries/Lib.Harmony/0Harmony.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DanielWillett/DevkitServer/557c59f537c0caca18954818a106bd73c40dbb36/Module/Libraries/Lib.Harmony/0Harmony.dll
--------------------------------------------------------------------------------
/Module/Libraries/Lib.Harmony/LICENSE.txt:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2017 Andreas Pardeike
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/Module/Libraries/Microsoft.Bcl.AsyncInterfaces/LICENSE.txt:
--------------------------------------------------------------------------------
1 | The MIT License (MIT)
2 |
3 | Copyright (c) .NET Foundation and Contributors
4 |
5 | All rights reserved.
6 |
7 | Permission is hereby granted, free of charge, to any person obtaining a copy
8 | of this software and associated documentation files (the "Software"), to deal
9 | in the Software without restriction, including without limitation the rights
10 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
11 | copies of the Software, and to permit persons to whom the Software is
12 | furnished to do so, subject to the following conditions:
13 |
14 | The above copyright notice and this permission notice shall be included in all
15 | copies or substantial portions of the Software.
16 |
17 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
18 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
19 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
20 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
21 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
22 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
23 | SOFTWARE.
--------------------------------------------------------------------------------
/Module/Libraries/Microsoft.Bcl.AsyncInterfaces/Microsoft.Bcl.AsyncInterfaces.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DanielWillett/DevkitServer/557c59f537c0caca18954818a106bd73c40dbb36/Module/Libraries/Microsoft.Bcl.AsyncInterfaces/Microsoft.Bcl.AsyncInterfaces.dll
--------------------------------------------------------------------------------
/Module/Libraries/Microsoft.Bcl.HashCode/LICENSE.txt:
--------------------------------------------------------------------------------
1 | The MIT License (MIT)
2 |
3 | Copyright (c) .NET Foundation and Contributors
4 |
5 | All rights reserved.
6 |
7 | Permission is hereby granted, free of charge, to any person obtaining a copy
8 | of this software and associated documentation files (the "Software"), to deal
9 | in the Software without restriction, including without limitation the rights
10 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
11 | copies of the Software, and to permit persons to whom the Software is
12 | furnished to do so, subject to the following conditions:
13 |
14 | The above copyright notice and this permission notice shall be included in all
15 | copies or substantial portions of the Software.
16 |
17 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
18 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
19 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
20 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
21 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
22 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
23 | SOFTWARE.
--------------------------------------------------------------------------------
/Module/Libraries/Microsoft.Bcl.HashCode/Microsoft.Bcl.HashCode.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DanielWillett/DevkitServer/557c59f537c0caca18954818a106bd73c40dbb36/Module/Libraries/Microsoft.Bcl.HashCode/Microsoft.Bcl.HashCode.dll
--------------------------------------------------------------------------------
/Module/Libraries/System.Buffers/LICENSE.txt:
--------------------------------------------------------------------------------
1 | “Unity Reference Assemblies copyright © 2021 Unity Technologies
2 |
3 | Licensed under the Unity Package Distribution License (see https://unity3d.com/legal/licenses/Unity_Package_Distribution_License ).
4 |
5 | Unless expressly provided otherwise, the software under this license is made available strictly on an “AS IS” BASIS WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED. Please review the license for details on these and other terms and conditions.”
6 |
7 |
--------------------------------------------------------------------------------
/Module/Libraries/System.Buffers/System.Buffers.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DanielWillett/DevkitServer/557c59f537c0caca18954818a106bd73c40dbb36/Module/Libraries/System.Buffers/System.Buffers.dll
--------------------------------------------------------------------------------
/Module/Libraries/System.IO.Compression.FileSystem/System.IO.Compression.FileSystem.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DanielWillett/DevkitServer/557c59f537c0caca18954818a106bd73c40dbb36/Module/Libraries/System.IO.Compression.FileSystem/System.IO.Compression.FileSystem.dll
--------------------------------------------------------------------------------
/Module/Libraries/System.IO.Compression/System.IO.Compression.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DanielWillett/DevkitServer/557c59f537c0caca18954818a106bd73c40dbb36/Module/Libraries/System.IO.Compression/System.IO.Compression.dll
--------------------------------------------------------------------------------
/Module/Libraries/System.Memory/LICENSE.txt:
--------------------------------------------------------------------------------
1 | “Unity Reference Assemblies copyright © 2021 Unity Technologies
2 |
3 | Licensed under the Unity Package Distribution License (see https://unity3d.com/legal/licenses/Unity_Package_Distribution_License ).
4 |
5 | Unless expressly provided otherwise, the software under this license is made available strictly on an “AS IS” BASIS WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED. Please review the license for details on these and other terms and conditions.”
6 |
7 |
--------------------------------------------------------------------------------
/Module/Libraries/System.Memory/System.Memory.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DanielWillett/DevkitServer/557c59f537c0caca18954818a106bd73c40dbb36/Module/Libraries/System.Memory/System.Memory.dll
--------------------------------------------------------------------------------
/Module/Libraries/System.Numerics.Vectors/LICENSE.txt:
--------------------------------------------------------------------------------
1 | The MIT License (MIT)
2 |
3 | Copyright (c) .NET Foundation and Contributors
4 |
5 | All rights reserved.
6 |
7 | Permission is hereby granted, free of charge, to any person obtaining a copy
8 | of this software and associated documentation files (the "Software"), to deal
9 | in the Software without restriction, including without limitation the rights
10 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
11 | copies of the Software, and to permit persons to whom the Software is
12 | furnished to do so, subject to the following conditions:
13 |
14 | The above copyright notice and this permission notice shall be included in all
15 | copies or substantial portions of the Software.
16 |
17 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
18 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
19 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
20 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
21 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
22 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
23 | SOFTWARE.
--------------------------------------------------------------------------------
/Module/Libraries/System.Numerics.Vectors/System.Numerics.Vectors.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DanielWillett/DevkitServer/557c59f537c0caca18954818a106bd73c40dbb36/Module/Libraries/System.Numerics.Vectors/System.Numerics.Vectors.dll
--------------------------------------------------------------------------------
/Module/Libraries/System.Runtime.CompilerServices.Unsafe/LICENSE.txt:
--------------------------------------------------------------------------------
1 | The MIT License (MIT)
2 |
3 | Copyright (c) .NET Foundation and Contributors
4 |
5 | All rights reserved.
6 |
7 | Permission is hereby granted, free of charge, to any person obtaining a copy
8 | of this software and associated documentation files (the "Software"), to deal
9 | in the Software without restriction, including without limitation the rights
10 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
11 | copies of the Software, and to permit persons to whom the Software is
12 | furnished to do so, subject to the following conditions:
13 |
14 | The above copyright notice and this permission notice shall be included in all
15 | copies or substantial portions of the Software.
16 |
17 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
18 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
19 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
20 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
21 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
22 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
23 | SOFTWARE.
--------------------------------------------------------------------------------
/Module/Libraries/System.Runtime.CompilerServices.Unsafe/System.Runtime.CompilerServices.Unsafe.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DanielWillett/DevkitServer/557c59f537c0caca18954818a106bd73c40dbb36/Module/Libraries/System.Runtime.CompilerServices.Unsafe/System.Runtime.CompilerServices.Unsafe.dll
--------------------------------------------------------------------------------
/Module/Libraries/System.Text.Encodings.Web/LICENSE.txt:
--------------------------------------------------------------------------------
1 | The MIT License (MIT)
2 |
3 | Copyright (c) .NET Foundation and Contributors
4 |
5 | All rights reserved.
6 |
7 | Permission is hereby granted, free of charge, to any person obtaining a copy
8 | of this software and associated documentation files (the "Software"), to deal
9 | in the Software without restriction, including without limitation the rights
10 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
11 | copies of the Software, and to permit persons to whom the Software is
12 | furnished to do so, subject to the following conditions:
13 |
14 | The above copyright notice and this permission notice shall be included in all
15 | copies or substantial portions of the Software.
16 |
17 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
18 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
19 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
20 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
21 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
22 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
23 | SOFTWARE.
--------------------------------------------------------------------------------
/Module/Libraries/System.Text.Encodings.Web/System.Text.Encodings.Web.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DanielWillett/DevkitServer/557c59f537c0caca18954818a106bd73c40dbb36/Module/Libraries/System.Text.Encodings.Web/System.Text.Encodings.Web.dll
--------------------------------------------------------------------------------
/Module/Libraries/System.Text.Json/LICENSE.txt:
--------------------------------------------------------------------------------
1 | The MIT License (MIT)
2 |
3 | Copyright (c) .NET Foundation and Contributors
4 |
5 | All rights reserved.
6 |
7 | Permission is hereby granted, free of charge, to any person obtaining a copy
8 | of this software and associated documentation files (the "Software"), to deal
9 | in the Software without restriction, including without limitation the rights
10 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
11 | copies of the Software, and to permit persons to whom the Software is
12 | furnished to do so, subject to the following conditions:
13 |
14 | The above copyright notice and this permission notice shall be included in all
15 | copies or substantial portions of the Software.
16 |
17 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
18 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
19 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
20 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
21 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
22 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
23 | SOFTWARE.
--------------------------------------------------------------------------------
/Module/Libraries/System.Text.Json/System.Text.Json.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DanielWillett/DevkitServer/557c59f537c0caca18954818a106bd73c40dbb36/Module/Libraries/System.Text.Json/System.Text.Json.dll
--------------------------------------------------------------------------------
/Module/Libraries/System.Threading.Tasks.Extensions/System.Threading.Tasks.Extensions.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DanielWillett/DevkitServer/557c59f537c0caca18954818a106bd73c40dbb36/Module/Libraries/System.Threading.Tasks.Extensions/System.Threading.Tasks.Extensions.dll
--------------------------------------------------------------------------------
/Module/Libraries/System.ValueTuple/LICENSE.txt:
--------------------------------------------------------------------------------
1 | “Unity Reference Assemblies copyright © 2021 Unity Technologies
2 |
3 | Licensed under the Unity Package Distribution License (see https://unity3d.com/legal/licenses/Unity_Package_Distribution_License ).
4 |
5 | Unless expressly provided otherwise, the software under this license is made available strictly on an “AS IS” BASIS WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED. Please review the license for details on these and other terms and conditions.”
6 |
7 |
--------------------------------------------------------------------------------
/Module/Libraries/System.ValueTuple/System.ValueTuple.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DanielWillett/DevkitServer/557c59f537c0caca18954818a106bd73c40dbb36/Module/Libraries/System.ValueTuple/System.ValueTuple.dll
--------------------------------------------------------------------------------
/Module/Libraries/UniTask/LICENSE.txt:
--------------------------------------------------------------------------------
1 | The MIT License (MIT)
2 |
3 | Copyright (c) 2019 Yoshifumi Kawai / Cysharp, Inc.
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/Module/Libraries/UniTask/UniTask.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DanielWillett/DevkitServer/557c59f537c0caca18954818a106bd73c40dbb36/Module/Libraries/UniTask/UniTask.dll
--------------------------------------------------------------------------------
/Module/Libraries/UniTask/UniTask.pdb:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DanielWillett/DevkitServer/557c59f537c0caca18954818a106bd73c40dbb36/Module/Libraries/UniTask/UniTask.pdb
--------------------------------------------------------------------------------
/Module/Libraries/UnturnedUITools/UnturnedUITools.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DanielWillett/DevkitServer/557c59f537c0caca18954818a106bd73c40dbb36/Module/Libraries/UnturnedUITools/UnturnedUITools.dll
--------------------------------------------------------------------------------
/Module/Libraries/UnturnedUITools/UnturnedUITools.pdb:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DanielWillett/DevkitServer/557c59f537c0caca18954818a106bd73c40dbb36/Module/Libraries/UnturnedUITools/UnturnedUITools.pdb
--------------------------------------------------------------------------------
/Module/Schemas/permission_groups_schema.json:
--------------------------------------------------------------------------------
1 | {
2 | "$schema": "https://json-schema.org/draft-07/schema",
3 | "$id": "https://github.com/DanielWillett/DevkitServer/tree/master/Module/Schemas/permission_groups_schema.json",
4 | "title": "Permission Group Configuration",
5 | "description": "Stores permission group settings for the server.",
6 | "type": "object",
7 | "properties": {
8 | "groups": {
9 | "description": "List of all permission groups.",
10 | "type": "array",
11 | "items": {
12 | "type": "object",
13 | "properties": {
14 | "id": {
15 | "description": "Unique ID of the permission group.",
16 | "type": "string"
17 | },
18 | "name": {
19 | "description": "Display name of the permission group.",
20 | "type": "string"
21 | },
22 | "color": {
23 | "description": "Hex code for the color of the permission group.",
24 | "type": "string"
25 | },
26 | "priority": {
27 | "description": "Priority of the permission group.",
28 | "type": "integer"
29 | },
30 | "permissions": {
31 | "description": "List of all permissions the permission group grants.",
32 | "type": "array",
33 | "items": {
34 | "type": "string"
35 | }
36 | }
37 | }
38 | }
39 | }
40 | }
41 | }
--------------------------------------------------------------------------------
/Multiplayer/HierarchyResponsibilities.cs:
--------------------------------------------------------------------------------
1 | using DevkitServer.Configuration;
2 | using SDG.Framework.Devkit;
3 |
4 | namespace DevkitServer.Multiplayer;
5 | ///
6 | /// Stores the user that's responsible for placing an . On the client it only stores a set of the ones you placed.
7 | ///
8 | public static class HierarchyResponsibilities
9 | {
10 | private const string Source = "HIERARCHY RESPONSIBILITIES";
11 | #nullable disable
12 | private static InstanceIdResponsibilityTable Table;
13 | public static string SavePath { get; private set; }
14 | #nullable restore
15 |
16 | #if SERVER
17 | public static ulong GetPlacer(uint instanceId) => Table != null ? Table.GetPlacer(instanceId) : 0ul;
18 | public static bool IsPlacer(uint instanceId, ulong user) => Table != null && Table.IsPlacer(instanceId, user);
19 | #else
20 | public static bool IsPlacer(uint instanceId) => Table != null && Table.IsPlacer(instanceId);
21 | #endif
22 | public static void Init()
23 | {
24 | SavePath = Path.Combine(DevkitServerConfig.LevelDirectory, "Responsibilities", "hierarchy-responsibilities.dat");
25 | Table = new InstanceIdResponsibilityTable(SavePath, Source);
26 | Reload();
27 | }
28 |
29 | /// Reload from config file.
30 | public static void Reload(bool resaveIfNeeded = true) => Table?.Reload(resaveIfNeeded);
31 | /// Remove from save.
32 | public static void Remove(uint instanceId, bool save = true) => Table?.Remove(instanceId, save);
33 |
34 | /// Set in save. Sets to owned on client and sets owner on server.
35 | public static void Set(uint instanceId
36 | #if SERVER
37 | , ulong steam64
38 | #endif
39 | , bool save = true) => Table?.Set(instanceId,
40 | #if SERVER
41 | steam64,
42 | #endif
43 | save
44 | );
45 |
46 | /// Save all responsibilities.
47 | public static void Save() => Table?.Save();
48 | }
--------------------------------------------------------------------------------
/Multiplayer/LevelObjectResponsibilities.cs:
--------------------------------------------------------------------------------
1 | using DevkitServer.Configuration;
2 |
3 | namespace DevkitServer.Multiplayer;
4 | ///
5 | /// Stores the user that's responsible for placing an . On the client it only stores a set of the ones you placed.
6 | ///
7 | public static class LevelObjectResponsibilities
8 | {
9 | private const string Source = "LEVEL OBJECT RESPONSIBILITIES";
10 | #nullable disable
11 | private static InstanceIdResponsibilityTable Table;
12 | public static string SavePath { get; private set; }
13 | #nullable restore
14 |
15 | #if SERVER
16 | public static ulong GetPlacer(uint instanceId) => Table != null ? Table.GetPlacer(instanceId) : 0ul;
17 | public static bool IsPlacer(uint instanceId, ulong user) => Table != null && Table.IsPlacer(instanceId, user);
18 | #else
19 | public static bool IsPlacer(uint instanceId) => Table != null && Table.IsPlacer(instanceId);
20 | #endif
21 |
22 | public static void Init()
23 | {
24 | SavePath = Path.Combine(DevkitServerConfig.LevelDirectory, "Responsibilities", "object-responsibilities.dat");
25 | Table = new InstanceIdResponsibilityTable(SavePath, Source);
26 | Reload();
27 | }
28 |
29 | /// Reload from config file.
30 | public static void Reload(bool resaveIfNeeded = true) => Table?.Reload(resaveIfNeeded);
31 | /// Remove from save.
32 | public static void Remove(uint instanceId, bool save = true) => Table?.Remove(instanceId, save);
33 |
34 | /// Set in save. Sets to owned on client and sets owner on server.
35 | public static void Set(uint instanceId
36 | #if SERVER
37 | , ulong steam64
38 | #endif
39 | , bool save = true) => Table?.Set(instanceId,
40 | #if SERVER
41 | steam64,
42 | #endif
43 | save
44 | );
45 |
46 | /// Save all responsibilities.
47 | public static void Save() => Table?.Save();
48 | }
--------------------------------------------------------------------------------
/Multiplayer/NetId64Registry.cs:
--------------------------------------------------------------------------------
1 | using DevkitServer.Multiplayer.Actions;
2 |
3 | namespace DevkitServer.Multiplayer;
4 | public static class NetId64Registry
5 | {
6 | private static ulong _min;
7 |
8 | public static NetId64 GetUniqueId()
9 | {
10 | if (_min == ulong.MaxValue)
11 | Reset();
12 | return new NetId64(++_min);
13 | }
14 |
15 | public static void Reset()
16 | {
17 | _min = 0;
18 | }
19 | }
--------------------------------------------------------------------------------
/Patches/ServerGizmoPatches.cs:
--------------------------------------------------------------------------------
1 | #if SERVER
2 | using HarmonyLib;
3 | using System.Reflection;
4 | using System.Reflection.Emit;
5 |
6 | namespace DevkitServer.Patches;
7 | /*
8 | * After running for long enough, the server would run out of memory because the gizmo requests were not being dequeued.
9 | * This class removes all the queueing methods from RuntimeGizmos.
10 | */
11 | internal static class ServerGizmoPatches
12 | {
13 | private static readonly List Patched = new List();
14 | private static readonly MethodInfo TranspilerMethod = new Func, IEnumerable>(Transpiler).Method;
15 | internal static void Patch()
16 | {
17 | Patched.Clear();
18 | Patched.AddRange(typeof(RuntimeGizmos).GetMethods(BindingFlags.Instance | BindingFlags.Public).Where(x => x.DeclaringType == typeof(RuntimeGizmos) && x.ReturnType == typeof(void)));
19 | foreach (MethodInfo method in Patched)
20 | {
21 | PatchesMain.Patcher.Patch(method, transpiler: new HarmonyMethod(TranspilerMethod));
22 | Logger.DevkitServer.LogDebug(nameof(ServerGizmoPatches), $"Emptied method {method.Format()} on the server to help with performance.");
23 | }
24 | }
25 | private static IEnumerable Transpiler(IEnumerable old) => new CodeInstruction[] { new CodeInstruction(OpCodes.Ret) }.Concat(old);
26 | }
27 | #endif
--------------------------------------------------------------------------------
/Players/EditorInteractEx.cs:
--------------------------------------------------------------------------------
1 | #if CLIENT
2 | using DanielWillett.ReflectionTools;
3 | using DevkitServer.API;
4 |
5 | namespace DevkitServer.Players;
6 |
7 | [EarlyTypeInit]
8 | public class EditorInteractEx
9 | {
10 | public static Type? EditorInteractType { get; } = AccessorExtensions.AssemblyCSharp.GetType("SDG.Unturned.EditorInteract");
11 |
12 | private static readonly StaticGetter? GetWorldHit = Accessor.GenerateStaticPropertyGetter(EditorInteractType, "worldHit");
13 | private static readonly StaticGetter? GetObjectHit = Accessor.GenerateStaticPropertyGetter(EditorInteractType, "objectHit");
14 | private static readonly StaticGetter? GetLogicHit = Accessor.GenerateStaticPropertyGetter(EditorInteractType, "logicHit");
15 | private static readonly StaticGetter? GetScreenRay = Accessor.GenerateStaticPropertyGetter(EditorInteractType, "ray");
16 | private static readonly StaticGetter? GetIsFlying = Accessor.GenerateStaticPropertyGetter(EditorInteractType, "isFlying");
17 | #if CLIENT
18 | static EditorInteractEx()
19 | {
20 |
21 | }
22 | #endif
23 | public static bool IsFlying => GetIsFlying != null && GetIsFlying();
24 | public static Ray Ray => GetScreenRay == null ? UserControl.GetLocalLookRay() : GetScreenRay();
25 | public static bool TryGetWorldHit(out RaycastHit hit)
26 | {
27 | if (GetWorldHit == null)
28 | {
29 | hit = default;
30 | return false;
31 | }
32 |
33 | hit = GetWorldHit();
34 | return hit.transform != null;
35 | }
36 | public static bool TryGetObjectHit(out RaycastHit hit)
37 | {
38 | if (GetObjectHit == null)
39 | {
40 | hit = default;
41 | return false;
42 | }
43 |
44 | hit = GetObjectHit();
45 | return hit.transform != null;
46 | }
47 | public static bool TryGetLogicHit(out RaycastHit hit)
48 | {
49 | if (GetLogicHit == null)
50 | {
51 | hit = default;
52 | return false;
53 | }
54 |
55 | hit = GetLogicHit();
56 | return hit.transform != null;
57 | }
58 | }
59 | #endif
--------------------------------------------------------------------------------
/Promo/icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DanielWillett/DevkitServer/557c59f537c0caca18954818a106bd73c40dbb36/Promo/icon.png
--------------------------------------------------------------------------------
/TestPlugin/Properties/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | using System.Reflection;
2 | using System.Runtime.CompilerServices;
3 | using System.Runtime.InteropServices;
4 |
5 | // Setting ComVisible to false makes the types in this assembly not visible
6 | // to COM components. If you need to access a type in this assembly from
7 | // COM, set the ComVisible attribute to true on that type.
8 | [assembly: ComVisible(false)]
9 |
10 | // The following GUID is for the ID of the typelib if this project is exposed to COM
11 | [assembly: Guid("93ef58e4-4cd0-4ede-839f-8ac5ff9611a9")]
12 |
--------------------------------------------------------------------------------
/TestPlugin/TestPlugin.cs:
--------------------------------------------------------------------------------
1 | using DevkitServer.API;
2 | using DevkitServer.Multiplayer.Networking;
3 | using HtmlAgilityPack;
4 |
5 | namespace TestPlugin;
6 |
7 | public class TestPlugin : Plugin
8 | {
9 | internal static readonly NetCall TestNetCall = new NetCall(ReceiveTestNetCall);
10 | public static TestPlugin? Instance { get; private set; }
11 |
12 | [NetCall(NetCallSource.FromEither, "96603f5950cc4460825763ac77286a1a")]
13 | private static void ReceiveTestNetCall(MessageContext ctx, int val)
14 | {
15 | Instance?.LogInfo($"Received test net call: {val.Format()}.");
16 | }
17 | public override string Name => "TestPlugin.Core";
18 |
19 | #if DEBUG
20 | public override bool DeveloperMode => true;
21 | #else
22 | public override bool DeveloperMode => false;
23 | #endif
24 |
25 | protected override void Load()
26 | {
27 | Instance = this;
28 | this.LogInfo("Loaded " + Name + ".");
29 | this.LogInfo("On Server: " + Provider.serverID);
30 | this.LogInfo("On Client: " + Provider.client);
31 | bool test = HtmlDocument.IsWhiteSpace(' ');
32 | _ = test;
33 | this.LogInfo("Config value: " + Configuration.TestArgumentOne + ".");
34 | }
35 |
36 | protected override void Unload()
37 | {
38 | Instance = null;
39 | this.LogInfo("Unloaded " + Name + ".");
40 | }
41 | }
--------------------------------------------------------------------------------
/TestPlugin/TestPlugin.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 | netstandard2.1
4 | TestPlugin
5 | TestPlugin
6 | Copyright © 2023
7 | bin\$(Configuration)\
8 | preview
9 | enable
10 | false
11 | false
12 | https://github.com/DanielWillett/DevkitServer
13 | ClientDebug;ClientRelease;ServerDebug;ServerRelease
14 | True
15 | enable
16 | True
17 | 1701;1702,1591,1587,1711,1735,1573,1574,1570,1584,1658
18 |
19 | $(ProjectDir)..\
20 |
21 |
22 |
23 |
24 |
25 |
26 |
--------------------------------------------------------------------------------
/TestPlugin/TestPluginConfig.cs:
--------------------------------------------------------------------------------
1 | namespace TestPlugin;
2 | public class TestPluginConfig
3 | {
4 | public string TestArgumentOne { get; set; }
5 |
6 | public TestPluginConfig()
7 | {
8 | TestArgumentOne = "4 °C";
9 | }
10 | }
11 |
--------------------------------------------------------------------------------
/TestPlugin/TestPluginSubmodule.cs:
--------------------------------------------------------------------------------
1 | using DevkitServer.API;
2 |
3 | namespace TestPlugin;
4 |
5 | [LoadPriority(1)]
6 | internal class TestPluginSubmodule : Plugin
7 | {
8 | public override string Name => "TestPlugin.Module";
9 |
10 | #if DEBUG
11 | public override bool DeveloperMode => true;
12 | #else
13 | public override bool DeveloperMode => false;
14 | #endif
15 |
16 | protected override void Load()
17 | {
18 | this.LogInfo("Loaded " + Name + ".");
19 | #if SERVER
20 | this.LogInfo("On Server: " + Provider.serverID);
21 | #elif CLIENT
22 | this.LogInfo("On Client: " + Provider.client);
23 | #endif
24 | }
25 | protected override void Unload()
26 | {
27 | this.LogInfo("Unloaded " + Name + ".");
28 | }
29 |
30 | protected override LocalDatDictionary DefaultLocalization => new LocalDatDictionary
31 | {
32 | { "TestKey", "Test Value" },
33 | { "TestKey2", "Test Value 2" }
34 | };
35 | }
36 |
--------------------------------------------------------------------------------
/Util/CachedTime.cs:
--------------------------------------------------------------------------------
1 | namespace DevkitServer.Util;
2 |
3 | internal class CachedTime : MonoBehaviour
4 | {
5 | private static readonly CachedMulticastEvent EventOnLateUpdate = new CachedMulticastEvent(typeof(CachedTime), nameof(OnLateUpdate));
6 | internal static CachedTime? Instance { get; private set; }
7 | private static float _deltaTime;
8 | private static bool _deltaTimeSet;
9 | private static float _realtimeSinceStartup;
10 | private static bool _realtimeSinceStartupSet;
11 |
12 | public static event Action OnLateUpdate
13 | {
14 | add => EventOnLateUpdate.Add(value);
15 | remove => EventOnLateUpdate.Remove(value);
16 | }
17 |
18 | public static float DeltaTime
19 | {
20 | get
21 | {
22 | if (!_deltaTimeSet)
23 | {
24 | _deltaTimeSet = true;
25 | _deltaTime = Time.deltaTime;
26 | }
27 |
28 | return _deltaTime;
29 | }
30 | }
31 |
32 | public static float RealtimeSinceStartup
33 | {
34 | get
35 | {
36 | if (!_realtimeSinceStartupSet)
37 | {
38 | _realtimeSinceStartupSet = true;
39 | _realtimeSinceStartup = Time.realtimeSinceStartup;
40 | }
41 |
42 | return _realtimeSinceStartup;
43 | }
44 | }
45 |
46 | [UsedImplicitly]
47 | private void Awake()
48 | {
49 | if (Instance != null)
50 | Destroy(Instance);
51 |
52 | Instance = this;
53 | }
54 |
55 | [UsedImplicitly]
56 | private void Update()
57 | {
58 | _deltaTimeSet = false;
59 | _realtimeSinceStartupSet = false;
60 | }
61 |
62 | [UsedImplicitly]
63 | private void LateUpdate()
64 | {
65 | EventOnLateUpdate.TryInvoke();
66 | }
67 | }
68 |
--------------------------------------------------------------------------------
/Util/ColoredOpCodeFormatter.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Text;
4 | using DanielWillett.ReflectionTools.Formatting;
5 |
6 | namespace DevkitServer.Util;
7 | internal class ColoredOpCodeFormatter : DefaultOpCodeFormatter
8 | {
9 | }
10 |
--------------------------------------------------------------------------------
/Util/CommonErrors.cs:
--------------------------------------------------------------------------------
1 | namespace DevkitServer.Util;
2 | internal static class CommonErrors
3 | {
4 | #if SERVER
5 | public static void LogPlayerSavedataAccessError(string fullPath)
6 | {
7 | Logger.DevkitServer.LogError("PLAYER SAVEDATA", $"Error accessing player savedata directory {fullPath.Format()}, consider changing the {"player_savedata_override".Format()} value in the server config.");
8 | }
9 | #endif
10 | }
11 |
--------------------------------------------------------------------------------
/Util/Comparers/AssetComparer.cs:
--------------------------------------------------------------------------------
1 | namespace DevkitServer.Util.Comparers;
2 | public sealed class AssetComparer : IComparer, IEqualityComparer
3 | {
4 | public static AssetComparer Instance { get; } = new AssetComparer();
5 | private AssetComparer() { }
6 | public int Compare(Asset x, Asset y) => x.GUID.CompareTo(y.GUID);
7 | public bool Equals(Asset x, Asset y) => x.GUID == y.GUID;
8 | public int GetHashCode(Asset obj) => obj.GUID.GetHashCode();
9 | }
10 |
--------------------------------------------------------------------------------
/Util/Comparers/LevelObjectComparer.cs:
--------------------------------------------------------------------------------
1 | namespace DevkitServer.Util.Comparers;
2 | public class LevelObjectComparer : IComparer, IEqualityComparer
3 | {
4 | public static readonly LevelObjectComparer Instance = new LevelObjectComparer();
5 | public int Compare(LevelObject x, LevelObject y) => x.instanceID.CompareTo(y.instanceID);
6 | public bool Equals(LevelObject x, LevelObject y) => x.instanceID == y.instanceID;
7 | public int GetHashCode(LevelObject obj) => unchecked( (int)obj.instanceID );
8 | private LevelObjectComparer() { }
9 | }
10 |
--------------------------------------------------------------------------------
/Util/FoliageUtil.cs:
--------------------------------------------------------------------------------
1 | using DanielWillett.ReflectionTools;
2 | using DevkitServer.API;
3 | using SDG.Framework.Foliage;
4 |
5 | namespace DevkitServer.Util;
6 |
7 | [EarlyTypeInit]
8 | public static class FoliageUtil
9 | {
10 | private static readonly StaticGetter> GetTiles =
11 | Accessor.GenerateStaticGetter>("tiles", throwOnError: true)!;
12 |
13 | /// A readonly value collection used to loop through all the existing tiles.
14 | public static IReadOnlyCollection Tiles => GetTiles().Values;
15 |
16 | ///
17 | /// If possible, use instead.
18 | ///
19 | /// A copy of all existing tiles.
20 | public static List GetAllTiles() => new List(Tiles);
21 | public static bool Encapsulates(this in FoliageBounds outer, in FoliageBounds inner) =>
22 | outer.min.x < inner.min.x && outer.min.y < inner.min.y && outer.max.x > inner.max.x && outer.max.y > inner.max.y;
23 | public static bool Overlaps(this in FoliageBounds left, in FoliageBounds right) =>
24 | !(left.max.x < right.min.x || left.max.y < right.min.y || left.min.x > right.max.x || left.min.y > right.max.y);
25 | public static void Encapsulate(this ref FoliageBounds left, in FoliageBounds right)
26 | {
27 | if (left.min.x > right.min.x)
28 | left.min.x = right.min.x;
29 | if (left.min.y > right.min.y)
30 | left.min.y = right.min.y;
31 | if (left.max.x < right.max.x)
32 | left.max.x = right.max.x;
33 | if (left.max.y < right.max.y)
34 | left.max.y = right.max.y;
35 | }
36 | }
37 |
--------------------------------------------------------------------------------
/Util/HighlighterUtil.cs:
--------------------------------------------------------------------------------
1 | #if CLIENT
2 | using DevkitServer.API.Devkit;
3 | using HighlightingSystem;
4 | using SDG.Framework.Utilities;
5 |
6 | namespace DevkitServer.Util;
7 | public class HighlighterUtil
8 | {
9 | public static void Highlight(Transform transform, Color color, float fade = 0.25f)
10 | {
11 | ThreadUtil.assertIsGameThread();
12 |
13 | Highlighter highlighter = transform.gameObject.GetOrAddComponent();
14 |
15 | if (transform.TryGetComponent(out IDevkitHighlightHandler handler))
16 | handler.OnHighlight(highlighter);
17 |
18 | highlighter.ConstantOn(color, Mathf.Max(0, fade));
19 | }
20 |
21 | public static void Unhighlight(Transform transform, float fade = 0.25f)
22 | {
23 | ThreadUtil.assertIsGameThread();
24 |
25 | if (transform == null)
26 | return;
27 |
28 | if (fade <= 0f)
29 | HighlighterTool.unhighlight(transform);
30 | else if (transform.gameObject.TryGetComponent(out Highlighter highlighter))
31 | {
32 | highlighter.ConstantOff(fade);
33 | TimeUtility.InvokeAfterDelay(() =>
34 | {
35 | if (transform != null && transform.gameObject.TryGetComponent(out Highlighter highlighter) && !highlighter.constant)
36 | Object.DestroyImmediate(highlighter);
37 | }, fade);
38 | }
39 | }
40 | }
41 | #endif
--------------------------------------------------------------------------------
/Util/InputUtil.cs:
--------------------------------------------------------------------------------
1 | namespace DevkitServer.Util;
2 | public static class InputUtil
3 | {
4 | ///
5 | /// Is holding down the control key (or the command key on mac).
6 | ///
7 | /// Check the key on the left side of the keyboard.
8 | /// Check the key on the right side of the keyboard.
9 | public static bool IsHoldingControl(bool left = true, bool right = true)
10 | {
11 | if (Application.platform is RuntimePlatform.OSXEditor or RuntimePlatform.OSXPlayer or
12 | RuntimePlatform.OSXServer or RuntimePlatform.IPhonePlayer or RuntimePlatform.tvOS)
13 | {
14 | return left && InputEx.GetKey(KeyCode.LeftCommand) || right && InputEx.GetKey(KeyCode.RightCommand);
15 | }
16 |
17 | return left && InputEx.GetKey(KeyCode.LeftControl) || right && InputEx.GetKey(KeyCode.RightControl);
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/Util/Region/RegionsIterator.cs:
--------------------------------------------------------------------------------
1 | namespace DevkitServer.Util.Region;
2 | public struct RegionsIterator : IEnumerator, IEnumerable
3 | {
4 | private int _x;
5 | private int _y;
6 | private readonly bool _yPrimary;
7 | private RegionCoord _current;
8 | public bool MoveNext()
9 | {
10 | if (_yPrimary)
11 | {
12 | ++_x;
13 | if (_x >= Regions.WORLD_SIZE)
14 | {
15 | _x = 0;
16 | ++_y;
17 | if (_y >= Regions.WORLD_SIZE)
18 | return false;
19 | }
20 | }
21 | else
22 | {
23 | ++_y;
24 | if (_y >= Regions.WORLD_SIZE)
25 | {
26 | _y = 0;
27 | ++_x;
28 | if (_x >= Regions.WORLD_SIZE)
29 | return false;
30 | }
31 | }
32 | _current = new RegionCoord((byte)_x, (byte)_y);
33 | return true;
34 | }
35 |
36 | public RegionsIterator()
37 | {
38 | _yPrimary = false;
39 | _x = 0;
40 | _y = -1;
41 | }
42 | public RegionsIterator(bool yPrimary = false)
43 | {
44 | _yPrimary = yPrimary;
45 | _x = yPrimary ? -1 : 0;
46 | _y = yPrimary ? 0 : -1;
47 | }
48 | public void Reset()
49 | {
50 | _x = _yPrimary ? -1 : 0;
51 | _y = _yPrimary ? 0 : -1;
52 | }
53 |
54 | public RegionCoord Current => _current;
55 | object IEnumerator.Current => Current;
56 |
57 | void IDisposable.Dispose() { }
58 | public RegionsIterator GetEnumerator() => new RegionsIterator(_yPrimary);
59 | IEnumerator IEnumerable.GetEnumerator() => new RegionsIterator(_yPrimary);
60 | IEnumerator IEnumerable.GetEnumerator() => new RegionsIterator(_yPrimary);
61 | }
62 |
--------------------------------------------------------------------------------
/Util/SpanExtensions.cs:
--------------------------------------------------------------------------------
1 | namespace DevkitServer.Util;
2 | public static class SpanExtensions
3 | {
4 | public static int IndexOf(this ReadOnlySpan span, ReadOnlySpan value, int startIndex) where T : IEquatable
5 | {
6 | int index = span[startIndex..].IndexOf(value);
7 | if (index < 0)
8 | return -1;
9 | return index + startIndex;
10 | }
11 | public static int IndexOf(this ReadOnlySpan span, T value, int startIndex) where T : IEquatable
12 | {
13 | int index = span[startIndex..].IndexOf(value);
14 | if (index < 0)
15 | return -1;
16 | return index + startIndex;
17 | }
18 | public static int Count(this ReadOnlySpan span, ReadOnlySpan value) where T : IEquatable
19 | {
20 | int amt = 0;
21 | int lastIndex = -value.Length;
22 | while ((lastIndex = span.IndexOf(value, lastIndex + value.Length)) >= 0)
23 | {
24 | ++amt;
25 | if (lastIndex + value.Length >= span.Length)
26 | break;
27 | }
28 |
29 | return amt;
30 | }
31 | }
32 |
--------------------------------------------------------------------------------
/devkitserver.dll.publickey:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DanielWillett/DevkitServer/557c59f537c0caca18954818a106bd73c40dbb36/devkitserver.dll.publickey
--------------------------------------------------------------------------------
/pre-push CommitId.cs hook.txt:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 | COMMIT_ID=$(git rev-parse HEAD)
3 |
4 | (
5 | echo namespace DevkitServer\;
6 | echo
7 | echo // This file is automatically overwritten during commit.
8 | echo internal static class CommitId
9 | echo \{
10 | echo public static readonly string Commit = \"$COMMIT_ID\"\;
11 | echo \}
12 | ) > CommitId.cs
13 |
--------------------------------------------------------------------------------