Skip to content

Commit 55ccd8a

Browse files
committed
Support PlaceholderAPI
1 parent 8abecfc commit 55ccd8a

11 files changed

+36
-32
lines changed

CONFIG.md

+3-3
Original file line numberDiff line numberDiff line change
@@ -42,9 +42,9 @@ This section contains configurations that overrides Vanilla Minecraft mechanics.
4242
### Welcome Message Object
4343
| Key | Description |
4444
|------------|---------------------------------------------------------------------------------------------------------------------------------------------------|
45-
| title | The title that are displayed to the player. (Minecraft RAW Text Format) |
46-
| subtitle | The subtitle that are displayed to the player. (Minecraft RAW Text Format) |
47-
| message | The chat message that are displayed to the player. (Minecraft RAW Text Format) |
45+
| title | The title that are displayed to the player. ([Simplified Text Format](https://placeholders.pb4.eu/user/text-format/)) |
46+
| subtitle | The subtitle that are displayed to the player. ([Simplified Text Format](https://placeholders.pb4.eu/user/text-format/)) |
47+
| message | The chat message that are displayed to the player. ([Simplified Text Format](https://placeholders.pb4.eu/user/text-format/)) |
4848
| delayTick | How long to wait (in Minecraft tick) before showing the welcome message to the player. |
4949
| permLevels | An array of numbers representing the op level of the player.<br>Player that are inside the OP Level range will have the welcome message be shown. |
5050

build.gradle

+5-6
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,10 @@
1-
import groovy.json.JsonSlurper
21
plugins {
32
id 'fabric-loom' version '1.8-SNAPSHOT'
43
id 'maven-publish'
54
}
65

7-
sourceCompatibility = JavaVersion.VERSION_16
8-
targetCompatibility = JavaVersion.VERSION_16
6+
sourceCompatibility = JavaVersion.VERSION_17
7+
targetCompatibility = JavaVersion.VERSION_17
98

109
group = project.maven_group
1110
version = project.mod_version + "+" + project.minecraft_version
@@ -27,6 +26,7 @@ dependencies {
2726

2827
// Fabric API. This is technically optional, but you probably want it anyway.
2928
modImplementation "net.fabricmc.fabric-api:fabric-api:${project.fabric_version}"
29+
modImplementation include("eu.pb4:placeholder-api:${project.placeholder_api_version}")
3030
}
3131

3232
processResources {
@@ -82,10 +82,9 @@ publishing {
8282
allprojects {
8383
repositories {
8484
maven {
85-
url = "https://minecraft.guntram.de/maven/"
85+
url "https://maven.nucleoid.xyz/"
86+
name "Nucleoid"
8687
}
87-
maven { url 'https://www.jitpack.io' }
88-
maven { url 'https://oss.sonatype.org/content/repositories/snapshots' }
8988
}
9089

9190
afterEvaluate {

gradle.properties

+3
Original file line numberDiff line numberDiff line change
@@ -12,3 +12,6 @@ org.gradle.jvmargs=-Xmx1G
1212
mod_version = 2.0.0
1313
maven_group = com.lx862.svrutil
1414
archives_base_name = svrutil
15+
16+
# Dependencies
17+
placeholder_api_version = 2.0.0-pre.1+1.19.2

src/main/java/com/lx862/svrutil/config/FeatureConfig.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ public static boolean load() {
3030
featureSet.feature.readConfig(jsonConfig.getAsJsonObject(configEntryName));
3131
} else {
3232
needWriteConfig = true;
33-
jsonConfig.add(configEntryName, featureSet.feature.writeConfig());
33+
jsonConfig.add(configEntryName, featureSet.feature.generateConfig());
3434
}
3535
}
3636

src/main/java/com/lx862/svrutil/data/JoinMessage.java

+7-6
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import com.google.gson.JsonArray;
44
import com.google.gson.JsonObject;
5+
import eu.pb4.placeholders.api.TextParserUtils;
56
import net.minecraft.text.Text;
67

78
import java.util.ArrayList;
@@ -24,10 +25,10 @@ public JoinMessage(Text title, Text subtitle, Text joinMessage, int delayTick, L
2425

2526
public static JoinMessage fromJson(JsonObject jsonObject) {
2627
List<Integer> permLevels = new ArrayList<>();
27-
Text title = jsonObject.has("title") ? Text.Serializer.fromJson(jsonObject.get("title")) : null;
28-
Text subtitle = jsonObject.has("subtitle") ? Text.Serializer.fromJson(jsonObject.get("subtitle")) : null;
29-
Text joinMessage = jsonObject.has("message") ? Text.Serializer.fromJson(jsonObject.get("message")) : null;
3028
int delayTick = jsonObject.has("delayTick") ? jsonObject.get("delayTick").getAsInt() : 0;
29+
Text title = jsonObject.has("title") ? TextParserUtils.formatText(jsonObject.get("title").getAsString()) : null;
30+
Text subtitle = jsonObject.has("subtitle") ? TextParserUtils.formatText(jsonObject.get("subtitle").getAsString()) : null;
31+
Text joinMessage = jsonObject.has("message") ? TextParserUtils.formatText(jsonObject.get("message").getAsString()) : null;
3132

3233
try {
3334
jsonObject.get("permLevels").getAsJsonArray().forEach(e -> {
@@ -45,9 +46,9 @@ public static JsonObject toJson(JoinMessage joinMessage) {
4546
for(Integer i : joinMessage.permLevel) {
4647
permLevels.add(i);
4748
}
48-
jsonObject.add("title", Text.Serializer.toJsonTree(joinMessage.title));
49-
jsonObject.add("subtitle", Text.Serializer.toJsonTree(joinMessage.subtitle));
50-
jsonObject.add("message", Text.Serializer.toJsonTree(joinMessage.joinMessage));
49+
jsonObject.addProperty("title", "");
50+
jsonObject.addProperty("subtitle", "");
51+
jsonObject.addProperty("message", "<yellow>Please edit 'config/svrutil/feature.json' to change the welcome message. Thanks for installing Svrutil.</yellow>");
5152
jsonObject.addProperty("delayTick", joinMessage.delayTick);
5253
jsonObject.add("permLevels", permLevels);
5354
return jsonObject;

src/main/java/com/lx862/svrutil/feature/FancyMessageFeature.java

+2-3
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
package com.lx862.svrutil.feature;
22

33
import com.google.gson.JsonObject;
4-
import net.minecraft.server.MinecraftServer;
54

65
public class FancyMessageFeature extends Feature {
76

@@ -15,8 +14,8 @@ public void readConfig(JsonObject jsonObject) {
1514
}
1615

1716
@Override
18-
public JsonObject writeConfig() {
19-
JsonObject jsonObject = super.writeConfig();
17+
public JsonObject generateConfig() {
18+
JsonObject jsonObject = super.generateConfig();
2019
return jsonObject;
2120
}
2221
}

src/main/java/com/lx862/svrutil/feature/Feature.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ public void readConfig(JsonObject jsonObject) {
1919
this.enabled = jsonObject.has("enabled") && jsonObject.get("enabled").getAsBoolean();
2020
}
2121

22-
public JsonObject writeConfig() {
22+
public JsonObject generateConfig() {
2323
JsonObject jsonObject = new JsonObject();
2424
jsonObject.addProperty("enabled", enabled);
2525
return jsonObject;

src/main/java/com/lx862/svrutil/feature/HungerFeature.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,8 @@ public void readConfig(JsonObject jsonObject) {
1919
}
2020

2121
@Override
22-
public JsonObject writeConfig() {
23-
JsonObject jsonObject = super.writeConfig();
22+
public JsonObject generateConfig() {
23+
JsonObject jsonObject = super.generateConfig();
2424
jsonObject.addProperty("minLevel", minHunger);
2525
jsonObject.addProperty("maxLevel", maxHunger);
2626
return jsonObject;

src/main/java/com/lx862/svrutil/feature/JoinMessageFeature.java

+8-5
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@
44
import com.google.gson.JsonObject;
55
import com.lx862.svrutil.TickManager;
66
import com.lx862.svrutil.data.JoinMessage;
7+
import eu.pb4.placeholders.api.PlaceholderContext;
8+
import eu.pb4.placeholders.api.Placeholders;
79
import net.fabricmc.fabric.api.networking.v1.PacketSender;
810
import net.minecraft.network.packet.s2c.play.SubtitleS2CPacket;
911
import net.minecraft.network.packet.s2c.play.TitleS2CPacket;
@@ -34,8 +36,8 @@ public void readConfig(JsonObject jsonObject) {
3436
}
3537

3638
@Override
37-
public JsonObject writeConfig() {
38-
JsonObject jsonObject = super.writeConfig();
39+
public JsonObject generateConfig() {
40+
JsonObject jsonObject = super.generateConfig();
3941
JsonArray entries = new JsonArray();
4042
for(JoinMessage joinMessage : joinMessages) {
4143
entries.add(JoinMessage.toJson(joinMessage));
@@ -50,11 +52,12 @@ public void onPlayerJoin(ServerPlayNetworkHandler dispatcher, PacketSender sende
5052

5153
for(JoinMessage joinMessage : joinMessages) {
5254
if(!joinMessage.permLevel.isEmpty() && !joinMessage.permLevel.contains(server.getPermissionLevel(player.getGameProfile()))) return;
55+
PlaceholderContext placeholderContext = new PlaceholderContext(server, server.getCommandSource(), player.getWorld(), player, player, player.getGameProfile());
5356

5457
TickManager.schedule(joinMessage.delayTick, () -> {
55-
if(joinMessage.joinMessage != null) player.sendMessage(joinMessage.joinMessage, false);
56-
if(joinMessage.title != null) player.networkHandler.sendPacket(new TitleS2CPacket(joinMessage.title));
57-
if(joinMessage.subtitle != null) player.networkHandler.sendPacket(new SubtitleS2CPacket(joinMessage.subtitle));
58+
if(joinMessage.title != null) player.networkHandler.sendPacket(new TitleS2CPacket(Placeholders.parseText(joinMessage.title, placeholderContext)));
59+
if(joinMessage.subtitle != null) player.networkHandler.sendPacket(new SubtitleS2CPacket(Placeholders.parseText(joinMessage.subtitle, placeholderContext)));
60+
if(joinMessage.joinMessage != null) player.sendMessage(Placeholders.parseText(joinMessage.joinMessage, placeholderContext), false);
5861
});
5962
}
6063
}

src/main/java/com/lx862/svrutil/feature/TextOverrideFeature.java

+2-3
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
package com.lx862.svrutil.feature;
22

33
import com.google.gson.JsonElement;
4-
import com.google.gson.JsonNull;
54
import com.google.gson.JsonObject;
65
import net.minecraft.text.Text;
76

@@ -30,8 +29,8 @@ public void readConfig(JsonObject jsonObject) {
3029
}
3130

3231
@Override
33-
public JsonObject writeConfig() {
34-
JsonObject jsonObject = super.writeConfig();
32+
public JsonObject generateConfig() {
33+
JsonObject jsonObject = super.generateConfig();
3534
if(whitelistedMessage == null) {
3635
jsonObject.addProperty("whitelistedMessage", "You are not whitelisted on the server.");
3736
} else {

src/main/java/com/lx862/svrutil/feature/VanillaMechanicsFeature.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,8 @@ public void readConfig(JsonObject jsonObject) {
2020
}
2121

2222
@Override
23-
public JsonObject writeConfig() {
24-
JsonObject jsonObject = super.writeConfig();
23+
public JsonObject generateConfig() {
24+
JsonObject jsonObject = super.generateConfig();
2525
jsonObject.addProperty("fallingBlockDelay", fallingBlockDelay);
2626
jsonObject.addProperty("immutableItemFrame", immutableItemFrame);
2727
jsonObject.addProperty("minItemFrameInteractOpLevel", minItemFrameInteractOpLevel);

0 commit comments

Comments
 (0)