Added bukkit chat bridge.

This commit is contained in:
Alex231 2020-11-04 02:55:42 +00:00
parent 7ef588012c
commit d9862b1ea3
22 changed files with 885 additions and 86 deletions

View File

@ -0,0 +1,11 @@
<component name="ArtifactManager">
<artifact type="jar" name="MineOnlineBroadcastBukkit">
<output-path>$PROJECT_DIR$/out/artifacts/MineOnlineBroadcastBukkit</output-path>
<root id="archive" name="MineOnlineBroadcastBukkit.jar">
<element id="module-output" name="MineOnlineBroadcast-Bukkit" />
<element id="extracted-dir" path="$PROJECT_DIR$/lib/json.jar" path-in-jar="/" />
<element id="extracted-dir" path="$PROJECT_DIR$/lib/JDA-4.2.0_168-withDependencies-min.jar" path-in-jar="/" />
<element id="extracted-dir" path="$PROJECT_DIR$/lib/discord-webhooks-0.5.0.jar" path-in-jar="/" />
</root>
</artifact>
</component>

View File

@ -1,9 +0,0 @@
<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>

View File

@ -0,0 +1,10 @@
<component name="libraryTable">
<library name="JDA-4.2.0_168-withDependencies-min">
<CLASSES>
<root url="jar://$PROJECT_DIR$/lib/JDA-4.2.0_168-withDependencies-min.jar!/" />
<root url="jar://$PROJECT_DIR$/lib/discord-webhooks-0.5.0.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES />
</library>
</component>

551
.idea/workspace.xml generated
View File

@ -1,7 +1,34 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ArtifactsWorkspaceSettings">
<artifacts-to-build>
<artifact name="MineOnlineBroadcastBukkit" />
</artifacts-to-build>
</component>
<component name="ChangeListManager">
<list default="true" id="e42abf2d-5ce3-4d3a-b3e0-db470c42f0ce" name="Default Changelist" comment="" />
<list default="true" id="e42abf2d-5ce3-4d3a-b3e0-db470c42f0ce" name="Default Changelist" comment="Added missing plugin.yml resource.">
<change afterPath="$PROJECT_DIR$/.idea/artifacts/MineOnlineBroadcastBukkit.xml" afterDir="false" />
<change afterPath="$PROJECT_DIR$/.idea/libraries/JDA_4_2_0_168_withDependencies_min.xml" afterDir="false" />
<change afterPath="$PROJECT_DIR$/lib/JDA-4.2.0_168-withDependencies-min.jar" afterDir="false" />
<change afterPath="$PROJECT_DIR$/lib/discord-webhooks-0.5.0.jar" afterDir="false" />
<change afterPath="$PROJECT_DIR$/src/gg/codie/common/input/AbstractColorCodeProvider.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/src/gg/codie/common/input/EColorCodeColor.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/src/gg/codie/common/input/IColorCodeProvider.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/src/gg/codie/minecraft/server/AbstractMinecraftColorCodeProvider.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/src/gg/codie/minecraft/server/MinecraftColorCodeProvider.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/src/gg/codie/mineonline/discord/DiscordChatBridge.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/src/gg/codie/mineonline/discord/IAvatarProvider.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/src/gg/codie/mineonline/discord/IMessageRecievedListener.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/src/gg/codie/mineonline/discord/IShutdownListener.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/src/gg/codie/mineonline/discord/MinotarAvatarProvider.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/artifacts/MineOnlineBroadcast_Bukkit.xml" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/MineOnlineBroadcast-Bukkit.iml" beforeDir="false" afterPath="$PROJECT_DIR$/MineOnlineBroadcast-Bukkit.iml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/res/plugin.yml" beforeDir="false" afterPath="$PROJECT_DIR$/res/plugin.yml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/MineOnlineBroadcast.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/gg/codie/mineonline/plugin/bukkit/MineOnlineBroadcastPlugin.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/MineOnlineBroadcastListener.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/gg/codie/mineonline/plugin/bukkit/MineOnlineBroadcastListener.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/gg/codie/mineonline/ProxyThread.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/gg/codie/mineonline/plugin/ProxyThread.java" afterDir="false" />
</list>
<ignored path="$PROJECT_DIR$/out/" />
<option name="EXCLUDED_CONVERTED_TO_IGNORED" value="true" />
<option name="SHOW_DIALOG" value="false" />
@ -10,47 +37,177 @@
<option name="LAST_RESOLUTION" value="IGNORE" />
</component>
<component name="FileEditorManager">
<leaf>
<leaf SIDE_TABS_SIZE_LIMIT_KEY="300">
<file pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/.gitignore">
<entry file="file://$PROJECT_DIR$/src/gg/codie/common/input/AbstractColorCodeProvider.java">
<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">
<file pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/src/gg/codie/minecraft/server/AbstractMinecraftColorCodeProvider.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 relative-caret-position="68">
<caret line="5" column="22" selection-start-line="5" selection-start-column="22" selection-end-line="5" selection-end-column="22" />
</state>
</provider>
</entry>
</file>
<file pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/src/gg/codie/mineonline/discord/DiscordChatBridge.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="597">
<caret line="82" column="30" selection-start-line="82" selection-start-column="30" selection-end-line="82" selection-end-column="30" />
<folding>
<element signature="e#1763#2226#0" expanded="true" />
<element signature="e#2225#2226#0" expanded="true" />
<element signature="e#2258#2482#0" expanded="true" />
<element signature="e#2481#2482#0" expanded="true" />
<element signature="e#3646#3647#0" expanded="true" />
<element signature="e#3676#3677#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
</file>
<file pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/src/gg/codie/common/input/EColorCodeColor.java">
<provider selected="true" editor-type-id="text-editor" />
</entry>
</file>
<file pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/src/gg/codie/common/input/IColorCodeProvider.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="102">
<caret line="6" selection-start-line="6" selection-end-line="6" />
</state>
</provider>
</entry>
</file>
<file pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/src/gg/codie/minecraft/server/MinecraftColorCodeProvider.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="85">
<caret line="7" selection-start-line="7" selection-end-line="7" />
</state>
</provider>
</entry>
</file>
<file pinned="false" current-in-tab="true">
<entry file="file://$PROJECT_DIR$/src/gg/codie/mineonline/plugin/bukkit/MineOnlineBroadcastListener.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="612">
<caret line="36" column="153" selection-start-line="36" selection-start-column="153" selection-end-line="36" selection-end-column="153" />
<folding>
<element signature="imports" expanded="true" />
<element signature="e#301#302#0" expanded="true" />
<element signature="e#339#340#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
</file>
<file pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/src/gg/codie/mineonline/plugin/bukkit/MineOnlineBroadcastPlugin.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="614">
<caret line="297" column="24" lean-forward="true" selection-start-line="297" selection-start-column="24" selection-end-line="297" selection-end-column="24" />
<folding>
<element signature="imports" expanded="true" />
<element signature="e#11866#11867#0" expanded="true" />
<element signature="e#11970#11971#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
</file>
<file pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/res/plugin.yml">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="153">
<caret line="9" column="10" lean-forward="true" selection-start-line="9" selection-start-column="10" selection-end-line="9" selection-end-column="10" />
</state>
</provider>
</entry>
</file>
<file pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/src/gg/codie/mineonline/plugin/ProxyThread.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="816">
<caret line="82" column="49" selection-start-line="82" selection-start-column="49" selection-end-line="82" selection-end-column="49" />
<folding>
<element signature="imports" expanded="true" />
<element signature="e#771#772#0" expanded="true" />
<element signature="e#807#808#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
</file>
</leaf>
</component>
<component name="FileTemplateManagerImpl">
<option name="RECENT_TEMPLATES">
<list>
<option value="Class" />
</list>
</option>
</component>
<component name="FindInProjectRecents">
<findStrings>
<find>md5</find>
<find>server-ip</find>
<find>oldcr</find>
<find>old</find>
<find>onlineMode</find>
<find>here</find>
<find>onlinemode</find>
<find>System.out</find>
<find>200 OK</find>
<find>listener</find>
</findStrings>
</component>
<component name="Git.Settings">
<option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$" />
</component>
<component name="IdeDocumentHistory">
<option name="CHANGED_PATHS">
<list>
<option value="$PROJECT_DIR$/src/ProxyThread.java" />
<option value="$PROJECT_DIR$/src/gg/codie/utils/JSONUtils.java" />
<option value="$PROJECT_DIR$/src/gg/codie/minecraft/SessionServer.java" />
<option value="$PROJECT_DIR$/src/gg/codie/utils/ArrayUtils.java" />
<option value="$PROJECT_DIR$/src/gg/codie/minecraft/api/SessionServer.java" />
<option value="$PROJECT_DIR$/src/gg/codie/mineonline/ProxyThread.java" />
<option value="$PROJECT_DIR$/src/MineOnlineBroadcast.java" />
<option value="$PROJECT_DIR$/src/gg/codie/mineonline/plugin/hmod/MineOnlineBroadcastListener.java" />
<option value="$PROJECT_DIR$/src/MineOnlineBroadcastListener.java" />
<option value="$PROJECT_DIR$/src/gg/codie/mineonline/discord/MinotarAvatarProvider.java" />
<option value="$PROJECT_DIR$/src/gg/codie/mineonline/discord/IMessageRecievedListener.java" />
<option value="$PROJECT_DIR$/src/gg/codie/mineonline/plugin/bukkit/ProxyThread.java" />
<option value="$PROJECT_DIR$/src/gg/codie/mineonline/plugin/ProxyThread.java" />
<option value="$PROJECT_DIR$/src/gg/codie/common/input/IColorCodeProvider.java" />
<option value="$PROJECT_DIR$/src/gg/codie/minecraft/MinecraftColorCodeProvider.java" />
<option value="$PROJECT_DIR$/src/gg/codie/minecraft/server/MinecraftColorCodeProvider.java" />
<option value="$PROJECT_DIR$/src/gg/codie/mineonline/plugin/bukkit/MineOnlineBroadcastPlugin.java" />
<option value="$PROJECT_DIR$/src/gg/codie/mineonline/discord/DiscordChatBridge.java" />
<option value="$PROJECT_DIR$/res/plugin.yml" />
<option value="$PROJECT_DIR$/src/gg/codie/mineonline/plugin/bukkit/MineOnlineBroadcastListener.java" />
</list>
</option>
</component>
<component name="ProjectFrameBounds" extendedState="6">
<option name="x" value="248" />
<option name="y" value="-14" />
<component name="ProjectFrameBounds">
<option name="x" value="1273" />
<option name="width" value="1294" />
<option name="height" value="1417" />
</component>
<component name="ProjectLevelVcsManager" settingsEditedManually="true" />
<component name="ProjectView">
<navigator proportions="" version="1">
<foldersAlwaysOnTop value="true" />
</navigator>
<panes>
<pane id="Scope" />
<pane id="PackagesPane" />
<pane id="ProjectPane">
<subPane>
<expand>
@ -63,32 +220,110 @@
<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="res" 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>
<path>
<item name="MineOnlineBroadcast-Bukkit" type="b2602c69:ProjectViewProjectNode" />
<item name="MineOnlineBroadcast-Bukkit" type="462c0819:PsiDirectoryNode" />
<item name="src" type="462c0819:PsiDirectoryNode" />
<item name="codie" 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" />
<item name="codie" type="462c0819:PsiDirectoryNode" />
<item name="input" 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" />
<item name="codie" type="462c0819:PsiDirectoryNode" />
<item name="minecraft" 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" />
<item name="codie" type="462c0819:PsiDirectoryNode" />
<item name="minecraft" type="462c0819:PsiDirectoryNode" />
<item name="server" 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" />
<item name="codie" type="462c0819:PsiDirectoryNode" />
<item name="mineonline" 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" />
<item name="codie" type="462c0819:PsiDirectoryNode" />
<item name="mineonline" type="462c0819:PsiDirectoryNode" />
<item name="discord" 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" />
<item name="codie" type="462c0819:PsiDirectoryNode" />
<item name="mineonline" type="462c0819:PsiDirectoryNode" />
<item name="plugin" 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" />
<item name="codie" type="462c0819:PsiDirectoryNode" />
<item name="mineonline" type="462c0819:PsiDirectoryNode" />
<item name="plugin" type="462c0819:PsiDirectoryNode" />
<item name="bukkit" 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="com.android.tools.idea.instantapp.provision.ProvisionBeforeRunTaskProvider.myTimeStamp" value="1604458496786" />
<property name="last_opened_file_path" value="$PROJECT_DIR$/lib/discord-webhooks-0.5.0.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.proportion" value="0.15" />
<property name="project.structure.side.proportion" value="0.2" />
<property name="settings.editor.selected.configurable" value="preferences.lookFeel" />
</component>
<component name="RecentsManager">
<key name="MoveFile.RECENT_KEYS">
<recent name="D:\Projects\GitHub\MineOnlineBroadcast-Bukkit\res" />
</key>
<key name="MoveClassesOrPackagesDialog.RECENTS_KEY">
<recent name="gg.codie.mineonline.plugin" />
</key>
<key name="CopyClassDialog.RECENTS_KEY">
<recent name="gg.codie.mineonline.discord" />
<recent name="gg.codie.minecraft" />
</key>
<key name="CopyFile.RECENT_KEYS">
<recent name="D:\Projects\GitHub\MineOnlineBroadcast-Bukkit\src\gg\codie\minecraft" />
<recent name="D:\Projects\GitHub\MineOnlineBroadcast-Bukkit\src\gg\codie\common" />
<recent name="D:\Projects\GitHub\MineOnlineBroadcast-Bukkit\lib" />
<recent name="D:\Projects\GitHub\MineOnlineBroadcast-Bukkit\src\gg\codie\utils" />
<recent name="D:\Projects\GitHub\MineOnlineBroadcast-Bukkit" />
</key>
</component>
@ -114,59 +349,293 @@
<option name="number" value="Default" />
<option name="presentableId" value="Default" />
<updated>1601520627871</updated>
<workItem from="1601520632934" duration="175000" />
<workItem from="1601520632934" duration="559000" />
<workItem from="1601569586961" duration="2991000" />
<workItem from="1601586764379" duration="1787000" />
<workItem from="1601632586778" duration="18000" />
<workItem from="1602265372050" duration="2495000" />
<workItem from="1602443331568" duration="1097000" />
<workItem from="1602851499778" duration="662000" />
<workItem from="1603025159964" duration="604000" />
<workItem from="1603032408452" duration="272000" />
<workItem from="1603900052290" duration="2235000" />
<workItem from="1604084092619" duration="6413000" />
<workItem from="1604095542330" duration="480000" />
<workItem from="1604448227076" duration="167000" />
<workItem from="1604454551345" duration="3850000" />
</task>
<task id="LOCAL-00001" summary="Added missing plugin.yml resource.">
<created>1601569681272</created>
<option name="number" value="00001" />
<option name="presentableId" value="LOCAL-00001" />
<option name="project" value="LOCAL" />
<updated>1601569681273</updated>
</task>
<task id="LOCAL-00002" summary="Bukkit 1.2 support.">
<created>1602266936572</created>
<option name="number" value="00002" />
<option name="presentableId" value="LOCAL-00002" />
<option name="project" value="LOCAL" />
<updated>1602266936572</updated>
</task>
<task id="LOCAL-00003" summary="https">
<created>1602444340520</created>
<option name="number" value="00003" />
<option name="presentableId" value="LOCAL-00003" />
<option name="project" value="LOCAL" />
<updated>1602444340520</updated>
</task>
<task id="LOCAL-00004" summary="1.0.3">
<created>1602444354264</created>
<option name="number" value="00004" />
<option name="presentableId" value="LOCAL-00004" />
<option name="project" value="LOCAL" />
<updated>1602444354264</updated>
</task>
<task id="LOCAL-00005" summary="Don't assume online-mode.">
<created>1602851549642</created>
<option name="number" value="00005" />
<option name="presentableId" value="LOCAL-00005" />
<option name="project" value="LOCAL" />
<updated>1602851549642</updated>
</task>
<task id="LOCAL-00006" summary="Removed banlist/whitelist broadcasting.">
<created>1603025313643</created>
<option name="number" value="00006" />
<option name="presentableId" value="LOCAL-00006" />
<option name="project" value="LOCAL" />
<updated>1603025313643</updated>
</task>
<task id="LOCAL-00007" summary="&quot;serverlist-ip&quot; and &quot;serverlist-port&quot; options">
<created>1603032473299</created>
<option name="number" value="00007" />
<option name="presentableId" value="LOCAL-00007" />
<option name="project" value="LOCAL" />
<updated>1603032473299</updated>
</task>
<task id="LOCAL-00008" summary="1.0.7 Handle JSON library conflicts.">
<created>1603903123690</created>
<option name="number" value="00008" />
<option name="presentableId" value="LOCAL-00008" />
<option name="project" value="LOCAL" />
<updated>1603903123690</updated>
</task>
<task id="LOCAL-00009" summary="Added an online-mode fix.">
<created>1604088077949</created>
<option name="number" value="00009" />
<option name="presentableId" value="LOCAL-00009" />
<option name="project" value="LOCAL" />
<updated>1604088077949</updated>
</task>
<task id="LOCAL-00010" summary="Removed debug logs.">
<created>1604088171335</created>
<option name="number" value="00010" />
<option name="presentableId" value="LOCAL-00010" />
<option name="project" value="LOCAL" />
<updated>1604088171335</updated>
</task>
<task id="LOCAL-00011" summary="Send max players as an int.">
<created>1604095778444</created>
<option name="number" value="00011" />
<option name="presentableId" value="LOCAL-00011" />
<option name="project" value="LOCAL" />
<updated>1604095778444</updated>
</task>
<option name="localTasksCounter" value="12" />
<servers />
</component>
<component name="TimeTrackingManager">
<option name="totallyTimeSpent" value="175000" />
<option name="totallyTimeSpent" value="23630000" />
</component>
<component name="ToolWindowManager">
<frame x="-8" y="-8" width="2576" height="1426" extended-state="6" />
<frame x="1273" y="0" width="1294" height="1417" extended-state="0" />
<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 active="true" content_ui="combo" id="Project" order="0" visible="true" weight="0.25769854" />
<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 id="Designer" order="2" />
<window_info id="Image Layers" order="3" />
<window_info id="Capture Tool" order="4" />
<window_info id="UI Designer" order="5" />
<window_info id="Favorites" order="6" side_tool="true" />
<window_info anchor="bottom" id="Message" order="0" />
<window_info anchor="bottom" id="Find" order="1" />
<window_info anchor="bottom" id="Find" order="1" weight="0.32943925" />
<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&#9;" />
<window_info anchor="right" id="Database" />
<window_info anchor="bottom" id="IntelliGuard" order="7" />
<window_info anchor="bottom" id="Terminal" order="8" sideWeight="0.49838188" weight="0.33021808" />
<window_info anchor="bottom" id="Docker" order="9" show_stripe_button="false" />
<window_info anchor="bottom" id="Event Log" order="10" sideWeight="0.50161815" side_tool="true" weight="0.32791957" />
<window_info anchor="bottom" id="Messages" order="11" />
<window_info anchor="bottom" id="Database Changes" order="12" />
<window_info anchor="bottom" id="Version Control" order="13" sideWeight="0.49920508" visible="true" weight="0.32788163" />
<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" />
<window_info anchor="right" id="Maven" order="3" />
<window_info anchor="right" id="Palette" order="4" />
<window_info anchor="right" id="Capture Analysis" order="5" />
<window_info anchor="right" id="Database" order="6" />
<window_info anchor="right" id="Palette&#9;" order="7" />
<window_info anchor="right" id="Theme Preview" order="8" />
</layout>
</component>
<component name="TypeScriptGeneratedFilesManager">
<option name="version" value="1" />
</component>
<component name="VcsManagerConfiguration">
<MESSAGE value="Added missing plugin.yml resource." />
<MESSAGE value="Bukkit 1.2 support." />
<MESSAGE value="https" />
<MESSAGE value="1.0.3" />
<MESSAGE value="Don't assume online-mode." />
<MESSAGE value="Removed banlist/whitelist broadcasting." />
<MESSAGE value="&quot;serverlist-ip&quot; and &quot;serverlist-port&quot; options" />
<MESSAGE value="1.0.7 Handle JSON library conflicts." />
<MESSAGE value="Added an online-mode fix." />
<MESSAGE value="Removed debug logs." />
<MESSAGE value="Send max players as an int." />
<option name="LAST_COMMIT_MESSAGE" value="Send max players as an int." />
</component>
<component name="editorHistoryManager">
<entry file="jar://$PROJECT_DIR$/lib/craftbukkit-1.2_01_02.jar!/org/bukkit/event/player/PlayerListener.class" />
<entry file="file://$PROJECT_DIR$/.idea/libraries/craftbukkit.xml">
<provider selected="true" editor-type-id="text-editor" />
</entry>
<entry file="file://$PROJECT_DIR$/src/gg/codie/utils/JSONUtils.java" />
<entry file="jar://$PROJECT_DIR$/lib/craftbukkit-1.2_01_02.jar!/org/bukkit/event/Event.class" />
<entry file="file://$PROJECT_DIR$/.gitignore">
<provider selected="true" editor-type-id="text-editor" />
</entry>
<entry file="file://$PROJECT_DIR$/src/MineOnlineBroadcast.java">
<entry file="file://$PROJECT_DIR$/src/gg/codie/utils/ArrayUtils.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>
<caret column="23" selection-start-column="23" selection-end-column="23" />
</state>
</provider>
</entry>
<entry file="jar://$PROJECT_DIR$/lib/craftbukkit1-7-3(1060).jar!/org/bukkit/event/player/PlayerListener.class">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="102">
<caret line="9" column="13" selection-start-line="9" selection-start-column="13" selection-end-line="9" selection-end-column="13" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/gg/codie/minecraft/api/SessionServer.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="357">
<caret line="23" selection-start-line="23" selection-end-line="23" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/.idea/workspace.xml">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="969">
<caret line="57" column="13" selection-start-line="57" selection-start-column="13" selection-end-line="57" selection-end-column="13" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/gg/codie/mineonline/discord/IAvatarProvider.java">
<provider selected="true" editor-type-id="text-editor" />
</entry>
<entry file="file://$PROJECT_DIR$/src/gg/codie/mineonline/discord/MinotarAvatarProvider.java">
<provider selected="true" editor-type-id="text-editor" />
</entry>
<entry file="file://$PROJECT_DIR$/src/gg/codie/mineonline/discord/IMessageRecievedListener.java">
<provider selected="true" editor-type-id="text-editor" />
</entry>
<entry file="file://$PROJECT_DIR$/src/gg/codie/mineonline/discord/IShutdownListener.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="119">
<caret line="7" lean-forward="true" selection-start-line="7" selection-end-line="7" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/gg/codie/mineonline/plugin/ProxyThread.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="816">
<caret line="82" column="49" selection-start-line="82" selection-start-column="49" selection-end-line="82" selection-end-column="49" />
<folding>
<element signature="imports" expanded="true" />
<element signature="e#771#772#0" expanded="true" />
<element signature="e#807#808#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/gg/codie/common/input/AbstractColorCodeProvider.java">
<provider selected="true" editor-type-id="text-editor" />
</entry>
<entry file="file://$PROJECT_DIR$/src/gg/codie/common/input/EColorCodeColor.java">
<provider selected="true" editor-type-id="text-editor" />
</entry>
<entry file="file://$PROJECT_DIR$/src/gg/codie/common/input/IColorCodeProvider.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="102">
<caret line="6" selection-start-line="6" selection-end-line="6" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/gg/codie/minecraft/server/AbstractMinecraftColorCodeProvider.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="68">
<caret line="5" column="22" selection-start-line="5" selection-start-column="22" selection-end-line="5" selection-end-column="22" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/gg/codie/minecraft/server/MinecraftColorCodeProvider.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="85">
<caret line="7" selection-start-line="7" selection-end-line="7" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/gg/codie/mineonline/discord/DiscordChatBridge.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="597">
<caret line="82" column="30" selection-start-line="82" selection-start-column="30" selection-end-line="82" selection-end-column="30" />
<folding>
<element signature="e#1763#2226#0" expanded="true" />
<element signature="e#2225#2226#0" expanded="true" />
<element signature="e#2258#2482#0" expanded="true" />
<element signature="e#2481#2482#0" expanded="true" />
<element signature="e#3646#3647#0" expanded="true" />
<element signature="e#3676#3677#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/res/plugin.yml">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="153">
<caret line="9" column="10" lean-forward="true" selection-start-line="9" selection-start-column="10" selection-end-line="9" selection-end-column="10" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/gg/codie/mineonline/plugin/bukkit/MineOnlineBroadcastPlugin.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="614">
<caret line="297" column="24" lean-forward="true" selection-start-line="297" selection-start-column="24" selection-end-line="297" selection-end-column="24" />
<folding>
<element signature="imports" expanded="true" />
<element signature="e#11866#11867#0" expanded="true" />
<element signature="e#11970#11971#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/gg/codie/mineonline/plugin/bukkit/MineOnlineBroadcastListener.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="612">
<caret line="36" column="153" selection-start-line="36" selection-start-column="153" selection-end-line="36" selection-end-column="153" />
<folding>
<element signature="imports" expanded="true" />
<element signature="e#301#302#0" expanded="true" />
<element signature="e#339#340#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
@ -176,7 +645,7 @@
<state key="ArtifactsStructureConfigurable.UI">
<settings>
<artifact-editor />
<last-edited>MineOnlineBroadcast-Bukkit</last-edited>
<last-edited>MineOnlineBroadcastBukkit</last-edited>
<splitter-proportions>
<option name="proportions">
<list>
@ -248,7 +717,7 @@
</state>
<state key="ProjectLibrariesConfigurable.UI">
<settings>
<last-edited>craftbukkit</last-edited>
<last-edited>JDA-4.2.0_168-withDependencies-min</last-edited>
<splitter-proportions>
<option name="proportions">
<list>

