Skip to content

Commit f826014

Browse files
committed
refactor(all): 修改项目结构,为BungeeYAML支持注释。
项目结构修改,避免使用上的误解。同时为 Bungee(YAML) 支持了注释功能。 BREAKING CHANGE: 包名与入口类变更 1. 项目结构与包名修改 mineconfiguration-bukkit-general -> mineconfiguration-bukkit mineconfiguration-bukkit-native -> mineconfiguration-spigot 2. MineConfiguration入口类变更,现移动到各自平台的包下。
1 parent 616d24d commit f826014

File tree

16 files changed

+345
-160
lines changed

16 files changed

+345
-160
lines changed

Diff for: README.md

+7-9
Original file line numberDiff line numberDiff line change
@@ -43,19 +43,17 @@ Bukkit系通用依赖,不包含实现部分,请使用 **MineConfiguration-Bu
4343

4444
以上类型可以通过 `CraftConfigValue.builder()` 来创建,部分类型提供了 `of(...);` 方法来快速创建。
4545

46-
#### **MineConfiguration-Bukkit-General** _(推荐)_
46+
#### **MineConfiguration-Bukkit** _(推荐)_
4747

4848
适用于Bukkit的版本,包含以Bukkit为基础的其他服务端 *(如Spigot、Paper、CatServer)*
4949

50-
#### **MineConfiguration-Bukkit-Native**
50+
#### **MineConfiguration-Spigot**
5151

5252
适用于 Spigot(1.18+) 的版本,适配了1.18及以后版本Spigot原生自带的配置文件注释功能,随Spigot更新而优化,安全稳定。
5353

5454
### **MineConfiguration-Bungee**
5555

