From c70495809b067dadaefdbbd3f1ed47a10c52426a Mon Sep 17 00:00:00 2001 From: BigB3D <72525665+BigB3D@users.noreply.github.com> Date: Wed, 11 Mar 2026 23:50:39 -0400 Subject: [PATCH 1/2] Paint Multiplayer Compatibility Patch Painting vehicles no longer causes desyncs! (Tested on the Dead Man Switch Motorized mod) Created a dedicated boilerplate for multiplayer (Note: planning to further expand compatibility in the future, probably starting with making filling fuel/ammo/cargo debug tools and stuff) --- Source/Vehicles/.Multiplayer.cs.kate-swp | Bin 0 -> 1433 bytes .../.idea/.idea.Vehicles/.idea/.gitignore | 15 +++++++++++ .../.idea/.idea.Vehicles/.idea/encodings.xml | 4 +++ .../.idea.Vehicles/.idea/indexLayout.xml | 8 ++++++ .../VehiclePawn/VehiclePawn_Rendering.cs | 24 +++++++++++++---- Source/Vehicles/Multiplayer.cs | 25 ++++++++++++++++++ Source/Vehicles/Vehicles.csproj | 2 ++ 7 files changed, 73 insertions(+), 5 deletions(-) create mode 100644 Source/Vehicles/.Multiplayer.cs.kate-swp create mode 100644 Source/Vehicles/.idea/.idea.Vehicles/.idea/.gitignore create mode 100644 Source/Vehicles/.idea/.idea.Vehicles/.idea/encodings.xml create mode 100644 Source/Vehicles/.idea/.idea.Vehicles/.idea/indexLayout.xml create mode 100644 Source/Vehicles/Multiplayer.cs diff --git a/Source/Vehicles/.Multiplayer.cs.kate-swp b/Source/Vehicles/.Multiplayer.cs.kate-swp new file mode 100644 index 0000000000000000000000000000000000000000..25fa94631b8e93c989a6f135c1466e4141bb10f7 GIT binary patch literal 1433 zcmZ`(&uSAv7~iPTs)^AWV~{|nrIh5di1ehV5)vpiSh~=H;$gC#rh}W^Wp# zi)Zl_JopH{ffw;C;&b@@W_Q9a#V-sy^ZowJw=>_yah&x7t_AaEJZ3`~2=>f<>NrmG z@0Z`7zy0{xKlsr5I(z-=`=5{ACvTq+8?7{v;e?ISK+8Db3!&V-!~GX0Io<-dk}ql* z_gJVz7zThE7}s(}J!5!_M2o4R0I9?6Iw;`Yz=UEqtb z8V$rooQ?zOv&86_AMhk8o(e?ZZa{RK2BLC-G*%U)@6bTB8AWbXc$01qY>?Vu-=%@5 zf^CeDsRF7YPtgEmL#qY!z#1UcX&~yBfT!^RV$S>?aBv%#Q0x@BjL9?B-5eddBIM&h zoc5R!I#r=LWk`0Qy$>P9W?9P^36I1?(p9UyAn5jt4D3zR`2ZT|*D;|e)wu)(NF9`i zG!Ug7e6Ia-)*Z}!5o;NROw7#zg3O?5LPAk8HU|L27(X%u$GI#y)8b_`aZk7ksrS3v zTSHEt%qi0mlcCg-2lBlrUOr3GIF6KNXOXha%2wS;%YZICRyjqM`y nHg>TRWLwytS*78FWbT8LvrSVf13UnQa_v2qypYVj=yv`Ax`yL% literal 0 HcmV?d00001 diff --git a/Source/Vehicles/.idea/.idea.Vehicles/.idea/.gitignore b/Source/Vehicles/.idea/.idea.Vehicles/.idea/.gitignore new file mode 100644 index 00000000..3d2569a6 --- /dev/null +++ b/Source/Vehicles/.idea/.idea.Vehicles/.idea/.gitignore @@ -0,0 +1,15 @@ +# Default ignored files +/shelf/ +/workspace.xml +# Rider ignored files +/projectSettingsUpdater.xml +/contentModel.xml +/.idea.Vehicles.iml +/modules.xml +# Ignored default folder with query files +/queries/ +# Datasource local storage ignored files +/dataSources/ +/dataSources.local.xml +# Editor-based HTTP Client requests +/httpRequests/ diff --git a/Source/Vehicles/.idea/.idea.Vehicles/.idea/encodings.xml b/Source/Vehicles/.idea/.idea.Vehicles/.idea/encodings.xml new file mode 100644 index 00000000..df87cf95 --- /dev/null +++ b/Source/Vehicles/.idea/.idea.Vehicles/.idea/encodings.xml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/Source/Vehicles/.idea/.idea.Vehicles/.idea/indexLayout.xml b/Source/Vehicles/.idea/.idea.Vehicles/.idea/indexLayout.xml new file mode 100644 index 00000000..7b08163c --- /dev/null +++ b/Source/Vehicles/.idea/.idea.Vehicles/.idea/indexLayout.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/Source/Vehicles/Components/Vehicles/VehiclePawn/VehiclePawn_Rendering.cs b/Source/Vehicles/Components/Vehicles/VehiclePawn/VehiclePawn_Rendering.cs index 335b806e..c40610c6 100644 --- a/Source/Vehicles/Components/Vehicles/VehiclePawn/VehiclePawn_Rendering.cs +++ b/Source/Vehicles/Components/Vehicles/VehiclePawn/VehiclePawn_Rendering.cs @@ -4,6 +4,7 @@ using System.Collections.Generic; using System.Linq; using JetBrains.Annotations; +using Multiplayer.API; using RimWorld; using RimWorld.Planet; using SmashTools; @@ -1075,16 +1076,29 @@ public bool IdeoAllowsBoarding(Pawn selPawn) public void ChangeColor() { - Dialog_VehiclePainter.OpenColorPicker(this, delegate(Color colorOne, Color colorTwo, + var godMode = DebugSettings.godMode; + Dialog_VehiclePainter.OpenColorPicker(this, delegate (Color colorOne, Color colorTwo, Color colorThree, PatternDef patternDef, Vector2 displacement, float tiles) { - patternToPaint = - new PatternData(colorOne, colorTwo, colorThree, patternDef, displacement, tiles); - if (DebugSettings.godMode) + + //patternToPaint = + // new PatternData(colorOne, colorTwo, colorThree, patternDef, displacement, tiles); + //if (DebugSettings.godMode) + //{ + // SetColor(); + //} + [SyncMethod] void SyncColor(VehiclePawn self, bool godMode, Color colorOne, Color colorTwo, + Color colorThree, + PatternDef patternDef, Vector2 displacement, float tiles) { - SetColor(); + self.patternToPaint = + new PatternData(colorOne, colorTwo, colorThree, patternDef, displacement, tiles); + if (godMode) + { + self.SetColor(); } } + SyncColor(this, godMode, colorOne, colorTwo, colorThree, patternDef, displacement, tiles); }); } diff --git a/Source/Vehicles/Multiplayer.cs b/Source/Vehicles/Multiplayer.cs new file mode 100644 index 00000000..4d6ee757 --- /dev/null +++ b/Source/Vehicles/Multiplayer.cs @@ -0,0 +1,25 @@ +using Multiplayer.API; +using Verse; +using System; + +namespace VehicleFramework.MultiplayerCompatibility; + + +[StaticConstructorOnStartup] +public static class Multiplayer +{ + static Multiplayer() + { + try + { + + if (!MP.enabled) return; + MP.RegisterAll(); + + } + catch (Exception ex) + { + Log.Warning($"Failed to initialize Multiplayer support for Vehicle Framework in Multiplayer.cs: {ex.Message}"); + } + } +} \ No newline at end of file diff --git a/Source/Vehicles/Vehicles.csproj b/Source/Vehicles/Vehicles.csproj index dbdb136b..b99bf792 100644 --- a/Source/Vehicles/Vehicles.csproj +++ b/Source/Vehicles/Vehicles.csproj @@ -89,6 +89,8 @@ + + False From 5d39fcd009f5e8c7815c45e388d9b06c875dfd10 Mon Sep 17 00:00:00 2001 From: BigB3D <72525665+BigB3D@users.noreply.github.com> Date: Thu, 12 Mar 2026 00:01:07 -0400 Subject: [PATCH 2/2] Cleanup Cleaning up after myself, getting rid of some of the junk i left over sorry :P --- Source/Vehicles/.Multiplayer.cs.kate-swp | Bin 1433 -> 0 bytes .../.idea/.idea.Vehicles/.idea/.gitignore | 15 ---- .../.idea/.idea.Vehicles/.idea/encodings.xml | 4 - .../.idea.Vehicles/.idea/indexLayout.xml | 8 -- .../.idea/.idea.Vehicles/.idea/workspace.xml | 74 ++++++++++++++++++ .../VehiclePawn/VehiclePawn_Rendering.cs | 8 +- 6 files changed, 75 insertions(+), 34 deletions(-) delete mode 100644 Source/Vehicles/.Multiplayer.cs.kate-swp delete mode 100644 Source/Vehicles/.idea/.idea.Vehicles/.idea/.gitignore delete mode 100644 Source/Vehicles/.idea/.idea.Vehicles/.idea/encodings.xml delete mode 100644 Source/Vehicles/.idea/.idea.Vehicles/.idea/indexLayout.xml create mode 100644 Source/Vehicles/.idea/.idea.Vehicles/.idea/workspace.xml diff --git a/Source/Vehicles/.Multiplayer.cs.kate-swp b/Source/Vehicles/.Multiplayer.cs.kate-swp deleted file mode 100644 index 25fa94631b8e93c989a6f135c1466e4141bb10f7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1433 zcmZ`(&uSAv7~iPTs)^AWV~{|nrIh5di1ehV5)vpiSh~=H;$gC#rh}W^Wp# zi)Zl_JopH{ffw;C;&b@@W_Q9a#V-sy^ZowJw=>_yah&x7t_AaEJZ3`~2=>f<>NrmG z@0Z`7zy0{xKlsr5I(z-=`=5{ACvTq+8?7{v;e?ISK+8Db3!&V-!~GX0Io<-dk}ql* z_gJVz7zThE7}s(}J!5!_M2o4R0I9?6Iw;`Yz=UEqtb z8V$rooQ?zOv&86_AMhk8o(e?ZZa{RK2BLC-G*%U)@6bTB8AWbXc$01qY>?Vu-=%@5 zf^CeDsRF7YPtgEmL#qY!z#1UcX&~yBfT!^RV$S>?aBv%#Q0x@BjL9?B-5eddBIM&h zoc5R!I#r=LWk`0Qy$>P9W?9P^36I1?(p9UyAn5jt4D3zR`2ZT|*D;|e)wu)(NF9`i zG!Ug7e6Ia-)*Z}!5o;NROw7#zg3O?5LPAk8HU|L27(X%u$GI#y)8b_`aZk7ksrS3v zTSHEt%qi0mlcCg-2lBlrUOr3GIF6KNXOXha%2wS;%YZICRyjqM`y nHg>TRWLwytS*78FWbT8LvrSVf13UnQa_v2qypYVj=yv`Ax`yL% diff --git a/Source/Vehicles/.idea/.idea.Vehicles/.idea/.gitignore b/Source/Vehicles/.idea/.idea.Vehicles/.idea/.gitignore deleted file mode 100644 index 3d2569a6..00000000 --- a/Source/Vehicles/.idea/.idea.Vehicles/.idea/.gitignore +++ /dev/null @@ -1,15 +0,0 @@ -# Default ignored files -/shelf/ -/workspace.xml -# Rider ignored files -/projectSettingsUpdater.xml -/contentModel.xml -/.idea.Vehicles.iml -/modules.xml -# Ignored default folder with query files -/queries/ -# Datasource local storage ignored files -/dataSources/ -/dataSources.local.xml -# Editor-based HTTP Client requests -/httpRequests/ diff --git a/Source/Vehicles/.idea/.idea.Vehicles/.idea/encodings.xml b/Source/Vehicles/.idea/.idea.Vehicles/.idea/encodings.xml deleted file mode 100644 index df87cf95..00000000 --- a/Source/Vehicles/.idea/.idea.Vehicles/.idea/encodings.xml +++ /dev/null @@ -1,4 +0,0 @@ - - - - \ No newline at end of file diff --git a/Source/Vehicles/.idea/.idea.Vehicles/.idea/indexLayout.xml b/Source/Vehicles/.idea/.idea.Vehicles/.idea/indexLayout.xml deleted file mode 100644 index 7b08163c..00000000 --- a/Source/Vehicles/.idea/.idea.Vehicles/.idea/indexLayout.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/Source/Vehicles/.idea/.idea.Vehicles/.idea/workspace.xml b/Source/Vehicles/.idea/.idea.Vehicles/.idea/workspace.xml new file mode 100644 index 00000000..5b240b2d --- /dev/null +++ b/Source/Vehicles/.idea/.idea.Vehicles/.idea/workspace.xml @@ -0,0 +1,74 @@ + + + + + + + + + + + + + + + + 1773284924984 + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Source/Vehicles/Components/Vehicles/VehiclePawn/VehiclePawn_Rendering.cs b/Source/Vehicles/Components/Vehicles/VehiclePawn/VehiclePawn_Rendering.cs index c40610c6..7c966d0c 100644 --- a/Source/Vehicles/Components/Vehicles/VehiclePawn/VehiclePawn_Rendering.cs +++ b/Source/Vehicles/Components/Vehicles/VehiclePawn/VehiclePawn_Rendering.cs @@ -1081,13 +1081,7 @@ public void ChangeColor() Color colorThree, PatternDef patternDef, Vector2 displacement, float tiles) { - - //patternToPaint = - // new PatternData(colorOne, colorTwo, colorThree, patternDef, displacement, tiles); - //if (DebugSettings.godMode) - //{ - // SetColor(); - //} + [SyncMethod] void SyncColor(VehiclePawn self, bool godMode, Color colorOne, Color colorTwo, Color colorThree, PatternDef patternDef, Vector2 displacement, float tiles)