EMenusSounds Addon for EternalMenus [1.8-1.21.8] icon

EMenusSounds Addon for EternalMenus [1.8-1.21.8] -----

Sound extension plugin for EternalMenus |



EMenusSounds - EternalMenus
You need to install EternalMenus when you download this plugin!
Required EternalMenus 1.5+

Features
  • Menu Open
  • Menu Click
Config:
Code (Text):
sounds:
  open: CHEST_OPEN
  click: CLICK
volume: 1.0
pitch: 1.0
 

You can see the source code!
Code (Text):
package eternalpolar.spigot.emenussounds;

import eternalpolar.spigot.eternalmenus.api.event.MenuClickEvent;
import eternalpolar.spigot.eternalmenus.api.event.MenuCloseEvent;
import eternalpolar.spigot.eternalmenus.api.event.MenuOpenEvent;
import org.bukkit.Bukkit;
import org.bukkit.Sound;
import org.bukkit.configuration.file.FileConfiguration;
import org.bukkit.configuration.file.YamlConfiguration;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.plugin.java.JavaPlugin;

import java.io.File;
import java.io.IOException;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class SoundExtension implements Listener {
    private final JavaPlugin plugin;
    private Sound openSound;
    private Sound closeSound;
    private Sound clickSound;
    private float volume;
    private float pitch;
    private File configFile;
    private FileConfiguration config;
    private int majorVersion;

    public SoundExtension(JavaPlugin plugin) {
        this.plugin = plugin;
        determineServerVersion();
        setupConfig();
        loadSoundsFromConfig();
        registerListener();
    }

    private void determineServerVersion() {
        String version = Bukkit.getBukkitVersion();
        Pattern pattern = Pattern.compile("1\\.(\\d+)");
        Matcher matcher = pattern.matcher(version);

        if (matcher.find()) {
            try {
                majorVersion = Integer.parseInt(matcher.group(1));
            } catch (NumberFormatException e) {
                majorVersion = 8;
            }
        } else {
            majorVersion = 8;
        }
    }

    private void setupConfig() {
        configFile = new File(plugin.getDataFolder(), "config.yml");

        if (!configFile.exists()) {
            plugin.getDataFolder().mkdirs();
            try {
                configFile.createNewFile();
            } catch (IOException ignored) {
            }
        }

        config = YamlConfiguration.loadConfiguration(configFile);
        setDefaultConfigValues();
    }

    private void setDefaultConfigValues() {
        String defaultOpenSound;
        String defaultClickSound;

        if (majorVersion >= 13) {
            defaultOpenSound = "BLOCK_CHEST_OPEN";
            defaultClickSound = "UI_BUTTON_CLICK";
        } else if (majorVersion >= 9) {
            defaultOpenSound = "CHEST_OPEN";
            defaultClickSound = "UI_BUTTON_CLICK";
        } else {
            defaultOpenSound = "CHEST_OPEN";
            defaultClickSound = "CLICK";
        }

        config.addDefault("sounds.open", defaultOpenSound);
        config.addDefault("sounds.click", defaultClickSound);
        config.addDefault("volume", 1.0);
        config.addDefault("pitch", 1.0);

        config.options().copyDefaults(true);
        try {
            config.save(configFile);
        } catch (IOException ignored) {
        }
    }

    private void loadSoundsFromConfig() {
        try {
            String openSoundName = config.getString("sounds.open");
            String clickSoundName = config.getString("sounds.click");

            if (majorVersion >= 13) {
                openSoundName = convertOldSoundName(openSoundName);
                clickSoundName = convertOldSoundName(clickSoundName);
            }

            openSound = getSoundByName(openSoundName);
            clickSound = getSoundByName(clickSoundName);

            if (openSound == null || closeSound == null || clickSound == null) {
                setupFallbackSounds();
                return;
            }

            volume = (float) config.getDouble("volume");
            pitch = (float) config.getDouble("pitch");

        } catch (Exception e) {
            setupFallbackSounds();
        }
    }

    private String convertOldSoundName(String oldName) {
        if (oldName == null) return null;

        switch (oldName) {
            case "CHEST_OPEN": return "BLOCK_CHEST_OPEN";
            case "CLICK": return "UI_BUTTON_CLICK";
            default: return oldName;
        }
    }

    private Sound getSoundByName(String soundName) {
        if (soundName == null) return null;

        try {
            return Sound.valueOf(soundName);
        } catch (IllegalArgumentException e) {
            return null;
        }
    }

    private void setupFallbackSounds() {
        if (majorVersion >= 13) {
            openSound = Sound.BLOCK_CHEST_OPEN;
            clickSound = Sound.UI_BUTTON_CLICK;
        } else if (majorVersion >= 9) {
            openSound = Sound.valueOf("CHEST_OPEN");
            clickSound = Sound.valueOf("UI_BUTTON_CLICK");
        } else {
            openSound = Sound.valueOf("CHEST_OPEN");
            clickSound = Sound.valueOf("CLICK");
        }

        volume = 1.0f;
        pitch = 1.0f;
    }

    private void registerListener() {
        plugin.getServer().getPluginManager().registerEvents(this, plugin);
    }

    @EventHandler
    public void onMenuOpen(MenuOpenEvent event) {
        if (!event.isCancelled()) {
            Player player = event.getPlayer();
            player.playSound(player.getLocation(), openSound, volume, pitch);
        }
    }

    @EventHandler
    public void onMenuClick(MenuClickEvent event) {
        if (!event.isCancelled()) {
            Player player = event.getPlayer();
            player.playSound(player.getLocation(), clickSound, volume, pitch);
        }
    }

    public static void load(JavaPlugin plugin) {
        try {
            new SoundExtension(plugin);
        } catch (Exception ignored) {
        }
    }
}
Resource Information
Author:
----------
Total Downloads: 9
First Release: Yesterday at 8:45 AM
Last Update: Today at 1:49 AM
Category: ---------------
All-Time Rating:
0 ratings
Version -----
Released: --------------------
Downloads: ------
Version Rating:
----------------------
-- ratings