This commit is contained in:
skippyall
2025-06-11 11:28:43 +02:00
parent 66cbad38cb
commit e42e3adf84
31 changed files with 377 additions and 110 deletions
@@ -15,33 +15,41 @@ import static net.minecraft.server.command.CommandManager.literal;
public class SpawnSubcommand {
public static final LiteralArgumentBuilder<ServerCommandSource> SPAWN = literal("spawn")
.requires(source -> source.hasPermissionLevel(2))
.then(argument("minion", StringArgumentType.word())
.suggests(MinionArgument.SUGGESTION_PROVIDER)
.then(argument("pos", Vec3ArgumentType.vec3()))
.executes(context ->
spawnCommand(
context.getSource(),
StringArgumentType.getString(context, "minion"),
Vec3ArgumentType.getPosArgument(context, "pos"),
false
)
)
.then(argument("force", BoolArgumentType.bool())
.then(argument("pos", Vec3ArgumentType.vec3())
.executes(context ->
spawnCommand(
context.getSource(),
StringArgumentType.getString(context, "minion"),
Vec3ArgumentType.getPosArgument(context, "pos"),
BoolArgumentType.getBool(context, "force")
false
)
)
.then(argument("force", BoolArgumentType.bool())
.executes(context ->
spawnCommand(
context.getSource(),
StringArgumentType.getString(context, "minion"),
Vec3ArgumentType.getPosArgument(context, "pos"),
BoolArgumentType.getBool(context, "force")
)
)
)
)
.executes(context ->
spawnCommand(
context.getSource(),
StringArgumentType.getString(context, "minion"),
null,
false
))
);
public static int spawnCommand(ServerCommandSource source, String minion, PosArgument pos, boolean force) throws CommandSyntaxException {
MinionData data = MinionArgument.parse(minion);
MinionFakePlayer.spawnMinion(data, source.getWorld(), pos.getPos(source), pos.getRotation(source), force);
MinionFakePlayer.spawnMinion(data, source.getWorld(), pos != null ? pos.getPos(source) : null, pos != null ? pos.getRotation(source) : null, force);
return 0;
}
}