From 82894ccdffeea6babe552028912f4098c8eb143b Mon Sep 17 00:00:00 2001 From: Jason Penilla <11360596+jpenilla@users.noreply.github.com> Date: Wed, 26 Oct 2022 11:44:01 -0700 Subject: [PATCH] Fix pre-1.13 compat --- .../selector/MultipleEntitySelectorArgument.java | 5 ++--- .../selector/MultiplePlayerSelectorArgument.java | 5 ++--- .../bukkit/parsers/selector/SelectorUtils.java | 13 +++++++++++++ 3 files changed, 17 insertions(+), 6 deletions(-) diff --git a/cloud-minecraft/cloud-bukkit/src/main/java/cloud/commandframework/bukkit/parsers/selector/MultipleEntitySelectorArgument.java b/cloud-minecraft/cloud-bukkit/src/main/java/cloud/commandframework/bukkit/parsers/selector/MultipleEntitySelectorArgument.java index 7c3a1dec..8935e6da 100644 --- a/cloud-minecraft/cloud-bukkit/src/main/java/cloud/commandframework/bukkit/parsers/selector/MultipleEntitySelectorArgument.java +++ b/cloud-minecraft/cloud-bukkit/src/main/java/cloud/commandframework/bukkit/parsers/selector/MultipleEntitySelectorArgument.java @@ -27,7 +27,6 @@ import cloud.commandframework.ArgumentDescription; import cloud.commandframework.arguments.CommandArgument; import cloud.commandframework.bukkit.arguments.selector.MultipleEntitySelector; import cloud.commandframework.context.CommandContext; -import com.mojang.brigadier.exceptions.SimpleCommandExceptionType; import java.util.List; import java.util.function.BiFunction; import org.apiguardian.api.API; @@ -191,10 +190,10 @@ public final class MultipleEntitySelectorArgument extends CommandArgument entities = wrapper.entities(); if (entities.isEmpty() && !this.allowEmpty) { - throw ((SimpleCommandExceptionType) NO_ENTITIES_EXCEPTION_TYPE.get()).create(); + new Thrower(NO_ENTITIES_EXCEPTION_TYPE.get()).throwIt(); } return new MultipleEntitySelector(input, entities); } diff --git a/cloud-minecraft/cloud-bukkit/src/main/java/cloud/commandframework/bukkit/parsers/selector/MultiplePlayerSelectorArgument.java b/cloud-minecraft/cloud-bukkit/src/main/java/cloud/commandframework/bukkit/parsers/selector/MultiplePlayerSelectorArgument.java index 220503db..7263e13f 100644 --- a/cloud-minecraft/cloud-bukkit/src/main/java/cloud/commandframework/bukkit/parsers/selector/MultiplePlayerSelectorArgument.java +++ b/cloud-minecraft/cloud-bukkit/src/main/java/cloud/commandframework/bukkit/parsers/selector/MultiplePlayerSelectorArgument.java @@ -30,7 +30,6 @@ import cloud.commandframework.bukkit.arguments.selector.MultiplePlayerSelector; import cloud.commandframework.bukkit.parsers.PlayerArgument; import cloud.commandframework.context.CommandContext; import com.google.common.collect.ImmutableList; -import com.mojang.brigadier.exceptions.SimpleCommandExceptionType; import java.util.ArrayList; import java.util.List; import java.util.Queue; @@ -197,10 +196,10 @@ public final class MultiplePlayerSelectorArgument extends CommandArgument players = wrapper.players(); if (players.isEmpty() && !this.allowEmpty) { - throw ((SimpleCommandExceptionType) NO_PLAYERS_EXCEPTION_TYPE.get()).create(); + new Thrower(NO_PLAYERS_EXCEPTION_TYPE.get()).throwIt(); } return new MultiplePlayerSelector(input, new ArrayList<>(players)); } diff --git a/cloud-minecraft/cloud-bukkit/src/main/java/cloud/commandframework/bukkit/parsers/selector/SelectorUtils.java b/cloud-minecraft/cloud-bukkit/src/main/java/cloud/commandframework/bukkit/parsers/selector/SelectorUtils.java index 2b71b6c7..b8d06f38 100644 --- a/cloud-minecraft/cloud-bukkit/src/main/java/cloud/commandframework/bukkit/parsers/selector/SelectorUtils.java +++ b/cloud-minecraft/cloud-bukkit/src/main/java/cloud/commandframework/bukkit/parsers/selector/SelectorUtils.java @@ -139,6 +139,19 @@ final class SelectorUtils { private final @Nullable ArgumentParser modernParser; + // Hide brigadier references in inner class + protected static final class Thrower { + private final Object type; + + Thrower(final Object simpleCommandExceptionType) { + this.type = simpleCommandExceptionType; + } + + void throwIt() { + throw rethrow(((SimpleCommandExceptionType) this.type).create()); + } + } + protected SelectorParser( final boolean single, final boolean playersOnly