EtherealPerms Wiki
Your complete guide to mastering permission management in Hytale.
Core Concepts
Represents a player. Each has a UUID and can have individual permissions or belong to groups.
A collection of permissions and metadata. The primary way to manage permissions for many players.
A string representing a specific permission (e.g., 'etherealperms.command.creategroup'). Can be granted (true) or denied (false).
Allows groups to inherit permissions from other groups via the 'group.<groupname>' node.
An integer that determines which node is used when a player has multiple same nodes. The highest weight wins.
Cosmetic data like prefixes, suffixes, and chat colors for users and groups or data to store.
Configuration
Main config file
Main Configuration File
############################################################
# +------------------------------------------------------+ #
# | Chat Settings | #
# +------------------------------------------------------+ #
############################################################
# Available placeholders:
# {MESSAGE} - The content of the chat message.
# {DISPLAYNAME} - The sender's display name.
# {PREFIX} - The sender's prefix.
# {SUFFIX} - The sender's suffix.
# {GROUP} - The sender's primary group name.
# Default Colors:
#RED
#DARK_RED
#GOLD
#YELLOW
#GREEN
#DARK_GREEN
#AQUA
#DARK_AQUA
#BLUE
#DARK_BLUE
#LIGHT_PURPLE
#DARK_PURPLE
#WHITE
#GRAY
#DARK_GRAY
#BLACK
#PINK
#ORANGE
#LIME
#CYAN
# Hex Colors can also be used | Example: <#FF0000>Test -> Red colored text "Test"
# Legacy Colors Supported:
# &0
# &1
# &2
# &3
# &4
# &5
# &6
# &7
# &8
# &9
# &a
# &b
# &c
# &d
# &e
# &f
# &l (Bold)
# &o (Italic)
chat:
format: '{PREFIX} {DISPLAYNAME} {SUFFIX}> {MESSAGE} '
#format: '<red>{GROUP}<reset> <white>{DISPLAYNAME} <gray>:<reset> {MESSAGE}'
#format: '{PREFIX} <blue>{DISPLAYNAME}<reset> {SUFFIX}: <yellow>{MESSAGE}'
# You can also specify a format for each group.
group-formats:
# default: '{DISPLAYNAME}: {MESSAGE}'
# admin: '[{GROUP}] {DISPLAYNAME}: {MESSAGE}'
############################################################
# +------------------------------------------------------+ #
# | Storage Settings | #
# +------------------------------------------------------+ #
############################################################
storage:
# Available types: local, mongodb, mysql
type: mongodb
#sync-interval: 60 # In minutes, 0 to disable
database:
mongodb:
connection-string: "mongodb://localhost:27017"
database: "ethereal_db"
mysql:
host: "127.0.0.1"
port: 3306
database: "ethereal_db"
username: "admin"
password: "ciao1234"This file, located in 'mods/EtherealLabs_EtherealPerms/', contains all group definitions.
Example Configuration File
{
"default": {
"name": "default",
"weight": 0,
"nodes": [
{
"key": "etherealperms.default",
"value": true,
"context": {}
},
{
"key": "hytale.command.spawn.self",
"value": true,
"context": {}
},
{
"key": "prefix.1.<cyan><bold>User</bold><reset>",
"value": true,
"context": {}
}
]
},
"moderator": {
"name": "moderator",
"weight": 0,
"nodes": [
{
"key": "hytale.system.command.kick",
"value": true,
"context": {}
},
{
"key": "prefix.1.<blue><bold>Mod</bold><reset>",
"value": true,
"context": {}
},
{
"key": "hytale.accesscontrolmodule.command.ban",
"value": true,
"context": {}
}
]
},
"admin": {
"name": "admin",
"weight": 0,
"nodes": [
{
"key": "*",
"value": true,
"context": {}
},
{
"key": "prefix.10.<red><bold>Admin</bold><reset>",
"value": true,
"context": {}
}
]
}
}Each user's data is stored in a separate file named after their UUID.
Example Configuration File
{
"uuid": "uuid",
"username": "Darkeox34",
"nodes": [
{
"key": "prefix.10.<red>TestPrefix<reset>",
"value": true,
"context": {}
},
{
"key": "hytale.accesscontrolmodule.command.ban",
"value": true,
"context": {}
}
]
}Commands
The base command is /ep (aliases: /eperms, /etherealperms). Arguments in <angle brackets> are required, while those in [square brackets] are optional.
General Commands
Open in-game ui editor.
Reloads all user and group data from the configuration files.
Lists all available groups.
Creates a new group.
Delete a group.
Synchronize local data with remote data
Synchronize remote data with local data
User Commands
Base Permission: etherealperms.user
Displays information about a user.
Adds a user to a group.
/ep user group add Darkeox34 adminRemoves a user from a group.
/ep user group remove Darkeox34 adminSets a user's primary group, removing them from all others.
/ep user group set Darkeox34 adminSets a permission node for a user.
/ep user permission set Darkeox34 myplugin.permission --value=trueRemoves a permission node from a user.
/ep user permission unset Darkeox34 myplugin.permissionSets a metadata pair of value [key,value] for a user
/ep user meta set Darkeox34 example.key example.valueSets a suffix for a user, removing all other suffixes.
/ep user meta setsuffix Darkeox34 10 <red><bold><italic>MySuffix<reset><#FF00000>Adds a prefix for a user
/ep user meta setprefix Darkeox34 10 <red><bold><italic>MyPrefix<reset><#FF00000>Removes a suffix from a user
/ep user meta removesuffix Darkeox34 10 --suffix=<red>MySuffixSets a prefix to a user, removing all other prefixes.
/ep user meta setprefix Darkeox34 10 <red><bold>Admin<reset>Adds a suffix to a user
/ep user meta addsuffix Darkeox34 10 <red><bold>MySuffix<reset>Removes a prefix from a user
/ep user meta removeprefix Darkeox34 10 --prefix=<red>MyPrefixClone user configuration from a source user to a target user.
/ep user clone Darkeox34 zDavidGroup Commands
Base Permission: etherealperms.group
Displays information about a group.
Deletes a group.
/ep group deletegroup adminRenames a group.
/ep group rename admin adminsSets the weight for a group.
/ep group setweight admin 50Adds a parent to a group.
/ep group parent add admin moderatorRemoves a parent from a group.
/ep group parent remove admin moderatorSets a metadata value for a group.
/ep group meta set admin example.key example.valueSets a suffix to a group.
/ep group meta setsuffix admin 10 <red><bold><italic>MySuffix<reset><#FF00000>Adds a prefix to a group
/ep group meta addprefix admin 10 <red><bold>Admin<reset>Removes a suffix from a group
/ep group meta removesuffix admin 10 --suffix=<red>MySuffixSets a prefix to a group
/ep group meta setprefix admin 10 <red><bold>Admin<reset>Adds a suffix to a group
/ep group meta addsuffix admin 10 <red><bold>MySuffix<reset>Removes a prefix from a group
/ep group meta removeprefix admin 10 --prefix=<red>MyPrefixDeveloper API
EtherealPerms provides a robust API for developers to interact with the permission system directly from their plugins. Access the API instance via EtherealPerms.api.
Permission Checks
Checks if a specific user possesses a permission node.
Parameters
Returns
True if the user has the permission, false otherwise.
Example
if (api.hasPermission(player.uniqueId, "myplugin.admin")) {
player.sendMessage("You have access!")
}Checks if a player is a member of a specific group (including inheritance if applicable in future updates, currently direct check).
Parameters
Returns
True if the player is in the group.
Example
if (api.isPlayerInGroup(player.uniqueId, "vip")) {
// Player is VIP
}User Metadata
Retrieves the highest priority chat prefix for a user.
Parameters
Returns
The prefix string containing legacy/hex color codes.
Example
val prefix = api.getUserPrefix(player.uniqueId)Retrieves the highest priority chat suffix for a user.
Parameters
Returns
The suffix string.
Example
val suffix = api.getUserSuffix(player.uniqueId)Gets the user's primary group (usually the one with highest weight).
Parameters
Returns
The Group object or null if none found.
Example
val group = api.getUserPrimaryGroup(player.uniqueId)Retrieves all groups the user is a member of.
Parameters
Returns
A list of Group objects.
Example
api.getUserGroups(uuid).forEach { group ->
println("Member of: ${group.name}")
}User Management
Grants a specific permission node to a user.
Parameters
Example
api.addUserPermission(uuid, "bonus.coins")Revokes a permission node from a user.
Parameters
Example
api.removeUserPermission(uuid, "bonus.coins")Sets the player's primary group, removing all other group memberships.
Parameters
Example
api.setPlayerToGroup(uuid, "admin")Adds a player to a group without affecting other memberships.
Parameters
Example
api.addPlayerToGroup(uuid, "builder")Removes a player from a specific group.
Parameters
Example
api.removePlayerFromGroup(uuid, "default")Group Management
Adds a permission node to a group by name.
Parameters
Example
api.addGroupPermission("default", "spawn.use")Removes a permission node from a group by name.
Parameters
Example
api.removeGroupPermission("default", "spawn.use")Utilities
Parses a string with legacy (&a) or Hex (<#FFFFFF>) color codes into a Hytale Message component.
Parameters
Returns
A com.hypixel.hytale.server.core.Message object.
Example
val msg = api.translateColors("<green>Success! <#ff00ff>Woohoo!")
player.sendMessage(msg)