mirror of
https://github.com/ColdeZhang/Dominion.git
synced 2024-10-19 05:26:41 +08:00
重构了权限框架实现逻辑,项目整体更加精简、易扩展
This commit is contained in:
parent
ad69690e09
commit
2fdda7220f
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.24.5-beta</version>
|
<version>1.25.0-beta</version>
|
||||||
<packaging>jar</packaging>
|
<packaging>jar</packaging>
|
||||||
|
|
||||||
<name>Dominion</name>
|
<name>Dominion</name>
|
||||||
|
@ -15,6 +15,8 @@ import java.util.concurrent.ConcurrentHashMap;
|
|||||||
import java.util.concurrent.atomic.AtomicBoolean;
|
import java.util.concurrent.atomic.AtomicBoolean;
|
||||||
import java.util.concurrent.atomic.AtomicLong;
|
import java.util.concurrent.atomic.AtomicLong;
|
||||||
|
|
||||||
|
import static cn.lunadeer.dominion.events.Apis.checkFlag;
|
||||||
|
|
||||||
public class Cache {
|
public class Cache {
|
||||||
|
|
||||||
public Cache() {
|
public Cache() {
|
||||||
@ -180,16 +182,7 @@ public class Cache {
|
|||||||
* @param dominion 领地
|
* @param dominion 领地
|
||||||
*/
|
*/
|
||||||
private void lightOrNot(Player player, DominionDTO dominion) {
|
private void lightOrNot(Player player, DominionDTO dominion) {
|
||||||
if (dominion == null) {
|
player.setGlowing(checkFlag(dominion, Flag.GLOW, player, null));
|
||||||
player.setGlowing(false);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
PlayerPrivilegeDTO privilege = getPlayerPrivilege(player, dominion);
|
|
||||||
if (privilege != null) {
|
|
||||||
player.setGlowing(privilege.getGlow());
|
|
||||||
} else {
|
|
||||||
player.setGlowing(dominion.getFlagValue(Flag.GLOW));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private List<DominionDTO> getDominionsParentAndChildren(Location loc) {
|
private List<DominionDTO> getDominionsParentAndChildren(Location loc) {
|
||||||
|
@ -4,6 +4,7 @@ import cn.lunadeer.dominion.Cache;
|
|||||||
import cn.lunadeer.dominion.Dominion;
|
import cn.lunadeer.dominion.Dominion;
|
||||||
import cn.lunadeer.dominion.controllers.DominionController;
|
import cn.lunadeer.dominion.controllers.DominionController;
|
||||||
import cn.lunadeer.dominion.dtos.DominionDTO;
|
import cn.lunadeer.dominion.dtos.DominionDTO;
|
||||||
|
import cn.lunadeer.dominion.dtos.Flag;
|
||||||
import cn.lunadeer.dominion.dtos.PlayerPrivilegeDTO;
|
import cn.lunadeer.dominion.dtos.PlayerPrivilegeDTO;
|
||||||
import cn.lunadeer.minecraftpluginutils.Teleport;
|
import cn.lunadeer.minecraftpluginutils.Teleport;
|
||||||
import org.bukkit.Location;
|
import org.bukkit.Location;
|
||||||
@ -366,12 +367,12 @@ public class DominionOperate {
|
|||||||
}
|
}
|
||||||
PlayerPrivilegeDTO privilegeDTO = PlayerPrivilegeDTO.select(player.getUniqueId(), dominionDTO.getId());
|
PlayerPrivilegeDTO privilegeDTO = PlayerPrivilegeDTO.select(player.getUniqueId(), dominionDTO.getId());
|
||||||
if (privilegeDTO == null) {
|
if (privilegeDTO == null) {
|
||||||
if (!dominionDTO.getTeleport()) {
|
if (!dominionDTO.getFlagValue(Flag.TELEPORT)) {
|
||||||
Dominion.notification.error(sender, "此领地禁止传送");
|
Dominion.notification.error(sender, "此领地禁止传送");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if (!privilegeDTO.getTeleport()) {
|
if (!privilegeDTO.getFlagValue(Flag.TELEPORT)) {
|
||||||
Dominion.notification.error(sender, "你不被允许传送到这个领地");
|
Dominion.notification.error(sender, "你不被允许传送到这个领地");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -2,6 +2,7 @@ package cn.lunadeer.dominion.commands;
|
|||||||
|
|
||||||
import cn.lunadeer.dominion.controllers.DominionController;
|
import cn.lunadeer.dominion.controllers.DominionController;
|
||||||
import cn.lunadeer.dominion.dtos.DominionDTO;
|
import cn.lunadeer.dominion.dtos.DominionDTO;
|
||||||
|
import cn.lunadeer.dominion.dtos.Flag;
|
||||||
import cn.lunadeer.dominion.dtos.PlayerPrivilegeDTO;
|
import cn.lunadeer.dominion.dtos.PlayerPrivilegeDTO;
|
||||||
import org.bukkit.command.CommandSender;
|
import org.bukkit.command.CommandSender;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
@ -15,45 +16,13 @@ import static cn.lunadeer.dominion.commands.Apis.playerOnly;
|
|||||||
public class Helper {
|
public class Helper {
|
||||||
|
|
||||||
public static List<String> dominionFlags() {
|
public static List<String> dominionFlags() {
|
||||||
return Arrays.asList(
|
List<Flag> flags = Flag.getDominionFlagsEnabled();
|
||||||
"anchor", "animal_killing", "anvil",
|
return Arrays.asList(flags.stream().map(Flag::getFlagName).toArray(String[]::new));
|
||||||
"beacon", "bed", "brew", "break", "button",
|
|
||||||
"cake", "container", "craft", "creeper_explode", "comparer",
|
|
||||||
"door", "dye",
|
|
||||||
"egg", "enchant", "ender_man", "ender_pearl",
|
|
||||||
"feed", "fire_spread", "flow_in_protection",
|
|
||||||
"glow",
|
|
||||||
"harvest", "honey", "hook", "hopper",
|
|
||||||
"ignite",
|
|
||||||
"lever",
|
|
||||||
"mob_drop_item", "monster_killing", "move",
|
|
||||||
"place", "pressure",
|
|
||||||
"riding", "repeater",
|
|
||||||
"shear", "shoot", "show_border",
|
|
||||||
"teleport", "tnt_explode", "trade", "trample",
|
|
||||||
"vehicle_destroy",
|
|
||||||
"vehicle_spawn",
|
|
||||||
"wither_spawn");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static List<String> playerPrivileges() {
|
public static List<String> playerPrivileges() {
|
||||||
return Arrays.asList(
|
List<Flag> flags = Flag.getPrivilegeFlagsEnabled();
|
||||||
"admin", "anchor", "animal_killing", "anvil",
|
return Arrays.asList(flags.stream().map(Flag::getFlagName).toArray(String[]::new));
|
||||||
"beacon", "bed", "brew", "break", "button",
|
|
||||||
"cake", "container", "craft", "comparer",
|
|
||||||
"door", "dye",
|
|
||||||
"egg", "enchant", "ender_pearl",
|
|
||||||
"feed",
|
|
||||||
"glow",
|
|
||||||
"harvest", "honey", "hook", "hopper",
|
|
||||||
"ignite",
|
|
||||||
"lever",
|
|
||||||
"monster_killing", "move",
|
|
||||||
"place", "pressure", "riding", "repeater",
|
|
||||||
"shear", "shoot",
|
|
||||||
"teleport", "trade",
|
|
||||||
"vehicle_destroy",
|
|
||||||
"vehicle_spawn");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -2,6 +2,7 @@ package cn.lunadeer.dominion.controllers;
|
|||||||
|
|
||||||
import cn.lunadeer.dominion.Dominion;
|
import cn.lunadeer.dominion.Dominion;
|
||||||
import cn.lunadeer.dominion.dtos.DominionDTO;
|
import cn.lunadeer.dominion.dtos.DominionDTO;
|
||||||
|
import cn.lunadeer.dominion.dtos.Flag;
|
||||||
import cn.lunadeer.dominion.dtos.PlayerDTO;
|
import cn.lunadeer.dominion.dtos.PlayerDTO;
|
||||||
import cn.lunadeer.dominion.dtos.PlayerPrivilegeDTO;
|
import cn.lunadeer.dominion.dtos.PlayerPrivilegeDTO;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
@ -98,129 +99,20 @@ public class PrivilegeController {
|
|||||||
privilege = createPlayerPrivilege(operator, player.getUuid(), dominion);
|
privilege = createPlayerPrivilege(operator, player.getUuid(), dominion);
|
||||||
if (privilege == null) return false;
|
if (privilege == null) return false;
|
||||||
}
|
}
|
||||||
switch (flag) {
|
if (flag.equals("admin")) {
|
||||||
case "admin":
|
|
||||||
if (notOwner(operator, dominion)) {
|
if (notOwner(operator, dominion)) {
|
||||||
Dominion.notification.error(operator, "你不是领地 %s 的拥有者,无法设置其他玩家为管理员", dominionName);
|
Dominion.notification.error(operator, "你不是领地 %s 的拥有者,无法设置其他玩家为管理员", dominionName);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
privilege.setAdmin(value);
|
privilege.setAdmin(value);
|
||||||
break;
|
} else {
|
||||||
case "anchor":
|
Flag f = Flag.getFlag(flag);
|
||||||
privilege.setAnchor(value);
|
if (f == null) {
|
||||||
break;
|
|
||||||
case "animal_killing":
|
|
||||||
privilege.setAnimalKilling(value);
|
|
||||||
break;
|
|
||||||
case "anvil":
|
|
||||||
privilege.setAnvil(value);
|
|
||||||
break;
|
|
||||||
case "beacon":
|
|
||||||
privilege.setBeacon(value);
|
|
||||||
break;
|
|
||||||
case "bed":
|
|
||||||
privilege.setBed(value);
|
|
||||||
break;
|
|
||||||
case "brew":
|
|
||||||
privilege.setBrew(value);
|
|
||||||
break;
|
|
||||||
case "break":
|
|
||||||
privilege.setBreak(value);
|
|
||||||
break;
|
|
||||||
case "button":
|
|
||||||
privilege.setButton(value);
|
|
||||||
break;
|
|
||||||
case "cake":
|
|
||||||
privilege.setCake(value);
|
|
||||||
break;
|
|
||||||
case "container":
|
|
||||||
privilege.setContainer(value);
|
|
||||||
break;
|
|
||||||
case "craft":
|
|
||||||
privilege.setCraft(value);
|
|
||||||
break;
|
|
||||||
case "comparer":
|
|
||||||
privilege.setComparer(value);
|
|
||||||
break;
|
|
||||||
case "door":
|
|
||||||
privilege.setDoor(value);
|
|
||||||
break;
|
|
||||||
case "dye":
|
|
||||||
privilege.setDye(value);
|
|
||||||
break;
|
|
||||||
case "egg":
|
|
||||||
privilege.setEgg(value);
|
|
||||||
break;
|
|
||||||
case "enchant":
|
|
||||||
privilege.setEnchant(value);
|
|
||||||
break;
|
|
||||||
case "ender_pearl":
|
|
||||||
privilege.setEnderPearl(value);
|
|
||||||
break;
|
|
||||||
case "feed":
|
|
||||||
privilege.setFeed(value);
|
|
||||||
break;
|
|
||||||
case "glow":
|
|
||||||
privilege.setGlow(value);
|
|
||||||
break;
|
|
||||||
case "harvest":
|
|
||||||
privilege.setHarvest(value);
|
|
||||||
break;
|
|
||||||
case "honey":
|
|
||||||
privilege.setHoney(value);
|
|
||||||
break;
|
|
||||||
case "hook":
|
|
||||||
privilege.setHook(value);
|
|
||||||
break;
|
|
||||||
case "hopper":
|
|
||||||
privilege.setHopper(value);
|
|
||||||
break;
|
|
||||||
case "ignite":
|
|
||||||
privilege.setIgnite(value);
|
|
||||||
break;
|
|
||||||
case "lever":
|
|
||||||
privilege.setLever(value);
|
|
||||||
break;
|
|
||||||
case "monster_killing":
|
|
||||||
privilege.setMonsterKilling(value);
|
|
||||||
break;
|
|
||||||
case "move":
|
|
||||||
privilege.setMove(value);
|
|
||||||
break;
|
|
||||||
case "place":
|
|
||||||
privilege.setPlace(value);
|
|
||||||
break;
|
|
||||||
case "pressure":
|
|
||||||
privilege.setPressure(value);
|
|
||||||
break;
|
|
||||||
case "riding":
|
|
||||||
privilege.setRiding(value);
|
|
||||||
break;
|
|
||||||
case "repeater":
|
|
||||||
privilege.setRepeater(value);
|
|
||||||
break;
|
|
||||||
case "shear":
|
|
||||||
privilege.setShear(value);
|
|
||||||
break;
|
|
||||||
case "shoot":
|
|
||||||
privilege.setShoot(value);
|
|
||||||
break;
|
|
||||||
case "teleport":
|
|
||||||
privilege.setTeleport(value);
|
|
||||||
break;
|
|
||||||
case "trade":
|
|
||||||
privilege.setTrade(value);
|
|
||||||
break;
|
|
||||||
case "vehicle_destroy":
|
|
||||||
privilege.setVehicleDestroy(value);
|
|
||||||
break;
|
|
||||||
case "vehicle_spawn":
|
|
||||||
privilege.setVehicleSpawn(value);
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
Dominion.notification.error(operator, "未知的领地权限 %s", flag);
|
Dominion.notification.error(operator, "未知的领地权限 %s", flag);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
privilege.setFlagValue(f, value);
|
||||||
|
}
|
||||||
Dominion.notification.info(operator, "设置玩家在领地 %s 的权限 %s 为 %s", dominionName, flag, value);
|
Dominion.notification.info(operator, "设置玩家在领地 %s 的权限 %s 为 %s", dominionName, flag, value);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@ -255,24 +147,7 @@ public class PrivilegeController {
|
|||||||
Dominion.notification.error(operator, "你不能给自己设置特权");
|
Dominion.notification.error(operator, "你不能给自己设置特权");
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
PlayerPrivilegeDTO privilege = new PlayerPrivilegeDTO(player, dom.getId(),
|
PlayerPrivilegeDTO privilege = new PlayerPrivilegeDTO(player, dom);
|
||||||
dom.getAnchor(), dom.getAnimalKilling(), dom.getAnvil(),
|
|
||||||
dom.getBeacon(), dom.getBed(), dom.getBrew(), dom.getBreak(), dom.getButton(),
|
|
||||||
dom.getCake(), dom.getContainer(), dom.getCraft(), dom.getComparer(),
|
|
||||||
dom.getDoor(), dom.getDye(),
|
|
||||||
dom.getEgg(), dom.getEnchant(), dom.getEnderPearl(),
|
|
||||||
dom.getFeed(),
|
|
||||||
dom.getGlow(),
|
|
||||||
dom.getHarvest(), dom.getHoney(), dom.getHook(), dom.getHopper(),
|
|
||||||
dom.getIgnite(),
|
|
||||||
dom.getLever(),
|
|
||||||
dom.getMonsterKilling(), dom.getMove(),
|
|
||||||
dom.getPlace(), dom.getPressure(),
|
|
||||||
dom.getRiding(), dom.getRepeater(),
|
|
||||||
dom.getShear(), dom.getShoot(),
|
|
||||||
dom.getTeleport(), dom.getTrade(),
|
|
||||||
dom.getVehicleDestroy(),
|
|
||||||
dom.getVehicleSpawn());
|
|
||||||
privilege = PlayerPrivilegeDTO.insert(privilege);
|
privilege = PlayerPrivilegeDTO.insert(privilege);
|
||||||
if (privilege == null) {
|
if (privilege == null) {
|
||||||
Dominion.notification.error(operator, "创建玩家特权失败,可能是此玩家已存在特权");
|
Dominion.notification.error(operator, "创建玩家特权失败,可能是此玩家已存在特权");
|
||||||
|
@ -32,7 +32,7 @@ public class DominionDTO {
|
|||||||
Integer parentDomId = rs.getInt("parent_dom_id");
|
Integer parentDomId = rs.getInt("parent_dom_id");
|
||||||
String tp_location = rs.getString("tp_location");
|
String tp_location = rs.getString("tp_location");
|
||||||
Map<Flag, Boolean> flags = new HashMap<>();
|
Map<Flag, Boolean> flags = new HashMap<>();
|
||||||
for (Flag f : Flag.getDominionFlags()) {
|
for (Flag f : Flag.getDominionFlagsEnabled()) {
|
||||||
flags.put(f, rs.getBoolean(f.getFlagName()));
|
flags.put(f, rs.getBoolean(f.getFlagName()));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -106,8 +106,17 @@ public class DominionDTO {
|
|||||||
|
|
||||||
public static DominionDTO insert(DominionDTO dominion) {
|
public static DominionDTO insert(DominionDTO dominion) {
|
||||||
String sql = "INSERT INTO dominion (" +
|
String sql = "INSERT INTO dominion (" +
|
||||||
"owner, name, world, x1, y1, z1, x2, y2, z2" +
|
"owner, name, world, x1, y1, z1, x2, y2, z2, ";
|
||||||
") VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?) RETURNING *;";
|
for (Flag f : Flag.getAllDominionFlags()) {
|
||||||
|
sql += f.getFlagName() + ", ";
|
||||||
|
}
|
||||||
|
sql += "tp_location";
|
||||||
|
sql += ") VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ";
|
||||||
|
for (Flag f : Flag.getAllDominionFlags()) {
|
||||||
|
sql += f.getDefaultValue() + ", ";
|
||||||
|
}
|
||||||
|
sql += "'default'";
|
||||||
|
sql += ") RETURNING *;";
|
||||||
List<DominionDTO> dominions = query(sql,
|
List<DominionDTO> dominions = query(sql,
|
||||||
dominion.getOwner(),
|
dominion.getOwner(),
|
||||||
dominion.getName(),
|
dominion.getName(),
|
||||||
@ -148,7 +157,7 @@ public class DominionDTO {
|
|||||||
"parent_dom_id = " + dominion.getParentDomId() + ", " +
|
"parent_dom_id = " + dominion.getParentDomId() + ", " +
|
||||||
"join_message = ?," +
|
"join_message = ?," +
|
||||||
"leave_message = ?,";
|
"leave_message = ?,";
|
||||||
for (Flag f : Flag.getDominionFlags()) {
|
for (Flag f : Flag.getDominionFlagsEnabled()) {
|
||||||
sql += f.getFlagName() + " = " + dominion.getFlagValue(f) + ",";
|
sql += f.getFlagName() + " = " + dominion.getFlagValue(f) + ",";
|
||||||
}
|
}
|
||||||
sql += "tp_location = ?" +
|
sql += "tp_location = ?" +
|
||||||
@ -185,19 +194,7 @@ public class DominionDTO {
|
|||||||
this.joinMessage = joinMessage;
|
this.joinMessage = joinMessage;
|
||||||
this.leaveMessage = leaveMessage;
|
this.leaveMessage = leaveMessage;
|
||||||
this.flags.putAll(flags);
|
this.flags.putAll(flags);
|
||||||
if (Objects.equals(tp_location, "default")) {
|
this.tp_location = tp_location;
|
||||||
this.tp_location = null;
|
|
||||||
} else {
|
|
||||||
// 0:0:0
|
|
||||||
String[] loc = tp_location.split(":");
|
|
||||||
World w = Dominion.instance.getServer().getWorld(world);
|
|
||||||
if (loc.length == 3 && w != null) {
|
|
||||||
this.tp_location = new Location(w, Integer.parseInt(loc[0]), Integer.parseInt(loc[1]), Integer.parseInt(loc[2]));
|
|
||||||
} else {
|
|
||||||
Dominion.logger.warn("领地传送点数据异常: %s", tp_location);
|
|
||||||
this.tp_location = null;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -236,7 +233,7 @@ public class DominionDTO {
|
|||||||
private String joinMessage = "欢迎";
|
private String joinMessage = "欢迎";
|
||||||
private String leaveMessage = "再见";
|
private String leaveMessage = "再见";
|
||||||
private final Map<Flag, Boolean> flags = new HashMap<>();
|
private final Map<Flag, Boolean> flags = new HashMap<>();
|
||||||
private Location tp_location = null;
|
private String tp_location;
|
||||||
|
|
||||||
// getters and setters
|
// getters and setters
|
||||||
public Integer getId() {
|
public Integer getId() {
|
||||||
@ -364,6 +361,7 @@ public class DominionDTO {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public Boolean getFlagValue(Flag flag) {
|
public Boolean getFlagValue(Flag flag) {
|
||||||
|
if (!flags.containsKey(flag)) return flag.getDefaultValue();
|
||||||
return flags.get(flag);
|
return flags.get(flag);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -383,11 +381,24 @@ public class DominionDTO {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public Location getTpLocation() {
|
public Location getTpLocation() {
|
||||||
return tp_location;
|
if (Objects.equals(tp_location, "default")) {
|
||||||
|
return null;
|
||||||
|
} else {
|
||||||
|
// 0:0:0
|
||||||
|
String[] loc = tp_location.split(":");
|
||||||
|
World w = Dominion.instance.getServer().getWorld(world);
|
||||||
|
if (loc.length == 3 && w != null) {
|
||||||
|
return new Location(w, Integer.parseInt(loc[0]), Integer.parseInt(loc[1]), Integer.parseInt(loc[2]));
|
||||||
|
} else {
|
||||||
|
Dominion.logger.warn("领地传送点数据异常: %s", tp_location);
|
||||||
|
Dominion.logger.debug("world: %s, loc.length: %d", world, loc.length);
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public DominionDTO setTpLocation(Location loc) {
|
public DominionDTO setTpLocation(Location loc) {
|
||||||
this.tp_location = loc;
|
this.tp_location = loc.getBlockX() + ":" + loc.getBlockY() + ":" + loc.getBlockZ();
|
||||||
return update(this);
|
return update(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -11,7 +11,7 @@ public enum Flag {
|
|||||||
BEACON("beacon", "信标交互", "是否允许与信标交互", false, false, true),
|
BEACON("beacon", "信标交互", "是否允许与信标交互", false, false, true),
|
||||||
BED("bed", "床交互", "是否允许使用床睡觉或设置重生点", false, false, true),
|
BED("bed", "床交互", "是否允许使用床睡觉或设置重生点", false, false, true),
|
||||||
BREW("brew", "使用酿造台", "是否可以使用酿造台", false, false, true),
|
BREW("brew", "使用酿造台", "是否可以使用酿造台", false, false, true),
|
||||||
BREAK_BLOCK("break_block", "破坏方块", "是否可以破坏方块", false, false, true),
|
BREAK_BLOCK("break", "破坏方块", "是否可以破坏方块(包括:一般方块、展示框)", false, false, true),
|
||||||
BUTTON("button", "使用按钮", "是否可以使用各种材质的按钮", false, false, true),
|
BUTTON("button", "使用按钮", "是否可以使用各种材质的按钮", false, false, true),
|
||||||
CAKE("cake", "吃蛋糕", "是否可以吃蛋糕", false, false, true),
|
CAKE("cake", "吃蛋糕", "是否可以吃蛋糕", false, false, true),
|
||||||
CONTAINER("container", "一般容器", "包含:箱子/木桶/潜影盒/盔甲架/展示框", false, false, true),
|
CONTAINER("container", "一般容器", "包含:箱子/木桶/潜影盒/盔甲架/展示框", false, false, true),
|
||||||
@ -36,7 +36,8 @@ public enum Flag {
|
|||||||
LEVER("lever", "使用拉杆", "是否可以使用拉杆", false, false, true),
|
LEVER("lever", "使用拉杆", "是否可以使用拉杆", false, false, true),
|
||||||
MOB_DROP_ITEM("mob_drop_item", "生物战利品掉落", "生物死亡时是否产生凋落物", true, true, true),
|
MOB_DROP_ITEM("mob_drop_item", "生物战利品掉落", "生物死亡时是否产生凋落物", true, true, true),
|
||||||
MONSTER_KILLING("monster_killing", "对怪物造成伤害", "玩家是否可以对怪物造成伤害", false, false, true),
|
MONSTER_KILLING("monster_killing", "对怪物造成伤害", "玩家是否可以对怪物造成伤害", false, false, true),
|
||||||
PLACE("place", "放置方块", "是否可以放置方块", false, false, true),
|
MOVE("move", "移动", "是否可以移动", true, false, true),
|
||||||
|
PLACE("place", "放置方块", "是否可以放置方块(包括:一般方块、展示框、岩浆、水)", false, false, true),
|
||||||
PRESSURE("pressure", "压力板交互", "是否可以触发各种材质的压力板", false, false, true),
|
PRESSURE("pressure", "压力板交互", "是否可以触发各种材质的压力板", false, false, true),
|
||||||
RIDING("riding", "骑乘载具", "是否可以骑乘各种载具", false, false, true),
|
RIDING("riding", "骑乘载具", "是否可以骑乘各种载具", false, false, true),
|
||||||
REPEATER("repeater", "中继器交互", "是否可以与中继器交互", false, false, true),
|
REPEATER("repeater", "中继器交互", "是否可以与中继器交互", false, false, true),
|
||||||
@ -99,7 +100,11 @@ public enum Flag {
|
|||||||
this.enable = enable;
|
this.enable = enable;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static List<Flag> getDominionFlags() {
|
public static List<Flag> getAllFlags() {
|
||||||
|
return Arrays.asList(Flag.values());
|
||||||
|
}
|
||||||
|
|
||||||
|
public static List<Flag> getDominionFlagsEnabled() {
|
||||||
List<Flag> flags = new ArrayList<>();
|
List<Flag> flags = new ArrayList<>();
|
||||||
for (Flag flag : Flag.values()) {
|
for (Flag flag : Flag.values()) {
|
||||||
if (!flag.enable) {
|
if (!flag.enable) {
|
||||||
@ -110,7 +115,12 @@ public enum Flag {
|
|||||||
return flags;
|
return flags;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static List<Flag> getPrivilegeFlags() {
|
public static List<Flag> getAllDominionFlags() {
|
||||||
|
return new ArrayList<>(Arrays.asList(Flag.values()));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public static List<Flag> getPrivilegeFlagsEnabled() {
|
||||||
List<Flag> flags = new ArrayList<>();
|
List<Flag> flags = new ArrayList<>();
|
||||||
for (Flag flag : Flag.values()) {
|
for (Flag flag : Flag.values()) {
|
||||||
if (flag.dominion_only) {
|
if (flag.dominion_only) {
|
||||||
@ -124,6 +134,17 @@ public enum Flag {
|
|||||||
return flags;
|
return flags;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static List<Flag> getAllPrivilegeFlags() {
|
||||||
|
List<Flag> flags = new ArrayList<>();
|
||||||
|
for (Flag flag : Flag.values()) {
|
||||||
|
if (flag.dominion_only) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
flags.add(flag);
|
||||||
|
}
|
||||||
|
return flags;
|
||||||
|
}
|
||||||
|
|
||||||
public static Flag getFlag(String flagName) {
|
public static Flag getFlag(String flagName) {
|
||||||
return Arrays.stream(Flag.values()).filter(flag -> flag.getFlagName().equals(flagName)).findFirst().orElse(null);
|
return Arrays.stream(Flag.values()).filter(flag -> flag.getFlagName().equals(flagName)).findFirst().orElse(null);
|
||||||
}
|
}
|
||||||
|
@ -4,51 +4,26 @@ import cn.lunadeer.dominion.Cache;
|
|||||||
import cn.lunadeer.dominion.Dominion;
|
import cn.lunadeer.dominion.Dominion;
|
||||||
|
|
||||||
import java.sql.ResultSet;
|
import java.sql.ResultSet;
|
||||||
import java.util.ArrayList;
|
import java.util.*;
|
||||||
import java.util.List;
|
|
||||||
import java.util.UUID;
|
|
||||||
|
|
||||||
public class PlayerPrivilegeDTO {
|
public class PlayerPrivilegeDTO {
|
||||||
|
|
||||||
public static PlayerPrivilegeDTO insert(PlayerPrivilegeDTO player) {
|
public static PlayerPrivilegeDTO insert(PlayerPrivilegeDTO player) {
|
||||||
String sql = "INSERT INTO player_privilege (player_uuid, admin, dom_id, " +
|
String sql = "INSERT INTO player_privilege (player_uuid, admin, dom_id, ";
|
||||||
"anchor, animal_killing, anvil, " +
|
|
||||||
"beacon, bed, brew, break, button, " +
|
for (Flag f : Flag.getAllPrivilegeFlags()) {
|
||||||
"cake, container, craft, comparer, " +
|
sql += f.getFlagName() + ", ";
|
||||||
"door, dye, " +
|
}
|
||||||
"egg, enchant, ender_pearl, " +
|
sql = sql.substring(0, sql.length() - 2);
|
||||||
"feed, " +
|
|
||||||
"glow, " +
|
sql += ") VALUES ('" + player.getPlayerUUID() + "', " + player.getAdmin() + ", " + player.getDomID() + ", ";
|
||||||
"harvest, honey, hook, hopper, " +
|
|
||||||
"ignite, " +
|
for (Flag f : Flag.getAllPrivilegeFlags()) {
|
||||||
"lever, " +
|
sql += player.getFlagValue(f) + ", ";
|
||||||
"monster_killing, move, " +
|
}
|
||||||
"place, pressure, " +
|
sql = sql.substring(0, sql.length() - 2);
|
||||||
"riding, repeater, " +
|
|
||||||
"shear, shoot, " +
|
sql += ") RETURNING *;";
|
||||||
"teleport, trade, " +
|
|
||||||
"vehicle_destroy, " +
|
|
||||||
"vehicle_spawn" +
|
|
||||||
") VALUES (" +
|
|
||||||
"'" + player.getPlayerUUID() + "', " + player.getAdmin() + ", " + player.getDomID() + ", " +
|
|
||||||
player.getAnchor() + ", " + player.getAnimalKilling() + ", " + player.getAnvil() + ", " +
|
|
||||||
player.getBeacon() + ", " + player.getBed() + ", " + player.getBrew() + ", " + player.getBreak() + ", " + player.getButton() + ", " +
|
|
||||||
player.getCake() + ", " + player.getContainer() + ", " + player.getCraft() + ", " + player.getComparer() + ", " +
|
|
||||||
player.getDoor() + ", " + player.getDye() + ", " +
|
|
||||||
player.getEgg() + ", " + player.getEnchant() + ", " + player.getEnderPearl() + ", " +
|
|
||||||
player.getFeed() + ", " +
|
|
||||||
player.getGlow() + ", " +
|
|
||||||
player.getHarvest() + ", " + player.getHoney() + ", " + player.getHook() + ", " + player.getHopper() + ", " +
|
|
||||||
player.getIgnite() + ", " +
|
|
||||||
player.getLever() + ", " +
|
|
||||||
player.getMonsterKilling() + ", " + player.getMove() + ", " +
|
|
||||||
player.getPlace() + ", " + player.getPressure() + ", " +
|
|
||||||
player.getRiding() + ", " + player.getRepeater() + ", " +
|
|
||||||
player.getShear() + ", " + player.getShoot() + ", " +
|
|
||||||
player.getTeleport() + ", " + player.getTrade() + ", " +
|
|
||||||
player.getVehicleDestroy() + ", " +
|
|
||||||
player.getVehicleSpawn() + " " +
|
|
||||||
") RETURNING *;";
|
|
||||||
List<PlayerPrivilegeDTO> players = query(sql);
|
List<PlayerPrivilegeDTO> players = query(sql);
|
||||||
if (players.size() == 0) return null;
|
if (players.size() == 0) return null;
|
||||||
return players.get(0);
|
return players.get(0);
|
||||||
@ -85,43 +60,6 @@ public class PlayerPrivilegeDTO {
|
|||||||
private final UUID playerUUID;
|
private final UUID playerUUID;
|
||||||
private Boolean admin;
|
private Boolean admin;
|
||||||
private final Integer domID;
|
private final Integer domID;
|
||||||
private Boolean anchor;
|
|
||||||
private Boolean animalKilling;
|
|
||||||
private Boolean anvil;
|
|
||||||
private Boolean beacon;
|
|
||||||
private Boolean bed;
|
|
||||||
private Boolean brew;
|
|
||||||
private Boolean breakBlock;
|
|
||||||
private Boolean button;
|
|
||||||
private Boolean cake;
|
|
||||||
private Boolean container;
|
|
||||||
private Boolean craft;
|
|
||||||
private Boolean comparer;
|
|
||||||
private Boolean door;
|
|
||||||
private Boolean dye;
|
|
||||||
private Boolean egg;
|
|
||||||
private Boolean enchant;
|
|
||||||
private Boolean enderPearl;
|
|
||||||
private Boolean feed;
|
|
||||||
private Boolean glow;
|
|
||||||
private Boolean harvest;
|
|
||||||
private Boolean honey;
|
|
||||||
private Boolean hook;
|
|
||||||
private Boolean hopper;
|
|
||||||
private Boolean ignite;
|
|
||||||
private Boolean lever;
|
|
||||||
private Boolean monsterKilling;
|
|
||||||
private Boolean move;
|
|
||||||
private Boolean place;
|
|
||||||
private Boolean pressure;
|
|
||||||
private Boolean riding;
|
|
||||||
private Boolean repeater;
|
|
||||||
private Boolean shear;
|
|
||||||
private Boolean shoot;
|
|
||||||
private Boolean teleport;
|
|
||||||
private Boolean trade;
|
|
||||||
private Boolean vehicleDestroy;
|
|
||||||
private Boolean vehicleSpawn;
|
|
||||||
|
|
||||||
public Integer getId() {
|
public Integer getId() {
|
||||||
return id;
|
return id;
|
||||||
@ -139,336 +77,15 @@ public class PlayerPrivilegeDTO {
|
|||||||
return domID;
|
return domID;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Boolean getAnchor() {
|
private final Map<Flag, Boolean> flags = new HashMap<>();
|
||||||
return anchor;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Boolean getAnimalKilling() {
|
|
||||||
return animalKilling;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Boolean getAnvil() {
|
|
||||||
return anvil;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Boolean getBeacon() {
|
|
||||||
return beacon;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Boolean getBed() {
|
|
||||||
return bed;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Boolean getBrew() {
|
|
||||||
return brew;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Boolean getBreak() {
|
|
||||||
return breakBlock;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Boolean getButton() {
|
|
||||||
return button;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Boolean getCake() {
|
|
||||||
return cake;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Boolean getContainer() {
|
|
||||||
return container;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Boolean getCraft() {
|
|
||||||
return craft;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Boolean getComparer() {
|
|
||||||
return comparer;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Boolean getDoor() {
|
|
||||||
return door;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Boolean getDye() {
|
|
||||||
return dye;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Boolean getEgg() {
|
|
||||||
return egg;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Boolean getEnchant() {
|
|
||||||
return enchant;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Boolean getEnderPearl() {
|
|
||||||
return enderPearl;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Boolean getFeed() {
|
|
||||||
return feed;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Boolean getGlow() {
|
|
||||||
return glow;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Boolean getHarvest() {
|
|
||||||
return harvest;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Boolean getHoney() {
|
|
||||||
return honey;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Boolean getHook() {
|
|
||||||
return hook;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Boolean getHopper() {
|
|
||||||
return hopper;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Boolean getIgnite() {
|
|
||||||
return ignite;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Boolean getLever() {
|
|
||||||
return lever;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Boolean getMonsterKilling() {
|
|
||||||
return monsterKilling;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Boolean getMove() {
|
|
||||||
return move;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Boolean getPlace() {
|
|
||||||
return place;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Boolean getPressure() {
|
|
||||||
return pressure;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Boolean getRiding() {
|
|
||||||
return riding;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Boolean getRepeater() {
|
|
||||||
return repeater;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Boolean getShear() {
|
|
||||||
return shear;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Boolean getShoot() {
|
|
||||||
return shoot;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Boolean getTeleport() {
|
|
||||||
return teleport;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Boolean getTrade() {
|
|
||||||
return trade;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Boolean getVehicleDestroy() {
|
|
||||||
return vehicleDestroy;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Boolean getVehicleSpawn() {
|
|
||||||
return vehicleSpawn;
|
|
||||||
}
|
|
||||||
|
|
||||||
public PlayerPrivilegeDTO setAnchor(Boolean anchor) {
|
|
||||||
this.anchor = anchor;
|
|
||||||
return update(this);
|
|
||||||
}
|
|
||||||
|
|
||||||
public PlayerPrivilegeDTO setAnimalKilling(Boolean animalKilling) {
|
|
||||||
this.animalKilling = animalKilling;
|
|
||||||
return update(this);
|
|
||||||
}
|
|
||||||
|
|
||||||
public PlayerPrivilegeDTO setAnvil(Boolean anvil) {
|
|
||||||
this.anvil = anvil;
|
|
||||||
return update(this);
|
|
||||||
}
|
|
||||||
|
|
||||||
public PlayerPrivilegeDTO setBeacon(Boolean beacon) {
|
|
||||||
this.beacon = beacon;
|
|
||||||
return update(this);
|
|
||||||
}
|
|
||||||
|
|
||||||
public PlayerPrivilegeDTO setBed(Boolean bed) {
|
|
||||||
this.bed = bed;
|
|
||||||
return update(this);
|
|
||||||
}
|
|
||||||
|
|
||||||
public PlayerPrivilegeDTO setBrew(Boolean brew) {
|
|
||||||
this.brew = brew;
|
|
||||||
return update(this);
|
|
||||||
}
|
|
||||||
|
|
||||||
public PlayerPrivilegeDTO setBreak(Boolean breakBlock) {
|
|
||||||
this.breakBlock = breakBlock;
|
|
||||||
return update(this);
|
|
||||||
}
|
|
||||||
|
|
||||||
public PlayerPrivilegeDTO setButton(Boolean button) {
|
|
||||||
this.button = button;
|
|
||||||
return update(this);
|
|
||||||
}
|
|
||||||
|
|
||||||
public PlayerPrivilegeDTO setCake(Boolean cake) {
|
|
||||||
this.cake = cake;
|
|
||||||
return update(this);
|
|
||||||
}
|
|
||||||
|
|
||||||
public PlayerPrivilegeDTO setContainer(Boolean container) {
|
|
||||||
this.container = container;
|
|
||||||
return update(this);
|
|
||||||
}
|
|
||||||
|
|
||||||
public PlayerPrivilegeDTO setCraft(Boolean craft) {
|
|
||||||
this.craft = craft;
|
|
||||||
return update(this);
|
|
||||||
}
|
|
||||||
|
|
||||||
public PlayerPrivilegeDTO setComparer(Boolean comparer) {
|
|
||||||
this.comparer = comparer;
|
|
||||||
return update(this);
|
|
||||||
}
|
|
||||||
|
|
||||||
public PlayerPrivilegeDTO setDoor(Boolean door) {
|
|
||||||
this.door = door;
|
|
||||||
return update(this);
|
|
||||||
}
|
|
||||||
|
|
||||||
public PlayerPrivilegeDTO setDye(Boolean dye) {
|
|
||||||
this.dye = dye;
|
|
||||||
return update(this);
|
|
||||||
}
|
|
||||||
|
|
||||||
public PlayerPrivilegeDTO setEgg(Boolean egg) {
|
|
||||||
this.egg = egg;
|
|
||||||
return update(this);
|
|
||||||
}
|
|
||||||
|
|
||||||
public PlayerPrivilegeDTO setEnchant(Boolean enchant) {
|
|
||||||
this.enchant = enchant;
|
|
||||||
return update(this);
|
|
||||||
}
|
|
||||||
|
|
||||||
public PlayerPrivilegeDTO setEnderPearl(Boolean enderPearl) {
|
|
||||||
this.enderPearl = enderPearl;
|
|
||||||
return update(this);
|
|
||||||
}
|
|
||||||
|
|
||||||
public PlayerPrivilegeDTO setFeed(Boolean feed) {
|
|
||||||
this.feed = feed;
|
|
||||||
return update(this);
|
|
||||||
}
|
|
||||||
|
|
||||||
public PlayerPrivilegeDTO setGlow(Boolean glow) {
|
|
||||||
this.glow = glow;
|
|
||||||
return update(this);
|
|
||||||
}
|
|
||||||
|
|
||||||
public PlayerPrivilegeDTO setHoney(Boolean honey) {
|
|
||||||
this.honey = honey;
|
|
||||||
return update(this);
|
|
||||||
}
|
|
||||||
|
|
||||||
public PlayerPrivilegeDTO setHook(Boolean hook) {
|
|
||||||
this.hook = hook;
|
|
||||||
return update(this);
|
|
||||||
}
|
|
||||||
|
|
||||||
public PlayerPrivilegeDTO setHopper(Boolean hopper) {
|
|
||||||
this.hopper = hopper;
|
|
||||||
return update(this);
|
|
||||||
}
|
|
||||||
|
|
||||||
public PlayerPrivilegeDTO setIgnite(Boolean ignite) {
|
|
||||||
this.ignite = ignite;
|
|
||||||
return update(this);
|
|
||||||
}
|
|
||||||
|
|
||||||
public PlayerPrivilegeDTO setLever(Boolean lever) {
|
|
||||||
this.lever = lever;
|
|
||||||
return update(this);
|
|
||||||
}
|
|
||||||
|
|
||||||
public PlayerPrivilegeDTO setMonsterKilling(Boolean monsterKilling) {
|
|
||||||
this.monsterKilling = monsterKilling;
|
|
||||||
return update(this);
|
|
||||||
}
|
|
||||||
|
|
||||||
public PlayerPrivilegeDTO setMove(Boolean move) {
|
|
||||||
this.move = move;
|
|
||||||
return update(this);
|
|
||||||
}
|
|
||||||
|
|
||||||
public PlayerPrivilegeDTO setPlace(Boolean place) {
|
|
||||||
this.place = place;
|
|
||||||
return update(this);
|
|
||||||
}
|
|
||||||
|
|
||||||
public PlayerPrivilegeDTO setPressure(Boolean pressure) {
|
|
||||||
this.pressure = pressure;
|
|
||||||
return update(this);
|
|
||||||
}
|
|
||||||
|
|
||||||
public PlayerPrivilegeDTO setRiding(Boolean riding) {
|
|
||||||
this.riding = riding;
|
|
||||||
return update(this);
|
|
||||||
}
|
|
||||||
|
|
||||||
public PlayerPrivilegeDTO setRepeater(Boolean repeater) {
|
|
||||||
this.repeater = repeater;
|
|
||||||
return update(this);
|
|
||||||
}
|
|
||||||
|
|
||||||
public PlayerPrivilegeDTO setShear(Boolean shear) {
|
|
||||||
this.shear = shear;
|
|
||||||
return update(this);
|
|
||||||
}
|
|
||||||
|
|
||||||
public PlayerPrivilegeDTO setShoot(Boolean shoot) {
|
|
||||||
this.shoot = shoot;
|
|
||||||
return update(this);
|
|
||||||
}
|
|
||||||
|
|
||||||
public PlayerPrivilegeDTO setTeleport(Boolean teleport) {
|
|
||||||
this.teleport = teleport;
|
|
||||||
return update(this);
|
|
||||||
}
|
|
||||||
|
|
||||||
public PlayerPrivilegeDTO setTrade(Boolean trade) {
|
|
||||||
this.trade = trade;
|
|
||||||
return update(this);
|
|
||||||
}
|
|
||||||
|
|
||||||
public PlayerPrivilegeDTO setVehicleDestroy(Boolean vehicleDestroy) {
|
|
||||||
this.vehicleDestroy = vehicleDestroy;
|
|
||||||
return update(this);
|
|
||||||
}
|
|
||||||
|
|
||||||
public PlayerPrivilegeDTO setVehicleSpawn(Boolean vehicleSpawn) {
|
public Boolean getFlagValue(Flag flag) {
|
||||||
this.vehicleSpawn = vehicleSpawn;
|
if (!flags.containsKey(flag)) return flag.getDefaultValue();
|
||||||
return update(this);
|
return flags.get(flag);
|
||||||
}
|
}
|
||||||
|
|
||||||
public PlayerPrivilegeDTO setHarvest(Boolean harvest) {
|
public PlayerPrivilegeDTO setFlagValue(Flag flag, Boolean value) {
|
||||||
this.harvest = harvest;
|
flags.put(flag, value);
|
||||||
return update(this);
|
return update(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -477,104 +94,22 @@ public class PlayerPrivilegeDTO {
|
|||||||
return update(this);
|
return update(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
private PlayerPrivilegeDTO(Integer id, UUID playerUUID, Boolean admin, Integer domID,
|
private PlayerPrivilegeDTO(Integer id, UUID playerUUID, Boolean admin, Integer domID, Map<Flag, Boolean> flags) {
|
||||||
Boolean anchor, Boolean animalKilling, Boolean anvil,
|
|
||||||
Boolean beacon, Boolean bed, Boolean brew, Boolean breakBlock, Boolean button,
|
|
||||||
Boolean cake, Boolean container, Boolean craft, Boolean comparer,
|
|
||||||
Boolean door, Boolean dye,
|
|
||||||
Boolean egg, Boolean enchant, Boolean enderPearl,
|
|
||||||
Boolean feed,
|
|
||||||
Boolean glow,
|
|
||||||
Boolean harvest, Boolean honey, Boolean hook, Boolean hopper,
|
|
||||||
Boolean ignite,
|
|
||||||
Boolean lever,
|
|
||||||
Boolean monsterKilling, Boolean move,
|
|
||||||
Boolean place, Boolean pressure,
|
|
||||||
Boolean riding, Boolean repeater,
|
|
||||||
Boolean shear, Boolean shoot,
|
|
||||||
Boolean teleport, Boolean trade,
|
|
||||||
Boolean vehicleDestroy,
|
|
||||||
Boolean vehicleSpawn) {
|
|
||||||
this.id = id;
|
this.id = id;
|
||||||
this.playerUUID = playerUUID;
|
this.playerUUID = playerUUID;
|
||||||
this.admin = admin;
|
this.admin = admin;
|
||||||
this.domID = domID;
|
this.domID = domID;
|
||||||
this.anchor = anchor;
|
this.flags.putAll(flags);
|
||||||
this.animalKilling = animalKilling;
|
|
||||||
this.anvil = anvil;
|
|
||||||
this.beacon = beacon;
|
|
||||||
this.bed = bed;
|
|
||||||
this.brew = brew;
|
|
||||||
this.breakBlock = breakBlock;
|
|
||||||
this.button = button;
|
|
||||||
this.cake = cake;
|
|
||||||
this.container = container;
|
|
||||||
this.craft = craft;
|
|
||||||
this.comparer = comparer;
|
|
||||||
this.door = door;
|
|
||||||
this.dye = dye;
|
|
||||||
this.egg = egg;
|
|
||||||
this.enchant = enchant;
|
|
||||||
this.enderPearl = enderPearl;
|
|
||||||
this.feed = feed;
|
|
||||||
this.glow = glow;
|
|
||||||
this.harvest = harvest;
|
|
||||||
this.honey = honey;
|
|
||||||
this.hook = hook;
|
|
||||||
this.hopper = hopper;
|
|
||||||
this.ignite = ignite;
|
|
||||||
this.lever = lever;
|
|
||||||
this.monsterKilling = monsterKilling;
|
|
||||||
this.move = move;
|
|
||||||
this.place = place;
|
|
||||||
this.pressure = pressure;
|
|
||||||
this.riding = riding;
|
|
||||||
this.repeater = repeater;
|
|
||||||
this.shear = shear;
|
|
||||||
this.shoot = shoot;
|
|
||||||
this.teleport = teleport;
|
|
||||||
this.trade = trade;
|
|
||||||
this.vehicleDestroy = vehicleDestroy;
|
|
||||||
this.vehicleSpawn = vehicleSpawn;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public PlayerPrivilegeDTO(UUID playerUUID, Integer domID,
|
public PlayerPrivilegeDTO(UUID playerUUID, DominionDTO dom) {
|
||||||
Boolean anchor, Boolean animalKilling, Boolean anvil,
|
this.id = null;
|
||||||
Boolean beacon, Boolean bed, Boolean brew, Boolean breakBlock, Boolean button,
|
this.playerUUID = playerUUID;
|
||||||
Boolean cake, Boolean container, Boolean craft, Boolean comparer,
|
this.admin = false;
|
||||||
Boolean door, Boolean dye,
|
this.domID = dom.getId();
|
||||||
Boolean egg, Boolean enchant, Boolean enderPearl,
|
for (Flag f : Flag.getPrivilegeFlagsEnabled()) {
|
||||||
Boolean feed,
|
this.flags.put(f, dom.getFlagValue(f));
|
||||||
Boolean glow,
|
}
|
||||||
Boolean harvest, Boolean honey, Boolean hook, Boolean hopper,
|
|
||||||
Boolean ignite,
|
|
||||||
Boolean lever,
|
|
||||||
Boolean monsterKilling, Boolean move,
|
|
||||||
Boolean place, Boolean pressure,
|
|
||||||
Boolean riding, Boolean repeater,
|
|
||||||
Boolean shear, Boolean shoot,
|
|
||||||
Boolean teleport, Boolean trade,
|
|
||||||
Boolean vehicleDestroy,
|
|
||||||
Boolean vehicleSpawn
|
|
||||||
) {
|
|
||||||
this(null, playerUUID, false, domID,
|
|
||||||
anchor, animalKilling, anvil,
|
|
||||||
beacon, bed, brew, breakBlock, button,
|
|
||||||
cake, container, craft, comparer,
|
|
||||||
door, dye,
|
|
||||||
egg, enchant, enderPearl,
|
|
||||||
feed,
|
|
||||||
glow,
|
|
||||||
harvest, honey, hook, hopper,
|
|
||||||
ignite,
|
|
||||||
lever,
|
|
||||||
monsterKilling, move,
|
|
||||||
place, pressure,
|
|
||||||
riding, repeater,
|
|
||||||
shear, shoot,
|
|
||||||
teleport, trade,
|
|
||||||
vehicleDestroy,
|
|
||||||
vehicleSpawn);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private static List<PlayerPrivilegeDTO> query(String sql, Object... params) {
|
private static List<PlayerPrivilegeDTO> query(String sql, Object... params) {
|
||||||
@ -586,48 +121,16 @@ public class PlayerPrivilegeDTO {
|
|||||||
}
|
}
|
||||||
if (rs == null) return players;
|
if (rs == null) return players;
|
||||||
while (rs.next()) {
|
while (rs.next()) {
|
||||||
|
Map<Flag, Boolean> flags = new HashMap<>();
|
||||||
|
for (Flag f : Flag.getPrivilegeFlagsEnabled()) {
|
||||||
|
flags.put(f, rs.getBoolean(f.getFlagName()));
|
||||||
|
}
|
||||||
PlayerPrivilegeDTO player = new PlayerPrivilegeDTO(
|
PlayerPrivilegeDTO player = new PlayerPrivilegeDTO(
|
||||||
rs.getInt("id"),
|
rs.getInt("id"),
|
||||||
UUID.fromString(rs.getString("player_uuid")),
|
UUID.fromString(rs.getString("player_uuid")),
|
||||||
rs.getBoolean("admin"),
|
rs.getBoolean("admin"),
|
||||||
rs.getInt("dom_id"),
|
rs.getInt("dom_id"),
|
||||||
rs.getBoolean("anchor"),
|
flags
|
||||||
rs.getBoolean("animal_killing"),
|
|
||||||
rs.getBoolean("anvil"),
|
|
||||||
rs.getBoolean("beacon"),
|
|
||||||
rs.getBoolean("bed"),
|
|
||||||
rs.getBoolean("brew"),
|
|
||||||
rs.getBoolean("break"),
|
|
||||||
rs.getBoolean("button"),
|
|
||||||
rs.getBoolean("cake"),
|
|
||||||
rs.getBoolean("container"),
|
|
||||||
rs.getBoolean("craft"),
|
|
||||||
rs.getBoolean("comparer"),
|
|
||||||
rs.getBoolean("door"),
|
|
||||||
rs.getBoolean("dye"),
|
|
||||||
rs.getBoolean("egg"),
|
|
||||||
rs.getBoolean("enchant"),
|
|
||||||
rs.getBoolean("ender_pearl"),
|
|
||||||
rs.getBoolean("feed"),
|
|
||||||
rs.getBoolean("glow"),
|
|
||||||
rs.getBoolean("harvest"),
|
|
||||||
rs.getBoolean("honey"),
|
|
||||||
rs.getBoolean("hook"),
|
|
||||||
rs.getBoolean("hopper"),
|
|
||||||
rs.getBoolean("ignite"),
|
|
||||||
rs.getBoolean("lever"),
|
|
||||||
rs.getBoolean("monster_killing"),
|
|
||||||
rs.getBoolean("move"),
|
|
||||||
rs.getBoolean("place"),
|
|
||||||
rs.getBoolean("pressure"),
|
|
||||||
rs.getBoolean("riding"),
|
|
||||||
rs.getBoolean("repeater"),
|
|
||||||
rs.getBoolean("shear"),
|
|
||||||
rs.getBoolean("shoot"),
|
|
||||||
rs.getBoolean("teleport"),
|
|
||||||
rs.getBoolean("trade"),
|
|
||||||
rs.getBoolean("vehicle_destroy"),
|
|
||||||
rs.getBoolean("vehicle_spawn")
|
|
||||||
);
|
);
|
||||||
players.add(player);
|
players.add(player);
|
||||||
}
|
}
|
||||||
@ -640,45 +143,12 @@ public class PlayerPrivilegeDTO {
|
|||||||
private static PlayerPrivilegeDTO update(PlayerPrivilegeDTO player) {
|
private static PlayerPrivilegeDTO update(PlayerPrivilegeDTO player) {
|
||||||
String sql = "UPDATE player_privilege SET " +
|
String sql = "UPDATE player_privilege SET " +
|
||||||
"admin = " + player.getAdmin() + ", " +
|
"admin = " + player.getAdmin() + ", " +
|
||||||
"dom_id = " + player.getDomID() + ", " +
|
"dom_id = " + player.getDomID() + ", ";
|
||||||
"anchor = " + player.getAnchor() + ", " +
|
for (Flag f : Flag.getPrivilegeFlagsEnabled()) {
|
||||||
"animal_killing = " + player.getAnimalKilling() + ", " +
|
sql += f.getFlagName() + " = " + player.getFlagValue(f) + ", ";
|
||||||
"anvil = " + player.getAnvil() + ", " +
|
}
|
||||||
"beacon = " + player.getBeacon() + ", " +
|
sql = sql.substring(0, sql.length() - 2);
|
||||||
"bed = " + player.getBed() + ", " +
|
sql += "WHERE id = " + player.getId() + " " +
|
||||||
"brew = " + player.getBrew() + ", " +
|
|
||||||
"break = " + player.getBreak() + ", " +
|
|
||||||
"button = " + player.getButton() + ", " +
|
|
||||||
"cake = " + player.getCake() + ", " +
|
|
||||||
"container = " + player.getContainer() + ", " +
|
|
||||||
"craft = " + player.getCraft() + ", " +
|
|
||||||
"comparer = " + player.getComparer() + ", " +
|
|
||||||
"door = " + player.getDoor() + ", " +
|
|
||||||
"dye = " + player.getDye() + ", " +
|
|
||||||
"egg = " + player.getEgg() + ", " +
|
|
||||||
"enchant = " + player.getEnchant() + ", " +
|
|
||||||
"ender_pearl = " + player.getEnderPearl() + ", " +
|
|
||||||
"feed = " + player.getFeed() + ", " +
|
|
||||||
"glow = " + player.getGlow() + ", " +
|
|
||||||
"harvest = " + player.getHarvest() + ", " +
|
|
||||||
"honey = " + player.getHoney() + ", " +
|
|
||||||
"hook = " + player.getHook() + ", " +
|
|
||||||
"hopper = " + player.getHopper() + ", " +
|
|
||||||
"ignite = " + player.getIgnite() + ", " +
|
|
||||||
"lever = " + player.getLever() + ", " +
|
|
||||||
"monster_killing = " + player.getMonsterKilling() + ", " +
|
|
||||||
"move = " + player.getMove() + ", " +
|
|
||||||
"place = " + player.getPlace() + ", " +
|
|
||||||
"pressure = " + player.getPressure() + ", " +
|
|
||||||
"riding = " + player.getRiding() + ", " +
|
|
||||||
"repeater = " + player.getRepeater() + ", " +
|
|
||||||
"shear = " + player.getShear() + ", " +
|
|
||||||
"shoot = " + player.getShoot() + ", " +
|
|
||||||
"teleport = " + player.getTeleport() + ", " +
|
|
||||||
"trade = " + player.getTrade() + ", " +
|
|
||||||
"vehicle_destroy = " + player.getVehicleDestroy() + ", " +
|
|
||||||
"vehicle_spawn = " + player.getVehicleSpawn() + " " +
|
|
||||||
"WHERE id = " + player.getId() + " " +
|
|
||||||
"RETURNING *;";
|
"RETURNING *;";
|
||||||
List<PlayerPrivilegeDTO> players = query(sql);
|
List<PlayerPrivilegeDTO> players = query(sql);
|
||||||
if (players.size() == 0) return null;
|
if (players.size() == 0) return null;
|
||||||
|
@ -1,14 +1,19 @@
|
|||||||
package cn.lunadeer.dominion.events;
|
package cn.lunadeer.dominion.events;
|
||||||
|
|
||||||
import cn.lunadeer.dominion.Cache;
|
import cn.lunadeer.dominion.Cache;
|
||||||
|
import cn.lunadeer.dominion.Dominion;
|
||||||
import cn.lunadeer.dominion.dtos.DominionDTO;
|
import cn.lunadeer.dominion.dtos.DominionDTO;
|
||||||
|
import cn.lunadeer.dominion.dtos.Flag;
|
||||||
import cn.lunadeer.dominion.dtos.PlayerPrivilegeDTO;
|
import cn.lunadeer.dominion.dtos.PlayerPrivilegeDTO;
|
||||||
|
import net.kyori.adventure.text.Component;
|
||||||
|
import net.kyori.adventure.text.TextComponent;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.event.Cancellable;
|
||||||
import org.bukkit.inventory.Inventory;
|
import org.bukkit.inventory.Inventory;
|
||||||
|
|
||||||
public class Apis {
|
public class Apis {
|
||||||
public static boolean hasPermission(Player player, DominionDTO dom) {
|
public static boolean canByPass(Player player, DominionDTO dom, PlayerPrivilegeDTO prev) {
|
||||||
if (player.isOp()) {
|
if (player.isOp() && Dominion.config.getLimitOpBypass()) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
if (dom == null) {
|
if (dom == null) {
|
||||||
@ -17,9 +22,8 @@ public class Apis {
|
|||||||
if (dom.getOwner().equals(player.getUniqueId())) {
|
if (dom.getOwner().equals(player.getUniqueId())) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
PlayerPrivilegeDTO privilege = Cache.instance.getPlayerPrivilege(player, dom);
|
if (prev != null) {
|
||||||
if (privilege != null) {
|
return prev.getAdmin();
|
||||||
return privilege.getAdmin();
|
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@ -31,4 +35,29 @@ public class Apis {
|
|||||||
return Cache.instance.getDominion(inv.getLocation());
|
return Cache.instance.getDominion(inv.getLocation());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static boolean checkFlag(DominionDTO dom, Flag flag, Player player, Cancellable event) {
|
||||||
|
if (dom == null) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
PlayerPrivilegeDTO prev = Cache.instance.getPlayerPrivilege(player, dom);
|
||||||
|
if (canByPass(player, dom, prev)) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
if (prev != null) {
|
||||||
|
if (prev.getFlagValue(flag)) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (dom.getFlagValue(flag)) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
TextComponent msg = Component.text(String.format("你没有 %s 权限", flag.getDisplayName())).hoverEvent(Component.text(flag.getDescription()));
|
||||||
|
Dominion.notification.error(player, msg);
|
||||||
|
if (event != null) {
|
||||||
|
event.setCancelled(true);
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -3,12 +3,14 @@ package cn.lunadeer.dominion.events;
|
|||||||
import cn.lunadeer.dominion.Cache;
|
import cn.lunadeer.dominion.Cache;
|
||||||
import cn.lunadeer.dominion.Dominion;
|
import cn.lunadeer.dominion.Dominion;
|
||||||
import cn.lunadeer.dominion.dtos.DominionDTO;
|
import cn.lunadeer.dominion.dtos.DominionDTO;
|
||||||
|
import cn.lunadeer.dominion.dtos.Flag;
|
||||||
import cn.lunadeer.dominion.dtos.PlayerDTO;
|
import cn.lunadeer.dominion.dtos.PlayerDTO;
|
||||||
import cn.lunadeer.dominion.dtos.PlayerPrivilegeDTO;
|
import cn.lunadeer.dominion.dtos.PlayerPrivilegeDTO;
|
||||||
import io.papermc.paper.event.entity.EntityDyeEvent;
|
import io.papermc.paper.event.entity.EntityDyeEvent;
|
||||||
import org.bukkit.Location;
|
import org.bukkit.Location;
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
import org.bukkit.block.Block;
|
import org.bukkit.block.Block;
|
||||||
|
import org.bukkit.block.data.BlockData;
|
||||||
import org.bukkit.entity.*;
|
import org.bukkit.entity.*;
|
||||||
import org.bukkit.event.EventHandler;
|
import org.bukkit.event.EventHandler;
|
||||||
import org.bukkit.event.EventPriority;
|
import org.bukkit.event.EventPriority;
|
||||||
@ -26,8 +28,10 @@ import org.bukkit.event.inventory.InventoryType;
|
|||||||
import org.bukkit.event.player.*;
|
import org.bukkit.event.player.*;
|
||||||
import org.bukkit.event.vehicle.VehicleDestroyEvent;
|
import org.bukkit.event.vehicle.VehicleDestroyEvent;
|
||||||
import org.bukkit.inventory.Inventory;
|
import org.bukkit.inventory.Inventory;
|
||||||
|
import org.bukkit.material.Button;
|
||||||
import org.spigotmc.event.entity.EntityMountEvent;
|
import org.spigotmc.event.entity.EntityMountEvent;
|
||||||
|
|
||||||
|
import static cn.lunadeer.dominion.events.Apis.checkFlag;
|
||||||
import static cn.lunadeer.dominion.events.Apis.getInvDominion;
|
import static cn.lunadeer.dominion.events.Apis.getInvDominion;
|
||||||
|
|
||||||
public class PlayerEvents implements Listener {
|
public class PlayerEvents implements Listener {
|
||||||
@ -45,36 +49,13 @@ public class PlayerEvents implements Listener {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
DominionDTO dom = Cache.instance.getPlayerCurrentDominion(bukkitPlayer);
|
DominionDTO dom = Cache.instance.getPlayerCurrentDominion(bukkitPlayer);
|
||||||
if (dom == null) {
|
if (checkFlag(dom, Flag.ANCHOR, bukkitPlayer, null)) {
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (Apis.hasPermission(bukkitPlayer, dom)) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
PlayerPrivilegeDTO privilege = Cache.instance.getPlayerPrivilege(bukkitPlayer, dom);
|
|
||||||
if (privilege != null) {
|
|
||||||
if (!privilege.getAnchor()) {
|
|
||||||
Dominion.notification.error(bukkitPlayer, "你没有锚点重生权限");
|
|
||||||
return;
|
|
||||||
} else {
|
|
||||||
if (bukkitPlayer.getBedSpawnLocation() != null) {
|
if (bukkitPlayer.getBedSpawnLocation() != null) {
|
||||||
event.setRespawnLocation(bukkitPlayer.getBedSpawnLocation());
|
event.setRespawnLocation(bukkitPlayer.getBedSpawnLocation());
|
||||||
} else {
|
} else {
|
||||||
event.setRespawnLocation(bukkitPlayer.getWorld().getSpawnLocation());
|
event.setRespawnLocation(bukkitPlayer.getWorld().getSpawnLocation());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
|
||||||
if (dom.getAnchor()) {
|
|
||||||
Dominion.notification.error(bukkitPlayer, "你没有锚点重生权限");
|
|
||||||
return;
|
|
||||||
} else {
|
|
||||||
if (bukkitPlayer.getBedSpawnLocation() != null) {
|
|
||||||
event.setRespawnLocation(bukkitPlayer.getBedSpawnLocation());
|
|
||||||
} else {
|
|
||||||
event.setRespawnLocation(bukkitPlayer.getWorld().getSpawnLocation());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler(priority = EventPriority.HIGHEST) // animal_killing
|
@EventHandler(priority = EventPriority.HIGHEST) // animal_killing
|
||||||
@ -88,24 +69,7 @@ public class PlayerEvents implements Listener {
|
|||||||
}
|
}
|
||||||
Player bukkitPlayer = (Player) event.getDamager();
|
Player bukkitPlayer = (Player) event.getDamager();
|
||||||
DominionDTO dom = Cache.instance.getDominion(event.getEntity().getLocation());
|
DominionDTO dom = Cache.instance.getDominion(event.getEntity().getLocation());
|
||||||
if (dom == null) {
|
checkFlag(dom, Flag.ANIMAL_KILLING, bukkitPlayer, event);
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (Apis.hasPermission(bukkitPlayer, dom)) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
PlayerPrivilegeDTO privilege = Cache.instance.getPlayerPrivilege(bukkitPlayer, dom);
|
|
||||||
if (privilege != null) {
|
|
||||||
if (privilege.getAnimalKilling()) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
if (dom.getAnimalKilling()) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Dominion.notification.error(bukkitPlayer, "你没有动物击杀权限");
|
|
||||||
event.setCancelled(true);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler(priority = EventPriority.HIGHEST) // anvil
|
@EventHandler(priority = EventPriority.HIGHEST) // anvil
|
||||||
@ -118,24 +82,7 @@ public class PlayerEvents implements Listener {
|
|||||||
}
|
}
|
||||||
Player bukkitPlayer = (Player) event.getPlayer();
|
Player bukkitPlayer = (Player) event.getPlayer();
|
||||||
DominionDTO dom = Cache.instance.getPlayerCurrentDominion(bukkitPlayer);
|
DominionDTO dom = Cache.instance.getPlayerCurrentDominion(bukkitPlayer);
|
||||||
if (dom == null) {
|
checkFlag(dom, Flag.ANVIL, bukkitPlayer, event);
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (Apis.hasPermission(bukkitPlayer, dom)) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
PlayerPrivilegeDTO privilege = Cache.instance.getPlayerPrivilege(bukkitPlayer, dom);
|
|
||||||
if (privilege != null) {
|
|
||||||
if (privilege.getAnvil()) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
if (dom.getAnvil()) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Dominion.notification.error(bukkitPlayer, "你没有使用铁砧的权限");
|
|
||||||
event.setCancelled(true);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler(priority = EventPriority.HIGHEST) // beacon
|
@EventHandler(priority = EventPriority.HIGHEST) // beacon
|
||||||
@ -148,48 +95,14 @@ public class PlayerEvents implements Listener {
|
|||||||
}
|
}
|
||||||
Player bukkitPlayer = (Player) event.getPlayer();
|
Player bukkitPlayer = (Player) event.getPlayer();
|
||||||
DominionDTO dom = Cache.instance.getPlayerCurrentDominion(bukkitPlayer);
|
DominionDTO dom = Cache.instance.getPlayerCurrentDominion(bukkitPlayer);
|
||||||
if (dom == null) {
|
checkFlag(dom, Flag.BEACON, bukkitPlayer, event);
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (Apis.hasPermission(bukkitPlayer, dom)) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
PlayerPrivilegeDTO privilege = Cache.instance.getPlayerPrivilege(bukkitPlayer, dom);
|
|
||||||
if (privilege != null) {
|
|
||||||
if (privilege.getBeacon()) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
if (dom.getBeacon()) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Dominion.notification.error(bukkitPlayer, "你没有使用信标的权限");
|
|
||||||
event.setCancelled(true);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler(priority = EventPriority.HIGHEST) // bed
|
@EventHandler(priority = EventPriority.HIGHEST) // bed
|
||||||
public void onBedUse(PlayerBedEnterEvent event) {
|
public void onBedUse(PlayerBedEnterEvent event) {
|
||||||
Player bukkitPlayer = event.getPlayer();
|
Player bukkitPlayer = event.getPlayer();
|
||||||
DominionDTO dom = Cache.instance.getDominion(event.getBed().getLocation());
|
DominionDTO dom = Cache.instance.getDominion(event.getBed().getLocation());
|
||||||
if (dom == null) {
|
checkFlag(dom, Flag.BED, bukkitPlayer, event);
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (Apis.hasPermission(bukkitPlayer, dom)) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
PlayerPrivilegeDTO privilege = Cache.instance.getPlayerPrivilege(bukkitPlayer, dom);
|
|
||||||
if (privilege != null) {
|
|
||||||
if (privilege.getBed()) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
if (dom.getBed()) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Dominion.notification.error(bukkitPlayer, "你没有使用床的权限");
|
|
||||||
event.setCancelled(true);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler(priority = EventPriority.HIGHEST) // brew
|
@EventHandler(priority = EventPriority.HIGHEST) // brew
|
||||||
@ -202,24 +115,7 @@ public class PlayerEvents implements Listener {
|
|||||||
}
|
}
|
||||||
Player bukkitPlayer = (Player) event.getPlayer();
|
Player bukkitPlayer = (Player) event.getPlayer();
|
||||||
DominionDTO dom = Cache.instance.getPlayerCurrentDominion(bukkitPlayer);
|
DominionDTO dom = Cache.instance.getPlayerCurrentDominion(bukkitPlayer);
|
||||||
if (dom == null) {
|
checkFlag(dom, Flag.BREW, bukkitPlayer, event);
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (Apis.hasPermission(bukkitPlayer, dom)) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
PlayerPrivilegeDTO privilege = Cache.instance.getPlayerPrivilege(bukkitPlayer, dom);
|
|
||||||
if (privilege != null) {
|
|
||||||
if (privilege.getBrew()) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
if (dom.getBrew()) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Dominion.notification.error(bukkitPlayer, "你没有使用酿造台的权限");
|
|
||||||
event.setCancelled(true);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler(priority = EventPriority.HIGHEST) // break
|
@EventHandler(priority = EventPriority.HIGHEST) // break
|
||||||
@ -251,24 +147,7 @@ public class PlayerEvents implements Listener {
|
|||||||
|
|
||||||
public static boolean onBreak(Player player, Location location) {
|
public static boolean onBreak(Player player, Location location) {
|
||||||
DominionDTO dom = Cache.instance.getDominion(location);
|
DominionDTO dom = Cache.instance.getDominion(location);
|
||||||
if (dom == null) {
|
return checkFlag(dom, Flag.BREAK_BLOCK, player, null);
|
||||||
return true;
|
|
||||||
}
|
|
||||||
if (Apis.hasPermission(player, dom)) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
PlayerPrivilegeDTO privilege = Cache.instance.getPlayerPrivilege(player, dom);
|
|
||||||
if (privilege != null) {
|
|
||||||
if (privilege.getBreak()) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
if (dom.getBreak()) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Dominion.notification.error(player, "你没有破坏方块的权限");
|
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler(priority = EventPriority.HIGHEST) // button
|
@EventHandler(priority = EventPriority.HIGHEST) // button
|
||||||
@ -294,24 +173,7 @@ public class PlayerEvents implements Listener {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
DominionDTO dom = Cache.instance.getPlayerCurrentDominion(player);
|
DominionDTO dom = Cache.instance.getPlayerCurrentDominion(player);
|
||||||
if (dom == null) {
|
checkFlag(dom, Flag.BUTTON, player, event);
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (Apis.hasPermission(player, dom)) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
PlayerPrivilegeDTO privilege = Cache.instance.getPlayerPrivilege(player, dom);
|
|
||||||
if (privilege != null) {
|
|
||||||
if (privilege.getButton()) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
if (dom.getButton()) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Dominion.notification.error(player, "你没有使用按钮的权限");
|
|
||||||
event.setCancelled(true);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler(priority = EventPriority.HIGHEST) // cake
|
@EventHandler(priority = EventPriority.HIGHEST) // cake
|
||||||
@ -326,24 +188,7 @@ public class PlayerEvents implements Listener {
|
|||||||
}
|
}
|
||||||
Player player = event.getPlayer();
|
Player player = event.getPlayer();
|
||||||
DominionDTO dom = Cache.instance.getDominion(block.getLocation());
|
DominionDTO dom = Cache.instance.getDominion(block.getLocation());
|
||||||
if (dom == null) {
|
checkFlag(dom, Flag.CAKE, player, event);
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (Apis.hasPermission(player, dom)) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
PlayerPrivilegeDTO privilege = Cache.instance.getPlayerPrivilege(player, dom);
|
|
||||||
if (privilege != null) {
|
|
||||||
if (privilege.getCake()) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
if (dom.getCake()) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Dominion.notification.error(player, "你没有吃蛋糕权限");
|
|
||||||
event.setCancelled(true);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// 检查是否有容器权限
|
// 检查是否有容器权限
|
||||||
@ -354,24 +199,7 @@ public class PlayerEvents implements Listener {
|
|||||||
} else {
|
} else {
|
||||||
dom = Cache.instance.getDominion(loc);
|
dom = Cache.instance.getDominion(loc);
|
||||||
}
|
}
|
||||||
if (dom == null) {
|
return checkFlag(dom, Flag.CONTAINER, player, null);
|
||||||
return true;
|
|
||||||
}
|
|
||||||
if (Apis.hasPermission(player, dom)) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
PlayerPrivilegeDTO privilege = Cache.instance.getPlayerPrivilege(player, dom);
|
|
||||||
if (privilege != null) {
|
|
||||||
if (privilege.getContainer()) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
if (dom.getContainer()) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Dominion.notification.error(player, "你没有使用容器/盔甲架/展示框的权限");
|
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler(priority = EventPriority.HIGHEST) // container
|
@EventHandler(priority = EventPriority.HIGHEST) // container
|
||||||
@ -440,24 +268,7 @@ public class PlayerEvents implements Listener {
|
|||||||
}
|
}
|
||||||
Player bukkitPlayer = (Player) event.getPlayer();
|
Player bukkitPlayer = (Player) event.getPlayer();
|
||||||
DominionDTO dom = getInvDominion(bukkitPlayer, inv);
|
DominionDTO dom = getInvDominion(bukkitPlayer, inv);
|
||||||
if (dom == null) {
|
checkFlag(dom, Flag.CRAFT, bukkitPlayer, event);
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (Apis.hasPermission(bukkitPlayer, dom)) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
PlayerPrivilegeDTO privilege = Cache.instance.getPlayerPrivilege(bukkitPlayer, dom);
|
|
||||||
if (privilege != null) {
|
|
||||||
if (privilege.getCraft()) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
if (dom.getCraft()) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Dominion.notification.error(bukkitPlayer, "你没有使用工作台的权限");
|
|
||||||
event.setCancelled(true);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler(priority = EventPriority.HIGHEST) // comparer
|
@EventHandler(priority = EventPriority.HIGHEST) // comparer
|
||||||
@ -471,24 +282,7 @@ public class PlayerEvents implements Listener {
|
|||||||
}
|
}
|
||||||
Player player = event.getPlayer();
|
Player player = event.getPlayer();
|
||||||
DominionDTO dom = Cache.instance.getDominion(event.getClickedBlock().getLocation());
|
DominionDTO dom = Cache.instance.getDominion(event.getClickedBlock().getLocation());
|
||||||
if (dom == null) {
|
checkFlag(dom, Flag.COMPARER, player, event);
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (Apis.hasPermission(player, dom)) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
PlayerPrivilegeDTO privilege = Cache.instance.getPlayerPrivilege(player, dom);
|
|
||||||
if (privilege != null) {
|
|
||||||
if (privilege.getComparer()) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
if (dom.getComparer()) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Dominion.notification.error(player, "你没有使用红石比较器的权限");
|
|
||||||
event.setCancelled(true);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler(priority = EventPriority.HIGHEST) // door
|
@EventHandler(priority = EventPriority.HIGHEST) // door
|
||||||
@ -536,24 +330,7 @@ public class PlayerEvents implements Listener {
|
|||||||
}
|
}
|
||||||
Player player = event.getPlayer();
|
Player player = event.getPlayer();
|
||||||
DominionDTO dom = Cache.instance.getDominion(event.getClickedBlock().getLocation());
|
DominionDTO dom = Cache.instance.getDominion(event.getClickedBlock().getLocation());
|
||||||
if (dom == null) {
|
checkFlag(dom, Flag.DOOR, player, event);
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (Apis.hasPermission(player, dom)) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
PlayerPrivilegeDTO privilege = Cache.instance.getPlayerPrivilege(player, dom);
|
|
||||||
if (privilege != null) {
|
|
||||||
if (privilege.getDoor()) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
if (dom.getDoor()) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Dominion.notification.error(player, "你没有使用门的权限");
|
|
||||||
event.setCancelled(true);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler(priority = EventPriority.HIGHEST) // dye
|
@EventHandler(priority = EventPriority.HIGHEST) // dye
|
||||||
@ -563,24 +340,7 @@ public class PlayerEvents implements Listener {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
DominionDTO dom = Cache.instance.getDominion(event.getEntity().getLocation());
|
DominionDTO dom = Cache.instance.getDominion(event.getEntity().getLocation());
|
||||||
if (dom == null) {
|
checkFlag(dom, Flag.DYE, player, event);
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (Apis.hasPermission(player, dom)) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
PlayerPrivilegeDTO privilege = Cache.instance.getPlayerPrivilege(player, dom);
|
|
||||||
if (privilege != null) {
|
|
||||||
if (privilege.getDye()) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
if (dom.getDye()) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Dominion.notification.error(player, "你没有染色的权限");
|
|
||||||
event.setCancelled(true);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler(priority = EventPriority.HIGHEST) // egg
|
@EventHandler(priority = EventPriority.HIGHEST) // egg
|
||||||
@ -593,24 +353,7 @@ public class PlayerEvents implements Listener {
|
|||||||
}
|
}
|
||||||
Player player = (Player) event.getEntity().getShooter();
|
Player player = (Player) event.getEntity().getShooter();
|
||||||
DominionDTO dom = Cache.instance.getPlayerCurrentDominion(player);
|
DominionDTO dom = Cache.instance.getPlayerCurrentDominion(player);
|
||||||
if (dom == null) {
|
checkFlag(dom, Flag.EGG, player, event);
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (Apis.hasPermission(player, dom)) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
PlayerPrivilegeDTO privilege = Cache.instance.getPlayerPrivilege(player, dom);
|
|
||||||
if (privilege != null) {
|
|
||||||
if (privilege.getEgg()) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
if (dom.getEgg()) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Dominion.notification.error(player, "你没有扔鸡蛋的权限");
|
|
||||||
event.setCancelled(true);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler(priority = EventPriority.HIGHEST) // enchant
|
@EventHandler(priority = EventPriority.HIGHEST) // enchant
|
||||||
@ -623,24 +366,7 @@ public class PlayerEvents implements Listener {
|
|||||||
}
|
}
|
||||||
Player bukkitPlayer = (Player) event.getPlayer();
|
Player bukkitPlayer = (Player) event.getPlayer();
|
||||||
DominionDTO dom = getInvDominion(bukkitPlayer, event.getInventory());
|
DominionDTO dom = getInvDominion(bukkitPlayer, event.getInventory());
|
||||||
if (dom == null) {
|
checkFlag(dom, Flag.ENCHANT, bukkitPlayer, event);
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (Apis.hasPermission(bukkitPlayer, dom)) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
PlayerPrivilegeDTO privilege = Cache.instance.getPlayerPrivilege(bukkitPlayer, dom);
|
|
||||||
if (privilege != null) {
|
|
||||||
if (privilege.getEnchant()) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
if (dom.getEnchant()) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Dominion.notification.error(bukkitPlayer, "你没有使用附魔台的权限");
|
|
||||||
event.setCancelled(true);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler(priority = EventPriority.HIGHEST) // ender_pearl
|
@EventHandler(priority = EventPriority.HIGHEST) // ender_pearl
|
||||||
@ -653,24 +379,7 @@ public class PlayerEvents implements Listener {
|
|||||||
}
|
}
|
||||||
Player player = (Player) event.getEntity().getShooter();
|
Player player = (Player) event.getEntity().getShooter();
|
||||||
DominionDTO dom = Cache.instance.getPlayerCurrentDominion(player);
|
DominionDTO dom = Cache.instance.getPlayerCurrentDominion(player);
|
||||||
if (dom == null) {
|
checkFlag(dom, Flag.ENDER_PEARL, player, event);
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (Apis.hasPermission(player, dom)) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
PlayerPrivilegeDTO privilege = Cache.instance.getPlayerPrivilege(player, dom);
|
|
||||||
if (privilege != null) {
|
|
||||||
if (privilege.getEnderPearl()) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
if (dom.getEnderPearl()) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Dominion.notification.error(player, "你没有使用末影珍珠的权限");
|
|
||||||
event.setCancelled(true);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler(priority = EventPriority.HIGHEST) // feed
|
@EventHandler(priority = EventPriority.HIGHEST) // feed
|
||||||
@ -680,24 +389,7 @@ public class PlayerEvents implements Listener {
|
|||||||
}
|
}
|
||||||
Player player = event.getPlayer();
|
Player player = event.getPlayer();
|
||||||
DominionDTO dom = Cache.instance.getDominion(event.getRightClicked().getLocation());
|
DominionDTO dom = Cache.instance.getDominion(event.getRightClicked().getLocation());
|
||||||
if (dom == null) {
|
checkFlag(dom, Flag.FEED, player, event);
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (Apis.hasPermission(player, dom)) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
PlayerPrivilegeDTO privilege = Cache.instance.getPlayerPrivilege(player, dom);
|
|
||||||
if (privilege != null) {
|
|
||||||
if (privilege.getFeed()) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
if (dom.getFeed()) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Dominion.notification.error(player, "你没有喂养动物的权限");
|
|
||||||
event.setCancelled(true);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler(priority = EventPriority.HIGHEST) // harvest
|
@EventHandler(priority = EventPriority.HIGHEST) // harvest
|
||||||
@ -723,24 +415,7 @@ public class PlayerEvents implements Listener {
|
|||||||
}
|
}
|
||||||
Player player = event.getPlayer();
|
Player player = event.getPlayer();
|
||||||
DominionDTO dom = Cache.instance.getDominion(block.getLocation());
|
DominionDTO dom = Cache.instance.getDominion(block.getLocation());
|
||||||
if (dom == null) {
|
checkFlag(dom, Flag.HARVEST, player, event);
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (Apis.hasPermission(player, dom)) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
PlayerPrivilegeDTO privilege = Cache.instance.getPlayerPrivilege(player, dom);
|
|
||||||
if (privilege != null) {
|
|
||||||
if (privilege.getHarvest()) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
if (dom.getHarvest()) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Dominion.notification.error(player, "你没有收获的权限");
|
|
||||||
event.setCancelled(true);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler(priority = EventPriority.HIGHEST) // honey
|
@EventHandler(priority = EventPriority.HIGHEST) // honey
|
||||||
@ -755,24 +430,7 @@ public class PlayerEvents implements Listener {
|
|||||||
}
|
}
|
||||||
Player player = event.getPlayer();
|
Player player = event.getPlayer();
|
||||||
DominionDTO dom = Cache.instance.getDominion(block.getLocation());
|
DominionDTO dom = Cache.instance.getDominion(block.getLocation());
|
||||||
if (dom == null) {
|
checkFlag(dom, Flag.HONEY, player, event);
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (Apis.hasPermission(player, dom)) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
PlayerPrivilegeDTO privilege = Cache.instance.getPlayerPrivilege(player, dom);
|
|
||||||
if (privilege != null) {
|
|
||||||
if (privilege.getHoney()) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
if (dom.getHoney()) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Dominion.notification.error(player, "你没有与蜜蜂交互的权限");
|
|
||||||
event.setCancelled(true);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler(priority = EventPriority.HIGHEST) // hook
|
@EventHandler(priority = EventPriority.HIGHEST) // hook
|
||||||
@ -783,24 +441,7 @@ public class PlayerEvents implements Listener {
|
|||||||
}
|
}
|
||||||
Player player = event.getPlayer();
|
Player player = event.getPlayer();
|
||||||
DominionDTO dom = Cache.instance.getDominion(caught.getLocation());
|
DominionDTO dom = Cache.instance.getDominion(caught.getLocation());
|
||||||
if (dom == null) {
|
checkFlag(dom, Flag.HOOK, player, event);
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (Apis.hasPermission(player, dom)) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
PlayerPrivilegeDTO privilege = Cache.instance.getPlayerPrivilege(player, dom);
|
|
||||||
if (privilege != null) {
|
|
||||||
if (privilege.getHook()) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
if (dom.getHook()) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Dominion.notification.error(player, "你没有使用钓钩的权限");
|
|
||||||
event.setCancelled(true);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler(priority = EventPriority.HIGHEST) // hopper
|
@EventHandler(priority = EventPriority.HIGHEST) // hopper
|
||||||
@ -819,24 +460,7 @@ public class PlayerEvents implements Listener {
|
|||||||
}
|
}
|
||||||
Player bukkitPlayer = (Player) event.getPlayer();
|
Player bukkitPlayer = (Player) event.getPlayer();
|
||||||
DominionDTO dom = getInvDominion(bukkitPlayer, event.getInventory());
|
DominionDTO dom = getInvDominion(bukkitPlayer, event.getInventory());
|
||||||
if (dom == null) {
|
checkFlag(dom, Flag.HOPPER, bukkitPlayer, event);
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (Apis.hasPermission(bukkitPlayer, dom)) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
PlayerPrivilegeDTO privilege = Cache.instance.getPlayerPrivilege(bukkitPlayer, dom);
|
|
||||||
if (privilege != null) {
|
|
||||||
if (privilege.getHopper()) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
if (dom.getHopper()) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Dominion.notification.error(bukkitPlayer, "你没有使用漏斗/熔炉/发射器等特殊容器的权限");
|
|
||||||
event.setCancelled(true);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler(priority = EventPriority.HIGHEST) // ignite
|
@EventHandler(priority = EventPriority.HIGHEST) // ignite
|
||||||
@ -846,24 +470,7 @@ public class PlayerEvents implements Listener {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
DominionDTO dom = Cache.instance.getDominion(event.getBlock().getLocation());
|
DominionDTO dom = Cache.instance.getDominion(event.getBlock().getLocation());
|
||||||
if (dom == null) {
|
checkFlag(dom, Flag.IGNITE, player, event);
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (Apis.hasPermission(player, dom)) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
PlayerPrivilegeDTO privilege = Cache.instance.getPlayerPrivilege(player, dom);
|
|
||||||
if (privilege != null) {
|
|
||||||
if (privilege.getIgnite()) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
if (dom.getIgnite()) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Dominion.notification.error(player, "你没有点火的权限");
|
|
||||||
event.setCancelled(true);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler(priority = EventPriority.HIGHEST) // lever
|
@EventHandler(priority = EventPriority.HIGHEST) // lever
|
||||||
@ -878,24 +485,7 @@ public class PlayerEvents implements Listener {
|
|||||||
}
|
}
|
||||||
Player player = event.getPlayer();
|
Player player = event.getPlayer();
|
||||||
DominionDTO dom = Cache.instance.getDominion(block.getLocation());
|
DominionDTO dom = Cache.instance.getDominion(block.getLocation());
|
||||||
if (dom == null) {
|
checkFlag(dom, Flag.LEVER, player, event);
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (Apis.hasPermission(player, dom)) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
PlayerPrivilegeDTO privilege = Cache.instance.getPlayerPrivilege(player, dom);
|
|
||||||
if (privilege != null) {
|
|
||||||
if (privilege.getLever()) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
if (dom.getLever()) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Dominion.notification.error(player, "你没有使用拉杆的权限");
|
|
||||||
event.setCancelled(true);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler(priority = EventPriority.HIGHEST) // monster_killing
|
@EventHandler(priority = EventPriority.HIGHEST) // monster_killing
|
||||||
@ -910,48 +500,14 @@ public class PlayerEvents implements Listener {
|
|||||||
}
|
}
|
||||||
Player bukkitPlayer = (Player) event.getDamager();
|
Player bukkitPlayer = (Player) event.getDamager();
|
||||||
DominionDTO dom = Cache.instance.getDominion(entity.getLocation());
|
DominionDTO dom = Cache.instance.getDominion(entity.getLocation());
|
||||||
if (dom == null) {
|
checkFlag(dom, Flag.MONSTER_KILLING, bukkitPlayer, event);
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (Apis.hasPermission(bukkitPlayer, dom)) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
PlayerPrivilegeDTO privilege = Cache.instance.getPlayerPrivilege(bukkitPlayer, dom);
|
|
||||||
if (privilege != null) {
|
|
||||||
if (privilege.getMonsterKilling()) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
if (dom.getMonsterKilling()) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Dominion.notification.error(bukkitPlayer, "你没有击杀怪物的权限");
|
|
||||||
event.setCancelled(true);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler(priority = EventPriority.HIGHEST) // move
|
@EventHandler(priority = EventPriority.HIGHEST) // move
|
||||||
public void onPlayerMove(PlayerMoveEvent event) {
|
public void onPlayerMove(PlayerMoveEvent event) {
|
||||||
Player player = event.getPlayer();
|
Player player = event.getPlayer();
|
||||||
DominionDTO dom = Cache.instance.getPlayerCurrentDominion(player);
|
DominionDTO dom = Cache.instance.getPlayerCurrentDominion(player);
|
||||||
if (dom == null) {
|
checkFlag(dom, Flag.MOVE, player, event);
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (Apis.hasPermission(player, dom)) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
PlayerPrivilegeDTO privilege = Cache.instance.getPlayerPrivilege(player, dom);
|
|
||||||
if (privilege != null) {
|
|
||||||
if (privilege.getMove()) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
if (dom.getMove()) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Dominion.notification.error(player, "你没有移动的权限");
|
|
||||||
event.setCancelled(true);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler(priority = EventPriority.HIGHEST) // place
|
@EventHandler(priority = EventPriority.HIGHEST) // place
|
||||||
@ -990,24 +546,7 @@ public class PlayerEvents implements Listener {
|
|||||||
|
|
||||||
public static boolean onPlace(Player player, Location location) {
|
public static boolean onPlace(Player player, Location location) {
|
||||||
DominionDTO dom = Cache.instance.getDominion(location);
|
DominionDTO dom = Cache.instance.getDominion(location);
|
||||||
if (dom == null) {
|
return checkFlag(dom, Flag.PLACE, player, null);
|
||||||
return true;
|
|
||||||
}
|
|
||||||
if (Apis.hasPermission(player, dom)) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
PlayerPrivilegeDTO privilege = Cache.instance.getPlayerPrivilege(player, dom);
|
|
||||||
if (privilege != null) {
|
|
||||||
if (privilege.getPlace()) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
if (dom.getPlace()) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Dominion.notification.error(player, "你没有放置方块的权限");
|
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler(priority = EventPriority.HIGHEST) // pressure
|
@EventHandler(priority = EventPriority.HIGHEST) // pressure
|
||||||
@ -1036,24 +575,7 @@ public class PlayerEvents implements Listener {
|
|||||||
}
|
}
|
||||||
Player player = event.getPlayer();
|
Player player = event.getPlayer();
|
||||||
DominionDTO dom = Cache.instance.getDominion(block.getLocation());
|
DominionDTO dom = Cache.instance.getDominion(block.getLocation());
|
||||||
if (dom == null) {
|
checkFlag(dom, Flag.PRESSURE, player, event);
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (Apis.hasPermission(player, dom)) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
PlayerPrivilegeDTO privilege = Cache.instance.getPlayerPrivilege(player, dom);
|
|
||||||
if (privilege != null) {
|
|
||||||
if (privilege.getPressure()) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
if (dom.getPressure()) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Dominion.notification.error(player, "你没有使用压力板的权限");
|
|
||||||
event.setCancelled(true);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler(priority = EventPriority.HIGHEST) // riding
|
@EventHandler(priority = EventPriority.HIGHEST) // riding
|
||||||
@ -1063,24 +585,7 @@ public class PlayerEvents implements Listener {
|
|||||||
}
|
}
|
||||||
Player player = (Player) event.getEntity();
|
Player player = (Player) event.getEntity();
|
||||||
DominionDTO dom = Cache.instance.getDominion(event.getMount().getLocation());
|
DominionDTO dom = Cache.instance.getDominion(event.getMount().getLocation());
|
||||||
if (dom == null) {
|
checkFlag(dom, Flag.RIDING, player, event);
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (Apis.hasPermission(player, dom)) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
PlayerPrivilegeDTO privilege = Cache.instance.getPlayerPrivilege(player, dom);
|
|
||||||
if (privilege != null) {
|
|
||||||
if (privilege.getRiding()) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
if (dom.getRiding()) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Dominion.notification.error(player, "你没有骑乘交通工具的权限");
|
|
||||||
event.setCancelled(true);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler(priority = EventPriority.HIGHEST) // repeater
|
@EventHandler(priority = EventPriority.HIGHEST) // repeater
|
||||||
@ -1095,48 +600,14 @@ public class PlayerEvents implements Listener {
|
|||||||
}
|
}
|
||||||
Player player = event.getPlayer();
|
Player player = event.getPlayer();
|
||||||
DominionDTO dom = Cache.instance.getDominion(block.getLocation());
|
DominionDTO dom = Cache.instance.getDominion(block.getLocation());
|
||||||
if (dom == null) {
|
checkFlag(dom, Flag.REPEATER, player, event);
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (Apis.hasPermission(player, dom)) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
PlayerPrivilegeDTO privilege = Cache.instance.getPlayerPrivilege(player, dom);
|
|
||||||
if (privilege != null) {
|
|
||||||
if (privilege.getRepeater()) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
if (dom.getRepeater()) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Dominion.notification.error(player, "你没有使用红石中继器的权限");
|
|
||||||
event.setCancelled(true);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler(priority = EventPriority.HIGHEST) // shear
|
@EventHandler(priority = EventPriority.HIGHEST) // shear
|
||||||
public void onShear(PlayerShearEntityEvent event) {
|
public void onShear(PlayerShearEntityEvent event) {
|
||||||
Player player = event.getPlayer();
|
Player player = event.getPlayer();
|
||||||
DominionDTO dom = Cache.instance.getDominion(event.getEntity().getLocation());
|
DominionDTO dom = Cache.instance.getDominion(event.getEntity().getLocation());
|
||||||
if (dom == null) {
|
checkFlag(dom, Flag.SHEAR, player, event);
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (Apis.hasPermission(player, dom)) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
PlayerPrivilegeDTO privilege = Cache.instance.getPlayerPrivilege(player, dom);
|
|
||||||
if (privilege != null) {
|
|
||||||
if (privilege.getShear()) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
if (dom.getShear()) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Dominion.notification.error(player, "你没有剪羊毛的权限");
|
|
||||||
event.setCancelled(true);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler(priority = EventPriority.HIGHEST) // shoot
|
@EventHandler(priority = EventPriority.HIGHEST) // shoot
|
||||||
@ -1151,24 +622,7 @@ public class PlayerEvents implements Listener {
|
|||||||
}
|
}
|
||||||
Player player = (Player) event.getEntity().getShooter();
|
Player player = (Player) event.getEntity().getShooter();
|
||||||
DominionDTO dom = Cache.instance.getPlayerCurrentDominion(player);
|
DominionDTO dom = Cache.instance.getPlayerCurrentDominion(player);
|
||||||
if (dom == null) {
|
checkFlag(dom, Flag.SHOOT, player, event);
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (Apis.hasPermission(player, dom)) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
PlayerPrivilegeDTO privilege = Cache.instance.getPlayerPrivilege(player, dom);
|
|
||||||
if (privilege != null) {
|
|
||||||
if (privilege.getShoot()) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
if (dom.getShoot()) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Dominion.notification.error(player, "你没有发射弓箭、三叉戟或雪球的权限");
|
|
||||||
event.setCancelled(true);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler(priority = EventPriority.HIGHEST) // trade
|
@EventHandler(priority = EventPriority.HIGHEST) // trade
|
||||||
@ -1181,24 +635,7 @@ public class PlayerEvents implements Listener {
|
|||||||
}
|
}
|
||||||
Player bukkitPlayer = (Player) event.getPlayer();
|
Player bukkitPlayer = (Player) event.getPlayer();
|
||||||
DominionDTO dom = getInvDominion(bukkitPlayer, event.getInventory());
|
DominionDTO dom = getInvDominion(bukkitPlayer, event.getInventory());
|
||||||
if (dom == null) {
|
checkFlag(dom, Flag.TRADE, bukkitPlayer, event);
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (Apis.hasPermission(bukkitPlayer, dom)) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
PlayerPrivilegeDTO privilege = Cache.instance.getPlayerPrivilege(bukkitPlayer, dom);
|
|
||||||
if (privilege != null) {
|
|
||||||
if (privilege.getTrade()) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
if (dom.getTrade()) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Dominion.notification.error(bukkitPlayer, "你没有交易的权限");
|
|
||||||
event.setCancelled(true);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler(priority = EventPriority.HIGHEST) // vehicle_destroy
|
@EventHandler(priority = EventPriority.HIGHEST) // vehicle_destroy
|
||||||
@ -1208,24 +645,7 @@ public class PlayerEvents implements Listener {
|
|||||||
}
|
}
|
||||||
Player player = (Player) event.getAttacker();
|
Player player = (Player) event.getAttacker();
|
||||||
DominionDTO dom = Cache.instance.getDominion(event.getVehicle().getLocation());
|
DominionDTO dom = Cache.instance.getDominion(event.getVehicle().getLocation());
|
||||||
if (dom == null) {
|
checkFlag(dom, Flag.VEHICLE_DESTROY, player, event);
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (Apis.hasPermission(player, dom)) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
PlayerPrivilegeDTO privilege = Cache.instance.getPlayerPrivilege(player, dom);
|
|
||||||
if (privilege != null) {
|
|
||||||
if (privilege.getVehicleDestroy()) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
if (dom.getVehicleDestroy()) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Dominion.notification.error(player, "你没有破坏交通工具的权限");
|
|
||||||
event.setCancelled(true);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler(priority = EventPriority.HIGHEST) // vehicle_spawn
|
@EventHandler(priority = EventPriority.HIGHEST) // vehicle_spawn
|
||||||
@ -1239,23 +659,6 @@ public class PlayerEvents implements Listener {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
DominionDTO dom = Cache.instance.getDominion(entity.getLocation());
|
DominionDTO dom = Cache.instance.getDominion(entity.getLocation());
|
||||||
if (dom == null) {
|
checkFlag(dom, Flag.VEHICLE_SPAWN, player, event);
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (Apis.hasPermission(player, dom)) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
PlayerPrivilegeDTO privilege = Cache.instance.getPlayerPrivilege(player, dom);
|
|
||||||
if (privilege != null) {
|
|
||||||
if (privilege.getVehicleSpawn()) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
if (dom.getVehicleSpawn()) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Dominion.notification.error(player, "你没有放置交通工具的权限");
|
|
||||||
event.setCancelled(true);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -40,7 +40,7 @@ public class DominionFlagInfo {
|
|||||||
.append(Button.create("我的领地").setExecuteCommand("/dominion list").build())
|
.append(Button.create("我的领地").setExecuteCommand("/dominion list").build())
|
||||||
.append(Button.create("管理界面").setExecuteCommand("/dominion manage " + dominion.getName()).build())
|
.append(Button.create("管理界面").setExecuteCommand("/dominion manage " + dominion.getName()).build())
|
||||||
.append("权限列表"));
|
.append("权限列表"));
|
||||||
for (Flag flag : Flag.getDominionFlags()) {
|
for (Flag flag : Flag.getDominionFlagsEnabled()) {
|
||||||
view.add(createOption(flag, dominion.getFlagValue(flag), dominion.getName(), page));
|
view.add(createOption(flag, dominion.getFlagValue(flag), dominion.getName(), page));
|
||||||
}
|
}
|
||||||
view.showOn(player, page);
|
view.showOn(player, page);
|
||||||
|
@ -2,11 +2,13 @@ package cn.lunadeer.dominion.tuis;
|
|||||||
|
|
||||||
import cn.lunadeer.dominion.Dominion;
|
import cn.lunadeer.dominion.Dominion;
|
||||||
import cn.lunadeer.dominion.dtos.DominionDTO;
|
import cn.lunadeer.dominion.dtos.DominionDTO;
|
||||||
|
import cn.lunadeer.dominion.dtos.Flag;
|
||||||
import cn.lunadeer.dominion.dtos.PlayerDTO;
|
import cn.lunadeer.dominion.dtos.PlayerDTO;
|
||||||
import cn.lunadeer.dominion.dtos.PlayerPrivilegeDTO;
|
import cn.lunadeer.dominion.dtos.PlayerPrivilegeDTO;
|
||||||
import cn.lunadeer.minecraftpluginutils.stui.ListView;
|
import cn.lunadeer.minecraftpluginutils.stui.ListView;
|
||||||
import cn.lunadeer.minecraftpluginutils.stui.components.Button;
|
import cn.lunadeer.minecraftpluginutils.stui.components.Button;
|
||||||
import cn.lunadeer.minecraftpluginutils.stui.components.Line;
|
import cn.lunadeer.minecraftpluginutils.stui.components.Line;
|
||||||
|
import net.kyori.adventure.text.Component;
|
||||||
import org.bukkit.command.CommandSender;
|
import org.bukkit.command.CommandSender;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
@ -62,339 +64,21 @@ public class PrivilegeInfo {
|
|||||||
.append(Button.createRed("☐").setExecuteCommand("/dominion set_privilege " + playerName + " admin true " + dominion.getName() + " " + page).build())
|
.append(Button.createRed("☐").setExecuteCommand("/dominion set_privilege " + playerName + " admin true " + dominion.getName() + " " + page).build())
|
||||||
.append("管理员"));
|
.append("管理员"));
|
||||||
}
|
}
|
||||||
if (privilege.getAnchor()) {
|
for (Flag flag : Flag.getPrivilegeFlagsEnabled()) {
|
||||||
view.add(Line.create()
|
view.add(createOption(flag, privilege.getFlagValue(flag), playerName, dominion.getName(), page));
|
||||||
.append(Button.createGreen("☑").setExecuteCommand("/dominion set_privilege " + playerName + " anchor false " + dominion.getName() + " " + page).build())
|
|
||||||
.append("重生锚"));
|
|
||||||
} else {
|
|
||||||
view.add(Line.create()
|
|
||||||
.append(Button.createRed("☐").setExecuteCommand("/dominion set_privilege " + playerName + " anchor true " + dominion.getName() + " " + page).build())
|
|
||||||
.append("重生锚"));
|
|
||||||
}
|
|
||||||
if (privilege.getAnimalKilling()) {
|
|
||||||
view.add(Line.create()
|
|
||||||
.append(Button.createGreen("☑").setExecuteCommand("/dominion set_privilege " + playerName + " animal_killing false " + dominion.getName() + " " + page).build())
|
|
||||||
.append("动物伤害"));
|
|
||||||
} else {
|
|
||||||
view.add(Line.create()
|
|
||||||
.append(Button.createRed("☐").setExecuteCommand("/dominion set_privilege " + playerName + " animal_killing true " + dominion.getName() + " " + page).build())
|
|
||||||
.append("动物伤害"));
|
|
||||||
}
|
|
||||||
if (privilege.getAnvil()) {
|
|
||||||
view.add(Line.create()
|
|
||||||
.append(Button.createGreen("☑").setExecuteCommand("/dominion set_privilege " + playerName + " anvil false " + dominion.getName() + " " + page).build())
|
|
||||||
.append("使用铁砧"));
|
|
||||||
} else {
|
|
||||||
view.add(Line.create()
|
|
||||||
.append(Button.createRed("☐").setExecuteCommand("/dominion set_privilege " + playerName + " anvil true " + dominion.getName() + " " + page).build())
|
|
||||||
.append("使用铁砧"));
|
|
||||||
}
|
|
||||||
if (privilege.getBeacon()) {
|
|
||||||
view.add(Line.create()
|
|
||||||
.append(Button.createGreen("☑").setExecuteCommand("/dominion set_privilege " + playerName + " beacon false " + dominion.getName() + " " + page).build())
|
|
||||||
.append("信标交互"));
|
|
||||||
} else {
|
|
||||||
view.add(Line.create()
|
|
||||||
.append(Button.createRed("☐").setExecuteCommand("/dominion set_privilege " + playerName + " beacon true " + dominion.getName() + " " + page).build())
|
|
||||||
.append("信标交互"));
|
|
||||||
}
|
|
||||||
if (privilege.getBed()) {
|
|
||||||
view.add(Line.create()
|
|
||||||
.append(Button.createGreen("☑").setExecuteCommand("/dominion set_privilege " + playerName + " bed false " + dominion.getName() + " " + page).build())
|
|
||||||
.append("床交互"));
|
|
||||||
} else {
|
|
||||||
view.add(Line.create()
|
|
||||||
.append(Button.createRed("☐").setExecuteCommand("/dominion set_privilege " + playerName + " bed true " + dominion.getName() + " " + page).build())
|
|
||||||
.append("床交互"));
|
|
||||||
}
|
|
||||||
if (privilege.getBrew()) {
|
|
||||||
view.add(Line.create()
|
|
||||||
.append(Button.createGreen("☑").setExecuteCommand("/dominion set_privilege " + playerName + " brew false " + dominion.getName() + " " + page).build())
|
|
||||||
.append("使用酿造台"));
|
|
||||||
} else {
|
|
||||||
view.add(Line.create()
|
|
||||||
.append(Button.createRed("☐").setExecuteCommand("/dominion set_privilege " + playerName + " brew true " + dominion.getName() + " " + page).build())
|
|
||||||
.append("使用酿造台"));
|
|
||||||
}
|
|
||||||
if (privilege.getBreak()) {
|
|
||||||
view.add(Line.create()
|
|
||||||
.append(Button.createGreen("☑").setExecuteCommand("/dominion set_privilege " + playerName + " break false " + dominion.getName() + " " + page).build())
|
|
||||||
.append("破坏方块"));
|
|
||||||
} else {
|
|
||||||
view.add(Line.create()
|
|
||||||
.append(Button.createRed("☐").setExecuteCommand("/dominion set_privilege " + playerName + " break true " + dominion.getName() + " " + page).build())
|
|
||||||
.append("破坏方块"));
|
|
||||||
}
|
|
||||||
if (privilege.getButton()) {
|
|
||||||
view.add(Line.create()
|
|
||||||
.append(Button.createGreen("☑").setExecuteCommand("/dominion set_privilege " + playerName + " button false " + dominion.getName() + " " + page).build())
|
|
||||||
.append("使用按钮"));
|
|
||||||
} else {
|
|
||||||
view.add(Line.create()
|
|
||||||
.append(Button.createRed("☐").setExecuteCommand("/dominion set_privilege " + playerName + " button true " + dominion.getName() + " " + page).build())
|
|
||||||
.append("使用按钮"));
|
|
||||||
}
|
|
||||||
if (privilege.getCake()) {
|
|
||||||
view.add(Line.create()
|
|
||||||
.append(Button.createGreen("☑").setExecuteCommand("/dominion set_privilege " + playerName + " cake false " + dominion.getName() + " " + page).build())
|
|
||||||
.append("使用蛋糕"));
|
|
||||||
} else {
|
|
||||||
view.add(Line.create()
|
|
||||||
.append(Button.createRed("☐").setExecuteCommand("/dominion set_privilege " + playerName + " cake true " + dominion.getName() + " " + page).build())
|
|
||||||
.append("使用蛋糕"));
|
|
||||||
}
|
|
||||||
if (privilege.getContainer()) {
|
|
||||||
view.add(Line.create()
|
|
||||||
.append(Button.createGreen("☑").setExecuteCommand("/dominion set_privilege " + playerName + " container false " + dominion.getName() + " " + page).build())
|
|
||||||
.append("箱子/木桶/潜影盒/盔甲架/展示框"));
|
|
||||||
} else {
|
|
||||||
view.add(Line.create()
|
|
||||||
.append(Button.createRed("☐").setExecuteCommand("/dominion set_privilege " + playerName + " container true " + dominion.getName() + " " + page).build())
|
|
||||||
.append("箱子/木桶/潜影盒/盔甲架/展示框"));
|
|
||||||
}
|
|
||||||
if (privilege.getCraft()) {
|
|
||||||
view.add(Line.create()
|
|
||||||
.append(Button.createGreen("☑").setExecuteCommand("/dominion set_privilege " + playerName + " craft false " + dominion.getName() + " " + page).build())
|
|
||||||
.append("使用工作台"));
|
|
||||||
} else {
|
|
||||||
view.add(Line.create()
|
|
||||||
.append(Button.createRed("☐").setExecuteCommand("/dominion set_privilege " + playerName + " craft true " + dominion.getName() + " " + page).build())
|
|
||||||
.append("使用工作台"));
|
|
||||||
}
|
|
||||||
if (privilege.getComparer()) {
|
|
||||||
view.add(Line.create()
|
|
||||||
.append(Button.createGreen("☑").setExecuteCommand("/dominion set_privilege " + playerName + " comparer false " + dominion.getName() + " " + page).build())
|
|
||||||
.append("比较器交互"));
|
|
||||||
} else {
|
|
||||||
view.add(Line.create()
|
|
||||||
.append(Button.createRed("☐").setExecuteCommand("/dominion set_privilege " + playerName + " comparer true " + dominion.getName() + " " + page).build())
|
|
||||||
.append("比较器交互"));
|
|
||||||
}
|
|
||||||
if (privilege.getDoor()) {
|
|
||||||
view.add(Line.create()
|
|
||||||
.append(Button.createGreen("☑").setExecuteCommand("/dominion set_privilege " + playerName + " door false " + dominion.getName() + " " + page).build())
|
|
||||||
.append("门交互"));
|
|
||||||
} else {
|
|
||||||
view.add(Line.create()
|
|
||||||
.append(Button.createRed("☐").setExecuteCommand("/dominion set_privilege " + playerName + " door true " + dominion.getName() + " " + page).build())
|
|
||||||
.append("门交互"));
|
|
||||||
}
|
|
||||||
if (privilege.getDye()) {
|
|
||||||
view.add(Line.create()
|
|
||||||
.append(Button.createGreen("☑").setExecuteCommand("/dominion set_privilege " + playerName + " dye false " + dominion.getName() + " " + page).build())
|
|
||||||
.append("染色"));
|
|
||||||
} else {
|
|
||||||
view.add(Line.create()
|
|
||||||
.append(Button.createRed("☐").setExecuteCommand("/dominion set_privilege " + playerName + " dye true " + dominion.getName() + " " + page).build())
|
|
||||||
.append("染色"));
|
|
||||||
}
|
|
||||||
if (privilege.getEgg()) {
|
|
||||||
view.add(Line.create()
|
|
||||||
.append(Button.createGreen("☑").setExecuteCommand("/dominion set_privilege " + playerName + " egg false " + dominion.getName() + " " + page).build())
|
|
||||||
.append("投掷鸡蛋"));
|
|
||||||
} else {
|
|
||||||
view.add(Line.create()
|
|
||||||
.append(Button.createRed("☐").setExecuteCommand("/dominion set_privilege " + playerName + " egg true " + dominion.getName() + " " + page).build())
|
|
||||||
.append("投掷鸡蛋"));
|
|
||||||
}
|
|
||||||
if (privilege.getEnchant()) {
|
|
||||||
view.add(Line.create()
|
|
||||||
.append(Button.createGreen("☑").setExecuteCommand("/dominion set_privilege " + playerName + " enchant false " + dominion.getName() + " " + page).build())
|
|
||||||
.append("使用附魔台"));
|
|
||||||
} else {
|
|
||||||
view.add(Line.create()
|
|
||||||
.append(Button.createRed("☐").setExecuteCommand("/dominion set_privilege " + playerName + " enchant true " + dominion.getName() + " " + page).build())
|
|
||||||
.append("使用附魔台"));
|
|
||||||
}
|
|
||||||
if (privilege.getEnderPearl()) {
|
|
||||||
view.add(Line.create()
|
|
||||||
.append(Button.createGreen("☑").setExecuteCommand("/dominion set_privilege " + playerName + " ender_pearl false " + dominion.getName() + " " + page).build())
|
|
||||||
.append("投掷末影珍珠"));
|
|
||||||
} else {
|
|
||||||
view.add(Line.create()
|
|
||||||
.append(Button.createRed("☐").setExecuteCommand("/dominion set_privilege " + playerName + " ender_pearl true " + dominion.getName() + " " + page).build())
|
|
||||||
.append("投掷末影珍珠"));
|
|
||||||
}
|
|
||||||
if (privilege.getFeed()) {
|
|
||||||
view.add(Line.create()
|
|
||||||
.append(Button.createGreen("☑").setExecuteCommand("/dominion set_privilege " + playerName + " feed false " + dominion.getName() + " " + page).build())
|
|
||||||
.append("喂食"));
|
|
||||||
} else {
|
|
||||||
view.add(Line.create()
|
|
||||||
.append(Button.createRed("☐").setExecuteCommand("/dominion set_privilege " + playerName + " feed true " + dominion.getName() + " " + page).build())
|
|
||||||
.append("喂食"));
|
|
||||||
}
|
|
||||||
if (privilege.getGlow()) {
|
|
||||||
view.add(Line.create()
|
|
||||||
.append(Button.createGreen("☑").setExecuteCommand("/dominion set_privilege " + playerName + " glow false " + dominion.getName() + " " + page).build())
|
|
||||||
.append("发光"));
|
|
||||||
} else {
|
|
||||||
view.add(Line.create()
|
|
||||||
.append(Button.createRed("☐").setExecuteCommand("/dominion set_privilege " + playerName + " glow true " + dominion.getName() + " " + page).build())
|
|
||||||
.append("发光"));
|
|
||||||
}
|
|
||||||
if (privilege.getHarvest()) {
|
|
||||||
view.add(Line.create()
|
|
||||||
.append(Button.createGreen("☑").setExecuteCommand("/dominion set_privilege " + playerName + " harvest false " + dominion.getName() + " " + page).build())
|
|
||||||
.append("收获"));
|
|
||||||
} else {
|
|
||||||
view.add(Line.create()
|
|
||||||
.append(Button.createRed("☐").setExecuteCommand("/dominion set_privilege " + playerName + " harvest true " + dominion.getName() + " " + page).build())
|
|
||||||
.append("收获"));
|
|
||||||
}
|
|
||||||
if (privilege.getHoney()) {
|
|
||||||
view.add(Line.create()
|
|
||||||
.append(Button.createGreen("☑").setExecuteCommand("/dominion set_privilege " + playerName + " honey false " + dominion.getName() + " " + page).build())
|
|
||||||
.append("蜂巢交互"));
|
|
||||||
} else {
|
|
||||||
view.add(Line.create()
|
|
||||||
.append(Button.createRed("☐").setExecuteCommand("/dominion set_privilege " + playerName + " honey true " + dominion.getName() + " " + page).build())
|
|
||||||
.append("蜂巢交互"));
|
|
||||||
}
|
|
||||||
if (privilege.getHook()) {
|
|
||||||
view.add(Line.create()
|
|
||||||
.append(Button.createGreen("☑").setExecuteCommand("/dominion set_privilege " + playerName + " hook false " + dominion.getName() + " " + page).build())
|
|
||||||
.append("使用钓钩"));
|
|
||||||
} else {
|
|
||||||
view.add(Line.create()
|
|
||||||
.append(Button.createRed("☐").setExecuteCommand("/dominion set_privilege " + playerName + " hook true " + dominion.getName() + " " + page).build())
|
|
||||||
.append("使用钓钩"));
|
|
||||||
}
|
|
||||||
if (privilege.getHopper()) {
|
|
||||||
view.add(Line.create()
|
|
||||||
.append(Button.createGreen("☑").setExecuteCommand("/dominion set_privilege " + playerName + " hopper false " + dominion.getName() + " " + page).build())
|
|
||||||
.append("漏斗/熔炉/发射器等特殊容器"));
|
|
||||||
} else {
|
|
||||||
view.add(Line.create()
|
|
||||||
.append(Button.createRed("☐").setExecuteCommand("/dominion set_privilege " + playerName + " hopper true " + dominion.getName() + " " + page).build())
|
|
||||||
.append("漏斗/熔炉/发射器等特殊容器"));
|
|
||||||
}
|
|
||||||
if (privilege.getIgnite()) {
|
|
||||||
view.add(Line.create()
|
|
||||||
.append(Button.createGreen("☑").setExecuteCommand("/dominion set_privilege " + playerName + " ignite false " + dominion.getName() + " " + page).build())
|
|
||||||
.append("点燃"));
|
|
||||||
} else {
|
|
||||||
view.add(Line.create()
|
|
||||||
.append(Button.createRed("☐").setExecuteCommand("/dominion set_privilege " + playerName + " ignite true " + dominion.getName() + " " + page).build())
|
|
||||||
.append("点燃"));
|
|
||||||
}
|
|
||||||
if (privilege.getLever()) {
|
|
||||||
view.add(Line.create()
|
|
||||||
.append(Button.createGreen("☑").setExecuteCommand("/dominion set_privilege " + playerName + " lever false " + dominion.getName() + " " + page).build())
|
|
||||||
.append("使用拉杆"));
|
|
||||||
} else {
|
|
||||||
view.add(Line.create()
|
|
||||||
.append(Button.createRed("☐").setExecuteCommand("/dominion set_privilege " + playerName + " lever true " + dominion.getName() + " " + page).build())
|
|
||||||
.append("使用拉杆"));
|
|
||||||
}
|
|
||||||
if (privilege.getMonsterKilling()) {
|
|
||||||
view.add(Line.create()
|
|
||||||
.append(Button.createGreen("☑").setExecuteCommand("/dominion set_privilege " + playerName + " monster_killing false " + dominion.getName() + " " + page).build())
|
|
||||||
.append("怪物伤害"));
|
|
||||||
} else {
|
|
||||||
view.add(Line.create()
|
|
||||||
.append(Button.createRed("☐").setExecuteCommand("/dominion set_privilege " + playerName + " monster_killing true " + dominion.getName() + " " + page).build())
|
|
||||||
.append("怪物伤害"));
|
|
||||||
}
|
|
||||||
if (privilege.getMove()) {
|
|
||||||
view.add(Line.create()
|
|
||||||
.append(Button.createGreen("☑").setExecuteCommand("/dominion set_privilege " + playerName + " move false " + dominion.getName() + " " + page).build())
|
|
||||||
.append("玩家移动"));
|
|
||||||
} else {
|
|
||||||
view.add(Line.create()
|
|
||||||
.append(Button.createRed("☐").setExecuteCommand("/dominion set_privilege " + playerName + " move true " + dominion.getName() + " " + page).build())
|
|
||||||
.append("玩家移动"));
|
|
||||||
}
|
|
||||||
if (privilege.getPlace()) {
|
|
||||||
view.add(Line.create()
|
|
||||||
.append(Button.createGreen("☑").setExecuteCommand("/dominion set_privilege " + playerName + " place false " + dominion.getName() + " " + page).build())
|
|
||||||
.append("放置方块"));
|
|
||||||
} else {
|
|
||||||
view.add(Line.create()
|
|
||||||
.append(Button.createRed("☐").setExecuteCommand("/dominion set_privilege " + playerName + " place true " + dominion.getName() + " " + page).build())
|
|
||||||
.append("放置方块"));
|
|
||||||
}
|
|
||||||
if (privilege.getPressure()) {
|
|
||||||
view.add(Line.create()
|
|
||||||
.append(Button.createGreen("☑").setExecuteCommand("/dominion set_privilege " + playerName + " pressure false " + dominion.getName() + " " + page).build())
|
|
||||||
.append("压力板交互"));
|
|
||||||
} else {
|
|
||||||
view.add(Line.create()
|
|
||||||
.append(Button.createRed("☐").setExecuteCommand("/dominion set_privilege " + playerName + " pressure true " + dominion.getName() + " " + page).build())
|
|
||||||
.append("压力板交互"));
|
|
||||||
}
|
|
||||||
if (privilege.getRiding()) {
|
|
||||||
view.add(Line.create()
|
|
||||||
.append(Button.createGreen("☑").setExecuteCommand("/dominion set_privilege " + playerName + " riding false " + dominion.getName() + " " + page).build())
|
|
||||||
.append("骑乘载具"));
|
|
||||||
} else {
|
|
||||||
view.add(Line.create()
|
|
||||||
.append(Button.createRed("☐").setExecuteCommand("/dominion set_privilege " + playerName + " riding true " + dominion.getName() + " " + page).build())
|
|
||||||
.append("骑乘载具"));
|
|
||||||
}
|
|
||||||
if (privilege.getRepeater()) {
|
|
||||||
view.add(Line.create()
|
|
||||||
.append(Button.createGreen("☑").setExecuteCommand("/dominion set_privilege " + playerName + " repeater false " + dominion.getName() + " " + page).build())
|
|
||||||
.append("中继器交互"));
|
|
||||||
} else {
|
|
||||||
view.add(Line.create()
|
|
||||||
.append(Button.createRed("☐").setExecuteCommand("/dominion set_privilege " + playerName + " repeater true " + dominion.getName() + " " + page).build())
|
|
||||||
.append("中继器交互"));
|
|
||||||
}
|
|
||||||
if (privilege.getShear()) {
|
|
||||||
view.add(Line.create()
|
|
||||||
.append(Button.createGreen("☑").setExecuteCommand("/dominion set_privilege " + playerName + " shear false " + dominion.getName() + " " + page).build())
|
|
||||||
.append("剪羊毛"));
|
|
||||||
} else {
|
|
||||||
view.add(Line.create()
|
|
||||||
.append(Button.createRed("☐").setExecuteCommand("/dominion set_privilege " + playerName + " shear true " + dominion.getName() + " " + page).build())
|
|
||||||
.append("剪羊毛"));
|
|
||||||
}
|
|
||||||
if (privilege.getShoot()) {
|
|
||||||
view.add(Line.create()
|
|
||||||
.append(Button.createGreen("☑").setExecuteCommand("/dominion set_privilege " + playerName + " shoot false " + dominion.getName() + " " + page).build())
|
|
||||||
.append("射箭/雪球/三叉戟"));
|
|
||||||
} else {
|
|
||||||
view.add(Line.create()
|
|
||||||
.append(Button.createRed("☐").setExecuteCommand("/dominion set_privilege " + playerName + " shoot true " + dominion.getName() + " " + page).build())
|
|
||||||
.append("射箭/雪球/三叉戟"));
|
|
||||||
}
|
|
||||||
if (privilege.getTeleport()) {
|
|
||||||
view.add(Line.create()
|
|
||||||
.append(Button.createGreen("☑").setExecuteCommand("/dominion set_privilege " + playerName + " teleport false " + dominion.getName() + " " + page).build())
|
|
||||||
.append("领地传送"));
|
|
||||||
} else {
|
|
||||||
view.add(Line.create()
|
|
||||||
.append(Button.createRed("☐").setExecuteCommand("/dominion set_privilege " + playerName + " teleport true " + dominion.getName() + " " + page).build())
|
|
||||||
.append("领地传送"));
|
|
||||||
}
|
|
||||||
if (privilege.getTrade()) {
|
|
||||||
view.add(Line.create()
|
|
||||||
.append(Button.createGreen("☑").setExecuteCommand("/dominion set_privilege " + playerName + " trade false " + dominion.getName() + " " + page).build())
|
|
||||||
.append("交易"));
|
|
||||||
} else {
|
|
||||||
view.add(Line.create()
|
|
||||||
.append(Button.createRed("☐").setExecuteCommand("/dominion set_privilege " + playerName + " trade true " + dominion.getName() + " " + page).build())
|
|
||||||
.append("交易"));
|
|
||||||
}
|
|
||||||
if (privilege.getVehicleDestroy()) {
|
|
||||||
view.add(Line.create()
|
|
||||||
.append(Button.createGreen("☑").setExecuteCommand("/dominion set_privilege " + playerName + " vehicle_destroy false " + dominion.getName() + " " + page).build())
|
|
||||||
.append("破坏载具"));
|
|
||||||
} else {
|
|
||||||
view.add(Line.create()
|
|
||||||
.append(Button.createRed("☐").setExecuteCommand("/dominion set_privilege " + playerName + " vehicle_destroy true " + dominion.getName() + " " + page).build())
|
|
||||||
.append("破坏载具"));
|
|
||||||
}
|
|
||||||
if (privilege.getVehicleSpawn()) {
|
|
||||||
view.add(Line.create()
|
|
||||||
.append(Button.createGreen("☑").setExecuteCommand("/dominion set_privilege " + playerName + " vehicle_spawn false " + dominion.getName() + " " + page).build())
|
|
||||||
.append("放置载具"));
|
|
||||||
} else {
|
|
||||||
view.add(Line.create()
|
|
||||||
.append(Button.createRed("☐").setExecuteCommand("/dominion set_privilege " + playerName + " vehicle_spawn true " + dominion.getName() + " " + page).build())
|
|
||||||
.append("放置载具"));
|
|
||||||
}
|
}
|
||||||
view.showOn(player, page);
|
view.showOn(player, page);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static Line createOption(Flag flag, boolean value, String player_name, String dominion_name, int page) {
|
||||||
|
if (value) {
|
||||||
|
return Line.create()
|
||||||
|
.append(Button.createGreen("☑").setExecuteCommand("/dominion set_privilege " + player_name + " " + flag.getFlagName() + " false " + dominion_name + " " + page).build())
|
||||||
|
.append(Component.text(flag.getDisplayName()).hoverEvent(Component.text(flag.getDescription())));
|
||||||
|
} else {
|
||||||
|
return Line.create()
|
||||||
|
.append(Button.createRed("☐").setExecuteCommand("/dominion set_privilege " + player_name + " " + flag.getFlagName() + " true " + dominion_name + " " + page).build())
|
||||||
|
.append(Component.text(flag.getDisplayName()).hoverEvent(Component.text(flag.getDescription())));
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user