// 
// Decompiled by Procyon v0.6.0
// 

package com.hypixel.hytale.server.core.event.events.permissions;

import java.util.Collections;
import java.util.Set;
import javax.annotation.Nonnull;
import java.util.UUID;
import com.hypixel.hytale.event.IEvent;

public abstract class PlayerPermissionChangeEvent implements IEvent<Void>
{
    @Nonnull
    private final UUID playerUuid;
    
    protected PlayerPermissionChangeEvent(@Nonnull final UUID playerUuid) {
        this.playerUuid = playerUuid;
    }
    
    @Nonnull
    public UUID getPlayerUuid() {
        return this.playerUuid;
    }
    
    public static class PermissionsAdded extends PlayerPermissionChangeEvent
    {
        @Nonnull
        private final Set<String> addedPermissions;
        
        public PermissionsAdded(@Nonnull final UUID playerUuid, @Nonnull final Set<String> addedPermissions) {
            super(playerUuid);
            this.addedPermissions = addedPermissions;
        }
        
        @Nonnull
        public Set<String> getAddedPermissions() {
            return Collections.unmodifiableSet((Set<? extends String>)this.addedPermissions);
        }
    }
    
    public static class PermissionsRemoved extends PlayerPermissionChangeEvent
    {
        @Nonnull
        private final Set<String> removedPermissions;
        
        public PermissionsRemoved(@Nonnull final UUID playerUuid, @Nonnull final Set<String> removedPermissions) {
            super(playerUuid);
            this.removedPermissions = removedPermissions;
        }
        
        @Nonnull
        public Set<String> getRemovedPermissions() {
            return Collections.unmodifiableSet((Set<? extends String>)this.removedPermissions);
        }
    }
    
    public static class GroupAdded extends PlayerPermissionChangeEvent
    {
        @Nonnull
        private final String groupName;
        
        public GroupAdded(@Nonnull final UUID playerUuid, @Nonnull final String groupName) {
            super(playerUuid);
            this.groupName = groupName;
        }
        
        @Nonnull
        public String getGroupName() {
            return this.groupName;
        }
    }
    
    public static class GroupRemoved extends PlayerPermissionChangeEvent
    {
        @Nonnull
        private final String groupName;
        
        public GroupRemoved(@Nonnull final UUID playerUuid, @Nonnull final String groupName) {
            super(playerUuid);
            this.groupName = groupName;
        }
        
        @Nonnull
        public String getGroupName() {
            return this.groupName;
        }
    }
}
