From fbd47a49af2a68bef1d147c4b73e549613ea4553 Mon Sep 17 00:00:00 2001 From: zhangyuheng Date: Thu, 6 Jun 2024 10:49:27 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=8C=E6=88=90=E4=BA=86=E5=AF=B9bukkit?= =?UTF-8?q?=E7=9A=84=E9=80=82=E9=85=8D=EF=BC=8C=E4=BC=98=E5=8C=96=E4=BA=86?= =?UTF-8?q?=E7=BB=8F=E6=B5=8E=E7=B3=BB=E7=BB=9F=E7=9A=84=E5=AE=9E=E7=8E=B0?= =?UTF-8?q?=E6=96=B9=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 6 -- src/main/java/cn/lunadeer/dominion/Cache.java | 1 - .../java/cn/lunadeer/dominion/Dominion.java | 11 +--- .../cn/lunadeer/dominion/VaultConnect.java | 62 ------------------- .../dominion/commands/DominionOperate.java | 5 +- .../controllers/DominionController.java | 46 +++++++++----- .../dominion/controllers/FlagsController.java | 2 - .../controllers/PrivilegeController.java | 2 - .../cn/lunadeer/dominion/events/Apis.java | 3 - .../dominion/events/EnvironmentEvents.java | 1 - .../dominion/events/PlayerEvents.java | 1 - .../dominion/events/SelectPointEvents.java | 7 ++- .../dominion/managers/ConfigManager.java | 2 + .../java/cn/lunadeer/dominion/tuis/Apis.java | 1 - .../dominion/tuis/DominionPrivilegeList.java | 1 - src/main/resources/plugin.yml | 2 + 16 files changed, 45 insertions(+), 108 deletions(-) delete mode 100644 src/main/java/cn/lunadeer/dominion/VaultConnect.java diff --git a/pom.xml b/pom.xml index fcfa863..6d5e786 100644 --- a/pom.xml +++ b/pom.xml @@ -90,11 +90,5 @@ v2.6.2 provided - - com.github.MilkBowl - VaultAPI - 1.7 - provided - diff --git a/src/main/java/cn/lunadeer/dominion/Cache.java b/src/main/java/cn/lunadeer/dominion/Cache.java index 7c022cd..ce65544 100644 --- a/src/main/java/cn/lunadeer/dominion/Cache.java +++ b/src/main/java/cn/lunadeer/dominion/Cache.java @@ -8,7 +8,6 @@ import cn.lunadeer.minecraftpluginutils.Notification; import cn.lunadeer.minecraftpluginutils.ParticleRender; import cn.lunadeer.minecraftpluginutils.Scheduler; import cn.lunadeer.minecraftpluginutils.XLogger; -import net.kyori.adventure.text.Component; import org.bukkit.GameMode; import org.bukkit.Location; import org.bukkit.entity.Player; diff --git a/src/main/java/cn/lunadeer/dominion/Dominion.java b/src/main/java/cn/lunadeer/dominion/Dominion.java index 923a05c..03878ae 100644 --- a/src/main/java/cn/lunadeer/dominion/Dominion.java +++ b/src/main/java/cn/lunadeer/dominion/Dominion.java @@ -37,14 +37,7 @@ public final class Dominion extends JavaPlugin { new Scheduler(this); AutoClean.run(); Cache.instance = new Cache(); - - if (config.getEconomyEnable()) { - vault = new VaultConnect(this); - if (vault.getEconomy() == null) { - XLogger.err("你没有安装 Vault 前置插件,无法使用经济功能。"); - config.setEconomyEnable(false); - } - } + new VaultConnect(this); Bukkit.getPluginManager().registerEvents(new PlayerEvents(), this); Bukkit.getPluginManager().registerEvents(new EnvironmentEvents(), this); @@ -79,6 +72,7 @@ public final class Dominion extends JavaPlugin { @Override public void onDisable() { // Plugin shutdown logic + database.close(); } public static Dominion instance; @@ -86,5 +80,4 @@ public final class Dominion extends JavaPlugin { public static DatabaseManager database; public static Map> pointsSelect = new HashMap<>(); private GiteaReleaseCheck giteaReleaseCheck; - public static VaultConnect vault; } diff --git a/src/main/java/cn/lunadeer/dominion/VaultConnect.java b/src/main/java/cn/lunadeer/dominion/VaultConnect.java deleted file mode 100644 index aad388e..0000000 --- a/src/main/java/cn/lunadeer/dominion/VaultConnect.java +++ /dev/null @@ -1,62 +0,0 @@ -package cn.lunadeer.dominion; - -import cn.lunadeer.minecraftpluginutils.XLogger; -import net.milkbowl.vault.chat.Chat; -import net.milkbowl.vault.economy.Economy; -import net.milkbowl.vault.permission.Permission; -import org.bukkit.plugin.RegisteredServiceProvider; -import org.bukkit.plugin.java.JavaPlugin; - -public class VaultConnect { - - private Economy econ = null; - private Permission perms = null; - private Chat chat = null; - private JavaPlugin plugin; - - public VaultConnect(JavaPlugin plugin) { - this.plugin = plugin; - if (!setupEconomy()) { - XLogger.err("你没有安装 Vault 前置插件,无法使用经济功能,如果不需要使用经济功能请前往配置文件关闭。"); - return; - } - setupPermissions(); - setupChat(); - } - - private boolean setupEconomy() { - if (plugin.getServer().getPluginManager().getPlugin("Vault") == null) { - return false; - } - RegisteredServiceProvider rsp = plugin.getServer().getServicesManager().getRegistration(Economy.class); - if (rsp == null) { - return false; - } - econ = rsp.getProvider(); - return econ != null; - } - - private boolean setupChat() { - RegisteredServiceProvider rsp = plugin.getServer().getServicesManager().getRegistration(Chat.class); - chat = rsp.getProvider(); - return chat != null; - } - - private boolean setupPermissions() { - RegisteredServiceProvider rsp = plugin.getServer().getServicesManager().getRegistration(Permission.class); - perms = rsp.getProvider(); - return perms != null; - } - - public Economy getEconomy() { - return econ; - } - - public Permission getPermissions() { - return perms; - } - - public Chat getChat() { - return chat; - } -} diff --git a/src/main/java/cn/lunadeer/dominion/commands/DominionOperate.java b/src/main/java/cn/lunadeer/dominion/commands/DominionOperate.java index 5fb5938..d06ef4f 100644 --- a/src/main/java/cn/lunadeer/dominion/commands/DominionOperate.java +++ b/src/main/java/cn/lunadeer/dominion/commands/DominionOperate.java @@ -2,7 +2,6 @@ package cn.lunadeer.dominion.commands; import cn.lunadeer.dominion.Cache; import cn.lunadeer.dominion.Dominion; -import cn.lunadeer.dominion.controllers.AbstractOperator; import cn.lunadeer.dominion.controllers.BukkitPlayerOperator; import cn.lunadeer.dominion.controllers.DominionController; import cn.lunadeer.dominion.dtos.DominionDTO; @@ -19,10 +18,10 @@ import org.bukkit.entity.Player; import java.time.LocalDateTime; import java.util.Map; -import java.util.Objects; import static cn.lunadeer.dominion.DominionNode.isInDominion; -import static cn.lunadeer.dominion.commands.Apis.*; +import static cn.lunadeer.dominion.commands.Apis.autoPoints; +import static cn.lunadeer.dominion.commands.Apis.playerOnly; public class DominionOperate { /** diff --git a/src/main/java/cn/lunadeer/dominion/controllers/DominionController.java b/src/main/java/cn/lunadeer/dominion/controllers/DominionController.java index b327672..ca0a874 100644 --- a/src/main/java/cn/lunadeer/dominion/controllers/DominionController.java +++ b/src/main/java/cn/lunadeer/dominion/controllers/DominionController.java @@ -2,12 +2,11 @@ package cn.lunadeer.dominion.controllers; import cn.lunadeer.dominion.Cache; import cn.lunadeer.dominion.Dominion; -import cn.lunadeer.dominion.DominionNode; -import cn.lunadeer.dominion.commands.OpenCUI; import cn.lunadeer.dominion.dtos.DominionDTO; import cn.lunadeer.dominion.dtos.PlayerDTO; import cn.lunadeer.minecraftpluginutils.Notification; import cn.lunadeer.minecraftpluginutils.ParticleRender; +import cn.lunadeer.minecraftpluginutils.VaultConnect; import cn.lunadeer.minecraftpluginutils.XLogger; import org.bukkit.Location; import org.bukkit.World; @@ -19,7 +18,8 @@ import java.util.List; import java.util.Objects; import static cn.lunadeer.dominion.DominionNode.isInDominion; -import static cn.lunadeer.dominion.controllers.Apis.*; +import static cn.lunadeer.dominion.controllers.Apis.getPlayerCurrentDominion; +import static cn.lunadeer.dominion.controllers.Apis.notOwner; public class DominionController { @@ -144,6 +144,10 @@ public class DominionController { } // 检查经济 if (Dominion.config.getEconomyEnable()) { + if (!VaultConnect.instance.economyAvailable()) { + operator.setResponse(FAIL.addMessage("没有可用的经济插件系统,请联系服主。")); + return; + } int count; if (Dominion.config.getEconomyOnlyXZ()) { count = dominion.getSquare(); @@ -151,12 +155,12 @@ public class DominionController { count = dominion.getVolume(); } float price = count * Dominion.config.getEconomyPrice(); - if (Dominion.vault.getEconomy().getBalance(operator.getPlayer()) < price) { - operator.setResponse(FAIL.addMessage("你的余额不足,创建此领地需要 %.2f %s", price, Dominion.vault.getEconomy().currencyNamePlural())); + if (VaultConnect.instance.getBalance(operator.getPlayer()) < price) { + operator.setResponse(FAIL.addMessage("你的余额不足,创建此领地需要 %.2f %s", price, VaultConnect.instance.currencyNamePlural())); return; } - operator.setResponse(new AbstractOperator.Result(AbstractOperator.Result.SUCCESS, "已扣除 %.2f %s", price, Dominion.vault.getEconomy().currencyNamePlural())); - Dominion.vault.getEconomy().withdrawPlayer(operator.getPlayer(), price); + operator.setResponse(new AbstractOperator.Result(AbstractOperator.Result.SUCCESS, "已扣除 %.2f %s", price, VaultConnect.instance.currencyNamePlural())); + VaultConnect.instance.withdrawPlayer(operator.getPlayer(), price); } dominion = DominionDTO.insert(dominion); if (dominion == null) { @@ -265,6 +269,10 @@ public class DominionController { AbstractOperator.Result SUCCESS = new AbstractOperator.Result(AbstractOperator.Result.SUCCESS, "成功扩展领地 %s %d格", dominion_name, size); // 检查经济 if (Dominion.config.getEconomyEnable()) { + if (!VaultConnect.instance.economyAvailable()) { + operator.setResponse(FAIL.addMessage("没有可用的经济插件系统,请联系服主。")); + return; + } int count; if (Dominion.config.getEconomyOnlyXZ()) { count = (x2 - x1 + 1) * (z2 - z1 + 1) - dominion.getSquare(); @@ -272,12 +280,12 @@ public class DominionController { count = (x2 - x1 + 1) * (y2 - y1 + 1) * (z2 - z1 + 1) - dominion.getVolume(); } float price = count * Dominion.config.getEconomyPrice(); - if (Dominion.vault.getEconomy().getBalance(operator.getPlayer()) < price) { - operator.setResponse(FAIL.addMessage("你的余额不足,扩展此领地需要 %.2f %s", price, Dominion.vault.getEconomy().currencyNamePlural())); + if (VaultConnect.instance.getBalance(operator.getPlayer()) < price) { + operator.setResponse(FAIL.addMessage("你的余额不足,扩展此领地需要 %.2f %s", price, VaultConnect.instance.currencyNamePlural())); return; } - SUCCESS.addMessage("已扣除 %.2f %s", price, Dominion.vault.getEconomy().currencyNamePlural()); - Dominion.vault.getEconomy().withdrawPlayer(operator.getPlayer(), price); + SUCCESS.addMessage("已扣除 %.2f %s", price, VaultConnect.instance.currencyNamePlural()); + VaultConnect.instance.withdrawPlayer(operator.getPlayer(), price); } if (operator instanceof BukkitPlayerOperator) { World world = Dominion.instance.getServer().getWorld(dominion.getWorld()); @@ -377,6 +385,10 @@ public class DominionController { AbstractOperator.Result SUCCESS = new AbstractOperator.Result(AbstractOperator.Result.SUCCESS, "成功缩小领地 %s %d格", dominion_name, size); // 退还经济 if (Dominion.config.getEconomyEnable()) { + if (!VaultConnect.instance.economyAvailable()) { + operator.setResponse(FAIL.addMessage("没有可用的经济插件系统,请联系服主。")); + return; + } int count; if (Dominion.config.getEconomyOnlyXZ()) { count = dominion.getSquare() - (x2 - x1 + 1) * (z2 - z1 + 1); @@ -384,8 +396,8 @@ public class DominionController { count = dominion.getVolume() - (x2 - x1 + 1) * (y2 - y1 + 1) * (z2 - z1 + 1); } float refund = count * Dominion.config.getEconomyPrice() * Dominion.config.getEconomyRefund(); - Dominion.vault.getEconomy().depositPlayer(operator.getPlayer(), refund); - SUCCESS.addMessage("已退还 %.2f %s", refund, Dominion.vault.getEconomy().currencyNamePlural()); + VaultConnect.instance.depositPlayer(operator.getPlayer(), refund); + SUCCESS.addMessage("已退还 %.2f %s", refund, VaultConnect.instance.currencyNamePlural()); } if (operator instanceof BukkitPlayerOperator) { World world = Dominion.instance.getServer().getWorld(dominion.getWorld()); @@ -430,6 +442,10 @@ public class DominionController { AbstractOperator.Result SUCCESS = new AbstractOperator.Result(AbstractOperator.Result.SUCCESS, "领地 %s 及其所有子领地已删除", dominion_name); // 退还经济 if (Dominion.config.getEconomyEnable()) { + if (!VaultConnect.instance.economyAvailable()) { + operator.setResponse(new AbstractOperator.Result(AbstractOperator.Result.FAILURE, "退款失败,没有可用的经济插件系统,请联系服主。")); + return; + } int count = 0; if (Dominion.config.getEconomyOnlyXZ()) { for (DominionDTO sub_dominion : sub_dominions) { @@ -441,8 +457,8 @@ public class DominionController { } } float refund = count * Dominion.config.getEconomyPrice() * Dominion.config.getEconomyRefund(); - Dominion.vault.getEconomy().depositPlayer(operator.getPlayer(), refund); - SUCCESS.addMessage("已退还 %.2f %s", refund, Dominion.vault.getEconomy().currencyNamePlural()); + VaultConnect.instance.depositPlayer(operator.getPlayer(), refund); + SUCCESS.addMessage("已退还 %.2f %s", refund, VaultConnect.instance.currencyNamePlural()); } operator.setResponse(SUCCESS); } diff --git a/src/main/java/cn/lunadeer/dominion/controllers/FlagsController.java b/src/main/java/cn/lunadeer/dominion/controllers/FlagsController.java index 6a6848d..1788651 100644 --- a/src/main/java/cn/lunadeer/dominion/controllers/FlagsController.java +++ b/src/main/java/cn/lunadeer/dominion/controllers/FlagsController.java @@ -2,8 +2,6 @@ package cn.lunadeer.dominion.controllers; import cn.lunadeer.dominion.dtos.DominionDTO; import cn.lunadeer.dominion.dtos.Flag; -import cn.lunadeer.minecraftpluginutils.Notification; -import org.bukkit.entity.Player; import static cn.lunadeer.dominion.controllers.Apis.noAuthToChangeFlags; diff --git a/src/main/java/cn/lunadeer/dominion/controllers/PrivilegeController.java b/src/main/java/cn/lunadeer/dominion/controllers/PrivilegeController.java index f61d40a..561fb99 100644 --- a/src/main/java/cn/lunadeer/dominion/controllers/PrivilegeController.java +++ b/src/main/java/cn/lunadeer/dominion/controllers/PrivilegeController.java @@ -5,9 +5,7 @@ import cn.lunadeer.dominion.dtos.DominionDTO; import cn.lunadeer.dominion.dtos.Flag; import cn.lunadeer.dominion.dtos.PlayerDTO; import cn.lunadeer.dominion.dtos.PlayerPrivilegeDTO; -import cn.lunadeer.minecraftpluginutils.Notification; import cn.lunadeer.minecraftpluginutils.XLogger; -import org.bukkit.entity.Player; import java.util.UUID; diff --git a/src/main/java/cn/lunadeer/dominion/events/Apis.java b/src/main/java/cn/lunadeer/dominion/events/Apis.java index 9c91d66..de0d395 100644 --- a/src/main/java/cn/lunadeer/dominion/events/Apis.java +++ b/src/main/java/cn/lunadeer/dominion/events/Apis.java @@ -5,14 +5,11 @@ import cn.lunadeer.dominion.Dominion; import cn.lunadeer.dominion.dtos.DominionDTO; import cn.lunadeer.dominion.dtos.Flag; import cn.lunadeer.dominion.dtos.PlayerPrivilegeDTO; -import cn.lunadeer.minecraftpluginutils.Notification; import net.kyori.adventure.text.Component; import net.kyori.adventure.text.TextComponent; import net.kyori.adventure.text.format.Style; import net.kyori.adventure.text.format.TextColor; import net.kyori.adventure.text.format.TextDecoration; -import net.kyori.adventure.title.Title; -import net.md_5.bungee.api.ChatMessageType; import org.bukkit.entity.Player; import org.bukkit.event.Cancellable; import org.bukkit.inventory.Inventory; diff --git a/src/main/java/cn/lunadeer/dominion/events/EnvironmentEvents.java b/src/main/java/cn/lunadeer/dominion/events/EnvironmentEvents.java index 91a5bca..02942d4 100644 --- a/src/main/java/cn/lunadeer/dominion/events/EnvironmentEvents.java +++ b/src/main/java/cn/lunadeer/dominion/events/EnvironmentEvents.java @@ -3,7 +3,6 @@ package cn.lunadeer.dominion.events; import cn.lunadeer.dominion.Cache; import cn.lunadeer.dominion.dtos.DominionDTO; import cn.lunadeer.dominion.dtos.Flag; -import com.destroystokyo.paper.event.entity.EndermanEscapeEvent; import org.bukkit.Location; import org.bukkit.block.Block; import org.bukkit.entity.*; diff --git a/src/main/java/cn/lunadeer/dominion/events/PlayerEvents.java b/src/main/java/cn/lunadeer/dominion/events/PlayerEvents.java index a99f5eb..6e26275 100644 --- a/src/main/java/cn/lunadeer/dominion/events/PlayerEvents.java +++ b/src/main/java/cn/lunadeer/dominion/events/PlayerEvents.java @@ -6,7 +6,6 @@ import cn.lunadeer.dominion.dtos.Flag; import cn.lunadeer.dominion.dtos.PlayerDTO; import cn.lunadeer.minecraftpluginutils.Notification; import cn.lunadeer.minecraftpluginutils.Teleport; -import io.papermc.paper.event.entity.EntityDyeEvent; import org.bukkit.Location; import org.bukkit.Material; import org.bukkit.block.Block; diff --git a/src/main/java/cn/lunadeer/dominion/events/SelectPointEvents.java b/src/main/java/cn/lunadeer/dominion/events/SelectPointEvents.java index a7cf062..9a036b9 100644 --- a/src/main/java/cn/lunadeer/dominion/events/SelectPointEvents.java +++ b/src/main/java/cn/lunadeer/dominion/events/SelectPointEvents.java @@ -4,6 +4,7 @@ import cn.lunadeer.dominion.Dominion; import cn.lunadeer.dominion.dtos.DominionDTO; import cn.lunadeer.minecraftpluginutils.Notification; import cn.lunadeer.minecraftpluginutils.ParticleRender; +import cn.lunadeer.minecraftpluginutils.VaultConnect; import org.bukkit.Location; import org.bukkit.World; import org.bukkit.block.Block; @@ -75,6 +76,10 @@ public class SelectPointEvents implements Listener { DominionDTO dominion = new DominionDTO(player.getUniqueId(), "", loc1.getWorld().getName(), minX, minY, minZ, maxX, maxY, maxZ); if (Dominion.config.getEconomyEnable()) { + if (!VaultConnect.instance.economyAvailable()) { + Notification.error(player, "计算价格失败,没有可用的经济插件系统,请联系服主。"); + return; + } int count; if (Dominion.config.getEconomyOnlyXZ()) { count = dominion.getSquare(); @@ -82,7 +87,7 @@ public class SelectPointEvents implements Listener { count = dominion.getVolume(); } float price = count * Dominion.config.getEconomyPrice(); - Notification.info(player, "预计领地创建价格为 %.2f %s", price, Dominion.vault.getEconomy().currencyNamePlural()); + Notification.info(player, "预计领地创建价格为 %.2f %s", price, VaultConnect.instance.currencyNamePlural()); } ParticleRender.showBoxFace(Dominion.instance, player, loc1, loc2); Notification.info(player, "尺寸: %d x %d x %d", dominion.getWidthX(), dominion.getHeight(), dominion.getWidthZ()); diff --git a/src/main/java/cn/lunadeer/dominion/managers/ConfigManager.java b/src/main/java/cn/lunadeer/dominion/managers/ConfigManager.java index 5c16559..a5a225a 100644 --- a/src/main/java/cn/lunadeer/dominion/managers/ConfigManager.java +++ b/src/main/java/cn/lunadeer/dominion/managers/ConfigManager.java @@ -351,6 +351,8 @@ public class ConfigManager { public void setEconomyEnable(Boolean economy_enable) { _economy_enable = economy_enable; + _file.set("Economy.Enable", economy_enable); + _plugin.saveConfig(); } public Float getEconomyPrice() { diff --git a/src/main/java/cn/lunadeer/dominion/tuis/Apis.java b/src/main/java/cn/lunadeer/dominion/tuis/Apis.java index ca122ff..5befc90 100644 --- a/src/main/java/cn/lunadeer/dominion/tuis/Apis.java +++ b/src/main/java/cn/lunadeer/dominion/tuis/Apis.java @@ -11,7 +11,6 @@ import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; import static cn.lunadeer.dominion.commands.Apis.playerOnly; -import static cn.lunadeer.dominion.controllers.Apis.getPlayerCurrentDominion; public class Apis { diff --git a/src/main/java/cn/lunadeer/dominion/tuis/DominionPrivilegeList.java b/src/main/java/cn/lunadeer/dominion/tuis/DominionPrivilegeList.java index a81b718..fab90ac 100644 --- a/src/main/java/cn/lunadeer/dominion/tuis/DominionPrivilegeList.java +++ b/src/main/java/cn/lunadeer/dominion/tuis/DominionPrivilegeList.java @@ -12,7 +12,6 @@ import net.kyori.adventure.text.Component; import net.kyori.adventure.text.TextComponent; import net.kyori.adventure.text.format.Style; import net.kyori.adventure.text.format.TextColor; -import net.kyori.adventure.text.format.TextDecoration; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml index 343f455..6aa760a 100644 --- a/src/main/resources/plugin.yml +++ b/src/main/resources/plugin.yml @@ -4,6 +4,8 @@ main: cn.lunadeer.dominion.Dominion api-version: '1.20' load: STARTUP folia-supported: true +loadbefore: + - Vault commands: Dominion: description: 领地插件命令