Move Plex to API-driven plugin and fix NoClassDefFoundError on startup

This commit is contained in:
Focusvity
2022-04-24 14:16:14 +10:00
parent edeecb51f4
commit f9a577035b
346 changed files with 736 additions and 118 deletions

View File

@ -0,0 +1,55 @@
#
# Command Blocker
#
# Format:
# - "<regex or match>:<rank>:command name no slash:Block message"
#
# Symbols to use:
# - r for RegEx
# - m for matching
# - The ranks are "e" for everyone, "s" for senior admin, and "a" for admin
# - MATCHING MODE: The command is just the command without slashes. Optional arguments are specified as well. It also accepts full plugins via specifying the plugin name followed by a ":" (e.g. "viaversion:")
# - REGEX MODE: The command is regex that matches the desired command. It matches case insensitively.
# - Finally the block message. MUST NOT CONTAIN ":". Use _ to use the default command blocked message as specified in messages.yml, or you can optionally put your own in
#
# So these would be valid:
# - "m:e:mail sendall:You cannot send messages to everyone on the server"
# - "r:e:^[A-z]*:[A-z]*::Plugin specific commands are disabled"
commands:
- "m:a:break:_"
- "m:a:delchunks:_"
- "m:a:kickall:_"
- "m:a:locatebiome:_"
- "m:a:playsound:_"
- "m:a:setspawn:_"
- "m:a:socialspy:_"
- "m:a:tpall:_"
- "m:e:/eval:_"
- "m:e:advancement:_"
- "m:e:antioch:_"
- "m:e:backup:_"
- "m:e:ban-ip:_"
- "m:e:co purge:_"
- "m:e:d minecart_command:_"
- "m:e:debug:_"
- "m:e:defaultgamemode:<gray>The default gamemode should not be changed."
- "m:e:deljail:_"
- "m:e:disguiseradius:_"
- "m:e:fill:_"
- "m:e:jails:_"
- "m:e:mail sendall:<red>You cannot send messages to everyone on the server."
- "m:e:mail sendtempall:<red>You cannot send messages to everyone on the server."
- "m:e:paper:_"
- "m:e:pardon-ip:_"
- "m:e:pardon:_"
- "m:e:save-off:_"
- "m:e:save-on:_"
- "m:e:setjail:_"
- "m:e:spigot reload:_"
- "m:e:time:<gray>Server-side time changing is disabled. Please use /ptime to set your own personal time."
- "m:e:togglejail:_"
- "m:e:undisguiseradius:_"
- "m:e:weather:_"
- "m:e:worldborder:<gray>The worldborder does not need to be changed. This command is disabled."
- "r:a:^(co|core|coreprotect) (rb|rollback|l|lookup|rl|reload):_"
- "r:e:^[A-z]*:[A-z]*::<gray>Plugin specific commands are disabled."

View File