View File

@ -10,5 +10,6 @@
<orderEntry type="sourceFolder" forTests="false" />
<orderEntry type="library" name="json" level="project" />
<orderEntry type="library" name="craftbukkit" level="project" />
<orderEntry type="library" exported="" name="JDA-4.2.0_168-withDependencies-min" level="project" />
</component>
</module>

Binary file not shown.

Binary file not shown.

View File

@ -1,10 +1,10 @@
name: MineOnlineBroadcast
version: 1.0.8
name: gg.codie.mineonline.plugin.bukkit.MineOnlineBroadcast
version: 1.0.9
description: Lists a server on mineonline.codie.gg/servers
author: codieradical
authors: [Codie]
website: https://mineonline.codie.gg/
main: MineOnlineBroadcast
main: gg.codie.mineonline.plugin.bukkit.MineOnlineBroadcastPlugin
database: false
depend: []

View File

@ -1,22 +0,0 @@
import org.bukkit.event.player.PlayerEvent;
import org.bukkit.event.player.PlayerKickEvent;
import org.bukkit.event.player.PlayerListener;
import org.bukkit.event.player.PlayerLoginEvent;
public class MineOnlineBroadcastListener extends PlayerListener {
public MineOnlineBroadcastListener() {
}
public void onPlayerQuit(PlayerEvent 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;
}
}

