ProjectRetile 1.0.0b

The new, modern & hackable BungeeCord Report Plugin. The follow up remake to UltimateReport.

  1. Polygoon
    Tested Minecraft Versions:
    • 1.7
    • 1.8
    • 1.9
    • 1.10
    • 1.11
    Contributors:
    WolverinDev, _NyCoSD_, JUMBONET
    ProjectRetile
    The new, modern & hackable BungeeCord Report Plugin

    [​IMG]
    [​IMG]

    ProjectRetile is the new, modern & hackable report plugin for Minecraft BungeeCord networks. It allows the server owners to keep track of rule breakers and courage the users to report them. Besides that, every Report against reported users will be logged to prevent staff/player abuse.

    ProjectRetile was previously known as UltimateReport and is a fully recoded plugin. No bugs / unwanted features of the old UltimateReport versions are included into this plugin.

    Features
    • SQLite (Filesystem) and MySQL support
    • Easy to use for both users and staff
    • Automatic uuid resolving using http://mcapi.ca/ (Online/Async) or BungeeCord (Offline/Sync)
    • Toggleable receiving of report messages
    • Clickable Gui's for better user handeling
    • Blacklist
    • 100% customize- and hackable
    • Logging of every action taken using reports
    • Offline reports
    • Error preventing (Users reporting themself, etc.)
    • Cooldown
    • Configurable command aliases and messages
    • Async update & UUID requests (Online) and MySQL connection Pooling
    • Offline reporting
    • Multi language (English, German, French etc.)
    Commands and Permissions
    • /reportinfo <Token>
      • Shows Information about a Report.
      • projectretile.commands.reportinfo
    • /listreports
      • Lists all Reports in a Gui. Clicking on a Player Skull teleports you to the Server of the reported User.
      • projectretile.commands.listreports
    • /waitingqueue
      • Shows a list of Reports that have been submited while no staff was online. Once executing this command will clear the Queue and add them as normal, seen reports.
      • projectretile.commands.queue
    • /report <Victim> <Reason> [...]
      • Submites a Report. If staff is online, they will receive a Message. If not, the report will be added to the Waiting Queue.
      • projectretile.commands.report
    • /retile [Debug, Reload]
      • General Command used for managing the Plugin.
      • projectretile.general
      • projectretile.general.debug
      • projectretile.general.reload
    • /retile dump
      • Creates a dump report on hastebin about the plugin, server, machine, config, plugins, database and cache
      • Notice: This command gives out the hashing of all of your plugins, the complete plugin cache and the backend ip of your servers. Never share this dump publicly.
      • A dump will look like this: http://hastebin.com/ikinakivos
      • projectretile.general.dump
    • /togglereports
      • Toggles if a Staff Member is receiving Notifications.
      • projectretile.commands.togglereports
    • None
      • Allows submiting Reports containing Blacklisted Words.
      • projectretile.blacklist.bypass
    • None
      • Marks a Player as staff member. If online and receiving notifications, the Player will recive Report Notifications.
      • projectretile.report.receive
    • None
      • Shows a Message if new Reports have been submited while no staff member was online.
      • projectretile.report.receive.offline
    How to install
    1. Download the plugin using the download button on top of this page
    2. Drag & Drop the plugin into your BungeeCord plugins folder
    3. Download and install BungeeUtil
    4. Start the proxy
    5. (Optional) Fill in MySQL Informations into the database.yml if you want to use MySQL
    6. Enjoy a working report plugin
    Config
    Code (toml (Unknown Language)):
    # Configuration file for Project Retile

    [General]
      # Put in here a prefix. This prefix will be infront of every message.
      prefix = "&c> &7"
      # Put in here a two character long string with a language code
      # ProjectRetile will then search for a file named "messages_<code>.properties" in the "locale" directory.
      # If Retile doesn't finds the file, errors will occur.
      locale = "en"
      # Should BungeeCord be used for UUID resolving?
      # This may be not safe as some hacked clients can fake their UUID
      # This is automaticly enabled for offline mode networks
      usebungeecordforuuid = false
      # How long should be the cooldown for the /report command? This is calculated in seconds.
      cooldown = 60
      # Should the report notification be clickable?
      # A click on that notification sends the clicker to the victim's server
      clickablemessages = true
      # Put in here a java.text.SimpleDateFormat time and date pattern
      # This specifies how the date will be displayed in the click gui's.
      # You can find a list of patterns here: https://docs.oracle.com/javase/8/docs/api/java/text/SimpleDateFormat.html
      dateformat = "dd.MM.yyyy hh:mm:ss a"
      # Should the updater be enabled? The updater checks for a update every hour.
      updater = true
      # Don't change this value unless you want to reset the config
      revision = 1

    [Pools]
      # How many connections should be keept alive when idling?
      minpoolidlesize = 5
      # How many connections should be max. openend?
      maxpoolsize = 20
      # How long should we try to connect to a database? Set higher if the a error occurs when connecting
      timeout = 5000

    # Put in the [] a list of aliases. These aliases need to be prefixed and suffixed with ""
    # The key (before the =) is the /<key> command
    [Aliases]
      report = [ "r", "ticket", "reportuser" ]
      listreports = [ "reports", "lr" ]
      togglereports = [ "toggle", "tr" ]
      reportinfo = [ "inforeport", "ir", "ri", "info" ]
      waitingqueue = [ "queue", "listqueue" ]

    Messages File

    The Messages Files are stored in a sub-directory in the Plugin Folder named locale. For it to work, it requires a File named messages_<locale>.properties in this directory. <locale> means your Locale Shortcode set in the config.yml File.

    You can view all available Locales here: https://github.com/Acquized/ProjectRetile/tree/master/src/main/resources/messages
    Feel free to contribute a translated File in your language.

    Database
    Code (toml (Unknown Language)):
    # Database file for Project Retile

    [Database]
      # Put in here the database type that should be used
      # Supported: "SQLite", "MySQL" (case-sensitive)
      type = "SQLite"

    [Database.MySQL]
      adress = "127.0.0.1"
      port = 3307
      database = "ProjectRetile"
      username = "root"
      password = "passw0rd"

    [Database.SQLite]
      file = "database.db"

    Blacklist File
    Code (toml (Unknown Language)):
    # Blacklist file for Project Retile

    blacklist = [
      "shit",
      "fuck",
      "damn",
      "bitch",
      "crap",
      "piss",
      "dick",
      "darn",
      "pussy",
      "cock",
      "fag",
      "faggot",
      "asshole",
      "bastard",
      "slut",
      "douche"
    ]

    FAQ

    Q:
    When I start the plugin, there is a "java.lang.UnsupportedClassVersionError" in Console!
    A: This Plugin requires Java 8. Please consider updating your Java to fix various security issues and to get this plugin working.

    Q: I change value in config/database config/blacklist but it doesn't applies ingame!
    A: Toml will fallback to the default configuration if the file contains errors. Please check your file with a Toml checker or send me a private message.

    Life Circle

    The Plugin's current released version will be supported until a newer version gets released on GitHub or the latest update is older than 12 months.

    API

    The Plugin contains a public API accessable by any BungeeCord Plugin. Access it using:
    Code (Java):
    ProjectRetile.getInstance().getApi()
    and use your IDE auto-completion to view all avaible Methods.

    License

    The Project is licensed under the Apache License v2. You can view the complete License in the LICENSE.txt File in the Main Root of the GitHub Repo.

    Issues

    If you have a issue, question or can't get the plugin working, feel free to open a Issue on GitHub. I will not accept any issues or questions in the Review Section / Discussion Section / Private Messages.

    Please keep in mind that negative Reviews just demotivate me and won't get your Bug fixed / Feature implemented. Open instead a Issue Request on GitHub.

    Links

    GitHub: https://github.com/Acquized/ProjectRetile
    JavaDocs: https://acquized.github.io/ProjectRetile
    Releases: https://github.com/Acquized/ProjectRetile/releases
    Gitter Chat: https://gitter.im/Acquized/ProjectRetile

