diff --git a/common/src/main/java/xyz/jpenilla/tabtps/common/User.java b/common/src/main/java/xyz/jpenilla/tabtps/common/User.java index a137092b..541dbcd9 100644 --- a/common/src/main/java/xyz/jpenilla/tabtps/common/User.java +++ b/common/src/main/java/xyz/jpenilla/tabtps/common/User.java @@ -23,6 +23,7 @@ */ package xyz.jpenilla.tabtps.common; +import io.leangen.geantyref.TypeToken; import java.util.List; import java.util.UUID; import net.kyori.adventure.text.Component; @@ -36,6 +37,8 @@ @DefaultQualifier(NonNull.class) public interface User

extends Commander { + TypeToken> TYPE = new TypeToken>() {}; + UUID uuid(); Component displayName(); diff --git a/common/src/main/java/xyz/jpenilla/tabtps/common/command/ExceptionHandler.java b/common/src/main/java/xyz/jpenilla/tabtps/common/command/ExceptionHandler.java index 1b80d7f6..01c0e0a0 100644 --- a/common/src/main/java/xyz/jpenilla/tabtps/common/command/ExceptionHandler.java +++ b/common/src/main/java/xyz/jpenilla/tabtps/common/command/ExceptionHandler.java @@ -23,6 +23,7 @@ */ package xyz.jpenilla.tabtps.common.command; +import io.leangen.geantyref.GenericTypeReflector; import java.io.PrintWriter; import java.io.StringWriter; import java.util.Arrays; @@ -139,7 +140,7 @@ private void argumentParsing(final @NonNull ExceptionContext ctx) { final Component message = Messages.COMMAND_EXCEPTION_INVALID_SENDER_TYPE.styled( RED, - text(ctx.exception().requiredSender().getSimpleName()) + text(GenericTypeReflector.erase(ctx.exception().requiredSender()).getSimpleName()) ); decorateAndSend(ctx.context().sender(), message); } diff --git a/common/src/main/java/xyz/jpenilla/tabtps/common/command/commands/ToggleDisplayCommands.java b/common/src/main/java/xyz/jpenilla/tabtps/common/command/commands/ToggleDisplayCommands.java index 83ae0da6..db43edce 100644 --- a/common/src/main/java/xyz/jpenilla/tabtps/common/command/commands/ToggleDisplayCommands.java +++ b/common/src/main/java/xyz/jpenilla/tabtps/common/command/commands/ToggleDisplayCommands.java @@ -29,7 +29,6 @@ import org.checkerframework.checker.nullness.qual.NonNull; import org.incendo.cloud.Command; import org.incendo.cloud.context.CommandContext; -import org.incendo.cloud.execution.CommandExecutionHandler; import org.incendo.cloud.permission.PredicatePermission; import xyz.jpenilla.tabtps.common.Messages; import xyz.jpenilla.tabtps.common.TabTPS; @@ -59,33 +58,25 @@ public void register() { final Command.Builder toggle = this.commands.rootBuilder().literal("toggle"); this.commands.register(toggle.literal("tab") - .senderType(User.class) - .permission(PredicatePermission.of(commander -> this.togglePermission(commander, DisplayConfig::tabSettings))) + .senderType(User.TYPE) + .permission(PredicatePermission.of(user -> this.togglePermission(user, DisplayConfig::tabSettings))) .commandDescription(richDescription(Messages.COMMAND_TOGGLE_TAB_DESCRIPTION.plain())) - .handler(wrap(this::toggleTab))); + .handler(this::toggleTab)); this.commands.register(toggle.literal("actionbar") - .senderType(User.class) - .permission(PredicatePermission.of(commander -> this.togglePermission(commander, DisplayConfig::actionBarSettings))) + .senderType(User.TYPE) + .permission(PredicatePermission.of(user -> this.togglePermission(user, DisplayConfig::actionBarSettings))) .commandDescription(richDescription(Messages.COMMAND_TOGGLE_ACTIONBAR_DESCRIPTION.plain())) - .handler(wrap(this::toggleActionBar))); + .handler(this::toggleActionBar)); this.commands.register(toggle.literal("bossbar") - .senderType(User.class) - .permission(PredicatePermission.of(commander -> this.togglePermission(commander, DisplayConfig::bossBarSettings))) + .senderType(User.TYPE) + .permission(PredicatePermission.of(user -> this.togglePermission(user, DisplayConfig::bossBarSettings))) .commandDescription(richDescription(Messages.COMMAND_TOGGLE_BOSSBAR_DESCRIPTION.plain())) - .handler(wrap(this::toggleBossBar))); + .handler(this::toggleBossBar)); } - // todo - @SuppressWarnings({"unchecked", "rawtypes"}) - private static CommandExecutionHandler wrap(final CommandExecutionHandler> handler) { - return (CommandExecutionHandler) handler; - } - - private boolean togglePermission(final @NonNull Commander commander, final @NonNull Function function) { - if (!(commander instanceof User)) return true; // todo ? - final User user = (User) commander; + private boolean togglePermission(final @NonNull User user, final @NonNull Function function) { return this.tabTPS.findDisplayConfig(user) .map(config -> function.apply(config).allow()) .orElse(false); diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index abc048d5..30c030b9 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -8,7 +8,7 @@ sponge-gradle = { id = "org.spongepowered.gradle.plugin", version = "2.2.0" } adventure = "4.15.0" adventurePagination = "4.0.0-SNAPSHOT" adventurePlatform = "4.3.2" -cloud = "2.0.0-beta.1" +cloud = "2.0.0-SNAPSHOT" cloudMinecraft = "2.0.0-beta.1" cloudModded = "2.0.0-beta.1" cloudSponge = "2.0.0-SNAPSHOT"