Mars is an all-in-one plugin for PGM servers

Overview

Mars

Mars is an all-in-one plugin for PGM servers.Warzone Logo

Why?

Mars was built to handle everything that PGM isn't supposed to handle. Aside from extensive tracking of player, match, and map stats, Mars' feature set includes comprehensive community moderation tools, permission groups (ranks), other optional entitlements (such as chat tags), and more.

PGM does provide a few of these features out of the box (stat tracking is not persistent), and an official Community plugin is in development, but Mars is designed to integrate with other platforms (i.e. web, Discord), and is somewhat opinionated.

Do I need Mars?

There's a good chance you don't.

If you simply want to host a game server running PGM, whether its competitive, casual, or arcade, PGM as a standalone plugin is probably good enough.

You'd benefit from Mars if you want...

  • Comprehensive moderation tools beyond those included in PGM/Community
  • Leaderboards (periods spanning from daily to all-time) for a variety of metrics
  • Player, match and map statistics tracked
  • Automatic chat broadcasts
  • Permission groups (ranks) that can be customised and assigned in-game
  • Chat suffixes (tags) that can be customised and assigned in-game
  • An XP/levelling progression system that rewards team contributions

Mars also overrides and extends some default PGM behaviours. Two examples of this is Mars overriding PGM's player preference system, and Mars announcing enemy objective advancements in chat (PGM intentionally doesn't do this).

Support

Please raise any questions or issues on the Issues page or on the Warzone Discord server. We are happy to help anyone looking to use Mars for their server or submit contributions to the Mars project.

