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 Bell v0.6.3
plugins\Bell.dll
Decompiled a year agousing System; using System.Diagnostics; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; using System.Runtime.Versioning; using System.Security.Permissions; using BellNS; using BepInEx; using BepInEx.Configuration; using HarmonyLib; using Jotunn; using Jotunn.Configs; using Jotunn.Entities; using Jotunn.Managers; using Jotunn.Utils; using UnityEngine; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)] [assembly: AssemblyTitle("JotunnModExample")] [assembly: AssemblyDescription("")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("")] [assembly: AssemblyProduct("JotunnModExample")] [assembly: AssemblyCopyright("Copyright © 2021")] [assembly: AssemblyTrademark("")] [assembly: ComVisible(false)] [assembly: Guid("e3243d22-4307-4008-ba36-9f326008cde5")] [assembly: AssemblyFileVersion("0.0.1.0")] [assembly: TargetFramework(".NETFramework,Version=v4.6.2", FrameworkDisplayName = ".NET Framework 4.6.2")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("0.0.1.0")] public class Bell : MonoBehaviour, Hoverable, Interactable { private ZNetView m_nview; private float lastrung; [SerializeField] private float m_animation_speed = 1f; [SerializeField] private float m_audio_pitch = 1f; [SerializeField] private bool m_is_church_bell; private void Awake() { m_nview = ((Component)this).GetComponent<ZNetView>(); if (!((Object)(object)m_nview == (Object)null) && m_nview.GetZDO() != null) { m_nview.Register("RingBell", (Action<long>)delegate { RingBell(); }); } } public void RingBell() { if (m_nview.IsValid()) { Animator component = ((Component)this).GetComponent<Animator>(); component.SetTrigger("ring"); component.speed = m_animation_speed; AudioSource componentInChildren = ((Component)this).GetComponentInChildren<AudioSource>(); componentInChildren.pitch = m_audio_pitch; componentInChildren.minDistance = BellMain.BellMinRadiusConfig.Value; componentInChildren.maxDistance = BellMain.BellMaxRadiusConfig.Value; componentInChildren.Play(); } } public string GetHoverName() { return "$piece_bell"; } public string GetHoverText() { return Localization.instance.Localize("$piece_bell\n[<color=yellow><b>$KEY_Use</b></color>] $bell_ring"); } public bool Interact(Humanoid user, bool hold, bool alt) { Interact(); return true; } public bool Interact() { if (!m_nview.IsValid()) { return false; } if (Time.realtimeSinceStartup - lastrung > 6f) { lastrung = Time.realtimeSinceStartup; m_nview.InvokeRPC(ZNetView.Everybody, "RingBell", Array.Empty<object>()); if (m_is_church_bell && BellMain.StopGroundShakingConfig.Value) { StopEvent(); } return true; } return false; } private void StopEvent() { //IL_001b: Unknown result type (might be due to invalid IL or missing references) RandomEvent activeEvent = RandEventSystem.instance.GetActiveEvent(); if (activeEvent != null && RandEventSystem.instance.IsInsideRandomEventArea(activeEvent, ((Component)this).transform.position) && activeEvent.m_name == "foresttrolls") { RandEventSystem.instance.ResetRandomEvent(); } } public bool UseItem(Humanoid user, ItemData item) { return true; } } namespace BellNS; [BepInPlugin("org.bepinex.plugins.bid.bell", "Bell", "0.6.3")] [BepInDependency(/*Could not decode attribute arguments.*/)] [NetworkCompatibility(/*Could not decode attribute arguments.*/)] internal class BellMain : BaseUnityPlugin { public const string PluginGUID = "org.bepinex.plugins.bid.bell"; public const string PluginName = "Bell"; public const string PluginVersion = "0.6.3"; public static ConfigEntry<int> BellMinRadiusConfig; public static ConfigEntry<int> BellMaxRadiusConfig; public static ConfigEntry<bool> StopGroundShakingConfig; private readonly Harmony harmony = new Harmony("org.bepinex.plugins.bid.bell"); private void Awake() { //IL_0054: Unknown result type (might be due to invalid IL or missing references) AssetBundle val = AssetUtils.LoadAssetBundleFromResources("bell"); if ((Object)(object)val == (Object)null) { MonoBehaviour.print((object)"Error loading assetbundle bell"); return; } CreateConfigValues(); try { AddPieces(val); } catch (Exception arg) { ((BaseUnityPlugin)this).Logger.LogWarning((object)$"Exception caught while adding custom creatures: {arg}"); } finally { val.Unload(false); } new Harmony("org.bepinex.plugins.bid.bell").PatchAll(); } private void OnDestroy() { harmony.UnpatchSelf(); } private void CreateConfigValues() { //IL_0029: Unknown result type (might be due to invalid IL or missing references) //IL_0033: Expected O, but got Unknown //IL_0055: Unknown result type (might be due to invalid IL or missing references) //IL_005f: Expected O, but got Unknown //IL_0083: Unknown result type (might be due to invalid IL or missing references) //IL_0088: Unknown result type (might be due to invalid IL or missing references) //IL_0090: Expected O, but got Unknown //IL_0090: Unknown result type (might be due to invalid IL or missing references) //IL_009a: Expected O, but got Unknown ((BaseUnityPlugin)this).Config.SaveOnConfigSet = true; BellMinRadiusConfig = ((BaseUnityPlugin)this).Config.Bind<int>("Client config", "BellSoundMinRadius", 20, new ConfigDescription("Radius the bell sound is heard at max level", (AcceptableValueBase)null, Array.Empty<object>())); BellMaxRadiusConfig = ((BaseUnityPlugin)this).Config.Bind<int>("Client config", "BellSoundMaxRadius", 100, new ConfigDescription("Radius the bell sound flattens out to 0", (AcceptableValueBase)null, Array.Empty<object>())); StopGroundShakingConfig = ((BaseUnityPlugin)this).Config.Bind<bool>("Server config", "ChurchBellStopForestTrolls", false, new ConfigDescription("shall ringing the chruch bell stop the ground from shaking? (event forest trolls)", (AcceptableValueBase)null, new object[1] { (object)new ConfigurationManagerAttributes { IsAdminOnly = true } })); SynchronizationManager.OnConfigurationSynchronized += delegate(object obj, ConfigurationSynchronizationEventArgs attr) { if (attr.InitialSynchronization) { Logger.LogMessage((object)"Initial Config sync event received"); } else { Logger.LogMessage((object)"Config sync event received"); } }; } private void AddPieces(AssetBundle bellAssetBundle) { //IL_0013: Unknown result type (might be due to invalid IL or missing references) //IL_0019: Expected O, but got Unknown //IL_002d: Unknown result type (might be due to invalid IL or missing references) //IL_0032: Unknown result type (might be due to invalid IL or missing references) //IL_003d: Unknown result type (might be due to invalid IL or missing references) //IL_0044: Unknown result type (might be due to invalid IL or missing references) //IL_004c: Expected O, but got Unknown //IL_004e: Unknown result type (might be due to invalid IL or missing references) //IL_0053: Unknown result type (might be due to invalid IL or missing references) //IL_005e: Unknown result type (might be due to invalid IL or missing references) //IL_0065: Unknown result type (might be due to invalid IL or missing references) //IL_006d: Expected O, but got Unknown //IL_007e: Unknown result type (might be due to invalid IL or missing references) //IL_0088: Expected O, but got Unknown //IL_00be: Unknown result type (might be due to invalid IL or missing references) //IL_00c4: Expected O, but got Unknown //IL_00d8: Unknown result type (might be due to invalid IL or missing references) //IL_00dd: Unknown result type (might be due to invalid IL or missing references) //IL_00e8: Unknown result type (might be due to invalid IL or missing references) //IL_00ef: Unknown result type (might be due to invalid IL or missing references) //IL_00f7: Expected O, but got Unknown //IL_00f9: Unknown result type (might be due to invalid IL or missing references) //IL_00fe: Unknown result type (might be due to invalid IL or missing references) //IL_0109: Unknown result type (might be due to invalid IL or missing references) //IL_0110: Unknown result type (might be due to invalid IL or missing references) //IL_0119: Expected O, but got Unknown //IL_012a: Unknown result type (might be due to invalid IL or missing references) //IL_0134: Expected O, but got Unknown GameObject val = bellAssetBundle.LoadAsset<GameObject>("bell"); PieceManager instance = PieceManager.Instance; PieceConfig val2 = new PieceConfig(); val2.PieceTable = "Hammer"; val2.Requirements = (RequirementConfig[])(object)new RequirementConfig[2] { new RequirementConfig { Item = "Wood", Recover = true, Amount = 2 }, new RequirementConfig { Item = "Bronze", Recover = true, Amount = 5 } }; val2.CraftingStation = "forge"; instance.AddPiece(new CustomPiece(val, true, val2)); GameObject val3 = bellAssetBundle.LoadAsset<GameObject>("bell_church"); if (!StopGroundShakingConfig.Value) { val3.GetComponent<Piece>().m_description = val.GetComponent<Piece>().m_description; } PieceManager instance2 = PieceManager.Instance; val2 = new PieceConfig(); val2.PieceTable = "Hammer"; val2.Requirements = (RequirementConfig[])(object)new RequirementConfig[2] { new RequirementConfig { Item = "Wood", Recover = true, Amount = 4 }, new RequirementConfig { Item = "Bronze", Recover = true, Amount = 10 } }; val2.CraftingStation = "forge"; instance2.AddPiece(new CustomPiece(val3, true, val2)); } }