Code/net/minecraft/server/commands/WardenSpawnTrackerCommand.java

63 lines
3.0 KiB
Java
Raw Normal View History

2025-07-01 06:20:03 +00:00
package net.minecraft.server.commands;
import com.google.common.collect.ImmutableList;
import com.mojang.brigadier.CommandDispatcher;
import com.mojang.brigadier.arguments.IntegerArgumentType;
import com.mojang.brigadier.context.CommandContext;
import java.util.Collection;
import net.minecraft.commands.CommandSourceStack;
import net.minecraft.commands.Commands;
import net.minecraft.network.chat.Component;
import net.minecraft.world.entity.monster.warden.WardenSpawnTracker;
import net.minecraft.world.entity.player.Player;
public class WardenSpawnTrackerCommand {
public static void register(CommandDispatcher<CommandSourceStack> p_214774_) {
p_214774_.register(
Commands.literal("warden_spawn_tracker")
.requires(p_214778_ -> p_214778_.hasPermission(2))
.then(Commands.literal("clear").executes(p_214787_ -> resetTracker(p_214787_.getSource(), ImmutableList.of(p_214787_.getSource().getPlayerOrException()))))
.then(
Commands.literal("set")
.then(
Commands.argument("warning_level", IntegerArgumentType.integer(0, 4))
.executes(
p_214776_ -> setWarningLevel(
p_214776_.getSource(),
ImmutableList.of(p_214776_.getSource().getPlayerOrException()),
IntegerArgumentType.getInteger(p_214776_, "warning_level")
)
)
)
)
);
}
private static int setWarningLevel(CommandSourceStack p_214783_, Collection<? extends Player> p_214784_, int p_214785_) {
for (Player player : p_214784_) {
player.getWardenSpawnTracker().ifPresent(p_248188_ -> p_248188_.setWarningLevel(p_214785_));
}
if (p_214784_.size() == 1) {
p_214783_.sendSuccess(() -> Component.translatable("commands.warden_spawn_tracker.set.success.single", p_214784_.iterator().next().getDisplayName()), true);
} else {
p_214783_.sendSuccess(() -> Component.translatable("commands.warden_spawn_tracker.set.success.multiple", p_214784_.size()), true);
}
return p_214784_.size();
}
private static int resetTracker(CommandSourceStack p_214780_, Collection<? extends Player> p_214781_) {
for (Player player : p_214781_) {
player.getWardenSpawnTracker().ifPresent(WardenSpawnTracker::reset);
}
if (p_214781_.size() == 1) {
p_214780_.sendSuccess(() -> Component.translatable("commands.warden_spawn_tracker.clear.success.single", p_214781_.iterator().next().getDisplayName()), true);
} else {
p_214780_.sendSuccess(() -> Component.translatable("commands.warden_spawn_tracker.clear.success.multiple", p_214781_.size()), true);
}
return p_214781_.size();
}
}