Skip to content

Commit 000be8c

Browse files
authored
Merge pull request #726 from starfi5h/pr-update
Nebula 0.9.15 for DSP 0.10.32.25595 Update
2 parents c4793b3 + f2c213f commit 000be8c

21 files changed

+146
-65
lines changed

.github/scripts/thunderstore_bundle.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -123,7 +123,7 @@ function generateManifest() {
123123
BEPINEX_DEPENDENCY,
124124
`nebula-${apiPluginInfo.name}-${apiPluginInfo.version}`,
125125
"PhantomGamers-IlLine-1.0.0",
126-
"starfi5h-BulletTime-1.5.3",
126+
"starfi5h-BulletTime-1.5.5",
127127
],
128128
website_url: "https://github.com/hubastard/nebula"
129129
};

CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,9 @@
11
## Changelog
22

3+
0.9.15:
4+
- Compatible with game version 0.10.32.25595
5+
- @starfi5h: Add object protoId check for destruct and upgrade requests
6+
37
0.9.14:
48
- @starfi5h: Add `Enable Other Player Sounds` config settings in multiplayer general tab
59
- @starfi5h: Fix headless server error

NebulaModel/Packets/Factory/DestructEntityRequest.cs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,16 @@ public class DestructEntityRequest
44
{
55
public DestructEntityRequest() { }
66

7-
public DestructEntityRequest(int planetId, int objId, int authorId)
7+
public DestructEntityRequest(int planetId, int objId, int protoId, int authorId)
88
{
99
AuthorId = authorId;
1010
PlanetId = planetId;
11+
ProtoId = protoId;
1112
ObjId = objId;
1213
}
1314

1415
public int PlanetId { get; set; }
1516
public int ObjId { get; set; }
17+
public int ProtoId { get; set; }
1618
public int AuthorId { get; set; }
1719
}

NebulaModel/Packets/Factory/UpgradeEntityRequest.cs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,16 +4,18 @@ public class UpgradeEntityRequest
44
{
55
public UpgradeEntityRequest() { }
66

7-
public UpgradeEntityRequest(int planetId, int objId, int upgradeProtoId, int authorId)
7+
public UpgradeEntityRequest(int planetId, int objId, int originProtoId, int upgradeProtoId, int authorId)
88
{
99
PlanetId = planetId;
1010
ObjId = objId;
11+
OriginProtoId = originProtoId;
1112
UpgradeProtoId = upgradeProtoId;
1213
AuthorId = authorId;
1314
}
1415

1516
public int PlanetId { get; set; }
1617
public int ObjId { get; set; }
18+
public int OriginProtoId { get; set; }
1719
public int UpgradeProtoId { get; set; }
1820
public int AuthorId { get; set; }
1921
}

NebulaNetwork/PacketProcessors/Chat/NewChatMessageProcessor.cs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,11 @@ protected override void ProcessPacket(NewChatMessagePacket packet, NebulaConnect
2929
Server.SendPacketExclude(packet, conn);
3030
}
3131