Recent Reviews

  1. 8Marc8
  2. jeanpaul831
    jeanpaul831
    5/5,
    Version: v1.0.0
    Great, good work, excellent reporting plugin, you launched the ball too far away man, for this you have:

    1- 5 star for 10/10 plugin
    2- the Spanish translation: http://pastebin.com/ErSV22jN

    also, this account is too old, make sure paste the language as my new name, JUMBONET.
    1. Polygoon
      Author's Response
      Thanks for the review and the translation, will be implemented with v1.0.1.
  3. Mot458
    Mot458
    5/5,
    Version: v1.0.0-PRERELEASEf
    It's good plugin :)
    ----------------------------------------------------------
    this is for the fulfillment 100 charakters :D
  4. Jumpstyle135
    Jumpstyle135
    2/5,
    Version: v1.0.0-PRERELEASEe
    mass error

    io.netty.channel.AbstractChannelHandlerContext.invokeChannelInactive(AbstractChannelHandlerContext.java:218)
    at io.netty.channel.AbstractChannelHandlerContext.fireChannelInactive(AbstractChannelHandlerContext.java:204)
    at io.netty.channel.ChannelInboundHandlerAdapter.channelInactive(ChannelInboundHandlerAdapter.java:75)
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelInactive(AbstractChannelHandlerContext.java:218)
    at io.netty.channel.AbstractChannelHandlerContext.fireChannelInactive(AbstractChannelHandlerContext.java:204)
    at io.netty.channel.ChannelInboundHandlerAdapter.channelInactive(ChannelInboundHandlerAdapter.java:75)
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelInactive(AbstractChannelHandlerContext.java:218)
    at io.netty.channel.AbstractChannelHandlerContext.fireChannelInactive(AbstractChannelHandlerContext.java:204)
    at io.netty.handler.codec.ByteToMessageDecoder.channelInactive(ByteToMessageDecoder.java:332)
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelInactive(AbstractChannelHandlerContext.java:218)
    at io.netty.channel.AbstractChannelHandlerContext.fireChannelInactive(AbstractChannelHandlerContext.java:204)
    at io.netty.channel.ChannelInboundHandlerAdapter.channelInactive(ChannelInboundHandlerAdapter.java:75)
    at io.netty.handler.timeout.ReadTimeoutHandler.channelInactive(ReadTimeoutHandler.java:146)
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelInactive(AbstractChannelHandlerContext.java:218)
    at io.netty.channel.AbstractChannelHandlerContext.fireChannelInactive(AbstractChannelHandlerContext.java:204)
    at io.netty.channel.DefaultChannelPipeline.fireChannelInactive(DefaultChannelPipeline.java:828)
    at io.netty.channel.AbstractChannel$AbstractUnsafe$7.run(AbstractChannel.java:625)
    at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:358)
    at io.netty.channel.epoll.EpollEventLoop.run(EpollEventLoop.java:259)
    at io.netty.util.concurrent.SingleThreadEventExecutor$2.run(SingleThreadEventExecutor.java:112)
    at java.lang.Thread.run(Thread.java:745)

    com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure

    10:55:00 [AVERTISSEMENT] Error in dispatching command
    java.lang.NullPointerException
    at com.github.acquized.retile.cache.impl.Offline.username(Offline.java:29)
    at com.github.acquized.retile.commands.ListReportsCommand.execute(ListReportsCommand.java:77)
    at net.md_5.bungee.api.plugin.PluginManager.dispatchCommand(PluginManager.java:169)
    at net.md_5.bungee.api.plugin.PluginManager.dispatchCommand(PluginManager.java:116)
    at net.md_5.bungee.connection.UpstreamBridge.handle(UpstreamBridge.java:113)
    at net.md_5.bungee.protocol.packet.Chat.handle(Chat.java:50)
    at dev.wolveringer.network.channel.ChannelHandler.channelRead(ChannelHandler.java:76)
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:318)
    at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:304)
    at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:103)
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:318)
    at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:304)
    at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:103)
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:318)
    at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:304)
    at io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:276)
    at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:263)
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:318)
    at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:304)
    at io.netty.handler.timeout.ReadTimeoutHandler.channelRead(ReadTimeoutHandler.java:152)
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:318)
    at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:304)
    at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:846)
    at io.netty.channel.epoll.AbstractEpollStreamChannel$EpollStreamUnsafe.epollInReady(AbstractEpollStreamChannel.java:823)
    at io.netty.channel.epoll.EpollEventLoop.processReady(EpollEventLoop.java:339)
    at io.netty.channel.epoll.EpollEventLoop.run(EpollEventLoop.java:255)
    at io.netty.util.concurrent.SingleThreadEventExecutor$2.run(SingleThreadEventExecutor.java:112)
    at java.lang.Thread.run(Thread.java:745)

    10:55:52 [GRAVE] Exception in thread "main"
    10:55:52 [GRAVE] java.io.IOException: Erreur d'entrée/sortie
    10:55:52 [GRAVE] at java.io.FileInputStream.read(Native Method)
    10:55:52 [GRAVE] at jline.internal.NonBlockingInputStream.read(NonBlockingInputStream.java:169)
    10:55:52 [GRAVE] at jline.internal.NonBlockingInputStream.read(NonBlockingInputStream.java:137)
    10:55:52 [GRAVE] at jline.internal.NonBlockingInputStream.read(NonBlockingInputStream.java:246)
    1. Polygoon
  5. LimitedGames
    LimitedGames
    5/5,
    Version: v1.0.0-PRERELEASEe
    Nice and usefill plugin, if something wont work the dev. will fix it verry verry fast. Verry good job.
  6. Supremo1816
    Supremo1816
    5/5,
    Version: 2.0.1
    The plugin is excellent , but I have a small problem with it, but otherwise is fine, seems promising . I hope you can keep doing good plugins , luck !
  7. Snyd3rs
    Snyd3rs
    5/5,
    Version: 2.0.1
    Excellent plugin, perfect plugin report, I advise to download it.
    Be careful with uncompatible plugins.
  8. Rammelkast
    Rammelkast
    1/5,
    Version: 2.0.1
    Absolutely horrible.
    Because of some weird reason, it causes my players to still be online after they leave.
    1. Polygoon
      Author's Response
      This Bug has been fixed. Also, the project is now named 'ProjectRetile' and has been completly recoded.
  9. XxMarlonxX
    XxMarlonxX
    5/5,
    Version: 2.0.1
    Excellent plugin but I want to know if it works for bungeecord version and if I could put message to change when a player reports.
  10. front7HD
    front7HD
    3/5,
    Version: 1.4
    when i will report a user than the chat was write Your Report Reason contains blacklisted words. why is this otherwise ist this plugin relly good (sorry for my bad english)
    1. Polygoon
      Author's Response
      This Bug has been fixed. Also, the project is now named 'ProjectRetile' and has been completly recoded.