mirror of
https://github.com/TotalFreedomMC/BukkitTelnet.git
synced 2024-06-25 23:41:01 +00:00
ZTC stuff
This commit is contained in:
parent
66124908d9
commit
541e9fdb84
14
pom.xml
14
pom.xml
|
@ -39,10 +39,9 @@
|
||||||
<id>spigot</id>
|
<id>spigot</id>
|
||||||
<url>https://hub.spigotmc.org/nexus/content/groups/public/</url>
|
<url>https://hub.spigotmc.org/nexus/content/groups/public/</url>
|
||||||
</repository>
|
</repository>
|
||||||
|
|
||||||
<repository>
|
<repository>
|
||||||
<id>maven-central</id>
|
<id>ess-repo</id>
|
||||||
<url>https://repo1.maven.org/maven2/</url>
|
<url>https://ci.ender.zone/plugin/repository/everything/</url>
|
||||||
</repository>
|
</repository>
|
||||||
</repositories>
|
</repositories>
|
||||||
|
|
||||||
|
@ -50,7 +49,7 @@
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.spigotmc</groupId>
|
<groupId>org.spigotmc</groupId>
|
||||||
<artifactId>spigot-api</artifactId>
|
<artifactId>spigot-api</artifactId>
|
||||||
<version>1.15.2-R0.1-SNAPSHOT</version>
|
<version>1.15-R0.1-SNAPSHOT</version>
|
||||||
<scope>compile</scope>
|
<scope>compile</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
|
@ -69,9 +68,10 @@
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>com.googlecode.json-simple</groupId>
|
<groupId>net.ess3</groupId>
|
||||||
<artifactId>json-simple</artifactId>
|
<artifactId>EssentialsX</artifactId>
|
||||||
<version>1.1.1</version>
|
<version>2.16.1</version>
|
||||||
|
<scope>provided</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,9 +1,12 @@
|
||||||
package me.totalfreedom.bukkittelnet;
|
package me.totalfreedom.bukkittelnet;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
import java.math.RoundingMode;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import me.totalfreedom.bukkittelnet.api.TelnetRequestDataTagsEvent;
|
import me.totalfreedom.bukkittelnet.api.TelnetRequestDataTagsEvent;
|
||||||
|
import me.totalfreedom.bukkittelnet.api.TelnetRequestUsageEvent;
|
||||||
import org.apache.commons.lang.StringUtils;
|
import org.apache.commons.lang.StringUtils;
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
|
@ -12,14 +15,18 @@ import org.bukkit.event.EventPriority;
|
||||||
import org.bukkit.event.Listener;
|
import org.bukkit.event.Listener;
|
||||||
import org.bukkit.event.player.PlayerJoinEvent;
|
import org.bukkit.event.player.PlayerJoinEvent;
|
||||||
import org.bukkit.event.player.PlayerQuitEvent;
|
import org.bukkit.event.player.PlayerQuitEvent;
|
||||||
|
import org.bukkit.plugin.Plugin;
|
||||||
import org.bukkit.scheduler.BukkitRunnable;
|
import org.bukkit.scheduler.BukkitRunnable;
|
||||||
import org.bukkit.scheduler.BukkitTask;
|
import org.bukkit.scheduler.BukkitTask;
|
||||||
import org.json.simple.JSONArray;
|
import org.json.simple.JSONArray;
|
||||||
import org.json.simple.JSONObject;
|
import org.json.simple.JSONObject;
|
||||||
|
import com.earth2me.essentials.Essentials;
|
||||||
|
|
||||||
public class PlayerEventListener implements Listener
|
public class PlayerEventListener implements Listener
|
||||||
{
|
{
|
||||||
|
|
||||||
|
private static Essentials essentials = null;
|
||||||
|
|
||||||
private final BukkitTelnet plugin;
|
private final BukkitTelnet plugin;
|
||||||
|
|
||||||
public PlayerEventListener(BukkitTelnet plugin)
|
public PlayerEventListener(BukkitTelnet plugin)
|
||||||
|
@ -39,6 +46,18 @@ public class PlayerEventListener implements Listener
|
||||||
triggerPlayerListUpdates();
|
triggerPlayerListUpdates();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static Essentials getEssentials()
|
||||||
|
{
|
||||||
|
Plugin ess = Bukkit.getPluginManager().getPlugin("Essentials");
|
||||||
|
if (ess instanceof Essentials)
|
||||||
|
{
|
||||||
|
essentials = (Essentials)ess;
|
||||||
|
return essentials;
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
private static BukkitTask updateTask = null;
|
private static BukkitTask updateTask = null;
|
||||||
|
|
||||||
public void triggerPlayerListUpdates()
|
public void triggerPlayerListUpdates()
|
||||||
|
@ -99,4 +118,58 @@ public class PlayerEventListener implements Listener
|
||||||
|
|
||||||
return response.toJSONString();
|
return response.toJSONString();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static BukkitTask usageUpdateTask = null;
|
||||||
|
|
||||||
|
// Just putting this stuff here
|
||||||
|
public void triggerUsageUpdates()
|
||||||
|
{
|
||||||
|
if (usageUpdateTask != null)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
usageUpdateTask= new BukkitRunnable()
|
||||||
|
{
|
||||||
|
@Override
|
||||||
|
public void run()
|
||||||
|
{
|
||||||
|
final SocketListener socketListener = plugin.telnet.getSocketListener();
|
||||||
|
if (socketListener != null)
|
||||||
|
{
|
||||||
|
final TelnetRequestUsageEvent event = new TelnetRequestUsageEvent();
|
||||||
|
Bukkit.getServer().getPluginManager().callEvent(event);
|
||||||
|
socketListener.triggerDataUsageUpdates(generateUsageStats());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}.runTaskTimer(plugin, 100L, 100L); // every 5 seconds
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@SuppressWarnings("unchecked")
|
||||||
|
private static String generateUsageStats()
|
||||||
|
{
|
||||||
|
if (essentials == null)
|
||||||
|
{
|
||||||
|
essentials = getEssentials();
|
||||||
|
}
|
||||||
|
|
||||||
|
final HashMap<String, String> info = new HashMap<>();
|
||||||
|
|
||||||
|
String cpuUsage = null;
|
||||||
|
String ramUsage = null;
|
||||||
|
String tps = null;
|
||||||
|
|
||||||
|
if (essentials != null)
|
||||||
|
{
|
||||||
|
tps = String.valueOf(String.valueOf(new BigDecimal(essentials.getTimer().getAverageTPS()).setScale(1, RoundingMode.CEILING)));
|
||||||
|
}
|
||||||
|
|
||||||
|
info.put("tps", tps);
|
||||||
|
|
||||||
|
final JSONObject data = new JSONObject();
|
||||||
|
data.putAll(info);
|
||||||
|
|
||||||
|
return data.toJSONString();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -131,6 +131,20 @@ public class SocketListener extends Thread
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void triggerDataUsageUpdates(final String usageData)
|
||||||
|
{
|
||||||
|
final Iterator<ClientSession> it = clientSessions.iterator();
|
||||||
|
|
||||||
|
while (it.hasNext())
|
||||||
|
{
|
||||||
|
final ClientSession session = it.next();
|
||||||
|
if (session != null)
|
||||||
|
{
|
||||||
|
session.syncUsageUpdate(usageData);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public void stopServer()
|
public void stopServer()
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
|
|
|
@ -0,0 +1,22 @@
|
||||||
|
package me.totalfreedom.bukkittelnet.api;
|
||||||
|
|
||||||
|
import org.bukkit.Bukkit;
|
||||||
|
import org.bukkit.event.Event;
|
||||||
|
import org.bukkit.event.HandlerList;
|
||||||
|
|
||||||
|
public class TelnetRequestUsageEvent extends Event
|
||||||
|
{
|
||||||
|
|
||||||
|
private static final HandlerList handlers = new HandlerList();
|
||||||
|
|
||||||
|
public TelnetRequestUsageEvent()
|
||||||
|
{
|
||||||
|
super(!Bukkit.getServer().isPrimaryThread());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public HandlerList getHandlers()
|
||||||
|
{
|
||||||
|
return handlers;
|
||||||
|
}
|
||||||
|
}
|
|
@ -39,7 +39,8 @@ public final class ClientSession extends Thread
|
||||||
private String username = "";
|
private String username = "";
|
||||||
private volatile boolean terminated = false;
|
private volatile boolean terminated = false;
|
||||||
private volatile boolean authenticated = false;
|
private volatile boolean authenticated = false;
|
||||||
private volatile boolean enhancedMode = false;
|
private boolean enhancedMode = false;
|
||||||
|
private boolean enhancedPlusMode = false;
|
||||||
|
|
||||||
public ClientSession(TelnetServer telnet, Socket clientSocket)
|
public ClientSession(TelnetServer telnet, Socket clientSocket)
|
||||||
{
|
{
|
||||||
|
@ -84,6 +85,8 @@ public final class ClientSession extends Thread
|
||||||
mainLoop();
|
mainLoop();
|
||||||
|
|
||||||
syncTerminateSession();
|
syncTerminateSession();
|
||||||
|
|
||||||
|
telnet.getPlugin().listener.triggerUsageUpdates();
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean syncIsAuthenticated()
|
public boolean syncIsAuthenticated()
|
||||||
|
@ -472,6 +475,11 @@ public final class ClientSession extends Thread
|
||||||
telnet.getPlugin().listener.triggerPlayerListUpdates();
|
telnet.getPlugin().listener.triggerPlayerListUpdates();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else if ("telnet.enhancedplus".equalsIgnoreCase(command))
|
||||||
|
{
|
||||||
|
enhancedPlusMode = !enhancedPlusMode;
|
||||||
|
writeLine((enhancedPlusMode ? "A" : "Dea") + "ctivated enhanced+ mode.");
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
writeLine("Invalid telnet command, use \"telnet.help\" to view help.");
|
writeLine("Invalid telnet command, use \"telnet.help\" to view help.");
|
||||||
|
@ -495,4 +503,22 @@ public final class ClientSession extends Thread
|
||||||
writeLine("playerList~" + playerListData);
|
writeLine("playerList~" + playerListData);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void syncUsageUpdate(String usageData)
|
||||||
|
{
|
||||||
|
if (!enhancedPlusMode)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
synchronized (clientSocket)
|
||||||
|
{
|
||||||
|
if (clientSocket.isClosed())
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
writeLine("usage~" + usageData);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue