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: 领地插件命令