为ammo命令添加选择器参数
This commit is contained in:
parent
65bb2de90c
commit
8a9f6ba3e7
1 changed files with 41 additions and 39 deletions
|
@ -5,6 +5,7 @@ import com.mojang.brigadier.arguments.IntegerArgumentType;
|
||||||
import net.mcreator.target.network.TargetModVariables;
|
import net.mcreator.target.network.TargetModVariables;
|
||||||
import net.mcreator.target.tools.GunInfo;
|
import net.mcreator.target.tools.GunInfo;
|
||||||
import net.minecraft.commands.Commands;
|
import net.minecraft.commands.Commands;
|
||||||
|
import net.minecraft.commands.arguments.EntityArgument;
|
||||||
import net.minecraft.network.chat.Component;
|
import net.minecraft.network.chat.Component;
|
||||||
import net.minecraftforge.event.RegisterCommandsEvent;
|
import net.minecraftforge.event.RegisterCommandsEvent;
|
||||||
import net.minecraftforge.eventbus.api.SubscribeEvent;
|
import net.minecraftforge.eventbus.api.SubscribeEvent;
|
||||||
|
@ -17,9 +18,8 @@ public class AmmoCommand {
|
||||||
public static void registerCommand(RegisterCommandsEvent event) {
|
public static void registerCommand(RegisterCommandsEvent event) {
|
||||||
// mojang你看看你写的是个牛魔Builder😅
|
// mojang你看看你写的是个牛魔Builder😅
|
||||||
event.getDispatcher().register(Commands.literal("ammo").requires(s -> s.hasPermission(4))
|
event.getDispatcher().register(Commands.literal("ammo").requires(s -> s.hasPermission(4))
|
||||||
.then(Commands.literal("get").then(Commands.argument("type", EnumArgument.enumArgument(GunInfo.Type.class)).executes(context -> {
|
.then(Commands.literal("get").then(Commands.argument("player", EntityArgument.player()).then(Commands.argument("type", EnumArgument.enumArgument(GunInfo.Type.class)).executes(context -> {
|
||||||
var player = context.getSource().getPlayer();
|
var player = EntityArgument.getPlayer(context, "player");
|
||||||
if (player == null) return 0;
|
|
||||||
|
|
||||||
var type = context.getArgument("type", GunInfo.Type.class);
|
var type = context.getArgument("type", GunInfo.Type.class);
|
||||||
|
|
||||||
|
@ -33,14 +33,13 @@ public class AmmoCommand {
|
||||||
).orElse(0);
|
).orElse(0);
|
||||||
context.getSource().sendSuccess(() -> Component.literal("Current " + type.name + " ammo: " + value), true);
|
context.getSource().sendSuccess(() -> Component.literal("Current " + type.name + " ammo: " + value), true);
|
||||||
return 0;
|
return 0;
|
||||||
})))
|
}))))
|
||||||
.then(Commands.literal("set").then(Commands.argument("type", EnumArgument.enumArgument(GunInfo.Type.class)).then(Commands.argument("value", IntegerArgumentType.integer(0)).executes(context -> {
|
.then(Commands.literal("set").then(Commands.argument("players", EntityArgument.players()).then(Commands.argument("type", EnumArgument.enumArgument(GunInfo.Type.class)).then(Commands.argument("value", IntegerArgumentType.integer(0)).executes(context -> {
|
||||||
var player = context.getSource().getPlayer();
|
var players = EntityArgument.getPlayers(context, "players");
|
||||||
if (player == null) return 0;
|
|
||||||
|
|
||||||
var type = context.getArgument("type", GunInfo.Type.class);
|
var type = context.getArgument("type", GunInfo.Type.class);
|
||||||
var value = IntegerArgumentType.getInteger(context, "value");
|
var value = IntegerArgumentType.getInteger(context, "value");
|
||||||
|
|
||||||
|
for (var player : players) {
|
||||||
player.getCapability(TargetModVariables.PLAYER_VARIABLES_CAPABILITY, null).ifPresent(capability -> {
|
player.getCapability(TargetModVariables.PLAYER_VARIABLES_CAPABILITY, null).ifPresent(capability -> {
|
||||||
switch (type) {
|
switch (type) {
|
||||||
case HANDGUN -> capability.handgunAmmo = value;
|
case HANDGUN -> capability.handgunAmmo = value;
|
||||||
|
@ -50,15 +49,17 @@ public class AmmoCommand {
|
||||||
}
|
}
|
||||||
capability.syncPlayerVariables(player);
|
capability.syncPlayerVariables(player);
|
||||||
});
|
});
|
||||||
context.getSource().sendSuccess(() -> Component.literal("Set " + type.name + " ammo to: " + value), true);
|
}
|
||||||
|
|
||||||
|
context.getSource().sendSuccess(() -> Component.literal("Set " + type.name + " ammo to " + value + " for " + players.size() + " player(s)"), true);
|
||||||
return 0;
|
return 0;
|
||||||
}))))
|
})))))
|
||||||
.then(Commands.literal("add").then(Commands.argument("type", EnumArgument.enumArgument(GunInfo.Type.class)).then(Commands.argument("value", IntegerArgumentType.integer(0)).executes(context -> {
|
.then(Commands.literal("add").then(Commands.argument("players", EntityArgument.players()).then(Commands.argument("type", EnumArgument.enumArgument(GunInfo.Type.class)).then(Commands.argument("value", IntegerArgumentType.integer(0)).executes(context -> {
|
||||||
var player = context.getSource().getPlayer();
|
var players = EntityArgument.getPlayers(context, "players");
|
||||||
if (player == null) return 0;
|
|
||||||
var type = context.getArgument("type", GunInfo.Type.class);
|
var type = context.getArgument("type", GunInfo.Type.class);
|
||||||
var value = IntegerArgumentType.getInteger(context, "value");
|
var value = IntegerArgumentType.getInteger(context, "value");
|
||||||
|
|
||||||
|
for (var player : players) {
|
||||||
player.getCapability(TargetModVariables.PLAYER_VARIABLES_CAPABILITY, null).ifPresent(capability -> {
|
player.getCapability(TargetModVariables.PLAYER_VARIABLES_CAPABILITY, null).ifPresent(capability -> {
|
||||||
switch (type) {
|
switch (type) {
|
||||||
case HANDGUN -> capability.handgunAmmo += value;
|
case HANDGUN -> capability.handgunAmmo += value;
|
||||||
|
@ -74,9 +75,10 @@ public class AmmoCommand {
|
||||||
|
|
||||||
capability.syncPlayerVariables(player);
|
capability.syncPlayerVariables(player);
|
||||||
});
|
});
|
||||||
context.getSource().sendSuccess(() -> Component.literal("Added " + type.name + " ammo of amount " + value), true);
|
}
|
||||||
|
|
||||||
|
context.getSource().sendSuccess(() -> Component.literal("Added " + type.name + " ammo of amount " + value + " for " + players.size() + " player(s)"), true);
|
||||||
return 0;
|
return 0;
|
||||||
}))))
|
}))))));
|
||||||
);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue