diff --git a/README.md b/README.md
index 36982f5..d463a75 100644
--- a/README.md
+++ b/README.md
@@ -76,15 +76,21 @@
### 配置文件参考
```yaml
+# 地图画阵列的最大尺寸 宽
MaxFrameX: 32
+# 地图画阵列的最大尺寸 高
MaxFrameY: 18
-CheckUpdate: true
-
+# 是否启用经济系统 消耗玩家金钱生成地图画
Economy:
Enable: false
- CostPerMap: 100.0
+ CostPerMap: 100.0 # 每张地图画的单价 - 3*3的地图画需要9张地图画 也就是 9*100 = 900
+
+# 图床地址白名单,不在白名单中的图床将无法使用,留空表示不启用地址白名单
+AddressWhiteList: []
+
+CheckUpdate: true
Debug: false
```
diff --git a/pom.xml b/pom.xml
index e58595c..dd39141 100644
--- a/pom.xml
+++ b/pom.xml
@@ -6,7 +6,7 @@
cn.lunadeer
ColorfulMap
- 2.1
+ 2.2
jar
ColorfulMap
diff --git a/src/main/java/cn/lunadeer/colorfulmap/Configuration.java b/src/main/java/cn/lunadeer/colorfulmap/Configuration.java
index ee15210..7eba048 100644
--- a/src/main/java/cn/lunadeer/colorfulmap/Configuration.java
+++ b/src/main/java/cn/lunadeer/colorfulmap/Configuration.java
@@ -4,6 +4,8 @@ import cn.lunadeer.colorfulmap.utils.VaultConnect.VaultConnect;
import cn.lunadeer.colorfulmap.utils.XLogger;
import org.bukkit.configuration.file.FileConfiguration;
+import java.util.List;
+
public class Configuration {
public Configuration(ColorfulMap plugin) {
@@ -22,10 +24,12 @@ public class Configuration {
_check_update = _file.getBoolean("CheckUpdate", true);
_economy_enable = _file.getBoolean("Economy.Enable", false);
_price = (float) _file.getDouble("Economy.CostPerMap", 100.0);
+ _address_white_list = _file.getStringList("AddressWhiteList");
if (_economy_enable) {
XLogger.info("已启用经济系统");
new VaultConnect(_plugin);
}
+ saveAll();
}
public void saveAll() {
@@ -35,6 +39,7 @@ public class Configuration {
_file.set("CheckUpdate", _check_update);
_file.set("Economy.Enable", _economy_enable);
_file.set("Economy.CostPerMap", _price);
+ _file.set("AddressWhiteList", _address_white_list);
_plugin.saveConfig();
}
@@ -98,6 +103,16 @@ public class Configuration {
_plugin.saveConfig();
}
+ public List getAddressWhiteList() {
+ return _address_white_list;
+ }
+
+ public void setAddressWhiteList(List address_white_list) {
+ _address_white_list = address_white_list;
+ _file.set("AddressWhiteList", address_white_list);
+ _plugin.saveConfig();
+ }
+
private final ColorfulMap _plugin;
private FileConfiguration _file;
private Boolean _debug;
@@ -106,4 +121,5 @@ public class Configuration {
private Boolean _check_update;
private Boolean _economy_enable;
private Float _price;
+ private List _address_white_list;
}
diff --git a/src/main/java/cn/lunadeer/colorfulmap/generator/Multi.java b/src/main/java/cn/lunadeer/colorfulmap/generator/Multi.java
index fb8b335..5554699 100644
--- a/src/main/java/cn/lunadeer/colorfulmap/generator/Multi.java
+++ b/src/main/java/cn/lunadeer/colorfulmap/generator/Multi.java
@@ -4,6 +4,7 @@ import cn.lunadeer.colorfulmap.ColorfulMap;
import cn.lunadeer.colorfulmap.StorageMaps;
import cn.lunadeer.colorfulmap.utils.ImageTool;
import cn.lunadeer.colorfulmap.utils.Notification;
+import cn.lunadeer.colorfulmap.utils.UrlTools;
import cn.lunadeer.colorfulmap.utils.VaultConnect.VaultConnect;
import net.kyori.adventure.text.Component;
import org.bukkit.entity.Player;
@@ -24,6 +25,10 @@ public class Multi {
public static ItemStack generate(Player player, String url, Float scale) {
try {
+ if (!UrlTools.isInWhiteList(url)) {
+ Notification.error(player, "无法生成地图画: 此图床地址不被允许使用");
+ return null;
+ }
URL _url = new URL(url);
BufferedImage raw_image = ImageIO.read(_url);
BufferedImage resized_image;
diff --git a/src/main/java/cn/lunadeer/colorfulmap/utils/UrlTools.java b/src/main/java/cn/lunadeer/colorfulmap/utils/UrlTools.java
new file mode 100644
index 0000000..ad05ba1
--- /dev/null
+++ b/src/main/java/cn/lunadeer/colorfulmap/utils/UrlTools.java
@@ -0,0 +1,25 @@
+package cn.lunadeer.colorfulmap.utils;
+
+import cn.lunadeer.colorfulmap.ColorfulMap;
+
+public class UrlTools {
+
+ public static boolean isInWhiteList(String url) {
+ if (ColorfulMap.config.getAddressWhiteList().isEmpty()) {
+ return true;
+ }
+ for (String whiteUrl : ColorfulMap.config.getAddressWhiteList()) {
+ if (url.startsWith(whiteUrl)) {
+ return true;
+ }
+ if (url.startsWith("http://" + whiteUrl)) {
+ return true;
+ }
+ if (url.startsWith("https://" + whiteUrl)) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+}
diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml
index 3c62180..19cf7bd 100644
--- a/src/main/resources/config.yml
+++ b/src/main/resources/config.yml
@@ -6,6 +6,8 @@ Economy:
Enable: false
CostPerMap: 100.0
+AddressWhiteList: []
+
CheckUpdate: true
Debug: false
\ No newline at end of file