Fixes for offline mode servers
This commit is contained in:
@@ -35,9 +35,7 @@ import me.lucko.luckperms.exceptions.ObjectAlreadyHasException;
|
||||
import me.lucko.luckperms.exceptions.ObjectLacksException;
|
||||
import me.lucko.luckperms.groups.Group;
|
||||
import me.lucko.luckperms.users.User;
|
||||
import org.spongepowered.api.Sponge;
|
||||
import org.spongepowered.api.command.CommandSource;
|
||||
import org.spongepowered.api.entity.living.player.Player;
|
||||
import org.spongepowered.api.service.context.Context;
|
||||
import org.spongepowered.api.service.permission.Subject;
|
||||
import org.spongepowered.api.service.permission.SubjectCollection;
|
||||
@@ -86,15 +84,6 @@ public class LuckPermsSubject implements Subject {
|
||||
|
||||
@Override
|
||||
public Optional<CommandSource> getCommandSource() {
|
||||
if (holder instanceof User) {
|
||||
final UUID uuid = ((User) holder).getUuid();
|
||||
|
||||
Optional<Player> p = Sponge.getServer().getPlayer(uuid);
|
||||
if (p.isPresent()) {
|
||||
return Optional.of(p.get());
|
||||
}
|
||||
}
|
||||
|
||||
return Optional.empty();
|
||||
}
|
||||
|
||||
|
||||
@@ -26,12 +26,13 @@ import com.google.common.base.Splitter;
|
||||
import lombok.Getter;
|
||||
import lombok.NonNull;
|
||||
import me.lucko.luckperms.users.User;
|
||||
import org.spongepowered.api.Sponge;
|
||||
import org.spongepowered.api.command.CommandSource;
|
||||
import org.spongepowered.api.entity.living.player.Player;
|
||||
import org.spongepowered.api.service.context.Context;
|
||||
import org.spongepowered.api.util.Tristate;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
import java.util.*;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
|
||||
public class LuckPermsUserSubject extends LuckPermsSubject {
|
||||
@@ -109,4 +110,21 @@ public class LuckPermsUserSubject extends LuckPermsSubject {
|
||||
|
||||
return service.getDefaults().getPermissionValue(contexts, permission);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getIdentifier() {
|
||||
return service.getPlugin().getUuidCache().getExternalUUID(user.getUuid()).toString();
|
||||
}
|
||||
|
||||
@Override
|
||||
public Optional<CommandSource> getCommandSource() {
|
||||
final UUID uuid = service.getPlugin().getUuidCache().getExternalUUID(user.getUuid());
|
||||
|
||||
Optional<Player> p = Sponge.getServer().getPlayer(uuid);
|
||||
if (p.isPresent()) {
|
||||
return Optional.of(p.get());
|
||||
}
|
||||
|
||||
return Optional.empty();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -61,22 +61,23 @@ public class UserCollection implements SubjectCollection {
|
||||
}
|
||||
|
||||
private void load(UUID uuid) {
|
||||
if (!manager.isLoaded(uuid)) {
|
||||
UUID internal = service.getPlugin().getUuidCache().getUUID(uuid);
|
||||
if (!manager.isLoaded(internal)) {
|
||||
return;
|
||||
}
|
||||
|
||||
User user = manager.get(uuid);
|
||||
users.put(uuid, LuckPermsUserSubject.wrapUser(user, service));
|
||||
User user = manager.get(internal);
|
||||
users.put(internal, LuckPermsUserSubject.wrapUser(user, service));
|
||||
}
|
||||
|
||||
public void unload(UUID uuid) {
|
||||
users.remove(uuid);
|
||||
users.remove(service.getPlugin().getUuidCache().getUUID(uuid));
|
||||
}
|
||||
|
||||
@Override
|
||||
public synchronized Subject get(@NonNull String id) {
|
||||
try {
|
||||
UUID u = UUID.fromString(id);
|
||||
UUID u = service.getPlugin().getUuidCache().getUUID(UUID.fromString(id));
|
||||
if (users.containsKey(u)) {
|
||||
return users.get(u);
|
||||
}
|
||||
@@ -105,7 +106,7 @@ public class UserCollection implements SubjectCollection {
|
||||
public boolean hasRegistered(@NonNull String id) {
|
||||
try {
|
||||
UUID u = UUID.fromString(id);
|
||||
return manager.isLoaded(u);
|
||||
return manager.isLoaded(service.getPlugin().getUuidCache().getUUID(u));
|
||||
} catch (IllegalArgumentException e) {
|
||||
User user = manager.get(id);
|
||||
return user != null;
|
||||
|
||||
Reference in New Issue
Block a user