@ -0,0 +1,219 @@
# Plex Configuration File
# For documentation, please visit: https://plex.us.org
server:
name: "Plexus"
motd: "%servername% - Minecraft %mcversion%"
colorize_motd: true
sample:
- "&cForums: https://forum.plex.us.org"
# What timezone should various messages appear in (e.g. ban message end date)
timezone: Etc/UTC
titles:
masterbuilders: [ ]
owners:
- Telesphoreo
# Ban message is customized in the messages.yml file. The URL to appeal at is below.
banning:
ban_url: "https://forum.plex.us.org"
chat:
# Should the server use Plex's chat system? It is recommended to keep this on if you are using ranks.
# If you are using permissions, you should turn this off and use Vault to handle prefixes with a different chat plugin
enabled: true
# The maximum amount of characters a player can have for their tag
# This does not include color tags such as <red> or <rainbow>
max-tag-length: 64
# Color tag for name color
name-color: '<white>'
# Should Plex use a "true op" system with ranks or only permission nodes
# Options are "permissions" or "ranks"
system: ranks
data:
central:
storage: sqlite # Use mariadb, mongodb, or sqlite here
user: ""
password: ""
hostname: 127.0.0.1
port: 27017
db: "plex"
side: # This is Redis, leave password blank if auth is false
enabled: false
auth: true
hostname: 127.0.0.1
port: 6379
password: ""
# Mob limiter / Entity wiping config
# All entities listed here will NOT be wiped upon wiping entities
# By default this includes all mobs, as the mobpurge command can be used to purge mobs.
entitywipe_list:
- "ITEM_FRAME"
- "AXOLOTL"
- "BAT"
- "BEE"
- "BLAZE"
- "CAT"
- "CAVE_SPIDER"
- "CHICKEN"
- "COD"
- "COW"
- "CREEPER"
- "DOLPHIN"
- "DONKEY"
- "DROWNED"
- "ELDER_GUARDIAN"
- "ENDER_DRAGON"
- "ENDERMAN"
- "ENDERMITE"
- "EVOKER"
- "FOX"
- "GHAST"
- "GIANT"
- "GLOW_SQUID"
- "GOAT"
- "GUARDIAN"
- "HOGLIN"
- "HORSE"
- "HUSK"
- "ILLUSIONER"
- "IRON_GOLEM"
- "LLAMA"
- "MAGMA_CUBE"
- "MULE"
- "MUSHROOM_COW"
- "OCELOT"
- "PANDA"
- "PARROT"
- "PHANTOM"
- "PIG"
- "PIGLIN"
- "PIGLIN_BRUTE"
- "PILLAGER"
- "POLAR_BEAR"
- "RABBIT"
- "RAVAGER"
- "SALMON"
- "SHEEP"
- "SHULKER"
- "SILVERFISH"
- "SKELETON"
- "SKELETON_HORSE"
- "SLIME"
- "SNOWMAN"
- "SPIDER"
- "SQUID"
- "STRAY"
- "STRIDER"
- "TRADER_LLAMA"
- "TROPICAL_FISH"
- "TURTLE"
- "VEX"
- "VILLAGER"
- "VINDICATOR"
- "WANDERING_TRADER"
- "WITCH"
- "WITHER"
- "WITHER_SKELETON"
- "WOLF"
- "ZOGLIN"
- "ZOMBIE"
- "ZOMBIE_HORSE"
- "ZOMBIE_VILLAGER"
- "ZOMBIFIED_PIGLIN"
- "PUFFERFISH"
# Automatically wipe the specified entities
autowipe:
# Should we automatically wipe entities?
enabled: true
# How often, in seconds, to automatically wipe entities. Default is 5 minutes.
interval: 300
# Entities to automatically wipe
entities:
- "DROPPED_ITEM"
# Should we allow drops from players?
allowdrops: true
# What blocks should be blocked?
blocked_blocks:
- "SPAWNER"
- "STRUCTURE_BLOCK"
- "JIGSAW"
# What entities should be blocked?
blocked_entities:
- "WITHER"
- "ENDER_DRAGON"
- "MINECART_TNT"
# See https://plex.us.org/docs/customization/config#worlds for documentation
# These gamerules apply to all worlds on the server
global_gamerules:
- "doWeatherCycle;true"
- "doDaylightCycle;true"
- "doMobSpawning;false"
- "keepInventory;true"
- "doFireTick;false"
- "doMobLoot;false"
- "mobGriefing;false"
- "doTileDrops;false"
- "commandBlockOutput;false"
- "naturalRegeneration;true"
- "announceAdvancements;false"
- "showDeathMessages;false"
- "sendCommandFeedback;false"
worlds:
flatlands:
name: "Flatlands"
permission: "plex.world.flatlands"
noEdit: "&cYou can't edit this world!"
gameRules:
# The gamerules here override the global gamerules
- "doWeatherCycle;false"
- "doDaylightCycle;false"
parameters:
grass_block: 1
dirt: 32
stone: 16
bedrock: 1
adminworld:
name: "Admin World"
permission: "plex.world.adminworld"
requiredLevels:
- "Rank.ADMIN" # Minimum rank requirement
noEdit: "&cYou can't edit this world!"
gameRules:
- "doWeatherCycle;false"
- "doDaylightCycle;false"
parameters:
grass_block: 1
dirt: 32
stone: 16
bedrock: 1
masterbuilderworld:
name: "MasterBuilder World"
permission: "plex.world.masterbuilderworld"
requiredLevels:
- "Title.MASTER_BUILDER" # Title has no "minimum", so this will have to be their title
noEdit: "&cYou can't edit this world!"
gameRules:
- "doWeatherCycle;false"
- "doDaylightCycle;false"
parameters:
grass_block: 1
dirt: 32
stone: 16
bedrock: 1
# What branch should Plex fetch updates from?
update_branch: master
# Additional logging for debugging
debug: false

View File

@ -0,0 +1,21 @@
# Plex Indefinite Bans File
# Players with their UUID / IP / Usernames in here will be indefinitely banned until removed
# If you want to get someone's UUID, use https://api.ashcon.app/mojang/v2/user/<username>
griefers:
users:
- "badplayer123"
- "badplayer321"
uuids:
- 1dac0e92-f565-4479-afd5-38c7df5f9732 # badplayer123
ips:
- 123.123.123.123
# Note that these keys can be anything, they are simply to help you keep things organized.
# They are not used within the plugin. Duplicate keys are not allowed, and will not work.
bypassers:
users:
- "bypasser1"
ips:
- 321.321.321.321
- 169.254.1.2

