Skip to content

Commit 3b7f76d

Browse files
committed
Separate paper into paper and adventure.
Paper (for plugins) Adventure (for platforms or plugins too)
1 parent 608d8cf commit 3b7f76d

15 files changed

Lines changed: 161 additions & 58 deletions

File tree

adventure/build.gradle.kts

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
2+
repositories {
3+
maven("https://repo.papermc.io/repository/maven-public/")
4+
}
5+
6+
dependencies {
7+
compileOnly(project(":core"))
8+
compileOnly("net.kyori:adventure-api:4.25.0")
9+
compileOnly("net.kyori:adventure-text-minimessage:4.25.0")
10+
}
Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
package net.j4c0b3y.api.config.platform.adventure;
2+
3+
import net.j4c0b3y.api.config.ConfigHandler;
4+
import net.j4c0b3y.api.config.platform.adventure.provider.MiniMessageProvider;
5+
import net.j4c0b3y.api.config.platform.adventure.provider.PrefixedComponentProvider;
6+
import net.j4c0b3y.api.config.platform.adventure.types.MiniComponent;
7+
import net.j4c0b3y.api.config.platform.adventure.types.PrefixedComponent;
8+
import net.kyori.adventure.text.Component;
9+
10+
import java.util.logging.Logger;
11+
12+
/**
13+
* Used for registering providers, backups,
14+
* and general config management.
15+
* Also binds bukkit specific providers.
16+
*
17+
* @author Biquaternions
18+
* @version ConfigAPI
19+
* @since 11/14/2025
20+
*/
21+
public class AdventureConfigHandler extends ConfigHandler {
22+
23+
/**
24+
* Creates a new config handler instance,
25+
* registers default resolvers and providers.
26+
*
27+
* @param logger The logger used to warn for destructive actions.
28+
*/
29+
public AdventureConfigHandler(Logger logger, Component prefix) {
30+
super(logger);
31+
32+
this.bind(MiniComponent.class, new MiniMessageProvider());
33+
this.bind(PrefixedComponent.class, new PrefixedComponentProvider(prefix));
34+
}
35+
36+
/**
37+
* Creates a new config handler instance,
38+
* registers default resolvers and providers.
39+
* Uses a logger with name "ConfigAPI".
40+
* Does not contain a prefix.
41+
*/
42+
public AdventureConfigHandler() {
43+
this(Logger.getLogger("ConfigAPI"), Component.empty());
44+
}
45+
46+
/**
47+
* Creates a new config handler instance,
48+
* registers default resolvers and providers.
49+
* Uses a logger with name "ConfigAPI".
50+
*/
51+
public AdventureConfigHandler(Component prefix) {
52+
this(Logger.getLogger("ConfigAPI"), prefix);
53+
}
54+
55+
/**
56+
* Creates a new config handler instance,
57+
* registers default resolvers and providers.
58+
* Does not contain a prefix.
59+
*/
60+
public AdventureConfigHandler(Logger logger) {
61+
this(logger, Component.empty());
62+
}
63+
64+
}
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
package net.j4c0b3y.api.config.platform.adventure.provider;
2+
3+
import net.j4c0b3y.api.config.platform.adventure.types.MiniComponent;
4+
import net.j4c0b3y.api.config.provider.TypeProvider;
5+
import net.j4c0b3y.api.config.provider.context.LoadContext;
6+
import net.j4c0b3y.api.config.provider.context.SaveContext;
7+
import org.jetbrains.annotations.NotNull;
8+
import org.jetbrains.annotations.Nullable;
9+
10+
public class MiniMessageProvider implements TypeProvider<MiniComponent> {
11+
12+
@NotNull
13+
@Override
14+
public MiniComponent load(@NotNull LoadContext context) {
15+
if (context.getObject() instanceof String string) {
16+
return new MiniComponent(string);
17+
}
18+
throw new IllegalStateException("Failed to parse MiniMessage");
19+
}
20+
21+
@Nullable
22+
@Override
23+
public Object save(@NotNull SaveContext<MiniComponent> context) {
24+
return context.getObject().getRaw();
25+
}
26+
27+
}

paper/src/main/java/net/j4c0b3y/api/config/platform/paper/provider/PrefixedComponentProvider.java renamed to adventure/src/main/java/net/j4c0b3y/api/config/platform/adventure/provider/PrefixedComponentProvider.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
package net.j4c0b3y.api.config.platform.paper.provider;
1+
package net.j4c0b3y.api.config.platform.adventure.provider;
22

3-
import net.j4c0b3y.api.config.platform.paper.types.PrefixedComponent;
3+
import net.j4c0b3y.api.config.platform.adventure.types.PrefixedComponent;
44
import net.j4c0b3y.api.config.provider.TypeProvider;
55
import net.j4c0b3y.api.config.provider.context.LoadContext;
66
import net.j4c0b3y.api.config.provider.context.SaveContext;
@@ -21,7 +21,7 @@ public PrefixedComponent load(@NotNull LoadContext context) {
2121
if (context.getObject() instanceof String string) {
2222
return new PrefixedComponent(this.prefix, string);
2323
}
24-
throw new IllegalStateException();
24+
throw new IllegalStateException("Failed to parse prefixed component");
2525
}
2626

2727
@NotNull
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
package net.j4c0b3y.api.config.platform.adventure.types;
2+
3+
import lombok.Getter;
4+
import net.kyori.adventure.text.Component;
5+
import net.kyori.adventure.text.minimessage.MiniMessage;
6+
7+
public class MiniComponent {
8+
9+
@Getter
10+
private final String raw;
11+
12+
@Getter
13+
private final Component component;
14+
15+
public MiniComponent(String raw) {
16+
this.raw = raw;
17+
this.component = MiniMessage.miniMessage().deserialize(this.raw);
18+
}
19+
20+
}

