From 620be20c10cac84cce95a485372e0935d6d6c98b Mon Sep 17 00:00:00 2001 From: MeexReay Date: Sun, 24 Mar 2024 13:57:37 +0300 Subject: [PATCH] commit message --- README.md | 21 +++++++++----- pom.xml | 2 +- .../ru.froggymonitor/rewardplugin/Main.java | 28 +++++++++++-------- .../ru.froggymonitor/rewardplugin/Reward.java | 17 ++++++----- src/main/resources/config.yml | 13 +++++++-- 5 files changed, 49 insertions(+), 32 deletions(-) diff --git a/README.md b/README.md index b4f8d40..380740b 100644 --- a/README.md +++ b/README.md @@ -8,7 +8,7 @@ bind_host: 0.0.0.0 # Локальный IP адрес сервера (обычно такой же как и в server.properties) bind_port: 8080 # Свободный порт для сайта (потребуется открыть его на хостинге) -external_host: example.com # Внешний IP адрес / домен сервера +external_host: example.com # Внешний IP адрес или домен сервера secret_token: "ваш_секретный_токен" # Секретный токен с FroggyMonitor @@ -19,23 +19,30 @@ vote: # Награда за голос commands: # Исполнить команды - "/title {player_name} subtitle на FroggyMonitor" - "/title {player_name} title Спасибо за отзыв!" - # Каждый параметр наград не обязателен + as_player: # Исполнить команды или написать сообщение в чат от лица игрока + - "Я проголосовал за сервер и получил награду" + - "/me купит себе ламборгини на 10$ с награды" + + # Каждый параметр наград не обязателен, но не должен использоваться больше 1 раза + # Указывать предмет вот так: "{название_предмета} {кол_во}" add_comment: # Награда за удаление отзыва vault: 10 message: "Спасибо за отзыв!" + # Тут могут использоваться все параметры из наград за голоса del_comment: # Награда за удаление отзыва - vault: -10 # Снять валюту + vault: -10 + # Тут могут использоваться все параметры из наград за голоса enable_logs: true # Включить логи плагина (true/false); true - вкл; false - выкл message_formatting: "ampersand" # Изменить тип форматирования сообщений # Типы форматирования: - # ampersand: &cСообщение - # section: §cСообщение - # minimessage: Сообщение - # json: {"text": "Сообщение", "color": "red"} + # ampersand: &cСообщение + # section: §cСообщение + # minimessage: Сообщение +# json: {"text": "Сообщение", "color": "red"} ``` ## Как это работает diff --git a/pom.xml b/pom.xml index 31af942..638be19 100755 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ ru.froggymonitor rewardplugin - 1.3 + 1.4 jar FroggyMonitorReward diff --git a/src/main/java/ru.froggymonitor/rewardplugin/Main.java b/src/main/java/ru.froggymonitor/rewardplugin/Main.java index dd67752..939ec62 100755 --- a/src/main/java/ru.froggymonitor/rewardplugin/Main.java +++ b/src/main/java/ru.froggymonitor/rewardplugin/Main.java @@ -1,5 +1,7 @@ package ru.froggymonitor.rewardplugin; +import me.clip.placeholderapi.PlaceholderAPI; +import net.md_5.bungee.api.chat.BaseComponent; import net.milkbowl.vault.economy.Economy; import org.bukkit.Bukkit; import org.bukkit.OfflinePlayer; @@ -57,19 +59,13 @@ public final class Main extends JavaPlugin implements Listener { public File cache_file; + public boolean has_placeholderapi; + public boolean has_vault; + @Override public void onEnable() { - if (!setupEconomy()) { - getLogger().severe("[FroggyMonitorReward] - Disabled due to no Vault dependency found!"); - getServer().getPluginManager().disablePlugin(this); - return; - } - - if (Bukkit.getPluginManager().getPlugin("PlaceholderAPI") == null) { - getLogger().severe("[FroggyMonitorReward] - Disabled due to no PlaceholderAPI dependency found!"); - getServer().getPluginManager().disablePlugin(this); - return; - } + has_vault = setupEconomy(); + has_placeholderapi = Bukkit.getPluginManager().getPlugin("PlaceholderAPI") != null; me = this; @@ -108,8 +104,8 @@ public final class Main extends JavaPlugin implements Listener { @Override public void onDisable() { - site.stop(); saveCache(); + site.stop(); } @EventHandler @@ -193,4 +189,12 @@ public final class Main extends JavaPlugin implements Listener { throw new RuntimeException(e); } } + + public BaseComponent[] formatMessage(Player player, String text) { + return Main.me.message_formatting.format(has_placeholderapi ? PlaceholderAPI.setPlaceholders(player, text) : text); + } + + public void giveVault(OfflinePlayer player, double amount) { + if (has_vault) econ.depositPlayer(player, amount); + } } diff --git a/src/main/java/ru.froggymonitor/rewardplugin/Reward.java b/src/main/java/ru.froggymonitor/rewardplugin/Reward.java index ef44d6b..d9dec4d 100644 --- a/src/main/java/ru.froggymonitor/rewardplugin/Reward.java +++ b/src/main/java/ru.froggymonitor/rewardplugin/Reward.java @@ -26,14 +26,8 @@ public class Reward { Player player = Bukkit.getPlayer(nickname); if (player != null) { - if (data.containsKey("item")) { - String[] ss = ((String)data.get("item")).split(" "); - ItemStack item = new ItemStack(Material.valueOf(ss[0].toUpperCase()), ss.length == 1 ? 1 : Integer.parseInt(ss[1])); - player.getInventory().addItem(item); - } - if (data.containsKey("message")) { - player.spigot().sendMessage(Main.me.message_formatting.format(PlaceholderAPI.setPlaceholders(player, (String) data.get("message")))); - } + later(player); + } else { Main.me.cache.put(nickname, name); } @@ -41,7 +35,7 @@ public class Reward { if (offlinePlayer != null) { if (data.containsKey("vault")) { - Main.me.econ.depositPlayer(offlinePlayer, + Main.me.giveVault(offlinePlayer, ((Number) data.get("vault")).doubleValue()); } if (data.containsKey("commands")) { @@ -62,5 +56,10 @@ public class Reward { if (data.containsKey("message")) { player.spigot().sendMessage(Main.me.message_formatting.format(PlaceholderAPI.setPlaceholders(player, (String) data.get("message")))); } + if (data.containsKey("as_player")) { + for (String c : new ArrayList<>((List) data.get("as_player"))) { + player.chat(c); + } + } } } diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml index 8b2b054..6d366bb 100755 --- a/src/main/resources/config.yml +++ b/src/main/resources/config.yml @@ -1,7 +1,7 @@ bind_host: 0.0.0.0 # Локальный IP адрес сервера (обычно такой же как и в server.properties) bind_port: 8080 # Свободный порт для сайта (потребуется открыть его на хостинге) -external_host: example.com # Внешний IP адрес / домен сервера +external_host: example.com # Внешний IP адрес или домен сервера secret_token: "ваш_секретный_токен" # Секретный токен с FroggyMonitor @@ -12,14 +12,21 @@ vote: # Награда за голос commands: # Исполнить команды - "/title {player_name} subtitle на FroggyMonitor" - "/title {player_name} title Спасибо за отзыв!" - # Каждый параметр наград не обязателен + as_player: # Исполнить команды или написать сообщение в чат от лица игрока + - "Я проголосовал за сервер и получил награду" + - "/me купит себе ламборгини на 10$ с награды" + + # Каждый параметр наград не обязателен, но не должен использоваться больше 1 раза + # Указывать предмет вот так: "{название_предмета} {кол_во}" add_comment: # Награда за удаление отзыва vault: 10 message: "Спасибо за отзыв!" + # Тут могут использоваться все параметры из наград за голоса del_comment: # Награда за удаление отзыва - vault: -10 # Снять валюту + vault: -10 + # Тут могут использоваться все параметры из наград за голоса enable_logs: true # Включить логи плагина (true/false); true - вкл; false - выкл