Comments
  • /tp command

    /tp command

    Allows spectators to use /tp as a tool for spectating.

    (Note: Some of this code is definitely redundant, and the message feedback is formatted in plain-white text, but other than that, the functionality works).

    opened by Mew2K 1
  • ControlPointTracker playersOnPoint -> players

    ControlPointTracker playersOnPoint -> players

    See ( https://github.com/PGMDev/PGM/commit/f4e3827d112375a140a680b94fc0e29c2998ef15#diff-fe197d73af5c4c80dd8d2181881669a030886c0a3c144e09b8545e64147167b8L29 )

    opened by chatasma 0
  • Fix grammar mistakes in README.md

    Fix grammar mistakes in README.md

    whether its competitive -> whether it's competitive

    Player, match and map statistics -> Player, match, and map statistics

    Two examples of this is -> Two examples of this are

    Please raise any questions or issues on the Issues page or on the Warzone Discord -> on the Issues page or the Warzone Discord On is redundant in the sentence above.

    opened by KaevonD 0
  • Ensure proper text formatting / outputs in Mars commands for 1.7.x clients

    Ensure proper text formatting / outputs in Mars commands for 1.7.x clients

    Issue:

    Although Minecraft 1.7 is regularly limited to a select few PvP-oriented users, some players and staff members still choose to connect using this version. However, some commands provided by Mars do not produce a properly formatted output

    Background:

    1.7 support was never provided officially or intentionally before. With the switch to PGM, there is now full gameplay support with it. Mars should then match such functionality where possible.

    Some commands, like /puns, /rank player <player> list, or /tag player <player> list seem to be unaffected by this regression.

    Visual examples:

    /stats 1.7.10

    image

    /stats 1.8.9

    image

    /lookup or /lu 1.7.10

    image

    /lookup or /lu 1.8.9

    image

    /notes 1.7.10

    image

    /notes 1.8.9

    image

    Affected areas / files:

    opened by TBG1000 0
  • Compasses for Infection gamemode

    Compasses for Infection gamemode

    Issue:

    Members of the "Infected" team during an Infection game or map can no longer be provided with a compass that will point towards remaining humans.

    Background:

    A TGM pull request converted a compass given to a member of the "Infected" team into a human tracker, increasing the chance of winning (necessary for cases where lots of players are online).

    It was up to the mapmaker to include a compass in the kit, but compasses could also be given to players through the command /give @a[tag=infected] compass.

    Proposed / potential solution:

    Note: ince Infection was previously hardcoded for Warzone, compasses were rather "exclusive" of TGM, so it may be undesirable to introduce the feature to upstream PGM.

    1. Mars could read through the loaded map's XML and find if it has been labeled as Infection through the game="" attribute of the root <map> tag, or also through the <game> sub-element.
    2. If true, then check if a compass is provided through a <kit>
    3. Convert such compass into a human tracker

    With the power and versatility of PGM, mapmakers could then be able to decide when to give Infected the compass through the use of time filters, making it unecessary to provide it from the beginning or to manually give it through commands.

    Example XML snippet:

    # Initial Infected kit
        <kit id="infected-kit-start">
            <helmet locked="true" unbreakable="true" color="00FF00" material="leather helmet"/>
            <chestplate locked="true" unbreakable="true" color="00FF00" material="leather chestplate"/>
            <leggings locked="true" unbreakable="true" color="00FF00" material="leather leggings"/>
            <boots locked="true" unbreakable="true" color="00FF00" material="leather boots"/>
            <item slot="0" unbreakable="true" material="iron sword" name="`2`lInfection Sword"/>
        </kit>
        
    # Infected kit with a compass (human tracker)
        <kit id="infected-kit-compass">
            <helmet locked="true" unbreakable="true" color="00FF00" material="leather helmet"/>
            <chestplate locked="true" unbreakable="true" color="00FF00" material="leather chestplate"/>
            <leggings locked="true" unbreakable="true" color="00FF00" material="leather leggings"/>
            <boots locked="true" unbreakable="true" color="00FF00" material="leather boots"/>
            <item slot="0" unbreakable="true" material="iron sword" name="`2`lInfection Sword"/>
            # Include human tracker
            <item slot="1" material="compass" name="`1`lHuman Tracker"/>
        </kit>
    
    # Infected team first spawns with initial kit, no compass
        <spawn filter="before-10s" team="infected-team" kit="infected-kit-start">
            <regions yaw="90">
                <point>-1080.5,40,-1015.5</point>
            </regions>
        </spawn>
        
    # After 6 minutes, infected are given the kit with a compass (human tracker)
        <spawn filter="after-6m" team="infected-team" kit="infected-kit-compass">
            <regions yaw="90">
                <point>-1080.5,40,-1015.5</point>
            </regions>
        </spawn>
    
    opened by TBG1000 0
  • Backport list, playerraw, playerpreset broadcast commands from TGM

    Backport list, playerraw, playerpreset broadcast commands from TGM

    Issue:

    The list, playerraw and playerpreset broadcast commands no longer exist.

    Background:

    TGM had commands which allowed staff members with the respective permission(s) to:

    • /broadcast list List available preset broadcasts

    • /broadcast playerraw <player> <message> Broadcast raw text to a target player, with support for color codes and decorators (bold, italics, etc)

    • /broadcast playerpreset <player> <broadcast id> [args] Broadcast a preset to a target player

    Desired solution:

    Add these commands to Mars

    Affected areas / files:

    opened by TBG1000 0
  • Configurable triggerable events for broadcasts

    Configurable triggerable events for broadcasts

    Issue:

    Broadcasts are only governed by a time interval and cannot be triggered by events, but only by executing commands.

    Background:

    Broadcasts in TGM allowed server administrator to configure several events that triggered a broadcast.

    Such events are no longer available with Mars.

    Desired solution:

    Server owners should be able to specify some event(s) that will trigger the broadcast(s). Lack of the events property would mean the broadcast is just periodically sent in accordance with the fixed global interval.

    Some events extracted from TGM:

    • onFirstJoin (when the player first joins the server)
    • onJoin (when the player joins the server)
    • onMatchResult (when the match ends)
    • onTeamJoin (when the player joins a team)
    • onMatchLoad (when a match is loaded)

    Example config:

    - name: broadcastOnJoin
      message: This broadcast is sent every time you join the server!
      events: onJoin # Broadcast is sent to the player every time they join the server
    
    - name: epicBroadcast
      message: This broadcast is sent every minute, but also when you first join the server!
      # This broadcast is sent when the player first joins the server, 
      # then periodically (every 1 minute according to the global broadcast interval)
      events: onFirstJoin, interval
    

    Affected areas / files:

    opened by TBG1000 0
  • Configurable intervals for broadcasts

    Configurable intervals for broadcasts

    Issue:

    Automatic broadcasts using Mars use a fixed, global unmodifiable one minute interval.

    Background:

    Broadcasts in TGM allowed server administrator to at least configure a desired global interval for any loaded broadcasts. This interval could be changed at any time from the server panel.

    Currently, with Mars, only the following properties are available: name, message, permission, newline. Broadcasts are also managed from the backend (API) by manipulating the broadcasts.yml file.

    Desired solution:

    Server owners should have the ability to configure a default global interval for all broadcasts, as well as an individual interval property for each broadcast.

    Example config:

    global-interval: 60 # One minute
    broadcasts:
    - name: vip
      message: This is a VIP broadcast!
      permission: broadcasts.vip
      interval: 30 # Broadcasted every 30 seconds, overrides global setting
      newline: false
    

    Affected areas / files:

    opened by TBG1000 0
  • Allow the use of punishment commands through console

    Allow the use of punishment commands through console

    Issue:

    Punishments may only be issued or reverted by staff members connected to the server. Server administrators and staff with access to the server's console should be able to execute such commands as well.

    Background:

    The /pun command and the /revertp command will only take a player as a sender, preventing the console from using them at all (will output "You must be a player to use this command").

    Desired solution:

    Allow the use of /pun and /revertp through the server's console. Note that these commands require GUI interaction if some flags or fields are not provided by the sender.

    For example, executing /revertp <punishment id> without any input for the optional [reason] field will open a confirmation GUI in-game for the staff member to manipulate. Since this is not possible through the console, the lack of a reason should default to a pre-defined message such as "No reason provided".

    The same applies to the /pun command, avoiding interference from GUI-required interaction.

    Affected areas / files:

    opened by TBG1000 0
  • Display more available stats through the /stats command

    Display more available stats through the /stats command

    Issue:

    The /stats command provides little information to the player about new tracked stats.

    Background:

    Mars and the Mars-API now track a plethora of new statistics that are of interest to players and members of the community. Development of the plugin initially chose to only display / match those statistics previously displayed by TGM so as to not confuse new or existing players. Only some new additions like "First bloods" and "Win %" were included.

    It has now been a considerable amount of time that should be enough to introduce these new stats to players.

    Desired solutions:

    The /stats command should simply display more stats to make it more attractive and feature-complete. The image below is a proposal of what the new output could include:

    image

    Affected areas / files:

    opened by TBG1000 0
Owner
Warzone
An open source Minecraft PVP server. Please refer to @WarzoneMC for legacy projects.
Warzone
An open-source plugin that accommodates Starships on Minecraft servers.

Minecraft Starship Plugin An open-source plugin that accommodates starships on minecraft servers. 'A shameless rip-off of Star Legacy's plugins.' Mine

null 4 Dec 13, 2021
McMotd - Mirai Plugin for fetching motd from minecraft servers

Mirai-wiki 基于mirai的Minecraft服务器信息查询插件 关于Linux运行环境 如果你正在使用Linux而不是Windows来运行Mirai

ZRnQ 25 Dec 31, 2022
Arrow Endpoint offers a composable Endpoint datatype, that allows us easily define an Endpoint from which we can derive clients, servers & documentation.

Arrow Endpoint Arrow Endpoint offers a composable Endpoint datatype, that allows us easily define an Endpoint from which we can derive clients, server

ΛRROW 23 Dec 15, 2022
Arrow Endpoint offers a composable Endpoint datatype, that allows us easily define an Endpoint from which we can derive clients, servers & documentation.

Arrow Endpoint Arrow Endpoint offers a composable Endpoint datatype, that allows us easily define an Endpoint from which we can derive clients, server

ΛRROW 8 Oct 11, 2021
A high-performance fork of Paper/Airplane designed for large servers.

Pufferfish A highly optimized Paper/Airplane fork designed for large servers requiring both maximum performance, stability, and "enterprise" features.

Pufferfish Studios LLC 399 Jan 7, 2023
Minecraft 1.18.2 Backport of Petal, a performance-oriented fork of Purpur intended to increase performance for entity-heavy servers by implementing multi-threaded and asynchronous improvements.

Sakura Performance Minecraft JAR Sakura is a performance-oriented fork of Purpur intended to increase performance for entity-heavy servers by implemen

etil.sol 14 Nov 23, 2022
Android Ptrace Inject for all ABIs and all APIs. Help you inject Shared Library on Android.

Android Ptrace Inject 中文可以参考我的注释内容进行理解 我写的注释相对来说比较全面了 How to build Make sure you have CMake and Ninja in your PATH Edit CMakeLists.txt. Set ANDROID_ND

SsageParuders 65 Dec 19, 2022
Plugin-shared-preferences - Pluto plugin to manage your Shared Preferences

Pluto Shared Preferences Plugin Pluto Shared Preferences is a Pluto plugin to in

Pluto 1 Feb 14, 2022
One-stop-shop for Social Network integrations

Roguin One stop shop for Social Network integrations Use the same code for Google, Facebook and Twitter What is Roguin Social Network integrations can

Fanis Veizis 17 Aug 22, 2022
Create kotlin android project with one line of command.

README This is an android application template project built with kotlin language and some useful libraries. It provides a creator script to quickly c

nekocode 1.6k Dec 20, 2022
app conversor de moedas/cambio com Kotlin, no Bootcamp Carrefour Android Developer na plataforma da Digital Innovation One

Status do Projeto: ✔️ concluído a proposta de criação um app conversor de moedas/cambio com Kotlin, no Bootcamp Carrefour Android Developer na plataforma da Digital Innovation One

Luiz Correa 5 Dec 23, 2022
Clean MVVM with eliminating the usage of context from view models by introducing hilt for DI and sealed classes for displaying Errors in views using shared flows (one time event), and Stateflow for data

Clean ViewModel with Sealed Classes Following are the purposes of this repo Showing how you can remove the need of context in ViewModels. I. By using

Kashif Mehmood 22 Oct 26, 2022
Main goal of this project is to find the best route from one country to another

Route-service Main goal of this project is to find the best route from one country to another. Data is presented as json format. I've implemented A* p

Teyyihan Aksu 4 Aug 2, 2022
WorkManager ,One time,Sequential Execution, Periodic time Execution

WokManagerSample WorkManager ,One time,Sequential Execution, Periodic time Execu

Chhote Lal Pal 0 Dec 21, 2021
A pair of applications provide a direct means of integrating with one another via application programming interfaces (APIs)

What is a native integration? It's when a pair of applications provide a direct means of integrating with one another via application programming interfaces (APIs). Once integrated, data can flow between the apps and become more readily available to your employees.

Behruz Hurramov 2 Jan 17, 2022
A native android app that shows how much calories one must consume based on their profile

Healtify is a native android app which allows the user to track the amout of Calories they are consuming. It not only tracks the calories but also shows how much of fat, protein and carbs they have consumed and how much they should be doing.

Anindya Ray 9 Aug 20, 2022
Simple(vanilla) yet 'Do it all' place picker for your place picking needs in Android

Vanilla Place Picker Vanilla Place Picker provides a UI that displays an interactive map to get the place details and Autocomplete functionality, whic

MindInventory 115 Dec 21, 2022
An example for who are all going to start learning Kotlin programming language to develop Android application.

Kotlin Example Here is an example for who are all going to start learning Kotlin programming language to develop Android application. First check this

Prabhakar Thota 56 Sep 16, 2022