diff --git a/gradle.properties b/gradle.properties index 19b549d..a9a39d1 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,6 +1,6 @@ org.gradle.jvmargs=-Xmx2G -java_version=22 +java_version=17 mp3spi_version=1.9.5.4 diff --git a/src/main/java/me/Navoei/customdiscsplugin/HopperManager.java b/src/main/java/me/Navoei/customdiscsplugin/HopperManager.java index 073f49c..ea9c5ab 100644 --- a/src/main/java/me/Navoei/customdiscsplugin/HopperManager.java +++ b/src/main/java/me/Navoei/customdiscsplugin/HopperManager.java @@ -94,7 +94,7 @@ public class HopperManager implements Listener { public void onChunkLoad(ChunkLoadEvent event) { for (BlockState blockState : event.getChunk().getTileEntities()) { if (blockState instanceof Jukebox jukebox) { - if (!PlayerManager.instance().isAudioPlayerPlaying(blockState.getLocation()) && !jukebox.isPlaying()) { + if (!PlayerManager.instance().isAudioPlayerPlaying(blockState.getLocation()) && isCustomMusicDisc(jukebox.getRecord())) { discToHopper(blockState.getBlock()); } } diff --git a/src/main/java/me/Navoei/customdiscsplugin/YoutubePlayerManager.java b/src/main/java/me/Navoei/customdiscsplugin/YoutubePlayerManager.java index 32d5b24..430c8a7 100644 --- a/src/main/java/me/Navoei/customdiscsplugin/YoutubePlayerManager.java +++ b/src/main/java/me/Navoei/customdiscsplugin/YoutubePlayerManager.java @@ -1,4 +1,5 @@ package me.Navoei.customdiscsplugin; public class YoutubePlayerManager { + //Work in progress. } diff --git a/src/main/java/me/Navoei/customdiscsplugin/command/CommandManager.java b/src/main/java/me/Navoei/customdiscsplugin/command/CommandManager.java index c7717c6..25fd962 100644 --- a/src/main/java/me/Navoei/customdiscsplugin/command/CommandManager.java +++ b/src/main/java/me/Navoei/customdiscsplugin/command/CommandManager.java @@ -1,12 +1,16 @@ package me.Navoei.customdiscsplugin.command; +import me.Navoei.customdiscsplugin.CustomDiscs; import me.Navoei.customdiscsplugin.command.SubCommands.CreateCommand; import me.Navoei.customdiscsplugin.command.SubCommands.DownloadCommand; +import net.kyori.adventure.text.Component; +import net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer; import org.bukkit.ChatColor; import org.bukkit.command.Command; import org.bukkit.command.CommandExecutor; import org.bukkit.command.CommandSender; import org.bukkit.command.TabCompleter; +import org.bukkit.configuration.file.FileConfiguration; import org.bukkit.entity.Player; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -40,11 +44,14 @@ public class CommandManager implements CommandExecutor, TabCompleter { } } } else { - player.sendMessage(ChatColor.AQUA + "----[ Custom Discs ]----"); - for (int i = 0; i < getSubCommands().size(); i++) { - player.sendMessage(getSubCommands().get(i).getSyntax() + ChatColor.DARK_GRAY + " - " + getSubCommands().get(i).getDescription()); + + FileConfiguration config = CustomDiscs.getInstance().getConfig(); + List messagesList = config.getStringList("help"); + for (String s : messagesList) { + Component textComponent = LegacyComponentSerializer.legacyAmpersand().deserialize(s); + player.sendMessage(textComponent); } - player.sendMessage(ChatColor.AQUA + "---------------------"); + return true; } diff --git a/src/main/java/me/Navoei/customdiscsplugin/command/SubCommands/CreateCommand.java b/src/main/java/me/Navoei/customdiscsplugin/command/SubCommands/CreateCommand.java index b913a1a..49ed3bd 100644 --- a/src/main/java/me/Navoei/customdiscsplugin/command/SubCommands/CreateCommand.java +++ b/src/main/java/me/Navoei/customdiscsplugin/command/SubCommands/CreateCommand.java @@ -2,10 +2,12 @@ package me.Navoei.customdiscsplugin.command.SubCommands; import me.Navoei.customdiscsplugin.CustomDiscs; import me.Navoei.customdiscsplugin.command.SubCommand; +import me.Navoei.customdiscsplugin.language.Lang; import net.kyori.adventure.text.Component; import net.kyori.adventure.text.TextComponent; import net.kyori.adventure.text.format.NamedTextColor; import net.kyori.adventure.text.format.TextDecoration; +import net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer; import org.bukkit.ChatColor; import org.bukkit.Material; import org.bukkit.NamespacedKey; @@ -35,7 +37,7 @@ public class CreateCommand extends SubCommand { @Override public String getSyntax() { - return ChatColor.GREEN + "/customdisc create \"Custom Lore\""; + return "/customdisc create \"Custom Lore\""; } @Override @@ -44,22 +46,25 @@ public class CreateCommand extends SubCommand { if (args.length >= 3) { if (!player.hasPermission("customdiscs.create")) { - player.sendMessage(ChatColor.RED + "You do not have permission to execute this command!"); + Component textComponent = LegacyComponentSerializer.legacyAmpersand().deserialize(Lang.NO_PERMISSION.toString()); + player.sendMessage(textComponent); return; } // /cd create test.mp3 "test" // [0] [1] [2] //Find file, if file not there then say "file not there" - String songname = ""; + String song_name = ""; String filename = args[1]; if (filename.contains("../")) { - player.sendMessage(ChatColor.RED + "This is an invalid filename!"); + Component textComponent = LegacyComponentSerializer.legacyAmpersand().deserialize(Lang.INVALID_FILENAME.toString()); + player.sendMessage(textComponent); return; } if (customName(readQuotes(args)).equalsIgnoreCase("")) { - player.sendMessage(ChatColor.RED + "You must provide a name for your disc."); + Component textComponent = LegacyComponentSerializer.legacyAmpersand().deserialize(Lang.NO_DISC_NAME_PROVIDED.toString()); + player.sendMessage(textComponent); return; } @@ -67,13 +72,15 @@ public class CreateCommand extends SubCommand { File songFile = new File(getDirectory.getPath(), filename); if (songFile.exists()) { if (getFileExtension(filename).equals("wav") || getFileExtension(filename).equals("mp3") || getFileExtension(filename).equals("flac")) { - songname = args[1]; + song_name = args[1]; } else { - player.sendMessage(ChatColor.RED + "File is not in wav, flac, or mp3 format!"); + Component textComponent = LegacyComponentSerializer.legacyAmpersand().deserialize(Lang.INVALID_FORMAT.toString()); + player.sendMessage(textComponent); return; } } else { - player.sendMessage(ChatColor.RED + "File not found!"); + Component textComponent = LegacyComponentSerializer.legacyAmpersand().deserialize(Lang.FILE_NOT_FOUND.toString()); + player.sendMessage(textComponent); return; } @@ -95,14 +102,17 @@ public class CreateCommand extends SubCommand { player.getInventory().getItemInMainHand().setItemMeta(meta); - player.sendMessage("Your filename is: " + ChatColor.GRAY + songname); - player.sendMessage("Your custom name is: " + ChatColor.GRAY + customName(readQuotes(args))); - + Component textComponentFileName = LegacyComponentSerializer.legacyAmpersand().deserialize(Lang.CREATE_FILENAME.toString().replace("%filename%", song_name)); + Component textComponentCustomName = LegacyComponentSerializer.legacyAmpersand().deserialize(Lang.CREATE_CUSTOM_NAME.toString().replace("%custom_name%", customName(readQuotes(args)))); + player.sendMessage(textComponentFileName); + player.sendMessage(textComponentCustomName); } else { - player.sendMessage(ChatColor.RED + "Insufficient arguments! ( /customdisc create \"Custom Lore\" )"); + Component textComponent = LegacyComponentSerializer.legacyAmpersand().deserialize(Lang.INVALID_ARGUMENTS.toString().replace("%command_syntax", getSyntax())); + player.sendMessage(textComponent); } } else { - player.sendMessage(ChatColor.RED + "You are not holding a music disc in your main hand!"); + Component textComponent = LegacyComponentSerializer.legacyAmpersand().deserialize(Lang.NOT_HOLDING_DISC.toString()); + player.sendMessage(textComponent); } } diff --git a/src/main/java/me/Navoei/customdiscsplugin/command/SubCommands/DownloadCommand.java b/src/main/java/me/Navoei/customdiscsplugin/command/SubCommands/DownloadCommand.java index 2a6c237..160faa5 100644 --- a/src/main/java/me/Navoei/customdiscsplugin/command/SubCommands/DownloadCommand.java +++ b/src/main/java/me/Navoei/customdiscsplugin/command/SubCommands/DownloadCommand.java @@ -2,6 +2,9 @@ package me.Navoei.customdiscsplugin.command.SubCommands; import me.Navoei.customdiscsplugin.CustomDiscs; import me.Navoei.customdiscsplugin.command.SubCommand; +import me.Navoei.customdiscsplugin.language.Lang; +import net.kyori.adventure.text.Component; +import net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer; import org.bukkit.Bukkit; import org.bukkit.ChatColor; import org.bukkit.entity.Player; @@ -29,7 +32,7 @@ public class DownloadCommand extends SubCommand { @Override public String getSyntax() { - return ChatColor.GREEN + "/customdisc download "; + return "/customdisc download "; } @Override @@ -38,12 +41,14 @@ public class DownloadCommand extends SubCommand { // [0] [1] [2] if (!player.hasPermission("customdiscs.download")) { - player.sendMessage(ChatColor.RED + "You do not have permission to execute this command!"); + Component textComponent = LegacyComponentSerializer.legacyAmpersand().deserialize(Lang.NO_PERMISSION.toString()); + player.sendMessage(textComponent); return; } if (args.length!=3) { - player.sendMessage(ChatColor.RED + "Invalid arguments! ( /customdisc download )"); + Component textComponent = LegacyComponentSerializer.legacyAmpersand().deserialize(Lang.INVALID_ARGUMENTS.toString().replace("%command_syntax", getSyntax())); + player.sendMessage(textComponent); return; } @@ -52,18 +57,21 @@ public class DownloadCommand extends SubCommand { URL fileURL = new URL(args[1]); String filename = args[2]; if (filename.contains("../")) { - player.sendMessage(ChatColor.RED + "This is an invalid filename!"); + Component textComponent = LegacyComponentSerializer.legacyAmpersand().deserialize(Lang.INVALID_FILENAME.toString()); + player.sendMessage(textComponent); return; } System.out.println(filename); if (!getFileExtension(filename).equals("wav") && !getFileExtension(filename).equals("mp3") && !getFileExtension(filename).equals("flac")) { - player.sendMessage(ChatColor.RED + "The file must have an extension of wav, flac, or mp3!"); + Component textComponent = LegacyComponentSerializer.legacyAmpersand().deserialize(Lang.INVALID_FORMAT.toString()); + player.sendMessage(textComponent); return; } - player.sendMessage(ChatColor.GRAY + "Downloading file..."); + Component textComponent = LegacyComponentSerializer.legacyAmpersand().deserialize(Lang.DOWNLOADING_FILE.toString()); + player.sendMessage(textComponent); Path downloadPath = Path.of(customDiscs.getDataFolder().getPath(), "musicdata", filename); File downloadFile = new File(downloadPath.toUri()); @@ -72,17 +80,22 @@ public class DownloadCommand extends SubCommand { if (connection != null) { long size = connection.getContentLengthLong() / 1048576; if (size > customDiscs.getConfig().getInt("max-download-size", 50)) { - player.sendMessage(ChatColor.RED + "The file is larger than " + customDiscs.getConfig().getInt("max-download-size", 50) + "MB."); + Component textComponent2 = LegacyComponentSerializer.legacyAmpersand().deserialize(Lang.FILE_TOO_LARGE.toString().replace("%max_download_size%", String.valueOf(customDiscs.getConfig().getInt("max-download-size", 50)))); + player.sendMessage(textComponent2); return; } } FileUtils.copyURLToFile(fileURL, downloadFile); - player.sendMessage(ChatColor.GREEN + "File successfully downloaded to " + ChatColor.GRAY + "plugins/CustomDiscs/musicdata/"+ filename + ChatColor.GREEN + " ."); - player.sendMessage(ChatColor.GREEN + "Create a disc by doing " + ChatColor.GRAY + "/cd create "+filename+" \"Custom Lore\" " + ChatColor.GREEN + "."); + Component fileDownloaded = LegacyComponentSerializer.legacyAmpersand().deserialize(Lang.SUCCESSFUL_DOWNLOAD.toString().replace("%file_path%", "plugins/CustomDiscs/musicdata/" + filename)); + Component createDisc = LegacyComponentSerializer.legacyAmpersand().deserialize(Lang.CREATE_DISC.toString().replace("%filename%", filename)); + + player.sendMessage(fileDownloaded); + player.sendMessage(createDisc); } catch (IOException e) { - player.sendMessage(ChatColor.RED + "An error has occurred while downloading."); + Component textComponent = LegacyComponentSerializer.legacyAmpersand().deserialize(Lang.DOWNLOAD_ERROR.toString()); + player.sendMessage(textComponent); e.printStackTrace(); } }); diff --git a/src/main/java/me/Navoei/customdiscsplugin/event/JukeBox.java b/src/main/java/me/Navoei/customdiscsplugin/event/JukeBox.java index e638fa3..ebbad8a 100644 --- a/src/main/java/me/Navoei/customdiscsplugin/event/JukeBox.java +++ b/src/main/java/me/Navoei/customdiscsplugin/event/JukeBox.java @@ -4,6 +4,7 @@ import me.Navoei.customdiscsplugin.CustomDiscs; import me.Navoei.customdiscsplugin.ParticleManager; import me.Navoei.customdiscsplugin.PlayerManager; import me.Navoei.customdiscsplugin.VoicePlugin; +import me.Navoei.customdiscsplugin.language.Lang; import net.kyori.adventure.text.Component; import net.kyori.adventure.text.TextComponent; import net.kyori.adventure.text.format.NamedTextColor; @@ -53,9 +54,10 @@ public class JukeBox implements Listener{ Component songNameComponent = Objects.requireNonNull(event.getItem().getItemMeta().lore()).get(0).asComponent(); String songName = PlainTextComponentSerializer.plainText().serialize(songNameComponent); + String content = Lang.NOW_PLAYING.toString().replace("%song_name%", songName); TextComponent customActionBarSongPlaying = Component.text() - .content("Now Playing: " + songName) + .content(content) .color(NamedTextColor.GOLD) .build(); diff --git a/src/main/java/me/Navoei/customdiscsplugin/language/Lang.java b/src/main/java/me/Navoei/customdiscsplugin/language/Lang.java index 88bbd59..69512d1 100644 --- a/src/main/java/me/Navoei/customdiscsplugin/language/Lang.java +++ b/src/main/java/me/Navoei/customdiscsplugin/language/Lang.java @@ -4,7 +4,22 @@ import org.bukkit.ChatColor; import org.bukkit.configuration.file.YamlConfiguration; public enum Lang { - PREFIX("text", "text"); + PREFIX("prefix", "&8[&6CustomDiscs&8]&r"), + NO_PERMISSION("no-permission", "&rYou do not have permission to execute this command."), + INVALID_FILENAME("invalid-filename", "&rThis is an invalid filename!"), + NO_DISC_NAME_PROVIDED("no-disc-name-provided", "&rYou must provide a name for your disc."), + INVALID_FORMAT("invalid-format", "&rFile must be in wav, flac, or mp3 format!"), + FILE_NOT_FOUND("file-not-found", "&rFile not found!"), + INVALID_ARGUMENTS("invalid-arguments", "&rInsufficient arguments. &7(&a%command_syntax%&7)"), + NOT_HOLDING_DISC("not-holding-disc", "&rYou must hold a disc in your main hand."), + CREATE_FILENAME("create-filename", "&7Your filename is: &a\"%filename%\"."), + CREATE_CUSTOM_NAME("create-custom-name", "&7Your custom name is: &a\"%custom_name%\"."), + DOWNLOADING_FILE("downloading-file", "&7Downloading file..."), + FILE_TOO_LARGE("file-too-large", "&rThe file is larger than %max_download_size%MB."), + SUCCESSFUL_DOWNLOAD("successful-download", "&aFile successfully downloaded to &7%file_path%&a."), + CREATE_DISC("create-disc", "&aCreate a disc by doing &7/cd create filename.extension \"Custom Lore\"&a."), + DOWNLOAD_ERROR("download-error", "&rAn error has occurred while downloading."), + NOW_PLAYING("now-playing","&6Now playing: %song_name%"); private final String path; private final String def; @@ -31,8 +46,8 @@ public enum Lang { @Override public String toString() { if (this == PREFIX) - return ChatColor.translateAlternateColorCodes('&', LANG.getString(this.path, def)) + " "; - return ChatColor.translateAlternateColorCodes('&', LANG.getString(this.path, def)); + return LANG.getString(this.path, def) + " "; + return LANG.getString(this.path, def); } /** @@ -50,4 +65,7 @@ public enum Lang { public String getPath() { return this.path; } + + //Component textComponent = LegacyComponentSerializer.legacyAmpersand().deserialize(PlaceholderAPI.setPlaceholders(player, Lang.PREFIX + Lang.COMBAT.toString())); + //player.sendMessage(textComponent); } diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml index 54ba534..ed57bc6 100644 --- a/src/main/resources/config.yml +++ b/src/main/resources/config.yml @@ -7,4 +7,10 @@ music-disc-distance: 16 music-disc-volume: 1 #The maximum download size in megabytes. -max-download-size: 50 \ No newline at end of file +max-download-size: 50 + +#Custom Discs Help Page +help: + - "&8-[&6CustomDiscs Help Page&8]-" + - "&aAuthor&7: &6Navoei" + - "&fGit&0Hub&7: &9&ohttps://github.com/Navoei/CustomDiscs" \ No newline at end of file diff --git a/src/main/resources/lang.yml b/src/main/resources/lang.yml index e69de29..1db8453 100644 --- a/src/main/resources/lang.yml +++ b/src/main/resources/lang.yml @@ -0,0 +1,16 @@ +prefix: "&8[&6CustomDiscs&8]&r" +no-permission: "&rYou do not have permission to execute this command." +invalid-filename: "&rThis is an invalid filename!" +no-disc-name-provided: "&rYou must provide a name for your disc." +invalid-format: "&rFile must be in wav, flac, or mp3 format!" +file-not-found: "&rFile not found!" +invalid-arguments: "&rInvalid arguments. &7(&a%command_syntax%&7)" +not-holding-disc: "&rYou must hold a disc in your main hand." +create-filename: "&7Your filename is: &a\"%filename%\"." +create-custom-name: "&7Your custom name is: &a\"%custom_name%\"." +downloading-file: "&7Downloading file..." +file-too-large: "&rThe file is larger than %max_download_size%MB." +successful-download: "&aFile successfully downloaded to &7%file_path%&a." +create-disc: "&aCreate a disc by doing &7/cd create %filename% \"Custom Lore\"&a." +download-error: "&rAn error has occurred while downloading." +now-playing: "&6Now playing: %song_name%"