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 JBL Go Speaker v1.3.0
JBLGoSpeaker.dll
Decompiled 5 months agousing System.Collections.Generic; using System.Diagnostics; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; using System.Runtime.Versioning; using BepInEx; using UnityEngine; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)] [assembly: AssemblyTitle("JBLGoSpeaker")] [assembly: AssemblyDescription("")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("")] [assembly: AssemblyProduct("JBLGoSpeaker")] [assembly: AssemblyCopyright("Copyright © 2026")] [assembly: AssemblyTrademark("")] [assembly: ComVisible(false)] [assembly: Guid("1cca7a19-4d71-4af1-a1e1-54cf7ca9f683")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: TargetFramework(".NETFramework,Version=v4.7.2", FrameworkDisplayName = ".NET Framework 4.7.2")] [assembly: AssemblyVersion("1.0.0.0")] namespace JBLMod; [BepInPlugin("com.michelle.jblmod", "JBL Speaker Mod", "1.2.0")] public class Plugin : BaseUnityPlugin { private void Awake() { ((BaseUnityPlugin)this).Logger.LogInfo((object)"¡El Mod JBL Multi-Canción de Michelle está listo!"); } } public class JBLSpeaker : MonoBehaviour { [Header("Configuración Básica")] public AudioSource speakerAudio; public float interactionDistance = 2f; public KeyCode interactKey = (KeyCode)103; [Header("Lista de Canciones")] public List<AudioClip> musicTracks = new List<AudioClip>(); [Header("Vibración")] public float pulseIntensity = 3f; public float smoothSpeed = 13f; private int currentTrackIndex = -1; private string screenMessage = ""; private float messageTimer = 0f; private Vector3 originalScale; private float[] audioSpectrum = new float[64]; private void Start() { //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_000d: Unknown result type (might be due to invalid IL or missing references) originalScale = ((Component)this).transform.localScale; if ((Object)(object)speakerAudio == (Object)null) { speakerAudio = ((Component)this).GetComponent<AudioSource>(); if ((Object)(object)speakerAudio == (Object)null) { speakerAudio = ((Component)this).GetComponentInChildren<AudioSource>(); } } } private void Update() { //IL_0025: 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_010f: Unknown result type (might be due to invalid IL or missing references) //IL_011f: Unknown result type (might be due to invalid IL or missing references) //IL_00ac: Unknown result type (might be due to invalid IL or missing references) //IL_00b1: Unknown result type (might be due to invalid IL or missing references) //IL_00b8: Unknown result type (might be due to invalid IL or missing references) //IL_00c3: Unknown result type (might be due to invalid IL or missing references) //IL_00c8: Unknown result type (might be due to invalid IL or missing references) //IL_00cd: Unknown result type (might be due to invalid IL or missing references) //IL_00db: Unknown result type (might be due to invalid IL or missing references) //IL_00e0: Unknown result type (might be due to invalid IL or missing references) //IL_00ee: Unknown result type (might be due to invalid IL or missing references) if (messageTimer > 0f) { messageTimer -= Time.deltaTime; } if (Input.GetKeyDown(interactKey) && IsPlayerClose()) { CycleMusic(); } if (currentTrackIndex != -1 && (Object)(object)speakerAudio != (Object)null && speakerAudio.isPlaying) { speakerAudio.GetSpectrumData(audioSpectrum, 0, (FFTWindow)0); float num = (audioSpectrum[0] + audioSpectrum[1] + audioSpectrum[2]) / 3f; Vector3 val = originalScale + Vector3.one * num * pulseIntensity; ((Component)this).transform.localScale = Vector3.Lerp(((Component)this).transform.localScale, val, Time.deltaTime * smoothSpeed); } else { ((Component)this).transform.localScale = Vector3.Lerp(((Component)this).transform.localScale, originalScale, Time.deltaTime * 5f); } } private void CycleMusic() { if (!((Object)(object)speakerAudio == (Object)null) && musicTracks.Count != 0) { currentTrackIndex++; if (currentTrackIndex >= musicTracks.Count) { currentTrackIndex = -1; speakerAudio.Stop(); ShowMessage("¡ APAGADO !", 2f); } else { speakerAudio.clip = musicTracks[currentTrackIndex]; speakerAudio.Play(); ShowMessage("♪ " + ((Object)musicTracks[currentTrackIndex]).name + " ♪", 3f); } } } private void ShowMessage(string text, float time) { screenMessage = text; messageTimer = time; } private bool IsPlayerClose() { //IL_0017: Unknown result type (might be due to invalid IL or missing references) //IL_0026: Unknown result type (might be due to invalid IL or missing references) if ((Object)(object)Camera.main != (Object)null) { return Vector3.Distance(((Component)this).transform.position, ((Component)Camera.main).transform.position) <= interactionDistance; } return false; } private void OnGUI() { //IL_0016: Unknown result type (might be due to invalid IL or missing references) //IL_001c: Expected O, but got Unknown //IL_002b: Unknown result type (might be due to invalid IL or missing references) //IL_0062: Unknown result type (might be due to invalid IL or missing references) //IL_0069: Expected O, but got Unknown //IL_0070: Unknown result type (might be due to invalid IL or missing references) //IL_0093: Unknown result type (might be due to invalid IL or missing references) //IL_00b2: Unknown result type (might be due to invalid IL or missing references) if (messageTimer > 0f) { GUIStyle val = new GUIStyle(); val.fontSize = 40; val.normal.textColor = Color.white; val.fontStyle = (FontStyle)1; val.alignment = (TextAnchor)4; float num = Screen.width / 2 - 200; float num2 = Screen.height / 2 - 100; GUIStyle val2 = new GUIStyle(val); val2.normal.textColor = Color.black; GUI.Label(new Rect(num + 2f, num2 + 2f, 400f, 200f), screenMessage, val2); GUI.Label(new Rect(num, num2, 400f, 200f), screenMessage, val); } } }