修复了经济相关功能没有操作提示问题
Java CI-CD with Maven / build (push) Successful in 20m17s Details

This commit is contained in:
zhangyuheng 2024-04-26 10:56:15 +08:00
parent a9230cd03f
commit 0244c4ae20
8 changed files with 54 additions and 29 deletions

View File

@ -6,7 +6,7 @@
<groupId>cn.lunadeer</groupId>
<artifactId>Dominion</artifactId>
<version>1.20.2-beta</version>
<version>1.20.3-beta</version>
<packaging>jar</packaging>
<name>Dominion</name>

View File

@ -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;

View File

@ -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 + " 及其所有子领地已删除");
}

View File

@ -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 {

View File

@ -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 " +

View File

@ -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;

View File

@ -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;

View File

@ -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;