Часть функционала MusicPlayer | exp 3.1

Начинающий
Статус
Оффлайн
Регистрация
15 Фев 2024
Сообщения
33
Реакции[?]
0
Поинты[?]
0
Выберите загрузчик игры
Прочие моды

Перед прочтением основного контента ниже, пожалуйста, обратите внимание на обновление внутри секции Майна на нашем форуме. У нас появились:

  • бесплатные читы для Майнкрафт — любое использование на свой страх и риск;
  • маркетплейс Майнкрафт — абсолютно любая коммерция, связанная с игрой, за исключением продажи читов (аккаунты, предоставления услуг, поиск кодеров читов и так далее);
  • приватные читы для Minecraft — в этом разделе только платные хаки для игры, покупайте группу "Продавец" и выставляйте на продажу свой софт;
  • обсуждения и гайды — всё тот же раздел с вопросами, но теперь модернизированный: поиск нужных хаков, пати с игроками-читерами и другая полезная информация.

Спасибо!

Привет! мой второй код для югейма, музыка работает в 1 модуль а не в 2 в 3 как у других.
Пожалуйста, авторизуйтесь для просмотра ссылки.

Код:
package im.expensive.functions.impl.misc;

import im.expensive.functions.api.Category;
import im.expensive.functions.api.Function;
import im.expensive.functions.api.FunctionRegister;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.screen.Screen;
import net.minecraft.client.gui.widget.button.Button;
import net.minecraft.util.text.StringTextComponent;

import javax.sound.sampled.*;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

@FunctionRegister(name = "MusicPlayer", type = Category.Misc)
public class MusicPlayer extends Function {
    private final Minecraft mc = Minecraft.getInstance();
    private Clip clip;
    private List<File> musicFiles = new ArrayList<>();
    private int currentTrackIndex = -1;
    private float volume = 1.0f;

    public MusicPlayer() {
        super();
    }

    @Override
    public void onEnable() {
        super.onEnable();
        mc.displayGuiScreen(new MusicMenu());
    }

    @Override
    public void onDisable() {
        super.onDisable();
        stopMusic();
    }

    public void playMusic(File musicFile) {
        stopMusic();
        try {
            AudioInputStream audioInputStream = AudioSystem.getAudioInputStream(musicFile);
            clip = AudioSystem.getClip();
            clip.open(audioInputStream);
            setVolume(volume);
            clip.start();
        } catch (UnsupportedAudioFileException | IOException | LineUnavailableException e) {
            e.printStackTrace();
        }
    }

    public void stopMusic() {
        if (clip != null && clip.isRunning()) {
            clip.stop();
            clip.close();
        }
    }

    private void nextTrack() {
        if (!musicFiles.isEmpty()) {
            currentTrackIndex = (currentTrackIndex + 1) % musicFiles.size();
            playMusic(musicFiles.get(currentTrackIndex));
        }
    }

    private void previousTrack() {
        if (!musicFiles.isEmpty()) {
            currentTrackIndex = (currentTrackIndex - 1 + musicFiles.size()) % musicFiles.size();
            playMusic(musicFiles.get(currentTrackIndex));
        }
    }

    private void setVolume(float volume) {
        if (clip != null) {
            FloatControl volumeControl = (FloatControl) clip.getControl(FloatControl.Type.MASTER_GAIN);
            volumeControl.setValue(20f * (float) Math.log10(volume)); // Установить громкость
        }
    }

    private class MusicMenu extends Screen {
        protected MusicMenu() {
            super(new StringTextComponent("Music Player"));
        }

