1
0

updated to newest game version

This commit is contained in:
2026-04-04 00:06:22 +02:00
parent bd735859dc
commit 8830516607
4 changed files with 165 additions and 129 deletions

176
Plugin.cs
View File

@@ -1,79 +1,97 @@
using BepInEx;
using BepInEx.Configuration;
using BepInEx.Logging;
using BepInEx.Unity.IL2CPP;
using BepInEx.Unity.IL2CPP.UnityEngine;
using HarmonyLib;
using Il2CppInterop.Runtime.Injection;
using UnityEngine;
using KeyCode = BepInEx.Unity.IL2CPP.UnityEngine.KeyCode;
namespace UnrestrictedPlacement;
[BepInPlugin(MyPluginInfo.PLUGIN_GUID, MyPluginInfo.PLUGIN_NAME, MyPluginInfo.PLUGIN_VERSION)]
public class Plugin : BasePlugin
{
internal static new ManualLogSource Log;
public static ConfigEntry<bool> Enabled {get; set;}
private static bool Once = false;
public static ConfigEntry<KeyCode> SwitchKey {get; set;}
public override void Load()
{
Log = base.Log;
Log.LogInfo($"Plugin {MyPluginInfo.PLUGIN_GUID} is loaded!");
Harmony harmony = new(MyPluginInfo.PLUGIN_GUID);
harmony.PatchAll();
ClassInjector.RegisterTypeInIl2Cpp<Plugin.Behaviour>();
GameObject gameObject = new("UnrestrictedPlacementBehaviour");
Object.DontDestroyOnLoad(gameObject);
gameObject.AddComponent<Plugin.Behaviour>();
Enabled = Config.Bind("Settings", "Enabled", true);
SwitchKey = Config.Bind("Settings", "SwitchKey", KeyCode.F8, "The key with which to enable and disable the mod.");
}
public static class UnrestrictedPlacementPatch
{
[HarmonyPatch(typeof(FurniturePlacer), "PlacingRaycast")]
public static class FurniturePlacer_PlacingRaycast_Patch
{
[HarmonyPostfix]
public static void Postfix(FurniturePlacer __instance)
{
if (!Plugin.Enabled.Value) return;
__instance.m_CurrentPlacingMode.PlacedOnCorrectSurface = true;
}
}
[HarmonyPatch(typeof(IPlacingMode), "UpdateHologramColor")]
public static class IPlacingMode_UpdateHologramColor_Patch
{
[HarmonyPostfix]
public static void Postfix(IPlacingMode __instance)
{
if (!Plugin.Enabled.Value) return;
__instance.HologramColor = Color.green;
__instance.m_Triggers.Clear();
}
}
}
public class Behaviour : MonoBehaviour
{
internal void Update()
{
if(Input.GetKeyInt(Plugin.SwitchKey.Value) && !Once)
{
Enabled.Value = !Enabled.Value;
Log.LogError($"Plugin {MyPluginInfo.PLUGIN_GUID} is enabled: {Enabled}");
Once = true;
}
else if(!Input.GetKeyInt(Plugin.SwitchKey.Value) && Once)
{
Once = false;
}
}
}
}
using BepInEx;
using BepInEx.Configuration;
using BepInEx.Logging;
using BepInEx.Unity.IL2CPP;
using HarmonyLib;
using Il2CppInterop.Runtime.Injection;
using UnityEngine;
namespace UnrestrictedPlacement;
[BepInPlugin(PLUGIN_GUID, PLUGIN_NAME, PLUGIN_VERSION)]
public class Plugin : BasePlugin
{
public const string PLUGIN_GUID = "de.mpburgmann.UnrestrictedPlacement";
public const string PLUGIN_NAME = "Unrestricted Placement";
public const string PLUGIN_VERSION = "1.0.1";
internal static new ManualLogSource Log;
public static ConfigEntry<bool> Enabled;
public static ConfigEntry<KeyCode> SwitchKey;
public override void Load()
{
Log = base.Log;
Log.LogInfo($"Plugin {PLUGIN_GUID} is loaded!");
ClassInjector.RegisterTypeInIl2Cpp<Behaviour>();
GameObject gameObject = new("UnrestrictedPlacementBehaviour");
Object.DontDestroyOnLoad(gameObject);
gameObject.AddComponent<Behaviour>();
Enabled = Config.Bind("Settings", "Enabled", true);
SwitchKey = Config.Bind("Settings", "SwitchKey", KeyCode.F8, "The key with which to enable and disable the mod.");
Harmony harmony = new(PLUGIN_GUID);
harmony.PatchAll();
}
public static class UnrestrictedPlacementPatch
{
[HarmonyPatch(typeof(FurniturePlacer), "PlaceFurniture")]
public static class FurniturePlacer_PlaceFurniture_Patch
{
[HarmonyPrefix]
public static void Prefix(FurniturePlacer __instance)
{
if (!Enabled.Value) return;
__instance.m_CurrentPlacingMode.PlacedOnCorrectSurface = true;
}
}
[HarmonyPatch(typeof(FurniturePlacer), "PlacingRaycast")]
public static class FurniturePlacer_PlacingRaycast_Patch
{
[HarmonyPostfix]
public static void Postfix(FurniturePlacer __instance)
{
if (!Enabled.Value) return;
__instance.m_CurrentPlacingMode.PlacedOnCorrectSurface = true;
}
}
[HarmonyPatch(typeof(IPlacingMode), "OverlapBoxes")]
public static class IPlacingMode_OverlapsBoxes_Patch
{
[HarmonyPrefix]
public static bool Prefix(IPlacingMode __instance)
{
if (!Enabled.Value) return true;
__instance.m_Triggers.Clear();
return false;
}
}
[HarmonyPatch(typeof(IPlacingMode), "UpdateHologramColor")]
public static class IPlacingMode_UpdateHologramColor_Patch
{
[HarmonyPostfix]
public static void Postfix(IPlacingMode __instance)
{
if (!Enabled.Value) return;
__instance.HologramColor = Color.green;
}
}
}
public class Behaviour : MonoBehaviour
{
internal void Update()
{
if(Input.GetKeyDown(SwitchKey.Value))
{
Enabled.Value = !Enabled.Value;
Log.LogError($"Plugin {PLUGIN_GUID} is enabled: {Enabled.Value}");
}
}
}
}