talán????

This commit is contained in:
2025-12-14 00:34:42 +01:00
parent 3ee6fc4dc6
commit 77f4d4fed0
2 changed files with 58 additions and 0 deletions

39
Main.cs
View File

@@ -199,6 +199,43 @@ namespace KCM
return -1;
}
private static string TryGetGameModeName()
{
try
{
if (GameState.inst == null)
return "null";
var t = GameState.inst.GetType();
var modeProp = t.GetProperty("mode", BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic)
?? t.GetProperty("Mode", BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic)
?? t.GetProperty("CurrentMode", BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic);
if (modeProp != null)
{
object m = modeProp.GetValue(GameState.inst, null);
return m != null ? m.GetType().Name : "null";
}
var modeField = t.GetField("mode", BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic)
?? t.GetField("Mode", BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic)
?? t.GetField("currentMode", BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic)
?? t.GetField("currMode", BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic);
if (modeField != null)
{
object fm = modeField.GetValue(GameState.inst);
return fm != null ? fm.GetType().Name : "null";
}
}
catch
{
}
return "unknown";
}
public static void RunPostLoadRebuild(string reason)
{
try
@@ -439,6 +476,8 @@ namespace KCM
Main.helper.Log(
"VillagerStallDetect: no movement for " + (now - lastVillagerMoveMs) +
"ms timeScale=" + Time.timeScale +
" mode=" + TryGetGameModeName() +
" villagerSystemEnabled=" + (VillagerSystem.inst != null && VillagerSystem.inst.enabled) +
" villagers=" + Villager.villagers.Count +
" sampleGuid=" + probedVillagerGuid +
" samplePos=" + v.Pos);

View File

@@ -39,6 +39,25 @@ namespace KCM.Packets.Lobby
Main.helper.Log(ex.ToString());
}
try
{
GameState.inst.SetNewMode(GameState.inst.playingMode);
Main.helper.Log("StartGame: forced playing mode");
}
catch (Exception ex)
{
Main.helper.Log("StartGame: failed forcing playing mode");
Main.helper.Log(ex.ToString());
}
try
{
Main.RunPostLoadRebuild("StartGame");
}
catch
{
}
SpeedControlUI.inst.SetSpeed(0);
}
else