        @Override
        protected void init() {
            addButton(new Button(width / 2 - 100, height / 2 - 40, 200, 20,
                    new StringTextComponent("Слушать музыку"),
                    button -> {
                        File musicFile = new File("ваш путь к музыке.wav");
                        if (musicFile.exists()) {
                            musicFiles.add(musicFile);
                            if (currentTrackIndex == -1) {
                                currentTrackIndex = 0;
                                playMusic(musicFile);
                            } else {
                                nextTrack();
                            }
                        }
                    }
            ));

            addButton(new Button(width / 2 - 100, height / 2 - 10, 200, 20,
                    new StringTextComponent("Остановить музыку"),
                    button -> {
                        stopMusic();
                    }
            ));

            addButton(new Button(width / 2 - 100, height / 2 + 20, 90, 20,
                    new StringTextComponent("<< Назад"),
                    button -> {
                        previousTrack();
                    }
            ));

            addButton(new Button(width / 2 + 10, height / 2 + 20, 90, 20,
                    new StringTextComponent("Дальше >>"),
                    button -> {
                        nextTrack();
                    }
            ));


            addButton(new Button(width / 2 - 100, height / 2 + 60, 90, 20,
                    new StringTextComponent("-"),
                    button -> {
                        if (volume > 0.0f) {
                            volume = Math.max(0.0f, volume - 0.1f);
                            setVolume(volume);
                        }
                    }
            ));


            addButton(new Button(width / 2 + 10, height / 2 + 60, 90, 20,
                    new StringTextComponent("+"),
                    button -> {
                        if (volume < 1.0f) {
                            volume = Math.min(1.0f, volume + 0.1f);
                            setVolume(volume);
                        }
                    }
            ));
        }
    }
}
Все звуки добавляйте с расширением .wav
Можете добавить еще пару звуков чтобы переключать, я делал только с 1
УДАЧИ
 
Начинающий
Статус
Онлайн
Регистрация
20 Май 2023
Сообщения
151
Реакции[?]
3
Поинты[?]
0
Привет! мой второй код для югейма, музыка работает в 1 модуль а не в 2 в 3 как у других.
Пожалуйста, авторизуйтесь для просмотра ссылки.

Код:
package im.expensive.functions.impl.misc;

import im.expensive.functions.api.Category;
import im.expensive.functions.api.Function;
import im.expensive.functions.api.FunctionRegister;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.screen.Screen;
import net.minecraft.client.gui.widget.button.Button;
import net.minecraft.util.text.StringTextComponent;

import javax.sound.sampled.*;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

@FunctionRegister(name = "MusicPlayer", type = Category.Misc)
public class MusicPlayer extends Function {
    private final Minecraft mc = Minecraft.getInstance();
    private Clip clip;
    private List<File> musicFiles = new ArrayList<>();
    private int currentTrackIndex = -1;
    private float volume = 1.0f;

    public MusicPlayer() {
        super();
    }

    @Override
    public void onEnable() {
        super.onEnable();
        mc.displayGuiScreen(new MusicMenu());
    }

    @Override
    public void onDisable() {
        super.onDisable();
        stopMusic();
    }

    public void playMusic(File musicFile) {
        stopMusic();
        try {
            AudioInputStream audioInputStream = AudioSystem.getAudioInputStream(musicFile);
            clip = AudioSystem.getClip();
            clip.open(audioInputStream);
            setVolume(volume);
            clip.start();
        } catch (UnsupportedAudioFileException | IOException | LineUnavailableException e) {
            e.printStackTrace();
        }
    }

    public void stopMusic() {
        if (clip != null && clip.isRunning()) {
            clip.stop();
            clip.close();
        }
    }

    private void nextTrack() {
        if (!musicFiles.isEmpty()) {
            currentTrackIndex = (currentTrackIndex + 1) % musicFiles.size();
            playMusic(musicFiles.get(currentTrackIndex));
        }
    }

    private void previousTrack() {
        if (!musicFiles.isEmpty()) {
            currentTrackIndex = (currentTrackIndex - 1 + musicFiles.size()) % musicFiles.size();
            playMusic(musicFiles.get(currentTrackIndex));
        }
    }

    private void setVolume(float volume) {
        if (clip != null) {
            FloatControl volumeControl = (FloatControl) clip.getControl(FloatControl.Type.MASTER_GAIN);
            volumeControl.setValue(20f * (float) Math.log10(volume)); // Установить громкость
        }
    }

    private class MusicMenu extends Screen {
        protected MusicMenu() {
            super(new StringTextComponent("Music Player"));
        }

