Skip to content

Commit

Permalink
fixes for 22w11a
Browse files Browse the repository at this point in the history
  • Loading branch information
gnembon committed Mar 17, 2022
1 parent 3e419d1 commit 302a7b4
Show file tree
Hide file tree
Showing 39 changed files with 410 additions and 305 deletions.
2 changes: 1 addition & 1 deletion gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ org.gradle.jvmargs=-Xmx1G
# Fabric Properties
# check these on https://fabricmc.net/use
# or better: https://modmuss50.me/fabric.html
minecraft_version=1.18.2
minecraft_version=22w11a
loader_version=0.13.3
fabric_version=0.46.4+1.18

Expand Down
24 changes: 23 additions & 1 deletion src/main/java/carpet/CarpetExtension.java
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,9 @@
import carpet.script.CarpetExpression;
import carpet.settings.SettingsManager;
import com.mojang.brigadier.CommandDispatcher;
import net.minecraft.commands.CommandBuildContext;
import net.minecraft.commands.CommandSourceStack;
import net.minecraft.core.RegistryAccess;
import net.minecraft.server.MinecraftServer;
import net.minecraft.server.level.ServerPlayer;
import java.util.Map;
Expand Down Expand Up @@ -44,12 +46,32 @@ default void onTick(MinecraftServer server) {}
/**
* Register your own commands right after vanilla commands are added
* If that matters for you
*
* Deprecated, use either this or rather {@link CarpetExtension#registerCommands(CommandDispatcher, CommandBuildContext)}
*
* @param dispatcher The current {@link CommandSource<ServerCommandSource>} dispatcher
* where you should register your commands
*
*/
default void registerCommands(CommandDispatcher<CommandSourceStack> dispatcher) {}
@Deprecated(forRemoval = true)
default void registerCommands(CommandDispatcher<CommandSourceStack> dispatcher) {
final CommandBuildContext context = new CommandBuildContext(RegistryAccess.BUILTIN.get());
context.missingTagAccessPolicy(CommandBuildContext.MissingTagAccessPolicy.RETURN_EMPTY);
registerCommands(dispatcher, context);
}

/**
* Register your own commands right after vanilla commands are added
* If that matters for you
*
* @param dispatcher The current {@link CommandDispatcher<CommandSourceStack>} dispatcher
* where you should register your commands
* @param commandBuildContext The current {@link CommandBuildContext} context
* * which you can use for registries lookup
*/
default void registerCommands(CommandDispatcher<CommandSourceStack> dispatcher, final CommandBuildContext commandBuildContext) {}



