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"