View File

@ -0,0 +1,11 @@
package gg.codie.common.input;
public abstract class AbstractColorCodeProvider implements IColorCodeProvider {
public String removeColorCodes(String in){
for (EColorCodeColor chatColor : EColorCodeColor.values()) {
in = in.replace(getColorCode(chatColor), "");
}
return in;
}
}

View File

@ -0,0 +1,20 @@
package gg.codie.common.input;
public enum EColorCodeColor {
Black,
DarkBlue,
DarkGreen,
DarkTeal,
DarkRed,
Purple,
Gold,
Gray,
DarkGray,
Blue,
BrightGreen,
Teal,
Red,
Pink,
Yellow,
White
}

View File

@ -0,0 +1,6 @@
package gg.codie.common.input;
public interface IColorCodeProvider {
String getColorCode(EColorCodeColor chatColor);
String removeColorCodes(String text);
}

View File

@ -0,0 +1,47 @@
package gg.codie.minecraft.server;
import gg.codie.common.input.AbstractColorCodeProvider;
import gg.codie.common.input.EColorCodeColor;
public abstract class AbstractMinecraftColorCodeProvider extends AbstractColorCodeProvider {
public abstract String getPrefix();
@Override
public String getColorCode(EColorCodeColor chatColor) {
switch (chatColor) {
case Black:
return getPrefix() + '0';
case DarkBlue:
return getPrefix() + '1';
case DarkGreen:
return getPrefix() + '2';
case DarkTeal:
return getPrefix() + '3';
case DarkRed:
return getPrefix() + '4';
case Purple:
return getPrefix() + '5';
case Gold:
return getPrefix() + '6';
case Gray:
return getPrefix() + '7';
case DarkGray:
return getPrefix() + '8';
case Blue:
return getPrefix() + '9';
case BrightGreen:
return getPrefix() + 'a';
case Teal:
return getPrefix() + 'b';
case Red:
return getPrefix() + 'c';
case Pink:
return getPrefix() + 'd';
case Yellow:
return getPrefix() + 'e';
case White:
default:
return getPrefix() + 'f';
}
}
}