paper/src/main/java/net/j4c0b3y/api/config/platform/paper/types/PrefixedComponent.java renamed to adventure/src/main/java/net/j4c0b3y/api/config/platform/adventure/types/PrefixedComponent.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package net.j4c0b3y.api.config.platform.paper.types;
1+
package net.j4c0b3y.api.config.platform.adventure.types;
22

33
import lombok.Getter;
44
import net.kyori.adventure.text.Component;
@@ -17,7 +17,7 @@ public class PrefixedComponent {
1717

1818
public PrefixedComponent(Component prefix, String raw) {
1919
this.raw = raw;
20-
this.unprefixed = MiniMessage.miniMessage().deserialize(raw);
20+
this.unprefixed = MiniMessage.miniMessage().deserialize(this.raw);
2121
this.component = prefix.append(this.unprefixed);
2222
}
2323

core/src/main/java/net/j4c0b3y/api/config/StaticConfig.java

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -152,11 +152,6 @@ public List<String> getFooter() {
152152
return Arrays.asList(footer.value());
153153
}
154154

155-
public final void initialize() {
156-
this.load();
157-
this.save();
158-
}
159-
160155
public void afterLoad() {}
161156

162157
/**
@@ -199,6 +194,14 @@ public void load() {
199194
}
200195
}
201196

197+
// Save the field values to the config document.
198+
save();
199+
200+
// If configured, we should format values.
201+
if (handler.isFormatValues()) {
202+
format();
203+
}
204+
202205
} catch (Exception exception) {
203206
// Load was unsuccessful, prevent saving.
204207
success = false;
@@ -241,11 +244,6 @@ public void save() {
241244
// Set the additional custom comments specified by the user.
242245
this.setComments();
243246

244-
// If configured, we should format values.
245-
if (handler.isFormatValues()) {
246-
this.format();
247-
}
248-
249247
// Save the document values and comments to file.
250248
document.save();
251249
} catch (Exception exception) {
@@ -424,6 +422,8 @@ protected void format() throws IOException {
424422
);
425423
}
426424

425+
// Save the formatted values to file.
426+
document.save();
427427
} catch (Exception exception) {
428428
throw new IOException("Format failed for file '" + file.getName() + "'.", exception);
429429
}

paper/build.gradle.kts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@ repositories {
44
}
55

66
dependencies {
7-
implementation(project(":core"))
7+
compileOnly(project(":core"))
8+
implementation(project(":adventure"))
9+
810
compileOnly("io.papermc.paper:paper-api:1.21.10-R0.1-SNAPSHOT")
911
}

paper/src/main/java/net/j4c0b3y/api/config/platform/paper/PaperConfigHandler.java

Lines changed: 17 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,7 @@
11
package net.j4c0b3y.api.config.platform.paper;
22

3-
import net.j4c0b3y.api.config.ConfigHandler;
3+
import net.j4c0b3y.api.config.platform.adventure.AdventureConfigHandler;
44
import net.j4c0b3y.api.config.platform.paper.provider.*;
5-
import net.j4c0b3y.api.config.platform.paper.types.PrefixedComponent;
65
import net.j4c0b3y.api.config.platform.paper.types.WorldReference;
76
import net.kyori.adventure.text.Component;
87
import org.bukkit.Location;
@@ -20,7 +19,7 @@
2019
* @version ConfigAPI
2120
* @since 11/14/2025
2221
*/
23-
public class PaperConfigHandler extends ConfigHandler {
22+
public class PaperConfigHandler extends AdventureConfigHandler {
2423

2524
/**
2625
* Creates a new config handler instance,
@@ -29,12 +28,10 @@ public class PaperConfigHandler extends ConfigHandler {
2928
* @param logger The logger used to warn for destructive actions.
3029
*/
3130
public PaperConfigHandler(Logger logger, Component prefix) {
32-
super(logger);
31+
super(logger, prefix);
3332

34-
this.bind(Component.class, new ComponentProvider());
3533
this.bind(ItemStack.class, new ItemStackProvider());
3634
this.bind(Location.class, new LocationProvider());
37-
this.bind(PrefixedComponent.class, new PrefixedComponentProvider(prefix));
3835
this.bind(Vector.class, new VectorProvider());
3936
this.bind(WorldReference.class, new WorldProvider());
4037
}
@@ -43,17 +40,28 @@ public PaperConfigHandler(Logger logger, Component prefix) {
4340
* Creates a new config handler instance,
4441
* registers default resolvers and providers.
4542
* Uses a logger with name "ConfigAPI".
43+
* Does not contain a prefix.
4644
*/
4745
public PaperConfigHandler() {
48-
this(Logger.getLogger("ConfigAPI"), Component.empty());
46+
super(Logger.getLogger("ConfigAPI"), Component.empty());
4947
}
5048

49+
/**
50+
* Creates a new config handler instance,
51+
* registers default resolvers and providers.
52+
* Uses a logger with name "ConfigAPI".
53+
*/
5154
public PaperConfigHandler(Component prefix) {
52-
this(Logger.getLogger("ConfigAPI"), prefix);
55+
super(Logger.getLogger("ConfigAPI"), prefix);
5356
}
57+
/**
58+
* Creates a new config handler instance,
59+
* registers default resolvers and providers.
60+
* Does not contain a prefix.
61+
*/
5462

5563
public PaperConfigHandler(Logger logger) {
56-
this(logger, Component.empty());
64+
super(logger, Component.empty());
5765
}
5866

5967
}

paper/src/main/java/net/j4c0b3y/api/config/platform/paper/provider/ComponentProvider.java

Lines changed: 0 additions & 28 deletions
This file was deleted.

0 commit comments

Comments
 (0)