80 lines
2.5 KiB
Java
80 lines
2.5 KiB
Java
package xyz.etztech.qol.listeners;
|
|
|
|
import org.apache.commons.lang.StringUtils;
|
|
import org.bukkit.Bukkit;
|
|
import org.bukkit.ChatColor;
|
|
import org.bukkit.event.EventHandler;
|
|
import org.bukkit.event.Listener;
|
|
import org.bukkit.event.server.ServerListPingEvent;
|
|
import org.bukkit.util.CachedServerIcon;
|
|
import xyz.etztech.qol.QoL;
|
|
|
|
import javax.imageio.ImageIO;
|
|
import java.awt.*;
|
|
import java.awt.image.BufferedImage;
|
|
import java.io.File;
|
|
import java.util.logging.Level;
|
|
|
|
public class ServerListPingListener implements Listener {
|
|
|
|
private QoL plugin;
|
|
|
|
public ServerListPingListener(QoL plugin) {
|
|
this.plugin = plugin;
|
|
}
|
|
|
|
@EventHandler
|
|
public void onPing(ServerListPingEvent event) {
|
|
// MAX PLAYERS
|
|
int max = plugin.getConfig().getInt("server-list.max");
|
|
if (event.getMaxPlayers() < max) {
|
|
Bukkit.getConsoleSender().sendMessage(ChatColor.RED + "Your server max players is lower than QoL! This can cause unintended behaviour.");
|
|
}
|
|
if (max > 0) {
|
|
event.setMaxPlayers(max);
|
|
}
|
|
|
|
// MOTD
|
|
String motd = plugin.getConfig().getString("server-list.motd");
|
|
if (StringUtils.isNotBlank(motd)) {
|
|
event.setMotd(motd);
|
|
}
|
|
|
|
// FAVICON
|
|
String path = plugin.getConfig().getString("server-list.favicon");
|
|
if (StringUtils.isNotBlank(path)) {
|
|
File file = new File(plugin.getDataFolder(), path);
|
|
try {
|
|
Image image = ImageIO.read(file);
|
|
ImageIO.setCacheDirectory(plugin.getDataFolder());
|
|
image = image.getScaledInstance(64, 64, Image.SCALE_DEFAULT);
|
|
CachedServerIcon favicon = Bukkit.loadServerIcon(toBufferedImage(image));
|
|
event.setServerIcon(favicon);
|
|
} catch (Exception ex) {
|
|
plugin.log("Could not load favicon from " + file.getAbsolutePath());
|
|
ex.printStackTrace();
|
|
}
|
|
}
|
|
}
|
|
|
|
private static BufferedImage toBufferedImage(Image img)
|
|
{
|
|
if (img instanceof BufferedImage)
|
|
{
|
|
return (BufferedImage) img;
|
|
}
|
|
|
|
// Create a buffered image with transparency
|
|
BufferedImage bimage = new BufferedImage(img.getWidth(null), img.getHeight(null), BufferedImage.TYPE_INT_ARGB);
|
|
|
|
// Draw the image on to the buffered image
|
|
Graphics2D bGr = bimage.createGraphics();
|
|
bGr.drawImage(img, 0, 0, null);
|
|
bGr.dispose();
|
|
|
|
// Return the buffered image
|
|
return bimage;
|
|
}
|
|
|
|
}
|