From e72d8cd8d4f62532bcf6730732de6c00b1f45337 Mon Sep 17 00:00:00 2001
From: jhqwqmc <2110242767@qq.com>
Date: Sat, 19 Apr 2025 15:54:46 +0800
Subject: [PATCH 1/6] =?UTF-8?q?feat(bukkit):=20=E6=B7=BB=E5=8A=A0=E5=8F=91?=
=?UTF-8?q?=E9=80=81=E8=B5=84=E6=BA=90=E5=8C=85=E5=91=BD=E4=BB=A4?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
bukkit/loader/src/main/resources/commands.yml | 7 +++
.../src/main/resources/translations/en.yml | 1 +
.../src/main/resources/translations/zh_cn.yml | 1 +
.../bukkit/pack/BukkitPackManager.java | 2 +-
.../plugin/command/BukkitCommandManager.java | 3 +-
.../feature/SendResourcePackCommand.java | 46 +++++++++++++++++++
.../core/plugin/locale/MessageConstants.java | 1 +
gradle.properties | 4 +-
8 files changed, 61 insertions(+), 4 deletions(-)
create mode 100644 bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/command/feature/SendResourcePackCommand.java
diff --git a/bukkit/loader/src/main/resources/commands.yml b/bukkit/loader/src/main/resources/commands.yml
index 72705d3b8..be61cd3c6 100644
--- a/bukkit/loader/src/main/resources/commands.yml
+++ b/bukkit/loader/src/main/resources/commands.yml
@@ -23,6 +23,13 @@ upload:
- /craftengine upload
- /ce upload
+send_resource_pack:
+ enable: true
+ permission: ce.command.admin.send_resource_pack
+ usage:
+ - /craftengine feature send-pack
+ - /ce feature send-pack
+
get_item:
enable: true
permission: ce.command.admin.get_item
diff --git a/bukkit/loader/src/main/resources/translations/en.yml b/bukkit/loader/src/main/resources/translations/en.yml
index e0f2a5355..e853d70f7 100644
--- a/bukkit/loader/src/main/resources/translations/en.yml
+++ b/bukkit/loader/src/main/resources/translations/en.yml
@@ -61,6 +61,7 @@ command.resource.disable.failure.unknown: "Unknown resource "
command.resource.list: "Enabled resources(): Disabled resources(): "
command.upload.failure.not_supported: "Current hosting method '' doesn't support uploading resource packs."
command.upload.on_progress: "Started uploading progress. Check the console for more information."
+command.send_resource_pack.success: "Send resource pack completed"
warning.config.image.duplicated: "Issue found in file - Duplicated image ''."
warning.config.image.lack_height: "Issue found in file - The image '' is missing the required 'height' argument."
warning.config.image.height_smaller_than_ascent: "Issue found in file - The image '' violates the bitmap image rule: 'height' should be no lower than 'ascent'."
diff --git a/bukkit/loader/src/main/resources/translations/zh_cn.yml b/bukkit/loader/src/main/resources/translations/zh_cn.yml
index b6db4cf15..58f7a89aa 100644
--- a/bukkit/loader/src/main/resources/translations/zh_cn.yml
+++ b/bukkit/loader/src/main/resources/translations/zh_cn.yml
@@ -61,6 +61,7 @@ command.resource.disable.failure.unknown: "未知资源 "
command.resource.list: "启用的资源(): 禁用的资源(): "
command.upload.failure.not_supported: "当前托管模式 '' 不支持上传资源包."
command.upload.on_progress: "已开始上传进程. 检查控制台以获取详细信息."
+command.send_resource_pack.success: "发送资源包完成"
warning.config.image.duplicated: "在文件 中发现问题 - 图片 '' 重复定义"
warning.config.image.lack_height: "在文件 中发现问题 - 图片 '' 缺少必要的 'height' 高度参数"
warning.config.image.height_smaller_than_ascent: "在文件 中发现问题 - 图片 '' 违反位图规则:'height' 高度值不应小于 'ascent' 基准线高度"
diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/pack/BukkitPackManager.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/pack/BukkitPackManager.java
index ecab33493..e3aa90e68 100644
--- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/pack/BukkitPackManager.java
+++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/pack/BukkitPackManager.java
@@ -138,7 +138,7 @@ public class BukkitPackManager extends AbstractPackManager implements Listener {
});
}
- private void sendResourcePack(Player player) {
+ public void sendResourcePack(Player player) {
CompletableFuture> future = resourcePackHost().requestResourcePackDownloadLink(player.uuid());
future.thenAccept(dataList -> {
if (player.isOnline()) {
diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/command/BukkitCommandManager.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/command/BukkitCommandManager.java
index 322d0985a..0b5d4030e 100644
--- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/command/BukkitCommandManager.java
+++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/command/BukkitCommandManager.java
@@ -50,7 +50,8 @@ public class BukkitCommandManager extends AbstractCommandManager
new EnableResourceCommand(this, plugin),
new DisableResourceCommand(this, plugin),
new ListResourceCommand(this, plugin),
- new UploadPackCommand(this, plugin)
+ new UploadPackCommand(this, plugin),
+ new SendResourcePackCommand(this, plugin)
));
final LegacyPaperCommandManager manager = (LegacyPaperCommandManager) getCommandManager();
manager.settings().set(ManagerSetting.ALLOW_UNSAFE_REGISTRATION, true);
diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/command/feature/SendResourcePackCommand.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/command/feature/SendResourcePackCommand.java
new file mode 100644
index 000000000..4f8db290a
--- /dev/null
+++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/command/feature/SendResourcePackCommand.java
@@ -0,0 +1,46 @@
+package net.momirealms.craftengine.bukkit.plugin.command.feature;
+
+import net.momirealms.craftengine.bukkit.plugin.BukkitCraftEngine;
+import net.momirealms.craftengine.bukkit.plugin.command.BukkitCommandFeature;
+import net.momirealms.craftengine.bukkit.plugin.user.BukkitServerPlayer;
+import net.momirealms.craftengine.core.plugin.CraftEngine;
+import net.momirealms.craftengine.core.plugin.command.CraftEngineCommandManager;
+import net.momirealms.craftengine.core.plugin.command.FlagKeys;
+import net.momirealms.craftengine.core.plugin.locale.MessageConstants;
+import org.bukkit.command.CommandSender;
+import org.bukkit.entity.Player;
+import org.incendo.cloud.Command;
+import org.incendo.cloud.CommandManager;
+import org.incendo.cloud.bukkit.data.MultiplePlayerSelector;
+import org.incendo.cloud.bukkit.parser.selector.MultiplePlayerSelectorParser;
+
+import java.util.Collection;
+
+public class SendResourcePackCommand extends BukkitCommandFeature {
+
+ public SendResourcePackCommand(CraftEngineCommandManager commandManager, CraftEngine plugin) {
+ super(commandManager, plugin);
+ }
+
+ @Override
+ public Command.Builder extends CommandSender> assembleCommand(CommandManager manager, Command.Builder builder) {
+ return builder
+ .flag(FlagKeys.SILENT_FLAG)
+ .required("player", MultiplePlayerSelectorParser.multiplePlayerSelectorParser(true))
+ .handler(context -> {
+ MultiplePlayerSelector selector = context.get("player");
+ Collection players = selector.values();
+ for (Player player : players) {
+ BukkitServerPlayer bukkitServerPlayer = plugin().adapt(player);
+ if (bukkitServerPlayer == null) continue;
+ BukkitCraftEngine.instance().packManager().sendResourcePack(bukkitServerPlayer);
+ }
+ handleFeedback(context, MessageConstants.COMMAND_SEND_RESOURCE_PACK_SUCCESS);
+ });
+ }
+
+ @Override
+ public String getFeatureID() {
+ return "send_resource_pack";
+ }
+}
diff --git a/core/src/main/java/net/momirealms/craftengine/core/plugin/locale/MessageConstants.java b/core/src/main/java/net/momirealms/craftengine/core/plugin/locale/MessageConstants.java
index 29d202578..7ffcdefc8 100644
--- a/core/src/main/java/net/momirealms/craftengine/core/plugin/locale/MessageConstants.java
+++ b/core/src/main/java/net/momirealms/craftengine/core/plugin/locale/MessageConstants.java
@@ -28,4 +28,5 @@ public interface MessageConstants {
TranslatableComponent.Builder COMMAND_RESOURCE_LIST = Component.translatable().key("command.resource.list");
TranslatableComponent.Builder COMMAND_UPLOAD_FAILURE_NOT_SUPPORTED = Component.translatable().key("command.upload.failure.not_supported");
TranslatableComponent.Builder COMMAND_UPLOAD_ON_PROGRESS = Component.translatable().key("command.upload.on_progress");
+ TranslatableComponent.Builder COMMAND_SEND_RESOURCE_PACK_SUCCESS = Component.translatable().key("command.send_resource_pack.success");
}
diff --git a/gradle.properties b/gradle.properties
index 4af98939e..d2850207a 100644
--- a/gradle.properties
+++ b/gradle.properties
@@ -3,8 +3,8 @@ org.gradle.jvmargs=-Xmx1G
# Project settings
# Rule: [major update].[feature update].[bug fix]
project_version=0.0.49-beta.3
-config_version=28
-lang_version=5
+config_version=29
+lang_version=6
project_group=net.momirealms
latest_supported_version=1.21.5
latest_minecraft_version=1.21.5
From cf9ec6810a05fe2cb4f4e5d748d3aa9dae6f82b1 Mon Sep 17 00:00:00 2001
From: jhqwqmc <2110242767@qq.com>
Date: Sat, 19 Apr 2025 15:59:42 +0800
Subject: [PATCH 2/6] =?UTF-8?q?feat(core):=20=E5=A2=9E=E5=8A=A0=E5=AF=B9?=
=?UTF-8?q?=E7=8E=AF=E5=A2=83=E5=8F=98=E9=87=8F=E7=9A=84=E6=94=AF=E6=8C=81?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../momirealms/craftengine/core/pack/host/impl/AlistHost.java | 4 ++++
.../craftengine/core/pack/host/impl/DropboxHost.java | 4 ++++
.../craftengine/core/pack/host/impl/LobFileHost.java | 2 ++
.../craftengine/core/pack/host/impl/OneDriveHost.java | 4 ++++
.../momirealms/craftengine/core/pack/host/impl/S3Host.java | 3 +++
5 files changed, 17 insertions(+)
diff --git a/core/src/main/java/net/momirealms/craftengine/core/pack/host/impl/AlistHost.java b/core/src/main/java/net/momirealms/craftengine/core/pack/host/impl/AlistHost.java
index cbbc41327..106e294ae 100644
--- a/core/src/main/java/net/momirealms/craftengine/core/pack/host/impl/AlistHost.java
+++ b/core/src/main/java/net/momirealms/craftengine/core/pack/host/impl/AlistHost.java
@@ -290,19 +290,23 @@ public class AlistHost implements ResourcePackHost {
@Override
public ResourcePackHost create(Map arguments) {
+ boolean useEnv = (boolean) arguments.getOrDefault("use-env", false);
String apiUrl = (String) arguments.get("api-url");
if (apiUrl == null || apiUrl.isEmpty()) {
throw new IllegalArgumentException("'api-url' cannot be empty for Alist host");
}
String userName = (String) arguments.get("username");
+ if (useEnv) userName = System.getenv("CE_ALIST_USERNAME");
if (userName == null || userName.isEmpty()) {
throw new IllegalArgumentException("'username' cannot be empty for Alist host");
}
String password = (String) arguments.get("password");
+ if (useEnv) password = System.getenv("CE_ALIST_PASSWORD");
if (password == null || password.isEmpty()) {
throw new IllegalArgumentException("'password' cannot be empty for Alist host");
}
String filePassword = (String) arguments.getOrDefault("file-password", "");
+ if (useEnv) filePassword = System.getenv("CE_ALIST_FILE_PASSWORD");
String otpCode = (String) arguments.get("otp-code");
Duration jwtTokenExpiration = Duration.ofHours((int) arguments.getOrDefault("jwt-token-expiration", 48));
String uploadPath = (String) arguments.get("upload-path");
diff --git a/core/src/main/java/net/momirealms/craftengine/core/pack/host/impl/DropboxHost.java b/core/src/main/java/net/momirealms/craftengine/core/pack/host/impl/DropboxHost.java
index dc13db502..20f8bd4e7 100644
--- a/core/src/main/java/net/momirealms/craftengine/core/pack/host/impl/DropboxHost.java
+++ b/core/src/main/java/net/momirealms/craftengine/core/pack/host/impl/DropboxHost.java
@@ -250,15 +250,19 @@ public class DropboxHost implements ResourcePackHost {
public static class Factory implements ResourcePackHostFactory {
@Override
public ResourcePackHost create(Map arguments) {
+ boolean useEnv = (boolean) arguments.getOrDefault("use-env", false);
String appKey = (String) arguments.get("app-key");
+ if (useEnv) appKey = System.getenv("CE_DROPBOX_APP_KEY");
if (appKey == null || appKey.isEmpty()) {
throw new IllegalArgumentException("Missing required 'app-key' configuration");
}
String appSecret = (String) arguments.get("app-secret");
+ if (useEnv) appSecret = System.getenv("CE_DROPBOX_APP_SECRET");
if (appSecret == null || appSecret.isEmpty()) {
throw new IllegalArgumentException("Missing required 'app-secret' configuration");
}
String refreshToken = (String) arguments.get("refresh-token");
+ if (useEnv) refreshToken = System.getenv("CE_DROPBOX_REFRESH_TOKEN");
if (refreshToken == null || refreshToken.isEmpty()) {
throw new IllegalArgumentException("Missing required 'refresh-token' configuration");
}
diff --git a/core/src/main/java/net/momirealms/craftengine/core/pack/host/impl/LobFileHost.java b/core/src/main/java/net/momirealms/craftengine/core/pack/host/impl/LobFileHost.java
index b13e82bb2..f68c3dccb 100644
--- a/core/src/main/java/net/momirealms/craftengine/core/pack/host/impl/LobFileHost.java
+++ b/core/src/main/java/net/momirealms/craftengine/core/pack/host/impl/LobFileHost.java
@@ -270,7 +270,9 @@ public class LobFileHost implements ResourcePackHost {
@Override
public ResourcePackHost create(Map arguments) {
+ boolean useEnv = (boolean) arguments.getOrDefault("use-env", false);
String apiKey = (String) arguments.get("api-key");
+ if (useEnv) apiKey = System.getenv("CE_LOBFILE_API_KEY");
if (apiKey == null || apiKey.isEmpty()) {
throw new RuntimeException("Missing 'api-key' for LobFileHost");
}
diff --git a/core/src/main/java/net/momirealms/craftengine/core/pack/host/impl/OneDriveHost.java b/core/src/main/java/net/momirealms/craftengine/core/pack/host/impl/OneDriveHost.java
index 9943c3df6..521058e40 100644
--- a/core/src/main/java/net/momirealms/craftengine/core/pack/host/impl/OneDriveHost.java
+++ b/core/src/main/java/net/momirealms/craftengine/core/pack/host/impl/OneDriveHost.java
@@ -230,15 +230,19 @@ public class OneDriveHost implements ResourcePackHost {
@Override
public ResourcePackHost create(Map arguments) {
+ boolean useEnv = (boolean) arguments.getOrDefault("use-env", false);
String clientId = (String) arguments.get("client-id");
+ if (useEnv) clientId = System.getenv("CE_ONEDRIVE_CLIENT_ID");
if (clientId == null || clientId.isEmpty()) {
throw new IllegalArgumentException("Missing required 'client-id' configuration");
}
String clientSecret = (String) arguments.get("client-secret");
+ if (useEnv) clientSecret = System.getenv("CE_ONEDRIVE_CLIENT_SECRET");
if (clientSecret == null || clientSecret.isEmpty()) {
throw new IllegalArgumentException("Missing required 'client-secret' configuration");
}
String refreshToken = (String) arguments.get("refresh-token");
+ if (useEnv) refreshToken = System.getenv("CE_ONEDRIVE_REFRESH_TOKEN");
if (refreshToken == null || refreshToken.isEmpty()) {
throw new IllegalArgumentException("Missing required 'refresh-token' configuration");
}
diff --git a/core/src/main/java/net/momirealms/craftengine/core/pack/host/impl/S3Host.java b/core/src/main/java/net/momirealms/craftengine/core/pack/host/impl/S3Host.java
index c5f586fe4..473a97bf6 100644
--- a/core/src/main/java/net/momirealms/craftengine/core/pack/host/impl/S3Host.java
+++ b/core/src/main/java/net/momirealms/craftengine/core/pack/host/impl/S3Host.java
@@ -156,6 +156,7 @@ public class S3Host implements ResourcePackHost {
@Override
@SuppressWarnings("deprecation")
public ResourcePackHost create(Map arguments) {
+ boolean useEnv = (boolean) arguments.getOrDefault("use-env", false);
String endpoint = (String) arguments.get("endpoint");
if (endpoint == null || endpoint.isEmpty()) {
throw new IllegalArgumentException("'endpoint' cannot be empty for S3 host");
@@ -168,10 +169,12 @@ public class S3Host implements ResourcePackHost {
}
String region = (String) arguments.getOrDefault("region", "auto");
String accessKeyId = (String) arguments.get("access-key-id");
+ if (useEnv) accessKeyId = System.getenv("CE_S3_ACCESS_KEY_ID");
if (accessKeyId == null || accessKeyId.isEmpty()) {
throw new IllegalArgumentException("'access-key-id' cannot be empty for S3 host");
}
String accessKeySecret = (String) arguments.get("access-key-secret");
+ if (useEnv) accessKeySecret = System.getenv("CE_S3_ACCESS_KEY_SECRET");
if (accessKeySecret == null || accessKeySecret.isEmpty()) {
throw new IllegalArgumentException("'access-key-secret' cannot be empty for S3 host");
}
From 4a0f5ee9cbdfa69e57b17a6a45254138fde9fb6c Mon Sep 17 00:00:00 2001
From: jhqwqmc <2110242767@qq.com>
Date: Sat, 19 Apr 2025 16:38:18 +0800
Subject: [PATCH 3/6] =?UTF-8?q?refactor(pack):=20=E4=BF=AE=E6=94=B9?=
=?UTF-8?q?=E9=80=BB=E8=BE=91?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
bukkit/loader/src/main/resources/translations/en.yml | 2 +-
.../loader/src/main/resources/translations/zh_cn.yml | 2 +-
.../command/feature/SendResourcePackCommand.java | 3 ++-
.../craftengine/core/pack/host/impl/AlistHost.java | 11 ++++-------
.../craftengine/core/pack/host/impl/DropboxHost.java | 11 ++++-------
.../craftengine/core/pack/host/impl/LobFileHost.java | 5 ++---
.../craftengine/core/pack/host/impl/OneDriveHost.java | 11 ++++-------
.../craftengine/core/pack/host/impl/S3Host.java | 8 +++-----
8 files changed, 21 insertions(+), 32 deletions(-)
diff --git a/bukkit/loader/src/main/resources/translations/en.yml b/bukkit/loader/src/main/resources/translations/en.yml
index e853d70f7..a7c5bbf3e 100644
--- a/bukkit/loader/src/main/resources/translations/en.yml
+++ b/bukkit/loader/src/main/resources/translations/en.yml
@@ -61,7 +61,7 @@ command.resource.disable.failure.unknown: "Unknown resource "
command.resource.list: "Enabled resources(): Disabled resources(): "
command.upload.failure.not_supported: "Current hosting method '' doesn't support uploading resource packs."
command.upload.on_progress: "Started uploading progress. Check the console for more information."
-command.send_resource_pack.success: "Send resource pack completed"
+command.send_resource_pack.success: "Send resource packs to players"
warning.config.image.duplicated: "Issue found in file - Duplicated image ''."
warning.config.image.lack_height: "Issue found in file - The image '' is missing the required 'height' argument."
warning.config.image.height_smaller_than_ascent: "Issue found in file - The image '' violates the bitmap image rule: 'height' should be no lower than 'ascent'."
diff --git a/bukkit/loader/src/main/resources/translations/zh_cn.yml b/bukkit/loader/src/main/resources/translations/zh_cn.yml
index 58f7a89aa..0bc743c37 100644
--- a/bukkit/loader/src/main/resources/translations/zh_cn.yml
+++ b/bukkit/loader/src/main/resources/translations/zh_cn.yml
@@ -61,7 +61,7 @@ command.resource.disable.failure.unknown: "未知资源 "
command.resource.list: "启用的资源(): 禁用的资源(): "
command.upload.failure.not_supported: "当前托管模式 '' 不支持上传资源包."
command.upload.on_progress: "已开始上传进程. 检查控制台以获取详细信息."
-command.send_resource_pack.success: "发送资源包完成"
+command.send_resource_pack.success: "发送资源包给 个玩家"
warning.config.image.duplicated: "在文件 中发现问题 - 图片 '' 重复定义"
warning.config.image.lack_height: "在文件 中发现问题 - 图片 '' 缺少必要的 'height' 高度参数"
warning.config.image.height_smaller_than_ascent: "在文件 中发现问题 - 图片 '' 违反位图规则:'height' 高度值不应小于 'ascent' 基准线高度"
diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/command/feature/SendResourcePackCommand.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/command/feature/SendResourcePackCommand.java
index 4f8db290a..149e10702 100644
--- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/command/feature/SendResourcePackCommand.java
+++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/command/feature/SendResourcePackCommand.java
@@ -1,5 +1,6 @@
package net.momirealms.craftengine.bukkit.plugin.command.feature;
+import net.kyori.adventure.text.Component;
import net.momirealms.craftengine.bukkit.plugin.BukkitCraftEngine;
import net.momirealms.craftengine.bukkit.plugin.command.BukkitCommandFeature;
import net.momirealms.craftengine.bukkit.plugin.user.BukkitServerPlayer;
@@ -35,7 +36,7 @@ public class SendResourcePackCommand extends BukkitCommandFeature
if (bukkitServerPlayer == null) continue;
BukkitCraftEngine.instance().packManager().sendResourcePack(bukkitServerPlayer);
}
- handleFeedback(context, MessageConstants.COMMAND_SEND_RESOURCE_PACK_SUCCESS);
+ handleFeedback(context, MessageConstants.COMMAND_SEND_RESOURCE_PACK_SUCCESS, Component.text(players.size()));
});
}
diff --git a/core/src/main/java/net/momirealms/craftengine/core/pack/host/impl/AlistHost.java b/core/src/main/java/net/momirealms/craftengine/core/pack/host/impl/AlistHost.java
index 106e294ae..615cd4f05 100644
--- a/core/src/main/java/net/momirealms/craftengine/core/pack/host/impl/AlistHost.java
+++ b/core/src/main/java/net/momirealms/craftengine/core/pack/host/impl/AlistHost.java
@@ -290,23 +290,20 @@ public class AlistHost implements ResourcePackHost {
@Override
public ResourcePackHost create(Map arguments) {
- boolean useEnv = (boolean) arguments.getOrDefault("use-env", false);
+ boolean useEnv = (boolean) arguments.getOrDefault("use-environment-variables", false);
String apiUrl = (String) arguments.get("api-url");
if (apiUrl == null || apiUrl.isEmpty()) {
throw new IllegalArgumentException("'api-url' cannot be empty for Alist host");
}
- String userName = (String) arguments.get("username");
- if (useEnv) userName = System.getenv("CE_ALIST_USERNAME");
+ String userName = useEnv ? System.getenv("CE_ALIST_USERNAME") : (String) arguments.get("username");
if (userName == null || userName.isEmpty()) {
throw new IllegalArgumentException("'username' cannot be empty for Alist host");
}
- String password = (String) arguments.get("password");
- if (useEnv) password = System.getenv("CE_ALIST_PASSWORD");
+ String password = useEnv ? System.getenv("CE_ALIST_PASSWORD") : (String) arguments.get("password");
if (password == null || password.isEmpty()) {
throw new IllegalArgumentException("'password' cannot be empty for Alist host");
}
- String filePassword = (String) arguments.getOrDefault("file-password", "");
- if (useEnv) filePassword = System.getenv("CE_ALIST_FILE_PASSWORD");
+ String filePassword = useEnv ? System.getenv("CE_ALIST_FILE_PASSWORD") : (String) arguments.getOrDefault("file-password", "");
String otpCode = (String) arguments.get("otp-code");
Duration jwtTokenExpiration = Duration.ofHours((int) arguments.getOrDefault("jwt-token-expiration", 48));
String uploadPath = (String) arguments.get("upload-path");
diff --git a/core/src/main/java/net/momirealms/craftengine/core/pack/host/impl/DropboxHost.java b/core/src/main/java/net/momirealms/craftengine/core/pack/host/impl/DropboxHost.java
index 20f8bd4e7..814244b9b 100644
--- a/core/src/main/java/net/momirealms/craftengine/core/pack/host/impl/DropboxHost.java
+++ b/core/src/main/java/net/momirealms/craftengine/core/pack/host/impl/DropboxHost.java
@@ -250,19 +250,16 @@ public class DropboxHost implements ResourcePackHost {
public static class Factory implements ResourcePackHostFactory {
@Override
public ResourcePackHost create(Map arguments) {
- boolean useEnv = (boolean) arguments.getOrDefault("use-env", false);
- String appKey = (String) arguments.get("app-key");
- if (useEnv) appKey = System.getenv("CE_DROPBOX_APP_KEY");
+ boolean useEnv = (boolean) arguments.getOrDefault("use-environment-variables", false);
+ String appKey = useEnv ? System.getenv("CE_DROPBOX_APP_KEY") : (String) arguments.get("app-key");
if (appKey == null || appKey.isEmpty()) {
throw new IllegalArgumentException("Missing required 'app-key' configuration");
}
- String appSecret = (String) arguments.get("app-secret");
- if (useEnv) appSecret = System.getenv("CE_DROPBOX_APP_SECRET");
+ String appSecret = useEnv ? System.getenv("CE_DROPBOX_APP_SECRET") : (String) arguments.get("app-secret");
if (appSecret == null || appSecret.isEmpty()) {
throw new IllegalArgumentException("Missing required 'app-secret' configuration");
}
- String refreshToken = (String) arguments.get("refresh-token");
- if (useEnv) refreshToken = System.getenv("CE_DROPBOX_REFRESH_TOKEN");
+ String refreshToken = useEnv ? System.getenv("CE_DROPBOX_REFRESH_TOKEN") : (String) arguments.get("refresh-token");
if (refreshToken == null || refreshToken.isEmpty()) {
throw new IllegalArgumentException("Missing required 'refresh-token' configuration");
}
diff --git a/core/src/main/java/net/momirealms/craftengine/core/pack/host/impl/LobFileHost.java b/core/src/main/java/net/momirealms/craftengine/core/pack/host/impl/LobFileHost.java
index f68c3dccb..116eac469 100644
--- a/core/src/main/java/net/momirealms/craftengine/core/pack/host/impl/LobFileHost.java
+++ b/core/src/main/java/net/momirealms/craftengine/core/pack/host/impl/LobFileHost.java
@@ -270,9 +270,8 @@ public class LobFileHost implements ResourcePackHost {
@Override
public ResourcePackHost create(Map arguments) {
- boolean useEnv = (boolean) arguments.getOrDefault("use-env", false);
- String apiKey = (String) arguments.get("api-key");
- if (useEnv) apiKey = System.getenv("CE_LOBFILE_API_KEY");
+ boolean useEnv = (boolean) arguments.getOrDefault("use-environment-variables", false);
+ String apiKey = useEnv ? System.getenv("CE_LOBFILE_API_KEY") : (String) arguments.get("api-key");
if (apiKey == null || apiKey.isEmpty()) {
throw new RuntimeException("Missing 'api-key' for LobFileHost");
}
diff --git a/core/src/main/java/net/momirealms/craftengine/core/pack/host/impl/OneDriveHost.java b/core/src/main/java/net/momirealms/craftengine/core/pack/host/impl/OneDriveHost.java
index 521058e40..3ef7e3002 100644
--- a/core/src/main/java/net/momirealms/craftengine/core/pack/host/impl/OneDriveHost.java
+++ b/core/src/main/java/net/momirealms/craftengine/core/pack/host/impl/OneDriveHost.java
@@ -230,19 +230,16 @@ public class OneDriveHost implements ResourcePackHost {
@Override
public ResourcePackHost create(Map arguments) {
- boolean useEnv = (boolean) arguments.getOrDefault("use-env", false);
- String clientId = (String) arguments.get("client-id");
- if (useEnv) clientId = System.getenv("CE_ONEDRIVE_CLIENT_ID");
+ boolean useEnv = (boolean) arguments.getOrDefault("use-environment-variables", false);
+ String clientId = useEnv ? System.getenv("CE_ONEDRIVE_CLIENT_ID") : (String) arguments.get("client-id");
if (clientId == null || clientId.isEmpty()) {
throw new IllegalArgumentException("Missing required 'client-id' configuration");
}
- String clientSecret = (String) arguments.get("client-secret");
- if (useEnv) clientSecret = System.getenv("CE_ONEDRIVE_CLIENT_SECRET");
+ String clientSecret = useEnv ? System.getenv("CE_ONEDRIVE_CLIENT_SECRET") : (String) arguments.get("client-secret");
if (clientSecret == null || clientSecret.isEmpty()) {
throw new IllegalArgumentException("Missing required 'client-secret' configuration");
}
- String refreshToken = (String) arguments.get("refresh-token");
- if (useEnv) refreshToken = System.getenv("CE_ONEDRIVE_REFRESH_TOKEN");
+ String refreshToken = useEnv ? System.getenv("CE_ONEDRIVE_REFRESH_TOKEN") : (String) arguments.get("refresh-token");
if (refreshToken == null || refreshToken.isEmpty()) {
throw new IllegalArgumentException("Missing required 'refresh-token' configuration");
}
diff --git a/core/src/main/java/net/momirealms/craftengine/core/pack/host/impl/S3Host.java b/core/src/main/java/net/momirealms/craftengine/core/pack/host/impl/S3Host.java
index 473a97bf6..8c2137e2a 100644
--- a/core/src/main/java/net/momirealms/craftengine/core/pack/host/impl/S3Host.java
+++ b/core/src/main/java/net/momirealms/craftengine/core/pack/host/impl/S3Host.java
@@ -156,7 +156,7 @@ public class S3Host implements ResourcePackHost {
@Override
@SuppressWarnings("deprecation")
public ResourcePackHost create(Map arguments) {
- boolean useEnv = (boolean) arguments.getOrDefault("use-env", false);
+ boolean useEnv = (boolean) arguments.getOrDefault("use-environment-variables", false);
String endpoint = (String) arguments.get("endpoint");
if (endpoint == null || endpoint.isEmpty()) {
throw new IllegalArgumentException("'endpoint' cannot be empty for S3 host");
@@ -168,13 +168,11 @@ public class S3Host implements ResourcePackHost {
throw new IllegalArgumentException("'bucket' cannot be empty for S3 host");
}
String region = (String) arguments.getOrDefault("region", "auto");
- String accessKeyId = (String) arguments.get("access-key-id");
- if (useEnv) accessKeyId = System.getenv("CE_S3_ACCESS_KEY_ID");
+ String accessKeyId = useEnv ? System.getenv("CE_S3_ACCESS_KEY_ID") : (String) arguments.get("access-key-id");
if (accessKeyId == null || accessKeyId.isEmpty()) {
throw new IllegalArgumentException("'access-key-id' cannot be empty for S3 host");
}
- String accessKeySecret = (String) arguments.get("access-key-secret");
- if (useEnv) accessKeySecret = System.getenv("CE_S3_ACCESS_KEY_SECRET");
+ String accessKeySecret = useEnv ? System.getenv("CE_S3_ACCESS_KEY_SECRET") : (String) arguments.get("access-key-secret");
if (accessKeySecret == null || accessKeySecret.isEmpty()) {
throw new IllegalArgumentException("'access-key-secret' cannot be empty for S3 host");
}
From 1d045086244e6b531eba41e22ab7c047edf73587 Mon Sep 17 00:00:00 2001
From: jhqwqmc <2110242767@qq.com>
Date: Sat, 19 Apr 2025 16:56:42 +0800
Subject: [PATCH 4/6] =?UTF-8?q?refactor(pack):=20=E4=BF=AE=E6=94=B9?=
=?UTF-8?q?=E9=80=BB=E8=BE=91?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
bukkit/loader/src/main/resources/translations/en.yml | 3 ++-
bukkit/loader/src/main/resources/translations/zh_cn.yml | 3 ++-
.../plugin/command/feature/SendResourcePackCommand.java | 8 +++++++-
.../net/momirealms/craftengine/core/pack/PackManager.java | 3 +++
.../craftengine/core/plugin/locale/MessageConstants.java | 3 ++-
5 files changed, 16 insertions(+), 4 deletions(-)
diff --git a/bukkit/loader/src/main/resources/translations/en.yml b/bukkit/loader/src/main/resources/translations/en.yml
index a7c5bbf3e..f103554b6 100644
--- a/bukkit/loader/src/main/resources/translations/en.yml
+++ b/bukkit/loader/src/main/resources/translations/en.yml
@@ -61,7 +61,8 @@ command.resource.disable.failure.unknown: "Unknown resource "
command.resource.list: "Enabled resources(): Disabled resources(): "
command.upload.failure.not_supported: "Current hosting method '' doesn't support uploading resource packs."
command.upload.on_progress: "Started uploading progress. Check the console for more information."
-command.send_resource_pack.success: "Send resource packs to players"
+command.send_resource_pack.success.single: "Sent resource pack to "
+command.send_resource_pack.success.multiple: "Send resource packs to players"
warning.config.image.duplicated: "Issue found in file - Duplicated image ''."
warning.config.image.lack_height: "Issue found in file - The image '' is missing the required 'height' argument."
warning.config.image.height_smaller_than_ascent: "Issue found in file - The image '' violates the bitmap image rule: 'height' should be no lower than 'ascent'."
diff --git a/bukkit/loader/src/main/resources/translations/zh_cn.yml b/bukkit/loader/src/main/resources/translations/zh_cn.yml
index 0bc743c37..21921cb41 100644
--- a/bukkit/loader/src/main/resources/translations/zh_cn.yml
+++ b/bukkit/loader/src/main/resources/translations/zh_cn.yml
@@ -61,7 +61,8 @@ command.resource.disable.failure.unknown: "未知资源 "
command.resource.list: "启用的资源(): 禁用的资源(): "
command.upload.failure.not_supported: "当前托管模式 '' 不支持上传资源包."
command.upload.on_progress: "已开始上传进程. 检查控制台以获取详细信息."
-command.send_resource_pack.success: "发送资源包给 个玩家"
+command.send_resource_pack.success.single: "发送资源包给 "
+command.send_resource_pack.success.multiple: "发送资源包给 个玩家"
warning.config.image.duplicated: "在文件 中发现问题 - 图片 '' 重复定义"
warning.config.image.lack_height: "在文件 中发现问题 - 图片 '' 缺少必要的 'height' 高度参数"
warning.config.image.height_smaller_than_ascent: "在文件 中发现问题 - 图片 '' 违反位图规则:'height' 高度值不应小于 'ascent' 基准线高度"
diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/command/feature/SendResourcePackCommand.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/command/feature/SendResourcePackCommand.java
index 149e10702..1a8fe844b 100644
--- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/command/feature/SendResourcePackCommand.java
+++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/command/feature/SendResourcePackCommand.java
@@ -36,7 +36,13 @@ public class SendResourcePackCommand extends BukkitCommandFeature
if (bukkitServerPlayer == null) continue;
BukkitCraftEngine.instance().packManager().sendResourcePack(bukkitServerPlayer);
}
- handleFeedback(context, MessageConstants.COMMAND_SEND_RESOURCE_PACK_SUCCESS, Component.text(players.size()));
+ int size = players.size();
+ if (size == 1) {
+ String name = players.iterator().next().getName();
+ handleFeedback(context, MessageConstants.COMMAND_SEND_RESOURCE_PACK_SUCCESS_SINGLE, Component.text(name));
+ } else {
+ handleFeedback(context, MessageConstants.COMMAND_SEND_RESOURCE_PACK_SUCCESS_MULTIPLE, Component.text(size));
+ }
});
}
diff --git a/core/src/main/java/net/momirealms/craftengine/core/pack/PackManager.java b/core/src/main/java/net/momirealms/craftengine/core/pack/PackManager.java
index 54f85bd89..0734ded69 100644
--- a/core/src/main/java/net/momirealms/craftengine/core/pack/PackManager.java
+++ b/core/src/main/java/net/momirealms/craftengine/core/pack/PackManager.java
@@ -1,5 +1,6 @@
package net.momirealms.craftengine.core.pack;
+import net.momirealms.craftengine.core.entity.player.Player;
import net.momirealms.craftengine.core.pack.host.ResourcePackHost;
import net.momirealms.craftengine.core.plugin.Manageable;
import net.momirealms.craftengine.core.plugin.config.ConfigSectionParser;
@@ -38,4 +39,6 @@ public interface PackManager extends Manageable {
ResourcePackHost resourcePackHost();
void uploadResourcePack();
+
+ void sendResourcePack(Player player);
}
diff --git a/core/src/main/java/net/momirealms/craftengine/core/plugin/locale/MessageConstants.java b/core/src/main/java/net/momirealms/craftengine/core/plugin/locale/MessageConstants.java
index 7ffcdefc8..274e7cf0c 100644
--- a/core/src/main/java/net/momirealms/craftengine/core/plugin/locale/MessageConstants.java
+++ b/core/src/main/java/net/momirealms/craftengine/core/plugin/locale/MessageConstants.java
@@ -28,5 +28,6 @@ public interface MessageConstants {
TranslatableComponent.Builder COMMAND_RESOURCE_LIST = Component.translatable().key("command.resource.list");
TranslatableComponent.Builder COMMAND_UPLOAD_FAILURE_NOT_SUPPORTED = Component.translatable().key("command.upload.failure.not_supported");
TranslatableComponent.Builder COMMAND_UPLOAD_ON_PROGRESS = Component.translatable().key("command.upload.on_progress");
- TranslatableComponent.Builder COMMAND_SEND_RESOURCE_PACK_SUCCESS = Component.translatable().key("command.send_resource_pack.success");
+ TranslatableComponent.Builder COMMAND_SEND_RESOURCE_PACK_SUCCESS_SINGLE = Component.translatable().key("command.send_resource_pack.success.single");
+ TranslatableComponent.Builder COMMAND_SEND_RESOURCE_PACK_SUCCESS_MULTIPLE = Component.translatable().key("command.send_resource_pack.success.multiple");
}
From 4be81ef598d388f992eab78b7cf3b1ca13fe6da4 Mon Sep 17 00:00:00 2001
From: jhqwqmc <2110242767@qq.com>
Date: Sat, 19 Apr 2025 17:03:10 +0800
Subject: [PATCH 5/6] =?UTF-8?q?refactor(bukkit):=20=E4=B8=BA=20sendResourc?=
=?UTF-8?q?ePack=20=E6=96=B9=E6=B3=95=E6=B7=BB=E5=8A=A0=20@Override=20?=
=?UTF-8?q?=E6=B3=A8=E8=A7=A3?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../momirealms/craftengine/bukkit/pack/BukkitPackManager.java | 1 +
1 file changed, 1 insertion(+)
diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/pack/BukkitPackManager.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/pack/BukkitPackManager.java
index e3aa90e68..1f93103ca 100644
--- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/pack/BukkitPackManager.java
+++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/pack/BukkitPackManager.java
@@ -138,6 +138,7 @@ public class BukkitPackManager extends AbstractPackManager implements Listener {
});
}
+ @Override
public void sendResourcePack(Player player) {
CompletableFuture> future = resourcePackHost().requestResourcePackDownloadLink(player.uuid());
future.thenAccept(dataList -> {
From 52e7721835d86a9e04e110eea0881815cebac242 Mon Sep 17 00:00:00 2001
From: jhqwqmc <2110242767@qq.com>
Date: Sat, 19 Apr 2025 17:05:39 +0800
Subject: [PATCH 6/6] =?UTF-8?q?style(loader):=20=E8=8B=B1=E6=96=87?=
=?UTF-8?q?=E5=90=8E=E9=9D=A2=E5=B0=91=E4=B8=AA=E7=82=B9?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
bukkit/loader/src/main/resources/translations/en.yml | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/bukkit/loader/src/main/resources/translations/en.yml b/bukkit/loader/src/main/resources/translations/en.yml
index f103554b6..ddef3454c 100644
--- a/bukkit/loader/src/main/resources/translations/en.yml
+++ b/bukkit/loader/src/main/resources/translations/en.yml
@@ -61,8 +61,8 @@ command.resource.disable.failure.unknown: "Unknown resource "
command.resource.list: "Enabled resources(): Disabled resources(): "
command.upload.failure.not_supported: "Current hosting method '' doesn't support uploading resource packs."
command.upload.on_progress: "Started uploading progress. Check the console for more information."
-command.send_resource_pack.success.single: "Sent resource pack to "
-command.send_resource_pack.success.multiple: "Send resource packs to players"
+command.send_resource_pack.success.single: "Sent resource pack to ."
+command.send_resource_pack.success.multiple: "Send resource packs to players."
warning.config.image.duplicated: "Issue found in file - Duplicated image ''."
warning.config.image.lack_height: "Issue found in file - The image '' is missing the required 'height' argument."
warning.config.image.height_smaller_than_ascent: "Issue found in file - The image '' violates the bitmap image rule: 'height' should be no lower than 'ascent'."