View File

@ -0,0 +1,7 @@
package gg.codie.minecraft.server;
public class MinecraftColorCodeProvider extends AbstractMinecraftColorCodeProvider {
public String getPrefix() {
return "§";
}
}

View File

@ -0,0 +1,92 @@
package gg.codie.mineonline.discord;
import club.minnced.discord.webhook.WebhookClient;
import club.minnced.discord.webhook.WebhookClientBuilder;
import club.minnced.discord.webhook.send.WebhookMessageBuilder;
import net.dv8tion.jda.api.JDA;
import net.dv8tion.jda.api.JDABuilder;
import net.dv8tion.jda.api.entities.MessageChannel;
import net.dv8tion.jda.api.events.ShutdownEvent;
import net.dv8tion.jda.api.events.message.MessageReceivedEvent;
import net.dv8tion.jda.api.hooks.ListenerAdapter;
import javax.annotation.Nonnull;
import javax.security.auth.login.LoginException;
public class DiscordChatBridge extends ListenerAdapter {
WebhookMessageBuilder webhookMessage;
WebhookClientBuilder builder;
MessageChannel channel;
WebhookClient client;
final String webhook;
final long channelID;
final String token;
final JDA jda;
final IAvatarProvider avatarProvider;
public DiscordChatBridge(IAvatarProvider avatarProvider, String discordChannel, String discordToken, String webhookUrl, IMessageRecievedListener msgEvent, IShutdownListener shutdownListener) throws NumberFormatException, InterruptedException, LoginException {
token = discordToken;
channelID = Long.parseLong(discordChannel);
webhook = webhookUrl;
this.avatarProvider = avatarProvider;
if (webhook != null) {
try {
builder = new WebhookClientBuilder(webhook);
client = builder.build();
} catch (Exception ex) {
ex.printStackTrace();
}
}
jda = JDABuilder.createDefault(token)
.build();
jda.awaitReady();
System.out.println("Discord Bridge Started");
jda.addEventListener(new ListenerAdapter() {
@Override
public void onMessageReceived(MessageReceivedEvent event) {
if (event.getChannel().getId().equals("" + channelID) && !event.isWebhookMessage() && !event.getAuthor().getId().equals(event.getJDA().getSelfUser().getId()) && !event.getMessage().getContentStripped().isEmpty()) { // stop listening to yourself
msgEvent.onMessageRecieved(event);
}
}
});
jda.addEventListener(new ListenerAdapter() {
@Override
public void onShutdown(@Nonnull ShutdownEvent event) {
shutdownListener.onShutdown();
super.onShutdown(event);
}
});
}
public void sendDiscordMessage(String username, String message){
if (webhook != null && !username.equals("")){ // webhook player messages to discord
webhookMessage = new WebhookMessageBuilder();
webhookMessage.setUsername(username);
webhookMessage.setAvatarUrl(avatarProvider.getAvatarURL(username));
webhookMessage.setContent(message);
client.send(webhookMessage.build());
} else if (token != null && !username.equals("")) { // Non-webhook player messages to discord
try {
channel = jda.getTextChannelById(channelID);
channel.sendMessage("**" + username + "**: " + message).queue();
} catch (Exception ex) {
ex.printStackTrace();
}
} else if (username.equals("")){ // Non webhook system messages to discord
try {
channel = jda.getTextChannelById(channelID);
channel.sendMessage(message).queue();
} catch (Exception ex) {
ex.printStackTrace();
}
}
}
public void shutdown() {
jda.shutdown();
}
}

