2016-02-29 20:48:17 +00:00
|
|
|
package me.totalfreedom.totalfreedommod.httpd.module;
|
2015-10-19 17:43:46 +00:00
|
|
|
|
2020-12-25 19:46:43 +00:00
|
|
|
import me.totalfreedom.totalfreedommod.admin.Admin;
|
2021-04-24 04:06:28 +00:00
|
|
|
import me.totalfreedom.totalfreedommod.admin.AdminList;
|
2019-09-08 22:18:33 +00:00
|
|
|
import me.totalfreedom.totalfreedommod.config.ConfigEntry;
|
2016-02-29 20:48:17 +00:00
|
|
|
import me.totalfreedom.totalfreedommod.httpd.NanoHTTPD;
|
2019-09-08 22:18:33 +00:00
|
|
|
import me.totalfreedom.totalfreedommod.util.FUtil;
|
2015-10-19 17:43:46 +00:00
|
|
|
import org.bukkit.Bukkit;
|
|
|
|
import org.bukkit.entity.Player;
|
2019-09-08 22:18:33 +00:00
|
|
|
import org.json.simple.JSONArray;
|
|
|
|
import org.json.simple.JSONObject;
|
2015-10-19 17:43:46 +00:00
|
|
|
|
2021-04-24 04:06:28 +00:00
|
|
|
import java.util.Collection;
|
|
|
|
|
2015-10-19 17:43:46 +00:00
|
|
|
public class Module_list extends HTTPDModule
|
|
|
|
{
|
2015-11-22 18:26:47 +00:00
|
|
|
|
2020-12-30 04:06:12 +00:00
|
|
|
public Module_list(NanoHTTPD.HTTPSession session)
|
2015-10-19 17:43:46 +00:00
|
|
|
{
|
2020-12-25 19:46:43 +00:00
|
|
|
super(session);
|
2015-10-19 17:43:46 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
2019-09-08 22:18:33 +00:00
|
|
|
public NanoHTTPD.Response getResponse()
|
2015-10-19 17:43:46 +00:00
|
|
|
{
|
2019-09-08 22:18:33 +00:00
|
|
|
if (params.get("json") != null && params.get("json").equals("true"))
|
|
|
|
{
|
|
|
|
final JSONObject responseObject = new JSONObject();
|
2020-12-16 22:46:27 +00:00
|
|
|
|
2020-12-16 22:37:14 +00:00
|
|
|
final JSONArray owners = new JSONArray();
|
|
|
|
final JSONArray executives = new JSONArray();
|
|
|
|
final JSONArray developers = new JSONArray();
|
|
|
|
final JSONArray senioradmins = new JSONArray();
|
|
|
|
final JSONArray admins = new JSONArray();
|
|
|
|
final JSONArray masterbuilders = new JSONArray();
|
2019-09-08 22:18:33 +00:00
|
|
|
final JSONArray operators = new JSONArray();
|
2020-12-16 22:37:14 +00:00
|
|
|
|
2019-09-08 22:18:33 +00:00
|
|
|
for (Player player : Bukkit.getOnlinePlayers())
|
|
|
|
{
|
2020-12-04 00:28:53 +00:00
|
|
|
if (plugin.al.isVanished(player.getName()))
|
2020-04-22 08:23:51 +00:00
|
|
|
{
|
|
|
|
continue;
|
|
|
|
}
|
|
|
|
|
2020-06-30 07:25:38 +00:00
|
|
|
if (plugin.pl.getData(player).isMasterBuilder())
|
2019-09-08 22:18:33 +00:00
|
|
|
{
|
|
|
|
masterbuilders.add(player.getName());
|
|
|
|
}
|
|
|
|
|
2020-12-16 22:46:27 +00:00
|
|
|
if (FUtil.DEVELOPER_NAMES.contains(player.getName()))
|
2019-09-08 22:18:33 +00:00
|
|
|
{
|
|
|
|
developers.add(player.getName());
|
|
|
|
}
|
2015-10-19 17:43:46 +00:00
|
|
|
|
2019-11-24 18:59:55 +00:00
|
|
|
if (ConfigEntry.SERVER_EXECUTIVES.getList().contains(player.getName()) && !FUtil.DEVELOPERS.contains(player.getName()))
|
2019-11-24 18:56:32 +00:00
|
|
|
{
|
2019-11-24 18:59:55 +00:00
|
|
|
executives.add(player.getName());
|
2019-11-24 18:56:32 +00:00
|
|
|
}
|
|
|
|
|
2019-11-13 02:50:53 +00:00
|
|
|
if (ConfigEntry.SERVER_OWNERS.getList().contains(player.getName()))
|
|
|
|
{
|
|
|
|
owners.add(player.getName());
|
|
|
|
}
|
|
|
|
|
2020-12-30 04:06:12 +00:00
|
|
|
if (!plugin.al.isAdmin(player) && hasSpecialTitle(player))
|
2019-09-08 22:18:33 +00:00
|
|
|
{
|
|
|
|
operators.add(player.getName());
|
|
|
|
}
|
2015-10-19 17:43:46 +00:00
|
|
|
|
2020-12-30 04:06:12 +00:00
|
|
|
if (hasSpecialTitle(player) && plugin.al.isAdmin(player) && !plugin.al.isVanished(player.getName()))
|
2019-09-08 22:18:33 +00:00
|
|
|
{
|
2020-12-04 00:28:53 +00:00
|
|
|
Admin admin = plugin.al.getAdmin(player);
|
|
|
|
switch (admin.getRank())
|
2019-09-08 22:18:33 +00:00
|
|
|
{
|
2020-09-28 03:17:01 +00:00
|
|
|
case ADMIN:
|
2021-06-17 02:36:29 +00:00
|
|
|
{
|
2020-08-15 22:42:46 +00:00
|
|
|
admins.add(player.getName());
|
2019-09-08 22:18:33 +00:00
|
|
|
break;
|
2021-06-17 02:36:29 +00:00
|
|
|
}
|
2020-09-28 02:51:15 +00:00
|
|
|
case SENIOR_ADMIN:
|
2021-06-17 02:36:29 +00:00
|
|
|
{
|
2020-09-28 02:51:15 +00:00
|
|
|
senioradmins.add(player.getName());
|
|
|
|
break;
|
2021-06-17 02:36:29 +00:00
|
|
|
}
|
|
|
|
default:
|
|
|
|
{
|
|
|
|
// Do nothing
|
|
|
|
break;
|
|
|
|
}
|
2019-09-08 22:18:33 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
2020-12-04 00:28:53 +00:00
|
|
|
|
2020-12-01 22:10:01 +00:00
|
|
|
// for future refernce - any multi-worded ranks are to be delimited by underscores in the json; eg. senior_admins
|
|
|
|
responseObject.put("owners", owners);
|
|
|
|
responseObject.put("executives", executives);
|
|
|
|
responseObject.put("developers", developers);
|
|
|
|
responseObject.put("senior_admins", senioradmins);
|
|
|
|
responseObject.put("admins", admins);
|
|
|
|
responseObject.put("master_builders", masterbuilders);
|
2019-09-08 22:18:33 +00:00
|
|
|
responseObject.put("operators", operators);
|
2021-05-22 14:40:55 +00:00
|
|
|
responseObject.put("online", FUtil.getFakePlayerCount());
|
2019-11-13 02:50:53 +00:00
|
|
|
responseObject.put("max", server.getMaxPlayers());
|
2019-09-08 22:18:33 +00:00
|
|
|
|
|
|
|
final NanoHTTPD.Response response = new NanoHTTPD.Response(NanoHTTPD.Response.Status.OK, NanoHTTPD.MIME_JSON, responseObject.toString());
|
|
|
|
response.addHeader("Access-Control-Allow-Origin", "*");
|
|
|
|
return response;
|
|
|
|
}
|
|
|
|
else
|
2015-10-19 17:43:46 +00:00
|
|
|
{
|
2019-09-08 22:18:33 +00:00
|
|
|
final StringBuilder body = new StringBuilder();
|
|
|
|
|
|
|
|
final Collection<? extends Player> onlinePlayers = Bukkit.getOnlinePlayers();
|
|
|
|
|
2021-05-01 13:58:03 +00:00
|
|
|
int count = onlinePlayers.size() - AdminList.vanished.size();
|
|
|
|
body.append("<p>There are ").append(count < 0 ? 0 : count).append("/")
|
2021-04-24 04:06:28 +00:00
|
|
|
.append(Bukkit.getMaxPlayers()).append(" players online:</p>\r\n");
|
2019-09-08 22:18:33 +00:00
|
|
|
|
|
|
|
body.append("<ul>\r\n");
|
|
|
|
|
|
|
|
for (Player player : onlinePlayers)
|
|
|
|
{
|
2020-12-04 00:28:53 +00:00
|
|
|
if (plugin.al.isVanished(player.getName()))
|
2020-04-22 08:23:51 +00:00
|
|
|
{
|
|
|
|
continue;
|
|
|
|
}
|
2019-09-08 22:18:33 +00:00
|
|
|
String tag = plugin.rm.getDisplay(player).getTag();
|
|
|
|
body.append("<li>").append(tag).append(player.getName()).append("</li>\r\n");
|
|
|
|
}
|
|
|
|
|
|
|
|
body.append("</ul>\r\n");
|
|
|
|
|
2020-12-30 04:06:12 +00:00
|
|
|
return new NanoHTTPD.Response(NanoHTTPD.Response.Status.OK, NanoHTTPD.MIME_HTML, body.toString());
|
2015-10-19 17:43:46 +00:00
|
|
|
}
|
2019-09-08 22:18:33 +00:00
|
|
|
}
|
2015-10-19 17:43:46 +00:00
|
|
|
|
2019-09-08 22:18:33 +00:00
|
|
|
public boolean hasSpecialTitle(Player player)
|
|
|
|
{
|
2020-12-30 04:06:12 +00:00
|
|
|
return !FUtil.DEVELOPERS.contains(player.getUniqueId().toString()) && !ConfigEntry.SERVER_EXECUTIVES.getList().contains(player.getName()) && !ConfigEntry.SERVER_OWNERS.getList().contains(player.getName());
|
2015-10-19 17:43:46 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public String getTitle()
|
|
|
|
{
|
2020-08-15 22:42:46 +00:00
|
|
|
return "TotalFreedom - Online Players";
|
2015-10-19 17:43:46 +00:00
|
|
|
}
|
2020-12-16 22:37:14 +00:00
|
|
|
}
|