新增配置文件flags.json支持对权限本身进行控制:编辑说明、是否允许配置、权限默认值
All checks were successful
Java CI-CD with Maven / build (push) Successful in 9m56s
All checks were successful
Java CI-CD with Maven / build (push) Successful in 9m56s
This commit is contained in:
parent
2fdda7220f
commit
ee5b32a5ed
5
pom.xml
5
pom.xml
@ -96,5 +96,10 @@
|
|||||||
<version>1.7</version>
|
<version>1.7</version>
|
||||||
<scope>provided</scope>
|
<scope>provided</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.alibaba</groupId>
|
||||||
|
<artifactId>fastjson</artifactId>
|
||||||
|
<version>2.0.31</version>
|
||||||
|
</dependency>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
</project>
|
</project>
|
||||||
|
@ -1,5 +1,10 @@
|
|||||||
package cn.lunadeer.dominion.dtos;
|
package cn.lunadeer.dominion.dtos;
|
||||||
|
|
||||||
|
import cn.lunadeer.dominion.Dominion;
|
||||||
|
import com.alibaba.fastjson.JSON;
|
||||||
|
import com.alibaba.fastjson.JSONObject;
|
||||||
|
|
||||||
|
import java.io.*;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@ -83,6 +88,9 @@ public enum Flag {
|
|||||||
public Boolean getDefaultValue() {
|
public Boolean getDefaultValue() {
|
||||||
return default_value;
|
return default_value;
|
||||||
}
|
}
|
||||||
|
public Boolean getEnable() {
|
||||||
|
return enable;
|
||||||
|
}
|
||||||
|
|
||||||
public void setDisplayName(String displayName) {
|
public void setDisplayName(String displayName) {
|
||||||
this.display_name = displayName;
|
this.display_name = displayName;
|
||||||
@ -148,4 +156,66 @@ public enum Flag {
|
|||||||
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);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
{
|
||||||
|
flag_name: {
|
||||||
|
display_name: "",
|
||||||
|
description: "",
|
||||||
|
default_value: true,
|
||||||
|
enable: true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
|
public static void loadFromJson(File dataFolder) {
|
||||||
|
File flagFile = new File(dataFolder, "flags.json");
|
||||||
|
if (!flagFile.exists()) {
|
||||||
|
saveToJson(dataFolder);
|
||||||
|
}
|
||||||
|
|
||||||
|
try (FileReader reader = new FileReader(flagFile);
|
||||||
|
BufferedReader bufferedReader = new BufferedReader(reader)) {
|
||||||
|
StringBuilder stringBuilder = new StringBuilder();
|
||||||
|
String line;
|
||||||
|
while ((line = bufferedReader.readLine()) != null) {
|
||||||
|
stringBuilder.append(line);
|
||||||
|
stringBuilder.append(System.lineSeparator());
|
||||||
|
}
|
||||||
|
String fileContent = stringBuilder.toString();
|
||||||
|
JSONObject jsonObject = (JSONObject) JSONObject.parse(fileContent);
|
||||||
|
for (Flag flag : getAllFlags()) {
|
||||||
|
JSONObject flagJson = (JSONObject) jsonObject.get(flag.getFlagName());
|
||||||
|
if (flagJson != null) {
|
||||||
|
flag.setDisplayName((String) flagJson.get("display_name"));
|
||||||
|
flag.setDescription((String) flagJson.get("description"));
|
||||||
|
flag.setDefaultValue((Boolean) flagJson.get("default_value"));
|
||||||
|
flag.setEnable((Boolean) flagJson.get("enable"));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} catch (Exception e) {
|
||||||
|
Dominion.logger.err("读取权限配置失败:%s", e.getMessage());
|
||||||
|
}
|
||||||
|
saveToJson(dataFolder); // 复写一遍,确保文件中包含所有权限
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void saveToJson(File dataFolder) {
|
||||||
|
JSONObject json = new JSONObject();
|
||||||
|
for (Flag f : getAllFlags()) {
|
||||||
|
JSONObject flagJson = new JSONObject();
|
||||||
|
flagJson.put("display_name", f.getDisplayName());
|
||||||
|
flagJson.put("description", f.getDescription());
|
||||||
|
flagJson.put("default_value", f.getDefaultValue());
|
||||||
|
flagJson.put("enable", f.enable);
|
||||||
|
json.put(f.getFlagName(), flagJson);
|
||||||
|
}
|
||||||
|
File flagFile = new File(dataFolder, "flags.json");
|
||||||
|
// save to file, if exists then overwrite
|
||||||
|
try (FileWriter fileWriter = new FileWriter(flagFile);
|
||||||
|
BufferedWriter bufferedWriter = new BufferedWriter(fileWriter)) {
|
||||||
|
bufferedWriter.write(JSON.toJSONString(json, true));
|
||||||
|
} catch (Exception e) {
|
||||||
|
Dominion.logger.err("写入权限配置失败:%s", e.getMessage());
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -37,6 +37,9 @@ public class Apis {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static boolean checkFlag(DominionDTO dom, Flag flag, Player player, Cancellable event) {
|
public static boolean checkFlag(DominionDTO dom, Flag flag, Player player, Cancellable event) {
|
||||||
|
if (!flag.getEnable()) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
if (dom == null) {
|
if (dom == null) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
package cn.lunadeer.dominion.managers;
|
package cn.lunadeer.dominion.managers;
|
||||||
|
|
||||||
import cn.lunadeer.dominion.Dominion;
|
import cn.lunadeer.dominion.Dominion;
|
||||||
|
import cn.lunadeer.dominion.dtos.Flag;
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
import org.bukkit.configuration.file.FileConfiguration;
|
import org.bukkit.configuration.file.FileConfiguration;
|
||||||
|
|
||||||
@ -84,6 +85,7 @@ public class ConfigManager {
|
|||||||
_economy_price = (float) _file.getDouble("Economy.Price", 10.0);
|
_economy_price = (float) _file.getDouble("Economy.Price", 10.0);
|
||||||
_economy_only_xz = _file.getBoolean("Economy.OnlyXZ", false);
|
_economy_only_xz = _file.getBoolean("Economy.OnlyXZ", false);
|
||||||
_economy_refund = (float) _file.getDouble("Economy.Refund", 0.85);
|
_economy_refund = (float) _file.getDouble("Economy.Refund", 0.85);
|
||||||
|
Flag.loadFromJson(_plugin.getDataFolder());
|
||||||
}
|
}
|
||||||
|
|
||||||
public Boolean isDebug() {
|
public Boolean isDebug() {
|
||||||
|
Reference in New Issue
Block a user