        @Override
        protected void init() {
            addButton(new Button(width / 2 - 100, height / 2 - 40, 200, 20,
                    new StringTextComponent("Слушать музыку"),
                    button -> {
                        File musicFile = new File("ваш путь к музыке.wav");
                        if (musicFile.exists()) {
                            musicFiles.add(musicFile);
                            if (currentTrackIndex == -1) {
                                currentTrackIndex = 0;
                                playMusic(musicFile);
                            } else {
                                nextTrack();
                            }
                        }
                    }
            ));

            addButton(new Button(width / 2 - 100, height / 2 - 10, 200, 20,
                    new StringTextComponent("Остановить музыку"),
                    button -> {
                        stopMusic();
                    }
            ));

            addButton(new Button(width / 2 - 100, height / 2 + 20, 90, 20,
                    new StringTextComponent("<< Назад"),
                    button -> {
                        previousTrack();
                    }
            ));

            addButton(new Button(width / 2 + 10, height / 2 + 20, 90, 20,
                    new StringTextComponent("Дальше >>"),
                    button -> {
                        nextTrack();
                    }
            ));


            addButton(new Button(width / 2 - 100, height / 2 + 60, 90, 20,
                    new StringTextComponent("-"),
                    button -> {
                        if (volume > 0.0f) {
                            volume = Math.max(0.0f, volume - 0.1f);
                            setVolume(volume);
                        }
                    }
            ));


            addButton(new Button(width / 2 + 10, height / 2 + 60, 90, 20,
                    new StringTextComponent("+"),
                    button -> {
                        if (volume < 1.0f) {
                            volume = Math.min(1.0f, volume + 0.1f);
                            setVolume(volume);
                        }
                    }
            ));
        }
    }
}
Все звуки добавляйте с расширением .wav
Можете добавить еще пару звуков чтобы переключать, я делал только с 1
УДАЧИ
типа C:\Desctop\тд ?
типа C:\Desctop\тд ?
а все
 
Последнее редактирование:
Начинающий
Статус
Онлайн
Регистрация
6 Дек 2023
Сообщения
433
Реакции[?]
2
Поинты[?]
2K
Привет! мой второй код для югейма, музыка работает в 1 модуль а не в 2 в 3 как у других.
Пожалуйста, авторизуйтесь для просмотра ссылки.

Код:
package im.expensive.functions.impl.misc;

import im.expensive.functions.api.Category;
import im.expensive.functions.api.Function;
import im.expensive.functions.api.FunctionRegister;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.screen.Screen;
import net.minecraft.client.gui.widget.button.Button;
import net.minecraft.util.text.StringTextComponent;

import javax.sound.sampled.*;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

@FunctionRegister(name = "MusicPlayer", type = Category.Misc)
public class MusicPlayer extends Function {
    private final Minecraft mc = Minecraft.getInstance();
    private Clip clip;
    private List<File> musicFiles = new ArrayList<>();
    private int currentTrackIndex = -1;
    private float volume = 1.0f;

    public MusicPlayer() {
        super();
    }

    @Override
    public void onEnable() {
        super.onEnable();
        mc.displayGuiScreen(new MusicMenu());
    }

    @Override
    public void onDisable() {
        super.onDisable();
        stopMusic();
    }

    public void playMusic(File musicFile) {
        stopMusic();
        try {
            AudioInputStream audioInputStream = AudioSystem.getAudioInputStream(musicFile);
            clip = AudioSystem.getClip();
            clip.open(audioInputStream);
            setVolume(volume);
            clip.start();
        } catch (UnsupportedAudioFileException | IOException | LineUnavailableException e) {
            e.printStackTrace();
        }
    }

    public void stopMusic() {
        if (clip != null && clip.isRunning()) {
            clip.stop();
            clip.close();
        }
    }

    private void nextTrack() {
        if (!musicFiles.isEmpty()) {
            currentTrackIndex = (currentTrackIndex + 1) % musicFiles.size();
            playMusic(musicFiles.get(currentTrackIndex));
        }
    }

    private void previousTrack() {
        if (!musicFiles.isEmpty()) {
            currentTrackIndex = (currentTrackIndex - 1 + musicFiles.size()) % musicFiles.size();
            playMusic(musicFiles.get(currentTrackIndex));
        }
    }

