Skip to content

Commit

Permalink
- add tab completor on spigot.
Browse files Browse the repository at this point in the history
- always downsample colors on old version servers which don't support sending rgb colors.
  • Loading branch information
jpenilla committed Aug 15, 2020
1 parent 84f6f2b commit 7258551
Show file tree
Hide file tree
Showing 6 changed files with 43 additions and 5 deletions.
2 changes: 1 addition & 1 deletion pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@

<groupId>xyz.jpenilla</groupId>
<artifactId>MiniMOTD</artifactId>
<version>1.1.6</version>
<version>1.1.7</version>
<packaging>jar</packaging>

<name>MiniMOTD</name>
Expand Down
14 changes: 13 additions & 1 deletion src/main/java/xyz/jpenilla/minimotd/spigot/MiniMOTD.java
Original file line number Diff line number Diff line change
Expand Up @@ -11,11 +11,18 @@ public final class MiniMOTD extends JavaPlugin {
@Getter private SpigotConfig cfg;
@Getter private PrismaHook prisma;
@Getter private boolean isPaperServer;
@Getter private String serverPackageName;
@Getter private String serverApiVersion;
@Getter private int majorMinecraftVersion;

@Override
public void onEnable() {
serverPackageName = this.getServer().getClass().getPackage().getName();
serverApiVersion = serverPackageName.substring(serverPackageName.lastIndexOf('.') + 1);
majorMinecraftVersion = Integer.parseInt(serverApiVersion.split("_")[1]);

try {
Class.forName("com.destroystokyo.paper.PaperConfig");
Class.forName("com.destroystokyo.paper.event.server.PaperServerListPingEvent");
isPaperServer = true;
} catch (ClassNotFoundException e) {
isPaperServer = false;
Expand All @@ -29,10 +36,15 @@ public void onEnable() {
getServer().getPluginManager().registerEvents(new PaperPingListener(this), this);
} else {
getServer().getPluginManager().registerEvents(new PingListener(this), this);
if (majorMinecraftVersion > 11) {
getLogger().info("This server is not using Paper, and therefore some features may be limited or disabled.");
getLogger().info("Get Paper from https://papermc.io/downloads");
}
}
final PluginCommand command = getCommand("minimotd");
if (command != null) {
command.setExecutor(new SpigotCommand(this));
command.setTabCompleter(new SpigotCommand(this));
}

Metrics metrics = new Metrics(this, 8132);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,12 +11,14 @@

public class PaperPingListener implements Listener {
private final SpigotConfig cfg;
private final MiniMOTD miniMOTD;
private final LegacyComponentSerializer serializer = LegacyComponentSerializer.builder().hexColors().useUnusualXRepeatedCharacterHexFormat().build();
private final MiniMessage miniMessage = MiniMessage.get();
private final LegacyComponentSerializer legacySerializer = LegacyComponentSerializer.builder().build();

public PaperPingListener(MiniMOTD miniMOTD) {
this.cfg = miniMOTD.getCfg();
this.miniMOTD = miniMOTD;
}

@EventHandler
Expand Down Expand Up @@ -47,7 +49,7 @@ public void onPing(PaperServerListPingEvent e) {

if (cfg.isMotdEnabled()) {
final Component motd = miniMessage.parse(cfg.getMOTD(onlinePlayers, maxPlayers));
if (e.getClient().getProtocolVersion() < 735) {
if (e.getClient().getProtocolVersion() < 735 || miniMOTD.getMajorMinecraftVersion() < 16) {
e.setMotd(legacySerializer.serialize(motd));
} else {
e.setMotd(serializer.serialize(motd));
Expand Down
9 changes: 8 additions & 1 deletion src/main/java/xyz/jpenilla/minimotd/spigot/PingListener.java
Original file line number Diff line number Diff line change
Expand Up @@ -8,11 +8,14 @@

public class PingListener implements Listener {
private final SpigotConfig cfg;
private final MiniMOTD miniMOTD;
private final LegacyComponentSerializer serializer = LegacyComponentSerializer.builder().hexColors().useUnusualXRepeatedCharacterHexFormat().build();
private final LegacyComponentSerializer legacySerializer = LegacyComponentSerializer.builder().build();
private final MiniMessage miniMessage = MiniMessage.get();

public PingListener(MiniMOTD miniMOTD) {
this.cfg = miniMOTD.getCfg();
this.miniMOTD = miniMOTD;
}

@EventHandler
Expand All @@ -24,7 +27,11 @@ public void onPing(ServerListPingEvent e) {
e.setMaxPlayers(maxPlayers);

if (cfg.isMotdEnabled()) {
e.setMotd(serializer.serialize(miniMessage.parse(cfg.getMOTD(onlinePlayers, maxPlayers))));
if (miniMOTD.getMajorMinecraftVersion() > 15) {
e.setMotd(serializer.serialize(miniMessage.parse(cfg.getMOTD(onlinePlayers, maxPlayers))));
} else {
e.setMotd(legacySerializer.serialize(miniMessage.parse(cfg.getMOTD(onlinePlayers, maxPlayers))));
}
}
}
}
18 changes: 17 additions & 1 deletion src/main/java/xyz/jpenilla/minimotd/spigot/SpigotCommand.java
Original file line number Diff line number Diff line change
@@ -1,17 +1,21 @@
package xyz.jpenilla.minimotd.spigot;

import com.google.common.collect.ImmutableList;
import lombok.NonNull;
import net.kyori.adventure.platform.bukkit.BukkitAudiences;
import net.kyori.adventure.text.minimessage.MiniMessage;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.command.TabCompleter;
import org.bukkit.entity.Player;
import org.bukkit.util.StringUtil;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

public class SpigotCommand implements CommandExecutor {
public class SpigotCommand implements CommandExecutor, TabCompleter {
private final MiniMOTD miniMOTD;
private final BukkitAudiences audience;
private final MiniMessage miniMessage;
Expand Down Expand Up @@ -95,4 +99,16 @@ private void send(@NonNull CommandSender sender, @NonNull List<String> messages)
send(sender, message);
}
}

private static final List<String> COMMANDS = ImmutableList.of("about", "reload", "help");

@Override
public List<String> onTabComplete(CommandSender sender, Command command, String alias, String[] args) {
final List<String> completions = new ArrayList<>();
if (args.length < 2 && sender.hasPermission("minimotd.admin")) {
StringUtil.copyPartialMatches(args[0], COMMANDS, completions);
Collections.sort(completions);
}
return completions;
}
}
1 change: 1 addition & 0 deletions src/main/resources/plugin.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ version: ${project.version}
main: xyz.jpenilla.minimotd.spigot.MiniMOTD
softdepend: [Prisma]
authors: [jmp]
api-version: 1.13
description: Set the server list MOTD using MiniMessage!
website: https://www.spigotmc.org/resources/minimotd.81254/
commands:
Expand Down

0 comments on commit 7258551

Please sign in to comment.