/**
* Provide your own custom settings manager managed in the same way as base /carpet
Expand Down
41 changes: 20 additions & 21 deletions src/main/java/carpet/CarpetServer.java
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@
import net.fabricmc.api.ClientModInitializer;
import net.fabricmc.api.DedicatedServerModInitializer;
import net.fabricmc.loader.api.FabricLoader;
import net.minecraft.commands.CommandBuildContext;
import net.minecraft.commands.CommandSourceStack;
import net.minecraft.commands.Commands;
import net.minecraft.server.MinecraftServer;
Expand Down Expand Up @@ -117,37 +118,35 @@ public static void tick(MinecraftServer server)
extensions.forEach(e -> e.onTick(server));
}

@Deprecated
public static void registerCarpetCommands(CommandDispatcher<CommandSourceStack> dispatcher) {
}

public static void registerCarpetCommands(CommandDispatcher<CommandSourceStack> dispatcher, Commands.CommandSelection environment)
public static void registerCarpetCommands(CommandDispatcher<CommandSourceStack> dispatcher, Commands.CommandSelection environment, CommandBuildContext commandBuildContext)
{
if (settingsManager == null) // bootstrap dev initialization check
{
return;
}
settingsManager.registerCommand(dispatcher);
settingsManager.registerCommand(dispatcher, commandBuildContext);
extensions.forEach(e -> {
SettingsManager sm = e.customSettingsManager();
if (sm != null) sm.registerCommand(dispatcher);
if (sm != null) sm.registerCommand(dispatcher, commandBuildContext);
});
TickCommand.register(dispatcher);
ProfileCommand.register(dispatcher);
CounterCommand.register(dispatcher);
LogCommand.register(dispatcher);
SpawnCommand.register(dispatcher);
PlayerCommand.register(dispatcher);
//CameraModeCommand.register(dispatcher);
InfoCommand.register(dispatcher);
DistanceCommand.register(dispatcher);
PerimeterInfoCommand.register(dispatcher);
DrawCommand.register(dispatcher);
ScriptCommand.register(dispatcher);
MobAICommand.register(dispatcher);
TickCommand.register(dispatcher, commandBuildContext);
ProfileCommand.register(dispatcher, commandBuildContext);
CounterCommand.register(dispatcher, commandBuildContext);
LogCommand.register(dispatcher, commandBuildContext);
SpawnCommand.register(dispatcher, commandBuildContext);
PlayerCommand.register(dispatcher, commandBuildContext);
InfoCommand.register(dispatcher, commandBuildContext);
DistanceCommand.register(dispatcher, commandBuildContext);
PerimeterInfoCommand.register(dispatcher, commandBuildContext);
DrawCommand.register(dispatcher, commandBuildContext);
ScriptCommand.register(dispatcher, commandBuildContext);
MobAICommand.register(dispatcher, commandBuildContext);
// registering command of extensions that has registered before either server is created
// for all other, they will have them registered when they add themselves
extensions.forEach(e -> e.registerCommands(dispatcher));
extensions.forEach(e -> {
e.registerCommands(dispatcher, commandBuildContext);
e.registerCommands(dispatcher);
});
currentCommandDispatcher = dispatcher;

if (environment != Commands.CommandSelection.DEDICATED)
Expand Down
3 changes: 2 additions & 1 deletion src/main/java/carpet/commands/CounterCommand.java
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
import carpet.utils.Messenger;
import com.mojang.brigadier.CommandDispatcher;
import com.mojang.brigadier.builder.LiteralArgumentBuilder;
import net.minecraft.commands.CommandBuildContext;
import net.minecraft.commands.CommandRuntimeException;
import net.minecraft.commands.CommandSourceStack;
import net.minecraft.commands.Commands;
Expand All @@ -20,7 +21,7 @@ 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)
public static void register(CommandDispatcher<CommandSourceStack> dispatcher, CommandBuildContext commandBuildContext)
{
LiteralArgumentBuilder<CommandSourceStack> literalargumentbuilder = Commands.literal("counter").executes((context)
-> listAllCounters(context.getSource(), false)).requires((player) ->
Expand Down
3 changes: 2 additions & 1 deletion src/main/java/carpet/commands/DistanceCommand.java
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
import carpet.utils.DistanceCalculator;
import com.mojang.brigadier.CommandDispatcher;
import com.mojang.brigadier.builder.LiteralArgumentBuilder;
import net.minecraft.commands.CommandBuildContext;
import net.minecraft.commands.CommandSourceStack;
import net.minecraft.commands.arguments.coordinates.Vec3Argument;

Expand All @@ -13,7 +14,7 @@

public class DistanceCommand
{
public static void register(CommandDispatcher<CommandSourceStack> dispatcher)
public static void register(CommandDispatcher<CommandSourceStack> dispatcher, CommandBuildContext commandBuildContext)
{
LiteralArgumentBuilder<CommandSourceStack> command = literal("distance").
requires((player) -> SettingsManager.canUseCommand(player, CarpetSettings.commandDistance)).
Expand Down
24 changes: 13 additions & 11 deletions src/main/java/carpet/commands/DrawCommand.java
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,8 @@
import com.mojang.brigadier.exceptions.CommandSyntaxException;
import java.util.List;
import java.util.function.Predicate;

import net.minecraft.commands.CommandBuildContext;
import net.minecraft.commands.CommandSourceStack;
import net.minecraft.commands.arguments.blocks.BlockInput;
import net.minecraft.commands.arguments.blocks.BlockPredicateArgument;
Expand All @@ -35,48 +37,48 @@

public class DrawCommand
{
public static void register(CommandDispatcher<CommandSourceStack> dispatcher)
public static void register(CommandDispatcher<CommandSourceStack> dispatcher, final CommandBuildContext context)
{
LiteralArgumentBuilder<CommandSourceStack> command = literal("draw").
requires((player) -> SettingsManager.canUseCommand(player, CarpetSettings.commandDraw)).
then(literal("sphere").
then(argument("center", BlockPosArgument.blockPos()).
then(argument("radius", IntegerArgumentType.integer(1)).
then(drawShape(c -> DrawCommand.drawSphere(c, false)))))).
then(drawShape(c -> DrawCommand.drawSphere(c, false), context))))).
then(literal("ball").
then(argument("center", BlockPosArgument.blockPos()).
then(argument("radius", IntegerArgumentType.integer(1)).
then(drawShape(c -> DrawCommand.drawSphere(c, true)))))).
then(drawShape(c -> DrawCommand.drawSphere(c, true), context))))).
then(literal("diamond").
then(argument("center", BlockPosArgument.blockPos()).
then(argument("radius", IntegerArgumentType.integer(1)).
then(drawShape(c -> DrawCommand.drawDiamond(c, true)))))).
then(drawShape(c -> DrawCommand.drawDiamond(c, true), context))))).
then(literal("pyramid").
then(argument("center", BlockPosArgument.blockPos()).
then(argument("radius", IntegerArgumentType.integer(1)).
then(argument("height",IntegerArgumentType.integer(1)).
then(argument("pointing",StringArgumentType.word()).suggests( (c, b) -> suggest(new String[]{"up","down"},b)).
then(argument("orientation",StringArgumentType.word()).suggests( (c, b) -> suggest(new String[]{"y","x","z"},b)).
then(drawShape(c -> DrawCommand.drawPyramid(c, "square", true))))))))).
then(drawShape(c -> DrawCommand.drawPyramid(c, "square", true), context)))))))).
then(literal("cone").
then(argument("center", BlockPosArgument.blockPos()).
then(argument("radius", IntegerArgumentType.integer(1)).
then(argument("height",IntegerArgumentType.integer(1)).
then(argument("pointing",StringArgumentType.word()).suggests( (c, b) -> suggest(new String[]{"up","down"},b)).
then(argument("orientation",StringArgumentType.word()).suggests( (c, b) -> suggest(new String[]{"y","x","z"},b))
.then(drawShape(c -> DrawCommand.drawPyramid(c, "circle", true))))))))).
.then(drawShape(c -> DrawCommand.drawPyramid(c, "circle", true), context)))))))).
then(literal("cylinder").
then(argument("center", BlockPosArgument.blockPos()).
then(argument("radius", IntegerArgumentType.integer(1)).
then(argument("height",IntegerArgumentType.integer(1)).
then(argument("orientation",StringArgumentType.word()).suggests( (c, b) -> suggest(new String[]{"y","x","z"},b))
.then(drawShape(c -> DrawCommand.drawPrism(c, "circle")))))))).
.then(drawShape(c -> DrawCommand.drawPrism(c, "circle"), context))))))).
then(literal("cuboid").
then(argument("center", BlockPosArgument.blockPos()).
then(argument("radius", IntegerArgumentType.integer(1)).
then(argument("height",IntegerArgumentType.integer(1)).
then(argument("orientation",StringArgumentType.word()).suggests( (c, b) -> suggest(new String[]{"y","x","z"},b))
.then(drawShape(c -> DrawCommand.drawPrism(c, "square"))))))));
.then(drawShape(c -> DrawCommand.drawPrism(c, "square"), context)))))));
dispatcher.register(command);
}

Expand All @@ -87,12 +89,12 @@ private interface ArgumentExtractor<T>
}

private static RequiredArgumentBuilder<CommandSourceStack, BlockInput>
drawShape(Command<CommandSourceStack> drawer)
drawShape(Command<CommandSourceStack> drawer, CommandBuildContext commandBuildContext)
{
return argument("block", BlockStateArgument.block()).
return argument("block", BlockStateArgument.block(commandBuildContext)).
executes(drawer)
.then(literal("replace")
.then(argument("filter", BlockPredicateArgument.blockPredicate())
.then(argument("filter", BlockPredicateArgument.blockPredicate(commandBuildContext))
.executes(drawer)));
}

Expand Down
4 changes: 3 additions & 1 deletion src/main/java/carpet/commands/InfoCommand.java
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,8 @@
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

import net.minecraft.commands.CommandBuildContext;
import net.minecraft.commands.CommandSourceStack;
import net.minecraft.commands.arguments.coordinates.BlockPosArgument;
import net.minecraft.core.BlockPos;
Expand All @@ -21,7 +23,7 @@

public class InfoCommand
{
public static void register(CommandDispatcher<CommandSourceStack> dispatcher)
public static void register(CommandDispatcher<CommandSourceStack> dispatcher, CommandBuildContext commandBuildContext)
{
LiteralArgumentBuilder<CommandSourceStack> command = literal("info").
requires((player) -> SettingsManager.canUseCommand(player, CarpetSettings.commandInfo)).
Expand Down
4 changes: 3 additions & 1 deletion src/main/java/carpet/commands/LogCommand.java
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,8 @@
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import net.minecraft.commands.CommandBuildContext;
import net.minecraft.commands.CommandSourceStack;
import net.minecraft.commands.Commands;
import net.minecraft.world.entity.player.Player;
Expand All @@ -24,7 +26,7 @@

public class LogCommand
{
public static void register(CommandDispatcher<CommandSourceStack> dispatcher)
public static void register(CommandDispatcher<CommandSourceStack> dispatcher, CommandBuildContext commandBuildContext)
{
LiteralArgumentBuilder<CommandSourceStack> literalargumentbuilder = Commands.literal("log").
requires((player) -> SettingsManager.canUseCommand(player, CarpetSettings.commandLog)).
Expand Down
3 changes: 2 additions & 1 deletion src/main/java/carpet/commands/MobAICommand.java
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
import com.mojang.brigadier.CommandDispatcher;
import com.mojang.brigadier.arguments.StringArgumentType;
import com.mojang.brigadier.builder.LiteralArgumentBuilder;
import net.minecraft.commands.CommandBuildContext;
import net.minecraft.commands.CommandSourceStack;
import net.minecraft.commands.arguments.EntitySummonArgument;
import net.minecraft.core.Registry;
Expand All @@ -16,7 +17,7 @@

public class MobAICommand
{
public static void register(CommandDispatcher<CommandSourceStack> dispatcher)
public static void register(CommandDispatcher<CommandSourceStack> dispatcher, final CommandBuildContext commandBuildContext)
{
LiteralArgumentBuilder<CommandSourceStack> command = literal("track").
requires((player) -> SettingsManager.canUseCommand(player, CarpetSettings.commandTrackAI)).
Expand Down
3 changes: 2 additions & 1 deletion src/main/java/carpet/commands/PerimeterInfoCommand.java
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
import carpet.utils.PerimeterDiagnostics;
import com.mojang.brigadier.CommandDispatcher;
import com.mojang.brigadier.builder.LiteralArgumentBuilder;
import net.minecraft.commands.CommandBuildContext;
import net.minecraft.commands.CommandSourceStack;
import net.minecraft.commands.arguments.EntitySummonArgument;
import net.minecraft.commands.arguments.coordinates.BlockPosArgument;
Expand All @@ -21,7 +22,7 @@

public class PerimeterInfoCommand
{
public static void register(CommandDispatcher<CommandSourceStack> dispatcher)
public static void register(CommandDispatcher<CommandSourceStack> dispatcher, CommandBuildContext commandBuildContext)
{
LiteralArgumentBuilder<CommandSourceStack> command = literal("perimeterinfo").
requires((player) -> SettingsManager.canUseCommand(player, CarpetSettings.commandPerimeterInfo)).
Expand Down
3 changes: 2 additions & 1 deletion src/main/java/carpet/commands/PlayerCommand.java
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
import com.mojang.brigadier.builder.LiteralArgumentBuilder;
import com.mojang.brigadier.context.CommandContext;
import com.mojang.brigadier.exceptions.CommandSyntaxException;
import net.minecraft.commands.CommandBuildContext;
import net.minecraft.commands.CommandSourceStack;
import net.minecraft.commands.arguments.DimensionArgument;
import net.minecraft.commands.arguments.coordinates.RotationArgument;
Expand Down Expand Up @@ -44,7 +45,7 @@ public class PlayerCommand
{

// TODO: allow any order like execute
public static void register(CommandDispatcher<CommandSourceStack> dispatcher)
public static void register(CommandDispatcher<CommandSourceStack> dispatcher, CommandBuildContext commandBuildContext)
{
final String[] gamemodeStrings = Arrays.stream(GameType.values())
.map(GameType::getName)
Expand Down
3 changes: 2 additions & 1 deletion src/main/java/carpet/commands/ProfileCommand.java
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
import carpet.settings.SettingsManager;
import com.mojang.brigadier.CommandDispatcher;
import com.mojang.brigadier.builder.LiteralArgumentBuilder;
import net.minecraft.commands.CommandBuildContext;
import net.minecraft.commands.CommandSourceStack;

import static carpet.commands.TickCommand.healthEntities;
Expand All @@ -15,7 +16,7 @@

public class ProfileCommand
{
public static void register(CommandDispatcher<CommandSourceStack> dispatcher)
public static void register(CommandDispatcher<CommandSourceStack> dispatcher, CommandBuildContext commandBuildContext)
{
LiteralArgumentBuilder<CommandSourceStack> literalargumentbuilder = literal("profile").
requires((player) -> SettingsManager.canUseCommand(player, CarpetSettings.commandProfile)).
Expand Down
Loading

0 comments on commit 302a7b4

Please sign in to comment.