Skip to content

Commit

Permalink
[6.2.0][dev] 移除 XSeries Skull,合并 database-player,补充注释
Browse files Browse the repository at this point in the history
  • Loading branch information
Bkm016 committed Sep 19, 2024
1 parent 858853a commit f80ce15
Show file tree
Hide file tree
Showing 85 changed files with 1,349 additions and 6,846 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -20,33 +20,61 @@
import java.util.ArrayDeque;
import java.util.Queue;

/**
* BukkitYaml 类扩展了 Yaml 类,提供了对 YAML 文件的特定处理功能。
* 这个类主要用于处理 Bukkit 配置文件中的注释和序列化。
*/
public class BukkitYaml extends Yaml {

/** 用于存储 Emitter 类中的 events 字段 */
private static final Field events;
/** 用于存储 Emitter 类中的 blockCommentsCollector 字段 */
private static final Field blockCommentsCollector;
/** 用于存储 Emitter 类中的 inlineCommentsCollector 字段 */
private static final Field inlineCommentsCollector;

/**
* 获取 Emitter 类中指定名称的字段。
*
* @param name 字段名称
* @return 返回对应的 Field 对象,如果获取失败则返回 null
*/
private static Field getEmitterField(String name) {
Field field = null;
try {
field = Emitter.class.getDeclaredField(name);
field.setAccessible(true);
} catch (ReflectiveOperationException ex) {
// Ignore as a fail-safe fallback
// 忽略异常,作为一个安全的回退机制
}
return field;
}

// 静态初始化块,用于初始化静态字段
static {
events = getEmitterField("events");
blockCommentsCollector = getEmitterField("blockCommentsCollector");
inlineCommentsCollector = getEmitterField("inlineCommentsCollector");
}

/**
* 构造函数,初始化 BukkitYaml 实例。
*
* @param constructor YAML 构造器
* @param representer YAML 表示器
* @param dumperOptions 转储选项
* @param loadingConfig 加载配置
*/
public BukkitYaml(@NotNull BaseConstructor constructor, @NotNull Representer representer, @NotNull DumperOptions dumperOptions, @NotNull LoaderOptions loadingConfig) {
super(constructor, representer, dumperOptions, loadingConfig);
}

/**
* 重写序列化方法,用于处理 YAML 节点的序列化。
*
* @param node 要序列化的 YAML 节点
* @param output 输出写入器
*/
@Override
public void serialize(@NotNull Node node, @NotNull Writer output) {
Emitter emitter = new Emitter(output, dumperOptions);
Expand All @@ -57,8 +85,8 @@ public void serialize(@NotNull Node node, @NotNull Writer output) {
blockCommentsCollector.set(emitter, new CommentEventsCollector(newEvents, CommentType.BLANK_LINE, CommentType.BLOCK));
inlineCommentsCollector.set(emitter, new CommentEventsCollector(newEvents, CommentType.IN_LINE));
} catch (ReflectiveOperationException ex) {
// Don't ignore this as we could be in an inconsistent state
throw new RuntimeException("Could not update Yaml event queue", ex);
// 不要忽略这个异常,因为我们可能处于不一致的状态
throw new RuntimeException("无法更新 Yaml 事件队列", ex);
}
}
Serializer serializer = new Serializer(emitter, resolver, dumperOptions, null);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,25 +9,54 @@
import org.yaml.snakeyaml.nodes.Node;
import org.yaml.snakeyaml.nodes.Tag;

/**
* YamlConstructor 类继承自 SafeConstructor,用于自定义 YAML 构造过程。
*/
public class YamlConstructor extends SafeConstructor {

/**
* 构造函数,初始化 YamlConstructor 实例。
*
* @param loaderOptions YAML 加载选项
*/
public YamlConstructor(LoaderOptions loaderOptions) {
super(loaderOptions);
this.yamlConstructors.put(Tag.MAP, new ConstructCustomObject());
}

/**
* 重写 flattenMapping 方法,用于扁平化映射节点。
*
* @param node 要扁平化的映射节点
*/
@Override
public void flattenMapping(@NotNull final MappingNode node) {
super.flattenMapping(node);
}

/**
* 构造给定节点的对象。
*
* @param node 要构造的节点
* @return 构造的对象,可能为 null
*/
@Nullable
public Object construct(@NotNull Node node) {
return constructObject(node);
}

/**
* ConstructCustomObject 内部类,用于自定义对象的构造。
*/
class ConstructCustomObject extends ConstructYamlMap {

/**
* 构造给定节点的对象。
*
* @param node 要构造的节点
* @return 构造的对象,可能为 null
* @throws YAMLException 如果遇到意外的引用映射结构
*/
@Nullable
@Override
public Object construct(@NotNull Node node) {
Expand All @@ -37,6 +66,13 @@ public Object construct(@NotNull Node node) {
return super.construct(node);
}

/**
* 执行对象构造的第二步。
*
* @param node 要构造的节点
* @param object 已构造的对象
* @throws YAMLException 如果遇到意外的引用映射结构
*/
@Override
public void construct2ndStep(@NotNull Node node, @NotNull Object object) {
throw new YAMLException("Unexpected referential mapping structure. Node: " + node);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,15 +4,32 @@
import org.yaml.snakeyaml.nodes.Node;
import org.yaml.snakeyaml.representer.Representer;

/**
* YamlRepresenter 类扩展了 Representer 类,用于自定义 YAML 表示。
*/
public class YamlRepresenter extends Representer {

/**
* 构造函数,初始化 YamlRepresenter。
*
* @param options DumperOptions 实例,用于配置 YAML 转储选项。
*/
public YamlRepresenter(DumperOptions options) {
super(options);
this.multiRepresenters.put(ConfigurationSection.class, new RepresentConfigurationSection());
}

/**
* 内部类 RepresentConfigurationSection,用于表示 ConfigurationSection 对象。
*/
class RepresentConfigurationSection extends RepresentMap {

/**
* 重写 representData 方法,用于将 ConfigurationSection 对象转换为 YAML 节点。
*
* @param data 要表示的对象,应为 ConfigurationSection 类型。
* @return 表示给定数据的 YAML 节点。
*/
@Override
public Node representData(Object data) {
return super.representData(((ConfigurationSection) data).getValues(false));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,11 +16,10 @@
import java.util.Map;

/**
* TabooLib
* taboolib.module.configuration.YamlCommentLoader
*
* @author 坏黑
* @since 2022/10/3 01:13
* YAML 注释加载器
* <p>
* 该类负责处理 YAML 文件中的注释,包括加载、调整和保存注释。
* 它使用 SnakeYAML 库来解析和操作 YAML 结构。
*/
@SuppressWarnings("FieldCanBeLocal")
public class YamlCommentLoader {
Expand Down
Loading

0 comments on commit f80ce15

Please sign in to comment.