Skip to content

Commit 26eb260

Browse files
committed
Add configurable server links
1 parent 51af11e commit 26eb260

File tree

6 files changed

+71
-2
lines changed

6 files changed

+71
-2
lines changed
Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,13 @@
11
--- a/net/minecraft/server/commands/ReloadCommand.java
22
+++ b/net/minecraft/server/commands/ReloadCommand.java
3-
@@ -44,6 +_,9 @@
3+
@@ -44,6 +_,10 @@
44
Collection<String> selectedIds = packRepository.getSelectedIds();
55
Collection<String> collection = discoverNewPacks(packRepository, worldData, selectedIds);
66
server.reloadResources(collection, io.papermc.paper.event.server.ServerResourcesReloadedEvent.Cause.PLUGIN); // Paper - Add ServerResourcesReloadedEvent
77
+ de.pascalpex.deepslatemc.util.TablistUtil.reloadTablist(); // Deepslate - reload tablist
88
+ de.pascalpex.deepslatemc.util.BossbarUtil.reloadBossbar(); // Deepslate - reload bossbar
99
+ de.pascalpex.deepslatemc.util.ActionbarUtil.reloadActionbar(); // Deepslate - reload actionbar
10+
+ de.pascalpex.deepslatemc.util.ServerLinkUtil.loadLinks(); // Deepslate - reload server links
1011
}
1112
// CraftBukkit end
1213

Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
--- a/net/minecraft/server/network/ServerConfigurationPacketListenerImpl.java
2+
+++ b/net/minecraft/server/network/ServerConfigurationPacketListenerImpl.java
3+
@@ -83,6 +_,10 @@
4+
// CraftBukkit start
5+
org.bukkit.craftbukkit.CraftServerLinks wrapper = new org.bukkit.craftbukkit.CraftServerLinks(serverLinks);
6+
org.bukkit.event.player.PlayerLinksSendEvent event = new org.bukkit.event.player.PlayerLinksSendEvent(this.player.getBukkitEntity(), wrapper);
7+
+ // Deepslate start - server links
8+
+ java.util.Map<net.kyori.adventure.text.Component, java.net.URI> deepslateLinks = de.pascalpex.deepslatemc.util.ServerLinkUtil.getLinks();
9+
+ deepslateLinks.keySet().forEach(key -> wrapper.addLink(key, deepslateLinks.get(key)));
10+
+ // Deepslate end - server links
11+
this.cserver.getPluginManager().callEvent(event);
12+
serverLinks = wrapper.getServerLinks();
13+
// CraftBukkit end

deepslateMC-server/src/main/java/de/pascalpex/deepslatemc/commands/DeepslateCommand.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import de.pascalpex.deepslatemc.files.MessagesFile;
66
import de.pascalpex.deepslatemc.util.ActionbarUtil;
77
import de.pascalpex.deepslatemc.util.BossbarUtil;
8+
import de.pascalpex.deepslatemc.util.ServerLinkUtil;
89
import de.pascalpex.deepslatemc.util.TablistUtil;
910
import net.kyori.adventure.text.Component;
1011
import net.kyori.adventure.text.format.NamedTextColor;
@@ -51,6 +52,7 @@ public boolean execute(@NotNull CommandSender sender, String commandLabel, Strin
5152
TablistUtil.reloadTablist();
5253
BossbarUtil.reloadBossbar();
5354
ActionbarUtil.reloadActionbar();
55+
ServerLinkUtil.loadLinks();
5456
prefix = MessagesFile.getMessage(MessagesEntry.PREFIX).appendSpace();
5557
sender.sendMessage(prefix.append(MessagesFile.getMessage(MessagesEntry.CONFIG_RELOADED)));
5658
} else {

deepslateMC-server/src/main/java/de/pascalpex/deepslatemc/files/Config.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,9 @@
1212
import java.io.File;
1313
import java.io.IOException;
1414
import java.util.ArrayList;
15+
import java.util.HashMap;
1516
import java.util.List;
17+
import java.util.Map;
1618

1719
import static de.pascalpex.deepslatemc.files.ConfigEntry.*;
1820

@@ -41,6 +43,10 @@ public static void load() {
4143
continue;
4244
}
4345
if(!config.contains(configEntry.key)) {
46+
if(configEntry == SERVER_LINKS) {
47+
config.set(SERVER_LINKS.key + ".<gold>My first link", "");
48+
continue;
49+
}
4450
config.set(configEntry.key, configEntry.defaultValue);
4551
}
4652
}
@@ -157,5 +163,10 @@ public static boolean getMinimessageMessages() {
157163
public static boolean getSendSpectatorModePackets() {
158164
return config.getBoolean(SPECTATOR_MODE_PACKETS.key);
159165
}
166+
public static Map<String, String> getServerLinks() {
167+
Map<String, String> serverLinks = new HashMap<>();
168+
config.getConfigurationSection(SERVER_LINKS.key).getKeys(false).forEach(key -> serverLinks.put(key, config.getString(SERVER_LINKS.key + "." + key)));
169+
return serverLinks;
170+
}
160171

161172
}

deepslateMC-server/src/main/java/de/pascalpex/deepslatemc/files/ConfigEntry.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,8 @@ enum ConfigEntry {
3434
MINIMESSAGE_MOTD("miniMessageMotdSupport", false),
3535
ACTIONBAR_TEXT("actionbar" + ".text", "&6Custom Actionbar"),
3636
MINIMESSAGE_MESSAGES("miniMessageMessages", false),
37-
SPECTATOR_MODE_PACKETS("sendSpectatorModePackets", true);
37+
SPECTATOR_MODE_PACKETS("sendSpectatorModePackets", true),
38+
SERVER_LINKS("serverLinks", "");
3839

3940
final String key;
4041
final Object defaultValue;
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
package de.pascalpex.deepslatemc.util;
2+
3+
import de.pascalpex.deepslatemc.files.Config;
4+
import net.kyori.adventure.text.Component;
5+
import net.kyori.adventure.text.minimessage.MiniMessage;
6+
import org.apache.logging.log4j.LogManager;
7+
8+
import java.net.URI;
9+
import java.net.URISyntaxException;
10+
import java.util.HashMap;
11+
import java.util.Map;
12+
13+
public class ServerLinkUtil {
14+
15+
private static Map<Component, URI> links = null;
16+
17+
public static void loadLinks() {
18+
if (links == null) {
19+
links = new HashMap<>();
20+
} else {
21+
links.clear();
22+
}
23+
Config.getServerLinks().forEach((key, value) -> {
24+
if(key.isBlank() || value.isBlank()) {
25+
return;
26+
}
27+
try {
28+
links.put(MiniMessage.miniMessage().deserialize(key), new URI(value));
29+
} catch (URISyntaxException e) {
30+
LogManager.getLogger(ServerLinkUtil.class.getSimpleName()).warn("Invalid URL in DeepslateMC server links: {}", value);
31+
}
32+
});
33+
}
34+
35+
public static Map<Component, URI> getLinks() {
36+
if (links == null) {
37+
loadLinks();
38+
}
39+
return links;
40+
}
41+
}

0 commit comments

Comments
 (0)