From 78f5c0c45ab316cbf356298444dd83350969c5c6 Mon Sep 17 00:00:00 2001 From: Default Date: Tue, 29 Dec 2020 16:33:25 +0100 Subject: [PATCH 01/19] Add start_server.bat --- start_server.bat | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 start_server.bat diff --git a/start_server.bat b/start_server.bat new file mode 100644 index 0000000..c9bfcf8 --- /dev/null +++ b/start_server.bat @@ -0,0 +1,2 @@ +cd Server_1.16.4 +call start.bat \ No newline at end of file From 897eab70920fb8d9a2f5ce3299f9510f3546600b Mon Sep 17 00:00:00 2001 From: Default Date: Tue, 29 Dec 2020 16:47:24 +0100 Subject: [PATCH 02/19] ignore edited --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index 4788b4b..d114e02 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,6 @@ # User-specific stuff .idea/ +!.idea/libraries *.iml *.ipr From 2c616a8b2075e82b0c4b7962179b4a69acd14fa8 Mon Sep 17 00:00:00 2001 From: Default Date: Tue, 29 Dec 2020 16:47:47 +0100 Subject: [PATCH 03/19] ignore edited --- .gitignore | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index d114e02..8653ab6 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,6 @@ # User-specific stuff .idea/ -!.idea/libraries +!.idea/libraries/ *.iml *.ipr From 51232da9e3714a4cef040e35eb5ccd6a219ce4a2 Mon Sep 17 00:00:00 2001 From: Default Date: Tue, 29 Dec 2020 16:48:33 +0100 Subject: [PATCH 04/19] ignore edited --- .gitignore | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 8653ab6..d87367e 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,6 @@ # User-specific stuff .idea/ -!.idea/libraries/ +!.idea/libraries/* *.iml *.ipr From 120d1d094048d9e6faf623072557a8285a2a6d5d Mon Sep 17 00:00:00 2001 From: Default Date: Tue, 29 Dec 2020 16:49:20 +0100 Subject: [PATCH 05/19] ignore edited --- .gitignore | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index d87367e..acc2a9c 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,6 @@ # User-specific stuff .idea/ -!.idea/libraries/* +!.idea/libraries/spigot.xml *.iml *.ipr From 024911eeddd7f98e03c5d297f1adddcf7c60743e Mon Sep 17 00:00:00 2001 From: Default Date: Tue, 29 Dec 2020 16:50:38 +0100 Subject: [PATCH 06/19] ignore edited --- .gitignore | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index acc2a9c..344b8aa 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,5 @@ # User-specific stuff .idea/ -!.idea/libraries/spigot.xml *.iml *.ipr @@ -112,3 +111,5 @@ buildNumber.properties # Common working directory run/ + +!.idea/libraries/spigot.xml \ No newline at end of file From 8699316c6584120123fadf927d701d600da1ceb0 Mon Sep 17 00:00:00 2001 From: Default Date: Tue, 29 Dec 2020 16:51:27 +0100 Subject: [PATCH 07/19] ignore edited --- .gitignore | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 344b8aa..87b87b5 100644 --- a/.gitignore +++ b/.gitignore @@ -112,4 +112,4 @@ buildNumber.properties # Common working directory run/ -!.idea/libraries/spigot.xml \ No newline at end of file +!.idea/libraries \ No newline at end of file From efa9ea6022ca6e562d2ae7cd90c09431ec0eea38 Mon Sep 17 00:00:00 2001 From: Default Date: Tue, 29 Dec 2020 16:54:18 +0100 Subject: [PATCH 08/19] ignore edited --- .gitignore | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 87b87b5..233ffc2 100644 --- a/.gitignore +++ b/.gitignore @@ -112,4 +112,4 @@ buildNumber.properties # Common working directory run/ -!.idea/libraries \ No newline at end of file +!*/.idea/libraries/* \ No newline at end of file From 14091cea5d78bcdeeac3a6300e9c9d947dc7f84c Mon Sep 17 00:00:00 2001 From: Default Date: Tue, 29 Dec 2020 16:55:25 +0100 Subject: [PATCH 09/19] added library --- .idea/libraries/spigot..xml | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 .idea/libraries/spigot..xml diff --git a/.idea/libraries/spigot..xml b/.idea/libraries/spigot..xml new file mode 100644 index 0000000..d145115 --- /dev/null +++ b/.idea/libraries/spigot..xml @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file From 777d8f611111a71998937b0b3b8ce8640e5cf383 Mon Sep 17 00:00:00 2001 From: Default Date: Tue, 29 Dec 2020 16:57:17 +0100 Subject: [PATCH 10/19] edited ignore --- .gitignore | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/.gitignore b/.gitignore index 233ffc2..4c327ea 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,6 @@ # User-specific stuff .idea/ +!.idea/ *.iml *.ipr @@ -110,6 +111,4 @@ buildNumber.properties .flattened-pom.xml # Common working directory -run/ - -!*/.idea/libraries/* \ No newline at end of file +run/ \ No newline at end of file From 1ebad79dd1272f195bbea8b0056adf5437e80315 Mon Sep 17 00:00:00 2001 From: Default Date: Tue, 29 Dec 2020 16:58:09 +0100 Subject: [PATCH 11/19] edited ignore --- .gitignore | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.gitignore b/.gitignore index 4c327ea..6cd0569 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,8 @@ # User-specific stuff .idea/ !.idea/ +.idea/* +!*/.idea/libraries/* *.iml *.ipr From 78cfd40d1e651cfc08fcf9536963eb8bd146d6b5 Mon Sep 17 00:00:00 2001 From: Default Date: Tue, 29 Dec 2020 16:58:30 +0100 Subject: [PATCH 12/19] edited ignore --- .gitignore | 2 -- 1 file changed, 2 deletions(-) diff --git a/.gitignore b/.gitignore index 6cd0569..bd91d42 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,4 @@ # User-specific stuff -.idea/ -!.idea/ .idea/* !*/.idea/libraries/* From 5111c418bd33fc787788ead6bfb664df218534d1 Mon Sep 17 00:00:00 2001 From: Default Date: Tue, 29 Dec 2020 17:02:14 +0100 Subject: [PATCH 13/19] edited ignore --- .gitignore | 2 +- .idea/libraries/spigot..xml | 11 ----------- 2 files changed, 1 insertion(+), 12 deletions(-) delete mode 100644 .idea/libraries/spigot..xml diff --git a/.gitignore b/.gitignore index bd91d42..3851cbc 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,6 @@ # User-specific stuff .idea/* -!*/.idea/libraries/* +!*/.idea/libraries/spigot.xml *.iml *.ipr diff --git a/.idea/libraries/spigot..xml b/.idea/libraries/spigot..xml deleted file mode 100644 index d145115..0000000 --- a/.idea/libraries/spigot..xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - \ No newline at end of file From c471be9e99d7cef0aceb2568eefc60d0a1fdf7cb Mon Sep 17 00:00:00 2001 From: Default Date: Tue, 29 Dec 2020 17:02:40 +0100 Subject: [PATCH 14/19] new library file --- .idea/libraries/spigot.xml | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 .idea/libraries/spigot.xml diff --git a/.idea/libraries/spigot.xml b/.idea/libraries/spigot.xml new file mode 100644 index 0000000..08c5cd5 --- /dev/null +++ b/.idea/libraries/spigot.xml @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file From 318dd4a9d9fcda473cb35ba2d95ee6fb3a3c1b0c Mon Sep 17 00:00:00 2001 From: Default Date: Tue, 29 Dec 2020 17:05:07 +0100 Subject: [PATCH 15/19] made settings ready for 1.16.1 --- .idea/libraries/spigot.xml | 4 ++-- deploy.bat | 2 +- deploy.sh | 2 +- start_server.bat | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/.idea/libraries/spigot.xml b/.idea/libraries/spigot.xml index 08c5cd5..183b9fb 100644 --- a/.idea/libraries/spigot.xml +++ b/.idea/libraries/spigot.xml @@ -1,11 +1,11 @@ - + - + \ No newline at end of file diff --git a/deploy.bat b/deploy.bat index 60eeadd..661b3b9 100644 --- a/deploy.bat +++ b/deploy.bat @@ -1 +1 @@ -xcopy IntelliJ_IDEA\Sharehealth\target\Sharehealth.jar Minecraft_Servers\Server_1.16.4\plugins\ /Y \ No newline at end of file +xcopy IntelliJ_IDEA\Sharehealth\target\Sharehealth.jar Minecraft_Servers\Server_1.16.1\plugins\ /Y \ No newline at end of file diff --git a/deploy.sh b/deploy.sh index a5b65b5..459f1b6 100644 --- a/deploy.sh +++ b/deploy.sh @@ -1 +1 @@ -cp IntelliJ_IDEA/Sharehealth_1.16.4/target/sharehealth-1.0-SNAPSHOT.jar Minecraft_Servers/Server_1.16.4/plugins/ +cp IntelliJ_IDEA/Sharehealth_1.16.1/target/Sharehealth.jar Minecraft_Servers/Server_1.16.1/plugins/ diff --git a/start_server.bat b/start_server.bat index c9bfcf8..16a4d5f 100644 --- a/start_server.bat +++ b/start_server.bat @@ -1,2 +1,2 @@ -cd Server_1.16.4 +cd Server_1.16.1 call start.bat \ No newline at end of file From 0c4de37532434057d912fc715b4b786ca79d60fe Mon Sep 17 00:00:00 2001 From: Default Date: Tue, 29 Dec 2020 17:17:07 +0100 Subject: [PATCH 16/19] lang to lang3 --- src/main/java/com/benjocraeft/sharehealth/Commands.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/benjocraeft/sharehealth/Commands.java b/src/main/java/com/benjocraeft/sharehealth/Commands.java index ca48f2a..6b4667e 100644 --- a/src/main/java/com/benjocraeft/sharehealth/Commands.java +++ b/src/main/java/com/benjocraeft/sharehealth/Commands.java @@ -1,7 +1,7 @@ package com.benjocraeft.sharehealth; import org.bukkit.command.CommandExecutor; -import org.apache.commons.lang.math.NumberUtils; +import org.apache.commons.lang3.math.NumberUtils; import org.bukkit.Bukkit; import org.bukkit.ChatColor; import org.bukkit.command.Command; From 1c0f4b6d44544b4f30a8fc0361822b05103079f7 Mon Sep 17 00:00:00 2001 From: Default Date: Tue, 29 Dec 2020 17:47:59 +0100 Subject: [PATCH 17/19] changes --- plugin.yml | 2 +- .../java/com/benjocraeft/sharehealth/Commands.java | 12 +++++++++--- .../com/benjocraeft/sharehealth/Sharehealth.java | 6 +++++- 3 files changed, 15 insertions(+), 5 deletions(-) diff --git a/plugin.yml b/plugin.yml index 16d6899..5f6807a 100644 --- a/plugin.yml +++ b/plugin.yml @@ -10,4 +10,4 @@ commands: sharehealth: usage: / aliases: [sh] - description: Defined by ShareHealth plugin \ No newline at end of file + description: Commands to control the Sharehealth System added by the Plugin \ No newline at end of file diff --git a/src/main/java/com/benjocraeft/sharehealth/Commands.java b/src/main/java/com/benjocraeft/sharehealth/Commands.java index 6b4667e..6415661 100644 --- a/src/main/java/com/benjocraeft/sharehealth/Commands.java +++ b/src/main/java/com/benjocraeft/sharehealth/Commands.java @@ -1,14 +1,21 @@ package com.benjocraeft.sharehealth; -import org.bukkit.command.CommandExecutor; import org.apache.commons.lang3.math.NumberUtils; import org.bukkit.Bukkit; import org.bukkit.ChatColor; import org.bukkit.command.Command; import org.bukkit.command.CommandSender; +import org.bukkit.command.TabExecutor; import org.bukkit.entity.Player; -public class Commands implements CommandExecutor { +import java.util.List; + +public class Commands implements TabExecutor { + + @Override + public List onTabComplete(CommandSender commandSender, Command command, String s, String[] strings) { + return null; + } @Override public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args){ @@ -129,5 +136,4 @@ public class Commands implements CommandExecutor { String msg = "Unknown command, use help."; sender.sendMessage(msg); } - } diff --git a/src/main/java/com/benjocraeft/sharehealth/Sharehealth.java b/src/main/java/com/benjocraeft/sharehealth/Sharehealth.java index a22ae22..fe8d572 100644 --- a/src/main/java/com/benjocraeft/sharehealth/Sharehealth.java +++ b/src/main/java/com/benjocraeft/sharehealth/Sharehealth.java @@ -2,6 +2,7 @@ package com.benjocraeft.sharehealth; import org.bukkit.*; import org.bukkit.block.Block; +import org.bukkit.command.PluginCommand; import org.bukkit.entity.*; import org.bukkit.event.entity.EntityDamageEvent.DamageCause; import org.bukkit.event.entity.EntityRegainHealthEvent.RegainReason; @@ -60,7 +61,10 @@ public class Sharehealth extends JavaPlugin { //Register Events and Commands Bukkit.getPluginManager().registerEvents(new PlayerListeners(), this); - Objects.requireNonNull(getCommand("sharehealth")).setExecutor(new Commands()); + Commands commands = new Commands(); + PluginCommand pluginCommand = Objects.requireNonNull(getCommand("sharehealth")); + pluginCommand.setExecutor(commands); + pluginCommand.setTabCompleter(commands); //Ready to go getLogger().info("ShareHealth has been enabled!"); From 63ab4e3a826c91c7b90a6697f8058f603c622b83 Mon Sep 17 00:00:00 2001 From: Default Date: Tue, 29 Dec 2020 18:52:35 +0100 Subject: [PATCH 18/19] added tab completion for commands --- .../com/benjocraeft/sharehealth/Commands.java | 39 ++++++++++++++++++- 1 file changed, 38 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/benjocraeft/sharehealth/Commands.java b/src/main/java/com/benjocraeft/sharehealth/Commands.java index 6415661..04a99ea 100644 --- a/src/main/java/com/benjocraeft/sharehealth/Commands.java +++ b/src/main/java/com/benjocraeft/sharehealth/Commands.java @@ -7,14 +7,51 @@ import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.command.TabExecutor; import org.bukkit.entity.Player; +import org.bukkit.util.StringUtil; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collections; import java.util.List; public class Commands implements TabExecutor { + final private String[] mainSchema = { + "get", "set", "reset", "log" + }; + + final private String[] hasSecondSchema = { + "log", + "get" + }; + + final private String[][] secondSchema = { + { + "on", "off" + }, + { + "max" + } + }; + @Override public List onTabComplete(CommandSender commandSender, Command command, String s, String[] strings) { - return null; + List list = new ArrayList<>(); + + if (strings.length == 1){ + StringUtil.copyPartialMatches(strings[0], Arrays.asList(mainSchema), list); + } + if (strings.length == 2){ + List hasSecondSchemaList = Arrays.asList(hasSecondSchema); + if (hasSecondSchemaList.contains(strings[0])){ + int index = hasSecondSchemaList.indexOf(strings[0]); + List checkList = Arrays.asList(secondSchema[index]); + StringUtil.copyPartialMatches(strings[1], checkList, list); + } + } + + + return list; } @Override From 609039978eb8d451ce4fb91ca645472dbb141308 Mon Sep 17 00:00:00 2001 From: Default Date: Wed, 30 Dec 2020 00:58:49 +0100 Subject: [PATCH 19/19] better commands --- plugin.yml | 1 - .../com/benjocraeft/sharehealth/Commands.java | 160 ++++++------------ .../benjocraeft/sharehealth/Messenger.java | 66 ++++++-- 3 files changed, 99 insertions(+), 128 deletions(-) diff --git a/plugin.yml b/plugin.yml index 5f6807a..8c035d3 100644 --- a/plugin.yml +++ b/plugin.yml @@ -8,6 +8,5 @@ website: https://mc.benjocraeft.com commands: sharehealth: - usage: / aliases: [sh] description: Commands to control the Sharehealth System added by the Plugin \ No newline at end of file diff --git a/src/main/java/com/benjocraeft/sharehealth/Commands.java b/src/main/java/com/benjocraeft/sharehealth/Commands.java index 04a99ea..51e45be 100644 --- a/src/main/java/com/benjocraeft/sharehealth/Commands.java +++ b/src/main/java/com/benjocraeft/sharehealth/Commands.java @@ -1,6 +1,6 @@ package com.benjocraeft.sharehealth; -import org.apache.commons.lang3.math.NumberUtils; +import io.netty.util.concurrent.ImmediateEventExecutor; import org.bukkit.Bukkit; import org.bukkit.ChatColor; import org.bukkit.command.Command; @@ -9,31 +9,53 @@ import org.bukkit.command.TabExecutor; import org.bukkit.entity.Player; import org.bukkit.util.StringUtil; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Collections; -import java.util.List; +import java.util.*; +import java.util.function.Consumer; public class Commands implements TabExecutor { final private String[] mainSchema = { - "get", "set", "reset", "log" + "get", "reset", "log", "stats", "help" }; final private String[] hasSecondSchema = { - "log", - "get" + "log" }; final private String[][] secondSchema = { { "on", "off" - }, - { - "max" } }; + final private Map, Pair, String>> commands = new HashMap<>(); + { + commands.put( + Arrays.asList("get"), + Pair.pair(this::commandGetHealth, "Displays current health value.") + ); + commands.put( + Arrays.asList("reset"), + Pair.pair(this::commandReset, "Gives every player full health and resets 'isFailed' to false. GameMode becomes Survival.") + ); + commands.put( + Arrays.asList("log", "on"), + Pair.pair(sender -> this.commandSetLogging(sender, true), "Activates permanent player Logging about Damage and Healing.") + ); + commands.put( + Arrays.asList("log", "off"), + Pair.pair(sender -> this.commandSetLogging(sender, false), "Deactivates permanent player Logging about Damage and Healing.") + ); + commands.put( + Arrays.asList("stats"), + Pair.pair(this::commandSendStats, "Displays statistics about every player.") + ); + commands.put( + Arrays.asList("help"), + Pair.pair(this::commandGetHelp, "Displays help message for command usage.") + ); + } + @Override public List onTabComplete(CommandSender commandSender, Command command, String s, String[] strings) { List list = new ArrayList<>(); @@ -50,127 +72,47 @@ public class Commands implements TabExecutor { } } - return list; } @Override public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args){ - if (args.length != 0){ - if (args[0].equalsIgnoreCase("reset")){ - commandSetHealth(20, true); - } - else if (args[0].equalsIgnoreCase("set")){ - if (args.length > 1){ - if (NumberUtils.isNumber(args[1])){ - double num = NumberUtils.createDouble(args[1]); - commandSetHealth(num); - } else if (args[1].equalsIgnoreCase("max")){ - if (args.length > 2){ - if (NumberUtils.isNumber(args[2])){ - double num = NumberUtils.createDouble(args[2]); - commandSetMaxHealth(num); - } - } - } - } - } - else if (args[0].equalsIgnoreCase("get")){ - if (args.length > 1){ - if (args[1].equalsIgnoreCase("max")){ - if (args.length > 2){ - if (args[2].equalsIgnoreCase("raw")){ - commandGetMaxHealth(sender, true); - } - } else { - commandGetMaxHealth(sender, false); - } - } - } else { - commandGetHealth(sender); - } - - } - else if (args[0].equalsIgnoreCase("log")){ - if (args.length > 1){ - if (args[1].equalsIgnoreCase("off")){ - commandSetLogging(false); - } - if (args[1].equalsIgnoreCase("on")){ - commandSetLogging(true); - } - } - } - else if(args[0].equalsIgnoreCase("stats")){ - commandSendStats(); - } - else if (args[0].equalsIgnoreCase("help")){ - commandGetHelp(sender); - } else { - unknownCommand(sender); - } - } else { - commandGetHelp(sender); - } + List argList = Arrays.asList(args); + Pair, String> command = commands.get(argList); + if (command == null) + command = Pair.pair(this::unknownCommand, ""); + command.first.accept(sender); return true; } - private void commandSetMaxHealth(double health){ - - } - - private void commandSetHealth(double health, boolean reset){ - Sharehealth.Instance.getHealthManager().setHealth(health); - if (reset){ - Sharehealth.Instance.reset(); - } - } - - private void commandSetHealth(double health){ - commandSetHealth(health, false); + private void commandReset(CommandSender sender){ + Sharehealth.Instance.reset(); } private void commandGetHealth(CommandSender sender){ - sender.sendMessage("Current health: " + Sharehealth.Instance.getHealthManager().getHealthString()); + String message = "Current health: " + Sharehealth.Instance.getHealthManager().getHealthString(); + sender.sendMessage(message); } - private void commandGetMaxHealth(CommandSender sender, boolean raw){ - - } - - private void commandSetLogging(boolean log){ + private void commandSetLogging(CommandSender sender, boolean log){ Sharehealth.Instance.getMessenger().setLogging(log); + //TODO Set by user } - private void commandSendStats(){ - StringBuilder stats = new StringBuilder("Statistics:\n"); - Sharehealth.Instance.getStatistics().getStatistics().forEach(((uuid, values) -> { - Player player = Bukkit.getPlayer(uuid); - if (player != null){ - String playerName = player.getDisplayName(); - String stat = ChatColor.AQUA + playerName + ChatColor.WHITE + - ": Damage caused: " + ChatColor.RED + String.format("%.2f", values.first) + ChatColor.WHITE + - " Healing done: " + ChatColor.GREEN + String.format("%.2f", values.second) + "\n"; - stats.append(stat); - } - })); - Bukkit.getOnlinePlayers().forEach((Player p) -> p.sendMessage(stats.toString())); + private void commandSendStats(CommandSender sender){ + String message = Sharehealth.Instance.getMessenger().statisticsMessage(); + sender.sendMessage(message); } private void commandGetHelp(CommandSender sender){ - String help = "Usage:\n" + - "get -> returns current globally shared health\n" + - "set [number] -> sets new globally shared health\n" + - "reset -> heals every player and resets 'isFailed' to false\n" + - "log [on/off] -> activates/deactivates player log messages about damage and healings" + - "stats -> sends everyone statistics for every player"; - sender.sendMessage(help); + String message = Sharehealth.Instance.getMessenger().helpMessage(commands); + sender.sendMessage(message); } private void unknownCommand(CommandSender sender){ - String msg = "Unknown command, use help."; - sender.sendMessage(msg); + String message = "Unknown command. Type \"/sh help\" for help."; + sender.sendMessage(message); } } diff --git a/src/main/java/com/benjocraeft/sharehealth/Messenger.java b/src/main/java/com/benjocraeft/sharehealth/Messenger.java index c03f5a7..01f5de3 100644 --- a/src/main/java/com/benjocraeft/sharehealth/Messenger.java +++ b/src/main/java/com/benjocraeft/sharehealth/Messenger.java @@ -2,17 +2,18 @@ package com.benjocraeft.sharehealth; import org.bukkit.Bukkit; import org.bukkit.ChatColor; -import org.bukkit.GameMode; import org.bukkit.block.Block; +import org.bukkit.command.CommandSender; import org.bukkit.entity.Entity; import org.bukkit.entity.Player; import org.bukkit.entity.Projectile; -import org.bukkit.event.entity.EntityDamageEvent; import org.bukkit.event.entity.EntityDamageEvent.DamageCause; -import org.bukkit.event.entity.EntityRegainHealthEvent; import org.bukkit.event.entity.EntityRegainHealthEvent.RegainReason; +import java.util.List; +import java.util.Map; import java.util.Objects; +import java.util.function.Consumer; import java.util.logging.Logger; public class Messenger { @@ -36,10 +37,8 @@ public class Messenger { } void sendFailedMessage(Player cause){ - Bukkit.getOnlinePlayers().forEach(p -> { - String message = "Mission failed, go next! CAUSE: " + ChatColor.RED + cause.getDisplayName(); - p.sendMessage(message); - }); + String message = "Mission failed, go next! CAUSE: " + ChatColor.RED + cause.getDisplayName(); + Bukkit.getOnlinePlayers().forEach(p -> p.sendMessage(message)); } void onPlayerGotDamageMessage(Player player, double damage, DamageCause cause){ @@ -63,15 +62,6 @@ public class Messenger { Bukkit.getOnlinePlayers().forEach(p -> p.sendMessage(message)); } - private String damageMessage(Player player, double damage){ - String playerS = player.getDisplayName(); - String damageS = String.format("%.2f", damage / 2); - return ChatColor.AQUA + playerS - + ChatColor.WHITE + " shared " - + ChatColor.RED + damageS - + ChatColor.WHITE + " hearts damage!"; - } - private String damageMessage(Player player, double damage, DamageCause cause){ return damageMessage(player, damage) + ChatColor.YELLOW + " Cause: " + cause; } @@ -96,15 +86,55 @@ public class Messenger { return damageMessage(player, damage) + ChatColor.YELLOW + " Block: " + name; } + private String damageMessage(Player player, double damage){ + String playerS = player.getDisplayName(); + String damageS = String.format("%.2f", damage / 2); + return ChatColor.BLUE + playerS + + ChatColor.WHITE + " shared " + + ChatColor.RED + damageS + + ChatColor.WHITE + " hearts damage!"; + } + private String healMessage(Player player, double regainedHealth, RegainReason reason){ String playerS = player.getDisplayName(); - String healingS = Double.toString(regainedHealth / 2); + String healingS = String.format("%.2f", regainedHealth / 2); String causeS = reason.toString(); - return ChatColor.AQUA + playerS + return ChatColor.BLUE + playerS + ChatColor.WHITE + " shared " + ChatColor.GREEN + healingS + ChatColor.WHITE + " hearts healing!" + ChatColor.YELLOW + " Cause: " + causeS; } + String statisticsMessage(){ + StringBuilder stats = new StringBuilder("Statistics:"); + Sharehealth.Instance.getStatistics().getStatistics().forEach(((uuid, values) -> { + Player currentPlayer = Bukkit.getPlayer(uuid); + if (currentPlayer != null){ + String playerName = currentPlayer.getDisplayName(); + String stat = "\n" + ChatColor.BLUE + playerName + + ChatColor.WHITE + ": Damage caused: " + + ChatColor.RED + String.format("%.2f", values.first / 2) + + ChatColor.WHITE + " || Healing done: " + + ChatColor.GREEN + String.format("%.2f", values.second / 2); + stats.append(stat); + } + })); + return stats.toString(); + } + + String helpMessage(Map, Pair, String>> commands){ + StringBuilder helpMessage = new StringBuilder("Usage:"); + commands.forEach((nameList, pair) -> { + StringBuilder name = new StringBuilder(); + nameList.forEach(str -> name.append(str).append(" ")); + + String description = pair.second; + helpMessage.append("\n"). + append(ChatColor.AQUA).append(name). + append(ChatColor.WHITE).append("-> ").append(description); + }); + return helpMessage.toString(); + } + }