Merge remote-tracking branch 'origin/master'
This commit is contained in:
54
README.md
54
README.md
@@ -1,10 +1,22 @@
|
|||||||
# [HamsterCore](https://gitee.com/MiniDay/hamster-core)
|
# [HamsterCore](https://git.airgame.net/MiniDay/hamster-core)
|
||||||
|
|
||||||
仓鼠核心:叁只仓鼠的 Minecraft 插件开发通用工具包
|
仓鼠核心:叁只仓鼠的 Minecraft 插件开发通用工具包
|
||||||
|
|
||||||
# 添加依赖
|
# 手动构建
|
||||||
|
|
||||||
## Gradle (`build.gradle`)
|
1. 将源代码下载或克隆至本地
|
||||||
|
2. 在源代码根目录中打开命令行窗口
|
||||||
|
3. 命令行窗口中执行`./gradlew clean build`
|
||||||
|
4. 构建成品在 `build` 文件夹
|
||||||
|
|
||||||
|
也可访问我的[Jenkins网站](https://jenkins.airgame.net/job/opensource/job/hamster-core/)获取最新版
|
||||||
|
|
||||||
|
# 开发
|
||||||
|
|
||||||
|
## 添加依赖
|
||||||
|
|
||||||
|
<details>
|
||||||
|
<summary>Gradle(build.gradle)</summary>
|
||||||
|
|
||||||
```groovy
|
```groovy
|
||||||
// 添加仓库
|
// 添加仓库
|
||||||
@@ -22,7 +34,31 @@ dependencies {
|
|||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
## Maven (`pom.xml`)
|
</details>
|
||||||
|
|
||||||
|
<details>
|
||||||
|
<summary>Gradle(build.gradle.kts)</summary>
|
||||||
|
|
||||||
|
```kotlin
|
||||||
|
// 添加仓库
|
||||||
|
repositories {
|
||||||
|
maven {
|
||||||
|
url = uri("https://maven.airgame.net/maven-public/")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
dependencies {
|
||||||
|
// 对于 Bukkit 插件
|
||||||
|
compileOnly("cn.hamster3.mc.plugin:core-bukkit:+")
|
||||||
|
// 对于 BungeeCord 插件
|
||||||
|
compileOnly("cn.hamster3.mc.plugin:core-bungee:+")
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
</details>
|
||||||
|
|
||||||
|
<details>
|
||||||
|
<summary>Gradle(pom.xml)</summary>
|
||||||
|
|
||||||
```xml
|
```xml
|
||||||
|
|
||||||
@@ -52,3 +88,13 @@ dependencies {
|
|||||||
</dependencies>
|
</dependencies>
|
||||||
</project>
|
</project>
|
||||||
```
|
```
|
||||||
|
|
||||||
|
</details>
|
||||||
|
|
||||||
|
## 使用 API
|
||||||
|
|
||||||
|
- 绝大部分 API 相关的方法都位于 `cn.hamster3.mc.plugin.core.common.api.CoreAPI` 类中
|
||||||
|
- 使用方法为:`CoreAPI.getInstance().xxx()`
|
||||||
|
- 部分通用的工具代码在 `cn.hamster3.mc.plugin.core.common.util` 包中
|
||||||
|
- 部分Bukkit的工具代码在 `cn.hamster3.mc.plugin.core.bukkit.util` 包中
|
||||||
|
- 部分BungeeCord的工具代码在 `cn.hamster3.mc.plugin.core.bungee.util` 包中
|
@@ -3,7 +3,6 @@ package cn.hamster3.mc.plugin.core.bukkit.command.lore.sub;
|
|||||||
import cn.hamster3.mc.plugin.core.bukkit.command.ChildCommand;
|
import cn.hamster3.mc.plugin.core.bukkit.command.ChildCommand;
|
||||||
import cn.hamster3.mc.plugin.core.bukkit.constant.CoreMessage;
|
import cn.hamster3.mc.plugin.core.bukkit.constant.CoreMessage;
|
||||||
import cn.hamster3.mc.plugin.core.bukkit.util.CoreBukkitUtils;
|
import cn.hamster3.mc.plugin.core.bukkit.util.CoreBukkitUtils;
|
||||||
import net.kyori.adventure.text.TextReplacementConfig;
|
|
||||||
import org.bukkit.command.Command;
|
import org.bukkit.command.Command;
|
||||||
import org.bukkit.command.CommandSender;
|
import org.bukkit.command.CommandSender;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
@@ -66,9 +65,7 @@ public class LoreCustomModelDataCommand extends ChildCommand {
|
|||||||
int data = Integer.parseInt(args[0]);
|
int data = Integer.parseInt(args[0]);
|
||||||
meta.setCustomModelData(data);
|
meta.setCustomModelData(data);
|
||||||
stack.setItemMeta(meta);
|
stack.setItemMeta(meta);
|
||||||
CoreMessage.COMMAND_LORE_CMD_SET_SUCCESS.show(sender, TextReplacementConfig.builder()
|
CoreMessage.COMMAND_LORE_CMD_SET_SUCCESS.show(sender, "%data%", args[0]);
|
||||||
.matchLiteral("%data%").replacement(args[0])
|
|
||||||
.build());
|
|
||||||
} catch (NumberFormatException e) {
|
} catch (NumberFormatException e) {
|
||||||
CoreMessage.COMMAND_LORE_CMD_SET_INPUT_ERROR.show(sender);
|
CoreMessage.COMMAND_LORE_CMD_SET_INPUT_ERROR.show(sender);
|
||||||
return true;
|
return true;
|
||||||
|
@@ -3,7 +3,6 @@ package cn.hamster3.mc.plugin.core.bukkit.command.lore.sub;
|
|||||||
import cn.hamster3.mc.plugin.core.bukkit.command.ChildCommand;
|
import cn.hamster3.mc.plugin.core.bukkit.command.ChildCommand;
|
||||||
import cn.hamster3.mc.plugin.core.bukkit.constant.CoreMessage;
|
import cn.hamster3.mc.plugin.core.bukkit.constant.CoreMessage;
|
||||||
import cn.hamster3.mc.plugin.core.bukkit.util.CoreBukkitUtils;
|
import cn.hamster3.mc.plugin.core.bukkit.util.CoreBukkitUtils;
|
||||||
import net.kyori.adventure.text.TextReplacementConfig;
|
|
||||||
import org.bukkit.command.Command;
|
import org.bukkit.command.Command;
|
||||||
import org.bukkit.command.CommandSender;
|
import org.bukkit.command.CommandSender;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
@@ -71,16 +70,10 @@ public class LoreFlagCommand extends ChildCommand {
|
|||||||
if (meta != null) {
|
if (meta != null) {
|
||||||
if (meta.hasItemFlag(flag)) {
|
if (meta.hasItemFlag(flag)) {
|
||||||
meta.removeItemFlags(flag);
|
meta.removeItemFlags(flag);
|
||||||
CoreMessage.COMMAND_LORE_FLAG_REMOVE_SUCCESS.show(player, TextReplacementConfig.builder()
|
CoreMessage.COMMAND_LORE_FLAG_REMOVE_SUCCESS.show(player, "%flag%", flag.name());
|
||||||
.replacement("%flag%")
|
|
||||||
.matchLiteral(flag.name())
|
|
||||||
.build());
|
|
||||||
} else {
|
} else {
|
||||||
meta.addItemFlags(flag);
|
meta.addItemFlags(flag);
|
||||||
CoreMessage.COMMAND_LORE_FLAG_SET_SUCCESS.show(player, TextReplacementConfig.builder()
|
CoreMessage.COMMAND_LORE_FLAG_SET_SUCCESS.show(player, "%flag%", flag.name());
|
||||||
.replacement("%flag%")
|
|
||||||
.matchLiteral(flag.name())
|
|
||||||
.build());
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
stack.setItemMeta(meta);
|
stack.setItemMeta(meta);
|
||||||
|
@@ -3,6 +3,7 @@ package cn.hamster3.mc.plugin.core.bukkit.constant;
|
|||||||
import cn.hamster3.mc.plugin.core.bukkit.api.CoreBukkitAPI;
|
import cn.hamster3.mc.plugin.core.bukkit.api.CoreBukkitAPI;
|
||||||
import cn.hamster3.mc.plugin.core.bukkit.util.CoreBukkitUtils;
|
import cn.hamster3.mc.plugin.core.bukkit.util.CoreBukkitUtils;
|
||||||
import cn.hamster3.mc.plugin.core.common.data.DisplayMessage;
|
import cn.hamster3.mc.plugin.core.common.data.DisplayMessage;
|
||||||
|
import lombok.Getter;
|
||||||
import net.kyori.adventure.audience.Audience;
|
import net.kyori.adventure.audience.Audience;
|
||||||
import net.kyori.adventure.text.TextReplacementConfig;
|
import net.kyori.adventure.text.TextReplacementConfig;
|
||||||
import org.bukkit.command.CommandSender;
|
import org.bukkit.command.CommandSender;
|
||||||
@@ -59,9 +60,10 @@ public enum CoreMessage {
|
|||||||
COMMAND_LORE_INSERT_INPUT_NUMBER_ERROR("§c行号必须是一个大于等于 0 的整数"),
|
COMMAND_LORE_INSERT_INPUT_NUMBER_ERROR("§c行号必须是一个大于等于 0 的整数"),
|
||||||
COMMAND_LORE_INSERT_WAIT_CHAT_TEXT("§a请于 15 秒内在聊天框输入想要设置的 lore 文本"),
|
COMMAND_LORE_INSERT_WAIT_CHAT_TEXT("§a请于 15 秒内在聊天框输入想要设置的 lore 文本"),
|
||||||
COMMAND_LORE_INSERT_INDEX_OUT_OF_RANGE("§c你的手持物品没有这么多行 lore 文本"),
|
COMMAND_LORE_INSERT_INDEX_OUT_OF_RANGE("§c你的手持物品没有这么多行 lore 文本"),
|
||||||
COMMAND_LORE_INSERT_SUCCESS("§a已成功设置 lore 文本"),
|
COMMAND_LORE_INSERT_SUCCESS("§a已成功设置 lore 文本");
|
||||||
;
|
|
||||||
|
|
||||||
|
@Getter
|
||||||
|
@NotNull
|
||||||
private DisplayMessage message;
|
private DisplayMessage message;
|
||||||
|
|
||||||
CoreMessage(@NotNull String message) {
|
CoreMessage(@NotNull String message) {
|
||||||
@@ -106,17 +108,21 @@ public enum CoreMessage {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void show(@NotNull CommandSender sender, TextReplacementConfig... replacement) {
|
public void show(@NotNull CommandSender sender) {
|
||||||
if (message == null) {
|
message.show(CoreBukkitAPI.getInstance().getAudienceProvider().sender(sender));
|
||||||
sender.sendMessage(name());
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
Audience audience = CoreBukkitAPI.getInstance().getAudienceProvider().sender(sender);
|
|
||||||
message.show(audience, replacement);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@SuppressWarnings("unused")
|
public void show(@NotNull CommandSender sender, @NotNull String... replacement) {
|
||||||
public DisplayMessage getMessage() {
|
if (replacement.length % 2 != 0) {
|
||||||
return message;
|
throw new IllegalArgumentException();
|
||||||
|
}
|
||||||
|
TextReplacementConfig[] configs = new TextReplacementConfig[replacement.length / 2];
|
||||||
|
for (int i = 0; i < configs.length; i++) {
|
||||||
|
String key = replacement[i * 2];
|
||||||
|
String value = replacement[i * 2 + 1];
|
||||||
|
configs[i] = TextReplacementConfig.builder().matchLiteral(key).replacement(value).build();
|
||||||
|
}
|
||||||
|
Audience audience = CoreBukkitAPI.getInstance().getAudienceProvider().sender(sender);
|
||||||
|
message.show(audience, configs);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -4,7 +4,7 @@ version: ${version}
|
|||||||
api-version: 1.13
|
api-version: 1.13
|
||||||
|
|
||||||
author: MiniDay
|
author: MiniDay
|
||||||
website: https://github.com/MiniDay/hamster-core
|
website: https://git.airgame.net/MiniDay/hamster-core
|
||||||
description: 仓鼠核心:叁只仓鼠的 Minecraft 插件开发通用工具包
|
description: 仓鼠核心:叁只仓鼠的 Minecraft 插件开发通用工具包
|
||||||
|
|
||||||
load: STARTUP
|
load: STARTUP
|
||||||
|
@@ -3,3 +3,4 @@ main: cn.hamster3.mc.plugin.core.bungee.HamsterCorePlugin
|
|||||||
version: ${version}
|
version: ${version}
|
||||||
|
|
||||||
author: MiniDay
|
author: MiniDay
|
||||||
|
description: 仓鼠核心:叁只仓鼠的 Minecraft 插件开发通用工具包
|
@@ -148,6 +148,11 @@ public class DisplayMessage {
|
|||||||
return copy;
|
return copy;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@NotNull
|
||||||
|
public DisplayMessage replace(@NotNull String key, String value) {
|
||||||
|
return replace(TextReplacementConfig.builder().matchLiteral(key).replacement(value).build());
|
||||||
|
}
|
||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
public JsonObject toJson() {
|
public JsonObject toJson() {
|
||||||
JsonObject object = new JsonObject();
|
JsonObject object = new JsonObject();
|
||||||
|
Reference in New Issue
Block a user