你可能不需要,甚至是反感 MiniMessage 中的某些标签。
MiniMessage 在标签处理器默认实现这一块防得严丝合缝,需要反射才能进行修改。
使用以下代码即可移除某个标签的处理器。
MiniMessage 在标签处理器默认实现这一块防得严丝合缝,需要反射才能进行修改。
使用以下代码即可移除某个标签的处理器。
Java:
@SuppressWarnings({"unchecked", "CallToPrintStackTrace"})
public static void remove(TagResolver.Builder builder, String... tags) {
Class<?> type = builder.getClass();
try {
Field field = type.getDeclaredField("resolvers");
field.setAccessible(true);
List<TagResolver> list = (List<TagResolver>) field.get(builder);
list.removeIf(it -> {
for (String tag : tags) {
if (it.has(tag)) return true;
}
return false;
});
} catch (Throwable t) {
t.printStackTrace();
}
}
// 使用样例
public static MiniMessage create() {
return MiniMessage.builder()
.editTags(it -> remove(it, "pride")) // 在这里输入要删除的标签,如 <pride[:flag]>
.build();
}
- 内容版权许可
- CC BY-SA 署名-相同方式共享