Please disclose if any significant portion of your mod was created 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 JaydeeCube REPO v1.1.0
com.github.zehsteam.JaydeeCube.dll
Decompiled 6 months agousing System; using System.Collections.Generic; using System.Diagnostics; using System.IO; 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 BepInEx.Logging; using HarmonyLib; using Microsoft.CodeAnalysis; using Photon.Pun; using REPOLib; using REPOLib.Modules; using UnityEngine; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)] [assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")] [assembly: AssemblyCompany("Zehs")] [assembly: AssemblyConfiguration("Release")] [assembly: AssemblyCopyright("Copyright © 2025 Zehs")] [assembly: AssemblyDescription("Adds a JaydeeMoon cube valuable.")] [assembly: AssemblyFileVersion("1.1.0.0")] [assembly: AssemblyInformationalVersion("1.1.0+ea477bb6f9470844aef26ac3640daf2faba58ec2")] [assembly: AssemblyProduct("JaydeeCube")] [assembly: AssemblyTitle("com.github.zehsteam.JaydeeCube")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("1.1.0.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 com.github.zehsteam.JaydeeCube { internal static class Assets { public static GameObject JaydeeCubePrefab { get; private set; } public static void Initialize() { string directoryName = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location); string text = "jaydeecube_assets"; string text2 = Path.Combine(directoryName, text); if (!File.Exists(text2)) { Logger.LogFatal("Failed to load assets. AssetBundle file could not be found at path \"" + text2 + "\". Make sure the \"" + text + "\" file is in the same folder as the mod's DLL file."); } else { BundleLoader.LoadBundle(text2, (Action<AssetBundle>)HandleAssetBundleLoaded, false); } } private static void HandleAssetBundleLoaded(AssetBundle assetBundle) { JaydeeCubePrefab = LoadAsset<GameObject>("Valuable JaydeeCube", assetBundle); Valuables.RegisterValuable(JaydeeCubePrefab); } private static T LoadAsset<T>(string name, AssetBundle assetBundle) where T : Object { if (string.IsNullOrWhiteSpace(name)) { Logger.LogError("Failed to load asset of type \"" + typeof(T).Name + "\" from AssetBundle. Name is null or whitespace."); return default(T); } if ((Object)(object)assetBundle == (Object)null) { Logger.LogError("Failed to load asset of type \"" + typeof(T).Name + "\" with name \"" + name + "\" from AssetBundle. AssetBundle is null."); return default(T); } T val = assetBundle.LoadAsset<T>(name); if ((Object)(object)val == (Object)null) { Logger.LogError("Failed to load asset of type \"" + typeof(T).Name + "\" with name \"" + name + "\" from AssetBundle. No asset found with that type and name."); return default(T); } return val; } private static bool TryLoadAsset<T>(string name, AssetBundle assetBundle, out T asset) where T : Object { asset = LoadAsset<T>(name, assetBundle); return (Object)(object)asset != (Object)null; } } internal static class ConfigManager { public static ConfigFile ConfigFile { get; private set; } public static void Initialize(ConfigFile configFile) { ConfigFile = configFile; BindConfigs(); } private static void BindConfigs() { } } internal static class Logger { public static ManualLogSource ManualLogSource { get; private set; } public static void Initialize(ManualLogSource manualLogSource) { ManualLogSource = manualLogSource; } public static void LogDebug(object data) { Log((LogLevel)32, data); } public static void LogInfo(object data) { Log((LogLevel)16, data); } public static void LogWarning(object data) { Log((LogLevel)4, data); } public static void LogError(object data) { Log((LogLevel)2, data); } public static void LogFatal(object data) { Log((LogLevel)1, data); } public static void Log(LogLevel logLevel, object data) { //IL_000a: Unknown result type (might be due to invalid IL or missing references) ManualLogSource manualLogSource = ManualLogSource; if (manualLogSource != null) { manualLogSource.Log(logLevel, data); } } } [BepInPlugin("com.github.zehsteam.JaydeeCube", "JaydeeCube", "1.1.0")] [BepInDependency(/*Could not decode attribute arguments.*/)] internal class Plugin : BaseUnityPlugin { private readonly Harmony _harmony = new Harmony("com.github.zehsteam.JaydeeCube"); internal static Plugin Instance { get; private set; } private void Awake() { Instance = this; Logger.Initialize(Logger.CreateLogSource("com.github.zehsteam.JaydeeCube")); Logger.LogInfo("JaydeeCube has awoken!"); Assets.Initialize(); ConfigManager.Initialize(((BaseUnityPlugin)this).Config); } } internal static class Utils { public static int GetRandomIndexFromWeightList(IEnumerable<int> weights) { if (weights == null) { throw new ArgumentNullException("weights"); } int num = 0; int num2 = 0; foreach (int weight in weights) { if (weight < 0) { throw new ArgumentException("Weights must be non-negative."); } num += weight; } if (num == 0) { throw new ArgumentException("At least one weight must be greater than zero."); } int num3 = Random.Range(0, num); int num4 = 0; num2 = 0; foreach (int weight2 in weights) { num4 += weight2; if (num3 < num4) { return num2; } num2++; } return num2 - 1; } } public static class MyPluginInfo { public const string PLUGIN_GUID = "com.github.zehsteam.JaydeeCube"; public const string PLUGIN_NAME = "JaydeeCube"; public const string PLUGIN_VERSION = "1.1.0"; } } namespace com.github.zehsteam.JaydeeCube.MonoBehaviours { [Serializable] internal class JaydeeCubeVariant { public Material Material; [Range(0f, 500f)] public int Weight = 100; } internal class JaydeeCube : MonoBehaviour { [SerializeField] private MeshRenderer _meshRenderer; [SerializeField] private JaydeeCubeVariant[] _variants = Array.Empty<JaydeeCubeVariant>(); private PhotonView _photonView; private void Start() { _photonView = ((Component)this).GetComponent<PhotonView>(); if (SemiFunc.IsMasterClient()) { SetRandomVariant(); } } private void SetRandomVariant() { int randomIndexFromWeightList = Utils.GetRandomIndexFromWeightList(_variants.Select((JaydeeCubeVariant x) => x.Weight)); SetVariant(randomIndexFromWeightList); } private void SetVariant(int index) { if (SemiFunc.IsMultiplayer()) { _photonView.RPC("SetVariantRPC", (RpcTarget)0, new object[1] { index }); } else { SetVariantLocal(index); } } [PunRPC] private void SetVariantRPC(int index) { SetVariantLocal(index); } private void SetVariantLocal(int index) { if ((Object)(object)_meshRenderer == (Object)null || index < 0 || index > _variants.Length - 1) { return; } JaydeeCubeVariant jaydeeCubeVariant = _variants[index]; if (jaydeeCubeVariant != null) { Material material = jaydeeCubeVariant.Material; if (!((Object)(object)material == (Object)null)) { ((Renderer)_meshRenderer).sharedMaterial = material; } } } } } namespace System.Runtime.CompilerServices { [AttributeUsage(AttributeTargets.Assembly, AllowMultiple = true)] internal sealed class IgnoresAccessChecksToAttribute : Attribute { public IgnoresAccessChecksToAttribute(string assemblyName) { } } }