View File

@ -0,0 +1,5 @@
package gg.codie.mineonline.discord;
public interface IAvatarProvider {
String getAvatarURL(String username);
}

View File

@ -0,0 +1,9 @@
package gg.codie.mineonline.discord;
import net.dv8tion.jda.api.events.message.MessageReceivedEvent;
public interface IMessageRecievedListener {
void onMessageRecieved(MessageReceivedEvent message);
}

View File

@ -0,0 +1,7 @@
package gg.codie.mineonline.discord;
public interface IShutdownListener {
void onShutdown();
}

View File

@ -0,0 +1,8 @@
package gg.codie.mineonline.discord;
public class MinotarAvatarProvider implements IAvatarProvider {
@Override
public String getAvatarURL(String username) {
return "https://minotar.net/avatar/" + username + "/100.png";
}
}

View File

@ -1,4 +1,4 @@
package gg.codie.mineonline;
package gg.codie.mineonline.plugin;
import gg.codie.minecraft.api.SessionServer;
import gg.codie.utils.ArrayUtils;

View File

@ -0,0 +1,39 @@
package gg.codie.mineonline.plugin.bukkit;
import gg.codie.minecraft.server.MinecraftColorCodeProvider;
import gg.codie.mineonline.discord.DiscordChatBridge;
import org.bukkit.event.player.*;
public class MineOnlineBroadcastListener extends PlayerListener {
DiscordChatBridge discord;
MinecraftColorCodeProvider colorCodeProvider = new MinecraftColorCodeProvider();
public MineOnlineBroadcastListener(DiscordChatBridge discord) {
this.discord = discord;
}
public void onPlayerQuit(PlayerQuitEvent event) {
MineOnlineBroadcastPlugin.lastPing = 0;
discord.sendDiscordMessage("", "**" + colorCodeProvider.removeColorCodes(event.getPlayer().getName()) + "** left the game.");
}
public void onPlayerQuit(PlayerEvent event) {
MineOnlineBroadcastPlugin.lastPing = 0;
discord.sendDiscordMessage("", "**" + colorCodeProvider.removeColorCodes(event.getPlayer().getName()) + "** left the game.");
}
public void onPlayerLogin(PlayerLoginEvent event) {
MineOnlineBroadcastPlugin.lastPing = 0;
discord.sendDiscordMessage("", "**" + colorCodeProvider.removeColorCodes(event.getPlayer().getName()) + "** joined the game.");
}
public void onPlayerKick(PlayerKickEvent event) {
MineOnlineBroadcastPlugin.lastPing = 0;
discord.sendDiscordMessage("", "**" + colorCodeProvider.removeColorCodes(event.getPlayer().getName()) + "** left the game.");
}
@Override
public void onPlayerChat(PlayerChatEvent event) {
discord.sendDiscordMessage(colorCodeProvider.removeColorCodes(event.getPlayer().getName()), colorCodeProvider.removeColorCodes(event.getMessage()));
}
}

