Allow entity selector completion permission controlled

This commit is contained in:
IzzelAliz 2022-07-20 22:21:00 +08:00
parent 74ac54c4e4
commit 9508543842
No known key found for this signature in database
GPG Key ID: EE50E123A11D8338

View File

@ -2,18 +2,22 @@ package io.izzel.arclight.common.mixin.core.commands.arguments;
import com.mojang.brigadier.StringReader;
import com.mojang.brigadier.exceptions.CommandSyntaxException;
import io.izzel.arclight.common.bridge.core.command.CommandSourceBridge;
import io.izzel.arclight.common.bridge.core.command.arguments.EntityArgumentBridge;
import io.izzel.arclight.common.bridge.core.command.arguments.EntitySelectorParserBridge;
import net.minecraft.commands.SharedSuggestionProvider;
import net.minecraft.commands.arguments.EntityArgument;
import net.minecraft.commands.arguments.selector.EntitySelector;
import net.minecraft.commands.arguments.selector.EntitySelectorParser;
import org.spongepowered.asm.mixin.Final;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Shadow;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Redirect;
import static net.minecraft.commands.arguments.EntityArgument.ERROR_ONLY_PLAYERS_ALLOWED;
import static net.minecraft.commands.arguments.EntityArgument.ERROR_NOT_SINGLE_ENTITY;
import static net.minecraft.commands.arguments.EntityArgument.ERROR_NOT_SINGLE_PLAYER;
import static net.minecraft.commands.arguments.EntityArgument.ERROR_ONLY_PLAYERS_ALLOWED;
@Mixin(EntityArgument.class)
public class EntityArgumentMixin implements EntityArgumentBridge {
@ -47,4 +51,9 @@ public class EntityArgumentMixin implements EntityArgumentBridge {
return entityselector;
}
}
@Redirect(method = "listSuggestions", at = @At(value = "INVOKE", target = "Lnet/minecraft/commands/SharedSuggestionProvider;hasPermission(I)Z"))
private boolean arclight$canUseSelector(SharedSuggestionProvider instance, int i) {
return ((CommandSourceBridge) instance).bridge$hasPermission(i, "minecraft.command.selector");
}
}