    private void setVolume(float volume) {
        if (clip != null) {
            FloatControl volumeControl = (FloatControl) clip.getControl(FloatControl.Type.MASTER_GAIN);
            volumeControl.setValue(20f * (float) Math.log10(volume)); // Установить громкость
        }
    }

    private class MusicMenu extends Screen {
        protected MusicMenu() {
            super(new StringTextComponent("Music Player"));
        }

        @Override
        protected void init() {
            addButton(new Button(width / 2 - 100, height / 2 - 40, 200, 20,
                    new StringTextComponent("Слушать музыку"),
                    button -> {
                        File musicFile = new File("ваш путь к музыке.wav");
                        if (musicFile.exists()) {
                            musicFiles.add(musicFile);
                            if (currentTrackIndex == -1) {
                                currentTrackIndex = 0;
                                playMusic(musicFile);
                            } else {
                                nextTrack();
                            }
                        }
                    }
            ));

            addButton(new Button(width / 2 - 100, height / 2 - 10, 200, 20,
                    new StringTextComponent("Остановить музыку"),
                    button -> {
                        stopMusic();
                    }
            ));

            addButton(new Button(width / 2 - 100, height / 2 + 20, 90, 20,
                    new StringTextComponent("<< Назад"),
                    button -> {
                        previousTrack();
                    }
            ));

            addButton(new Button(width / 2 + 10, height / 2 + 20, 90, 20,
                    new StringTextComponent("Дальше >>"),
                    button -> {
                        nextTrack();
                    }
            ));


            addButton(new Button(width / 2 - 100, height / 2 + 60, 90, 20,
                    new StringTextComponent("-"),
                    button -> {
                        if (volume > 0.0f) {
                            volume = Math.max(0.0f, volume - 0.1f);
                            setVolume(volume);
                        }
                    }
            ));


            addButton(new Button(width / 2 + 10, height / 2 + 60, 90, 20,
                    new StringTextComponent("+"),
                    button -> {
                        if (volume < 1.0f) {
                            volume = Math.min(1.0f, volume + 0.1f);
                            setVolume(volume);
                        }
                    }
            ));
        }
    }
}
Все звуки добавляйте с расширением .wav
Можете добавить еще пару звуков чтобы переключать, я делал только с 1
УДАЧИ
я давным давно сливал, там и то реализация лучше была
 
Начинающий
Статус
Оффлайн
Регистрация
12 Дек 2022
Сообщения
183
Реакции[?]
0
Поинты[?]
0
Привет! мой второй код для югейма, музыка работает в 1 модуль а не в 2 в 3 как у других.
Пожалуйста, авторизуйтесь для просмотра ссылки.

Код:
package im.expensive.functions.impl.misc;

import im.expensive.functions.api.Category;
import im.expensive.functions.api.Function;
import im.expensive.functions.api.FunctionRegister;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.screen.Screen;
import net.minecraft.client.gui.widget.button.Button;
import net.minecraft.util.text.StringTextComponent;

import javax.sound.sampled.*;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

@FunctionRegister(name = "MusicPlayer", type = Category.Misc)
public class MusicPlayer extends Function {
    private final Minecraft mc = Minecraft.getInstance();
    private Clip clip;
    private List<File> musicFiles = new ArrayList<>();
    private int currentTrackIndex = -1;
    private float volume = 1.0f;

    public MusicPlayer() {
        super();
    }

    @Override
    public void onEnable() {
        super.onEnable();
        mc.displayGuiScreen(new MusicMenu());
    }

    @Override
    public void onDisable() {
        super.onDisable();
        stopMusic();
    }

    public void playMusic(File musicFile) {
        stopMusic();
        try {
            AudioInputStream audioInputStream = AudioSystem.getAudioInputStream(musicFile);
            clip = AudioSystem.getClip();
            clip.open(audioInputStream);
            setVolume(volume);
            clip.start();
        } catch (UnsupportedAudioFileException | IOException | LineUnavailableException e) {
            e.printStackTrace();
        }
    }

    public void stopMusic() {
        if (clip != null && clip.isRunning()) {
            clip.stop();
            clip.close();
        }
    }

    private void nextTrack() {
        if (!musicFiles.isEmpty()) {
            currentTrackIndex = (currentTrackIndex + 1) % musicFiles.size();
            playMusic(musicFiles.get(currentTrackIndex));
        }
    }