View File

@ -1,4 +1,13 @@
import gg.codie.mineonline.ProxyThread;
package gg.codie.mineonline.plugin.bukkit;
import gg.codie.common.input.EColorCodeColor;
import gg.codie.minecraft.server.MinecraftColorCodeProvider;
import gg.codie.mineonline.discord.DiscordChatBridge;
import gg.codie.mineonline.discord.IMessageRecievedListener;
import gg.codie.mineonline.discord.IShutdownListener;
import gg.codie.mineonline.discord.MinotarAvatarProvider;
import gg.codie.mineonline.plugin.ProxyThread;
import net.dv8tion.jda.api.events.message.MessageReceivedEvent;
import org.bukkit.entity.Player;
import org.bukkit.event.Event;
import org.bukkit.plugin.java.JavaPlugin;
@ -15,14 +24,17 @@ import java.security.MessageDigest;
import java.util.Arrays;
import java.util.Properties;
import java.util.logging.Logger;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.util.stream.Collectors;
public class MineOnlineBroadcast extends JavaPlugin {
public class MineOnlineBroadcastPlugin extends JavaPlugin {
Thread broadcastThread;
public static long lastPing;
MineOnlineBroadcastListener listener;
Logger log;
ProxyThread proxyThread;
DiscordChatBridge discord;
public void launchProxy() throws IOException {
ServerSocket serverSocket = new ServerSocket(0);
@ -75,7 +87,7 @@ public class MineOnlineBroadcast extends JavaPlugin {
HttpURLConnection connection = null;
try {
URLClassLoader classLoader = new URLClassLoader(new URL[] { MineOnlineBroadcast.class.getProtectionDomain().getCodeSource().getLocation() });
URLClassLoader classLoader = new URLClassLoader(new URL[] { MineOnlineBroadcastPlugin.class.getProtectionDomain().getCodeSource().getLocation() });
Class jsonObjectClass = classLoader.loadClass("org.json.JSONObject");
@ -133,13 +145,13 @@ public class MineOnlineBroadcast extends JavaPlugin {
this.log = Logger.getLogger("Minecraft");
this.log.info("Enabled MineOnlineBroadcast");
this.log.info("Enabled gg.codie.mineonline.plugin.bukkit.MineOnlineBroadcast");
broadcastThread = new Thread(new Runnable() {
@Override
public void run() {
while(true) {
if (System.currentTimeMillis() - MineOnlineBroadcast.lastPing > 45000) {
if (System.currentTimeMillis() - MineOnlineBroadcastPlugin.lastPing > 45000) {
lastPing = System.currentTimeMillis();
try {
Properties propertiesFile = new Properties();
@ -184,12 +196,12 @@ public class MineOnlineBroadcast extends JavaPlugin {
public void initialize() {
this.log = Logger.getLogger("Minecraft");
this.listener = new MineOnlineBroadcastListener();
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);
MinecraftColorCodeProvider colorCodeProvider = new MinecraftColorCodeProvider();
Properties propertiesFile = new Properties();
try {
Properties propertiesFile = new Properties();
propertiesFile.load(new FileInputStream(new File("server.properties")));
boolean onlineMode = propertiesFile.getProperty("online-mode", "true").equals("true");
@ -198,10 +210,86 @@ public class MineOnlineBroadcast extends JavaPlugin {
} catch (Exception ex) {
log.warning("Failed to enable online-mode fix. Authentication may fail.");
}
try {
propertiesFile.load(new FileInputStream(new File("server.properties")));
String discordToken = propertiesFile.getProperty("discord-token", null);
String discordChannelID = propertiesFile.getProperty("discord-channel", null);
String discordWebhookURL = propertiesFile.getProperty("discord-webhook-url", null);
String serverName = propertiesFile.getProperty("server-name", "Minecraft Server");
if (discordToken != null && discordChannelID != null) { // Create the discord bot if token and channel are present
discord = new DiscordChatBridge(new MinotarAvatarProvider(), discordChannelID, discordToken, discordWebhookURL, new IMessageRecievedListener() {
@Override
public void onMessageRecieved(MessageReceivedEvent event) {
StringBuilder sb = new StringBuilder();
String message = event.getMessage().getContentStripped();
message = message.replace("\n", "") // Make emojis pretty
.replace(("\uD83D\uDE41"), ":)")
.replace(("\uD83D\uDE26"), ":(")
.replace(("\uD83D\uDE04"), ":D")
.replace(("\u2764"), "<3");
for (int i = 0; i < message.length(); i++) {
char c = message.charAt(i);
if ((int) c > 31 && (int) c < 128) {
sb.append(c);
}
}
if (event.getMessage().getContentStripped().startsWith("\n"))
return;
String saneName = event.getAuthor().getName();
String saneMessage = sb.toString();
if(saneMessage.trim().isEmpty())
return;
Pattern trailingWhite = Pattern.compile(colorCodeProvider.getColorCode(EColorCodeColor.White) + "\\s{0,}$");
Matcher whiteMatcher = trailingWhite.matcher(saneMessage);
if (whiteMatcher.find()) { // Prevent a crash in classic where if the message ends with this all connected clients crash
saneMessage = saneMessage.substring(0, saneMessage.length() - whiteMatcher.group().length());
}
if (saneMessage.length() > 256) // Truncate messages that are overly long
saneMessage = saneMessage.substring(0, 256);
message = (colorCodeProvider.getColorCode(EColorCodeColor.Blue) + saneName + ": " + colorCodeProvider.getColorCode(EColorCodeColor.White) + saneMessage);
// remove double color codes that occur with resetting.
message = message.replace(colorCodeProvider.getColorCode(EColorCodeColor.White) + colorCodeProvider.getPrefix(), colorCodeProvider.getPrefix());
getServer().broadcastMessage(message);
}
}, new IShutdownListener() {
@Override
public void onShutdown() {
discord.sendDiscordMessage("", "Stopping " + serverName);
}
});
discord.sendDiscordMessage("", "Starting " + serverName);
}
} catch (Exception ex) {
log.warning("Failed to start discord bridge.");
ex.printStackTrace();
}
this.listener = new MineOnlineBroadcastListener(discord);
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);
this.getServer().getPluginManager().registerEvent(Event.Type.PLAYER_CHAT, this.listener, Event.Priority.Highest, this);
}
@Override
public void onDisable() {
//unregister();
discord.shutdown();
broadcastThread.interrupt();
stopProxy();
}