Gestión de Permisos en Hytale

Hytale: Guías, Mods, Opiniones | Videojuegos en CIBERED

En esta guía aprenderás a gestionar permisos y grupos de usuarios dentro de tu plugin de Hytale usando la clase PermissionsModule.

Explorando el Código de HytaleServer.jar

Introducción a PermissionsModule

La clase PermissionsModule se encarga de administrar nodos de permisos y grupos de usuarios en tu plugin. Con esta clase puedes:

  • Agregar permisos a un usuario
  • Eliminar permisos de un usuario
  • Agregar permisos a un grupo (si el grupo no existe, se crea automáticamente)
  • Eliminar permisos de un grupo
  • Agregar un usuario a un grupo
  • Eliminar un usuario de un grupo
  • Listar todos los grupos a los que pertenece un usuario
  • Comprobar si un usuario tiene un permiso específico (revisa tanto permisos directos como de grupo)

Limitaciones:

  • No permite listar todos los grupos definidos
  • No permite eliminar un grupo completo

Gestión de Nodos de Permiso

Agregar Nodos de Permiso a un Usuario

Para agregar permisos a un usuario, necesitas un Set<String> con los nodos que deseas añadir. Esto agrega permisos encima de los existentes, no los reemplaza.

Set<String> permissions = new HashSet<>();
PermissionsModule perms = PermissionsModule.get();
perms.addUserPermission(playerUUID, permissions);

Eliminar Nodos de Permiso de un Usuario

Para eliminar permisos de un usuario se utiliza el método removeUserPermission:

Set<String> permissions = new HashSet<>();
PermissionsModule perms = PermissionsModule.get();
perms.removeUserPermission(playerUUID, permissions);

Gestión de Grupos

Agregar Permisos a un Grupo

String groupName = "testGroup";
Set<String> permissions = new HashSet<>();
PermissionsModule perms = PermissionsModule.get();
perms.addGroupPermission(groupName, permissions);

Eliminar Permisos de un Grupo

String groupName = "testGroup";
Set<String> permissions = new HashSet<>();
PermissionsModule perms = PermissionsModule.get();
perms.removeGroupPermission(groupName, permissions);

Agregar Usuario a un Grupo

String groupName = "testGroup";
PermissionsModule perms = PermissionsModule.get();
perms.addUserToGroup(playerUUID, groupName);

Eliminar Usuario de un Grupo

String groupName = "testGroup";
PermissionsModule perms = PermissionsModule.get();
perms.removeUserFromGroup(playerUUID, groupName);

Listar Grupos de un Usuario

PermissionsModule perms = PermissionsModule.get();
perms.getGroupsForUser(playerUUID);

Comprobación de Permisos

Para verificar si un usuario tiene un permiso específico:

boolean hasPermission = PermissionsModule.hasPermission(playerUUID, "permission.node");

Esto revisa tanto los permisos individuales del usuario como los heredados por grupos.


Personalización: Implementando tu Propio Almacenamiento

Hytale permite definir proveedores personalizados para el almacenamiento de permisos y grupos, lo que es útil si quieres usar una base de datos en lugar de archivos.

Crear un proveedor personalizado

Define una clase que implemente PermissionProvider:

public class DatabasePermissionProvider implements PermissionProvider {
    // Implementa los métodos necesarios usando tu base de datos
}

Registrar el proveedor

Para forzar que tu plugin use este proveedor:

PermissionsModule perms = PermissionsModule.get();
perms.getProviders().addFirst(new DatabasePermissionProvider());

Conclusión

PermissionsModule es la herramienta principal para manejar permisos y grupos de usuarios en tu plugin de Hytale. Te permite controlar accesos de manera granular y también soporta la integración con sistemas de almacenamiento personalizados.