mirror of
https://github.com/ColdeZhang/Dominion.git
synced 2024-10-19 03:26:40 +08:00
解决了子领地无法被权限识别的问题
解决了数据库重复插入警告问题 解决了不正确的进入提示语显示逻辑
This commit is contained in:
parent
d87f636c2e
commit
7482aba2a8
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.6.0-beta</version>
|
<version>1.6.3-beta</version>
|
||||||
<packaging>jar</packaging>
|
<packaging>jar</packaging>
|
||||||
|
|
||||||
<name>Dominion</name>
|
<name>Dominion</name>
|
||||||
|
@ -24,13 +24,23 @@ public class Cache {
|
|||||||
public void loadDominions() {
|
public void loadDominions() {
|
||||||
id_dominions = new HashMap<>();
|
id_dominions = new HashMap<>();
|
||||||
world_dominions = new HashMap<>();
|
world_dominions = new HashMap<>();
|
||||||
|
dominion_children = new HashMap<>();
|
||||||
List<DominionDTO> dominions = DominionDTO.selectAll();
|
List<DominionDTO> dominions = DominionDTO.selectAll();
|
||||||
for (DominionDTO d : dominions) {
|
for (DominionDTO d : dominions) {
|
||||||
|
if (!dominion_children.containsKey(d.getId())) {
|
||||||
|
dominion_children.put(d.getId(), new ArrayList<>());
|
||||||
|
}
|
||||||
id_dominions.put(d.getId(), d);
|
id_dominions.put(d.getId(), d);
|
||||||
if (!world_dominions.containsKey(d.getWorld())) {
|
if (!world_dominions.containsKey(d.getWorld())) {
|
||||||
world_dominions.put(d.getWorld(), new ArrayList<>());
|
world_dominions.put(d.getWorld(), new ArrayList<>());
|
||||||
}
|
}
|
||||||
world_dominions.get(d.getWorld()).add(d.getId());
|
world_dominions.get(d.getWorld()).add(d.getId());
|
||||||
|
if (d.getParentDomId() != -1) {
|
||||||
|
if (!dominion_children.containsKey(d.getParentDomId())) {
|
||||||
|
dominion_children.put(d.getParentDomId(), new ArrayList<>());
|
||||||
|
}
|
||||||
|
dominion_children.get(d.getParentDomId()).add(d.getId());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
BlueMapConnect.render();
|
BlueMapConnect.render();
|
||||||
}
|
}
|
||||||
@ -70,10 +80,30 @@ public class Cache {
|
|||||||
if (!isInDominion(dominion, player)) {
|
if (!isInDominion(dominion, player)) {
|
||||||
// glow
|
// glow
|
||||||
player.setGlowing(false);
|
player.setGlowing(false);
|
||||||
|
if (dominion.getParentDomId() == -1) {
|
||||||
Notification.info(player, "您已离开领地:" + dominion.getName());
|
Notification.info(player, "您已离开领地:" + dominion.getName());
|
||||||
Notification.info(player, dominion.getLeaveMessage());
|
Notification.info(player, dominion.getLeaveMessage());
|
||||||
player_current_dominion.put(player.getUniqueId(), null);
|
player_current_dominion.put(player.getUniqueId(), null);
|
||||||
dominion = null;
|
dominion = null;
|
||||||
|
} else {
|
||||||
|
Notification.info(player, "您已离开子领地:" + dominion.getName());
|
||||||
|
Notification.info(player, dominion.getLeaveMessage());
|
||||||
|
dominion = id_dominions.get(dominion.getParentDomId());
|
||||||
|
update_player_current_dominion(player, dominion);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
// 如果在领地内则检查是否在子领地内
|
||||||
|
List<Integer> children = dominion_children.get(dominion.getId());
|
||||||
|
for (Integer child_id : children) {
|
||||||
|
DominionDTO child = id_dominions.get(child_id);
|
||||||
|
if (isInDominion(child, player)) {
|
||||||
|
dominion = child;
|
||||||
|
Notification.info(player, "您正在进入子领地:" + dominion.getName());
|
||||||
|
Notification.info(player, dominion.getJoinMessage());
|
||||||
|
update_player_current_dominion(player, dominion);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (dominion == null) {
|
if (dominion == null) {
|
||||||
@ -89,7 +119,15 @@ public class Cache {
|
|||||||
}
|
}
|
||||||
if (in_dominions.size() == 0) return null;
|
if (in_dominions.size() == 0) return null;
|
||||||
in_dominions.sort(Comparator.comparingInt(DominionDTO::getId));
|
in_dominions.sort(Comparator.comparingInt(DominionDTO::getId));
|
||||||
dominion = in_dominions.get(in_dominions.size() - 1);
|
dominion = in_dominions.get(0);
|
||||||
|
Notification.info(player, "您正在进入领地:" + dominion.getName());
|
||||||
|
Notification.info(player, dominion.getJoinMessage());
|
||||||
|
update_player_current_dominion(player, dominion);
|
||||||
|
}
|
||||||
|
return dominion;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void update_player_current_dominion(Player player, DominionDTO dominion) {
|
||||||
player_current_dominion.put(player.getUniqueId(), dominion.getId());
|
player_current_dominion.put(player.getUniqueId(), dominion.getId());
|
||||||
// glow
|
// glow
|
||||||
PlayerPrivilegeDTO privilege = getPlayerPrivilege(player, dominion);
|
PlayerPrivilegeDTO privilege = getPlayerPrivilege(player, dominion);
|
||||||
@ -102,10 +140,6 @@ public class Cache {
|
|||||||
player.setGlowing(true);
|
player.setGlowing(true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Notification.info(player, "您正在进入领地:" + dominion.getName());
|
|
||||||
Notification.info(player, dominion.getJoinMessage());
|
|
||||||
}
|
|
||||||
return dominion;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public DominionDTO getDominion(Location loc) {
|
public DominionDTO getDominion(Location loc) {
|
||||||
@ -167,4 +201,5 @@ public class Cache {
|
|||||||
private Map<String, List<Integer>> world_dominions; // 所有领地
|
private Map<String, List<Integer>> world_dominions; // 所有领地
|
||||||
private Map<UUID, Map<Integer, PlayerPrivilegeDTO>> player_uuid_to_privilege; // 玩家所有的特权
|
private Map<UUID, Map<Integer, PlayerPrivilegeDTO>> player_uuid_to_privilege; // 玩家所有的特权
|
||||||
private Map<UUID, Integer> player_current_dominion; // 玩家当前所在领地
|
private Map<UUID, Integer> player_current_dominion; // 玩家当前所在领地
|
||||||
|
private Map<Integer, List<Integer>> dominion_children;
|
||||||
}
|
}
|
||||||
|
@ -172,9 +172,9 @@ public class Database {
|
|||||||
query(sql);
|
query(sql);
|
||||||
|
|
||||||
// 1.5.0
|
// 1.5.0
|
||||||
sql = "ALTER TABLE dominion ADD hopper BOOLEAN NOT NULL DEFAULT FALSE;";
|
sql = "ALTER TABLE dominion ADD COLUMN IF NOT EXISTS hopper BOOLEAN NOT NULL DEFAULT FALSE;";
|
||||||
query(sql);
|
query(sql);
|
||||||
sql = "ALTER TABLE player_privilege ADD hopper BOOLEAN NOT NULL DEFAULT FALSE;";
|
sql = "ALTER TABLE player_privilege ADD COLUMN IF NOT EXISTS hopper BOOLEAN NOT NULL DEFAULT FALSE;";
|
||||||
query(sql);
|
query(sql);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user