From c82d18bde82df2d207534a2d596a2e13f3dd40a8 Mon Sep 17 00:00:00 2001 From: Diamondback88 <23108617+Diamondback88@users.noreply.github.com> Date: Fri, 13 Dec 2024 02:16:39 -0500 Subject: [PATCH 01/11] Fix GUI not playing music --- .../dev/geco/gmusic/manager/SongManager.java | 24 ++- .../dev/geco/gmusic/objects/MusicGUI.java | 144 ++++++++++++------ 2 files changed, 117 insertions(+), 51 deletions(-) diff --git a/core/src/main/java/dev/geco/gmusic/manager/SongManager.java b/core/src/main/java/dev/geco/gmusic/manager/SongManager.java index c9632ef..a4026e1 100644 --- a/core/src/main/java/dev/geco/gmusic/manager/SongManager.java +++ b/core/src/main/java/dev/geco/gmusic/manager/SongManager.java @@ -3,11 +3,16 @@ import java.io.*; import java.util.*; +import net.kyori.adventure.text.Component; +import org.bukkit.Bukkit; +import org.bukkit.NamespacedKey; import org.bukkit.inventory.*; import org.bukkit.inventory.meta.*; import dev.geco.gmusic.GMusicMain; import dev.geco.gmusic.objects.*; +import org.bukkit.persistence.PersistentDataType; +import org.bukkit.plugin.Plugin; public class SongManager { @@ -15,6 +20,9 @@ public class SongManager { public SongManager(GMusicMain GPluginMain) { GPM = GPluginMain; } + // TODO: Make this actually use GPM + Plugin plugin = Bukkit.getPluginManager().getPlugin("GMusic"); + private final List songs = new ArrayList<>(); private final HashMap musicGUIs = new HashMap<>(); @@ -64,14 +72,20 @@ public void loadSongs() { if(song.getNoteAmount() == 0) return; - List description = new ArrayList<>(); - for(String descriptionRow : song.getDescription()) description.add(GPM.getMManager().getMessage(descriptionRow)); + // List description = new ArrayList<>(); + // for(String descriptionRow : song.getDescription()) description.add(GPM.getMManager().getMessage(descriptionRow)); + ArrayList description = new ArrayList<>(); + for(String descriptionRow : song.getDescription()) description.add(Component.text(GPM.getMManager().getMessage(descriptionRow))); ItemStack itemStack = new ItemStack(song.getMaterial()); ItemMeta itemMeta = itemStack.getItemMeta(); - itemMeta.setDisplayName(GPM.getMManager().getMessage("Items.disc-title", "%Title%", song.getTitle(), "%Author%", song.getAuthor().isEmpty() ? GPM.getMManager().getMessage("MusicGUI.disc-empty-author") : song.getAuthor(), "%OAuthor%", song.getOriginalAuthor().isEmpty() ? GPM.getMManager().getMessage("MusicGUI.disc-empty-oauthor") : song.getOriginalAuthor())); - itemMeta.setLocalizedName(GPM.NAME + "_D_" + song.getId()); - itemMeta.setLore(description); + // itemMeta.setDisplayName(GPM.getMManager().getMessage("Items.disc-title", "%Title%", song.getTitle(), "%Author%", song.getAuthor().isEmpty() ? GPM.getMManager().getMessage("MusicGUI.disc-empty-author") : song.getAuthor(), "%OAuthor%", song.getOriginalAuthor().isEmpty() ? GPM.getMManager().getMessage("MusicGUI.disc-empty-oauthor") : song.getOriginalAuthor())); + itemMeta.displayName(Component.text(GPM.getMManager().getMessage("Items.disc-title", "%Title%", song.getTitle(), "%Author%", song.getAuthor().isEmpty() ? GPM.getMManager().getMessage("MusicGUI.disc-empty-author") : song.getAuthor(), "%OAuthor%", song.getOriginalAuthor().isEmpty() ? GPM.getMManager().getMessage("MusicGUI.disc-empty-oauthor") : song.getOriginalAuthor()))); + // itemMeta.setLocalizedName(GPM.NAME + "_D_" + song.getId()); + NamespacedKey localizedNameKey = new NamespacedKey(plugin, "LocalizedName"); + itemMeta.getPersistentDataContainer().set(localizedNameKey, PersistentDataType.STRING, GPM.NAME + "_D_" + song.getId()); + // itemMeta.setLore(description); + itemMeta.lore(description); itemMeta.addItemFlags(ItemFlag.values()); itemStack.setItemMeta(itemMeta); diff --git a/core/src/main/java/dev/geco/gmusic/objects/MusicGUI.java b/core/src/main/java/dev/geco/gmusic/objects/MusicGUI.java index c52f378..24a4c8b 100644 --- a/core/src/main/java/dev/geco/gmusic/objects/MusicGUI.java +++ b/core/src/main/java/dev/geco/gmusic/objects/MusicGUI.java @@ -2,6 +2,9 @@ import java.util.*; +import net.kyori.adventure.text.Component; +import org.bukkit.persistence.PersistentDataType; +import org.bukkit.plugin.Plugin; import org.jetbrains.annotations.*; import org.bukkit.*; @@ -30,6 +33,9 @@ public class MusicGUI { private static final long RANGE_STEPS = 1; private static final long SHIFT_RANGE_STEPS = 10; + Plugin plugin = Bukkit.getPluginManager().getPlugin(GPM.NAME); + NamespacedKey localizedNameKey = new NamespacedKey(plugin, "LocalizedName"); + public MusicGUI(UUID UUID, MenuType Type) { uuid = UUID; @@ -57,9 +63,11 @@ public void ICliE(InventoryClickEvent Event) { ClickType click = Event.getClick(); if(GPM.getSVManager().getInventoryFromView(Event.getView(), "getTopInventory").equals(Event.getClickedInventory())) { ItemStack itemStack = Event.getCurrentItem(); - if(itemStack != null && itemStack.hasItemMeta() && itemStack.getItemMeta().hasLocalizedName()) { + // if(itemStack != null && itemStack.hasItemMeta() && itemStack.getItemMeta().hasLocalizedName()) { + if(itemStack != null && !(itemStack.getPersistentDataContainer().isEmpty())) { - String clickName = itemStack.getItemMeta().getLocalizedName(); + // String clickName = itemStack.getItemMeta().getLocalizedName(); + String clickName = itemStack.getPersistentDataContainer().get(localizedNameKey, PersistentDataType.STRING); if(clickName.startsWith("!")) setPage(Integer.parseInt(clickName.replace("!", ""))); else if(clickName.startsWith(".")) setOptionsBar(); else if(clickName.startsWith("+")) { @@ -288,16 +296,20 @@ public void setDefaultBar() { if(playSettings.getPlayList() != 2) { lp = new ItemStack(Material.BARRIER); lpm = lp.getItemMeta(); - lpm.setDisplayName(GPM.getMManager().getMessage("MusicGUI.music-stop")); - lpm.setLocalizedName("/s"); + // lpm.setDisplayName(GPM.getMManager().getMessage("MusicGUI.music-stop")); + lpm.displayName(Component.text(GPM.getMManager().getMessage("MusicGUI.music-stop"))); + // lpm.setLocalizedName("/s"); + lpm.getPersistentDataContainer().set(localizedNameKey, PersistentDataType.STRING, "/s"); lp.setItemMeta(lpm); inventory.setItem(46, lp); if(!GPM.getCManager().G_DISABLE_RANDOM_SONG) { lp = new ItemStack(Material.ENDER_PEARL); lpm = lp.getItemMeta(); - lpm.setDisplayName(GPM.getMManager().getMessage("MusicGUI.music-random")); - lpm.setLocalizedName("/q"); + // lpm.setDisplayName(GPM.getMManager().getMessage("MusicGUI.music-random")); + lpm.displayName(Component.text(GPM.getMManager().getMessage("MusicGUI.music-random"))); + // lpm.setLocalizedName("/q"); + lpm.getPersistentDataContainer().set(localizedNameKey, PersistentDataType.STRING, "/q"); lp.setItemMeta(lpm); inventory.setItem(47, lp); } @@ -306,8 +318,10 @@ public void setDefaultBar() { if(!GPM.getCManager().G_DISABLE_PLAYLIST) { lp = new ItemStack(Material.ENDER_CHEST); lpm = lp.getItemMeta(); - lpm.setDisplayName(GPM.getMManager().getMessage("MusicGUI.music-playlist")); - lpm.setLocalizedName(","); + // lpm.setDisplayName(GPM.getMManager().getMessage("MusicGUI.music-playlist")); + lpm.displayName(Component.text(GPM.getMManager().getMessage("MusicGUI.music-playlist"))); + // lpm.setLocalizedName(","); + lpm.getPersistentDataContainer().set(localizedNameKey, PersistentDataType.STRING, ","); lp.setItemMeta(lpm); inventory.setItem(49, lp); } @@ -315,8 +329,10 @@ public void setDefaultBar() { if(!GPM.getCManager().G_DISABLE_OPTIONS) { lp = new ItemStack(Material.HOPPER); lpm = lp.getItemMeta(); - lpm.setDisplayName(GPM.getMManager().getMessage("MusicGUI.music-options")); - lpm.setLocalizedName("."); + // lpm.setDisplayName(GPM.getMManager().getMessage("MusicGUI.music-options")); + lpm.displayName(Component.text(GPM.getMManager().getMessage("MusicGUI.music-options"))); + // lpm.setLocalizedName("."); + lpm.getPersistentDataContainer().set(localizedNameKey, PersistentDataType.STRING, "."); lp.setItemMeta(lpm); inventory.setItem(50, lp); } @@ -334,11 +350,15 @@ public void setPauseResumeBar() { ItemStack lp = new ItemStack(Material.END_CRYSTAL); ItemMeta lpm = lp.getItemMeta(); if(songSettings.isPaused()) { - lpm.setDisplayName(GPM.getMManager().getMessage("MusicGUI.music-resume")); - lpm.setLocalizedName("/r"); + // lpm.setDisplayName(GPM.getMManager().getMessage("MusicGUI.music-resume")); + lpm.displayName(Component.text(GPM.getMManager().getMessage("MusicGUI.music-resume"))); + // lpm.setLocalizedName("/r"); + lpm.getPersistentDataContainer().set(localizedNameKey, PersistentDataType.STRING, "/r"); } else { - lpm.setDisplayName(GPM.getMManager().getMessage("MusicGUI.music-pause")); - lpm.setLocalizedName("/p"); + // lpm.setDisplayName(GPM.getMManager().getMessage("MusicGUI.music-pause")); + lpm.displayName(Component.text(GPM.getMManager().getMessage("MusicGUI.music-pause"))); + // lpm.setLocalizedName("/p"); + lpm.getPersistentDataContainer().set(localizedNameKey, PersistentDataType.STRING, "/p"); } lp.setItemMeta(lpm); inventory.setItem(45, lp); @@ -353,40 +373,52 @@ public void setOptionsBar() { ItemStack lp = new ItemStack(Material.CHEST); ItemMeta lpm = lp.getItemMeta(); - lpm.setDisplayName(GPM.getMManager().getMessage("MusicGUI.music-back")); - lpm.setLocalizedName("-"); + // lpm.setDisplayName(GPM.getMManager().getMessage("MusicGUI.music-back")); + lpm.displayName(Component.text(GPM.getMManager().getMessage("MusicGUI.music-back"))); + // lpm.setLocalizedName("-"); + lpm.getPersistentDataContainer().set(localizedNameKey, PersistentDataType.STRING, "-"); lp.setItemMeta(lpm); inventory.setItem(45, lp); lp = new ItemStack(Material.MAGMA_CREAM); lpm = lp.getItemMeta(); - lpm.setDisplayName(GPM.getMManager().getMessage("MusicGUI.music-options-volume", "%Volume%", "" + playSettings.getVolume())); - lpm.setLocalizedName("+v"); + // lpm.setDisplayName(GPM.getMManager().getMessage("MusicGUI.music-options-volume", "%Volume%", "" + playSettings.getVolume())); + lpm.displayName(Component.text(GPM.getMManager().getMessage("MusicGUI.music-options-volume", "%Volume%", "" + playSettings.getVolume()))); + // lpm.setLocalizedName("+v"); + lpm.getPersistentDataContainer().set(localizedNameKey, PersistentDataType.STRING, "+v"); lp.setItemMeta(lpm); inventory.setItem(46, lp); lp = new ItemStack(Material.FIREWORK_ROCKET); lpm = lp.getItemMeta(); - lpm.setDisplayName(GPM.getMManager().getMessage("MusicGUI.music-options-particle", "%Particle%", GPM.getMManager().getMessage(playSettings.isShowingParticles() ? "MusicGUI.music-options-true" : "MusicGUI.music-options-false"))); - lpm.setLocalizedName("+e"); + // lpm.setDisplayName(GPM.getMManager().getMessage("MusicGUI.music-options-particle", "%Particle%", GPM.getMManager().getMessage(playSettings.isShowingParticles() ? "MusicGUI.music-options-true" : "MusicGUI.music-options-false"))); + lpm.displayName(Component.text(GPM.getMManager().getMessage("MusicGUI.music-options-particle", "%Particle%", GPM.getMManager().getMessage(playSettings.isShowingParticles() ? "MusicGUI.music-options-true" : "MusicGUI.music-options-false")))); + // lpm.setLocalizedName("+e"); + lpm.getPersistentDataContainer().set(localizedNameKey, PersistentDataType.STRING, "+e"); lp.setItemMeta(lpm); inventory.setItem(47, lp); if(playSettings.getPlayList() != 2) { lp = new ItemStack(Material.DIAMOND); lpm = lp.getItemMeta(); - lpm.setDisplayName(GPM.getMManager().getMessage("MusicGUI.music-options-join", "%Join%", GPM.getMManager().getMessage(playSettings.isPlayOnJoin() ? "MusicGUI.music-options-true" : "MusicGUI.music-options-false"))); - lpm.setLocalizedName("+j"); + // lpm.setDisplayName(GPM.getMManager().getMessage("MusicGUI.music-options-join", "%Join%", GPM.getMManager().getMessage(playSettings.isPlayOnJoin() ? "MusicGUI.music-options-true" : "MusicGUI.music-options-false"))); + lpm.displayName(Component.text(GPM.getMManager().getMessage("MusicGUI.music-options-join", "%Join%", GPM.getMManager().getMessage(playSettings.isPlayOnJoin() ? "MusicGUI.music-options-true" : "MusicGUI.music-options-false")))); + // lpm.setLocalizedName("+j"); + lpm.getPersistentDataContainer().set(localizedNameKey, PersistentDataType.STRING, "+j"); lp.setItemMeta(lpm); inventory.setItem(48, lp); lp = new ItemStack(Material.BLAZE_POWDER); lpm = lp.getItemMeta(); - lpm.setDisplayName(GPM.getMManager().getMessage(playSettings.getPlayMode() == 0 ? "MusicGUI.music-options-playmode-once" : playSettings.getPlayMode() == 1 ? "MusicGUI.music-options-playmode-shuffle" : "MusicGUI.music-options-playmode-repeat")); - lpm.setLocalizedName("+s"); + // lpm.setDisplayName(GPM.getMManager().getMessage(playSettings.getPlayMode() == 0 ? "MusicGUI.music-options-playmode-once" : playSettings.getPlayMode() == 1 ? "MusicGUI.music-options-playmode-shuffle" : "MusicGUI.music-options-playmode-repeat")); + lpm.displayName(Component.text(GPM.getMManager().getMessage(playSettings.getPlayMode() == 0 ? "MusicGUI.music-options-playmode-once" : playSettings.getPlayMode() == 1 ? "MusicGUI.music-options-playmode-shuffle" : "MusicGUI.music-options-playmode-repeat"))); + // lpm.setLocalizedName("+s"); + lpm.getPersistentDataContainer().set(localizedNameKey, PersistentDataType.STRING, "+s"); lp.setItemMeta(lpm); inventory.setItem(49, lp); lp = new ItemStack(Material.TOTEM_OF_UNDYING); lpm = lp.getItemMeta(); - lpm.setDisplayName(GPM.getMManager().getMessage("MusicGUI.music-options-reverse", "%Reverse%", GPM.getMManager().getMessage(playSettings.isReverseMode() ? "MusicGUI.music-options-true" : "MusicGUI.music-options-false"))); - lpm.setLocalizedName("+q"); + // lpm.setDisplayName(GPM.getMManager().getMessage("MusicGUI.music-options-reverse", "%Reverse%", GPM.getMManager().getMessage(playSettings.isReverseMode() ? "MusicGUI.music-options-true" : "MusicGUI.music-options-false"))); + lpm.displayName(Component.text(GPM.getMManager().getMessage("MusicGUI.music-options-reverse", "%Reverse%", GPM.getMManager().getMessage(playSettings.isReverseMode() ? "MusicGUI.music-options-true" : "MusicGUI.music-options-false")))); + // lpm.setLocalizedName("+q"); + lpm.getPersistentDataContainer().set(localizedNameKey, PersistentDataType.STRING, "+q"); lp.setItemMeta(lpm); inventory.setItem(50, lp); } @@ -394,8 +426,10 @@ public void setOptionsBar() { if(type == MenuType.JUKEBOX || type == MenuType.FULLJUKEBOX) { lp = new ItemStack(Material.REDSTONE); lpm = lp.getItemMeta(); - lpm.setDisplayName(GPM.getMManager().getMessage("MusicGUI.music-options-range", "%Range%", "" + playSettings.getRange())); - lpm.setLocalizedName("+r"); + // lpm.setDisplayName(GPM.getMManager().getMessage("MusicGUI.music-options-range", "%Range%", "" + playSettings.getRange())); + lpm.displayName(Component.text(GPM.getMManager().getMessage("MusicGUI.music-options-range", "%Range%", "" + playSettings.getRange()))); + // lpm.setLocalizedName("+r"); + lpm.getPersistentDataContainer().set(localizedNameKey, PersistentDataType.STRING, "+r"); lp.setItemMeta(lpm); inventory.setItem(51, lp); } @@ -409,24 +443,30 @@ public void setPlaylistBar() { ItemStack lp = new ItemStack(Material.CHEST); ItemMeta lpm = lp.getItemMeta(); - lpm.setDisplayName(GPM.getMManager().getMessage("MusicGUI.music-back")); - lpm.setLocalizedName("-"); + // lpm.setDisplayName(GPM.getMManager().getMessage("MusicGUI.music-back")); + lpm.displayName(Component.text(GPM.getMManager().getMessage("MusicGUI.music-back"))); + // lpm.setLocalizedName("-"); + lpm.getPersistentDataContainer().set(localizedNameKey, PersistentDataType.STRING, "-"); lp.setItemMeta(lpm); inventory.setItem(45, lp); if(playSettings.getPlayList() != 2) { lp = new ItemStack(Material.FEATHER); lpm = lp.getItemMeta(); - lpm.setDisplayName(GPM.getMManager().getMessage("MusicGUI.music-playlist-skip")); - lpm.setLocalizedName("/l"); + // lpm.setDisplayName(GPM.getMManager().getMessage("MusicGUI.music-playlist-skip")); + lpm.displayName(Component.text(GPM.getMManager().getMessage("MusicGUI.music-playlist-skip"))); + // lpm.setLocalizedName("/l"); + lpm.getPersistentDataContainer().set(localizedNameKey, PersistentDataType.STRING, "/l"); lp.setItemMeta(lpm); inventory.setItem(47, lp); } lp = new ItemStack(Material.NOTE_BLOCK); lpm = lp.getItemMeta(); - lpm.setDisplayName(GPM.getMManager().getMessage(playSettings.getPlayList() == 0 ? "MusicGUI.music-playlist-type-default" : playSettings.getPlayList() == 1 ? "MusicGUI.music-playlist-type-favorites" : "MusicGUI.music-playlist-type-radio")); - lpm.setLocalizedName("%"); + // lpm.setDisplayName(GPM.getMManager().getMessage(playSettings.getPlayList() == 0 ? "MusicGUI.music-playlist-type-default" : playSettings.getPlayList() == 1 ? "MusicGUI.music-playlist-type-favorites" : "MusicGUI.music-playlist-type-radio")); + lpm.displayName(Component.text(GPM.getMManager().getMessage(playSettings.getPlayList() == 0 ? "MusicGUI.music-playlist-type-default" : playSettings.getPlayList() == 1 ? "MusicGUI.music-playlist-type-favorites" : "MusicGUI.music-playlist-type-radio"))); + // lpm.setLocalizedName("%"); + lpm.getPersistentDataContainer().set(localizedNameKey, PersistentDataType.STRING, "%"); lp.setItemMeta(lpm); inventory.setItem(49, lp); } @@ -448,12 +488,18 @@ public void setPage(int Page) { Song s1 = songs.get(z); ItemStack is = new ItemStack(s1.getMaterial()); ItemMeta im = is.getItemMeta(); - im.setDisplayName(GPM.getMManager().getMessage("MusicGUI.disc-title", "%Title%", s1.getTitle(), "%Author%", s1.getAuthor().isEmpty() ? GPM.getMManager().getMessage("MusicGUI.disc-empty-author") : s1.getAuthor(), "%OAuthor%", s1.getOriginalAuthor().isEmpty() ? GPM.getMManager().getMessage("MusicGUI.disc-empty-oauthor") : s1.getOriginalAuthor())); - List dl = new ArrayList<>(); - for(String d : s1.getDescription()) dl.add(GPM.getMManager().toFormattedMessage("&6" + d)); - if(playSettings.getFavorites().contains(s1)) dl.add(GPM.getMManager().getMessage("MusicGUI.disc-favorite")); - im.setLore(dl); - im.setLocalizedName("=" + s1.getId()); + // im.setDisplayName(GPM.getMManager().getMessage("MusicGUI.disc-title", "%Title%", s1.getTitle(), "%Author%", s1.getAuthor().isEmpty() ? GPM.getMManager().getMessage("MusicGUI.disc-empty-author") : s1.getAuthor(), "%OAuthor%", s1.getOriginalAuthor().isEmpty() ? GPM.getMManager().getMessage("MusicGUI.disc-empty-oauthor") : s1.getOriginalAuthor())); + im.displayName(Component.text(GPM.getMManager().getMessage("MusicGUI.disc-title", "%Title%", s1.getTitle(), "%Author%", s1.getAuthor().isEmpty() ? GPM.getMManager().getMessage("MusicGUI.disc-empty-author") : s1.getAuthor(), "%OAuthor%", s1.getOriginalAuthor().isEmpty() ? GPM.getMManager().getMessage("MusicGUI.disc-empty-oauthor") : s1.getOriginalAuthor()))); + // List dl = new ArrayList<>(); + ArrayList dl = new ArrayList<>(); + // for(String d : s1.getDescription()) dl.add(GPM.getMManager().toFormattedMessage("&6" + d)); + for(String d : s1.getDescription()) dl.add(Component.text(GPM.getMManager().toFormattedMessage("&6" + d))); + // if(playSettings.getFavorites().contains(s1)) dl.add(GPM.getMManager().getMessage("MusicGUI.disc-favorite")); + if(playSettings.getFavorites().contains(s1)) dl.add(Component.text(GPM.getMManager().getMessage("MusicGUI.disc-favorite"))); + // im.setLore(dl); + im.lore(dl); + // im.setLocalizedName("=" + s1.getId()); + im.getPersistentDataContainer().set(localizedNameKey, PersistentDataType.STRING, "=" + s1.getId()); im.addItemFlags(ItemFlag.values()); is.setItemMeta(im); inventory.setItem(z % 45, is); @@ -463,14 +509,17 @@ public void setPage(int Page) { if(page > 1) { ItemStack lp = new ItemStack(Material.ARROW); ItemMeta lpm = lp.getItemMeta(); - lpm.setDisplayName(GPM.getMManager().getMessage("MusicGUI.last-page")); - lpm.setLocalizedName("!" + (page - 1)); + // lpm.setDisplayName(GPM.getMManager().getMessage("MusicGUI.last-page")); + lpm.displayName(Component.text(GPM.getMManager().getMessage("MusicGUI.last-page"))); + // lpm.setLocalizedName("!" + (page - 1)); + lpm.getPersistentDataContainer().set(localizedNameKey, PersistentDataType.STRING, "!" + (page - 1)); lp.setItemMeta(lpm); inventory.setItem(52, lp); } else { ItemStack lp = new ItemStack(Material.BLACK_STAINED_GLASS_PANE); ItemMeta lpm = lp.getItemMeta(); - lpm.setDisplayName(" "); + // lpm.setDisplayName(" "); + lpm.displayName(Component.text(" ")); lp.setItemMeta(lpm); inventory.setItem(52, lp); } @@ -478,14 +527,17 @@ public void setPage(int Page) { if(page < getMaxPageSize(songs)) { ItemStack lp = new ItemStack(Material.ARROW); ItemMeta lpm = lp.getItemMeta(); - lpm.setDisplayName(GPM.getMManager().getMessage("MusicGUI.next-page")); - lpm.setLocalizedName("!" + (page + 1)); + // lpm.setDisplayName(GPM.getMManager().getMessage("MusicGUI.next-page")); + lpm.displayName(Component.text(GPM.getMManager().getMessage("MusicGUI.next-page"))); + // lpm.setLocalizedName("!" + (page + 1)); + lpm.getPersistentDataContainer().set(localizedNameKey, PersistentDataType.STRING, "!" + (page + 1)); lp.setItemMeta(lpm); inventory.setItem(53, lp); } else { ItemStack lp = new ItemStack(Material.BLACK_STAINED_GLASS_PANE); ItemMeta lpm = lp.getItemMeta(); - lpm.setDisplayName(" "); + // lpm.setDisplayName(" "); + lpm.displayName(Component.text(" ")); lp.setItemMeta(lpm); inventory.setItem(53, lp); } From 58dbc7575dcf3bb906b21b0032c706c65bf5926c Mon Sep 17 00:00:00 2001 From: Diamondback88 <23108617+Diamondback88@users.noreply.github.com> Date: Fri, 13 Dec 2024 02:19:48 -0500 Subject: [PATCH 02/11] Remove commented-out code --- .../dev/geco/gmusic/manager/SongManager.java | 5 -- .../dev/geco/gmusic/objects/MusicGUI.java | 46 ------------------- 2 files changed, 51 deletions(-) diff --git a/core/src/main/java/dev/geco/gmusic/manager/SongManager.java b/core/src/main/java/dev/geco/gmusic/manager/SongManager.java index a4026e1..69b46f4 100644 --- a/core/src/main/java/dev/geco/gmusic/manager/SongManager.java +++ b/core/src/main/java/dev/geco/gmusic/manager/SongManager.java @@ -72,19 +72,14 @@ public void loadSongs() { if(song.getNoteAmount() == 0) return; - // List description = new ArrayList<>(); - // for(String descriptionRow : song.getDescription()) description.add(GPM.getMManager().getMessage(descriptionRow)); ArrayList description = new ArrayList<>(); for(String descriptionRow : song.getDescription()) description.add(Component.text(GPM.getMManager().getMessage(descriptionRow))); ItemStack itemStack = new ItemStack(song.getMaterial()); ItemMeta itemMeta = itemStack.getItemMeta(); - // itemMeta.setDisplayName(GPM.getMManager().getMessage("Items.disc-title", "%Title%", song.getTitle(), "%Author%", song.getAuthor().isEmpty() ? GPM.getMManager().getMessage("MusicGUI.disc-empty-author") : song.getAuthor(), "%OAuthor%", song.getOriginalAuthor().isEmpty() ? GPM.getMManager().getMessage("MusicGUI.disc-empty-oauthor") : song.getOriginalAuthor())); itemMeta.displayName(Component.text(GPM.getMManager().getMessage("Items.disc-title", "%Title%", song.getTitle(), "%Author%", song.getAuthor().isEmpty() ? GPM.getMManager().getMessage("MusicGUI.disc-empty-author") : song.getAuthor(), "%OAuthor%", song.getOriginalAuthor().isEmpty() ? GPM.getMManager().getMessage("MusicGUI.disc-empty-oauthor") : song.getOriginalAuthor()))); - // itemMeta.setLocalizedName(GPM.NAME + "_D_" + song.getId()); NamespacedKey localizedNameKey = new NamespacedKey(plugin, "LocalizedName"); itemMeta.getPersistentDataContainer().set(localizedNameKey, PersistentDataType.STRING, GPM.NAME + "_D_" + song.getId()); - // itemMeta.setLore(description); itemMeta.lore(description); itemMeta.addItemFlags(ItemFlag.values()); itemStack.setItemMeta(itemMeta); diff --git a/core/src/main/java/dev/geco/gmusic/objects/MusicGUI.java b/core/src/main/java/dev/geco/gmusic/objects/MusicGUI.java index 24a4c8b..76a1c01 100644 --- a/core/src/main/java/dev/geco/gmusic/objects/MusicGUI.java +++ b/core/src/main/java/dev/geco/gmusic/objects/MusicGUI.java @@ -63,10 +63,8 @@ public void ICliE(InventoryClickEvent Event) { ClickType click = Event.getClick(); if(GPM.getSVManager().getInventoryFromView(Event.getView(), "getTopInventory").equals(Event.getClickedInventory())) { ItemStack itemStack = Event.getCurrentItem(); - // if(itemStack != null && itemStack.hasItemMeta() && itemStack.getItemMeta().hasLocalizedName()) { if(itemStack != null && !(itemStack.getPersistentDataContainer().isEmpty())) { - // String clickName = itemStack.getItemMeta().getLocalizedName(); String clickName = itemStack.getPersistentDataContainer().get(localizedNameKey, PersistentDataType.STRING); if(clickName.startsWith("!")) setPage(Integer.parseInt(clickName.replace("!", ""))); else if(clickName.startsWith(".")) setOptionsBar(); @@ -296,9 +294,7 @@ public void setDefaultBar() { if(playSettings.getPlayList() != 2) { lp = new ItemStack(Material.BARRIER); lpm = lp.getItemMeta(); - // lpm.setDisplayName(GPM.getMManager().getMessage("MusicGUI.music-stop")); lpm.displayName(Component.text(GPM.getMManager().getMessage("MusicGUI.music-stop"))); - // lpm.setLocalizedName("/s"); lpm.getPersistentDataContainer().set(localizedNameKey, PersistentDataType.STRING, "/s"); lp.setItemMeta(lpm); inventory.setItem(46, lp); @@ -306,9 +302,7 @@ public void setDefaultBar() { if(!GPM.getCManager().G_DISABLE_RANDOM_SONG) { lp = new ItemStack(Material.ENDER_PEARL); lpm = lp.getItemMeta(); - // lpm.setDisplayName(GPM.getMManager().getMessage("MusicGUI.music-random")); lpm.displayName(Component.text(GPM.getMManager().getMessage("MusicGUI.music-random"))); - // lpm.setLocalizedName("/q"); lpm.getPersistentDataContainer().set(localizedNameKey, PersistentDataType.STRING, "/q"); lp.setItemMeta(lpm); inventory.setItem(47, lp); @@ -318,9 +312,7 @@ public void setDefaultBar() { if(!GPM.getCManager().G_DISABLE_PLAYLIST) { lp = new ItemStack(Material.ENDER_CHEST); lpm = lp.getItemMeta(); - // lpm.setDisplayName(GPM.getMManager().getMessage("MusicGUI.music-playlist")); lpm.displayName(Component.text(GPM.getMManager().getMessage("MusicGUI.music-playlist"))); - // lpm.setLocalizedName(","); lpm.getPersistentDataContainer().set(localizedNameKey, PersistentDataType.STRING, ","); lp.setItemMeta(lpm); inventory.setItem(49, lp); @@ -329,9 +321,7 @@ public void setDefaultBar() { if(!GPM.getCManager().G_DISABLE_OPTIONS) { lp = new ItemStack(Material.HOPPER); lpm = lp.getItemMeta(); - // lpm.setDisplayName(GPM.getMManager().getMessage("MusicGUI.music-options")); lpm.displayName(Component.text(GPM.getMManager().getMessage("MusicGUI.music-options"))); - // lpm.setLocalizedName("."); lpm.getPersistentDataContainer().set(localizedNameKey, PersistentDataType.STRING, "."); lp.setItemMeta(lpm); inventory.setItem(50, lp); @@ -350,14 +340,10 @@ public void setPauseResumeBar() { ItemStack lp = new ItemStack(Material.END_CRYSTAL); ItemMeta lpm = lp.getItemMeta(); if(songSettings.isPaused()) { - // lpm.setDisplayName(GPM.getMManager().getMessage("MusicGUI.music-resume")); lpm.displayName(Component.text(GPM.getMManager().getMessage("MusicGUI.music-resume"))); - // lpm.setLocalizedName("/r"); lpm.getPersistentDataContainer().set(localizedNameKey, PersistentDataType.STRING, "/r"); } else { - // lpm.setDisplayName(GPM.getMManager().getMessage("MusicGUI.music-pause")); lpm.displayName(Component.text(GPM.getMManager().getMessage("MusicGUI.music-pause"))); - // lpm.setLocalizedName("/p"); lpm.getPersistentDataContainer().set(localizedNameKey, PersistentDataType.STRING, "/p"); } lp.setItemMeta(lpm); @@ -373,25 +359,19 @@ public void setOptionsBar() { ItemStack lp = new ItemStack(Material.CHEST); ItemMeta lpm = lp.getItemMeta(); - // lpm.setDisplayName(GPM.getMManager().getMessage("MusicGUI.music-back")); lpm.displayName(Component.text(GPM.getMManager().getMessage("MusicGUI.music-back"))); - // lpm.setLocalizedName("-"); lpm.getPersistentDataContainer().set(localizedNameKey, PersistentDataType.STRING, "-"); lp.setItemMeta(lpm); inventory.setItem(45, lp); lp = new ItemStack(Material.MAGMA_CREAM); lpm = lp.getItemMeta(); - // lpm.setDisplayName(GPM.getMManager().getMessage("MusicGUI.music-options-volume", "%Volume%", "" + playSettings.getVolume())); lpm.displayName(Component.text(GPM.getMManager().getMessage("MusicGUI.music-options-volume", "%Volume%", "" + playSettings.getVolume()))); - // lpm.setLocalizedName("+v"); lpm.getPersistentDataContainer().set(localizedNameKey, PersistentDataType.STRING, "+v"); lp.setItemMeta(lpm); inventory.setItem(46, lp); lp = new ItemStack(Material.FIREWORK_ROCKET); lpm = lp.getItemMeta(); - // lpm.setDisplayName(GPM.getMManager().getMessage("MusicGUI.music-options-particle", "%Particle%", GPM.getMManager().getMessage(playSettings.isShowingParticles() ? "MusicGUI.music-options-true" : "MusicGUI.music-options-false"))); lpm.displayName(Component.text(GPM.getMManager().getMessage("MusicGUI.music-options-particle", "%Particle%", GPM.getMManager().getMessage(playSettings.isShowingParticles() ? "MusicGUI.music-options-true" : "MusicGUI.music-options-false")))); - // lpm.setLocalizedName("+e"); lpm.getPersistentDataContainer().set(localizedNameKey, PersistentDataType.STRING, "+e"); lp.setItemMeta(lpm); inventory.setItem(47, lp); @@ -399,25 +379,19 @@ public void setOptionsBar() { if(playSettings.getPlayList() != 2) { lp = new ItemStack(Material.DIAMOND); lpm = lp.getItemMeta(); - // lpm.setDisplayName(GPM.getMManager().getMessage("MusicGUI.music-options-join", "%Join%", GPM.getMManager().getMessage(playSettings.isPlayOnJoin() ? "MusicGUI.music-options-true" : "MusicGUI.music-options-false"))); lpm.displayName(Component.text(GPM.getMManager().getMessage("MusicGUI.music-options-join", "%Join%", GPM.getMManager().getMessage(playSettings.isPlayOnJoin() ? "MusicGUI.music-options-true" : "MusicGUI.music-options-false")))); - // lpm.setLocalizedName("+j"); lpm.getPersistentDataContainer().set(localizedNameKey, PersistentDataType.STRING, "+j"); lp.setItemMeta(lpm); inventory.setItem(48, lp); lp = new ItemStack(Material.BLAZE_POWDER); lpm = lp.getItemMeta(); - // lpm.setDisplayName(GPM.getMManager().getMessage(playSettings.getPlayMode() == 0 ? "MusicGUI.music-options-playmode-once" : playSettings.getPlayMode() == 1 ? "MusicGUI.music-options-playmode-shuffle" : "MusicGUI.music-options-playmode-repeat")); lpm.displayName(Component.text(GPM.getMManager().getMessage(playSettings.getPlayMode() == 0 ? "MusicGUI.music-options-playmode-once" : playSettings.getPlayMode() == 1 ? "MusicGUI.music-options-playmode-shuffle" : "MusicGUI.music-options-playmode-repeat"))); - // lpm.setLocalizedName("+s"); lpm.getPersistentDataContainer().set(localizedNameKey, PersistentDataType.STRING, "+s"); lp.setItemMeta(lpm); inventory.setItem(49, lp); lp = new ItemStack(Material.TOTEM_OF_UNDYING); lpm = lp.getItemMeta(); - // lpm.setDisplayName(GPM.getMManager().getMessage("MusicGUI.music-options-reverse", "%Reverse%", GPM.getMManager().getMessage(playSettings.isReverseMode() ? "MusicGUI.music-options-true" : "MusicGUI.music-options-false"))); lpm.displayName(Component.text(GPM.getMManager().getMessage("MusicGUI.music-options-reverse", "%Reverse%", GPM.getMManager().getMessage(playSettings.isReverseMode() ? "MusicGUI.music-options-true" : "MusicGUI.music-options-false")))); - // lpm.setLocalizedName("+q"); lpm.getPersistentDataContainer().set(localizedNameKey, PersistentDataType.STRING, "+q"); lp.setItemMeta(lpm); inventory.setItem(50, lp); @@ -426,9 +400,7 @@ public void setOptionsBar() { if(type == MenuType.JUKEBOX || type == MenuType.FULLJUKEBOX) { lp = new ItemStack(Material.REDSTONE); lpm = lp.getItemMeta(); - // lpm.setDisplayName(GPM.getMManager().getMessage("MusicGUI.music-options-range", "%Range%", "" + playSettings.getRange())); lpm.displayName(Component.text(GPM.getMManager().getMessage("MusicGUI.music-options-range", "%Range%", "" + playSettings.getRange()))); - // lpm.setLocalizedName("+r"); lpm.getPersistentDataContainer().set(localizedNameKey, PersistentDataType.STRING, "+r"); lp.setItemMeta(lpm); inventory.setItem(51, lp); @@ -443,9 +415,7 @@ public void setPlaylistBar() { ItemStack lp = new ItemStack(Material.CHEST); ItemMeta lpm = lp.getItemMeta(); - // lpm.setDisplayName(GPM.getMManager().getMessage("MusicGUI.music-back")); lpm.displayName(Component.text(GPM.getMManager().getMessage("MusicGUI.music-back"))); - // lpm.setLocalizedName("-"); lpm.getPersistentDataContainer().set(localizedNameKey, PersistentDataType.STRING, "-"); lp.setItemMeta(lpm); inventory.setItem(45, lp); @@ -453,9 +423,7 @@ public void setPlaylistBar() { if(playSettings.getPlayList() != 2) { lp = new ItemStack(Material.FEATHER); lpm = lp.getItemMeta(); - // lpm.setDisplayName(GPM.getMManager().getMessage("MusicGUI.music-playlist-skip")); lpm.displayName(Component.text(GPM.getMManager().getMessage("MusicGUI.music-playlist-skip"))); - // lpm.setLocalizedName("/l"); lpm.getPersistentDataContainer().set(localizedNameKey, PersistentDataType.STRING, "/l"); lp.setItemMeta(lpm); inventory.setItem(47, lp); @@ -463,9 +431,7 @@ public void setPlaylistBar() { lp = new ItemStack(Material.NOTE_BLOCK); lpm = lp.getItemMeta(); - // lpm.setDisplayName(GPM.getMManager().getMessage(playSettings.getPlayList() == 0 ? "MusicGUI.music-playlist-type-default" : playSettings.getPlayList() == 1 ? "MusicGUI.music-playlist-type-favorites" : "MusicGUI.music-playlist-type-radio")); lpm.displayName(Component.text(GPM.getMManager().getMessage(playSettings.getPlayList() == 0 ? "MusicGUI.music-playlist-type-default" : playSettings.getPlayList() == 1 ? "MusicGUI.music-playlist-type-favorites" : "MusicGUI.music-playlist-type-radio"))); - // lpm.setLocalizedName("%"); lpm.getPersistentDataContainer().set(localizedNameKey, PersistentDataType.STRING, "%"); lp.setItemMeta(lpm); inventory.setItem(49, lp); @@ -488,17 +454,11 @@ public void setPage(int Page) { Song s1 = songs.get(z); ItemStack is = new ItemStack(s1.getMaterial()); ItemMeta im = is.getItemMeta(); - // im.setDisplayName(GPM.getMManager().getMessage("MusicGUI.disc-title", "%Title%", s1.getTitle(), "%Author%", s1.getAuthor().isEmpty() ? GPM.getMManager().getMessage("MusicGUI.disc-empty-author") : s1.getAuthor(), "%OAuthor%", s1.getOriginalAuthor().isEmpty() ? GPM.getMManager().getMessage("MusicGUI.disc-empty-oauthor") : s1.getOriginalAuthor())); im.displayName(Component.text(GPM.getMManager().getMessage("MusicGUI.disc-title", "%Title%", s1.getTitle(), "%Author%", s1.getAuthor().isEmpty() ? GPM.getMManager().getMessage("MusicGUI.disc-empty-author") : s1.getAuthor(), "%OAuthor%", s1.getOriginalAuthor().isEmpty() ? GPM.getMManager().getMessage("MusicGUI.disc-empty-oauthor") : s1.getOriginalAuthor()))); - // List dl = new ArrayList<>(); ArrayList dl = new ArrayList<>(); - // for(String d : s1.getDescription()) dl.add(GPM.getMManager().toFormattedMessage("&6" + d)); for(String d : s1.getDescription()) dl.add(Component.text(GPM.getMManager().toFormattedMessage("&6" + d))); - // if(playSettings.getFavorites().contains(s1)) dl.add(GPM.getMManager().getMessage("MusicGUI.disc-favorite")); if(playSettings.getFavorites().contains(s1)) dl.add(Component.text(GPM.getMManager().getMessage("MusicGUI.disc-favorite"))); - // im.setLore(dl); im.lore(dl); - // im.setLocalizedName("=" + s1.getId()); im.getPersistentDataContainer().set(localizedNameKey, PersistentDataType.STRING, "=" + s1.getId()); im.addItemFlags(ItemFlag.values()); is.setItemMeta(im); @@ -509,16 +469,13 @@ public void setPage(int Page) { if(page > 1) { ItemStack lp = new ItemStack(Material.ARROW); ItemMeta lpm = lp.getItemMeta(); - // lpm.setDisplayName(GPM.getMManager().getMessage("MusicGUI.last-page")); lpm.displayName(Component.text(GPM.getMManager().getMessage("MusicGUI.last-page"))); - // lpm.setLocalizedName("!" + (page - 1)); lpm.getPersistentDataContainer().set(localizedNameKey, PersistentDataType.STRING, "!" + (page - 1)); lp.setItemMeta(lpm); inventory.setItem(52, lp); } else { ItemStack lp = new ItemStack(Material.BLACK_STAINED_GLASS_PANE); ItemMeta lpm = lp.getItemMeta(); - // lpm.setDisplayName(" "); lpm.displayName(Component.text(" ")); lp.setItemMeta(lpm); inventory.setItem(52, lp); @@ -527,16 +484,13 @@ public void setPage(int Page) { if(page < getMaxPageSize(songs)) { ItemStack lp = new ItemStack(Material.ARROW); ItemMeta lpm = lp.getItemMeta(); - // lpm.setDisplayName(GPM.getMManager().getMessage("MusicGUI.next-page")); lpm.displayName(Component.text(GPM.getMManager().getMessage("MusicGUI.next-page"))); - // lpm.setLocalizedName("!" + (page + 1)); lpm.getPersistentDataContainer().set(localizedNameKey, PersistentDataType.STRING, "!" + (page + 1)); lp.setItemMeta(lpm); inventory.setItem(53, lp); } else { ItemStack lp = new ItemStack(Material.BLACK_STAINED_GLASS_PANE); ItemMeta lpm = lp.getItemMeta(); - // lpm.setDisplayName(" "); lpm.displayName(Component.text(" ")); lp.setItemMeta(lpm); inventory.setItem(53, lp); From 2aeb49e2ebc35e7e0727a541888999c83e1c742d Mon Sep 17 00:00:00 2001 From: Diamondback88 <23108617+Diamondback88@users.noreply.github.com> Date: Fri, 13 Dec 2024 13:51:47 -0500 Subject: [PATCH 03/11] Add missing English lang file entries --- src/resources/lang/en_us.yml | 55 +++++++++++++++++++++++++++++++++++- 1 file changed, 54 insertions(+), 1 deletion(-) diff --git a/src/resources/lang/en_us.yml b/src/resources/lang/en_us.yml index 549bd62..606d1f8 100644 --- a/src/resources/lang/en_us.yml +++ b/src/resources/lang/en_us.yml @@ -37,4 +37,57 @@ Messages: actionbar-playing: "&aNow playing:&6 %SongTitle%&7 (&6%Song%&7)" actionbar-stop: "&aSong stopped" actionbar-pause: "&aSong paused" - actionbar-resume: "&aSong resumed" \ No newline at end of file + actionbar-resume: "&aSong resumed" + + + +MusicGUI: + + title: "&cJukebox" + + music-pause: "&6Pause" + music-resume: "&6Resume" + music-stop: "&6Stop" + music-random: "&6Random Song" + music-back: "&6Back" + + music-playlist: "&cPlaylist" + music-playlist-skip: "&6Skip Song" + music-playlist-type-default: "&aMode:&6 Default" + music-playlist-type-favorites: "&aMode:&6 Favorites" + music-playlist-type-radio: "&aMode:&6 Radio" + + music-options: "&cOptions" + music-options-volume: "&aVolume:&b %Volume%%" + music-options-join: "&aWelcomemusic:&6 %Join%" + music-options-playmode-once: "&aMode:&6 Once" + music-options-playmode-shuffle: "&aMode:&6 Shuffle" + music-options-playmode-repeat: "&aMode:&6 Repeat" + music-options-particle: "&aParticle:&6 %Particle%" + music-options-reverse: "&aReverse:&6 %Reverse%" + music-options-range: "&aRange:&b %Range%" + + music-options-true: "Yes" + music-options-false: "No" + + music-search-none: "&cSearch" + music-search: "&cSearch:&6 %Search%" + music-search-menu-title: "&cSearch for a Song" + music-search-menu-field: "Search" + + last-page: "&6Previous Page" + next-page: "&6Next Page" + + disc-title: "&b%Title%&7 -&6 %OAuthor%" + disc-empty-author: "Unknown" + disc-empty-oauthor: "Unknown" + disc-favorite: "&cFavorite" + + + +Items: + + jukebox-title: "&cJukeBox" + jukebox-description: "&aJukeBox, which allows\n&aplaying special Music!" + + disc-title: "&b%Title%&7 -&6 %OAuthor%" \ No newline at end of file From 303e1d68bd1106a009fae54f40af8263daef9c1e Mon Sep 17 00:00:00 2001 From: Diamondback88 <23108617+Diamondback88@users.noreply.github.com> Date: Fri, 13 Dec 2024 16:50:20 -0500 Subject: [PATCH 04/11] Fixed songs loading out of order in the GUI --- core/src/main/java/dev/geco/gmusic/manager/SongManager.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/core/src/main/java/dev/geco/gmusic/manager/SongManager.java b/core/src/main/java/dev/geco/gmusic/manager/SongManager.java index 69b46f4..a140ee6 100644 --- a/core/src/main/java/dev/geco/gmusic/manager/SongManager.java +++ b/core/src/main/java/dev/geco/gmusic/manager/SongManager.java @@ -86,6 +86,8 @@ public void loadSongs() { songs.add(song); }); + + songs.sort(Comparator.comparing(Song::getTitle)); } public void putMusicGUI(UUID UUID, MusicGUI MusicGUI) { getMusicGUIs().put(UUID, MusicGUI); } From 9b59d2170eeac02c2b07e98fd294deeeb373d636 Mon Sep 17 00:00:00 2001 From: Diamondback88 <23108617+Diamondback88@users.noreply.github.com> Date: Fri, 13 Dec 2024 17:05:24 -0500 Subject: [PATCH 05/11] Fix songs being sorted by uppercase/lowercase --- core/src/main/java/dev/geco/gmusic/manager/SongManager.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/src/main/java/dev/geco/gmusic/manager/SongManager.java b/core/src/main/java/dev/geco/gmusic/manager/SongManager.java index a140ee6..5d2a064 100644 --- a/core/src/main/java/dev/geco/gmusic/manager/SongManager.java +++ b/core/src/main/java/dev/geco/gmusic/manager/SongManager.java @@ -87,7 +87,7 @@ public void loadSongs() { songs.add(song); }); - songs.sort(Comparator.comparing(Song::getTitle)); + songs.sort(Comparator.comparing(Song::getTitle, String.CASE_INSENSITIVE_ORDER)); } public void putMusicGUI(UUID UUID, MusicGUI MusicGUI) { getMusicGUIs().put(UUID, MusicGUI); } From 112c900a6177204d39e308660b8c722286e6baf4 Mon Sep 17 00:00:00 2001 From: Diamondback88 <23108617+Diamondback88@users.noreply.github.com> Date: Sat, 14 Dec 2024 15:54:55 -0500 Subject: [PATCH 06/11] Fix parallelstream().forEach() causing race conditions, go back to using GPM as the plugin instance --- .../dev/geco/gmusic/manager/SongManager.java | 20 ++++++++----------- .../dev/geco/gmusic/objects/MusicGUI.java | 4 +--- 2 files changed, 9 insertions(+), 15 deletions(-) diff --git a/core/src/main/java/dev/geco/gmusic/manager/SongManager.java b/core/src/main/java/dev/geco/gmusic/manager/SongManager.java index 5d2a064..03b97c0 100644 --- a/core/src/main/java/dev/geco/gmusic/manager/SongManager.java +++ b/core/src/main/java/dev/geco/gmusic/manager/SongManager.java @@ -2,9 +2,9 @@ import java.io.*; import java.util.*; +import java.util.stream.Collectors; import net.kyori.adventure.text.Component; -import org.bukkit.Bukkit; import org.bukkit.NamespacedKey; import org.bukkit.inventory.*; import org.bukkit.inventory.meta.*; @@ -12,7 +12,6 @@ import dev.geco.gmusic.GMusicMain; import dev.geco.gmusic.objects.*; import org.bukkit.persistence.PersistentDataType; -import org.bukkit.plugin.Plugin; public class SongManager { @@ -20,10 +19,7 @@ public class SongManager { public SongManager(GMusicMain GPluginMain) { GPM = GPluginMain; } - // TODO: Make this actually use GPM - Plugin plugin = Bukkit.getPluginManager().getPlugin("GMusic"); - - private final List songs = new ArrayList<>(); + private List songs = new ArrayList<>(); private final HashMap musicGUIs = new HashMap<>(); @@ -63,14 +59,14 @@ public void loadSongs() { File songsDir = new File(GPM.getDataFolder(), "songs"); - Arrays.asList(Objects.requireNonNull(songsDir.listFiles())).parallelStream().forEach(file -> { + songs = Arrays.asList(Objects.requireNonNull(songsDir.listFiles())).parallelStream().map(file -> { int pos = file.getName().lastIndexOf("."); - if(pos <= 0 || !file.getName().substring(pos + 1).equalsIgnoreCase("gnbs")) return; + if(pos <= 0 || !file.getName().substring(pos + 1).equalsIgnoreCase("gnbs")) return null; Song song = new Song(file); - if(song.getNoteAmount() == 0) return; + if(song.getNoteAmount() == 0) return null; ArrayList description = new ArrayList<>(); for(String descriptionRow : song.getDescription()) description.add(Component.text(GPM.getMManager().getMessage(descriptionRow))); @@ -78,14 +74,14 @@ public void loadSongs() { ItemStack itemStack = new ItemStack(song.getMaterial()); ItemMeta itemMeta = itemStack.getItemMeta(); itemMeta.displayName(Component.text(GPM.getMManager().getMessage("Items.disc-title", "%Title%", song.getTitle(), "%Author%", song.getAuthor().isEmpty() ? GPM.getMManager().getMessage("MusicGUI.disc-empty-author") : song.getAuthor(), "%OAuthor%", song.getOriginalAuthor().isEmpty() ? GPM.getMManager().getMessage("MusicGUI.disc-empty-oauthor") : song.getOriginalAuthor()))); - NamespacedKey localizedNameKey = new NamespacedKey(plugin, "LocalizedName"); + NamespacedKey localizedNameKey = new NamespacedKey(GPM, "LocalizedName"); itemMeta.getPersistentDataContainer().set(localizedNameKey, PersistentDataType.STRING, GPM.NAME + "_D_" + song.getId()); itemMeta.lore(description); itemMeta.addItemFlags(ItemFlag.values()); itemStack.setItemMeta(itemMeta); - songs.add(song); - }); + return song; + }).collect(Collectors.toList()); songs.sort(Comparator.comparing(Song::getTitle, String.CASE_INSENSITIVE_ORDER)); } diff --git a/core/src/main/java/dev/geco/gmusic/objects/MusicGUI.java b/core/src/main/java/dev/geco/gmusic/objects/MusicGUI.java index 76a1c01..23fc615 100644 --- a/core/src/main/java/dev/geco/gmusic/objects/MusicGUI.java +++ b/core/src/main/java/dev/geco/gmusic/objects/MusicGUI.java @@ -4,7 +4,6 @@ import net.kyori.adventure.text.Component; import org.bukkit.persistence.PersistentDataType; -import org.bukkit.plugin.Plugin; import org.jetbrains.annotations.*; import org.bukkit.*; @@ -33,8 +32,7 @@ public class MusicGUI { private static final long RANGE_STEPS = 1; private static final long SHIFT_RANGE_STEPS = 10; - Plugin plugin = Bukkit.getPluginManager().getPlugin(GPM.NAME); - NamespacedKey localizedNameKey = new NamespacedKey(plugin, "LocalizedName"); + NamespacedKey localizedNameKey = new NamespacedKey(GPM, "LocalizedName"); public MusicGUI(UUID UUID, MenuType Type) { From 6a339c97634ca3d826009e0b1c1026f65b9a879f Mon Sep 17 00:00:00 2001 From: Diamondback88 <23108617+Diamondback88@users.noreply.github.com> Date: Fri, 20 Dec 2024 22:09:35 -0500 Subject: [PATCH 07/11] Fix F#5 (pitch 24) playing F#3 (pitch 0)'s sound when using the extended octaves resource pack --- core/src/main/java/dev/geco/gmusic/objects/NotePart.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/src/main/java/dev/geco/gmusic/objects/NotePart.java b/core/src/main/java/dev/geco/gmusic/objects/NotePart.java index 0cea449..c3476a0 100644 --- a/core/src/main/java/dev/geco/gmusic/objects/NotePart.java +++ b/core/src/main/java/dev/geco/gmusic/objects/NotePart.java @@ -49,7 +49,7 @@ public NotePart(Note Note, String NotePartString) { pitch = getPitch(noteKey); originalPitch = getOriginalPitch(noteKey); if(GMusicMain.getInstance().getCManager().S_EXTENDED_RANGE) { - if(originalPitch > 24) { + if(originalPitch >= 24) { sound += "_1"; } else if(originalPitch < 0) { sound += "_-1"; From eb0e22b0c0b399e60ee526531d2ac8aa059546d6 Mon Sep 17 00:00:00 2001 From: Diamondback88 <23108617+Diamondback88@users.noreply.github.com> Date: Sat, 21 Dec 2024 01:40:31 -0500 Subject: [PATCH 08/11] Fix notes outside of the extended octave range not mapping onto the same note in the next closest playable octave --- .../main/java/dev/geco/gmusic/objects/NotePart.java | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/core/src/main/java/dev/geco/gmusic/objects/NotePart.java b/core/src/main/java/dev/geco/gmusic/objects/NotePart.java index c3476a0..635e120 100644 --- a/core/src/main/java/dev/geco/gmusic/objects/NotePart.java +++ b/core/src/main/java/dev/geco/gmusic/objects/NotePart.java @@ -70,13 +70,16 @@ private float getPitch(int Note) { if(Note > 24) return 2f; return (float) Math.pow(2, ((float) (Note - 12) / 12)); } - if(Note < 0) { - if(Note < -24) Note = -24; + + if (Note < -24) { + Note = 36 + Note; + } else if (Note < 0) { Note = 24 + Note; - return (float) Math.pow(2, ((float) (Note - 12) / 12)); + } else if (Note < 48) { + Note = Note % 24; + } else { + Note = 12 + (Note % 24); } - if(Note > 48) Note = 48; - Note = Note % 24; return (float) Math.pow(2, ((float) (Note - 12) / 12)); } From 13095cf81724ff15de9cd578aee8270b61996a2d Mon Sep 17 00:00:00 2001 From: Diamondback88 <23108617+Diamondback88@users.noreply.github.com> Date: Sat, 21 Dec 2024 16:01:31 -0500 Subject: [PATCH 09/11] Fix .gnbs files not recording volume data + fix volume data not being compatible with the volume slider in the GUI --- .../java/dev/geco/gmusic/manager/BoxSongManager.java | 4 +++- .../main/java/dev/geco/gmusic/manager/NBSManager.java | 5 +++-- .../java/dev/geco/gmusic/manager/PlaySongManager.java | 2 +- .../java/dev/geco/gmusic/manager/RadioManager.java | 2 +- .../main/java/dev/geco/gmusic/objects/NotePart.java | 11 ++++------- 5 files changed, 12 insertions(+), 12 deletions(-) diff --git a/core/src/main/java/dev/geco/gmusic/manager/BoxSongManager.java b/core/src/main/java/dev/geco/gmusic/manager/BoxSongManager.java index a6fbbe8..3e6b579 100644 --- a/core/src/main/java/dev/geco/gmusic/manager/BoxSongManager.java +++ b/core/src/main/java/dev/geco/gmusic/manager/BoxSongManager.java @@ -82,7 +82,9 @@ private void playBoxTimer(UUID UUID, Song Song, Timer Timer) { if(np.getSound() != null) { - float v = np.isVariableVolume() ? (float) ((pl.get(P) - playSettings.getRange()) * playSettings.getFixedVolume() / (double) -playSettings.getRange()) : np.getVolume(); + float v = 1f; + // TODO: FIX THIS + // float v = np.isVariableVolume() ? (float) ((pl.get(P) - playSettings.getRange()) * playSettings.getFixedVolume() / (double) -playSettings.getRange()) : np.getVolume(); Location location = np.getDistance() == 0 ? P.getLocation() : GPM.getMusicUtil().getSteroNoteUtil().convertToStero(P.getLocation(), np.getDistance()); diff --git a/core/src/main/java/dev/geco/gmusic/manager/NBSManager.java b/core/src/main/java/dev/geco/gmusic/manager/NBSManager.java index ce8e62d..f3bddf0 100644 --- a/core/src/main/java/dev/geco/gmusic/manager/NBSManager.java +++ b/core/src/main/java/dev/geco/gmusic/manager/NBSManager.java @@ -69,14 +69,15 @@ public void convertFile(File NBSFile) { byte i = dataInput.readByte(); byte k = dataInput.readByte(); int p = 100; + int v = 1; if(version >= 4) { - dataInput.readByte(); + v = dataInput.readByte(); p = 200 - dataInput.readUnsignedByte(); readShort(dataInput); } - String contentPart = i + "::#" + (k - 33) + (p == 100 ? "" : ":" + p); + String contentPart = i + ":" + v + ":#" + (k - 33) + (p == 100 ? "" : ":" + p); content.append(content.toString().endsWith("!") ? contentPart : "_" + contentPart); diff --git a/core/src/main/java/dev/geco/gmusic/manager/PlaySongManager.java b/core/src/main/java/dev/geco/gmusic/manager/PlaySongManager.java index cb6b1e1..40a7a41 100644 --- a/core/src/main/java/dev/geco/gmusic/manager/PlaySongManager.java +++ b/core/src/main/java/dev/geco/gmusic/manager/PlaySongManager.java @@ -82,7 +82,7 @@ public void run() { if(np.getSound() != null) { - float volume = np.isVariableVolume() ? playSettings.getFixedVolume() : np.getVolume(); + float volume = playSettings.getFixedVolume() * np.getVolume(); Location location = np.getDistance() == 0 ? Player.getLocation() : GPM.getMusicUtil().getSteroNoteUtil().convertToStero(Player.getLocation(), np.getDistance()); diff --git a/core/src/main/java/dev/geco/gmusic/manager/RadioManager.java b/core/src/main/java/dev/geco/gmusic/manager/RadioManager.java index 6888699..2cba5d1 100644 --- a/core/src/main/java/dev/geco/gmusic/manager/RadioManager.java +++ b/core/src/main/java/dev/geco/gmusic/manager/RadioManager.java @@ -88,7 +88,7 @@ private void playTimer(Song S, Timer T) { PlaySettings ps1 = GPM.getPlaySettingsManager().getPlaySettings(P.getUniqueId()); - float v = np.isVariableVolume() ? ps1.getFixedVolume() : np.getVolume(); + float v = ps1.getFixedVolume() * np.getVolume(); Location L = np.getDistance() == 0 ? P.getLocation() : GPM.getMusicUtil().getSteroNoteUtil().convertToStero(P.getLocation(), np.getDistance()); diff --git a/core/src/main/java/dev/geco/gmusic/objects/NotePart.java b/core/src/main/java/dev/geco/gmusic/objects/NotePart.java index 635e120..434efd5 100644 --- a/core/src/main/java/dev/geco/gmusic/objects/NotePart.java +++ b/core/src/main/java/dev/geco/gmusic/objects/NotePart.java @@ -18,8 +18,6 @@ public class NotePart { private String stopSound; - private boolean variableVolume = false; - private float volume = 1f; private float pitch = 1f; @@ -38,9 +36,10 @@ public NotePart(Note Note, String NotePartString) { else stopSound = note.getSong().getInstruments().get(parts[0].replace(STOP, "")); if(sound == null || stopSound != null) return; - if(parts.length == 1 || parts[1].equals(VAR)) variableVolume = true; - else { - try { volume = Float.parseFloat(parts[1]); } catch(NumberFormatException ignored) { } + if(parts.length == 1 || parts[1].equals(VAR)) { + volume = 1f; + } else { + try { volume = Float.parseFloat(parts[1]) / 100f; } catch(NumberFormatException ignored) { } } if(parts.length > 2 && !parts[2].equals(VAR)) { @@ -102,8 +101,6 @@ private int getOriginalPitch(int Note) { public String getStopSound() { return stopSound; } - public boolean isVariableVolume() { return variableVolume; } - public float getVolume() { return volume; } public float getPitch() { return pitch; } From 8f1337d1634760be0ca4af8aaa2310cba35d5c78 Mon Sep 17 00:00:00 2001 From: Diamondback88 <23108617+Diamondback88@users.noreply.github.com> Date: Sun, 22 Dec 2024 01:13:48 -0500 Subject: [PATCH 10/11] Fix old NBS files playing very quietly --- core/src/main/java/dev/geco/gmusic/manager/NBSManager.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/src/main/java/dev/geco/gmusic/manager/NBSManager.java b/core/src/main/java/dev/geco/gmusic/manager/NBSManager.java index f3bddf0..9e3df57 100644 --- a/core/src/main/java/dev/geco/gmusic/manager/NBSManager.java +++ b/core/src/main/java/dev/geco/gmusic/manager/NBSManager.java @@ -69,7 +69,7 @@ public void convertFile(File NBSFile) { byte i = dataInput.readByte(); byte k = dataInput.readByte(); int p = 100; - int v = 1; + int v = 100; if(version >= 4) { v = dataInput.readByte(); From 26777bbf943d31c4c9d0c3fd80e1d27302f87383 Mon Sep 17 00:00:00 2001 From: Diamondback88 <23108617+Diamondback88@users.noreply.github.com> Date: Sun, 22 Dec 2024 02:08:56 -0500 Subject: [PATCH 11/11] Add support for layer-based volume and direction --- .../dev/geco/gmusic/manager/NBSManager.java | 97 ++++++++++++++++++- 1 file changed, 96 insertions(+), 1 deletion(-) diff --git a/core/src/main/java/dev/geco/gmusic/manager/NBSManager.java b/core/src/main/java/dev/geco/gmusic/manager/NBSManager.java index 9e3df57..1b56a51 100644 --- a/core/src/main/java/dev/geco/gmusic/manager/NBSManager.java +++ b/core/src/main/java/dev/geco/gmusic/manager/NBSManager.java @@ -55,6 +55,13 @@ public void convertFile(File NBSFile) { List gnbsContent = new ArrayList<>(); List gnbsInstruments = new ArrayList<>(); + // Get the volume and direction of each layer in the song + List layerVolumes = new ArrayList<>(); + List layerDirections = new ArrayList<>(); + getLayerInfo(NBSFile, header, layerVolumes, layerDirections); + + int layer = -1; + while(true) { short jt = readShort(dataInput); @@ -65,7 +72,11 @@ public void convertFile(File NBSFile) { while(true) { short jl = readShort(dataInput); - if(jl == 0) break; + if(jl == 0) { + layer = -1; + break; + } + layer = layer + jl; byte i = dataInput.readByte(); byte k = dataInput.readByte(); int p = 100; @@ -77,6 +88,13 @@ public void convertFile(File NBSFile) { readShort(dataInput); } + // Combine the layer volume with the noteblock volume + // If the layer panning is not center, combine the layer & noteblock direction + v = (layerVolumes.get(layer) * v) / 100; + if (layerDirections.get(layer) != 100) { + p = (layerDirections.get(layer) + p) / 2; + } + String contentPart = i + ":" + v + ":#" + (k - 33) + (p == 100 ? "" : ":" + p); content.append(content.toString().endsWith("!") ? contentPart : "_" + contentPart); @@ -166,4 +184,81 @@ private String readString(DataInputStream DataInput) throws IOException { return builder.toString(); } + private void getLayerInfo(File NBSFile, Short numLayers, + List layerVolumes, List layerDirections) { + try { + DataInputStream dataInput = new DataInputStream(Files.newInputStream(NBSFile.toPath())); + + // Skip through header section, we don't care about this + short type = readShort(dataInput); + int version = 0; + if(type == 0) { + version = dataInput.readByte(); + dataInput.readByte(); + if(version >= 3) readShort(dataInput); + } + readShort(dataInput); + readString(dataInput); + readString(dataInput); + readString(dataInput); + readString(dataInput); + readShort(dataInput); + dataInput.readBoolean(); + dataInput.readByte(); + dataInput.readByte(); + readInt(dataInput); + readInt(dataInput); + readInt(dataInput); + readInt(dataInput); + readInt(dataInput); + readString(dataInput); + if(version >= 4) { + dataInput.readByte(); + dataInput.readByte(); + readShort(dataInput); + } + + // Skip through note blocks section, we don't care about this either + while(true) { + + short jt = readShort(dataInput); + if(jt == 0) break; + + while(true) { + + short jl = readShort(dataInput); + if(jl == 0) { + break; + } + dataInput.readByte(); + dataInput.readByte(); + + if(version >= 4) { + dataInput.readByte(); + dataInput.readUnsignedByte(); + readShort(dataInput); + } + } + } + + // Get volume and direction of each layer + // This is the bit we actually care about + for(int layer = 0; layer < numLayers; layer++) { + readString(dataInput); + if(version >= 4) dataInput.readByte(); + + byte layerVolume = dataInput.readByte(); + layerVolumes.add(layerVolume); + + int layerDirection = 100; + if(version >= 2) { + layerDirection = 200 - dataInput.readUnsignedByte(); + } + layerDirections.add(layerDirection); + } + + } catch (Throwable e) { e.printStackTrace(); } + + } + } \ No newline at end of file