    private void previousTrack() {
        if (!musicFiles.isEmpty()) {
            currentTrackIndex = (currentTrackIndex - 1 + musicFiles.size()) % musicFiles.size();
            playMusic(musicFiles.get(currentTrackIndex));
        }
    }

    private void setVolume(float volume) {
        if (clip != null) {
            FloatControl volumeControl = (FloatControl) clip.getControl(FloatControl.Type.MASTER_GAIN);
            volumeControl.setValue(20f * (float) Math.log10(volume)); // Установить громкость
        }
    }

    private class MusicMenu extends Screen {
        protected MusicMenu() {
            super(new StringTextComponent("Music Player"));
        }

        @Override
        protected void init() {
            addButton(new Button(width / 2 - 100, height / 2 - 40, 200, 20,
                    new StringTextComponent("Слушать музыку"),
                    button -> {
                        File musicFile = new File("ваш путь к музыке.wav");
                        if (musicFile.exists()) {
                            musicFiles.add(musicFile);
                            if (currentTrackIndex == -1) {
                                currentTrackIndex = 0;
                                playMusic(musicFile);
                            } else {
                                nextTrack();
                            }
                        }
                    }
            ));

            addButton(new Button(width / 2 - 100, height / 2 - 10, 200, 20,
                    new StringTextComponent("Остановить музыку"),
                    button -> {
                        stopMusic();
                    }
            ));

            addButton(new Button(width / 2 - 100, height / 2 + 20, 90, 20,
                    new StringTextComponent("<< Назад"),
                    button -> {
                        previousTrack();
                    }
            ));

            addButton(new Button(width / 2 + 10, height / 2 + 20, 90, 20,
                    new StringTextComponent("Дальше >>"),
                    button -> {
                        nextTrack();
                    }
            ));


            addButton(new Button(width / 2 - 100, height / 2 + 60, 90, 20,
                    new StringTextComponent("-"),
                    button -> {
                        if (volume > 0.0f) {
                            volume = Math.max(0.0f, volume - 0.1f);
                            setVolume(volume);
                        }
                    }
            ));


            addButton(new Button(width / 2 + 10, height / 2 + 60, 90, 20,
                    new StringTextComponent("+"),
                    button -> {
                        if (volume < 1.0f) {
                            volume = Math.min(1.0f, volume + 0.1f);
                            setVolume(volume);
                        }
                    }
            ));
        }
    }
}
Все звуки добавляйте с расширением .wav
Можете добавить еще пару звуков чтобы переключать, я делал только с 1
УДАЧИ
честно у мойтена получше было, тем более у тебя как раз 2 модуля (класса) и используется, ты просто один вложил в функцию
 
Начинающий
Статус
Оффлайн
Регистрация
14 Янв 2025
Сообщения
37
Реакции[?]
0
Поинты[?]
0
Привет! мой второй код для югейма, музыка работает в 1 модуль а не в 2 в 3 как у других.
Пожалуйста, авторизуйтесь для просмотра ссылки.

Код:
package im.expensive.functions.impl.misc;

import im.expensive.functions.api.Category;
import im.expensive.functions.api.Function;
import im.expensive.functions.api.FunctionRegister;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.screen.Screen;
import net.minecraft.client.gui.widget.button.Button;
import net.minecraft.util.text.StringTextComponent;

import javax.sound.sampled.*;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

@FunctionRegister(name = "MusicPlayer", type = Category.Misc)
public class MusicPlayer extends Function {
    private final Minecraft mc = Minecraft.getInstance();
    private Clip clip;
    private List<File> musicFiles = new ArrayList<>();
    private int currentTrackIndex = -1;
    private float volume = 1.0f;

    public MusicPlayer() {
        super();
    }

    @Override
    public void onEnable() {
        super.onEnable();
        mc.displayGuiScreen(new MusicMenu());
    }

    @Override
    public void onDisable() {
        super.onDisable();
        stopMusic();
    }

