Mirror von
https://github.com/PaperMC/Velocity.git
synchronisiert 2024-11-17 05:20:14 +01:00
Don't directly implement PermissionChecker
Dieser Commit ist enthalten in:
Ursprung
29b409b9f1
Commit
19f80bd618
@ -24,7 +24,7 @@ import org.jetbrains.annotations.NotNull;
|
|||||||
/**
|
/**
|
||||||
* Represents something that can be used to run a {@link Command}.
|
* Represents something that can be used to run a {@link Command}.
|
||||||
*/
|
*/
|
||||||
public interface CommandSource extends Audience, PermissionSubject, PermissionChecker {
|
public interface CommandSource extends Audience, PermissionSubject {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sends the specified {@code component} to the invoker.
|
* Sends the specified {@code component} to the invoker.
|
||||||
@ -44,18 +44,26 @@ public interface CommandSource extends Audience, PermissionSubject, PermissionCh
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
default @NotNull Pointers pointers() {
|
default @NotNull Pointers pointers() {
|
||||||
return Pointers.builder().withStatic(PermissionChecker.POINTER, this).build();
|
return Pointers.builder().withStatic(PermissionChecker.POINTER, getPermissionChecker()).build();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
/**
|
||||||
default @NotNull TriState value(String permission) {
|
* Gets the permission checker for the invoker.
|
||||||
Tristate state = getPermissionValue(permission);
|
*
|
||||||
|
* @return invoker's permission checker
|
||||||
|
*/
|
||||||
|
default PermissionChecker getPermissionChecker() {
|
||||||
|
return permission -> {
|
||||||
|
final Tristate state = getPermissionValue(permission);
|
||||||
if (state == Tristate.TRUE) {
|
if (state == Tristate.TRUE) {
|
||||||
return TriState.TRUE;
|
return TriState.TRUE;
|
||||||
}
|
} else if (state == Tristate.UNDEFINED) {
|
||||||
if (state == Tristate.UNDEFINED) {
|
|
||||||
return TriState.NOT_SET;
|
return TriState.NOT_SET;
|
||||||
}
|
} else if (state == Tristate.FALSE) {
|
||||||
return TriState.FALSE;
|
return TriState.FALSE;
|
||||||
|
} else {
|
||||||
|
throw new IllegalArgumentException();
|
||||||
|
}
|
||||||
|
};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -94,14 +94,12 @@ import java.util.concurrent.ThreadLocalRandom;
|
|||||||
import net.kyori.adventure.audience.MessageType;
|
import net.kyori.adventure.audience.MessageType;
|
||||||
import net.kyori.adventure.bossbar.BossBar;
|
import net.kyori.adventure.bossbar.BossBar;
|
||||||
import net.kyori.adventure.identity.Identity;
|
import net.kyori.adventure.identity.Identity;
|
||||||
import net.kyori.adventure.permission.PermissionChecker;
|
|
||||||
import net.kyori.adventure.text.Component;
|
import net.kyori.adventure.text.Component;
|
||||||
import net.kyori.adventure.text.TranslatableComponent;
|
import net.kyori.adventure.text.TranslatableComponent;
|
||||||
import net.kyori.adventure.text.format.NamedTextColor;
|
import net.kyori.adventure.text.format.NamedTextColor;
|
||||||
import net.kyori.adventure.text.serializer.gson.GsonComponentSerializer;
|
import net.kyori.adventure.text.serializer.gson.GsonComponentSerializer;
|
||||||
import net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer;
|
import net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer;
|
||||||
import net.kyori.adventure.text.serializer.plain.PlainComponentSerializer;
|
import net.kyori.adventure.text.serializer.plain.PlainComponentSerializer;
|
||||||
import net.kyori.adventure.util.TriState;
|
|
||||||
import org.apache.logging.log4j.LogManager;
|
import org.apache.logging.log4j.LogManager;
|
||||||
import org.apache.logging.log4j.Logger;
|
import org.apache.logging.log4j.Logger;
|
||||||
import org.checkerframework.checker.nullness.qual.MonotonicNonNull;
|
import org.checkerframework.checker.nullness.qual.MonotonicNonNull;
|
||||||
@ -124,7 +122,6 @@ public class ConnectedPlayer implements MinecraftConnectionAssociation, Player {
|
|||||||
private final MinecraftConnection connection;
|
private final MinecraftConnection connection;
|
||||||
private final @Nullable InetSocketAddress virtualHost;
|
private final @Nullable InetSocketAddress virtualHost;
|
||||||
private GameProfile profile;
|
private GameProfile profile;
|
||||||
private PermissionChecker permissionChecker;
|
|
||||||
private PermissionFunction permissionFunction;
|
private PermissionFunction permissionFunction;
|
||||||
private int tryIndex = 0;
|
private int tryIndex = 0;
|
||||||
private long ping = -1;
|
private long ping = -1;
|
||||||
@ -152,7 +149,6 @@ public class ConnectedPlayer implements MinecraftConnectionAssociation, Player {
|
|||||||
this.profile = profile;
|
this.profile = profile;
|
||||||
this.connection = connection;
|
this.connection = connection;
|
||||||
this.virtualHost = virtualHost;
|
this.virtualHost = virtualHost;
|
||||||
this.permissionChecker = PermissionChecker.always(TriState.FALSE);
|
|
||||||
this.permissionFunction = PermissionFunction.ALWAYS_UNDEFINED;
|
this.permissionFunction = PermissionFunction.ALWAYS_UNDEFINED;
|
||||||
this.connectionPhase = connection.getType().getInitialClientPhase();
|
this.connectionPhase = connection.getType().getInitialClientPhase();
|
||||||
this.knownChannels = CappedSet.create(MAX_PLUGIN_CHANNELS);
|
this.knownChannels = CappedSet.create(MAX_PLUGIN_CHANNELS);
|
||||||
@ -253,18 +249,6 @@ public class ConnectedPlayer implements MinecraftConnectionAssociation, Player {
|
|||||||
|
|
||||||
void setPermissionFunction(PermissionFunction permissionFunction) {
|
void setPermissionFunction(PermissionFunction permissionFunction) {
|
||||||
this.permissionFunction = permissionFunction;
|
this.permissionFunction = permissionFunction;
|
||||||
this.permissionChecker = permission -> {
|
|
||||||
final Tristate state = permissionFunction.getPermissionValue(permission);
|
|
||||||
if (state == Tristate.TRUE) {
|
|
||||||
return TriState.TRUE;
|
|
||||||
} else if (state == Tristate.UNDEFINED) {
|
|
||||||
return TriState.NOT_SET;
|
|
||||||
} else if (state == Tristate.FALSE) {
|
|
||||||
return TriState.FALSE;
|
|
||||||
} else {
|
|
||||||
throw new IllegalArgumentException();
|
|
||||||
}
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
Laden…
In neuem Issue referenzieren
Einen Benutzer sperren