56-
适用于BungeeCord的版本,可用JSON与YAML格式,但**不支持配置文件注释**
57-
58-
如需使用配置文件注释,建议使用 [EasyConfiguration-YAML](https://github.com/CarmJos/EasyConfiguration)
56+
适用于BungeeCord的版本,可用JSON与YAML格式。其中JSON格式**不支持配置文件注释**
5957

6058
## 开发
6159

@@ -111,14 +109,14 @@ Bukkit系通用依赖,不包含实现部分,请使用 **MineConfiguration-Bu
111109

112110
<dependency>
113111
<groupId>cc.carm.lib</groupId>
114-
<artifactId>mineconfiguration-bukkit-general</artifactId>
112+
<artifactId>mineconfiguration-bukkit</artifactId>
115113
<version>[LATEST RELEASE]</version>
116114
<scope>compile</scope>
117115
</dependency>
118116

119117
<dependency>
120118
<groupId>cc.carm.lib</groupId>
121-
<artifactId>mineconfiguration-bukkit-native</artifactId>
119+
<artifactId>mineconfiguration-spigot</artifactId>
122120
<version>[LATEST RELEASE]</version>
123121
<scope>compile</scope>
124122
</dependency>
@@ -164,9 +162,9 @@ repositories {
164162
165163
dependencies {
166164
167-
api "cc.carm.lib:mineconfiguration-bukkit-general:[LATEST RELEASE]"
165+
api "cc.carm.lib:mineconfiguration-bukkit:[LATEST RELEASE]"
168166
169-
api "cc.carm.lib:mineconfiguration-bukkit-native:[LATEST RELEASE]"
167+
api "cc.carm.lib:mineconfiguration-spigot:[LATEST RELEASE]"
170168
171169
api "cc.carm.lib:mineconfiguration-bungee:[LATEST RELEASE]"
172170

Diff for: common/pom.xml

+3-23
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,12 @@
55
<parent>
66
<artifactId>mineconfiguration-parent</artifactId>
77
<groupId>cc.carm.lib</groupId>
8-
<version>1.4.3</version>
8+
<version>2.0.0</version>
99
</parent>
1010
<modelVersion>4.0.0</modelVersion>
1111
<properties>
12-
<maven.compiler.source>${java.version}</maven.compiler.source>
13-
<maven.compiler.target>${java.version}</maven.compiler.target>
12+
<maven.compiler.source>${project.jdk.version}</maven.compiler.source>
13+
<maven.compiler.target>${project.jdk.version}</maven.compiler.target>
1414
</properties>
1515
<artifactId>mineconfiguration-common</artifactId>
1616

@@ -23,14 +23,6 @@
2323
<scope>compile</scope>
2424
</dependency>
2525

26-
<dependency>
27-
<groupId>de.themoep</groupId>
28-
<artifactId>minedown</artifactId>
29-
<version>1.7.1-SNAPSHOT</version>
30-
<scope>compile</scope>
31-
<optional>true</optional>
32-
</dependency>
33-
3426
<dependency>
3527
<groupId>net.md-5</groupId>
3628
<artifactId>bungeecord-chat</artifactId>
@@ -43,18 +35,6 @@
4335

4436
<build>
4537
<plugins>
46-
<plugin>
47-
<groupId>org.apache.maven.plugins</groupId>
48-
<artifactId>maven-compiler-plugin</artifactId>
49-
</plugin>
50-
<plugin>
51-
<groupId>org.apache.maven.plugins</groupId>
52-
<artifactId>maven-jar-plugin</artifactId>
53-
</plugin>
54-
<plugin>
55-
<groupId>org.apache.maven.plugins</groupId>
56-
<artifactId>maven-source-plugin</artifactId>
57-
</plugin>
5838
<plugin>
5939
<groupId>org.apache.maven.plugins</groupId>
6040
<artifactId>maven-javadoc-plugin</artifactId>

Diff for: platform/bukkit/base/pom.xml

+5-24
Original file line numberDiff line numberDiff line change
@@ -3,50 +3,31 @@
33
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
44
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
55
<parent>
6-
<artifactId>mineconfiguration-bukkit</artifactId>
6+
<artifactId>mineconfiguration-bukkit-parent</artifactId>
77
<groupId>cc.carm.lib</groupId>
8-
<version>1.4.3</version>
8+
<version>2.0.0</version>
99
</parent>
1010
<modelVersion>4.0.0</modelVersion>
1111
<properties>
12-
<maven.compiler.source>${java.version}</maven.compiler.source>
13-
<maven.compiler.target>${java.version}</maven.compiler.target>
12+
<maven.compiler.source>${project.jdk.version}</maven.compiler.source>
13+
<maven.compiler.target>${project.jdk.version}</maven.compiler.target>
1414
</properties>
1515
<artifactId>mineconfiguration-bukkit-base</artifactId>
1616
<packaging>jar</packaging>
1717

1818
<dependencies>
1919

20-
<dependency>
21-
<groupId>${project.parent.groupId}</groupId>
22-
<artifactId>easyconfiguration-core</artifactId>
23-
<version>${easyconfiguration.version}</version>
24-
<scope>compile</scope>
25-
</dependency>
26-
2720
<dependency>
2821
<groupId>${project.parent.groupId}</groupId>
2922
<artifactId>mineconfiguration-common</artifactId>
3023
<version>${project.parent.version}</version>
3124
<scope>compile</scope>
3225
</dependency>
33-
26+
3427
</dependencies>
3528

3629
<build>
3730
<plugins>
38-
<plugin>
39-
<groupId>org.apache.maven.plugins</groupId>
40-
<artifactId>maven-compiler-plugin</artifactId>
41-
</plugin>
42-
<plugin>
43-
<groupId>org.apache.maven.plugins</groupId>
44-
<artifactId>maven-jar-plugin</artifactId>
45-
</plugin>
46-
<plugin>
47-
<groupId>org.apache.maven.plugins</groupId>
48-
<artifactId>maven-source-plugin</artifactId>
49-
</plugin>
5031
<plugin>
5132
<groupId>org.apache.maven.plugins</groupId>
5233
<artifactId>maven-javadoc-plugin</artifactId>

Diff for: platform/bukkit/general/pom.xml

+5-17
Original file line numberDiff line numberDiff line change
@@ -3,17 +3,17 @@
33
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
44
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
55
<parent>
6-
<artifactId>mineconfiguration-bukkit</artifactId>
6+
<artifactId>mineconfiguration-bukkit-parent</artifactId>
77
<groupId>cc.carm.lib</groupId>
8-
<version>1.4.3</version>
8+
<version>2.0.0</version>
99
</parent>
1010
<modelVersion>4.0.0</modelVersion>
1111
<properties>
12-
<maven.compiler.source>${java.version}</maven.compiler.source>
13-
<maven.compiler.target>${java.version}</maven.compiler.target>
12+
<maven.compiler.source>${project.jdk.version}</maven.compiler.source>
13+
<maven.compiler.target>${project.jdk.version}</maven.compiler.target>
1414
</properties>
1515

16-
<artifactId>mineconfiguration-bukkit-general</artifactId>
16+
<artifactId>mineconfiguration-bukkit</artifactId>
1717
<packaging>jar</packaging>
1818

1919
<dependencies>
@@ -29,18 +29,6 @@
2929

3030
<build>
3131
<plugins>
32-
<plugin>
33-
<groupId>org.apache.maven.plugins</groupId>
34-
<artifactId>maven-compiler-plugin</artifactId>
35-
</plugin>
36-
<plugin>
37-
<groupId>org.apache.maven.plugins</groupId>
38-
<artifactId>maven-jar-plugin</artifactId>
39-
</plugin>
40-
<plugin>
41-
<groupId>org.apache.maven.plugins</groupId>
42-
<artifactId>maven-source-plugin</artifactId>
43-
</plugin>
4432
<plugin>
4533
<groupId>org.apache.maven.plugins</groupId>
4634
<artifactId>maven-javadoc-plugin</artifactId>

Diff for: platform/bukkit/general/src/main/java/cc/carm/lib/mineconfiguration/MineConfiguration.java renamed to platform/bukkit/general/src/main/java/cc/carm/lib/mineconfiguration/bukkit/MineConfiguration.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package cc.carm.lib.mineconfiguration;
1+
package cc.carm.lib.mineconfiguration.bukkit;
22

33
import cc.carm.lib.mineconfiguration.bukkit.source.BukkitConfigProvider;
44
import org.bukkit.plugin.Plugin;

Diff for: platform/bukkit/pom.xml

+5-7
Original file line numberDiff line numberDiff line change
@@ -5,24 +5,22 @@
55
<parent>
66
<artifactId>mineconfiguration-parent</artifactId>
77
<groupId>cc.carm.lib</groupId>
8-
<version>1.4.3</version>
8+
<version>2.0.0</version>
99
<relativePath>../../pom.xml</relativePath>
1010
</parent>
1111
<modelVersion>4.0.0</modelVersion>
1212
<properties>
13-
<maven.compiler.source>${java.version}</maven.compiler.source>
14-
<maven.compiler.target>${java.version}</maven.compiler.target>
13+
<maven.compiler.source>${project.jdk.version}</maven.compiler.source>
14+
<maven.compiler.target>${project.jdk.version}</maven.compiler.target>
1515
</properties>
16-
<artifactId>mineconfiguration-bukkit</artifactId>
16+
<artifactId>mineconfiguration-bukkit-parent</artifactId>
1717
<packaging>pom</packaging>
1818
<modules>
1919
<module>base</module>
20-
2120
<module>general</module>
22-
<module>native</module>
2321
</modules>
2422

25-
<name>MineConfiguration-Bukkit</name>
23+
<name>MineConfiguration-Bukkit-Parent</name>
2624

2725
<dependencies>
2826

Diff for: platform/bungee/pom.xml

+3-15
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,13 @@
55
<parent>
66
<artifactId>mineconfiguration-parent</artifactId>
77
<groupId>cc.carm.lib</groupId>
8-
<version>1.4.3</version>
8+
<version>2.0.0</version>
99
<relativePath>../../pom.xml</relativePath>
1010
</parent>
1111
<modelVersion>4.0.0</modelVersion>
1212
<properties>
13-
<maven.compiler.source>${java.version}</maven.compiler.source>
14-
<maven.compiler.target>${java.version}</maven.compiler.target>
13+
<maven.compiler.source>${project.jdk.version}</maven.compiler.source>
14+
<maven.compiler.target>${project.jdk.version}</maven.compiler.target>
1515
</properties>
1616
<artifactId>mineconfiguration-bungee</artifactId>
1717
<packaging>jar</packaging>
@@ -54,18 +54,6 @@
5454

5555
<build>
5656
<plugins>
57-
<plugin>
58-
<groupId>org.apache.maven.plugins</groupId>
59-
<artifactId>maven-compiler-plugin</artifactId>
60-
</plugin>
61-
<plugin>
62-
<groupId>org.apache.maven.plugins</groupId>
63-
<artifactId>maven-jar-plugin</artifactId>
64-
</plugin>
65-
<plugin>
66-
<groupId>org.apache.maven.plugins</groupId>
67-
<artifactId>maven-source-plugin</artifactId>
68-
</plugin>
6957
<plugin>
7058
<groupId>org.apache.maven.plugins</groupId>
7159
<artifactId>maven-javadoc-plugin</artifactId>

Diff for: platform/bungee/src/main/java/cc/carm/lib/mineconfiguration/MineConfiguration.java renamed to platform/bungee/src/main/java/cc/carm/lib/mineconfiguration/bungee/MineConfiguration.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package cc.carm.lib.mineconfiguration;
1+
package cc.carm.lib.mineconfiguration.bungee;
22

33
import cc.carm.lib.mineconfiguration.bungee.source.BungeeConfigProvider;
44
import net.md_5.bungee.api.plugin.Plugin;

Diff for: platform/bungee/src/main/java/cc/carm/lib/mineconfiguration/bungee/source/BungeeConfigProvider.java

+29-5
Original file line numberDiff line numberDiff line change
@@ -4,25 +4,39 @@
44
import cc.carm.lib.configuration.core.source.impl.FileConfigProvider;
55
import net.md_5.bungee.config.Configuration;
66
import net.md_5.bungee.config.ConfigurationProvider;
7+
import net.md_5.bungee.config.YamlConfiguration;
78
import org.jetbrains.annotations.NotNull;
89
import org.jetbrains.annotations.Nullable;
910
import org.jetbrains.annotations.Unmodifiable;
1011

12+
import java.io.BufferedWriter;
1113
import java.io.File;
1214
import java.io.IOException;
15+
import java.io.StringWriter;
16+
import java.nio.charset.StandardCharsets;
17+
import java.nio.file.Files;
18+
import java.nio.file.Path;
1319
import java.util.List;
1420

1521
public class BungeeConfigProvider extends FileConfigProvider<BungeeSectionWrapper> {
1622

23+
protected static final char SEPARATOR = '.';
24+
1725
protected ConfigurationProvider loader;
1826
protected Configuration configuration;
1927
protected ConfigInitializer<BungeeConfigProvider> initializer;
2028

21-
public BungeeConfigProvider(@NotNull File file, ConfigurationProvider loader) {
29+
protected BungeeYAMLComments comments = new BungeeYAMLComments();
30+
31+
public BungeeConfigProvider(@NotNull File file, @NotNull ConfigurationProvider loader) {
2232
super(file);
2333
this.loader = loader;
2434
}
2535

36+
public BungeeConfigProvider(@NotNull File file, @NotNull Class<? extends ConfigurationProvider> providerClass) {
37+
this(file, ConfigurationProvider.getProvider(providerClass));
38+
}
39+
2640
public void initializeConfig() throws IOException {
2741
this.configuration = getLoader().load(file);
2842
this.initializer = new ConfigInitializer<>(this);
@@ -41,26 +55,36 @@ protected void onReload() throws Exception {
4155
@Override
4256
public void save() throws Exception {
4357
getLoader().save(configuration, file);
58+
if (getLoader() instanceof YamlConfiguration) {
59+
StringWriter writer = new StringWriter();
60+
this.comments.writeComments(configuration, new BufferedWriter(writer));
61+
String value = writer.toString(); // config contents
62+
63+
Path toUpdatePath = getFile().toPath();
64+
if (!value.equals(new String(Files.readAllBytes(toUpdatePath), StandardCharsets.UTF_8))) {
65+
Files.write(toUpdatePath, value.getBytes(StandardCharsets.UTF_8));
66+
}
67+
}
4468
}
4569

4670
@Override
4771
public void setHeaderComment(@Nullable String path, @Nullable List<String> comments) {
48-
72+
this.comments.setHeaderComments(path, comments);
4973
}
5074

5175
@Override
5276
public void setInlineComment(@NotNull String path, @Nullable String comment) {
53-
77+
this.comments.setInlineComment(path, comment);
5478
}
5579

5680
@Override
5781
public @Nullable @Unmodifiable List<String> getHeaderComment(@Nullable String path) {
58-
return null;
82+
return this.comments.getHeaderComment(path);
5983
}
6084

6185
@Override
6286
public @Nullable String getInlineComment(@NotNull String path) {
63-
return null;
87+
return this.comments.getInlineComment(path);
6488
}
6589

6690
@Override

0 commit comments

Comments
 (0)