Rename Paper module, replace dump and update message sending with adventure components

This commit is contained in:
Nassim Jahnke committed 2024-08-26 22:56:07 +02:00
1 parent 7a9e8676d9
commit 2457cdff71
25 files changed
+134 -220

No files matched your search

+1 -1
View File
@@ -4,7 +4,7 @@
[![Crowdin](https://badges.crowdin.net/maintenance/localized.svg)](https://crowdin.com/project/maintenance)
[![Discord](https://img.shields.io/discord/489135856284729384.svg?label=Discord&logo=discord&logoColor=fff)](https://discord.gg/vGCUzHq)
Maintenance is the most customizable free maintenance plugin for your Minecraft server you can find. It runs on Spigot, BungeeCord, Sponge, as well as Velocity.
Maintenance is the most customizable free maintenance plugin for your Minecraft server you can find. It runs on Paper (also Spigot, but with limited functionality), BungeeCord, Sponge, as well as Velocity.
Its features include:
* A custom motd as well as server icon, that will be shown during maintenance
+1 -1
View File
@@ -12,7 +12,7 @@ allprojects {
}
val platforms = setOf(
projects.maintenanceSpigot,
projects.maintenancePaper,
projects.maintenanceBungee,
projects.maintenanceSponge,
projects.maintenanceVelocity
@@ -38,22 +38,6 @@ import eu.kennytv.maintenance.core.util.ServerType;
import eu.kennytv.maintenance.core.util.Task;
import eu.kennytv.maintenance.lib.kyori.adventure.platform.bungeecord.BungeeAudiences;
import eu.kennytv.maintenance.lib.kyori.adventure.text.Component;
import net.md_5.bungee.api.CommandSender;
import net.md_5.bungee.api.Favicon;
import net.md_5.bungee.api.ProxyServer;
import net.md_5.bungee.api.chat.ClickEvent;
import net.md_5.bungee.api.chat.ComponentBuilder;
import net.md_5.bungee.api.chat.HoverEvent;
import net.md_5.bungee.api.chat.TextComponent;
import net.md_5.bungee.api.chat.hover.content.Text;
import net.md_5.bungee.api.config.ServerInfo;
import net.md_5.bungee.api.connection.ProxiedPlayer;
import net.md_5.bungee.api.plugin.Plugin;
import net.md_5.bungee.api.plugin.PluginManager;
import org.bstats.bungeecord.Metrics;
import org.jetbrains.annotations.Nullable;
import javax.imageio.ImageIO;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
@@ -65,6 +49,16 @@ import java.util.concurrent.CompletableFuture;
import java.util.concurrent.TimeUnit;
import java.util.logging.Logger;
import java.util.stream.Collectors;
import javax.imageio.ImageIO;
import net.md_5.bungee.api.CommandSender;
import net.md_5.bungee.api.Favicon;
import net.md_5.bungee.api.ProxyServer;
import net.md_5.bungee.api.config.ServerInfo;
import net.md_5.bungee.api.connection.ProxiedPlayer;
import net.md_5.bungee.api.plugin.Plugin;
import net.md_5.bungee.api.plugin.PluginManager;
import org.bstats.bungeecord.Metrics;
import org.jetbrains.annotations.Nullable;
public final class MaintenanceBungeePlugin extends MaintenanceProxyPlugin {
private final MaintenanceBungeeBase plugin;
@@ -108,18 +102,6 @@ public final class MaintenanceBungeePlugin extends MaintenanceProxyPlugin {
}
}
@Override
public void sendUpdateNotification(final SenderInfo sender) {
final TextComponent tc1 = new TextComponent(TextComponent.fromLegacyText(getPrefix()));
final TextComponent tc2 = new TextComponent(TextComponent.fromLegacyText("§cDownload it at: §6" + HANGAR_URL));
final TextComponent click = new TextComponent(TextComponent.fromLegacyText(" §7§l§o(CLICK ME)"));
click.setClickEvent(new ClickEvent(ClickEvent.Action.OPEN_URL, HANGAR_URL));
click.setHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, new Text(new ComponentBuilder("§aDownload the latest version").create())));
tc1.addExtra(tc2);
tc1.addExtra(click);
((BungeeSenderInfo) sender).sendMessage(tc1);
}
public boolean isMaintenance(final ServerInfo serverInfo) {
return settingsProxy.isMaintenance(serverInfo.getName());
}
@@ -22,16 +22,15 @@ import eu.kennytv.maintenance.bungee.util.BungeeSenderInfo;
import eu.kennytv.maintenance.core.proxy.SettingsProxy;
import eu.kennytv.maintenance.core.proxy.command.MaintenanceProxyCommand;
import eu.kennytv.maintenance.core.util.SenderInfo;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import net.md_5.bungee.api.chat.ClickEvent;
import net.md_5.bungee.api.chat.HoverEvent;
import net.md_5.bungee.api.chat.TextComponent;
import net.md_5.bungee.api.config.ServerInfo;
import net.md_5.bungee.api.connection.ProxiedPlayer;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
public final class MaintenanceBungeeCommand extends MaintenanceProxyCommand {
private final MaintenanceBungeePlugin plugin;
@@ -62,15 +61,6 @@ public final class MaintenanceBungeeCommand extends MaintenanceProxyCommand {
return list;
}
@Override
public void sendDumpMessage(final SenderInfo sender, final String url) {
final BungeeSenderInfo bungeeSender = ((BungeeSenderInfo) sender);
final TextComponent clickText = new TextComponent(plugin.getPrefix() + "§7Click here to copy the link");
clickText.setClickEvent(new ClickEvent(ClickEvent.Action.SUGGEST_COMMAND, url));
clickText.setHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, TextComponent.fromLegacyText("§aClick here to copy the link")));
bungeeSender.sendMessage(clickText);
}
@Override
public List<String> getPlayersCompletion() {
final List<String> list = new ArrayList<>();
@@ -37,8 +37,11 @@ import eu.kennytv.maintenance.core.util.ServerType;
import eu.kennytv.maintenance.core.util.Task;
import eu.kennytv.maintenance.core.util.Version;
import eu.kennytv.maintenance.lib.kyori.adventure.text.Component;
import org.jetbrains.annotations.Nullable;
import eu.kennytv.maintenance.lib.kyori.adventure.text.TextComponent;
import eu.kennytv.maintenance.lib.kyori.adventure.text.event.ClickEvent;
import eu.kennytv.maintenance.lib.kyori.adventure.text.event.HoverEvent;
import eu.kennytv.maintenance.lib.kyori.adventure.text.format.NamedTextColor;
import eu.kennytv.maintenance.lib.kyori.adventure.text.format.TextDecoration;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.BufferedReader;
@@ -61,6 +64,7 @@ import java.util.concurrent.CompletableFuture;
import java.util.concurrent.TimeUnit;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.jetbrains.annotations.Nullable;
public abstract class MaintenancePlugin implements Maintenance {
public static final Gson GSON = new GsonBuilder().create();
@@ -71,7 +75,8 @@ public abstract class MaintenancePlugin implements Maintenance {
protected ServerListPlusHook serverListPlusHook;
protected MaintenanceRunnable runnable;
protected MaintenanceCommand commandManager;
private final String prefix;
private final Component prefix;
private final String legacyPrefix;
private final ServerType serverType;
private Version newestVersion;
private boolean debug;
@@ -79,7 +84,13 @@ public abstract class MaintenancePlugin implements Maintenance {
protected MaintenancePlugin(final String version, final ServerType serverType) {
this.version = new Version(version);
this.serverType = serverType;
this.prefix = "§8[§eMaintenance" + serverType + "§8] ";
this.legacyPrefix = "§8[§eMaintenance" + serverType + "§8] ";
this.prefix = Component.text()
.append(Component.text().content("[").color(NamedTextColor.DARK_GRAY))
.append(Component.text().content("Maintenance").color(NamedTextColor.YELLOW))
.append(Component.text().content("]").color(NamedTextColor.DARK_GRAY))
.append(Component.text(" "))
.build();
this.eventManager = new eu.kennytv.maintenance.core.event.EventManager();
MaintenanceProvider.setMaintenance(this);
}
@@ -406,7 +417,12 @@ public abstract class MaintenancePlugin implements Maintenance {
return newestVersion;
}
@Deprecated
public String getPrefix() {
return legacyPrefix;
}
public Component prefix() {
return prefix;
}
@@ -436,7 +452,15 @@ public abstract class MaintenancePlugin implements Maintenance {
public abstract void broadcast(Component component);
public abstract void sendUpdateNotification(SenderInfo sender);
public void sendUpdateNotification(final SenderInfo sender) {
final TextComponent text = Component.text().content("Download it at: ").color(NamedTextColor.RED)
.append(Component.text().content(HANGAR_URL).color(NamedTextColor.GOLD))
.append(Component.text().content(" (CLICK ME)").color(NamedTextColor.GRAY).decorate(TextDecoration.BOLD))
.clickEvent(ClickEvent.clickEvent(ClickEvent.Action.OPEN_URL, HANGAR_URL))
.hoverEvent(HoverEvent.showText(Component.text("Download the latest version").color(NamedTextColor.GREEN)))
.build();
sender.send(Component.text().append(this.prefix).append(text).build());
}
public abstract Task startMaintenanceRunnable(Runnable runnable);
@@ -36,6 +36,11 @@ import eu.kennytv.maintenance.core.command.subcommand.WhitelistAddCommand;
import eu.kennytv.maintenance.core.command.subcommand.WhitelistCommand;
import eu.kennytv.maintenance.core.command.subcommand.WhitelistRemoveCommand;
import eu.kennytv.maintenance.core.util.SenderInfo;
import eu.kennytv.maintenance.lib.kyori.adventure.text.Component;
import eu.kennytv.maintenance.lib.kyori.adventure.text.TextComponent;
import eu.kennytv.maintenance.lib.kyori.adventure.text.event.ClickEvent;
import eu.kennytv.maintenance.lib.kyori.adventure.text.event.HoverEvent;
import eu.kennytv.maintenance.lib.kyori.adventure.text.format.NamedTextColor;
import java.util.ArrayList;
import java.util.Collections;
import java.util.LinkedHashMap;
@@ -162,8 +167,9 @@ public abstract class MaintenanceCommand {
sender.sendMessage(plugin.getPrefix() + "§cNewest version available: §aVersion " + plugin.getNewestVersion() + "§c, you're on §a" + plugin.getVersion());
sender.sendMessage(plugin.getPrefix() + "§c§lWARNING: §cYou will have to restart the server to prevent further issues and to complete the update! If you can't do that, don't update!");
sendUpdateMessage(sender);
} else
} else {
sender.sendMessage(plugin.getPrefix() + "§aYou already have the latest version of the plugin!");
}
}
protected void sendUpdateMessage(final SenderInfo sender) {
@@ -182,7 +188,13 @@ public abstract class MaintenanceCommand {
return null;
}
public abstract void sendDumpMessage(final SenderInfo sender, final String url);
public void sendDumpMessage(final SenderInfo sender, final String url) {
final TextComponent text = Component.text().content("Click here to copy the link").color(NamedTextColor.GRAY)
.clickEvent(ClickEvent.clickEvent(ClickEvent.Action.SUGGEST_COMMAND, url))
.hoverEvent(HoverEvent.showText(Component.text("Click here to copy the link").color(NamedTextColor.GREEN)))
.build();
sender.send(Component.text().append(plugin.prefix()).append(text).build());
}
public List<CommandInfo> getCommands() {
return commands;
File renamed without changes.
@@ -15,7 +15,7 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package eu.kennytv.maintenance.spigot;
package eu.kennytv.maintenance.paper;
import eu.kennytv.maintenance.api.Maintenance;
import eu.kennytv.maintenance.core.MaintenanceBase;
@@ -24,12 +24,12 @@ import org.bukkit.plugin.java.JavaPlugin;
import java.io.File;
public final class MaintenanceSpigotBase extends JavaPlugin implements MaintenanceBase {
public final class MaintenancePaperBase extends JavaPlugin implements MaintenanceBase {
private MaintenancePlugin maintenance;
@Override
public void onEnable() {
maintenance = new MaintenanceSpigotPlugin(this);
maintenance = new MaintenancePaperPlugin(this);
}
@Override
@@ -15,7 +15,7 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package eu.kennytv.maintenance.spigot;
package eu.kennytv.maintenance.paper;
import eu.kennytv.maintenance.core.MaintenancePlugin;
import eu.kennytv.maintenance.core.Settings;
@@ -27,15 +27,14 @@ import eu.kennytv.maintenance.core.util.ServerType;
import eu.kennytv.maintenance.core.util.Task;
import eu.kennytv.maintenance.lib.kyori.adventure.platform.bukkit.BukkitAudiences;
import eu.kennytv.maintenance.lib.kyori.adventure.text.Component;
import eu.kennytv.maintenance.spigot.command.MaintenanceSpigotCommand;
import eu.kennytv.maintenance.spigot.listener.PaperServerListPingListener;
import eu.kennytv.maintenance.spigot.listener.PlayerLoginListener;
import eu.kennytv.maintenance.spigot.listener.ServerInfoPacketListener;
import eu.kennytv.maintenance.spigot.listener.ServerListPingListener;
import eu.kennytv.maintenance.spigot.util.BukkitOfflinePlayerInfo;
import eu.kennytv.maintenance.spigot.util.BukkitSenderInfo;
import eu.kennytv.maintenance.spigot.util.BukkitTask;
import eu.kennytv.maintenance.spigot.util.ComponentUtil;
import eu.kennytv.maintenance.paper.command.MaintenancePaperCommand;
import eu.kennytv.maintenance.paper.listener.PaperServerListPingListener;
import eu.kennytv.maintenance.paper.listener.PlayerLoginListener;
import eu.kennytv.maintenance.paper.listener.ServerInfoPacketListener;
import eu.kennytv.maintenance.paper.listener.ServerListPingListener;
import eu.kennytv.maintenance.paper.util.BukkitOfflinePlayerInfo;
import eu.kennytv.maintenance.paper.util.BukkitTask;
import eu.kennytv.maintenance.paper.util.ComponentUtil;
import java.io.File;
import java.io.InputStream;
import java.util.Arrays;
@@ -45,10 +44,6 @@ import java.util.concurrent.CompletableFuture;
import java.util.logging.Logger;
import java.util.stream.Collectors;
import javax.imageio.ImageIO;
import net.md_5.bungee.api.chat.ClickEvent;
import net.md_5.bungee.api.chat.ComponentBuilder;
import net.md_5.bungee.api.chat.HoverEvent;
import net.md_5.bungee.api.chat.TextComponent;
import org.bstats.bukkit.Metrics;
import org.bukkit.OfflinePlayer;
import org.bukkit.Server;
@@ -59,13 +54,13 @@ import org.bukkit.plugin.PluginManager;
import org.bukkit.util.CachedServerIcon;
import org.jetbrains.annotations.Nullable;
public final class MaintenanceSpigotPlugin extends MaintenancePlugin {
public final class MaintenancePaperPlugin extends MaintenancePlugin {
private static final boolean FOLIA = hasClass("io.papermc.paper.threadedregions.RegionizedServer");
private final MaintenanceSpigotBase plugin;
private final MaintenancePaperBase plugin;
private final BukkitAudiences audiences;
private CachedServerIcon favicon;
MaintenanceSpigotPlugin(final MaintenanceSpigotBase plugin) {
MaintenancePaperPlugin(final MaintenancePaperBase plugin) {
super(plugin.getDescription().getVersion(), ServerType.SPIGOT);
this.plugin = plugin;
this.audiences = BukkitAudiences.create(plugin);
@@ -74,7 +69,7 @@ public final class MaintenanceSpigotPlugin extends MaintenancePlugin {
sendEnableMessage();
final MaintenanceSpigotCommand command = new MaintenanceSpigotCommand(this, settings);
final MaintenancePaperCommand command = new MaintenancePaperCommand(this, settings);
commandManager = command;
plugin.getCommand("maintenance").setExecutor(command);
@@ -171,18 +166,6 @@ public final class MaintenanceSpigotPlugin extends MaintenancePlugin {
audiences.all().sendMessage(component);
}
@Override
public void sendUpdateNotification(final SenderInfo sender) {
final TextComponent tc1 = new TextComponent(TextComponent.fromLegacyText(getPrefix()));
final TextComponent tc2 = new TextComponent(TextComponent.fromLegacyText("§cDownload it at: §6" + HANGAR_URL));
final TextComponent click = new TextComponent(TextComponent.fromLegacyText(" §7§l§o(CLICK ME)"));
click.setClickEvent(new ClickEvent(ClickEvent.Action.OPEN_URL, HANGAR_URL));
click.setHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, new ComponentBuilder("§aDownload the latest version").create()));
tc1.addExtra(tc2);
tc1.addExtra(click);
((BukkitSenderInfo) sender).sendMessage(tc1, getPrefix() + "§cDownload it at: §6" + HANGAR_URL);
}
@Override
protected void kickPlayers() {
for (final Player p : getServer().getOnlinePlayers()) {
@@ -15,26 +15,21 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package eu.kennytv.maintenance.spigot.command;
package eu.kennytv.maintenance.paper.command;
import eu.kennytv.maintenance.core.Settings;
import eu.kennytv.maintenance.core.command.MaintenanceCommand;
import eu.kennytv.maintenance.core.util.SenderInfo;
import eu.kennytv.maintenance.spigot.MaintenanceSpigotPlugin;
import eu.kennytv.maintenance.spigot.util.BukkitSenderInfo;
import net.md_5.bungee.api.chat.ClickEvent;
import net.md_5.bungee.api.chat.HoverEvent;
import net.md_5.bungee.api.chat.TextComponent;
import eu.kennytv.maintenance.paper.MaintenancePaperPlugin;
import eu.kennytv.maintenance.paper.util.BukkitSenderInfo;
import java.util.List;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.command.TabCompleter;
import java.util.List;
public final class MaintenancePaperCommand extends MaintenanceCommand implements CommandExecutor, TabCompleter {
public final class MaintenanceSpigotCommand extends MaintenanceCommand implements CommandExecutor, TabCompleter {
public MaintenanceSpigotCommand(final MaintenanceSpigotPlugin plugin, final Settings settings) {
public MaintenancePaperCommand(final MaintenancePaperPlugin plugin, final Settings settings) {
super(plugin, settings);
registerCommands();
}
@@ -49,12 +44,4 @@ public final class MaintenanceSpigotCommand extends MaintenanceCommand implement
public List<String> onTabComplete(final CommandSender sender, final Command command, final String alias, final String[] args) {
return getSuggestions(new BukkitSenderInfo(sender), args);
}
@Override
public void sendDumpMessage(final SenderInfo sender, final String url) {
final TextComponent clickText = new TextComponent(plugin.getPrefix() + "§7Click here to copy the link)");
clickText.setClickEvent(new ClickEvent(ClickEvent.Action.SUGGEST_COMMAND, url));
clickText.setHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, TextComponent.fromLegacyText("§aClick here to copy the link")));
((BukkitSenderInfo) sender).sendMessage(clickText, null);
}
}
@@ -15,15 +15,15 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package eu.kennytv.maintenance.spigot.listener;
package eu.kennytv.maintenance.paper.listener;
import com.destroystokyo.paper.event.server.PaperServerListPingEvent;
import com.destroystokyo.paper.profile.PlayerProfile;
import com.destroystokyo.paper.profile.ProfileProperty;
import com.mojang.authlib.GameProfile;
import eu.kennytv.maintenance.core.Settings;
import eu.kennytv.maintenance.spigot.MaintenanceSpigotPlugin;
import eu.kennytv.maintenance.spigot.util.ComponentUtil;
import eu.kennytv.maintenance.paper.MaintenancePaperPlugin;
import eu.kennytv.maintenance.paper.util.ComponentUtil;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
@@ -36,10 +36,10 @@ import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener;
public final class PaperServerListPingListener implements Listener {
private final MaintenanceSpigotPlugin plugin;
private final MaintenancePaperPlugin plugin;
private final Settings settings;
public PaperServerListPingListener(final MaintenanceSpigotPlugin plugin, final Settings settings) {
public PaperServerListPingListener(final MaintenancePaperPlugin plugin, final Settings settings) {
this.plugin = plugin;
this.settings = settings;
}
@@ -15,22 +15,22 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package eu.kennytv.maintenance.spigot.listener;
package eu.kennytv.maintenance.paper.listener;
import eu.kennytv.maintenance.core.Settings;
import eu.kennytv.maintenance.core.listener.JoinListenerBase;
import eu.kennytv.maintenance.spigot.MaintenanceSpigotPlugin;
import eu.kennytv.maintenance.spigot.util.BukkitSenderInfo;
import eu.kennytv.maintenance.spigot.util.ComponentUtil;
import eu.kennytv.maintenance.paper.MaintenancePaperPlugin;
import eu.kennytv.maintenance.paper.util.BukkitSenderInfo;
import eu.kennytv.maintenance.paper.util.ComponentUtil;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerLoginEvent;
public final class PlayerLoginListener extends JoinListenerBase implements Listener {
private final MaintenanceSpigotPlugin plugin;
private final MaintenancePaperPlugin plugin;
public PlayerLoginListener(final MaintenanceSpigotPlugin plugin, final Settings settings) {
public PlayerLoginListener(final MaintenancePaperPlugin plugin, final Settings settings) {
super(plugin, settings);
this.plugin = plugin;
}
@@ -15,7 +15,7 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package eu.kennytv.maintenance.spigot.listener;
package eu.kennytv.maintenance.paper.listener;
import com.comphenix.protocol.PacketType;
import com.comphenix.protocol.ProtocolLibrary;
@@ -25,9 +25,9 @@ import com.comphenix.protocol.events.PacketEvent;
import com.comphenix.protocol.wrappers.WrappedGameProfile;
import com.comphenix.protocol.wrappers.WrappedServerPing;
import eu.kennytv.maintenance.core.Settings;
import eu.kennytv.maintenance.spigot.MaintenanceSpigotBase;
import eu.kennytv.maintenance.spigot.MaintenanceSpigotPlugin;
import eu.kennytv.maintenance.spigot.util.ComponentUtil;
import eu.kennytv.maintenance.paper.MaintenancePaperBase;
import eu.kennytv.maintenance.paper.MaintenancePaperPlugin;
import eu.kennytv.maintenance.paper.util.ComponentUtil;
import java.util.ArrayList;
import java.util.List;
import java.util.UUID;
@@ -38,10 +38,10 @@ import org.bukkit.event.server.ServerListPingEvent;
public final class ServerInfoPacketListener extends PacketAdapter implements Listener {
private static final UUID ZERO_UUID = new UUID(0, 0);
private final MaintenanceSpigotPlugin plugin;
private final MaintenancePaperPlugin plugin;
private final Settings settings;
public ServerInfoPacketListener(final MaintenanceSpigotPlugin plugin, final MaintenanceSpigotBase base, final Settings settings) {
public ServerInfoPacketListener(final MaintenancePaperPlugin plugin, final MaintenancePaperBase base, final Settings settings) {
super(base, ListenerPriority.HIGHEST, PacketType.Status.Server.SERVER_INFO);
this.plugin = plugin;
this.settings = settings;
@@ -15,21 +15,21 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package eu.kennytv.maintenance.spigot.listener;
package eu.kennytv.maintenance.paper.listener;
import eu.kennytv.maintenance.core.Settings;
import eu.kennytv.maintenance.spigot.MaintenanceSpigotPlugin;
import eu.kennytv.maintenance.spigot.util.ComponentUtil;
import eu.kennytv.maintenance.paper.MaintenancePaperPlugin;
import eu.kennytv.maintenance.paper.util.ComponentUtil;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener;
import org.bukkit.event.server.ServerListPingEvent;
public final class ServerListPingListener implements Listener {
private final MaintenanceSpigotPlugin plugin;
private final MaintenancePaperPlugin plugin;
private final Settings settings;
public ServerListPingListener(final MaintenanceSpigotPlugin plugin, final Settings settings) {
public ServerListPingListener(final MaintenancePaperPlugin plugin, final Settings settings) {
this.plugin = plugin;
this.settings = settings;
}
@@ -15,7 +15,7 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package eu.kennytv.maintenance.spigot.util;
package eu.kennytv.maintenance.paper.util;
import eu.kennytv.maintenance.core.util.SenderInfo;
import eu.kennytv.maintenance.lib.kyori.adventure.text.Component;
@@ -15,19 +15,17 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package eu.kennytv.maintenance.spigot.util;
package eu.kennytv.maintenance.paper.util;
import eu.kennytv.maintenance.api.MaintenanceProvider;
import eu.kennytv.maintenance.core.util.SenderInfo;
import eu.kennytv.maintenance.lib.kyori.adventure.text.Component;
import eu.kennytv.maintenance.spigot.MaintenanceSpigotPlugin;
import net.md_5.bungee.api.chat.TextComponent;
import eu.kennytv.maintenance.paper.MaintenancePaperPlugin;
import java.util.UUID;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Entity;
import org.bukkit.entity.Player;
import java.util.UUID;
public final class BukkitSenderInfo implements SenderInfo {
private final CommandSender sender;
@@ -57,21 +55,11 @@ public final class BukkitSenderInfo implements SenderInfo {
@Override
public void send(final Component component) {
((MaintenanceSpigotPlugin) MaintenanceProvider.get()).audiences().sender(sender).sendMessage(component);
((MaintenancePaperPlugin) MaintenanceProvider.get()).audiences().sender(sender).sendMessage(component);
}
@Override
public boolean isPlayer() {
return sender instanceof Player;
}
public void sendMessage(final TextComponent textComponent, final String backup) {
try {
sender.spigot().sendMessage(textComponent);
} catch (final NoSuchMethodError ignored) {
if (backup != null) {
sender.sendMessage(backup);
}
}
}
}
@@ -15,7 +15,7 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package eu.kennytv.maintenance.spigot.util;
package eu.kennytv.maintenance.paper.util;
import eu.kennytv.maintenance.core.util.Task;
import org.bukkit.Bukkit;
@@ -15,7 +15,7 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package eu.kennytv.maintenance.spigot.util;
package eu.kennytv.maintenance.paper.util;
import com.google.gson.JsonElement;
import eu.kennytv.maintenance.lib.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer;
@@ -1,6 +1,6 @@
name: Maintenance
version: ${version}
main: eu.kennytv.maintenance.spigot.MaintenanceSpigotBase
main: eu.kennytv.maintenance.paper.MaintenancePaperBase
author: kennytv
description: ${description}
softdepend: [ProtocolLib, ServerListPlus, ProtocolSupport, LuckPerms]
+1 -1
View File
@@ -31,7 +31,7 @@ subproject("api")
subproject("api-proxy")
subproject("core")
subproject("core-proxy")
subproject("spigot")
subproject("paper")
subproject("sponge")
subproject("bungee")
subproject("velocity")
@@ -36,8 +36,17 @@ import eu.kennytv.maintenance.sponge.util.LoggerWrapper;
import eu.kennytv.maintenance.sponge.util.SpongePlayer;
import eu.kennytv.maintenance.sponge.util.SpongeTask;
import eu.kennytv.maintenance.sponge.util.SpongeUser;
import net.kyori.adventure.text.event.ClickEvent;
import net.kyori.adventure.text.event.HoverEvent;
import java.io.File;
import java.io.IOException;
import java.nio.file.Path;
import java.util.List;
import java.util.Optional;
import java.util.UUID;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.TimeUnit;
import java.util.logging.Logger;
import java.util.stream.Collectors;
import javax.imageio.ImageIO;
import net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer;
import org.bstats.sponge.Metrics;
import org.jetbrains.annotations.Nullable;
@@ -60,20 +69,6 @@ import org.spongepowered.plugin.builtin.jvm.Plugin;
import org.spongepowered.plugin.metadata.PluginMetadata;
import org.spongepowered.plugin.metadata.model.PluginContributor;
import javax.imageio.ImageIO;
import java.io.File;
import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URL;
import java.nio.file.Path;
import java.util.List;
import java.util.Optional;
import java.util.UUID;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.TimeUnit;
import java.util.logging.Logger;
import java.util.stream.Collectors;
@Plugin("maintenance")
public final class MaintenanceSpongePlugin extends MaintenancePlugin {
@@ -164,20 +159,6 @@ public final class MaintenanceSpongePlugin extends MaintenancePlugin {
game.server().sendMessage(ComponentUtil.toSponge(component));
}
@Override
public void sendUpdateNotification(final SenderInfo sender) {
try {
final net.kyori.adventure.text.Component component = net.kyori.adventure.text.Component.text().append(translate(getPrefix()))
.append(translate("§cDownload it at: §6" + HANGAR_URL))
.append(translate(" §7§l§o(CLICK ME)"))
.clickEvent(ClickEvent.openUrl(new URL(HANGAR_URL)))
.hoverEvent(HoverEvent.showText(translate("§7§l§o(CLICK ME)"))).build();
((SpongePlayer) sender).send(component);
} catch (final MalformedURLException e) {
e.printStackTrace();
}
}
@Override
public CompletableFuture<@Nullable SenderInfo> getOfflinePlayer(final String name) {
final Optional<ServerPlayer> player = game.server().player(name);
@@ -19,12 +19,13 @@ package eu.kennytv.maintenance.sponge.command;
import eu.kennytv.maintenance.core.Settings;
import eu.kennytv.maintenance.core.command.MaintenanceCommand;
import eu.kennytv.maintenance.core.util.SenderInfo;
import eu.kennytv.maintenance.sponge.MaintenanceSpongePlugin;
import eu.kennytv.maintenance.sponge.util.SpongeSenderInfo;
import java.util.ArrayList;
import java.util.List;
import java.util.Optional;
import java.util.stream.Collectors;
import net.kyori.adventure.text.Component;
import net.kyori.adventure.text.event.ClickEvent;
import net.kyori.adventure.text.event.HoverEvent;
import org.spongepowered.api.command.Command;
import org.spongepowered.api.command.CommandCause;
import org.spongepowered.api.command.CommandCompletion;
@@ -32,11 +33,6 @@ import org.spongepowered.api.command.CommandResult;
import org.spongepowered.api.command.parameter.ArgumentReader;
import org.spongepowered.api.entity.living.player.Player;
import java.util.ArrayList;
import java.util.List;
import java.util.Optional;
import java.util.stream.Collectors;
public final class MaintenanceSpongeCommand extends MaintenanceCommand implements Command.Raw {
private final MaintenanceSpongePlugin plugin;
private static final String[] EMPTY = new String[0];
@@ -86,13 +82,6 @@ public final class MaintenanceSpongeCommand extends MaintenanceCommand implement
return null;
}
@Override
public void sendDumpMessage(final SenderInfo sender, final String url) {
final SpongeSenderInfo spongeSender = ((SpongeSenderInfo) sender);
spongeSender.send(Component.text().append(plugin.translate(plugin.getPrefix() + "§7Click here to copy the link")).clickEvent(ClickEvent.suggestCommand(url))
.hoverEvent(HoverEvent.showText(plugin.translate("§aClick here to copy the link"))).build());
}
@Override
public List<String> getPlayersCompletion() {
final List<String> list = new ArrayList<>();
+1 -1
View File
@@ -6,7 +6,7 @@ plugins {
// Not actually universal:tm:
val platforms = setOf(
rootProject.projects.maintenanceSpigot,
rootProject.projects.maintenancePaper,
rootProject.projects.maintenanceBungee,
).map { it.dependencyProject }
@@ -57,17 +57,8 @@ import eu.kennytv.maintenance.velocity.util.LoggerWrapper;
import eu.kennytv.maintenance.velocity.util.VelocitySenderInfo;
import eu.kennytv.maintenance.velocity.util.VelocityServer;
import eu.kennytv.maintenance.velocity.util.VelocityTask;
import net.kyori.adventure.text.TextComponent;
import net.kyori.adventure.text.event.ClickEvent;
import net.kyori.adventure.text.event.HoverEvent;
import net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer;
import org.bstats.velocity.Metrics;
import org.jetbrains.annotations.Nullable;
import javax.imageio.ImageIO;
import java.io.File;
import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.nio.file.Path;
import java.util.List;
import java.util.Optional;
@@ -77,6 +68,11 @@ import java.util.concurrent.CompletableFuture;
import java.util.concurrent.TimeUnit;
import java.util.logging.Logger;
import java.util.stream.Collectors;
import javax.imageio.ImageIO;
import net.kyori.adventure.text.TextComponent;
import net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer;
import org.bstats.velocity.Metrics;
import org.jetbrains.annotations.Nullable;
@Plugin(id = "maintenance", name = "Maintenance", version = MaintenanceVersion.VERSION, authors = "kennytv",
description = "Enable maintenance mode with a custom maintenance motd and icon.", url = MaintenancePlugin.HANGAR_URL,
@@ -142,15 +138,6 @@ public final class MaintenanceVelocityPlugin extends MaintenanceProxyPlugin {
disable();
}
@Override
public void sendUpdateNotification(final SenderInfo sender) {
final TextComponent component = translate(getPrefix()).append(translate("§cDownload it at: §6" + HANGAR_URL));
final TextComponent clickText = translate(" §7§l§o(CLICK ME)")
.clickEvent(ClickEvent.openUrl(HANGAR_URL))
.hoverEvent(HoverEvent.showText(translate("§aDownload the latest version")));
((VelocitySenderInfo) sender).sendMessage(component.append(clickText));
}
public boolean isMaintenance(final RegisteredServer serverInfo) {
return settingsProxy.isMaintenance(serverInfo.getServerInfo().getName());
}
@@ -26,14 +26,13 @@ import eu.kennytv.maintenance.core.proxy.command.MaintenanceProxyCommand;
import eu.kennytv.maintenance.core.util.SenderInfo;
import eu.kennytv.maintenance.velocity.MaintenanceVelocityPlugin;
import eu.kennytv.maintenance.velocity.util.VelocitySenderInfo;
import java.util.ArrayList;
import java.util.List;
import net.kyori.adventure.text.Component;
import net.kyori.adventure.text.TextComponent;
import net.kyori.adventure.text.event.ClickEvent;
import net.kyori.adventure.text.event.HoverEvent;
import java.util.ArrayList;
import java.util.List;
public final class MaintenanceVelocityCommand extends MaintenanceProxyCommand implements SimpleCommand {
private final MaintenanceVelocityPlugin plugin;
@@ -68,14 +67,6 @@ public final class MaintenanceVelocityCommand extends MaintenanceProxyCommand im
((VelocitySenderInfo) sender).sendMessage(tc);
}
@Override
public void sendDumpMessage(final SenderInfo sender, final String url) {
final TextComponent clickText = Component.text("").append(plugin.translate(plugin.getPrefix() + "§7Click here to copy the link."))
.clickEvent(ClickEvent.suggestCommand(url))
.hoverEvent(HoverEvent.showText(plugin.translate("§aClick here to copy the link")));
((VelocitySenderInfo) sender).sendMessage(clickText);
}
@Override
public List<String> getServersCompletion(final String s) {
final List<String> list = new ArrayList<>();