mirror of
https://github.com/craftycodie/OnlineModeFix.git
synced 2025-08-03 17:05:58 -04:00
Initial Plugin
This commit is contained in:
commit
f8832e82e3
26
.gitignore
vendored
Normal file
26
.gitignore
vendored
Normal file
@ -0,0 +1,26 @@
|
||||
# Compiled class file
|
||||
*.class
|
||||
|
||||
# Log file
|
||||
*.log
|
||||
|
||||
# BlueJ files
|
||||
*.ctxt
|
||||
|
||||
# Mobile Tools for Java (J2ME)
|
||||
.mtj.tmp/
|
||||
|
||||
# Package Files #
|
||||
*.jar
|
||||
*.war
|
||||
*.nar
|
||||
*.ear
|
||||
*.zip
|
||||
*.tar.gz
|
||||
*.rar
|
||||
|
||||
# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
|
||||
hs_err_pid*
|
||||
|
||||
|
||||
out/
|
9
.idea/artifacts/MineOnlineBroadcast_Bukkit.xml
generated
Normal file
9
.idea/artifacts/MineOnlineBroadcast_Bukkit.xml
generated
Normal file
@ -0,0 +1,9 @@
|
||||
<component name="ArtifactManager">
|
||||
<artifact type="jar" name="MineOnlineBroadcast-Bukkit">
|
||||
<output-path>$PROJECT_DIR$/out/artifacts/MineOnlineBroadcast_Bukkit</output-path>
|
||||
<root id="archive" name="MineOnlineBroadcast-Bukkit.jar">
|
||||
<element id="module-output" name="MineOnlineBroadcast-Bukkit" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/json.jar" path-in-jar="/" />
|
||||
</root>
|
||||
</artifact>
|
||||
</component>
|
4
.idea/encodings.xml
generated
Normal file
4
.idea/encodings.xml
generated
Normal file
@ -0,0 +1,4 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="Encoding" addBOMForNewFiles="with NO BOM" />
|
||||
</project>
|
11
.idea/libraries/craftbukkit.xml
generated
Normal file
11
.idea/libraries/craftbukkit.xml
generated
Normal file
@ -0,0 +1,11 @@
|
||||
<component name="libraryTable">
|
||||
<library name="craftbukkit">
|
||||
<CLASSES>
|
||||
<root url="jar://$PROJECT_DIR$/lib/craftbukkit1-7-3(1060).jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC />
|
||||
<SOURCES>
|
||||
<root url="jar://$PROJECT_DIR$/lib/craftbukkit1-7-3(1060).jar!/" />
|
||||
</SOURCES>
|
||||
</library>
|
||||
</component>
|
9
.idea/libraries/json.xml
generated
Normal file
9
.idea/libraries/json.xml
generated
Normal file
@ -0,0 +1,9 @@
|
||||
<component name="libraryTable">
|
||||
<library name="json">
|
||||
<CLASSES>
|
||||
<root url="jar://$PROJECT_DIR$/lib/json.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC />
|
||||
<SOURCES />
|
||||
</library>
|
||||
</component>
|
6
.idea/misc.xml
generated
Normal file
6
.idea/misc.xml
generated
Normal file
@ -0,0 +1,6 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="ProjectRootManager" version="2" languageLevel="JDK_1_8" default="true" project-jdk-name="1.8" project-jdk-type="JavaSDK">
|
||||
<output url="file://$PROJECT_DIR$/out" />
|
||||
</component>
|
||||
</project>
|
8
.idea/modules.xml
generated
Normal file
8
.idea/modules.xml
generated
Normal file
@ -0,0 +1,8 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="ProjectModuleManager">
|
||||
<modules>
|
||||
<module fileurl="file://$PROJECT_DIR$/MineOnlineBroadcast-Bukkit.iml" filepath="$PROJECT_DIR$/MineOnlineBroadcast-Bukkit.iml" />
|
||||
</modules>
|
||||
</component>
|
||||
</project>
|
263
.idea/workspace.xml
generated
Normal file
263
.idea/workspace.xml
generated
Normal file
@ -0,0 +1,263 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="ChangeListManager">
|
||||
<list default="true" id="e42abf2d-5ce3-4d3a-b3e0-db470c42f0ce" name="Default Changelist" comment="" />
|
||||
<ignored path="$PROJECT_DIR$/out/" />
|
||||
<option name="EXCLUDED_CONVERTED_TO_IGNORED" value="true" />
|
||||
<option name="SHOW_DIALOG" value="false" />
|
||||
<option name="HIGHLIGHT_CONFLICTS" value="true" />
|
||||
<option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
|
||||
<option name="LAST_RESOLUTION" value="IGNORE" />
|
||||
</component>
|
||||
<component name="FileEditorManager">
|
||||
<leaf>
|
||||
<file pinned="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/.gitignore">
|
||||
<provider selected="true" editor-type-id="text-editor" />
|
||||
</entry>
|
||||
</file>
|
||||
<file pinned="false" current-in-tab="true">
|
||||
<entry file="file://$PROJECT_DIR$/src/MineOnlineBroadcast.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="778">
|
||||
<caret line="162" column="86" lean-forward="true" selection-start-line="162" selection-start-column="86" selection-end-line="162" selection-end-column="86" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
</leaf>
|
||||
</component>
|
||||
<component name="FindInProjectRecents">
|
||||
<findStrings>
|
||||
<find>md5</find>
|
||||
</findStrings>
|
||||
</component>
|
||||
<component name="IdeDocumentHistory">
|
||||
<option name="CHANGED_PATHS">
|
||||
<list>
|
||||
<option value="$PROJECT_DIR$/src/MineOnlineBroadcast.java" />
|
||||
</list>
|
||||
</option>
|
||||
</component>
|
||||
<component name="ProjectFrameBounds" extendedState="6">
|
||||
<option name="x" value="248" />
|
||||
<option name="y" value="-14" />
|
||||
<option name="width" value="1294" />
|
||||
<option name="height" value="1417" />
|
||||
</component>
|
||||
<component name="ProjectView">
|
||||
<navigator proportions="" version="1">
|
||||
<foldersAlwaysOnTop value="true" />
|
||||
</navigator>
|
||||
<panes>
|
||||
<pane id="Scope" />
|
||||
<pane id="ProjectPane">
|
||||
<subPane>
|
||||
<expand>
|
||||
<path>
|
||||
<item name="MineOnlineBroadcast-Bukkit" type="b2602c69:ProjectViewProjectNode" />
|
||||
<item name="MineOnlineBroadcast-Bukkit" type="462c0819:PsiDirectoryNode" />
|
||||
</path>
|
||||
<path>
|
||||
<item name="MineOnlineBroadcast-Bukkit" type="b2602c69:ProjectViewProjectNode" />
|
||||
<item name="MineOnlineBroadcast-Bukkit" type="462c0819:PsiDirectoryNode" />
|
||||
<item name="lib" type="462c0819:PsiDirectoryNode" />
|
||||
</path>
|
||||
<path>
|
||||
<item name="MineOnlineBroadcast-Bukkit" type="b2602c69:ProjectViewProjectNode" />
|
||||
<item name="MineOnlineBroadcast-Bukkit" type="462c0819:PsiDirectoryNode" />
|
||||
<item name="src" type="462c0819:PsiDirectoryNode" />
|
||||
</path>
|
||||
</expand>
|
||||
<select />
|
||||
</subPane>
|
||||
</pane>
|
||||
<pane id="PackagesPane" />
|
||||
</panes>
|
||||
</component>
|
||||
<component name="PropertiesComponent">
|
||||
<property name="WebServerToolWindowFactoryState" value="false" />
|
||||
<property name="aspect.path.notification.shown" value="true" />
|
||||
<property name="com.android.tools.idea.instantapp.provision.ProvisionBeforeRunTaskProvider.myTimeStamp" value="1601520817191" />
|
||||
<property name="last_opened_file_path" value="$PROJECT_DIR$/lib/craftbukkit1-7-3(1060).jar!/" />
|
||||
<property name="nodejs_interpreter_path.stuck_in_default_project" value="undefined stuck path" />
|
||||
<property name="nodejs_npm_path_reset_for_default_project" value="true" />
|
||||
<property name="project.structure.last.edited" value="Artifacts" />
|
||||
<property name="project.structure.proportion" value="0.0" />
|
||||
<property name="project.structure.side.proportion" value="0.2" />
|
||||
</component>
|
||||
<component name="RecentsManager">
|
||||
<key name="CopyFile.RECENT_KEYS">
|
||||
<recent name="D:\Projects\GitHub\MineOnlineBroadcast-Bukkit\lib" />
|
||||
<recent name="D:\Projects\GitHub\MineOnlineBroadcast-Bukkit" />
|
||||
</key>
|
||||
</component>
|
||||
<component name="RunDashboard">
|
||||
<option name="ruleStates">
|
||||
<list>
|
||||
<RuleState>
|
||||
<option name="name" value="ConfigurationTypeDashboardGroupingRule" />
|
||||
</RuleState>
|
||||
<RuleState>
|
||||
<option name="name" value="StatusDashboardGroupingRule" />
|
||||
</RuleState>
|
||||
</list>
|
||||
</option>
|
||||
</component>
|
||||
<component name="SvnConfiguration">
|
||||
<configuration />
|
||||
</component>
|
||||
<component name="TaskManager">
|
||||
<task active="true" id="Default" summary="Default task">
|
||||
<changelist id="e42abf2d-5ce3-4d3a-b3e0-db470c42f0ce" name="Default Changelist" comment="" />
|
||||
<created>1601520627871</created>
|
||||
<option name="number" value="Default" />
|
||||
<option name="presentableId" value="Default" />
|
||||
<updated>1601520627871</updated>
|
||||
<workItem from="1601520632934" duration="175000" />
|
||||
</task>
|
||||
<servers />
|
||||
</component>
|
||||
<component name="TimeTrackingManager">
|
||||
<option name="totallyTimeSpent" value="175000" />
|
||||
</component>
|
||||
<component name="ToolWindowManager">
|
||||
<frame x="-8" y="-8" width="2576" height="1426" extended-state="6" />
|
||||
<editor active="true" />
|
||||
<layout>
|
||||
<window_info id="Image Layers" />
|
||||
<window_info id="Designer" />
|
||||
<window_info id="UI Designer" />
|
||||
<window_info id="Capture Tool" />
|
||||
<window_info id="Favorites" side_tool="true" />
|
||||
<window_info active="true" content_ui="combo" id="Project" order="0" visible="true" weight="0.25" />
|
||||
<window_info id="Structure" order="1" side_tool="true" weight="0.25" />
|
||||
<window_info anchor="bottom" id="Docker" show_stripe_button="false" />
|
||||
<window_info anchor="bottom" id="IntelliGuard" />
|
||||
<window_info anchor="bottom" id="Version Control" />
|
||||
<window_info anchor="bottom" id="Terminal" />
|
||||
<window_info anchor="bottom" id="Event Log" side_tool="true" />
|
||||
<window_info anchor="bottom" id="Database Changes" />
|
||||
<window_info anchor="bottom" id="Message" order="0" />
|
||||
<window_info anchor="bottom" id="Find" order="1" />
|
||||
<window_info anchor="bottom" id="Run" order="2" />
|
||||
<window_info anchor="bottom" id="Debug" order="3" weight="0.4" />
|
||||
<window_info anchor="bottom" id="Cvs" order="4" weight="0.25" />
|
||||
<window_info anchor="bottom" id="Inspection" order="5" weight="0.4" />
|
||||
<window_info anchor="bottom" id="TODO" order="6" />
|
||||
<window_info anchor="right" id="Palette" />
|
||||
<window_info anchor="right" id="Theme Preview" />
|
||||
<window_info anchor="right" id="Maven" />
|
||||
<window_info anchor="right" id="Capture Analysis" />
|
||||
<window_info anchor="right" id="Palette	" />
|
||||
<window_info anchor="right" id="Database" />
|
||||
<window_info anchor="right" id="Commander" internal_type="SLIDING" order="0" type="SLIDING" weight="0.4" />
|
||||
<window_info anchor="right" id="Ant Build" order="1" weight="0.25" />
|
||||
<window_info anchor="right" content_ui="combo" id="Hierarchy" order="2" weight="0.25" />
|
||||
</layout>
|
||||
</component>
|
||||
<component name="TypeScriptGeneratedFilesManager">
|
||||
<option name="version" value="1" />
|
||||
</component>
|
||||
<component name="editorHistoryManager">
|
||||
<entry file="file://$PROJECT_DIR$/.gitignore">
|
||||
<provider selected="true" editor-type-id="text-editor" />
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/src/MineOnlineBroadcast.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="778">
|
||||
<caret line="162" column="86" lean-forward="true" selection-start-line="162" selection-start-column="86" selection-end-line="162" selection-end-column="86" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</component>
|
||||
<component name="masterDetails">
|
||||
<states>
|
||||
<state key="ArtifactsStructureConfigurable.UI">
|
||||
<settings>
|
||||
<artifact-editor />
|
||||
<last-edited>MineOnlineBroadcast-Bukkit</last-edited>
|
||||
<splitter-proportions>
|
||||
<option name="proportions">
|
||||
<list>
|
||||
<option value="0.2" />
|
||||
<option value="0.5" />
|
||||
</list>
|
||||
</option>
|
||||
</splitter-proportions>
|
||||
</settings>
|
||||
</state>
|
||||
<state key="FacetStructureConfigurable.UI">
|
||||
<settings>
|
||||
<last-edited>No facets are configured</last-edited>
|
||||
<splitter-proportions>
|
||||
<option name="proportions">
|
||||
<list>
|
||||
<option value="0.2" />
|
||||
</list>
|
||||
</option>
|
||||
</splitter-proportions>
|
||||
</settings>
|
||||
</state>
|
||||
<state key="GlobalLibrariesConfigurable.UI">
|
||||
<settings>
|
||||
<splitter-proportions>
|
||||
<option name="proportions">
|
||||
<list>
|
||||
<option value="0.2" />
|
||||
</list>
|
||||
</option>
|
||||
</splitter-proportions>
|
||||
</settings>
|
||||
</state>
|
||||
<state key="JdkListConfigurable.UI">
|
||||
<settings>
|
||||
<last-edited>1.8</last-edited>
|
||||
<splitter-proportions>
|
||||
<option name="proportions">
|
||||
<list>
|
||||
<option value="0.2" />
|
||||
</list>
|
||||
</option>
|
||||
</splitter-proportions>
|
||||
</settings>
|
||||
</state>
|
||||
<state key="ModuleStructureConfigurable.UI">
|
||||
<settings>
|
||||
<last-edited>MineOnlineBroadcast-Bukkit</last-edited>
|
||||
<splitter-proportions>
|
||||
<option name="proportions">
|
||||
<list>
|
||||
<option value="0.2" />
|
||||
</list>
|
||||
</option>
|
||||
</splitter-proportions>
|
||||
</settings>
|
||||
</state>
|
||||
<state key="ProjectJDKs.UI">
|
||||
<settings>
|
||||
<last-edited>1.8</last-edited>
|
||||
<splitter-proportions>
|
||||
<option name="proportions">
|
||||
<list>
|
||||
<option value="0.2" />
|
||||
</list>
|
||||
</option>
|
||||
</splitter-proportions>
|
||||
</settings>
|
||||
</state>
|
||||
<state key="ProjectLibrariesConfigurable.UI">
|
||||
<settings>
|
||||
<last-edited>craftbukkit</last-edited>
|
||||
<splitter-proportions>
|
||||
<option name="proportions">
|
||||
<list>
|
||||
<option value="0.2" />
|
||||
</list>
|
||||
</option>
|
||||
</splitter-proportions>
|
||||
</settings>
|
||||
</state>
|
||||
</states>
|
||||
</component>
|
||||
</project>
|
13
MineOnlineBroadcast-Bukkit.iml
Normal file
13
MineOnlineBroadcast-Bukkit.iml
Normal file
@ -0,0 +1,13 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<module type="JAVA_MODULE" version="4">
|
||||
<component name="NewModuleRootManager" inherit-compiler-output="true">
|
||||
<exclude-output />
|
||||
<content url="file://$MODULE_DIR$">
|
||||
<sourceFolder url="file://$MODULE_DIR$/src" isTestSource="false" />
|
||||
</content>
|
||||
<orderEntry type="inheritedJdk" />
|
||||
<orderEntry type="sourceFolder" forTests="false" />
|
||||
<orderEntry type="library" name="json" level="project" />
|
||||
<orderEntry type="library" name="craftbukkit" level="project" />
|
||||
</component>
|
||||
</module>
|
216
src/MineOnlineBroadcast.java
Normal file
216
src/MineOnlineBroadcast.java
Normal file
@ -0,0 +1,216 @@
|
||||
import net.minecraft.server.PropertyManager;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.Event;
|
||||
import org.bukkit.plugin.java.JavaPlugin;
|
||||
import org.json.JSONObject;
|
||||
|
||||
import java.io.*;
|
||||
import java.net.HttpURLConnection;
|
||||
import java.net.URL;
|
||||
import java.nio.charset.StandardCharsets;
|
||||
import java.security.MessageDigest;
|
||||
import java.util.Arrays;
|
||||
import java.util.LinkedList;
|
||||
import java.util.logging.Logger;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
public class MineOnlineBroadcast extends JavaPlugin {
|
||||
Thread broadcastThread;
|
||||
public static long lastPing;
|
||||
MineOnlineBroadcastListener listener;
|
||||
Logger log;
|
||||
|
||||
public static String[] readUsersFile(String path) {
|
||||
try {
|
||||
File usersFile = new File(path);
|
||||
if (usersFile.exists()) {
|
||||
LinkedList list = new LinkedList();
|
||||
BufferedReader reader = new BufferedReader(new FileReader(usersFile));
|
||||
String line;
|
||||
while ((line = reader.readLine()) != null) {
|
||||
list.add(line);
|
||||
}
|
||||
reader.close();
|
||||
|
||||
return (String[])list.toArray(new String[0]);
|
||||
}
|
||||
} catch (IOException ex) {
|
||||
ex.printStackTrace();
|
||||
}
|
||||
|
||||
return new String[0];
|
||||
}
|
||||
|
||||
public static byte[] createChecksum(String filename) throws Exception {
|
||||
InputStream fis = new FileInputStream(filename);
|
||||
|
||||
byte[] buffer = new byte[1024];
|
||||
MessageDigest complete = MessageDigest.getInstance("MD5");
|
||||
int numRead;
|
||||
|
||||
do {
|
||||
numRead = fis.read(buffer);
|
||||
if (numRead > 0) {
|
||||
complete.update(buffer, 0, numRead);
|
||||
}
|
||||
} while (numRead != -1);
|
||||
|
||||
fis.close();
|
||||
return complete.digest();
|
||||
}
|
||||
|
||||
public static String listServer(
|
||||
String ip,
|
||||
String port,
|
||||
int users,
|
||||
int maxUsers,
|
||||
String name,
|
||||
boolean onlineMode,
|
||||
String md5,
|
||||
boolean whitelisted,
|
||||
String[] whitelistUsers,
|
||||
String[] whitelistIPs,
|
||||
String[] whitelistUUIDs,
|
||||
String[] bannedUsers,
|
||||
String[] bannedIPs,
|
||||
String[] bannedUUIDs,
|
||||
String owner,
|
||||
String[] playerNames
|
||||
) {
|
||||
HttpURLConnection connection = null;
|
||||
|
||||
try {
|
||||
JSONObject jsonObject = new JSONObject();
|
||||
if (ip != null)
|
||||
jsonObject.put("ip", ip);
|
||||
jsonObject.put("port", port);
|
||||
if (users > -1)
|
||||
jsonObject.put("users", users);
|
||||
jsonObject.put("max", maxUsers);
|
||||
jsonObject.put("name", name);
|
||||
jsonObject.put("onlinemode", onlineMode);
|
||||
jsonObject.put("md5", md5);
|
||||
jsonObject.put("whitelisted", whitelisted);
|
||||
jsonObject.put("whitelistUsers", whitelistUsers);
|
||||
jsonObject.put("whitelistIPs", whitelistIPs);
|
||||
jsonObject.put("whitelistUUIDs", whitelistUUIDs);
|
||||
jsonObject.put("bannedUsers", bannedUsers);
|
||||
jsonObject.put("bannedIPs", bannedIPs);
|
||||
jsonObject.put("bannedUUIDs", bannedUUIDs);
|
||||
if(owner != null)
|
||||
jsonObject.put("owner", owner);
|
||||
jsonObject.put("players", playerNames);
|
||||
|
||||
String json = jsonObject.toString();
|
||||
|
||||
URL url = new URL("http://mineonline.codie.gg/api/servers");
|
||||
connection = (HttpURLConnection) url.openConnection();
|
||||
connection.setRequestProperty("Content-Type", "application/json");
|
||||
connection.setRequestMethod("POST");
|
||||
connection.setDoInput(true);
|
||||
connection.setDoOutput(true);
|
||||
|
||||
connection.getOutputStream().write(json.getBytes(StandardCharsets.UTF_8));
|
||||
connection.getOutputStream().flush();
|
||||
connection.getOutputStream().close();
|
||||
|
||||
InputStream is = connection.getInputStream();
|
||||
BufferedReader rd = new BufferedReader(new InputStreamReader(is));
|
||||
|
||||
StringBuilder response = new StringBuilder();
|
||||
String line;
|
||||
while ((line = rd.readLine()) != null) {
|
||||
response.append(line);
|
||||
response.append('\r');
|
||||
}
|
||||
rd.close();
|
||||
|
||||
JSONObject resObject = new JSONObject(response.toString());
|
||||
return resObject.has("uuid") ? resObject.getString("uuid") : null;
|
||||
} catch (Exception e) {
|
||||
|
||||
e.printStackTrace();
|
||||
return null;
|
||||
} finally {
|
||||
|
||||
if (connection != null)
|
||||
connection.disconnect();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onEnable() {
|
||||
initialize();
|
||||
|
||||
this.log = Logger.getLogger("Minecraft");
|
||||
|
||||
this.log.info("Enabled MineOnlineBroadcast");
|
||||
|
||||
broadcastThread = new Thread(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
while(true) {
|
||||
if (System.currentTimeMillis() - MineOnlineBroadcast.lastPing > 45000) {
|
||||
lastPing = System.currentTimeMillis();
|
||||
PropertyManager propertiesFile = new PropertyManager(new File("server.properties"));
|
||||
|
||||
String ip = propertiesFile.getString("server-ip", null);
|
||||
String port = propertiesFile.getString("server-port", "25565");
|
||||
int users = Bukkit.getServer().getOnlinePlayers().length;
|
||||
int maxUsers = propertiesFile.getInt("max-players", 20);
|
||||
String name = propertiesFile.getString("server-name", "Minecraft Server");
|
||||
boolean onlineMode = true; // Assume Authme is in use for now.
|
||||
String md5 = propertiesFile.getString("version-md5", "");
|
||||
boolean whitelisted = propertiesFile.getBoolean("whitelist", false);
|
||||
String[] whitelistUsers = new String[0];
|
||||
|
||||
if(whitelisted) {
|
||||
whitelistUsers = readUsersFile("white-list.txt");
|
||||
}
|
||||
|
||||
String[] bannedUsers = readUsersFile("banned-players.txt");
|
||||
String[] bannedIPs = readUsersFile("banned-ips.txt");
|
||||
|
||||
String owner = null;
|
||||
String[] playerNames = Arrays.stream(Bukkit.getServer().getOnlinePlayers()).map(Player::getName).collect(Collectors.toList()).toArray(new String[users]);
|
||||
|
||||
listServer(
|
||||
ip,
|
||||
port,
|
||||
users,
|
||||
maxUsers,
|
||||
name,
|
||||
onlineMode,
|
||||
md5,
|
||||
whitelisted,
|
||||
whitelistUsers,
|
||||
new String[0],
|
||||
new String[0],
|
||||
bannedUsers,
|
||||
bannedIPs,
|
||||
new String[0],
|
||||
owner,
|
||||
playerNames
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
broadcastThread.start();
|
||||
}
|
||||
|
||||
public void initialize() {
|
||||
this.log = Logger.getLogger("Minecraft");
|
||||
this.listener = new MineOnlineBroadcastListener(this);
|
||||
this.getServer().getPluginManager().registerEvent(Event.Type.PLAYER_LOGIN, this.listener, Event.Priority.Lowest, this);
|
||||
this.getServer().getPluginManager().registerEvent(Event.Type.PLAYER_QUIT, this.listener, Event.Priority.Highest, this);
|
||||
this.getServer().getPluginManager().registerEvent(Event.Type.PLAYER_KICK, this.listener, Event.Priority.Highest, this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDisable() {
|
||||
broadcastThread.interrupt();
|
||||
}
|
||||
}
|
31
src/MineOnlineBroadcastListener.java
Normal file
31
src/MineOnlineBroadcastListener.java
Normal file
@ -0,0 +1,31 @@
|
||||
import org.bukkit.event.player.PlayerKickEvent;
|
||||
import org.bukkit.event.player.PlayerListener;
|
||||
import org.bukkit.event.player.PlayerLoginEvent;
|
||||
import org.bukkit.event.player.PlayerQuitEvent;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.logging.Logger;
|
||||
|
||||
public class MineOnlineBroadcastListener extends PlayerListener {
|
||||
private static ArrayList<String> PlayerList = new ArrayList();
|
||||
boolean _DEBUG = false;
|
||||
private Logger log;
|
||||
private MineOnlineBroadcast plugin = null;
|
||||
|
||||
public MineOnlineBroadcastListener(MineOnlineBroadcast parent) {
|
||||
this.plugin = parent;
|
||||
this.log = Logger.getLogger("Minecraft");
|
||||
}
|
||||
|
||||
public void onPlayerQuit(PlayerQuitEvent event) {
|
||||
MineOnlineBroadcast.lastPing = System.currentTimeMillis() - 40000;
|
||||
}
|
||||
|
||||
public void onPlayerLogin(PlayerLoginEvent event) {
|
||||
MineOnlineBroadcast.lastPing = System.currentTimeMillis() - 40000;
|
||||
}
|
||||
|
||||
public void onPlayerKick(PlayerKickEvent event) {
|
||||
MineOnlineBroadcast.lastPing = System.currentTimeMillis() - 40000;
|
||||
}
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user