diff --git a/pom.xml b/pom.xml index 8954e02..251cf7c 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ cn.lunadeer Dominion - 1.20.2-beta + 1.20.3-beta jar Dominion diff --git a/src/main/java/cn/lunadeer/dominion/commands/DominionOperate.java b/src/main/java/cn/lunadeer/dominion/commands/DominionOperate.java index 59da299..900f98a 100644 --- a/src/main/java/cn/lunadeer/dominion/commands/DominionOperate.java +++ b/src/main/java/cn/lunadeer/dominion/commands/DominionOperate.java @@ -6,9 +6,7 @@ import cn.lunadeer.dominion.controllers.DominionController; import cn.lunadeer.dominion.dtos.DominionDTO; import cn.lunadeer.dominion.dtos.PlayerPrivilegeDTO; import cn.lunadeer.dominion.utils.Notification; -import cn.lunadeer.dominion.utils.XLogger; import org.bukkit.Location; -import org.bukkit.World; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; diff --git a/src/main/java/cn/lunadeer/dominion/controllers/DominionController.java b/src/main/java/cn/lunadeer/dominion/controllers/DominionController.java index 6e5613f..272eacd 100644 --- a/src/main/java/cn/lunadeer/dominion/controllers/DominionController.java +++ b/src/main/java/cn/lunadeer/dominion/controllers/DominionController.java @@ -90,21 +90,6 @@ public class DominionController { loc2.getBlockX(), loc2.getBlockY(), loc2.getBlockZ())) { return null; } - // 检查经济 - if (Dominion.config.getEconomyEnable()) { - int count; - if (Dominion.config.getEconomyOnlyXZ()) { - count = (loc2.getBlockX() - loc1.getBlockX() + 1) * (loc2.getBlockZ() - loc1.getBlockZ() + 1); - } else { - count = (loc2.getBlockX() - loc1.getBlockX() + 1) * (loc2.getBlockY() - loc1.getBlockY() + 1) * (loc2.getBlockZ() - loc1.getBlockZ() + 1); - } - double price = count * Dominion.config.getEconomyPrice(); - if (Dominion.vault.getEconomy().getBalance(owner) < price) { - Notification.error(owner, "你的余额不足,创建此领地需要 " + price + " " + Dominion.vault.getEconomy().currencyNamePlural()); - return null; - } - Dominion.vault.getEconomy().withdrawPlayer(owner, price); - } DominionDTO dominion = new DominionDTO(owner.getUniqueId(), name, owner.getWorld().getName(), (int) Math.min(loc1.getX(), loc2.getX()), (int) Math.min(loc1.getY(), loc2.getY()), (int) Math.min(loc1.getZ(), loc2.getZ()), (int) Math.max(loc1.getX(), loc2.getX()), @@ -151,6 +136,22 @@ public class DominionController { return null; } } + // 检查经济 + if (Dominion.config.getEconomyEnable()) { + int count; + if (Dominion.config.getEconomyOnlyXZ()) { + count = (loc2.getBlockX() - loc1.getBlockX() + 1) * (loc2.getBlockZ() - loc1.getBlockZ() + 1); + } else { + count = (loc2.getBlockX() - loc1.getBlockX() + 1) * (loc2.getBlockY() - loc1.getBlockY() + 1) * (loc2.getBlockZ() - loc1.getBlockZ() + 1); + } + double price = count * Dominion.config.getEconomyPrice(); + if (Dominion.vault.getEconomy().getBalance(owner) < price) { + Notification.error(owner, "你的余额不足,创建此领地需要 " + price + " " + Dominion.vault.getEconomy().currencyNamePlural()); + return null; + } + Notification.info(owner, "已扣除 " + price + " " + Dominion.vault.getEconomy().currencyNamePlural()); + Dominion.vault.getEconomy().withdrawPlayer(owner, price); + } dominion = DominionDTO.insert(dominion); if (dominion == null) { Notification.error(owner, "创建失败,详细错误请联系管理员查询日志(当前时间:" + Time.nowStr() + ")"); @@ -264,6 +265,7 @@ public class DominionController { Notification.error(operator, "你的余额不足,扩展此领地需要 " + price + " " + Dominion.vault.getEconomy().currencyNamePlural()); return null; } + Notification.info(operator, "已扣除 " + price + " " + Dominion.vault.getEconomy().currencyNamePlural()); Dominion.vault.getEconomy().withdrawPlayer(operator, price); } return dominion.setXYZ(x1, y1, z1, x2, y2, z2); @@ -364,7 +366,7 @@ public class DominionController { } double refund = count * Dominion.config.getEconomyPrice() * Dominion.config.getEconomyRefund(); Dominion.vault.getEconomy().depositPlayer(operator, refund); - XLogger.info("已经退还 " + refund + " " + Dominion.vault.getEconomy().currencyNamePlural()); + Notification.info(operator, "已经退还 " + refund + " " + Dominion.vault.getEconomy().currencyNamePlural()); } return dominion.setXYZ(x1, y1, z1, x2, y2, z2); } @@ -414,7 +416,7 @@ public class DominionController { } double refund = count * Dominion.config.getEconomyPrice() * Dominion.config.getEconomyRefund(); Dominion.vault.getEconomy().depositPlayer(operator, refund); - XLogger.info("已经退还 " + refund + " " + Dominion.vault.getEconomy().currencyNamePlural()); + Notification.info(operator, "已经退还 " + refund + " " + Dominion.vault.getEconomy().currencyNamePlural()); } Notification.info(operator, "领地 " + dominion_name + " 及其所有子领地已删除"); } diff --git a/src/main/java/cn/lunadeer/dominion/events/PlayerEvents.java b/src/main/java/cn/lunadeer/dominion/events/PlayerEvents.java index 46eca5c..e74851e 100644 --- a/src/main/java/cn/lunadeer/dominion/events/PlayerEvents.java +++ b/src/main/java/cn/lunadeer/dominion/events/PlayerEvents.java @@ -8,7 +8,6 @@ import cn.lunadeer.dominion.utils.Notification; import io.papermc.paper.event.entity.EntityDyeEvent; import org.bukkit.Location; import org.bukkit.Material; -import org.bukkit.NamespacedKey; import org.bukkit.block.Block; import org.bukkit.entity.*; import org.bukkit.event.EventHandler; @@ -27,12 +26,8 @@ import org.bukkit.event.inventory.InventoryType; import org.bukkit.event.player.*; import org.bukkit.event.vehicle.VehicleDestroyEvent; import org.bukkit.inventory.Inventory; -import org.bukkit.inventory.ItemStack; -import org.bukkit.persistence.PersistentDataType; import org.spigotmc.event.entity.EntityMountEvent; -import java.util.Objects; - import static cn.lunadeer.dominion.events.Apis.getInvDominion; public class PlayerEvents implements Listener { diff --git a/src/main/java/cn/lunadeer/dominion/events/SelectPointEvents.java b/src/main/java/cn/lunadeer/dominion/events/SelectPointEvents.java index 3ff8ebd..28d1b33 100644 --- a/src/main/java/cn/lunadeer/dominion/events/SelectPointEvents.java +++ b/src/main/java/cn/lunadeer/dominion/events/SelectPointEvents.java @@ -3,7 +3,7 @@ package cn.lunadeer.dominion.events; import cn.lunadeer.dominion.Dominion; import cn.lunadeer.dominion.utils.Notification; import org.bukkit.Location; -import org.bukkit.Material; +import org.bukkit.World; import org.bukkit.block.Block; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; @@ -50,6 +50,31 @@ public class SelectPointEvents implements Listener { } if (points.size() == 2) { + World world = points.get(0).getWorld(); + if (world == null) { + return; + } + + Location loc1 = points.get(0); + Location loc2 = points.get(1); + int minX = Math.min(loc1.getBlockX(), loc2.getBlockX()); + int minY = Math.min(loc1.getBlockY(), loc2.getBlockY()); + int minZ = Math.min(loc1.getBlockZ(), loc2.getBlockZ()); + int maxX = Math.max(loc1.getBlockX(), loc2.getBlockX()); + int maxY = Math.max(loc1.getBlockY(), loc2.getBlockY()); + int maxZ = Math.max(loc1.getBlockZ(), loc2.getBlockZ()); + if (Dominion.config.getEconomyEnable()) { + int count; + if (Dominion.config.getEconomyOnlyXZ()) { + count = (maxX - minX) * (maxZ - minZ); + } else { + count = (maxX - minX) * (maxY - minY) * (maxZ - minZ); + } + double price = count * Dominion.config.getEconomyPrice(); + Notification.info(player, "预计领地创建价格为 " + price + " " + Dominion.vault.getEconomy().currencyNamePlural()); + } + // todo 用粒子效果显示边界 + Notification.info(player, "已选择两个点,可以使用 /dominion create <领地名称> 创建领地"); Notification.info(player, "尺寸为 " + Math.abs(points.get(1).getX() - points.get(0).getX()) + " x " + diff --git a/src/main/java/cn/lunadeer/dominion/tuis/DominionManage.java b/src/main/java/cn/lunadeer/dominion/tuis/DominionManage.java index 9dfc6dd..b5b3520 100644 --- a/src/main/java/cn/lunadeer/dominion/tuis/DominionManage.java +++ b/src/main/java/cn/lunadeer/dominion/tuis/DominionManage.java @@ -5,7 +5,6 @@ import cn.lunadeer.dominion.utils.Notification; import cn.lunadeer.dominion.utils.STUI.Button; import cn.lunadeer.dominion.utils.STUI.Line; import cn.lunadeer.dominion.utils.STUI.ListView; -import cn.lunadeer.dominion.utils.STUI.View; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; diff --git a/src/main/java/cn/lunadeer/dominion/tuis/Menu.java b/src/main/java/cn/lunadeer/dominion/tuis/Menu.java index e397cfc..e2243f4 100644 --- a/src/main/java/cn/lunadeer/dominion/tuis/Menu.java +++ b/src/main/java/cn/lunadeer/dominion/tuis/Menu.java @@ -1,6 +1,9 @@ package cn.lunadeer.dominion.tuis; -import cn.lunadeer.dominion.utils.STUI.*; +import cn.lunadeer.dominion.utils.STUI.Button; +import cn.lunadeer.dominion.utils.STUI.Line; +import cn.lunadeer.dominion.utils.STUI.ListView; +import cn.lunadeer.dominion.utils.STUI.ViewStyles; import net.kyori.adventure.text.Component; import net.kyori.adventure.text.event.ClickEvent; import org.bukkit.command.CommandSender; diff --git a/src/main/java/cn/lunadeer/dominion/utils/GiteaReleaseCheck.java b/src/main/java/cn/lunadeer/dominion/utils/GiteaReleaseCheck.java index c160dc3..6f15219 100644 --- a/src/main/java/cn/lunadeer/dominion/utils/GiteaReleaseCheck.java +++ b/src/main/java/cn/lunadeer/dominion/utils/GiteaReleaseCheck.java @@ -6,7 +6,10 @@ import org.json.simple.JSONObject; import org.json.simple.parser.JSONParser; import javax.net.ssl.HttpsURLConnection; -import java.io.*; +import java.io.BufferedReader; +import java.io.DataOutputStream; +import java.io.File; +import java.io.InputStreamReader; import java.net.URL; import java.nio.file.Files; import java.util.concurrent.TimeUnit;