mirror of
https://github.com/ColdeZhang/Dominion.git
synced 2024-10-19 03:26:40 +08:00
修复了选区价格和创建价格不符问题、修复了玩家重新上线时飞行权限不生效问题
This commit is contained in:
parent
7b4d26970b
commit
9b7917aa14
2
pom.xml
2
pom.xml
@ -6,7 +6,7 @@
|
|||||||
|
|
||||||
<groupId>cn.lunadeer</groupId>
|
<groupId>cn.lunadeer</groupId>
|
||||||
<artifactId>Dominion</artifactId>
|
<artifactId>Dominion</artifactId>
|
||||||
<version>1.30.13-beta</version>
|
<version>1.30.14-beta</version>
|
||||||
<packaging>jar</packaging>
|
<packaging>jar</packaging>
|
||||||
|
|
||||||
<name>Dominion</name>
|
<name>Dominion</name>
|
||||||
|
@ -125,7 +125,7 @@ public class Cache {
|
|||||||
last_dominion = id_dominions.get(last_in_dom_id);
|
last_dominion = id_dominions.get(last_in_dom_id);
|
||||||
}
|
}
|
||||||
if (isInDominion(last_dominion, player)) {
|
if (isInDominion(last_dominion, player)) {
|
||||||
if (dominion_children.get(last_in_dom_id) == null) {
|
if (dominion_children.get(last_in_dom_id) == null || dominion_children.get(last_in_dom_id).size() == 0) {
|
||||||
// 如果玩家仍在领地内,且领地没有子领地,则直接返回
|
// 如果玩家仍在领地内,且领地没有子领地,则直接返回
|
||||||
return last_dominion;
|
return last_dominion;
|
||||||
}
|
}
|
||||||
@ -171,6 +171,17 @@ public class Cache {
|
|||||||
return current_dominion;
|
return current_dominion;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 玩家退出时调用 用于清除玩家当前所在领地
|
||||||
|
* 会将玩家当前所在领地设置为null
|
||||||
|
* 这样当玩家下次进入领地时,会重新检查玩家所在位置
|
||||||
|
*
|
||||||
|
* @param player 玩家
|
||||||
|
*/
|
||||||
|
public void onPlayerQuit(Player player) {
|
||||||
|
player_current_dominion_id.put(player.getUniqueId(), null);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 检查玩家是否需要设置为发光
|
* 检查玩家是否需要设置为发光
|
||||||
*
|
*
|
||||||
|
@ -146,9 +146,9 @@ public class DominionController {
|
|||||||
if (Dominion.config.getEconomyEnable()) {
|
if (Dominion.config.getEconomyEnable()) {
|
||||||
int count;
|
int count;
|
||||||
if (Dominion.config.getEconomyOnlyXZ()) {
|
if (Dominion.config.getEconomyOnlyXZ()) {
|
||||||
count = (loc2.getBlockX() - loc1.getBlockX() + 1) * (loc2.getBlockZ() - loc1.getBlockZ() + 1);
|
count = dominion.getSquare();
|
||||||
} else {
|
} else {
|
||||||
count = (loc2.getBlockX() - loc1.getBlockX() + 1) * (loc2.getBlockY() - loc1.getBlockY() + 1) * (loc2.getBlockZ() - loc1.getBlockZ() + 1);
|
count = dominion.getVolume();
|
||||||
}
|
}
|
||||||
float price = count * Dominion.config.getEconomyPrice();
|
float price = count * Dominion.config.getEconomyPrice();
|
||||||
if (Dominion.vault.getEconomy().getBalance(operator.getPlayer()) < price) {
|
if (Dominion.vault.getEconomy().getBalance(operator.getPlayer()) < price) {
|
||||||
|
@ -326,11 +326,23 @@ public class DominionDTO {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public Integer getSquare() {
|
public Integer getSquare() {
|
||||||
return (x2 - x1) * (z2 - z1);
|
return (x2 - x1 + 1) * (z2 - z1 + 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
public Integer getVolume() {
|
public Integer getVolume() {
|
||||||
return getSquare() * (y2 - y1);
|
return getSquare() * (y2 - y1 + 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
public Integer getWidthX() {
|
||||||
|
return x2 - x1 + 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Integer getHeight() {
|
||||||
|
return y2 - y1 + 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Integer getWidthZ() {
|
||||||
|
return z2 - z1 + 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Integer getParentDomId() {
|
public Integer getParentDomId() {
|
||||||
|
@ -40,6 +40,12 @@ public class PlayerEvents implements Listener {
|
|||||||
player.onJoin(); // update name
|
player.onJoin(); // update name
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@EventHandler
|
||||||
|
public void onPlayerQuit(PlayerQuitEvent event) {
|
||||||
|
Player bukkitPlayer = event.getPlayer();
|
||||||
|
Cache.instance.onPlayerQuit(bukkitPlayer);
|
||||||
|
}
|
||||||
|
|
||||||
@EventHandler(priority = EventPriority.HIGHEST) // anchor
|
@EventHandler(priority = EventPriority.HIGHEST) // anchor
|
||||||
public void onRespawnAnchor(PlayerRespawnEvent event) {
|
public void onRespawnAnchor(PlayerRespawnEvent event) {
|
||||||
Player bukkitPlayer = event.getPlayer();
|
Player bukkitPlayer = event.getPlayer();
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
package cn.lunadeer.dominion.events;
|
package cn.lunadeer.dominion.events;
|
||||||
|
|
||||||
import cn.lunadeer.dominion.Dominion;
|
import cn.lunadeer.dominion.Dominion;
|
||||||
|
import cn.lunadeer.dominion.dtos.DominionDTO;
|
||||||
import cn.lunadeer.minecraftpluginutils.Notification;
|
import cn.lunadeer.minecraftpluginutils.Notification;
|
||||||
import cn.lunadeer.minecraftpluginutils.ParticleRender;
|
import cn.lunadeer.minecraftpluginutils.ParticleRender;
|
||||||
import org.bukkit.Location;
|
import org.bukkit.Location;
|
||||||
@ -71,30 +72,23 @@ public class SelectPointEvents implements Listener {
|
|||||||
minY = Dominion.config.getLimitMinY();
|
minY = Dominion.config.getLimitMinY();
|
||||||
maxY = Dominion.config.getLimitMaxY();
|
maxY = Dominion.config.getLimitMaxY();
|
||||||
}
|
}
|
||||||
|
DominionDTO dominion = new DominionDTO(player.getUniqueId(), "", loc1.getWorld().getName(),
|
||||||
|
minX, minY, minZ, maxX, maxY, maxZ);
|
||||||
if (Dominion.config.getEconomyEnable()) {
|
if (Dominion.config.getEconomyEnable()) {
|
||||||
int count;
|
int count;
|
||||||
if (Dominion.config.getEconomyOnlyXZ()) {
|
if (Dominion.config.getEconomyOnlyXZ()) {
|
||||||
count = (maxX - minX) * (maxZ - minZ);
|
count = dominion.getSquare();
|
||||||
} else {
|
} else {
|
||||||
count = (maxX - minX) * (maxY - minY) * (maxZ - minZ);
|
count = dominion.getVolume();
|
||||||
}
|
}
|
||||||
float price = count * Dominion.config.getEconomyPrice();
|
float price = count * Dominion.config.getEconomyPrice();
|
||||||
Notification.info(player, "预计领地创建价格为 %.2f %s", price, Dominion.vault.getEconomy().currencyNamePlural());
|
Notification.info(player, "预计领地创建价格为 %.2f %s", price, Dominion.vault.getEconomy().currencyNamePlural());
|
||||||
}
|
}
|
||||||
ParticleRender.showBoxFace(Dominion.instance, player, loc1, loc2);
|
ParticleRender.showBoxFace(Dominion.instance, player, loc1, loc2);
|
||||||
Notification.info(player, "尺寸: %d x %d x %d",
|
Notification.info(player, "尺寸: %d x %d x %d", dominion.getWidthX(), dominion.getHeight(), dominion.getWidthZ());
|
||||||
Math.abs(points.get(1).getBlockX() - points.get(0).getBlockX()),
|
Notification.info(player, "面积: %d", dominion.getSquare());
|
||||||
Math.abs(points.get(1).getBlockY() - points.get(0).getBlockY()),
|
Notification.info(player, "高度: %d", dominion.getHeight());
|
||||||
Math.abs(points.get(1).getBlockZ() - points.get(0).getBlockZ()));
|
Notification.info(player, "体积: %d", dominion.getVolume());
|
||||||
Notification.info(player, "面积: %d",
|
|
||||||
Math.abs(points.get(1).getBlockX() - points.get(0).getBlockX()) *
|
|
||||||
Math.abs(points.get(1).getBlockZ() - points.get(0).getBlockZ()));
|
|
||||||
Notification.info(player, "高度: %d",
|
|
||||||
Math.abs(points.get(1).getBlockY() - points.get(0).getBlockY()));
|
|
||||||
Notification.info(player, "体积: %d",
|
|
||||||
Math.abs(points.get(1).getBlockX() - points.get(0).getBlockX()) *
|
|
||||||
Math.abs(points.get(1).getBlockY() - points.get(0).getBlockY()) *
|
|
||||||
Math.abs(points.get(1).getBlockZ() - points.get(0).getBlockZ()));
|
|
||||||
}
|
}
|
||||||
Dominion.pointsSelect.put(player.getUniqueId(), points);
|
Dominion.pointsSelect.put(player.getUniqueId(), points);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user