Please disclose if your mod was created primarily using AI tools by adding the 'AI Generated' category. Failing to do so may result in the mod being removed from Thunderstore.
Decompiled source of Wubarrk Wonderland v1.9.7
WubarrkWonderland.dll
Decompiled 3 months agousing System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.Versioning; using System.Security; using System.Security.Permissions; using BepInEx; using BepInEx.Configuration; using HarmonyLib; using Microsoft.CodeAnalysis; using ServerSync; using UnityEngine; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)] [assembly: TargetFramework(".NETFramework,Version=v4.8", FrameworkDisplayName = ".NET Framework 4.8")] [assembly: AssemblyCompany("WubarrkWonderland")] [assembly: AssemblyConfiguration("Release")] [assembly: AssemblyFileVersion("1.9.5.0")] [assembly: AssemblyInformationalVersion("1.9.5")] [assembly: AssemblyProduct("WubarrkWonderland")] [assembly: AssemblyTitle("WubarrkWonderland")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("1.9.5.0")] [module: UnverifiableCode] [module: RefSafetyRules(11)] namespace Microsoft.CodeAnalysis { [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] internal sealed class EmbeddedAttribute : Attribute { } } namespace System.Runtime.CompilerServices { [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] [AttributeUsage(AttributeTargets.Module, AllowMultiple = false, Inherited = false)] internal sealed class RefSafetyRulesAttribute : Attribute { public readonly int Version; public RefSafetyRulesAttribute(int P_0) { Version = P_0; } } } namespace WubarrkWonderland { [BepInPlugin("com.wubarrk.wonderland", "Wubarrk.Wonderland", "1.9.5")] public class WubarrkWonderlandPlugin : BaseUnityPlugin { private readonly Harmony harmony = new Harmony("com.wubarrk.wonderland"); private static readonly ConfigSync configSync = new ConfigSync("com.wubarrk.wonderland") { DisplayName = "Wubarrk Wonderland", CurrentVersion = "1.9.5" }; public static ConfigEntry<int> ConfServerLock; public static ConfigEntry<float> ConfBoatSpeedMult; public static ConfigEntry<float> ConfCraftRadius; public static ConfigEntry<float> ConfPlantSpeed; public static ConfigEntry<float> ConfStamRegenMult; public static ConfigEntry<float> ConfVacuumRadius; public static ConfigEntry<float> ConfVacuumInterval; public static ConfigEntry<bool> ConfInstantLoot; public static ConfigEntry<bool> ConfInfiniteSwim; public static ConfigEntry<bool> ConfInfiniteFuel; public static ConfigEntry<bool> ConfCraftFromChests; private float vTimer; private void Awake() { SetupConfig(); harmony.PatchAll(); } private void SetupConfig() { ConfInstantLoot = BindSync<bool>("1. Combat", "Instant Harvest", val: true, "Loot drops instantly."); ConfInfiniteSwim = BindSync<bool>("2. Stats", "Infinite Swim", val: true, "No stamina drain in water."); ConfStamRegenMult = BindSync<float>("2. Stats", "Stamina Regen Multiplier", 2f, "Recovery speed."); ConfBoatSpeedMult = BindSync<float>("3. World", "Boat Speed Factor", 2f, "Ship force multiplier."); ConfCraftFromChests = BindSync<bool>("4. Logistics", "Direct Crafting", val: true, "Craft from nearby chests."); ConfCraftRadius = BindSync<float>("4. Logistics", "Crafting Radius", 25f, "Search radius."); ConfVacuumRadius = BindSync<float>("4. Logistics", "Vacuum Radius", 20f, "Item pull distance."); ConfVacuumInterval = BindSync<float>("4. Logistics", "Vacuum Pulse", 5f, "Seconds per scan."); ConfInfiniteFuel = BindSync<bool>("4. Logistics", "Infinite Energy", val: true, "No fuel needed."); ConfPlantSpeed = BindSync<float>("5. Farming", "Omni-Growth Multiplier", 2f, "Growth speed."); ConfigEntry<T> BindSync<T>(string sec, string name, T val, string desc) { ConfigEntry<T> val2 = ((BaseUnityPlugin)this).Config.Bind<T>(sec, name, val, desc); ((OwnConfigEntryBase)configSync.AddConfigEntry<T>(val2)).SynchronizedConfig = true; return val2; } } [HarmonyPatch(typeof(Character), "OnDeath")] [HarmonyPrefix] private static void InstantHarvest(Character __instance) { if (ConfInstantLoot.Value && !__instance.IsPlayer()) { CharacterDrop component = ((Component)__instance).GetComponent<CharacterDrop>(); if ((Object)(object)component != (Object)null) { Traverse.Create((object)component).Method("GenerateDrop", Array.Empty<object>()).GetValue(); Traverse.Create((object)component).Field("m_dropsEnabled").SetValue((object)false); } } } [HarmonyPatch(typeof(Player), "UseStamina")] [HarmonyPrefix] private static bool SwimMaster(Player __instance) { if (ConfInfiniteSwim.Value) { return !((Character)__instance).IsSwimming(); } return true; } [HarmonyPatch(typeof(Ship), "FixedUpdate")] [HarmonyPostfix] private static void ShipSpeed(Ship __instance) { if (__instance.IsPlayerInBoat(Player.m_localPlayer)) { Traverse.Create((object)__instance).Field("m_forceMultiplier").SetValue((object)ConfBoatSpeedMult.Value); } } [HarmonyPatch(typeof(Fireplace), "IsBurning")] [HarmonyPrefix] private static bool InfFire(ref bool __res) { if (ConfInfiniteFuel.Value) { __res = true; return false; } return true; } [HarmonyPatch(typeof(Plant), "UpdateHealth")] [HarmonyPrefix] private static void FastGrowth(ref float dt) { dt *= ConfPlantSpeed.Value; } private void Update() { if (!((Object)(object)Player.m_localPlayer == (Object)null)) { vTimer += Time.deltaTime; if (vTimer >= ConfVacuumInterval.Value) { vTimer = 0f; PerformVacuum(); } } } private void PerformVacuum() { List<ItemDrop> list = AccessTools.StaticFieldRefAccess<List<ItemDrop>>(typeof(ItemDrop), "m_instances"); List<Container> list2 = AccessTools.StaticFieldRefAccess<List<Container>>(typeof(Container), "m_allContainers"); if (list == null || list2 == null) { return; } List<ItemDrop> list3 = list.Where((ItemDrop i) => Vector3.Distance(((Component)i).transform.position, ((Component)Player.m_localPlayer).transform.position) <= ConfVacuumRadius.Value).ToList(); IEnumerable<Container> enumerable = list2.Where((Container c) => Vector3.Distance(((Component)c).transform.position, ((Component)Player.m_localPlayer).transform.position) <= ConfVacuumRadius.Value); foreach (ItemDrop item in list3) { foreach (Container item2 in enumerable) { if (item2.GetInventory().HaveItem(item.m_itemData.m_shared.m_name, true) && item2.GetInventory().AddItem(item.m_itemData)) { ZNetScene.instance.Destroy(((Component)item).gameObject); break; } } } } } }