diff --git a/Plan/common/src/main/java/com/djrapitops/plan/delivery/rendering/html/Contributors.java b/Plan/common/src/main/java/com/djrapitops/plan/delivery/rendering/html/Contributors.java new file mode 100644 index 000000000..041ea7aa3 --- /dev/null +++ b/Plan/common/src/main/java/com/djrapitops/plan/delivery/rendering/html/Contributors.java @@ -0,0 +1,106 @@ +/* + * This file is part of Player Analytics (Plan). + * + * Plan is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License v3 as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Plan is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with Plan. If not, see . + */ +package com.djrapitops.plan.delivery.rendering.html; + +import static com.djrapitops.plan.delivery.rendering.html.Contributors.For.CODE; +import static com.djrapitops.plan.delivery.rendering.html.Contributors.For.LANG; + +/** + * Contains list of contributors to add to the about modal. + * + * @author Rsl1122 + */ +public class Contributors { + + private Contributors() { + // Static method class + } + + public static String generateContributorHtml() { + Contributor[] contributors = new Contributor[]{ + new Contributor("aidn5", CODE), + new Contributor("Argetan", CODE), + new Contributor("Aurelien", CODE, LANG), + new Contributor("BrainStone", CODE), + new Contributor("Combustible", CODE), + new Contributor("CyanTech", LANG), + new Contributor("DarkPyves", CODE), + new Contributor("DaveDevil", LANG), + new Contributor("enterih", LANG), + new Contributor("Eyremba", LANG), + new Contributor("f0rb1d (\u4f5b\u58c1\u706f)", LANG), + new Contributor("fuzzlemann", CODE, LANG), + new Contributor("jyhsu2000", CODE), + new Contributor("jvmuller", LANG), + new Contributor("Malachiel", LANG), + new Contributor("Miclebrick", CODE), + new Contributor("Morsmorse", LANG), + new Contributor("Nogapra", LANG), + new Contributor("skmedix", CODE), + new Contributor("TDJisvan", LANG), + new Contributor("Vankka", CODE), + new Contributor("yukieji", LANG), + new Contributor("qsefthuopq", LANG) + }; + int estimatedLength = contributors.length * 40 + 50; + StringBuilder html = new StringBuilder(estimatedLength); + for (Contributor contributor : contributors) { + contributor.appendHtml(html); + } + return html.toString(); + } + + enum For { + CODE("fa-code"), + LANG("fa-language"); + + private String icon; + + For(String icon) { + this.icon = icon; + } + + String toHtml() { + return " "; + } + } + + private static class Contributor implements Comparable { + String name; + For[] contributed; + + Contributor(String name, For... contributed) { + this.name = name; + this.contributed = contributed; + } + + public void appendHtml(StringBuilder html) { + html.append("
  • ") + .append(name); + for (For contribution : contributed) { + html.append(contribution.toHtml()); + } + html.append("
  • "); + } + + @Override + public int compareTo(Contributor o) { + return String.CASE_INSENSITIVE_ORDER.compare(this.name, o.name); + } + } + +} \ No newline at end of file diff --git a/Plan/common/src/main/java/com/djrapitops/plan/delivery/rendering/pages/NetworkPage.java b/Plan/common/src/main/java/com/djrapitops/plan/delivery/rendering/pages/NetworkPage.java index 5160bff34..d94bb38be 100644 --- a/Plan/common/src/main/java/com/djrapitops/plan/delivery/rendering/pages/NetworkPage.java +++ b/Plan/common/src/main/java/com/djrapitops/plan/delivery/rendering/pages/NetworkPage.java @@ -19,6 +19,7 @@ package com.djrapitops.plan.delivery.rendering.pages; import com.djrapitops.plan.delivery.domain.container.CachingSupplier; import com.djrapitops.plan.delivery.formatting.Formatters; import com.djrapitops.plan.delivery.formatting.PlaceholderReplacer; +import com.djrapitops.plan.delivery.rendering.html.Contributors; import com.djrapitops.plan.delivery.webserver.cache.DataID; import com.djrapitops.plan.delivery.webserver.cache.JSONCache; import com.djrapitops.plan.exceptions.GenerationException; @@ -92,6 +93,7 @@ public class NetworkPage implements Page { placeholders.put("version", versionCheckSystem.getUpdateButton().orElse(versionCheckSystem.getCurrentVersionButton())); placeholders.put("updateModal", versionCheckSystem.getUpdateModal()); + placeholders.put("contributors", Contributors.generateContributorHtml()); CachingSupplier pluginTabs = new CachingSupplier<>(() -> { List extensionData = dbSystem.getDatabase().query(new ExtensionServerDataQuery(serverUUID)); diff --git a/Plan/common/src/main/java/com/djrapitops/plan/delivery/rendering/pages/PlayerPage.java b/Plan/common/src/main/java/com/djrapitops/plan/delivery/rendering/pages/PlayerPage.java index f2753be62..ea5930269 100644 --- a/Plan/common/src/main/java/com/djrapitops/plan/delivery/rendering/pages/PlayerPage.java +++ b/Plan/common/src/main/java/com/djrapitops/plan/delivery/rendering/pages/PlayerPage.java @@ -21,6 +21,7 @@ import com.djrapitops.plan.delivery.domain.keys.PlayerKeys; import com.djrapitops.plan.delivery.formatting.Formatter; import com.djrapitops.plan.delivery.formatting.Formatters; import com.djrapitops.plan.delivery.formatting.PlaceholderReplacer; +import com.djrapitops.plan.delivery.rendering.html.Contributors; import com.djrapitops.plan.delivery.rendering.html.Html; import com.djrapitops.plan.exceptions.GenerationException; import com.djrapitops.plan.identification.ServerInfo; @@ -108,6 +109,7 @@ public class PlayerPage implements Page { placeholders.put("firstDay", 1); placeholders.put("backButton", (serverInfo.getServer().isProxy() ? Html.BACK_BUTTON_NETWORK : Html.BACK_BUTTON_SERVER).create()); + placeholders.put("contributors", Contributors.generateContributorHtml()); PlayerPluginTab pluginTabs = pageFactory.inspectPluginTabs(playerUUID); diff --git a/Plan/common/src/main/java/com/djrapitops/plan/delivery/rendering/pages/PlayersPage.java b/Plan/common/src/main/java/com/djrapitops/plan/delivery/rendering/pages/PlayersPage.java index bcae33b1e..13d041a5a 100644 --- a/Plan/common/src/main/java/com/djrapitops/plan/delivery/rendering/pages/PlayersPage.java +++ b/Plan/common/src/main/java/com/djrapitops/plan/delivery/rendering/pages/PlayersPage.java @@ -17,6 +17,7 @@ package com.djrapitops.plan.delivery.rendering.pages; import com.djrapitops.plan.delivery.formatting.PlaceholderReplacer; +import com.djrapitops.plan.delivery.rendering.html.Contributors; import com.djrapitops.plan.exceptions.GenerationException; import com.djrapitops.plan.identification.ServerInfo; import com.djrapitops.plan.settings.config.PlanConfig; @@ -56,6 +57,7 @@ public class PlayersPage implements Page { placeholders.put("version", versionCheckSystem.getUpdateButton().orElse(versionCheckSystem.getCurrentVersionButton())); placeholders.put("updateModal", versionCheckSystem.getUpdateModal()); + placeholders.put("contributors", Contributors.generateContributorHtml()); if (serverInfo.getServer().isProxy()) { placeholders.put("networkName", config.get(ProxySettings.NETWORK_NAME)); } else { diff --git a/Plan/common/src/main/java/com/djrapitops/plan/delivery/rendering/pages/ServerPage.java b/Plan/common/src/main/java/com/djrapitops/plan/delivery/rendering/pages/ServerPage.java index 6b0a9a7b2..e48cfeaa2 100644 --- a/Plan/common/src/main/java/com/djrapitops/plan/delivery/rendering/pages/ServerPage.java +++ b/Plan/common/src/main/java/com/djrapitops/plan/delivery/rendering/pages/ServerPage.java @@ -22,6 +22,7 @@ import com.djrapitops.plan.delivery.domain.container.RawDataContainer; import com.djrapitops.plan.delivery.domain.keys.AnalysisKeys; import com.djrapitops.plan.delivery.formatting.Formatters; import com.djrapitops.plan.delivery.formatting.PlaceholderReplacer; +import com.djrapitops.plan.delivery.rendering.html.Contributors; import com.djrapitops.plan.delivery.rendering.html.Html; import com.djrapitops.plan.delivery.webserver.cache.DataID; import com.djrapitops.plan.delivery.webserver.cache.JSONCache; @@ -123,6 +124,7 @@ public class ServerPage implements Page { ); placeholders.put("backButton", serverInfo.getServer().isProxy() ? Html.BACK_BUTTON_NETWORK.create() : ""); + placeholders.put("contributors", Contributors.generateContributorHtml()); placeholders.put("version", versionCheckSystem.getUpdateButton().orElse(versionCheckSystem.getCurrentVersionButton())); placeholders.put("updateModal", versionCheckSystem.getUpdateModal()); diff --git a/Plan/common/src/main/java/com/djrapitops/plan/delivery/webserver/response/errors/ErrorResponse.java b/Plan/common/src/main/java/com/djrapitops/plan/delivery/webserver/response/errors/ErrorResponse.java index a2916a537..28b12e3a3 100644 --- a/Plan/common/src/main/java/com/djrapitops/plan/delivery/webserver/response/errors/ErrorResponse.java +++ b/Plan/common/src/main/java/com/djrapitops/plan/delivery/webserver/response/errors/ErrorResponse.java @@ -16,6 +16,7 @@ */ package com.djrapitops.plan.delivery.webserver.response.errors; +import com.djrapitops.plan.delivery.rendering.html.Contributors; import com.djrapitops.plan.delivery.webserver.response.pages.PageResponse; import com.djrapitops.plan.settings.locale.Locale; import com.djrapitops.plan.settings.theme.Theme; @@ -59,6 +60,7 @@ public class ErrorResponse extends PageResponse { placeholders.put("paragraph", paragraph); placeholders.put("version", versionCheckSystem.getUpdateButton().orElse(versionCheckSystem.getCurrentVersionButton())); placeholders.put("updateModal", versionCheckSystem.getUpdateModal()); + placeholders.put("contributors", Contributors.generateContributorHtml()); setContent(StringSubstitutor.replace(getContent(), placeholders)); } diff --git a/Plan/common/src/main/java/com/djrapitops/plan/settings/locale/LangCode.java b/Plan/common/src/main/java/com/djrapitops/plan/settings/locale/LangCode.java index 75968f96c..3fb4615bb 100644 --- a/Plan/common/src/main/java/com/djrapitops/plan/settings/locale/LangCode.java +++ b/Plan/common/src/main/java/com/djrapitops/plan/settings/locale/LangCode.java @@ -28,7 +28,7 @@ public enum LangCode { CN("Simplified Chinese", "f0rb1d (\u4f5b\u58c1\u706f) & qsefthuopq"), DE("Deutch", "Eyremba & fuzzlemann & Morsmorse"), FI("Finnish", "Rsl1122"), - FR("French", "CyanTech & Aurelien"), + FR("French", "CyanTech & Aurelien & Nogapra"), IT("Italian", "Malachiel"), JA("Japanese", "yukieji"), TR("Turkish", "TDJisvan"), diff --git a/Plan/common/src/main/resources/assets/plan/locale/locale_FR.txt b/Plan/common/src/main/resources/assets/plan/locale/locale_FR.txt index c52788936..b4702f716 100644 --- a/Plan/common/src/main/resources/assets/plan/locale/locale_FR.txt +++ b/Plan/common/src/main/resources/assets/plan/locale/locale_FR.txt @@ -83,6 +83,7 @@ Disable - Unsaved Session Save || Sauvegarde des sessions inach Disable - WebServer || Le serveur Web a été désactivé. Enable || Plan a été activé. Enable - Database || Connexion à la base de données établie. (${0}) +Enable - Notify Bad IP || L'adresse IP située dans le fichier 'server.properties' est érronée. Attention, des liens incorrects seront donnés ! Enable - Notify Empty IP || L'adresse IP située dans le fichier 'server.properties' est vide et l'option 'AlternativeIP' n'est pas utilisée. Attention, des liens incorrects seront donnés ! Enable - Notify Geolocations disabled || La Géolocalisation n'est pas active. (Data.Geolocations: false) Enable - Notify Geolocations Internet Required || Plan nécessite un accès à Internet lors de sa première utilisation pour télécharger la base de données 'GeoLite2 Geolocation'. @@ -118,7 +119,7 @@ HTML - LABEL_AVG_SESSION_LENGTH || Durée moyenne d'une session HTML - LABEL_AVG_TPS || TPS moyen HTML - LABEL_BANNED || Banni(e) HTML - LABEL_BEST_PEAK || Pic maximal de joueurs connectés -HTML - LABEL_DAY_OF_WEEK || Day of the Week +HTML - LABEL_DAY_OF_WEEK || Jour de la semaine HTML - LABEL_DEATHS || Morts HTML - LABEL_DOWNTIME || Temps hors-ligne HTML - LABEL_DURING_LOW_TPS || Pendant les pics de TPS bas : @@ -135,8 +136,8 @@ HTML - LABEL_LONE_JOINS || Connexions de joueurs seuls HTML - LABEL_LONE_NEW_JOINS || Connexions de débutants seuls HTML - LABEL_LONGEST_SESSION || Session la plus longue HTML - LABEL_LOW_TPS || Pics de TPS bas -HTML - LABEL_MAX_FREE_DISK || Max Free Disk -HTML - LABEL_MIN_FREE_DISK || Min Free Disk +HTML - LABEL_MAX_FREE_DISK || Max espace disque disponible +HTML - LABEL_MIN_FREE_DISK || Min espace disque disponible HTML - LABEL_MOB_DEATHS || Morts causées par un Mob HTML - LABEL_MOB_KDR || Ratio Kills / Morts de Mobs HTML - LABEL_MOB_KILLS || Kills de Mobs @@ -145,7 +146,7 @@ HTML - LABEL_NAME || Name HTML - LABEL_NEW || Nouveau(elle) HTML - LABEL_NEW_PLAYERS || Nouveaux joueurs HTML - LABEL_NICKNAME || Surnom -HTML - LABEL_NO_SESSION_KILLS || None +HTML - LABEL_NO_SESSION_KILLS || Vide HTML - LABEL_ONLINE_FIRST_JOIN || Joueurs en ligne lors de la première connexion HTML - LABEL_OPERATOR || Opérateur HTML - LABEL_PER_PLAYER || / Joueur @@ -168,7 +169,7 @@ HTML - LABEL_TIMES_KICKED || Nombre d'éjections HTML - LABEL_TOTAL_PLAYERS || Joueurs totaux HTML - LABEL_TOTAL_PLAYTIME || Temps de jeu total HTML - LABEL_UNIQUE_PLAYERS || Joueurs uniques -HTML - LABEL_WEEK_DAYS || 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday' +HTML - LABEL_WEEK_DAYS || 'Lundi', 'Mardi', 'Mercredi', 'Jeudi', 'Vendredi', 'Samedi', 'Dimanche' HTML - LINK_BACK_NETWORK || Page du réseau HTML - LINK_BACK_SERVER || Page du serveur HTML - LINK_CHANGELOG || Visualiser les changements @@ -210,15 +211,15 @@ HTML - TEXT_CONTRIBUTORS_MONEY || Un merci spécial à ceux qui HTML - TEXT_CONTRIBUTORS_THANKS || En outre, ces gens formidables ont contribué : HTML - TEXT_DEV_VERSION || Cette version est une version de développement. HTML - TEXT_DEVELOPED_BY || est développé par -HTML - TEXT_FIRST_SESSION || First session +HTML - TEXT_FIRST_SESSION || Première session HTML - TEXT_LICENSED_UNDER || est développé et fait l'objet d'une licence en vertu de HTML - TEXT_METRICS || Métriques bStats HTML - TEXT_NO_EXTENSION_DATA || Pas de données d'extension HTML - TEXT_NO_LOW_TPS || Pas de pics de TPS bas -HTML - TEXT_NO_SERVER || No server to display online activity for -HTML - TEXT_NO_SERVERS || No servers found in the database +HTML - TEXT_NO_SERVER || Aucun serveur pour afficher l'activité en ligne. +HTML - TEXT_NO_SERVERS || Il n'y a pas de serveur dans la base de données. HTML - TEXT_PLUGIN_INFORMATION || Informations concernant le plugin -HTML - TEXT_PREDICTED_RETENTION || This value is a prediction based on previous players +HTML - TEXT_PREDICTED_RETENTION || Cette valleur est une prédiction basé sur les anciennes données du joueur. HTML - TEXT_VERSION || Une nouvelle version a été publiée et est maintenant disponible en téléchargement. HTML - TITLE_30_DAYS || 30 jours HTML - TITLE_30_DAYS_AGO || Il y a 30 jours @@ -282,7 +283,7 @@ HTML - TOTAL_AFK || Temps inactif total HTML - TOTAL_PLAYERS || Joueurs totaux HTML - UNIQUE_CALENDAR || Unique : HTML - UNIT_CHUNKS || Chunks -HTML - UNIT_ENTITIES || Entities +HTML - UNIT_ENTITIES || Entités HTML - UNIT_NO_DATA || Aucune donnée HTML - UNIT_THE_PLAYERS || Joueurs HTML - USER_AND_PASS_NOT_SPECIFIED || Utilisateur et mot de passe non spécifiés @@ -341,7 +342,7 @@ Manage - Success || > §aSuccès ! Negative || Non Positive || Oui Today || 'Aujourd''hui' -Unavailable || Unavailable +Unavailable || Indisponible Unknown || Inconnu Version - DEV || Ceci est une version de développement. Version - Latest || Vous utilisez la dernière version. @@ -352,7 +353,9 @@ Version FAIL - Read versions.txt || Les informations de la versio Web User Listing || §2${0} §7: §f${1} WebServer - Notify HTTP || Serveur Web : Aucun certificat -> Utilisation du serveur HTTP pour la visualisation. WebServer - Notify HTTP User Auth || Serveur Web : Authentification utilisateur désactivée ! (Non sécurisée avec HTTP) +WebServer - Notify HTTPS User Auth || Serveur Web : Authentification d'utilisateur désactivée ! (dans la configuration) WebServer - Notify no Cert file || Serveur Web : Fichier KeyStore du certificat introuvable : ${0} +WebServer - Notify Using Proxy || Serveur Web : le Proxy-mode HTTPS est activé, assurez-vous que votre proxy inversé est routé en utilisant HTTPS et Plan AlternativeIP.Link. WebServer FAIL - Port Bind || Le Serveur Web n'a pas été initialisé avec succès. Le port (${0}) est-il actuellement utilisé ? WebServer FAIL - SSL Context || Serveur Web : Échec d'initialisation du contexte SSL. WebServer FAIL - Store Load || Serveur Web : Échec du chargement du certificat SSL. diff --git a/Plan/common/src/main/resources/assets/plan/web/error.html b/Plan/common/src/main/resources/assets/plan/web/error.html index 4bc5debe5..eece5956c 100644 --- a/Plan/common/src/main/resources/assets/plan/web/error.html +++ b/Plan/common/src/main/resources/assets/plan/web/error.html @@ -187,28 +187,7 @@

    Player Analytics is developed by Rsl1122.

    In addition following awesome people have contributed:

      -
    • aidn5
    • -
    • Argetan
    • -
    • Aurelien
    • -
    • BrainStone
    • -
    • Combustible
    • -
    • CyanTech
    • -
    • DarkPyves
    • -
    • DaveDevil
    • -
    • enterih
    • -
    • Eyremba
    • -
    • f0rb1d (佛壁灯)
    • -
    • fuzzlemann
    • -
    • jyhsu2000
    • -
    • jvmuller
    • -
    • Malachiel
    • -
    • Miclebrick
    • -
    • Morsmorse
    • -
    • skmedix
    • -
    • TDJisvan
    • -
    • Vankka
    • -
    • yukieji
    • -
    • qsefthuopq
    • + ${contributors}
    • & Bug reporters!
    code contributor diff --git a/Plan/common/src/main/resources/assets/plan/web/network.html b/Plan/common/src/main/resources/assets/plan/web/network.html index bf9d1c110..a7a9b4fb5 100644 --- a/Plan/common/src/main/resources/assets/plan/web/network.html +++ b/Plan/common/src/main/resources/assets/plan/web/network.html @@ -730,28 +730,7 @@

    Player Analytics is developed by Rsl1122.

    In addition following awesome people have contributed:

      -
    • aidn5
    • -
    • Argetan
    • -
    • Aurelien
    • -
    • BrainStone
    • -
    • Combustible
    • -
    • CyanTech
    • -
    • DarkPyves
    • -
    • DaveDevil
    • -
    • enterih
    • -
    • Eyremba
    • -
    • f0rb1d (佛壁灯)
    • -
    • fuzzlemann
    • -
    • jyhsu2000
    • -
    • jvmuller
    • -
    • Malachiel
    • -
    • Miclebrick
    • -
    • Morsmorse
    • -
    • skmedix
    • -
    • TDJisvan
    • -
    • Vankka
    • -
    • yukieji
    • -
    • qsefthuopq
    • + ${contributors}
    • & Bug reporters!
    code contributor diff --git a/Plan/common/src/main/resources/assets/plan/web/player.html b/Plan/common/src/main/resources/assets/plan/web/player.html index 940fd8f3b..2f2df616a 100644 --- a/Plan/common/src/main/resources/assets/plan/web/player.html +++ b/Plan/common/src/main/resources/assets/plan/web/player.html @@ -651,28 +651,7 @@

    Player Analytics is developed by Rsl1122.

    In addition following awesome people have contributed:

      -
    • aidn5
    • -
    • Argetan
    • -
    • Aurelien
    • -
    • BrainStone
    • -
    • Combustible
    • -
    • CyanTech
    • -
    • DarkPyves
    • -
    • DaveDevil
    • -
    • enterih
    • -
    • Eyremba
    • -
    • f0rb1d (佛壁灯)
    • -
    • fuzzlemann
    • -
    • jyhsu2000
    • -
    • jvmuller
    • -
    • Malachiel
    • -
    • Miclebrick
    • -
    • Morsmorse
    • -
    • skmedix
    • -
    • TDJisvan
    • -
    • Vankka
    • -
    • yukieji
    • -
    • qsefthuopq
    • + ${contributors}
    • & Bug reporters!
    code contributor diff --git a/Plan/common/src/main/resources/assets/plan/web/players.html b/Plan/common/src/main/resources/assets/plan/web/players.html index f420feca5..d66bc7539 100644 --- a/Plan/common/src/main/resources/assets/plan/web/players.html +++ b/Plan/common/src/main/resources/assets/plan/web/players.html @@ -197,28 +197,7 @@

    Player Analytics is developed by Rsl1122.

    In addition following awesome people have contributed:

      -
    • aidn5
    • -
    • Argetan
    • -
    • Aurelien
    • -
    • BrainStone
    • -
    • Combustible
    • -
    • CyanTech
    • -
    • DarkPyves
    • -
    • DaveDevil
    • -
    • enterih
    • -
    • Eyremba
    • -
    • f0rb1d (佛壁灯)
    • -
    • fuzzlemann
    • -
    • jyhsu2000
    • -
    • jvmuller
    • -
    • Malachiel
    • -
    • Miclebrick
    • -
    • Morsmorse
    • -
    • skmedix
    • -
    • TDJisvan
    • -
    • Vankka
    • -
    • yukieji
    • -
    • qsefthuopq
    • + ${contributors}
    • & Bug reporters!
    code contributor diff --git a/Plan/common/src/main/resources/assets/plan/web/server.html b/Plan/common/src/main/resources/assets/plan/web/server.html index ef1ef0157..bfb62daaf 100644 --- a/Plan/common/src/main/resources/assets/plan/web/server.html +++ b/Plan/common/src/main/resources/assets/plan/web/server.html @@ -1204,28 +1204,7 @@

    Player Analytics is developed by Rsl1122.

    In addition following awesome people have contributed:

      -
    • aidn5
    • -
    • Argetan
    • -
    • Aurelien
    • -
    • BrainStone
    • -
    • Combustible
    • -
    • CyanTech
    • -
    • DarkPyves
    • -
    • DaveDevil
    • -
    • enterih
    • -
    • Eyremba
    • -
    • f0rb1d (佛壁灯)
    • -
    • fuzzlemann
    • -
    • jyhsu2000
    • -
    • jvmuller
    • -
    • Malachiel
    • -
    • Miclebrick
    • -
    • Morsmorse
    • -
    • skmedix
    • -
    • TDJisvan
    • -
    • Vankka
    • -
    • yukieji
    • -
    • qsefthuopq
    • + ${contributors}
    • & Bug reporters!
    code contributor