    public void playMusic(File musicFile) {
        stopMusic();
        try {
            AudioInputStream audioInputStream = AudioSystem.getAudioInputStream(musicFile);
            clip = AudioSystem.getClip();
            clip.open(audioInputStream);
            setVolume(volume);
            clip.start();
        } catch (UnsupportedAudioFileException | IOException | LineUnavailableException e) {
            e.printStackTrace();
        }
    }

    public void stopMusic() {
        if (clip != null && clip.isRunning()) {
            clip.stop();
            clip.close();
        }
    }

    private void nextTrack() {
        if (!musicFiles.isEmpty()) {
            currentTrackIndex = (currentTrackIndex + 1) % musicFiles.size();
            playMusic(musicFiles.get(currentTrackIndex));
        }
    }

    private void previousTrack() {
        if (!musicFiles.isEmpty()) {
            currentTrackIndex = (currentTrackIndex - 1 + musicFiles.size()) % musicFiles.size();
            playMusic(musicFiles.get(currentTrackIndex));
        }
    }

    private void setVolume(float volume) {
        if (clip != null) {
            FloatControl volumeControl = (FloatControl) clip.getControl(FloatControl.Type.MASTER_GAIN);
            volumeControl.setValue(20f * (float) Math.log10(volume)); // Установить громкость
        }
    }

    private class MusicMenu extends Screen {
        protected MusicMenu() {
            super(new StringTextComponent("Music Player"));
        }

        @Override
        protected void init() {
            addButton(new Button(width / 2 - 100, height / 2 - 40, 200, 20,
                    new StringTextComponent("Слушать музыку"),
                    button -> {
                        File musicFile = new File("ваш путь к музыке.wav");
                        if (musicFile.exists()) {
                            musicFiles.add(musicFile);
                            if (currentTrackIndex == -1) {
                                currentTrackIndex = 0;
                                playMusic(musicFile);
                            } else {
                                nextTrack();
                            }
                        }
                    }
            ));

            addButton(new Button(width / 2 - 100, height / 2 - 10, 200, 20,
                    new StringTextComponent("Остановить музыку"),
                    button -> {
                        stopMusic();
                    }
            ));

            addButton(new Button(width / 2 - 100, height / 2 + 20, 90, 20,
                    new StringTextComponent("<< Назад"),
                    button -> {
                        previousTrack();
                    }
            ));

            addButton(new Button(width / 2 + 10, height / 2 + 20, 90, 20,
                    new StringTextComponent("Дальше >>"),
                    button -> {
                        nextTrack();
                    }
            ));


            addButton(new Button(width / 2 - 100, height / 2 + 60, 90, 20,
                    new StringTextComponent("-"),
                    button -> {
                        if (volume > 0.0f) {
                            volume = Math.max(0.0f, volume - 0.1f);
                            setVolume(volume);
                        }
                    }
            ));


            addButton(new Button(width / 2 + 10, height / 2 + 60, 90, 20,
                    new StringTextComponent("+"),
                    button -> {
                        if (volume < 1.0f) {
                            volume = Math.min(1.0f, volume + 0.1f);
                            setVolume(volume);
                        }
                    }
            ));
        }
    }
}
Все звуки добавляйте с расширением .wav
Можете добавить еще пару звуков чтобы переключать, я делал только с 1
УДАЧИ
а смысл нужно путь напрямую и даже название wav писать
 
Начинающий
Статус
Оффлайн
Регистрация
15 Фев 2024
Сообщения
33
Реакции[?]
0
Поинты[?]
0
а смысл нужно путь напрямую и даже название wav писать
.wav это расширение, напрямую как и везде типо target.png или же logo.png
я давным давно сливал, там и то реализация лучше была
Вот не давно увидел твою работу, реально классная. Но я всё впихнул в 1 модуль
 
Начинающий
Статус
Оффлайн
Регистрация
22 Авг 2023
Сообщения
331
Реакции[?]
17
Поинты[?]
15K
ь
Привет! мой второй код для югейма, музыка работает в 1 модуль а не в 2 в 3 как у других.
Пожалуйста, авторизуйтесь для просмотра ссылки.

Код:
package im.expensive.functions.impl.misc;

