From f450a2de5b17f37cc9aed6f52fbd716e2bfdd32a Mon Sep 17 00:00:00 2001 From: ayunami2000 Date: Thu, 21 Apr 2022 15:11:07 -0400 Subject: [PATCH] finish messages --- .../me/ayunami2000/ayunEagVidMap/Main.java | 34 +++++++++++++------ src/main/resources/config.yml | 9 +++-- src/main/resources/messages.yml | 15 +++++--- 3 files changed, 40 insertions(+), 18 deletions(-) diff --git a/src/main/java/me/ayunami2000/ayunEagVidMap/Main.java b/src/main/java/me/ayunami2000/ayunEagVidMap/Main.java index 9f7881a..d076b28 100644 --- a/src/main/java/me/ayunami2000/ayunEagVidMap/Main.java +++ b/src/main/java/me/ayunami2000/ayunEagVidMap/Main.java @@ -14,6 +14,7 @@ import org.bukkit.util.Vector; public class Main extends JavaPlugin implements CommandExecutor, Listener { //todo: add queue command + store audio loc world & dont send to players in other worlds??? //todo: also when holding video map play audio at player location for that player + //todo: reload config command public static Main plugin; @@ -22,6 +23,9 @@ public class Main extends JavaPlugin implements CommandExecutor, Listener { private String url = ""; private boolean urlChanged = true; private int syncTask = -1; + private final int[] mapSize = {1, 1}; + private int mapSizeCap = 10; + private int mapOffset = 0; @Override public void onLoad(){ @@ -35,7 +39,9 @@ public class Main extends JavaPlugin implements CommandExecutor, Listener { audioLoc.setX(this.getConfig().getDouble("audio.x")); audioLoc.setY(this.getConfig().getDouble("audio.y")); audioLoc.setZ(this.getConfig().getDouble("audio.z")); - setSize(this.getConfig().getInt("width"), this.getConfig().getInt("width")); + mapSizeCap = this.getConfig().getInt("size.cap"); + mapOffset = this.getConfig().getInt("offset"); + setSize(this.getConfig().getInt("size.width"), this.getConfig().getInt("size.height")); url = this.getConfig().getString("url"); syncTask = this.getServer().getScheduler().scheduleSyncRepeatingTask(this, this::syncToAllPlayers, 10000, 10000); // sync every 10 seconds this.getCommand("ayunvid").setExecutor(this); @@ -61,8 +67,14 @@ public class Main extends JavaPlugin implements CommandExecutor, Listener { } private void setSize(int width, int height) { + if (mapSizeCap > 0) { + width = Math.min(width, mapSizeCap); + height = Math.min(height, mapSizeCap); + } + mapSize[0] = width; + mapSize[1] = height; int[][] mapIds = new int[height][width]; - int offset = this.getConfig().getInt("offset"); + int offset = mapOffset; for (int y = 0; y < mapIds.length; y++) { for (int x = 0; x < mapIds[y].length; x++) { mapIds[y][x] = offset++; @@ -123,7 +135,7 @@ public class Main extends JavaPlugin implements CommandExecutor, Listener { offendingIndex++; z = Double.parseDouble(args[3]); } catch(NumberFormatException e) { - MessageHandler.sendPrefixedMessage(sender, "notANumber", args[offendingIndex]); + MessageHandler.sendPrefixedMessage(sender, "notANumber", args[offendingIndex], MessageHandler.getMessage("double")); break; } audioLoc.setX(x + 0.5); @@ -159,28 +171,30 @@ public class Main extends JavaPlugin implements CommandExecutor, Listener { case "s": case "size": if (args.length < 3) { - sender.sendMessage("must specify width & height to set! current vals are..."); + MessageHandler.sendPrefixedMessage(sender, "currentSize", mapSize[0], mapSize[1], mapSize[0] * mapSize[1]); break; } int width; int height; + int offendingIndex = 1; try { width = Math.max(1, Integer.parseInt(args[1])); + offendingIndex++; height = Math.max(1, Integer.parseInt(args[2])); } catch(NumberFormatException e) { - sender.sendMessage(""); + MessageHandler.sendPrefixedMessage(sender, "notANumber", args[offendingIndex], MessageHandler.getMessage("integer")); break; } - this.getConfig().set("width", width); - this.getConfig().set("height", height); - this.saveConfig(); sendToAllPlayers(videoMapCodec.disableVideoBukkit()); setSize(width, height); syncToAllPlayers(); - sender.sendMessage("set width & height"); + this.getConfig().set("width", mapSize[0]); + this.getConfig().set("height", mapSize[1]); + this.saveConfig(); + MessageHandler.sendPrefixedMessage(sender, "setSize", mapSize[0], mapSize[1], mapSize[0] * mapSize[1]); break; default: - sender.sendMessage("invalid"); + MessageHandler.sendPrefixedMessage(sender, "invalidUsage"); } return true; } diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml index 94fdd79..a6041ee 100644 --- a/src/main/resources/config.yml +++ b/src/main/resources/config.yml @@ -1,8 +1,11 @@ # URL of video to play url: "" -# screen size -width: 3 -height: 2 +# screen size, in maps +size: + width: 1 + height: 1 + # maximum width/height accepted internally (set to 0 or less to disable) + cap: 10 # map ID offset offset: 0 # audio location diff --git a/src/main/resources/messages.yml b/src/main/resources/messages.yml index 4a59600..238fa70 100644 --- a/src/main/resources/messages.yml +++ b/src/main/resources/messages.yml @@ -2,16 +2,21 @@ prefix: "&9&l[&b&l&oayun&d&lEVM&9&l] &r" usage: - "&3&nUsage:" - "&7&o/ayunvid [h|help] &3- Show this message." - - "&7&o/ayunvid &3- Specify the video URL to use. (Must be CORS-compatible!)" - - "&7&o/ayunvid [x y z] &3- Specify the location that the audio will come from." - - "&7&o/ayunvid &3- Toggle playback of the video." - - "&7&o/ayunvid &3- Set size of video, in maps. E.g. a width of 2 and a height of 3 would result in a video using 6 maps." + - "&7&o/ayunvid [url] &3- Specify the video URL to use, or get the current one. &l(Must be CORS-compatible!)" + - "&7&o/ayunvid [x y z] &3- Specify the location that the audio will come from. If no arguments are supplied, this will default to the sender's position." + - "&7&o/ayunvid &3- Toggle playback of the video. This also loads the new video after the video URL is changed." + - "&7&o/ayunvid [ ]&3- Sets or gets the size of video, in maps. E.g., a width of 2 and a height of 3 would result in a video using 6 maps." currentUrl: "&3Current URL: {0}" setUrl: "&3Successfully set URL." locFromConsole: "&cError: You must specify the coordinates when running this command from the console!" locCurrent: "&3Using current location..." -notANumber: "&cError: \"{0}\" is not a valid number!" +notANumber: "&cError: \"{0}\" is not a valid {1}!" +double: "number" +integer: "integer" locSet: "&3Successfully set audio location. ({0})" playing: "&3Loading and playing video..." resuming: "&3Resuming video..." pausing: "&3Pausing video..." +currentSize: "&3Current size: {0} maps wide by {1} maps tall ({2} maps total)" +setSize: "&3Set size to {0} maps wide by {1} maps tall ({2} maps total)" +invalidUsage: "&cError: That is not a valid subcommand! Try &n/ayunvid&c help for usage." \ No newline at end of file