View File

@ -0,0 +1,185 @@
# Plex Messages File
# This file uses the MiniMessage system.
# Documentation available at https://docs.adventure.kyori.net/minimessage/format.html
# Messages in here will be placed in for certain commands, actions, etc.
# Warning: not all commands have customizable messages
# Variables {number} - these are code-defined replacements for things that should be inserted into messages. (e.g. names, statuses, numbers)
# If any of these variables are supposed to be used within a message, some documentation is provided to give more context to what the variables indicate.
# If you are wishing to change these messages it's recommended you use the same amount of variables as stated in the documentation, however it's not required.
# 0 - Appeal URL
# 1 - Reason
# 2 - Expiry
# 3 - Punisher
banMessage: "<red>You have been banned! You may appeal at <gold>{0}.\n<red>Reason: <gold>{1}\n<red>End date: <gold>{2}\n<red>Banned by: <gold>{3}"
# 0 - The type of indefinite ban
# 1 - Appeal URL
indefBanMessage: "<red>Your {0} is indefinitely banned! You may appeal at <gold>{1}."
playerNotFound: "<red>Player not found!"
worldNotFound: "<red>World not found!"
# 0 - The world you have been teleported to
playerWorldTeleport: "<aqua>You have been teleported to {0}."
# 0 - The sender who opped everyone
oppedAllPlayers: "<aqua>{0} - Opped all players on the server"
# 0 - The sender who de-opped everyone
deoppedAllPlayers: "<aqua>{0} - De-opped all players on the server"
# 0 - The person who is opping
# 1 - The person who has been opped
oppedPlayer: "<aqua>{0} - Opped {1}"
# 0 - The person who is deopped
# 1 - The person who has been deopped
deoppedPlayer: "<red>{0} - Deopped {1}"
# 0 - The person who is freezing
# 1 - The person who has been frozen
frozePlayer: "<red>{0} - Froze {1}"
# 0 - The person who is unfreezing
# 1 - The person who has been unfrozen
unfrozePlayer: "<aqua>{0} - Unfroze {1}"
# 0 - The command sender
# 1 - The person who has been muted
mutedPlayer: "<red>{0} - Muted {1}"
# 0 - The command sender
# 1 - The person who has been unmuted
unmutedPlayer: "<aqua>{0} - Unmuted {1}"
# 0 - The person who is locking up
# 1 - The person who has been locked up
lockedUpPlayer: "<aqua>{0} - Locking up {1}"
# 0 - The person who is unlocking
# 1 - The person who has been unlocked
unlockedPlayer: "<aqua>{0} - Unlocking {1}"
# 0 - The rank required to use the command
noPermissionRank: "<red>You must be at least {0} <red>to use this command!"
# 0 - The permission node required to use the command
noPermissionNode: "<red>You must have the permission: {0} <red>to use this command!"
noPermissionInGame: "<red>You must be in console to use this command!"
noPermissionConsole: "<red>You must be in-game to use this command!"
# 0 - The username of the name history
nameHistoryTitle: "<gold>Name History of {0}"
nameHistorySeparator: "<gold><strikethrough>-----------------------------"
# 0 - The name
# 1 - The date and time of the name change
nameHistoryBody: "<gold>{0} <dark_gray>- <gold>{1}"
# 0 - The gamemode
gameModeSetTo: "<gray>Your gamemode has been set to {0}."
# 0 - The player's name
# 1 - The gamemode
setOtherPlayerGameModeTo: "<gray>You set {0}'s gamemode to {1}."
# 0 - The command sender
# 1 - The gamemode
playerSetOtherGameMode: "<gray>{0} set your gamemode to {1}."
# 0 - The command sender
# 1 - The gamemode
setEveryoneGameMode: "<aqua>{0} - Changing everyone's gamemode to {1}"
consoleMustDefinePlayer: "<red>You must define a player since you are running this command from console."
# 0 - The command sender
# 1 - The player
newAdminAdded: "<aqua>{0} - Adding {1} to the admin list"
# 0 - The command sender
# 1 - The player
# 2 - The rank name
adminReadded: "<aqua>{0} - Re-adding {1} to the admin list as rank: {2}"
# 0 - The command sender
# 1 - The player
adminRemoved: "<red>{0} - Removing {1} from the admin list"
# 0 - The command sender
# 1 - The player
# 2 - The rank
adminSetRank: "<aqua>{0} - Setting {1}'s rank to {2}"
# 0 - The world name
teleportedToWorld: "<aqua>You have been teleported to the {0}."
higherRankThanYou: "<red>This player is an admin or a higher rank than you."
playerNotAdmin: "<red>That player is not an admin."
playerIsAdmin: "<red>That player is already an admin."
rankNotFound: "<red>The rank you entered was not found."
rankMustBeHigherThanAdmin: "<red>The rank you entered must be higher than Admin."
consoleOnly: "<red>This command can only be executed by the console."
# 0 - Rank
yourRank: "<aqua>Your rank is: {0}"
# 0 - Player name
# 1 - Rank
otherRank: "<aqua>{0}'s rank is: {1}"
# 0 - The command sender
# 1 - The player
banningPlayer: "<red>{0} - Banning {1}"
# 0 - The command sender
# 1 - The player
unbanningPlayer: "<aqua>{0} - Unbanning {1}"
playerNotBanned: "<red>That player is not banned!"
playerNotFrozen: "<red>That player is not frozen!"
playerNotMuted: "<red>That player is not muted!"
playerBanned: "<red>That player is already banned!"
playerFrozen: "<red>That player is already frozen!"
playerMuted: "<red>That player is already muted!"
playerLockedUp: "<red>That player is already locked up!"
muted: "<red>You are currently muted - STFU!"
# 0 - The command sender
# 1 - The player
kickedPlayer: "<red>{0} - Kicking {1}"
teleportedToWorldSpawn: "<aqua>Teleporting to the local spawn"
toggleCommandSpy: "<gray>CommandSpy has been"
enabled: "<gray>enabled."
disabled: "<gray>disabled."
# 0 - The admin / staff member
# 1 - The message
adminChatFormat: '<dark_gray>[<blue>AdminChat<dark_gray>] <dark_red>{0} <gray>» <gold>{1}'
# 0 - Maximum length, configured in config.yml
maximumPrefixLength: "<red>The maximum length for a tag may only be {0}."
prefixCleared: "<aqua>Your prefix has been cleared."
# 0 - The player name
otherPrefixCleared: "<aqua>You have cleared {0}'s prefix."
# 0 - The new prefix
prefixSetTo: "<aqua>Your prefix has been set to {0}"
# 0 - The amount of players whose edits are blocked
blockedEditsSize: "Blocked block modification abilities for {0} players."
# 0 - The amount of players whose edits are unblocked
unblockedEditsSize: "Unblocked all block modification abilities for {0} players."
# 0 - The command sender
# 1 - The player name
blockingEditFor: "<red>{0} - Blocking block modification abilities for {1}"
# 0 - The command sender
# 1 - The player name
unblockingEditFor: "<aqua>{0} - Unblocking block modification abilities for {1}"
yourEditsHaveBeenBlocked: "<gray>Your block modification abilities have been blocked."
yourEditsHaveBeenUnblocked: "<gray>Your block modification abilities have been restored."
# 0 - The player name
editsBlocked: "<gray>Blocked block modification abilities for {0}"
# 0 - The player name
editsUnblocked: "<gray>Unblocked block modification abilities for {0}"
# 0 - The command sender
# 1 - Number of entities removed
removedEntities: "<red>{0} - Removed {1} entities"
# 0 - The command sender
# 1 - Number of entities removed
# 2 - Entity type(s) removed
removedEntitiesOfTypes: "<red>{0} - Removed {1} entities of type(s) {2}"
# 0 - The command sender
# 1 - Number of entities removed
# 2 - Entity type removed
removedEntitiesOfType: "<gray>Removed {1} {2}"
# 0 - Entity type that is invalid
invalidEntityType: "<gray>Notice: Entity type {0} is invalid!"
noRemovedEntities: "<gray>No entities were removed."
# 0 - The command sender
# 1 - Number of mobs removed
removedMobs: "<red>{0} - Removed {1} mobs"
autoWipeDisabled: "<gray>Item wiping is currently disabled in the config!"
allowDropsDisabled: "<gray>No longer allowing drops from players."
allowDropsEnabled: "<gray>Now allowing drops from players."
commandBlocked: "<gray>That command is blocked."
# 0 - The command sender
# 1 - The message being said
sayMessage: "<blue>[Server: {0}] {1}"
# 0 - The command sender
# 1 - The message being said
consoleSayMessage: "<gray>[Console: {0}] <white>{1}"
# 0 - The number attempted to be parsed
unableToParseNumber: "<red>Unable to parse {0} as a number!"
noNotes: "<red>This player has no notes!"
noteAdded: "<green>Note added."
noteNotFound: "<red>A note with this ID could not be found."
# 0 - The ID of the note removed
removedNote: "<green>Removed note with ID: {0}"
# 0 - The number of notes cleared
clearedNotes: "<green>Cleared {0} notes."