Add fabric-permission-api support for carpet commands.
This commit is contained in:
11 files changed
+38
-33
No files matched your search
@@ -29,6 +29,8 @@ dependencies {
|
||||
// PSA: Some older mods, compiled on Loom 0.2.1, might have outdated Maven POMs.
|
||||
// You may need to force-disable transitiveness on them.
|
||||
compileOnly "com.google.code.findbugs:jsr305:${project.jsr305_version}"
|
||||
|
||||
modImplementation 'me.lucko:fabric-permissions-api:0.3.1'
|
||||
}
|
||||
|
||||
processResources {
|
||||
|
||||
@@ -5,6 +5,7 @@ import carpet.helpers.HopperCounter;
|
||||
import carpet.utils.Messenger;
|
||||
import com.mojang.brigadier.CommandDispatcher;
|
||||
import com.mojang.brigadier.builder.LiteralArgumentBuilder;
|
||||
import me.lucko.fabric.api.permissions.v0.Permissions;
|
||||
import net.minecraft.commands.CommandBuildContext;
|
||||
import net.minecraft.commands.CommandSourceStack;
|
||||
import net.minecraft.network.chat.Component;
|
||||
@@ -15,21 +16,18 @@ import static net.minecraft.commands.Commands.literal;
|
||||
/**
|
||||
* Class for the /counter command which allows to use hoppers pointing into wool
|
||||
*/
|
||||
public class CounterCommand
|
||||
{
|
||||
public class CounterCommand {
|
||||
/**
|
||||
* The method used to register the command and make it available for the players to use.
|
||||
*/
|
||||
public static void register(CommandDispatcher<CommandSourceStack> dispatcher, CommandBuildContext commandBuildContext)
|
||||
{
|
||||
public static void register(CommandDispatcher<CommandSourceStack> dispatcher, CommandBuildContext commandBuildContext) {
|
||||
LiteralArgumentBuilder<CommandSourceStack> commandBuilder = literal("counter")
|
||||
.requires(c -> CarpetSettings.hopperCounters)
|
||||
.requires(c -> Permissions.check(c, "carpet.command.counter", CarpetSettings.hopperCounters))
|
||||
.executes(c -> listAllCounters(c.getSource(), false))
|
||||
.then(literal("reset")
|
||||
.executes(c -> resetCounters(c.getSource())));
|
||||
|
||||
for (DyeColor dyeColor : DyeColor.values())
|
||||
{
|
||||
for (DyeColor dyeColor : DyeColor.values()) {
|
||||
commandBuilder.then(
|
||||
literal(dyeColor.toString())
|
||||
.executes(c -> displayCounter(c.getSource(), dyeColor, false))
|
||||
@@ -37,31 +35,29 @@ public class CounterCommand
|
||||
.executes(c -> resetCounter(c.getSource(), dyeColor)))
|
||||
.then(literal("realtime")
|
||||
.executes(c -> displayCounter(c.getSource(), dyeColor, true)))
|
||||
);
|
||||
);
|
||||
}
|
||||
dispatcher.register(commandBuilder);
|
||||
}
|
||||
|
||||
/**
|
||||
* A method to prettily display the contents of a counter to the player
|
||||
* @param color The counter colour whose contents we are querying.
|
||||
*
|
||||
* @param color The counter colour whose contents we are querying.
|
||||
* @param realtime Whether or not to display it as in-game time or IRL time, which accounts for less than 20TPS which
|
||||
* would make it slower than IRL
|
||||
* would make it slower than IRL
|
||||
*/
|
||||
|
||||
private static int displayCounter(CommandSourceStack source, DyeColor color, boolean realtime)
|
||||
{
|
||||
private static int displayCounter(CommandSourceStack source, DyeColor color, boolean realtime) {
|
||||
HopperCounter counter = HopperCounter.getCounter(color);
|
||||
|
||||
for (Component message: counter.format(source.getServer(), realtime, false))
|
||||
{
|
||||
for (Component message : counter.format(source.getServer(), realtime, false)) {
|
||||
source.sendSuccess(() -> message, false);
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
||||
private static int resetCounters(CommandSourceStack source)
|
||||
{
|
||||
private static int resetCounters(CommandSourceStack source) {
|
||||
HopperCounter.resetAll(source.getServer(), false);
|
||||
Messenger.m(source, "w Restarted all counters");
|
||||
return 1;
|
||||
@@ -69,11 +65,10 @@ public class CounterCommand
|
||||
|
||||
/**
|
||||
* A method to reset the counter's timer to 0 and empty its items
|
||||
*
|
||||
*
|
||||
* @param color The counter whose contents we want to reset
|
||||
*/
|
||||
private static int resetCounter(CommandSourceStack source, DyeColor color)
|
||||
{
|
||||
private static int resetCounter(CommandSourceStack source, DyeColor color) {
|
||||
HopperCounter.getCounter(color).reset(source.getServer());
|
||||
Messenger.m(source, "w Restarted " + color + " counter");
|
||||
return 1;
|
||||
@@ -81,13 +76,12 @@ public class CounterCommand
|
||||
|
||||
/**
|
||||
* A method to prettily display all the counters to the player
|
||||
*
|
||||
* @param realtime Whether or not to display it as in-game time or IRL time, which accounts for less than 20TPS which
|
||||
* would make it slower than IRL
|
||||
* would make it slower than IRL
|
||||
*/
|
||||
private static int listAllCounters(CommandSourceStack source, boolean realtime)
|
||||
{
|
||||
for (Component message: HopperCounter.formatAll(source.getServer(), realtime))
|
||||
{
|
||||
private static int listAllCounters(CommandSourceStack source, boolean realtime) {
|
||||
for (Component message : HopperCounter.formatAll(source.getServer(), realtime)) {
|
||||
source.sendSuccess(() -> message, false);
|
||||
}
|
||||
return 1;
|
||||
|
||||
@@ -5,6 +5,7 @@ import carpet.utils.CommandHelper;
|
||||
import carpet.utils.DistanceCalculator;
|
||||
import com.mojang.brigadier.CommandDispatcher;
|
||||
import com.mojang.brigadier.builder.LiteralArgumentBuilder;
|
||||
import me.lucko.fabric.api.permissions.v0.Permissions;
|
||||
import net.minecraft.commands.CommandBuildContext;
|
||||
import net.minecraft.commands.CommandSourceStack;
|
||||
import net.minecraft.commands.arguments.coordinates.Vec3Argument;
|
||||
@@ -17,7 +18,7 @@ public class DistanceCommand
|
||||
public static void register(CommandDispatcher<CommandSourceStack> dispatcher, CommandBuildContext commandBuildContext)
|
||||
{
|
||||
LiteralArgumentBuilder<CommandSourceStack> command = literal("distance").
|
||||
requires((player) -> CommandHelper.canUseCommand(player, CarpetSettings.commandDistance)).
|
||||
requires((player) -> Permissions.check(player,"carpet.command.distance",CommandHelper.canUseCommand(player, CarpetSettings.commandDistance))).
|
||||
then(literal("from").
|
||||
executes( (c) -> DistanceCalculator.setStart(c.getSource(), c.getSource().getPosition())).
|
||||
then(argument("from", Vec3Argument.vec3()).
|
||||
|
||||
@@ -16,6 +16,7 @@ import com.mojang.brigadier.exceptions.CommandSyntaxException;
|
||||
import java.util.List;
|
||||
import java.util.function.Predicate;
|
||||
|
||||
import me.lucko.fabric.api.permissions.v0.Permissions;
|
||||
import net.minecraft.commands.CommandBuildContext;
|
||||
import net.minecraft.commands.CommandSourceStack;
|
||||
import net.minecraft.commands.arguments.blocks.BlockInput;
|
||||
@@ -40,7 +41,7 @@ public class DrawCommand
|
||||
public static void register(CommandDispatcher<CommandSourceStack> dispatcher, final CommandBuildContext context)
|
||||
{
|
||||
LiteralArgumentBuilder<CommandSourceStack> command = literal("draw").
|
||||
requires((player) -> CommandHelper.canUseCommand(player, CarpetSettings.commandDraw)).
|
||||
requires((player) -> Permissions.check(player,"carpet.command.draw",CommandHelper.canUseCommand(player, CarpetSettings.commandDraw))).
|
||||
then(literal("sphere").
|
||||
then(argument("center", BlockPosArgument.blockPos()).
|
||||
then(argument("radius", IntegerArgumentType.integer(1)).
|
||||
|
||||
@@ -10,6 +10,7 @@ import java.util.List;
|
||||
import java.util.regex.Matcher;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
import me.lucko.fabric.api.permissions.v0.Permissions;
|
||||
import net.minecraft.commands.CommandBuildContext;
|
||||
import net.minecraft.commands.CommandSourceStack;
|
||||
import net.minecraft.commands.Commands;
|
||||
@@ -27,7 +28,7 @@ public class InfoCommand
|
||||
public static void register(CommandDispatcher<CommandSourceStack> dispatcher, CommandBuildContext commandBuildContext)
|
||||
{
|
||||
LiteralArgumentBuilder<CommandSourceStack> command = literal("info").
|
||||
requires((player) -> CommandHelper.canUseCommand(player, CarpetSettings.commandInfo)).
|
||||
requires((player) -> Permissions.check(player, "carpet.command.info",CommandHelper.canUseCommand(player, CarpetSettings.commandInfo))).
|
||||
then(literal("block").
|
||||
then(argument("block position", BlockPosArgument.blockPos()).
|
||||
executes( (c) -> infoBlock(
|
||||
|
||||
@@ -15,6 +15,7 @@ import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import me.lucko.fabric.api.permissions.v0.Permissions;
|
||||
import net.minecraft.commands.CommandBuildContext;
|
||||
import net.minecraft.commands.CommandSourceStack;
|
||||
import net.minecraft.commands.Commands;
|
||||
@@ -29,7 +30,7 @@ public class LogCommand
|
||||
public static void register(CommandDispatcher<CommandSourceStack> dispatcher, CommandBuildContext commandBuildContext)
|
||||
{
|
||||
LiteralArgumentBuilder<CommandSourceStack> literalargumentbuilder = Commands.literal("log").
|
||||
requires((player) -> CommandHelper.canUseCommand(player, CarpetSettings.commandLog)).
|
||||
requires((player) -> Permissions.check(player,"carpet.command.log",CommandHelper.canUseCommand(player, CarpetSettings.commandLog))).
|
||||
executes((context) -> listLogs(context.getSource())).
|
||||
then(Commands.literal("clear").
|
||||
executes( (c) -> unsubFromAll(c.getSource(), c.getSource().getTextName())).
|
||||
|
||||
@@ -6,6 +6,7 @@ import carpet.utils.MobAI;
|
||||
import com.mojang.brigadier.CommandDispatcher;
|
||||
import com.mojang.brigadier.arguments.StringArgumentType;
|
||||
import com.mojang.brigadier.builder.LiteralArgumentBuilder;
|
||||
import me.lucko.fabric.api.permissions.v0.Permissions;
|
||||
import net.minecraft.commands.CommandBuildContext;
|
||||
import net.minecraft.commands.CommandSourceStack;
|
||||
import net.minecraft.core.registries.Registries;
|
||||
@@ -21,7 +22,7 @@ public class MobAICommand
|
||||
public static void register(CommandDispatcher<CommandSourceStack> dispatcher, final CommandBuildContext commandBuildContext)
|
||||
{
|
||||
LiteralArgumentBuilder<CommandSourceStack> command = literal("track").
|
||||
requires((player) -> CommandHelper.canUseCommand(player, CarpetSettings.commandTrackAI)).
|
||||
requires((player) -> Permissions.check(player, "carpet.command.track",CommandHelper.canUseCommand(player, CarpetSettings.commandTrackAI))).
|
||||
then(argument("entity type", resource(commandBuildContext, Registries.ENTITY_TYPE)).
|
||||
|
||||
suggests( (c, b) -> suggest(MobAI.availbleTypes(c.getSource()), b)).
|
||||
|
||||
@@ -6,6 +6,7 @@ import carpet.utils.Messenger;
|
||||
import carpet.utils.PerimeterDiagnostics;
|
||||
import com.mojang.brigadier.CommandDispatcher;
|
||||
import com.mojang.brigadier.builder.LiteralArgumentBuilder;
|
||||
import me.lucko.fabric.api.permissions.v0.Permissions;
|
||||
import net.minecraft.commands.CommandBuildContext;
|
||||
import net.minecraft.commands.CommandSourceStack;
|
||||
import net.minecraft.commands.arguments.coordinates.BlockPosArgument;
|
||||
@@ -27,7 +28,7 @@ public class PerimeterInfoCommand
|
||||
public static void register(CommandDispatcher<CommandSourceStack> dispatcher, CommandBuildContext commandBuildContext)
|
||||
{
|
||||
LiteralArgumentBuilder<CommandSourceStack> command = literal("perimeterinfo").
|
||||
requires((player) -> CommandHelper.canUseCommand(player, CarpetSettings.commandPerimeterInfo)).
|
||||
requires((player) -> Permissions.check(player,"carpet.command.perimeterinfo",CommandHelper.canUseCommand(player, CarpetSettings.commandPerimeterInfo))).
|
||||
executes( (c) -> perimeterDiagnose(
|
||||
c.getSource(),
|
||||
BlockPos.containing(c.getSource().getPosition()),
|
||||
|
||||
@@ -16,6 +16,7 @@ import com.mojang.brigadier.arguments.StringArgumentType;
|
||||
import com.mojang.brigadier.builder.LiteralArgumentBuilder;
|
||||
import com.mojang.brigadier.context.CommandContext;
|
||||
import com.mojang.brigadier.exceptions.CommandSyntaxException;
|
||||
import me.lucko.fabric.api.permissions.v0.Permissions;
|
||||
import net.minecraft.SharedConstants;
|
||||
import net.minecraft.commands.CommandBuildContext;
|
||||
import net.minecraft.commands.CommandSourceStack;
|
||||
@@ -51,7 +52,7 @@ public class PlayerCommand
|
||||
public static void register(CommandDispatcher<CommandSourceStack> dispatcher, CommandBuildContext commandBuildContext)
|
||||
{
|
||||
LiteralArgumentBuilder<CommandSourceStack> command = literal("player")
|
||||
.requires((player) -> CommandHelper.canUseCommand(player, CarpetSettings.commandPlayer))
|
||||
.requires((player) -> Permissions.check(player,"carpet.command.player",CommandHelper.canUseCommand(player, CarpetSettings.commandPlayer)))
|
||||
.then(argument("player", StringArgumentType.word())
|
||||
.suggests((c, b) -> suggest(getPlayerSuggestions(c.getSource()), b))
|
||||
.then(literal("stop").executes(manipulation(EntityPlayerActionPack::stopAll)))
|
||||
|
||||
@@ -6,6 +6,7 @@ import carpet.utils.CommandHelper;
|
||||
|
||||
import com.mojang.brigadier.CommandDispatcher;
|
||||
import com.mojang.brigadier.builder.LiteralArgumentBuilder;
|
||||
import me.lucko.fabric.api.permissions.v0.Permissions;
|
||||
import net.minecraft.commands.CommandBuildContext;
|
||||
import net.minecraft.commands.CommandSourceStack;
|
||||
|
||||
@@ -19,7 +20,7 @@ public class ProfileCommand
|
||||
public static void register(CommandDispatcher<CommandSourceStack> dispatcher, CommandBuildContext commandBuildContext)
|
||||
{
|
||||
LiteralArgumentBuilder<CommandSourceStack> literalargumentbuilder = literal("profile").
|
||||
requires((player) -> CommandHelper.canUseCommand(player, CarpetSettings.commandProfile)).
|
||||
requires((player) -> Permissions.check(player, "carpet.command.profile",CommandHelper.canUseCommand(player, CarpetSettings.commandProfile))).
|
||||
executes( (c) -> healthReport(c.getSource(), 100)).
|
||||
then(literal("health").
|
||||
executes( (c) -> healthReport(c.getSource(), 100)).
|
||||
|
||||
@@ -17,6 +17,7 @@ import java.util.Map;
|
||||
import java.util.function.Function;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import me.lucko.fabric.api.permissions.v0.Permissions;
|
||||
import net.minecraft.commands.CommandBuildContext;
|
||||
import net.minecraft.commands.CommandSourceStack;
|
||||
import net.minecraft.commands.arguments.DimensionArgument;
|
||||
@@ -42,7 +43,7 @@ public class SpawnCommand
|
||||
public static void register(CommandDispatcher<CommandSourceStack> dispatcher, CommandBuildContext commandBuildContext)
|
||||
{
|
||||
LiteralArgumentBuilder<CommandSourceStack> literalargumentbuilder = literal("spawn").
|
||||
requires((player) -> CommandHelper.canUseCommand(player, CarpetSettings.commandSpawn));
|
||||
requires((player) -> Permissions.check(player, "carpet.command.spawn",CommandHelper.canUseCommand(player, CarpetSettings.commandSpawn)));
|
||||
|
||||
literalargumentbuilder.
|
||||
then(literal("list").
|
||||
|
||||
Reference in new issue
Block a user