import im.expensive.functions.api.Category;
import im.expensive.functions.api.Function;
import im.expensive.functions.api.FunctionRegister;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.screen.Screen;
import net.minecraft.client.gui.widget.button.Button;
import net.minecraft.util.text.StringTextComponent;

import javax.sound.sampled.*;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

@FunctionRegister(name = "MusicPlayer", type = Category.Misc)
public class MusicPlayer extends Function {
    private final Minecraft mc = Minecraft.getInstance();
    private Clip clip;
    private List<File> musicFiles = new ArrayList<>();
    private int currentTrackIndex = -1;
    private float volume = 1.0f;

    public MusicPlayer() {
        super();
    }

    @Override
    public void onEnable() {
        super.onEnable();
        mc.displayGuiScreen(new MusicMenu());
    }

    @Override
    public void onDisable() {
        super.onDisable();
        stopMusic();
    }

    public void playMusic(File musicFile) {
        stopMusic();
        try {
            AudioInputStream audioInputStream = AudioSystem.getAudioInputStream(musicFile);
            clip = AudioSystem.getClip();
            clip.open(audioInputStream);
            setVolume(volume);
            clip.start();
        } catch (UnsupportedAudioFileException | IOException | LineUnavailableException e) {
            e.printStackTrace();
        }
    }

    public void stopMusic() {
        if (clip != null && clip.isRunning()) {
            clip.stop();
            clip.close();
        }
    }

    private void nextTrack() {
        if (!musicFiles.isEmpty()) {
            currentTrackIndex = (currentTrackIndex + 1) % musicFiles.size();
            playMusic(musicFiles.get(currentTrackIndex));
        }
    }

    private void previousTrack() {
        if (!musicFiles.isEmpty()) {
            currentTrackIndex = (currentTrackIndex - 1 + musicFiles.size()) % musicFiles.size();
            playMusic(musicFiles.get(currentTrackIndex));
        }
    }

    private void setVolume(float volume) {
        if (clip != null) {
            FloatControl volumeControl = (FloatControl) clip.getControl(FloatControl.Type.MASTER_GAIN);
            volumeControl.setValue(20f * (float) Math.log10(volume)); // Установить громкость
        }
    }

    private class MusicMenu extends Screen {
        protected MusicMenu() {
            super(new StringTextComponent("Music Player"));
        }

        @Override
        protected void init() {
            addButton(new Button(width / 2 - 100, height / 2 - 40, 200, 20,
                    new StringTextComponent("Слушать музыку"),
                    button -> {
                        File musicFile = new File("ваш путь к музыке.wav");
                        if (musicFile.exists()) {
                            musicFiles.add(musicFile);
                            if (currentTrackIndex == -1) {
                                currentTrackIndex = 0;
                                playMusic(musicFile);
                            } else {
                                nextTrack();
                            }
                        }
                    }
            ));

            addButton(new Button(width / 2 - 100, height / 2 - 10, 200, 20,
                    new StringTextComponent("Остановить музыку"),
                    button -> {
                        stopMusic();
                    }
            ));

            addButton(new Button(width / 2 - 100, height / 2 + 20, 90, 20,
                    new StringTextComponent("<< Назад"),
                    button -> {
                        previousTrack();
                    }
            ));

            addButton(new Button(width / 2 + 10, height / 2 + 20, 90, 20,
                    new StringTextComponent("Дальше >>"),
                    button -> {
                        nextTrack();
                    }
            ));


            addButton(new Button(width / 2 - 100, height / 2 + 60, 90, 20,
                    new StringTextComponent("-"),
                    button -> {
                        if (volume > 0.0f) {
                            volume = Math.max(0.0f, volume - 0.1f);
                            setVolume(volume);
                        }
                    }
            ));


            addButton(new Button(width / 2 + 10, height / 2 + 60, 90, 20,
                    new StringTextComponent("+"),
                    button -> {
                        if (volume < 1.0f) {
                            volume = Math.min(1.0f, volume + 0.1f);
                            setVolume(volume);
                        }
                    }
            ));
        }
    }
}
Все звуки добавляйте с расширением .wav
Можете добавить еще пару звуков чтобы переключать, я делал только с 1
УДАЧИ
mc.dataDir для слабых или что? xD
 
Сверху Снизу