From 78bb6c9447597deb50a4f5d6219db3c01dbed634 Mon Sep 17 00:00:00 2001 From: zhangyuheng Date: Mon, 5 Aug 2024 16:43:08 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E5=9B=BE=E5=BA=8A=E5=9C=B0?= =?UTF-8?q?=E5=9D=80=E7=99=BD=E5=90=8D=E5=8D=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 12 ++++++--- pom.xml | 2 +- .../lunadeer/colorfulmap/Configuration.java | 16 ++++++++++++ .../lunadeer/colorfulmap/generator/Multi.java | 5 ++++ .../lunadeer/colorfulmap/utils/UrlTools.java | 25 +++++++++++++++++++ src/main/resources/config.yml | 2 ++ 6 files changed, 58 insertions(+), 4 deletions(-) create mode 100644 src/main/java/cn/lunadeer/colorfulmap/utils/UrlTools.java 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