From fa883570f0829c4ab8f360af740903420dc02ae0 Mon Sep 17 00:00:00 2001 From: jolheiser Date: Mon, 7 Feb 2022 22:33:59 -0600 Subject: [PATCH] My old friend Signed-off-by: jolheiser --- README.md | 100 +++++++++ docs/.gitignore | 6 - docs/Makefile | 20 -- docs/make.bat | 42 ---- docs/source/_static/favicon.png | Bin 2851 -> 0 bytes docs/source/changelog/index.rst | 13 -- docs/source/changelog/v1.4.rst | 17 -- docs/source/changelog/v1.5.rst | 22 -- docs/source/changelog/v1.6.rst | 20 -- docs/source/commands.rst | 66 ------ docs/source/common.rst | 3 - docs/source/conf.py | 170 --------------- docs/source/index.rst | 17 -- docs/source/permissions.rst | 48 ---- pom.xml | 18 +- .../xyz/etztech/minecraftmanager/MCMUtil.java | 4 +- .../minecraftmanager/MinecraftManager.java | 14 +- .../command/CommandApplication.java | 16 +- .../command/CommandApply.java | 1 + .../minecraftmanager/command/CommandMain.java | 10 +- .../command/CommandRules.java | 1 + .../command/CommandTicket.java | 10 +- .../command/CommandWarning.java | 7 +- .../listeners/AsyncPlayerChatListener.java | 8 +- .../listeners/CommandPreprocessListener.java | 7 +- .../listeners/SessionListener.java | 10 +- .../minecraftmanager/objects/Application.java | 2 +- .../minecraftmanager/objects/MCMResponse.java | 8 +- .../objects/MinecraftManagerThread.java | 31 --- .../minecraftmanager/objects/Question.java | 75 ++++--- .../etztech/minecraftmanager/test/Test.java | 205 ------------------ src/main/resources/config.yml | 7 +- 32 files changed, 194 insertions(+), 784 deletions(-) create mode 100644 README.md delete mode 100644 docs/.gitignore delete mode 100644 docs/Makefile delete mode 100644 docs/make.bat delete mode 100644 docs/source/_static/favicon.png delete mode 100644 docs/source/changelog/index.rst delete mode 100644 docs/source/changelog/v1.4.rst delete mode 100644 docs/source/changelog/v1.5.rst delete mode 100644 docs/source/changelog/v1.6.rst delete mode 100644 docs/source/commands.rst delete mode 100644 docs/source/common.rst delete mode 100644 docs/source/conf.py delete mode 100644 docs/source/index.rst delete mode 100644 docs/source/permissions.rst delete mode 100644 src/main/java/xyz/etztech/minecraftmanager/test/Test.java diff --git a/README.md b/README.md new file mode 100644 index 0000000..0cd45f6 --- /dev/null +++ b/README.md @@ -0,0 +1,100 @@ +# Minecraft Manager + +The Minecraft Manager plugin was created as a partner piece of the [Minecraft Manager Web App](https://git.jojodev.com/Minecraft/minecraft_manager/). + +[Example config](src/main/resources/config.yml) + +## Commands + +### Minecraft Manager +`/minecraftmanager ...` + +`/mcm ...` + +#### Sub-Commands + +`help` - Show the help message. + +`port` - Shows the port that MCM is listening on. + +`register` - Allows a player to register for the web app. + +`report` - Runs a report on all entities in the world, for use with the MCM online report. + +### Application + +`/application ` + +`/app ` + +#### Sub-Commands + +`search` - Searches for matching applications. You can use partial names to search. If only one application is found, this command acts as though you are using `info`. + +`info` - Gets specific information for a given application. Can be given a name or application ID. + +- `accept` and `deny` only work with IDs. This is to verify the correct application is being acted on. + +`accept` - Accepts an application by ID. + +`deny` - Denies an application by ID. + +`clear` - Clears a denied application's status. This is to ensure that players cannot spam applications once denied. + +### Apply + +`/apply` - Initiates the application process. A user must run `/rules` before they can apply. + +### Rules + +`/rules` - Shows the current rules defined in the plugin's config.yml + +### Ticket + +`/ticket ` - Used to send in a help ticket. + + +### Warning + +`/warning [] ` - Gives a warning to a player. If \[] is not one of "L", "M", or "H" it will be automatically set to "L". + +## Permissions + +### Basic + + +`minecraftmanager.use` - Allows the use of `/mcm port` and `/mcm reload`. + +`minecraftmanager.guest` - This is how MCM figures out who is a "guest". This is used in the event that a player is accepted but isn't online, so all commands are ran next time they come online. + +- :exclamation: `minecraftmanager.guest` **must** be removed (negated) once a player is member, otherwise the commands will execute each time they log in. + +`minecraftmanager.apply` - Allows the use of `/apply`. + + +- :exclamation: `minecraftmanager.apply` should probably be revoked once the player has been accepted. +Otherwise, the player could continue to re-apply. (Even though it would never register again) + +`minecraftmanager.ticket` - Allows the use of `/ticket`. + +---- + +### Staff + +`minecraftmanager.application.search` - Allows the use of `/application search`. + +`minecraftmanager.application.action` - Allows the use of `/application accept` and `/application deny`. + +- `minecraftmanager.application.*` will give both of the above nodes. + +`minecraftmanager.staff` - Allows a player to use Staff Chat (if enabled) and receive Staff messages from MCM. + +`minecraftmanager.register` - Allows the use of `/mcm register` to register for the web application. + +`minecraftmanager.*` - All permissions for MCM. + +- `minecraftmanager.*` also gives the `minecraftmanager.apply` node, which should probably be revoked in normal use cases. + +## License + +[MIT](LICENSE) \ No newline at end of file diff --git a/docs/.gitignore b/docs/.gitignore deleted file mode 100644 index ae6e71a..0000000 --- a/docs/.gitignore +++ /dev/null @@ -1,6 +0,0 @@ -.idea/ -*.iml -target/ -dependency-reduced-pom.xml -build/ -source/.doctrees/ \ No newline at end of file diff --git a/docs/Makefile b/docs/Makefile deleted file mode 100644 index 0a64ba2..0000000 --- a/docs/Makefile +++ /dev/null @@ -1,20 +0,0 @@ -# Minimal makefile for Sphinx documentation -# - -# You can set these variables from the command line. -SPHINXOPTS = -SPHINXBUILD = sphinx-build -SPHINXPROJ = JavaDocs -SOURCEDIR = source -BUILDDIR = build - -# Put it first so that "make" without argument is like "make help". -help: - @$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) - -.PHONY: help Makefile - -# Catch-all target: route all unknown targets to Sphinx using the new -# "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS). -%: Makefile - @$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) \ No newline at end of file diff --git a/docs/make.bat b/docs/make.bat deleted file mode 100644 index 5051326..0000000 --- a/docs/make.bat +++ /dev/null @@ -1,42 +0,0 @@ -@ECHO OFF - -pushd %~dp0 - -REM Command file for Sphinx documentation - -if "%SPHINXBUILD%" == "" ( - set SPHINXBUILD=sphinx-build -) -set SOURCEDIR=source -set BUILDDIR=build -set SPHINXPROJ=JavaDocs - -if "%1" == "" goto help -if "%1" == "html" goto clean - -:build -%SPHINXBUILD% >NUL 2>NUL -if errorlevel 9009 ( - echo. - echo.The 'sphinx-build' command was not found. Make sure you have Sphinx - echo.installed, then set the SPHINXBUILD environment variable to point - echo.to the full path of the 'sphinx-build' executable. Alternatively you - echo.may add the Sphinx directory to PATH. - echo. - echo.If you don't have Sphinx installed, grab it from - echo.http://sphinx-doc.org/ - exit /b 1 -) - -%SPHINXBUILD% -M %1 %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% -goto end - -:help -%SPHINXBUILD% -M help %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% - -:clean -%SPHINXBUILD% -M clean %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% -goto build - -:end -popd \ No newline at end of file diff --git a/docs/source/_static/favicon.png b/docs/source/_static/favicon.png deleted file mode 100644 index 0764cee11fb695d67fe600330c3830643ebdb3bc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2851 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 BadQ9w diff --git a/docs/source/changelog/index.rst b/docs/source/changelog/index.rst deleted file mode 100644 index 445355c..0000000 --- a/docs/source/changelog/index.rst +++ /dev/null @@ -1,13 +0,0 @@ -.. include:: ../common.rst - -.. _minecraftmanager_changelogs: - -Changelogs -========== - -.. toctree:: - :maxdepth: 1 - - v1.4 - v1.5 - v1.6 \ No newline at end of file diff --git a/docs/source/changelog/v1.4.rst b/docs/source/changelog/v1.4.rst deleted file mode 100644 index 32548fb..0000000 --- a/docs/source/changelog/v1.4.rst +++ /dev/null @@ -1,17 +0,0 @@ -.. include:: ../common.rst - -.. _minecraftmanager_v1.4: - -MinecraftManager v1.4 -===================== - -Additions ---------- -* Updates to EtzCore - -Bug Fixes ---------- -* `In-game staff chat bug`_- Second line of in-game staff chat is white when the message is sent from MCM. - - -.. _In-game staff chat bug: https://git.etztech.xyz/Etzelia/MinecraftManagerPlugin/issues/1 diff --git a/docs/source/changelog/v1.5.rst b/docs/source/changelog/v1.5.rst deleted file mode 100644 index 35cb723..0000000 --- a/docs/source/changelog/v1.5.rst +++ /dev/null @@ -1,22 +0,0 @@ -.. include:: ../common.rst - -.. _minecraftmanager_v1.5: - -MinecraftManager v1.5 -===================== - -Additions ---------- -* `Demote action for plugin listener`_- Adds a demote action to the plugin listener, for demoting staff (or other players). -* `Move MCM Tag`_- Moves the [MCM] tag to a hover event based on config option. -* `Guests must read /rules`_- New users must run ``/rules`` before doing ``/apply`` - -.. _Demote action for plugin listener: https://git.etztech.xyz/Etzelia/MinecraftManagerPlugin/issues/5 -.. _Move MCM Tag: https://git.etztech.xyz/Etzelia/MinecraftManagerPlugin/issues/3 -.. _Guests must read /rules: https://git.etztech.xyz/Etzelia/MinecraftManagerPlugin/issues/4 - -Bug Fixes ---------- -* None - - diff --git a/docs/source/changelog/v1.6.rst b/docs/source/changelog/v1.6.rst deleted file mode 100644 index 10ee06b..0000000 --- a/docs/source/changelog/v1.6.rst +++ /dev/null @@ -1,20 +0,0 @@ -.. include:: ../common.rst - -.. _minecraftmanager_v1.6: - -MinecraftManager v1.6 -===================== - -Additions ---------- -* `Log Rotation`_- Global/Staff logs now rotate. -* `Native OreAlert`_- OreAlert is now provided as a plugin service instead of a bot. - -.. _Log Rotation: https://git.etztech.xyz/Etzelia/MinecraftManagerPlugin/issues/11 -.. _Native OreAlert: https://git.etztech.xyz/Etzelia/MinecraftManagerPlugin/issues/8 - -Bug Fixes ---------- -* None - - diff --git a/docs/source/commands.rst b/docs/source/commands.rst deleted file mode 100644 index 226064a..0000000 --- a/docs/source/commands.rst +++ /dev/null @@ -1,66 +0,0 @@ -.. include:: common.rst - -.. _minecraftmanager_commands: - -Commands -======== - - -Minecraft Manager ------------------ -``/minecraftmanager ...`` - -``/mcm ...`` - -Sub-Commands -~~~~~~~~~~~~ -``help`` - Show the help message. - -``port`` - Shows the port that MCM is listening on. - -``register`` - Allows a player to register for the web app. - -``report`` - Runs a report on all entities in the world, for use with the MCM online report. - - -Application ------------ - -``/application `` - -``/app `` - -Sub-Commands -~~~~~~~~~~~~ -``search`` - Searches for matching applications. You can use partial names to search. If only one application is found, this command acts as though you are using ``info``. - -``info`` - Gets specific information for a given application. Can be given a name or application ID. - -.. note:: - ``accept`` and ``deny`` only work with IDs. This is to verify the correct application is being acted on. - -``accept`` - Accepts an application by ID. - -``deny`` - Denies an application by ID. - -``clear`` - Clears a denied application's status. This is to ensure that players cannot spam applications once denied. - - -Apply ------ -``/apply`` - Initiates the application process. A user must run ``/rules`` before they can apply. - - -Rules ------ -``/rules`` - Shows the current rules defined in the plugin's config.yml - - -Ticket ------- -``/ticket `` - Used to send in a help ticket. - - -Warning -------- -``/warning [] `` - Gives a warning to a player. If [] is not one of "L", "M", or "H" it will be automatically set to "L". \ No newline at end of file diff --git a/docs/source/common.rst b/docs/source/common.rst deleted file mode 100644 index 71f9e4d..0000000 --- a/docs/source/common.rst +++ /dev/null @@ -1,3 +0,0 @@ -.. |br| raw:: html - -
\ No newline at end of file diff --git a/docs/source/conf.py b/docs/source/conf.py deleted file mode 100644 index f87d738..0000000 --- a/docs/source/conf.py +++ /dev/null @@ -1,170 +0,0 @@ -# -*- coding: utf-8 -*- -# -# Configuration file for the Sphinx documentation builder. -# -# This file does only contain a selection of the most common options. For a -# full list see the documentation: -# http://www.sphinx-doc.org/en/master/config - -# -- Path setup -------------------------------------------------------------- - -# If extensions (or modules to document with autodoc) are in another directory, -# add these directories to sys.path here. If the directory is relative to the -# documentation root, use os.path.abspath to make it absolute, like shown here. -# - - -# -- Project information ----------------------------------------------------- - -project = 'Minecraft Manager Plugin' -copyright = '2018, Etzelia' -author = 'Etzelia' - -# The short X.Y version -version = '1.0' -# The full version, including alpha/beta/rc tags -release = '1.0' - - -# -- General configuration --------------------------------------------------- - -# If your documentation needs a minimal Sphinx version, state it here. -# -# needs_sphinx = '1.0' - -# Add any Sphinx extension module names here, as strings. They can be -# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom -# ones. -extensions = [ - 'sphinx.ext.doctest', - 'sphinx.ext.todo', - 'sphinx.ext.coverage', - 'sphinx.ext.ifconfig', - 'sphinx.ext.autodoc', -] - -# Add any paths that contain templates here, relative to this directory. -templates_path = ['_templates'] - -# The suffix(es) of source filenames. -# You can specify multiple suffix as a list of string: -# -# source_suffix = ['.rst', '.md'] -source_suffix = '.rst' - -html_show_sourcelink = False - -# The master toctree document. -master_doc = 'index' - -# The language for content autogenerated by Sphinx. Refer to documentation -# for a list of supported languages. -# -# This is also used if you do content translation via gettext catalogs. -# Usually you set "language" from the command line for these cases. -language = None - -# List of patterns, relative to source directory, that match files and -# directories to ignore when looking for source files. -# This pattern also affects html_static_path and html_extra_path . -exclude_patterns = ['common.rst', 'template.rst'] - -# The name of the Pygments (syntax highlighting) style to use. -pygments_style = 'sphinx' - - -# -- Options for HTML output ------------------------------------------------- - -# The theme to use for HTML and HTML Help pages. See the documentation for -# a list of builtin themes. -# -html_theme = 'sphinx_rtd_theme' - -# Path to the favicon -html_favicon = '_static/favicon.png' - -# Theme options are theme-specific and customize the look and feel of a theme -# further. For a list of options available for each theme, see the -# documentation. -# -# html_theme_options = {} - -# Add any paths that contain custom static files (such as style sheets) here, -# relative to this directory. They are copied after the builtin static files, -# so a file named "default.css" will overwrite the builtin "default.css". -html_static_path = [] - -# Custom sidebar templates, must be a dictionary that maps document names -# to template names. -# -# The default sidebars (for documents that don't match any pattern) are -# defined by theme itself. Builtin themes are using these templates by -# default: ``['localtoc.html', 'relations.html', 'sourcelink.html', -# 'searchbox.html']``. -# -# html_sidebars = {} - - -# -- Options for HTMLHelp output --------------------------------------------- - -# Output file base name for HTML help builder. -htmlhelp_basename = 'JavaDocsdoc' - - -# -- Options for LaTeX output ------------------------------------------------ - -latex_elements = { - # The paper size ('letterpaper' or 'a4paper'). - # - # 'papersize': 'letterpaper', - - # The font size ('10pt', '11pt' or '12pt'). - # - # 'pointsize': '10pt', - - # Additional stuff for the LaTeX preamble. - # - # 'preamble': '', - - # Latex figure (float) alignment - # - # 'figure_align': 'htbp', -} - -# Grouping the document tree into LaTeX files. List of tuples -# (source start file, target name, title, -# author, documentclass [howto, manual, or own class]). -latex_documents = [ - (master_doc, 'JavaDocs.tex', 'Java Plugin Documentation', - 'Etzelia', 'manual'), -] - - -# -- Options for manual page output ------------------------------------------ - -# One entry per manual page. List of tuples -# (source start file, name, description, authors, manual section). -man_pages = [ - (master_doc, 'javadocs', 'Java Plugin Documentation', - [author], 1) -] - - -# -- Options for Texinfo output ---------------------------------------------- - -# Grouping the document tree into Texinfo files. List of tuples -# (source start file, target name, title, author, -# dir menu entry, description, category) -texinfo_documents = [ - (master_doc, 'JavaDocs', 'Java Plugin Documentation', - author, 'JavaDocs', 'One line description of project.', - 'Miscellaneous'), -] - - -# -- Extension configuration ------------------------------------------------- - -# -- Options for todo extension ---------------------------------------------- - -# If true, `todo` and `todoList` produce output, else they produce nothing. -todo_include_todos = True \ No newline at end of file diff --git a/docs/source/index.rst b/docs/source/index.rst deleted file mode 100644 index 5f5f0fd..0000000 --- a/docs/source/index.rst +++ /dev/null @@ -1,17 +0,0 @@ -.. include:: common.rst - -Minecraft Manager -================= - -The Minecraft Manager plugin was created as a partner piece of the Minecraft Manager Web App. |br| -Documentation for the Django app can be found `here `_. - -:download:`Example Config ` - -.. toctree:: - :maxdepth: 1 - :titlesonly: - - changelog/index - commands - permissions \ No newline at end of file diff --git a/docs/source/permissions.rst b/docs/source/permissions.rst deleted file mode 100644 index 0635d71..0000000 --- a/docs/source/permissions.rst +++ /dev/null @@ -1,48 +0,0 @@ -.. include:: common.rst - -.. _minecraftmanager_permissions: - -Permissions -=========== - - - - -Basic ------ - -``minecraftmanager.use`` - Allows the use of ``/mcm port`` and ``/mcm reload``. - -``minecraftmanager.guest`` - This is how MCM figures out who is a "guest". This is used in the event that a player is accepted but isn't online, so all commands are ran next time they come online. - -.. warning:: - ``minecraftmanager.guest`` **must** be removed (negated) once a player is member, otherwise the commands will execute each time they log in. - -``minecraftmanager.apply`` - Allows the use of ``/apply``. - -.. warning:: - ``minecraftmanager.apply`` should probably be revoked once the player has been accepted. |br| - Otherwise, the player could continue to re-apply. (Even though it would never register again) - -``minecraftmanager.ticket`` - Allows the use of ``/ticket``. - ----- - -Staff ------ - -``minecraftmanager.application.search`` - Allows the use of ``/application search``. - -``minecraftmanager.application.action`` - Allows the use of ``/application accept`` and ``/application deny``. - -.. note:: - ``minecraftmanager.application.*`` will give both of the above nodes. - -``minecraftmanager.staff`` - Allows a player to use Staff Chat (if enabled) and receive Staff messages from MCM. - -``minecraftmanager.register`` - Allows the use of ``/mcm register`` to register for the web application. - -``minecraftmanager.*`` - All permissions for MCM. - -.. note:: - ``minecraftmanager.*`` also gives the ``minecraftmanager.apply`` node, which should probably be revoked in normal use cases. \ No newline at end of file diff --git a/pom.xml b/pom.xml index 1cb6492..bdd94b1 100644 --- a/pom.xml +++ b/pom.xml @@ -3,14 +3,14 @@ xyz.etztech MinecraftManager - 1.6 + 1.7 jar MinecraftManager A plugin used alongside the MinecraftManager Django project. - http://docs.etztech.xyz/minecraftmanagerplugin/ + https://git.jojodev.com/Minecraft/minecraftmanagerplugin @@ -46,8 +46,8 @@ xyz.etztech - EtzCore - 1.0.5 + plugin-api + 1.0.7 @@ -59,16 +59,12 @@ https://hub.spigotmc.org/nexus/content/groups/public/ - mvn-repo - https://mvnrepository.com/artifact/ - - - etztech-repo - http://repo.etztech.xyz + jojodev + https://mvn.jojodev.com/releases jcenter - http://jcenter.bintray.com + https://jcenter.bintray.com jitpack.io diff --git a/src/main/java/xyz/etztech/minecraftmanager/MCMUtil.java b/src/main/java/xyz/etztech/minecraftmanager/MCMUtil.java index 42ed646..fcbbc7a 100644 --- a/src/main/java/xyz/etztech/minecraftmanager/MCMUtil.java +++ b/src/main/java/xyz/etztech/minecraftmanager/MCMUtil.java @@ -10,7 +10,7 @@ import org.apache.log4j.Logger; import org.bukkit.Bukkit; import org.bukkit.ChatColor; import org.bukkit.entity.Player; -import xyz.etztech.core.web.CoreWeb; +import xyz.etztech.core.web.Http; import xyz.etztech.minecraftmanager.objects.ModelResponse; import java.util.Map; @@ -106,7 +106,7 @@ public class MCMUtil { try { Map filters = MCMAPI.setup(); filters.put("username__iexact", playerName); - ModelResponse response = new ModelResponse(CoreWeb.HTTP(MCMAPI.getModelUrl("player"), CoreWeb.HttpMethod.GET, + ModelResponse response = new ModelResponse(Http.HTTP(MCMAPI.getModelUrl("player"), Http.Method.GET, filters)); JsonArray players = response.getResults(); if (players.size() == 1) { diff --git a/src/main/java/xyz/etztech/minecraftmanager/MinecraftManager.java b/src/main/java/xyz/etztech/minecraftmanager/MinecraftManager.java index 00d77c7..0107f70 100644 --- a/src/main/java/xyz/etztech/minecraftmanager/MinecraftManager.java +++ b/src/main/java/xyz/etztech/minecraftmanager/MinecraftManager.java @@ -60,21 +60,15 @@ public class MinecraftManager extends JavaPlugin implements IMinecraftManager { // Add Commands CommandMain cmdMain = new CommandMain(this); - this.getCommand("minecraftmanager").setExecutor(cmdMain); cmdMain.startThread(); - CommandApplication cmdApplication = new CommandApplication(this); - this.getCommand("application").setExecutor(cmdApplication); - CommandApply cmdApply = new CommandApply(this); - this.getCommand("apply").setExecutor(cmdApply); - CommandTicket cmdTicket = new CommandTicket(this); - this.getCommand("ticket").setExecutor(cmdTicket); - CommandWarning cmdWarning = new CommandWarning(this); - this.getCommand("warn").setExecutor(cmdWarning); + new CommandApplication(this); + new CommandApply(this); + new CommandTicket(this); + new CommandWarning(this); // Rules is optional if (getConfig().getBoolean("rules.enabled")) { cmdRules = new CommandRules(this); - this.getCommand("rules").setExecutor(cmdRules); } // Add Listeners diff --git a/src/main/java/xyz/etztech/minecraftmanager/command/CommandApplication.java b/src/main/java/xyz/etztech/minecraftmanager/command/CommandApplication.java index 3048ec9..89f905a 100644 --- a/src/main/java/xyz/etztech/minecraftmanager/command/CommandApplication.java +++ b/src/main/java/xyz/etztech/minecraftmanager/command/CommandApplication.java @@ -1,8 +1,8 @@ package xyz.etztech.minecraftmanager.command; import com.google.gson.JsonArray; -import com.google.gson.JsonObject; import com.google.gson.JsonElement; +import com.google.gson.JsonObject; import net.md_5.bungee.api.chat.ClickEvent; import net.md_5.bungee.api.chat.ComponentBuilder; import net.md_5.bungee.api.chat.HoverEvent; @@ -13,9 +13,10 @@ import org.bukkit.command.Command; import org.bukkit.command.CommandExecutor; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; -import xyz.etztech.core.web.CoreWeb; +import xyz.etztech.core.web.Http; import xyz.etztech.core.web.ICallback; -import xyz.etztech.minecraftmanager.*; +import xyz.etztech.minecraftmanager.MCMAPI; +import xyz.etztech.minecraftmanager.MinecraftManager; import xyz.etztech.minecraftmanager.objects.MCMResponse; import xyz.etztech.minecraftmanager.objects.ModelResponse; @@ -28,6 +29,7 @@ public class CommandApplication implements CommandExecutor { public CommandApplication(MinecraftManager plugin) { this.plugin = plugin; + plugin.getCommand("application").setExecutor(this); } @Override @@ -99,7 +101,7 @@ public class CommandApplication implements CommandExecutor { if (sender.hasPermission("minecraftmanager.application.search")) { Map filter = MCMAPI.setup(); filter.put("username__icontains", name); - CoreWeb.asyncGetCallback(plugin, MCMAPI.getModelUrl("application"), filter, new SearchCallback(sender)); + Http.asyncGetCallback(plugin, MCMAPI.getModelUrl("application"), filter, new SearchCallback(sender)); } else { sender.sendMessage(ChatColor.RED + "You do not have permission to search applications."); } @@ -183,7 +185,7 @@ public class CommandApplication implements CommandExecutor { } else { filter.put("username__iexact", key); } - CoreWeb.asyncGetCallback(plugin, MCMAPI.getModelUrl("application"), filter, new InfoCallback(sender)); + Http.asyncGetCallback(plugin, MCMAPI.getModelUrl("application"), filter, new InfoCallback(sender)); } else { sender.sendMessage(ChatColor.RED + "You do not have permission to search applications."); } @@ -217,7 +219,7 @@ public class CommandApplication implements CommandExecutor { data.put("application_id", id); data.put("action", accepted ? "True" : "False"); data.put("username", username); - CoreWeb.asyncPostCallback(plugin, djangoUrl, data, new ActionCallback(sender)); + Http.asyncPostCallback(plugin, djangoUrl, data, new ActionCallback(sender)); } else { sender.sendMessage(ChatColor.RED + "You must use an application ID to ensure accuracy."); } @@ -246,7 +248,7 @@ public class CommandApplication implements CommandExecutor { String djangoUrl = MCMAPI.getDjangoUrl() + "plugin/application_clear/"; Map data = MCMAPI.setup(); data.put("application_id", id); - CoreWeb.asyncPostCallback(plugin, djangoUrl, data, new ClearCallback(sender)); + Http.asyncPostCallback(plugin, djangoUrl, data, new ClearCallback(sender)); } else { sender.sendMessage(ChatColor.RED + "You must use an application ID to ensure accuracy."); } diff --git a/src/main/java/xyz/etztech/minecraftmanager/command/CommandApply.java b/src/main/java/xyz/etztech/minecraftmanager/command/CommandApply.java index fe1444f..2a79f92 100644 --- a/src/main/java/xyz/etztech/minecraftmanager/command/CommandApply.java +++ b/src/main/java/xyz/etztech/minecraftmanager/command/CommandApply.java @@ -13,6 +13,7 @@ public class CommandApply implements CommandExecutor { public CommandApply(MinecraftManager plugin) { this.plugin = plugin; + plugin.getCommand("apply").setExecutor(this); } @Override diff --git a/src/main/java/xyz/etztech/minecraftmanager/command/CommandMain.java b/src/main/java/xyz/etztech/minecraftmanager/command/CommandMain.java index a4a62c3..f9e2768 100644 --- a/src/main/java/xyz/etztech/minecraftmanager/command/CommandMain.java +++ b/src/main/java/xyz/etztech/minecraftmanager/command/CommandMain.java @@ -8,11 +8,11 @@ import org.bukkit.command.Command; import org.bukkit.command.CommandExecutor; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; -import xyz.etztech.core.web.CoreWeb; +import xyz.etztech.core.web.Http; import xyz.etztech.core.web.ICallback; import xyz.etztech.minecraftmanager.MCMAPI; -import xyz.etztech.minecraftmanager.objects.MCMResponse; import xyz.etztech.minecraftmanager.MinecraftManager; +import xyz.etztech.minecraftmanager.objects.MCMResponse; import xyz.etztech.minecraftmanager.objects.MinecraftManagerThread; import xyz.etztech.minecraftmanager.tasks.ReportRunnable; @@ -30,6 +30,7 @@ public class CommandMain implements CommandExecutor { public CommandMain(MinecraftManager plugin) { this.plugin = plugin; this.cmdThread = new MinecraftManagerThread(plugin); + plugin.getCommand("minecraftmanager").setExecutor(this); } @Override @@ -140,10 +141,7 @@ public class CommandMain implements CommandExecutor { Map data = MCMAPI.setup(); data.put("uuid", player.getUniqueId().toString()); - CoreWeb.asyncPostCallback(plugin, djangoUrl, data, new RegisterCallback(player)); - - - + Http.asyncPostCallback(plugin, djangoUrl, data, new RegisterCallback(player)); } private void report(CommandSender sender) { diff --git a/src/main/java/xyz/etztech/minecraftmanager/command/CommandRules.java b/src/main/java/xyz/etztech/minecraftmanager/command/CommandRules.java index b53d912..59d3533 100644 --- a/src/main/java/xyz/etztech/minecraftmanager/command/CommandRules.java +++ b/src/main/java/xyz/etztech/minecraftmanager/command/CommandRules.java @@ -12,6 +12,7 @@ public class CommandRules implements CommandExecutor { public CommandRules(MinecraftManager plugin) { this.plugin = plugin; + plugin.getCommand("rules").setExecutor(this); } diff --git a/src/main/java/xyz/etztech/minecraftmanager/command/CommandTicket.java b/src/main/java/xyz/etztech/minecraftmanager/command/CommandTicket.java index 38b3172..8e5c441 100644 --- a/src/main/java/xyz/etztech/minecraftmanager/command/CommandTicket.java +++ b/src/main/java/xyz/etztech/minecraftmanager/command/CommandTicket.java @@ -1,8 +1,6 @@ package xyz.etztech.minecraftmanager.command; import com.google.gson.JsonObject; -import net.md_5.bungee.api.chat.ClickEvent; -import net.md_5.bungee.api.chat.TextComponent; import org.apache.commons.lang.StringUtils; import org.bukkit.ChatColor; import org.bukkit.Location; @@ -11,12 +9,11 @@ import org.bukkit.command.Command; import org.bukkit.command.CommandExecutor; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; -import xyz.etztech.core.web.CoreWeb; +import xyz.etztech.core.web.Http; import xyz.etztech.core.web.ICallback; import xyz.etztech.minecraftmanager.MCMAPI; -import xyz.etztech.minecraftmanager.MCMUtil; -import xyz.etztech.minecraftmanager.objects.MCMResponse; import xyz.etztech.minecraftmanager.MinecraftManager; +import xyz.etztech.minecraftmanager.objects.MCMResponse; import xyz.etztech.minecraftmanager.objects.MinecraftManagerThread; import java.util.Map; @@ -27,6 +24,7 @@ public class CommandTicket implements CommandExecutor { public CommandTicket(MinecraftManager plugin) { this.plugin = plugin; + plugin.getCommand("ticket").setExecutor(this); } private class TicketCallback implements ICallback { @@ -81,7 +79,7 @@ public class CommandTicket implements CommandExecutor { data.put("z", z); data.put("world", world); - CoreWeb.asyncPostCallback(plugin, djangoUrl, data, new TicketCallback(player)); + Http.asyncPostCallback(plugin, djangoUrl, data, new TicketCallback(player)); } else { sender.sendMessage(ChatColor.RED + "You do not have permission to submit a ticket."); sender.sendMessage(ChatColor.RED + "If you were submitting a ticket about not being able to submit a ticket, that's called irony."); diff --git a/src/main/java/xyz/etztech/minecraftmanager/command/CommandWarning.java b/src/main/java/xyz/etztech/minecraftmanager/command/CommandWarning.java index 24f93a3..c173038 100644 --- a/src/main/java/xyz/etztech/minecraftmanager/command/CommandWarning.java +++ b/src/main/java/xyz/etztech/minecraftmanager/command/CommandWarning.java @@ -6,12 +6,12 @@ import org.bukkit.command.Command; import org.bukkit.command.CommandExecutor; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; -import xyz.etztech.core.web.CoreWeb; +import xyz.etztech.core.web.Http; import xyz.etztech.core.web.ICallback; import xyz.etztech.minecraftmanager.MCMAPI; -import xyz.etztech.minecraftmanager.objects.MCMResponse; import xyz.etztech.minecraftmanager.MCMUtil; import xyz.etztech.minecraftmanager.MinecraftManager; +import xyz.etztech.minecraftmanager.objects.MCMResponse; import java.util.Arrays; import java.util.Map; @@ -22,6 +22,7 @@ public class CommandWarning implements CommandExecutor { public CommandWarning(MinecraftManager plugin) { this.plugin = plugin; + plugin.getCommand("warning").setExecutor(this); } private class WarningCallback implements ICallback { @@ -65,7 +66,7 @@ public class CommandWarning implements CommandExecutor { data.put("severity", getSeverity(args[1])); data.put("message", StringUtils.join(Arrays.copyOfRange(args, 2, args.length), " ")); - CoreWeb.asyncPostCallback(plugin, djangoUrl, data, new WarningCallback(staff)); + Http.asyncPostCallback(plugin, djangoUrl, data, new WarningCallback(staff)); } else { sender.sendMessage(ChatColor.RED + "You do not have permission to issue a warning."); } diff --git a/src/main/java/xyz/etztech/minecraftmanager/listeners/AsyncPlayerChatListener.java b/src/main/java/xyz/etztech/minecraftmanager/listeners/AsyncPlayerChatListener.java index 366d451..174ef64 100644 --- a/src/main/java/xyz/etztech/minecraftmanager/listeners/AsyncPlayerChatListener.java +++ b/src/main/java/xyz/etztech/minecraftmanager/listeners/AsyncPlayerChatListener.java @@ -10,9 +10,11 @@ import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; import org.bukkit.event.player.AsyncPlayerChatEvent; -import xyz.etztech.core.web.CoreWeb; +import xyz.etztech.core.web.Http; import xyz.etztech.core.web.ICallback; -import xyz.etztech.minecraftmanager.*; +import xyz.etztech.minecraftmanager.MCMAPI; +import xyz.etztech.minecraftmanager.MCMUtil; +import xyz.etztech.minecraftmanager.MinecraftManager; import xyz.etztech.minecraftmanager.objects.Application; import xyz.etztech.minecraftmanager.objects.MCMResponse; import xyz.etztech.minecraftmanager.objects.MinecraftManagerThread; @@ -121,7 +123,7 @@ public class AsyncPlayerChatListener implements Listener { Map data = MCMAPI.setup(); data.putAll(app.getForm()); - CoreWeb.asyncPostCallback(plugin, djangoUrl, data, new ApplicationCallback(sender)); + Http.asyncPostCallback(plugin, djangoUrl, data, new ApplicationCallback(sender)); } else { sender.sendMessage(ChatColor.GREEN + nextQuestion.getQuestion()); } diff --git a/src/main/java/xyz/etztech/minecraftmanager/listeners/CommandPreprocessListener.java b/src/main/java/xyz/etztech/minecraftmanager/listeners/CommandPreprocessListener.java index e74a388..9ca7be7 100644 --- a/src/main/java/xyz/etztech/minecraftmanager/listeners/CommandPreprocessListener.java +++ b/src/main/java/xyz/etztech/minecraftmanager/listeners/CommandPreprocessListener.java @@ -1,15 +1,14 @@ package xyz.etztech.minecraftmanager.listeners; -import org.apache.commons.lang.StringUtils; import net.md_5.bungee.api.chat.TextComponent; +import org.apache.commons.lang.StringUtils; import org.bukkit.Bukkit; import org.bukkit.ChatColor; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; -import org.bukkit.event.EventPriority; import org.bukkit.event.Listener; import org.bukkit.event.player.PlayerCommandPreprocessEvent; -import xyz.etztech.core.web.CoreWeb; +import xyz.etztech.core.web.Http; import xyz.etztech.minecraftmanager.MCMAPI; import xyz.etztech.minecraftmanager.MCMUtil; import xyz.etztech.minecraftmanager.MinecraftManager; @@ -69,7 +68,7 @@ public class CommandPreprocessListener implements Listener { data.put("staff", sender.getUniqueId().toString()); data.put("severity", "H"); data.put("message", message); - CoreWeb.asyncPost(plugin, djangoUrl, data); + Http.asyncPost(plugin, djangoUrl, data); } } } diff --git a/src/main/java/xyz/etztech/minecraftmanager/listeners/SessionListener.java b/src/main/java/xyz/etztech/minecraftmanager/listeners/SessionListener.java index d61d44d..5f77d81 100644 --- a/src/main/java/xyz/etztech/minecraftmanager/listeners/SessionListener.java +++ b/src/main/java/xyz/etztech/minecraftmanager/listeners/SessionListener.java @@ -8,9 +8,11 @@ import org.bukkit.event.Listener; import org.bukkit.event.player.PlayerJoinEvent; import org.bukkit.event.player.PlayerLoginEvent; import org.bukkit.event.player.PlayerQuitEvent; -import xyz.etztech.core.web.CoreWeb; +import xyz.etztech.core.web.Http; import xyz.etztech.core.web.ICallback; -import xyz.etztech.minecraftmanager.*; +import xyz.etztech.minecraftmanager.MCMAPI; +import xyz.etztech.minecraftmanager.MCMUtil; +import xyz.etztech.minecraftmanager.MinecraftManager; import xyz.etztech.minecraftmanager.objects.MinecraftManagerThread; import xyz.etztech.minecraftmanager.objects.ModelResponse; @@ -32,7 +34,7 @@ public class SessionListener implements Listener { data.put("username", player.getName()); data.put("uuid", player.getUniqueId().toString()); data.put("ip", event.getAddress().getHostAddress()); - CoreWeb.asyncPost(plugin, djangoUrl, data); + Http.asyncPost(plugin, djangoUrl, data); } @EventHandler @@ -44,7 +46,7 @@ public class SessionListener implements Listener { if (player.hasPermission("minecraftmanager.guest")) { Map filters = MCMAPI.setup(); filters.put("username__iexact", player.getName()); - CoreWeb.asyncGetCallback(plugin, MCMAPI.getModelUrl("application"), filters, new JoinCallback(player.getName())); + Http.asyncGetCallback(plugin, MCMAPI.getModelUrl("application"), filters, new JoinCallback(player.getName())); } } diff --git a/src/main/java/xyz/etztech/minecraftmanager/objects/Application.java b/src/main/java/xyz/etztech/minecraftmanager/objects/Application.java index fc522ec..a0f19b1 100644 --- a/src/main/java/xyz/etztech/minecraftmanager/objects/Application.java +++ b/src/main/java/xyz/etztech/minecraftmanager/objects/Application.java @@ -96,7 +96,7 @@ public class Application { } public String getFormatted() { - StringBuffer msg = new StringBuffer(); + StringBuilder msg = new StringBuilder(); msg.append("Username: " + getUsername() + "\n"); msg.append("Age: " + getAge() + "\n"); msg.append("Player Type: " + getPlayerType() + "\n"); diff --git a/src/main/java/xyz/etztech/minecraftmanager/objects/MCMResponse.java b/src/main/java/xyz/etztech/minecraftmanager/objects/MCMResponse.java index 0b39065..e1fdbd2 100644 --- a/src/main/java/xyz/etztech/minecraftmanager/objects/MCMResponse.java +++ b/src/main/java/xyz/etztech/minecraftmanager/objects/MCMResponse.java @@ -3,13 +3,9 @@ package xyz.etztech.minecraftmanager.objects; import com.google.gson.JsonArray; import com.google.gson.JsonElement; import com.google.gson.JsonObject; -import com.google.gson.JsonParser; -import org.bukkit.ChatColor; -import xyz.etztech.core.web.CoreResponse; +import xyz.etztech.core.web.Response; -import java.util.logging.Logger; - -public class MCMResponse extends CoreResponse { +public class MCMResponse extends Response { private JsonElement extra; public MCMResponse(JsonArray httpResponse) { diff --git a/src/main/java/xyz/etztech/minecraftmanager/objects/MinecraftManagerThread.java b/src/main/java/xyz/etztech/minecraftmanager/objects/MinecraftManagerThread.java index 3bcfd78..13be8f9 100644 --- a/src/main/java/xyz/etztech/minecraftmanager/objects/MinecraftManagerThread.java +++ b/src/main/java/xyz/etztech/minecraftmanager/objects/MinecraftManagerThread.java @@ -66,12 +66,6 @@ public class MinecraftManagerThread extends Thread { case "deny": action(args.get(0), false); break; - case "global": - globalChat(args); - break; - case "staff": - staffChat(args); - break; case "demote": demote(args.get(0)); break; @@ -155,31 +149,6 @@ public class MinecraftManagerThread extends Thread { }); } - - private void globalChat(ArrayList args) { - String name = args.get(0); - args.remove(0); - String tag = plugin.getConfig().getBoolean("tag", true) ? "[MCM] " : ""; - ComponentBuilder builder = new ComponentBuilder(tag + name + " > ") - .append(StringUtils.join(args, " ")); - TextComponent message = new TextComponent(builder.create()); - message.setHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, new ComponentBuilder("MCM Global Chat").create())); - MCMUtil.globalMessage(message); - } - - private void staffChat(ArrayList args) { - String name = args.get(0); - args.remove(0); - String tag = plugin.getConfig().getBoolean("tag", true) ? "[MCM] " : ""; - ComponentBuilder builder = new ComponentBuilder(tag + name + " > ") - .color(ChatColor.GOLD) - .append(StringUtils.join(args, " "), ComponentBuilder.FormatRetention.NONE) - .color(ChatColor.GREEN); - TextComponent message = new TextComponent(builder.create()); - message.setHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, new ComponentBuilder("MCM Staff Chat").create())); - MCMUtil.staffMessage(message); - } - private void demote(String username) { String engine = MinecraftManager.config.getString("permissions.engine"); String promote = MinecraftManager.config.getString("permissions.promote"); diff --git a/src/main/java/xyz/etztech/minecraftmanager/objects/Question.java b/src/main/java/xyz/etztech/minecraftmanager/objects/Question.java index f550fdc..da56bcd 100644 --- a/src/main/java/xyz/etztech/minecraftmanager/objects/Question.java +++ b/src/main/java/xyz/etztech/minecraftmanager/objects/Question.java @@ -8,7 +8,7 @@ public enum Question { TWO("How do you typically enjoy playing Minecraft?", "Your answer must be under 300 characters long."), THREE1("Have you ever been banned? Please answer just 'yes' or 'no'.", "Your answer must be just 'yes' or 'no'."), THREE2("Oof. That's okay, it's happened to plenty of people. Do you mind letting us know why?", "Your answer must be under 300 characters long."), - FOUR("How did you find out about our server?", "Your answer must be under 50 characters long."), + FOUR("Who referred you to the server?", "Your answer must be under 50 characters long."), FIVE("Last question! Have you read the rules thoroughly?", "Your answer must be under 10 characters long."), COMPLETE("All done! Staff should be reviewing your application any second now!", ""); @@ -32,50 +32,53 @@ public enum Question { } public static Question last(Question question) { - if (question == TWO) { - return ONE; - } else if (question == THREE1) { - return TWO; - } else if (question == THREE2) { - return THREE1; - } else if (question == FOUR) { - return THREE2; - } else { - return FOUR; + switch (question) { + case TWO: + return ONE; + case THREE1: + return TWO; + case THREE2: + return THREE1; + case FOUR: + return THREE2; + default: + return FOUR; } } public static Question next(Question question, String answer) { - if (question == ONE) { - return TWO; - } else if (question == TWO) { - return THREE1; - } else if (question == THREE1) { - return answer.equalsIgnoreCase("yes") ? THREE2 : FOUR; - } else if (question == THREE2) { - return FOUR; - } else if (question == FOUR) { - return FIVE; - } else { - return COMPLETE; + switch (question) { + case ONE: + return TWO; + case TWO: + return THREE1; + case THREE1: + return answer.equalsIgnoreCase("yes") ? THREE2 : FOUR; + case THREE2: + return FOUR; + case FOUR: + return FIVE; + default: + return COMPLETE; } } public static boolean validate(Question question, String answer) { - if (question == ONE) { - return StringUtils.isNumeric(answer); - } else if (question == TWO) { - return answer.length() <= 300; - } else if (question == THREE1) { - return answer.equalsIgnoreCase("yes") || answer.equalsIgnoreCase("no"); - } else if (question == THREE2) { - return answer.length() <= 300; - } else if (question == FOUR) { - return answer.length() <= 50; - } else if (question == FIVE) { - return answer.length() <= 10; + switch (question) { + case ONE: + return StringUtils.isNumeric(answer); + case TWO: + case THREE2: + return answer.length() <= 300; + case THREE1: + return answer.equalsIgnoreCase("yes") || answer.equalsIgnoreCase("no"); + case FOUR: + return answer.length() <= 50; + case FIVE: + return answer.length() <= 10; + default: + return false; } - return false; } diff --git a/src/main/java/xyz/etztech/minecraftmanager/test/Test.java b/src/main/java/xyz/etztech/minecraftmanager/test/Test.java deleted file mode 100644 index a64ae68..0000000 --- a/src/main/java/xyz/etztech/minecraftmanager/test/Test.java +++ /dev/null @@ -1,205 +0,0 @@ -package xyz.etztech.minecraftmanager.test; - -import com.google.gson.JsonArray; -import com.google.gson.JsonElement; -import org.apache.commons.lang.StringUtils; -import xyz.etztech.core.web.CoreWeb; -import xyz.etztech.core.web.ICallback; -import xyz.etztech.minecraftmanager.objects.Application; -import xyz.etztech.minecraftmanager.MCMAPI; -import xyz.etztech.minecraftmanager.objects.MCMResponse; -import xyz.etztech.minecraftmanager.objects.ModelResponse; - -import java.io.InputStream; -import java.util.HashMap; -import java.util.Map; -import java.util.Scanner; - -public class Test { - - public static void main(String[] args) throws Exception { - String testUrl = "http://127.0.0.1:8000/api/"; - String testApi = "Testing1"; - try { - testUrl = args[0]; - testApi = args[1]; - } catch (Exception ex) { - System.out.println("Using default test URL and password"); - } - System.out.println("URL: " + testUrl); - System.out.println("Password: " + testApi); - MCMAPI.test(testUrl, testApi); - int option = 0; - - while (option != 99) { - System.out.println("===== Test Util ====="); - System.out.println("1. Test Model Query - Search for applications with a username containing the number 1."); - System.out.println("2. Test Application Posting - Post two applications"); - System.out.println("3. Test Application Action - Accept Testing1 application"); - System.out.println("4. Test Application Action - Deny Testing2 application"); - System.out.println("5. Test Application Clear - Clear Testing2 application"); - System.out.println("6. Test Login - Spoof a login of user Etzelia with IP 127.0.0.1"); - System.out.println("7. Test Ticket - Send a test ticket"); - System.out.println("8. Test Warning - Send a test warning, medium importance, issued to Etzelia"); - System.out.println("99. Exit"); - System.out.print("Select Option: "); - Scanner scanner = new Scanner(System.in); - String input = scanner.next(); - int choice = StringUtils.isNumeric(input) ? Integer.parseInt(input) : 0; - switch (choice) { - case 1: - option = 1; - break; - case 2: - option = 2; - break; - case 3: - option = 3; - break; - case 4: - option = 4; - break; - case 5: - option = 5; - break; - case 6: - option = 6; - break; - case 7: - option = 7; - break; - case 8: - option = 8; - break; - case 99: - option = 99; - break; - default: - break; - } - - Map data = MCMAPI.setup(); - - if (option == 1) { - // Query Model - data.put("username__icontains", "1"); - ModelResponse response = new ModelResponse(CoreWeb.HTTP(MCMAPI.getModelUrl("application"), - CoreWeb.HttpMethod.GET, data)); - JsonArray results = response.getResults(); - System.out.println(results.size()); - for (JsonElement jsonElement : results) { - System.out.println("Raw JSON: " + jsonElement.toString()); - System.out.println("Username: " + jsonElement.getAsJsonObject().get("username").getAsString()); - System.out.println("Ever Banned: " + jsonElement.getAsJsonObject().get("ever_banned").getAsBoolean()); - } - } else if (option == 2) { - // Post two applications - Application app1 = new Application(); - app1.setUsername("Testing1"); - app1.setAge("20"); - app1.setPlayerType("First test application."); - app1.setEverBanned("no"); - app1.setEverBannedExplanation(""); - app1.setReference("reddit"); - app1.setReadRules("24karrot"); - String djangoUrl = MCMAPI.getDjangoUrl() + "plugin/application/"; - data.putAll(app1.getForm()); - MCMResponse response1 = new MCMResponse(CoreWeb.HTTP(djangoUrl, CoreWeb.HttpMethod.POST, - data)); - System.out.println("===== App 1 ====="); - System.out.println("Status: " + response1.getStatus()); - System.out.println("Message: " + response1.getMessage()); - - Application app2 = new Application(); - app2.setUsername("Testing2"); - app2.setAge("20"); - app2.setPlayerType("Second test application."); - app2.setEverBanned("yes"); - app2.setEverBannedExplanation("Griefing"); - app2.setReference("planet minecraft"); - app2.setReadRules("24karrot"); - data = MCMAPI.setup(); - data.putAll(app2.getForm()); - MCMResponse response2 = new MCMResponse(CoreWeb.HTTP(djangoUrl, CoreWeb.HttpMethod.POST, - data)); - System.out.println("===== App 2 ====="); - System.out.println("Status: " + response2.getStatus()); - System.out.println("Message: " + response2.getMessage()); - } else if (option == 3 || option == 4) { - boolean accept = option == 3; - String username = option == 3 ? "Testing1" : "Testing2"; - data.put("username__exact", username); - ModelResponse response = new ModelResponse(CoreWeb.HTTP(MCMAPI.getModelUrl("application"), - CoreWeb.HttpMethod.GET, data)); - JsonArray array = response.getResults(); - if (array.size() != 1) { - System.out.println("Couldn't find the application for " + username + ". Does it exist?"); - } else { - String id = array.get(0).getAsJsonObject().get("id").getAsString(); - String djangoUrl = MCMAPI.getDjangoUrl() + "plugin/application_action/"; - data.put("application_id", id); - data.put("action", accept ? "True" : "False"); - data.put("username", "Plugin Test"); - MCMResponse mcmResponse = new MCMResponse(CoreWeb.HTTP(djangoUrl, CoreWeb.HttpMethod.POST, - data)); - System.out.println("===== " + username + " ====="); - System.out.println("Status: " + mcmResponse.getStatus()); - System.out.println("Message: " + mcmResponse.getMessage()); - } - } else if (option == 5) { - data.put("username__exact", "Testing2"); - ModelResponse response = new ModelResponse(CoreWeb.HTTP(MCMAPI.getModelUrl("application"), - CoreWeb.HttpMethod.GET, data)); - JsonArray array = response.getResults(); - if (array.size() != 1) { - System.out.println("Couldn't find the application for Testing2. Does it exist?"); - } else { - String id = array.get(0).getAsJsonObject().get("id").getAsString(); - String djangoUrl = MCMAPI.getDjangoUrl() + "plugin/application_clear/"; - data.put("application_id", id); - MCMResponse mcmResponse = new MCMResponse(CoreWeb.HTTP(djangoUrl, CoreWeb.HttpMethod.POST, - data)); - System.out.println("===== Testing2 ====="); - System.out.println("Status: " + mcmResponse.getStatus()); - System.out.println("Message: " + mcmResponse.getMessage()); - } - } else if (option == 6) { - String djangoUrl = MCMAPI.getDjangoUrl() + "plugin/login/"; - data.put("uuid", "bf0446a8-9695-4c41-aa4c-7ff45bfd1171"); - data.put("username", "Etzelia"); - data.put("ip", "127.0.0.1"); - MCMResponse response = new MCMResponse(CoreWeb.HTTP(djangoUrl, CoreWeb.HttpMethod.POST, - data)); - System.out.println("===== Login ====="); - System.out.println("Status: " + response.getStatus()); - System.out.println("Message: " + response.getMessage()); - } else if (option == 7) { - String djangoUrl = MCMAPI.getDjangoUrl() + "plugin/ticket/"; - data.put("uuid", "bf0446a8-9695-4c41-aa4c-7ff45bfd1171"); - data.put("message", "Test Ticket"); - data.put("x", "1"); - data.put("y", "2"); - data.put("z", "3"); - data.put("world", "O"); - MCMResponse response = new MCMResponse(CoreWeb.HTTP(djangoUrl, CoreWeb.HttpMethod.POST, - data)); - System.out.println("===== Ticket ====="); - System.out.println("Status: " + response.getStatus()); - System.out.println("Message: " + response.getMessage()); - } else if (option == 8) { - String djangoUrl = MCMAPI.getDjangoUrl() + "plugin/warning/"; - data.put("player", "bf0446a8-9695-4c41-aa4c-7ff45bfd1171"); - data.put("staff", "bf0446a8-9695-4c41-aa4c-7ff45bfd1171"); - data.put("severity", "H"); - data.put("message", "Test Warning"); - MCMResponse response = new MCMResponse(CoreWeb.HTTP(djangoUrl, CoreWeb.HttpMethod.POST, - data)); - System.out.println("===== Warning ====="); - System.out.println("Status: " + response.getStatus()); - System.out.println("Message: " + response.getMessage()); - } - } - } - - -} \ No newline at end of file diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml index 8501634..85941bb 100644 --- a/src/main/resources/config.yml +++ b/src/main/resources/config.yml @@ -8,9 +8,6 @@ staff-chat: prefix: - "#" -# If true, chat is prefixed with an [MCM] tag. When false, the tag is moved to a hover event. -tag: true - # Override rules # A '*' before a rule will show as a sub-rule rules: @@ -32,7 +29,7 @@ rules: - "Every person who has their application denied will be auto-muted in game. Mute evasion will get you banned. Repeated mutes may lead to a ban." application: validate: true - answer: "24karrot" + answer: "penguin" # Ban options # Bans can auto-generate a warning (High severity) @@ -49,7 +46,7 @@ ban: permissions: # Can be PermissionsEX or LuckPerms - engine: "PermissionsEX" + engine: "LuckPerms" # The name of the group to promote to if accepted promote: "member"