32+
if (packet.MessageType == NebulaModel.DataStructures.Chat.ChatMessageType.SystemWarnMessage)
33+
{
34+
Log.Warn(packet.MessageText); // Record system warn message in log file
35+
}
36+
3237
if (string.IsNullOrEmpty(packet.UserName))
3338
{
3439
// non-player chat

NebulaNetwork/PacketProcessors/Factory/DestructEntityRequestProcessor.cs

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,16 @@
11
#region
22

3+
using System;
34
using NebulaAPI;
45
using NebulaAPI.Packets;
6+
using NebulaModel.DataStructures.Chat;
7+
using NebulaModel.Logger;
58
using NebulaModel.Networking;
69
using NebulaModel.Packets;
10+
using NebulaModel.Packets.Chat;
711
using NebulaModel.Packets.Factory;
812
using NebulaWorld;
13+
using NebulaWorld.Factory;
914

1015
#endregion
1116

@@ -28,6 +33,28 @@ protected override void ProcessPacket(DestructEntityRequest packet, NebulaConnec
2833
return;
2934
}
3035

36+
var localProtoId = FactoryManager.GetObjectProtoId(planet?.factory, packet.ObjId);
37+
if (localProtoId != packet.ProtoId)
38+
{
39+
// Either the object is already destroyed on server (0), id out of bound (-1) or object mismatch.
40+
// Omit the first case. (Somehow area dismantle often trigger the first case)
41+
if (localProtoId != 0)
42+
{
43+
var log = $"DestructEntityRequest rejected on planet {packet.PlanetId} for object {packet.ObjId}: {localProtoId} != {packet.ProtoId}";
44+
if (IsHost)
45+
{
46+
Log.Warn(log);
47+
var response = "Server rejected destruct request due to protoId desync".Translate();
48+
conn.SendPacket(new NewChatMessagePacket(ChatMessageType.SystemWarnMessage, response, DateTime.Now, ""));
49+
}
50+
else
51+
{
52+
Log.WarnInform(log);
53+
}
54+
}
55+
return;
56+
}
57+
3158
Multiplayer.Session.Factories.TargetPlanet = packet.PlanetId;
3259
Multiplayer.Session.Factories.PacketAuthor = packet.AuthorId;
3360
var tmpFactory = pab.factory;

NebulaNetwork/PacketProcessors/Factory/UpgradeEntityRequestProcessor.cs

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,16 @@
11
#region
22

3+
using System;
34
using NebulaAPI;
45
using NebulaAPI.Packets;
6+
using NebulaModel.DataStructures.Chat;
7+
using NebulaModel.Logger;
58
using NebulaModel.Networking;
69
using NebulaModel.Packets;
10+
using NebulaModel.Packets.Chat;
711
using NebulaModel.Packets.Factory;
812
using NebulaWorld;
13+
using NebulaWorld.Factory;
914

1015
#endregion
1116

@@ -27,6 +32,23 @@ protected override void ProcessPacket(UpgradeEntityRequest packet, NebulaConnect
2732
return;
2833
}
2934

35+
var localProtoId = FactoryManager.GetObjectProtoId(planet?.factory, packet.ObjId);
36+
if (localProtoId != packet.OriginProtoId)
37+
{
38+
var log = $"UpgradeEntityRequest rejected on planet {packet.PlanetId} for object {packet.ObjId}: {localProtoId} != {packet.OriginProtoId}";
39+
if (IsHost)
40+
{
41+
Log.Warn(log);
42+
var response = "Server rejected upgrade request due to protoId desync".Translate();
43+
conn.SendPacket(new NewChatMessagePacket(ChatMessageType.SystemWarnMessage, response, DateTime.Now, ""));
44+
}
45+
else
46+
{
47+
Log.WarnInform(log);
48+
}
49+
return;
50+
}
51+
3052
Multiplayer.Session.Factories.TargetPlanet = packet.PlanetId;
3153
Multiplayer.Session.Factories.PacketAuthor = packet.AuthorId;
3254

NebulaNetwork/PacketProcessors/Logistics/ControlPanel/LCPObjectEntryEntityInfoProcessor.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ private static void UpdateEntry(UIControlPanelObjectEntry objectEntry, LCPObject
6262
text = packet.Name;
6363
entry.stationNameText.color = entry.masterWindow.renamedColor;
6464
}
65-
Utils.UITextTruncateShow(entry.stationNameText, ref text, entry.stationNameTextWidthLimit, ref entry.stationNameTextSettings);
65+
Utils.UITextTruncateShow(entry.stationNameText, ref text, entry.stationNameTextWidthLimit);
6666
}
6767
else if (objectEntry is UIControlPanelAdvancedMinerEntry)
6868
{
@@ -89,7 +89,7 @@ private static void UpdateEntry(UIControlPanelObjectEntry objectEntry, LCPObject
8989
text = packet.Name;
9090
entry.stationNameText.color = entry.masterWindow.renamedColor;
9191
}
92-
Utils.UITextTruncateShow(entry.stationNameText, ref text, entry.stationNameTextWidthLimit, ref entry.stationNameTextSettings);
92+
Utils.UITextTruncateShow(entry.stationNameText, ref text, entry.stationNameTextWidthLimit);
9393
}
9494
else if (objectEntry is UIControlPanelDispenserEntry)
9595
{

NebulaNetwork/PacketProcessors/Planet/VegeMinedProcessor.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ protected override void ProcessPacket(VegeMinedPacket packet, NebulaConnection c
2525
}
2626
using (Multiplayer.Session.Planets.IsIncomingRequest.On())
2727
{
28-
Multiplayer.Session.Factories.TargetPlanet = packet.PlanetId;
28+
Multiplayer.Session.Planets.TargetPlanet = packet.PlanetId;
2929
if (packet.Amount == 0)
3030
{
3131
if (packet.IsVein)
@@ -70,7 +70,7 @@ protected override void ProcessPacket(VegeMinedPacket packet, NebulaConnection c
7070
factory.veinPool[packet.VegeId].amount = packet.Amount;
7171
veinGroups[groupIndex].amount -= 1L;
7272
}
73-
Multiplayer.Session.Factories.TargetPlanet = NebulaModAPI.PLANET_NONE;
73+
Multiplayer.Session.Planets.TargetPlanet = NebulaModAPI.PLANET_NONE;
7474
}
7575
}
7676
}

NebulaPatcher/NebulaPlugin.cs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -358,10 +358,9 @@ private static async void ActivityManager_OnActivityJoin(string secret)
358358

359359
private static void InitPatches()
360360
{
361-
Log.Info("Patching Dyson Sphere Program...");
362-
363361
try
364362
{
363+
Log.Info($"Patching Dyson Sphere Program version {GameConfig.gameVersion.ToFullString()}");
365364
Log.Info($"Applying patches from {PluginInfo.PLUGIN_NAME} {PluginInfo.PLUGIN_DISPLAY_VERSION} made for game version {DSPGameVersion.VERSION}");
366365
#if DEBUG
367366
if (Directory.Exists("./mmdump"))

0 commit comments

Comments
 (0)