Merge branch 'dev/1.1.0' into dev/3.0.0

# Conflicts:
#	api/src/main/java/com/velocitypowered/api/proxy/Player.java
#	proxy/src/main/java/com/velocitypowered/proxy/connection/client/ConnectedPlayer.java
This commit is contained in:
Andrew Steinborn
2021-06-12 20:12:31 -04:00
5 changed files with 68 additions and 1 deletions

View File

@@ -7,6 +7,9 @@
package com.velocitypowered.api.permission;
import net.kyori.adventure.permission.PermissionChecker;
import net.kyori.adventure.util.TriState;
/**
* Represents a object that has a set of queryable permissions.
*/
@@ -29,4 +32,13 @@ public interface PermissionSubject {
* @return the value the permission is set to
*/
Tristate getPermissionValue(String permission);
/**
* Gets the permission checker for the subject.
*
* @return subject's permission checker
*/
default PermissionChecker getPermissionChecker() {
return permission -> getPermissionValue(permission).toAdventureTriState();
}
}

View File

@@ -7,6 +7,7 @@
package com.velocitypowered.api.permission;
import net.kyori.adventure.util.TriState;
import org.checkerframework.checker.nullness.qual.Nullable;
/**
@@ -81,4 +82,21 @@ public enum Tristate {
public boolean asBoolean() {
return this.booleanValue;
}
/**
* Returns the equivalent Adventure {@link TriState}.
*
* @return equivalent Adventure TriState
*/
public TriState toAdventureTriState() {
if (this == Tristate.TRUE) {
return TriState.TRUE;
} else if (this == Tristate.UNDEFINED) {
return TriState.NOT_SET;
} else if (this == Tristate.FALSE) {
return TriState.FALSE;
} else {
throw new IllegalArgumentException();
}
}
}

View File

@@ -21,15 +21,22 @@ import com.velocitypowered.api.util.ModInfo;
import java.util.List;
import java.util.Optional;
import java.util.UUID;
import java.util.function.UnaryOperator;
import net.kyori.adventure.identity.Identified;
import net.kyori.adventure.identity.Identity;
import net.kyori.adventure.key.Key;
import net.kyori.adventure.key.Keyed;
import net.kyori.adventure.text.Component;
import net.kyori.adventure.text.event.HoverEvent;
import net.kyori.adventure.text.event.HoverEventSource;
import org.checkerframework.checker.nullness.qual.Nullable;
import org.jetbrains.annotations.NotNull;
/**
* Represents a player who is connected to the proxy.
*/
public interface Player extends CommandSource, Identified, InboundConnection,
ChannelMessageSource, ChannelMessageSink {
ChannelMessageSource, ChannelMessageSink, HoverEventSource<HoverEvent.ShowEntity>, Keyed {
/**
* Returns the player's current username.
@@ -218,4 +225,16 @@ public interface Player extends CommandSource, Identified, InboundConnection,
*/
@Override
boolean sendPluginMessage(ChannelIdentifier identifier, byte[] data);
@Override
default @NotNull Key key() {
return Key.key("player");
}
@Override
default @NotNull HoverEvent<HoverEvent.ShowEntity> asHoverEvent(
@NotNull UnaryOperator<HoverEvent.ShowEntity> op) {
return HoverEvent.showEntity(op.apply(HoverEvent.ShowEntity.of(this, getUniqueId(),
Component.text(getUsername()))));
}
}