Skip to content

Commit d2cf3c6

Browse files
authored
regression: fix missing entities (SubnauticaNitrox#2675)
2 parents f5ab747 + cbb4688 commit d2cf3c6

4 files changed

Lines changed: 25 additions & 34 deletions

File tree

Nitrox.Server.Subnautica/Extensions/ServiceCollectionExtensions.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -106,23 +106,23 @@ public IServiceCollection AddFallback<TInterface, TFallback>() where TInterface
106106

107107
public IServiceCollection AddHostedSingletonService<T>() where T : class, IHostedService => services.AddSingleton<T>().AddHostedService(provider => provider.GetRequiredService<T>());
108108

109-
public IServiceCollection AddNitroxOptions()
109+
public IServiceCollection AddNitroxOptions(ServerStartOptions startOptions)
110110
{
111111
services.AddOptionsWithValidateOnStart<ServerStartOptions, ServerStartOptions.Validator>()
112112
.BindConfiguration("")
113113
.Configure(options =>
114114
{
115115
if (string.IsNullOrWhiteSpace(options.GamePath))
116116
{
117-
options.GamePath = NitroxUser.GamePath;
117+
options.GamePath = startOptions.GamePath;
118118
}
119119
if (string.IsNullOrWhiteSpace(options.NitroxAssetsPath))
120120
{
121-
options.NitroxAssetsPath = NitroxUser.AssetsPath;
121+
options.NitroxAssetsPath = startOptions.NitroxAssetsPath;
122122
}
123123
if (string.IsNullOrWhiteSpace(options.NitroxAppDataPath))
124124
{
125-
options.NitroxAppDataPath = NitroxUser.AppDataPath;
125+
options.NitroxAppDataPath = startOptions.NitroxAppDataPath;
126126
}
127127
});
128128
services.AddOptionsWithValidateOnStart<SubnauticaServerOptions, SubnauticaServerOptions.Validator>()

Nitrox.Server.Subnautica/Models/Serialization/BatchCellsParser.cs

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ public BatchCellsParser(EntitySpawnPointFactory entitySpawnPointFactory, Subnaut
4040

4141
public List<EntitySpawnPoint> ParseBatchData(NitroxInt3 batchId)
4242
{
43-
List<EntitySpawnPoint> spawnPoints = new List<EntitySpawnPoint>();
43+
List<EntitySpawnPoint> spawnPoints = [];
4444

4545
ParseFile(batchId, "CellsCache", "baked-", "", spawnPoints);
4646

@@ -49,12 +49,6 @@ public List<EntitySpawnPoint> ParseBatchData(NitroxInt3 batchId)
4949

5050
public void ParseFile(NitroxInt3 batchId, string pathPrefix, string prefix, string suffix, List<EntitySpawnPoint> spawnPoints)
5151
{
52-
string subnauticaPath = NitroxUser.GamePath;
53-
if (string.IsNullOrEmpty(subnauticaPath))
54-
{
55-
return;
56-
}
57-
5852
string path = options.Value.GetSubnauticaBuild18Path();
5953
string fileName = Path.Combine(path, pathPrefix, $"{prefix}batch-cells-{batchId.X}-{batchId.Y}-{batchId.Z}{suffix}.bin");
6054

Nitrox.Server.Subnautica/Program.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,7 @@ private static async Task StartServerAsync(string[] args)
9191
options.ServicesStartConcurrently = true;
9292
options.ServicesStopConcurrently = true;
9393
})
94-
.AddNitroxOptions()
94+
.AddNitroxOptions(startOptions)
9595
// Add initialization services - diagnoses the server environment on startup.
9696
.AddHostedSingletonService<PreventMultiServerInitService>()
9797
.AddHostedSingletonService<NetworkPortAvailabilityService>()

Nitrox.Server.Subnautica/Services/StatusService.cs

Lines changed: 19 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -56,36 +56,33 @@ public async Task StartedAsync(CancellationToken cancellationToken)
5656

5757
async Task LogIps()
5858
{
59-
// Capture and log so that logs are written in one go. This prevents different log lines being inserted in-between.
60-
string logMessage;
61-
using (CaptureScope captureScope = logger.BeginCaptureScope())
59+
// Note: Do not use capture scope here because no redaction happens in captured logs.
60+
/* TODO: Find a way to group logs and output in one go so that unrelated logs aren't in-between.
61+
* Need to implement this by buffering ZLoggerEntry in a queue and writing once signaled (e.g. log scope gets disposed)
62+
*/
63+
using (logger.BeginPlainScope())
6264
{
63-
using (logger.BeginPlainScope())
65+
logger.ZLogInformation($"Use IP to connect:");
66+
using (logger.BeginPrefixScope("\t"))
6467
{
65-
logger.ZLogInformation($"Use IP to connect:");
66-
using (logger.BeginPrefixScope("\t"))
68+
logger.ZLogInformation($"{IPAddress.Loopback} - You (Local)");
69+
foreach ((IPAddress address, NetHelper.MachineIpOrigin origin, string? networkName) in await NetHelper.GetAllKnownIpsAsync())
6770
{
68-
logger.ZLogInformation($"{IPAddress.Loopback} - You (Local)");
69-
foreach ((IPAddress address, NetHelper.MachineIpOrigin origin, string? networkName) in await NetHelper.GetAllKnownIpsAsync())
71+
switch (origin)
7072
{
71-
switch (origin)
72-
{
73-
case NetHelper.MachineIpOrigin.LAN:
74-
logger.LogLanIp(address);
75-
break;
76-
case NetHelper.MachineIpOrigin.VPN:
77-
logger.LogVpnIp(networkName!, address);
78-
break;
79-
case NetHelper.MachineIpOrigin.WAN:
80-
logger.LogWanIp(address);
81-
break;
82-
}
73+
case NetHelper.MachineIpOrigin.LAN:
74+
logger.LogLanIp(address);
75+
break;
76+
case NetHelper.MachineIpOrigin.VPN:
77+
logger.LogVpnIp(networkName!, address);
78+
break;
79+
case NetHelper.MachineIpOrigin.WAN:
80+
logger.LogWanIp(address);
81+
break;
8382
}
8483
}
8584
}
86-
logMessage = $"{string.Join("", captureScope.Logs).Trim(Environment.NewLine)}{Environment.NewLine}";
8785
}
88-
logger.ZLogInformation($"{logMessage}");
8986
}
9087
}
9188

0 commit comments

Comments
 (0)