Skip to content

Commit 149133d

Browse files
added a config file, min version and version name settings
1 parent 0a8f745 commit 149133d

File tree

6 files changed

+129
-20
lines changed

6 files changed

+129
-20
lines changed

src/main/java/de/deeprobin/playerlist/BungeePlugin.java

Lines changed: 0 additions & 11 deletions
This file was deleted.
Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
package de.deeprobin.playerlist;
2+
3+
import net.md_5.bungee.api.plugin.Plugin;
4+
import net.md_5.bungee.config.Configuration;
5+
import net.md_5.bungee.config.ConfigurationProvider;
6+
import net.md_5.bungee.config.YamlConfiguration;
7+
8+
import java.io.File;
9+
import java.io.IOException;
10+
import java.io.InputStream;
11+
import java.nio.file.Files;
12+
import java.util.Arrays;
13+
14+
@SuppressWarnings("CanBeFinal")
15+
public class Config {
16+
public static String versionName = "ZeroPaper 1.12.2+";
17+
public static int versionMinProtocol = 340;
18+
public static boolean setHoverInfo = true;
19+
20+
/**
21+
* Loads a config file, and if it doesn't exist creates one
22+
*
23+
* @param plugin Bungee plugin
24+
*/
25+
static void getConfig(Plugin plugin) throws Exception {
26+
File configFile = new File(plugin.getDataFolder(), "config.yml");
27+
28+
if (configFile.exists()) {
29+
loadConfig(configFile);
30+
} else {
31+
try {
32+
InputStream in = plugin.getResourceAsStream("config.yml");
33+
Files.copy(in, configFile.toPath());
34+
loadConfig(configFile);
35+
} catch (IOException exception) {
36+
exception.printStackTrace();
37+
}
38+
}
39+
}
40+
41+
/**
42+
* Load the config from the plugin data folder
43+
*
44+
* @param configFile Path to the configuration file
45+
*/
46+
static void loadConfig(File configFile) throws IOException {
47+
Configuration config = ConfigurationProvider.getProvider(YamlConfiguration.class).load(configFile);
48+
49+
Arrays.asList(Config.class.getDeclaredFields()).forEach(field -> {
50+
try {
51+
field.setAccessible(true);
52+
field.set(Config.class, config.get(field.getName()));
53+
} catch (SecurityException | IllegalArgumentException | IllegalAccessException exception) {
54+
exception.printStackTrace();
55+
}
56+
});
57+
}
58+
}
Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
package de.deeprobin.playerlist;
2+
3+
import de.deeprobin.playerlist.listener.ServerListListener;
4+
import net.md_5.bungee.api.ChatColor;
5+
import net.md_5.bungee.api.plugin.Plugin;
6+
7+
import java.io.File;
8+
9+
public final class Main extends Plugin {
10+
@Override
11+
public void onEnable() {
12+
super.onEnable();
13+
14+
String folder = getDataFolder().getPath();
15+
16+
// Create path directories if not existent
17+
//noinspection ResultOfMethodCallIgnored
18+
new File(folder).mkdirs();
19+
20+
// Config
21+
try {
22+
Config.getConfig(this);
23+
} catch (Exception e) {
24+
e.printStackTrace();
25+
onDisable();
26+
return;
27+
}
28+
29+
// register the listener
30+
this.getProxy().getPluginManager().registerListener(this, new ServerListListener(this));
31+
32+
// Some output to the console ;)
33+
log("§3Version Name: §r" + ChatColor.translateAlternateColorCodes('&', Config.versionName));
34+
log("§3Version Minimum Protocol: §r" + Config.versionMinProtocol);
35+
log("§3Set Hover Info: §r" + Config.setHoverInfo);
36+
}
37+
38+
@Override
39+
public void onDisable() {
40+
super.onDisable();
41+
42+
getProxy().getPluginManager().unregisterListeners(this);
43+
}
44+
45+
public void log(String message) {
46+
getLogger().info("§e" + message + "§r");
47+
}
48+
}
Lines changed: 18 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,37 @@
11
package de.deeprobin.playerlist.listener;
22

3-
import de.deeprobin.playerlist.BungeePlugin;
3+
import de.deeprobin.playerlist.Config;
4+
import de.deeprobin.playerlist.Main;
45
import net.md_5.bungee.api.ServerPing;
56
import net.md_5.bungee.api.event.ProxyPingEvent;
67
import net.md_5.bungee.api.plugin.Listener;
78
import net.md_5.bungee.event.EventHandler;
89

910
public final class ServerListListener implements Listener {
1011

11-
private final transient BungeePlugin plugin;
12+
private final transient Main plugin;
1213

13-
public ServerListListener(BungeePlugin plugin) {
14+
public ServerListListener(Main plugin) {
1415
this.plugin = plugin;
1516
}
1617

1718
@EventHandler
1819
public void handlePing(final ProxyPingEvent event) {
1920
final ServerPing response = event.getResponse();
20-
final ServerPing.Players players = response.getPlayers();
21-
final ServerPing.PlayerInfo[] playerInfo = this.plugin.getProxy().getPlayers().stream().map(player -> new ServerPing.PlayerInfo(player.getName(), player.getUniqueId())).toArray(ServerPing.PlayerInfo[]::new);
22-
players.setSample(playerInfo);
23-
response.setPlayers(players);
21+
22+
// Version
23+
ServerPing.Protocol version = response.getVersion();
24+
version.setName(Config.versionName);
25+
if (version.getProtocol() < Config.versionMinProtocol) version.setProtocol(Config.versionMinProtocol);
26+
response.setVersion(version);
27+
28+
// Server info player list
29+
if (Config.setHoverInfo) {
30+
final ServerPing.Players players = response.getPlayers();
31+
final ServerPing.PlayerInfo[] playerHoverInfo = this.plugin.getProxy().getPlayers().stream().map(player -> new ServerPing.PlayerInfo(player.getName(), player.getUniqueId())).toArray(ServerPing.PlayerInfo[]::new);
32+
players.setSample(playerHoverInfo);
33+
}
34+
2435
event.setResponse(response);
2536
}
26-
2737
}

src/main/resources/bungee.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,4 +2,4 @@ name: PlayerList
22
description: "A bungee cord plugin for the hover player list in the server list"
33
author: DeepRobin
44
version: ${version}
5-
main: de.deeprobin.playerlist.BungeePlugin
5+
main: de.deeprobin.playerlist.Main

src/main/resources/config.yml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
# ServerList V${project.version}
2+
versionName: "ZeroPaper 1.12.2+"
3+
versionMinProtocol: 340 # 1.12.2
4+
setHoverInfo: true

0 commit comments

Comments
 (0)