68 lines
3.4 KiB
Java
68 lines
3.4 KiB
Java
package net.minecraft.server.commands;
|
|
|
|
import com.mojang.brigadier.CommandDispatcher;
|
|
import com.mojang.brigadier.arguments.IntegerArgumentType;
|
|
import com.mojang.brigadier.context.CommandContext;
|
|
import net.minecraft.commands.CommandSourceStack;
|
|
import net.minecraft.commands.Commands;
|
|
import net.minecraft.commands.arguments.TimeArgument;
|
|
import net.minecraft.network.chat.Component;
|
|
import net.minecraft.server.level.ServerLevel;
|
|
import net.minecraft.util.valueproviders.IntProvider;
|
|
|
|
public class WeatherCommand {
|
|
private static final int DEFAULT_TIME = -1;
|
|
|
|
public static void register(CommandDispatcher<CommandSourceStack> p_139167_) {
|
|
p_139167_.register(
|
|
Commands.literal("weather")
|
|
.requires(p_139171_ -> p_139171_.hasPermission(2))
|
|
.then(
|
|
Commands.literal("clear")
|
|
.executes(p_264806_ -> setClear(p_264806_.getSource(), -1))
|
|
.then(
|
|
Commands.argument("duration", TimeArgument.time(1))
|
|
.executes(p_264807_ -> setClear(p_264807_.getSource(), IntegerArgumentType.getInteger(p_264807_, "duration")))
|
|
)
|
|
)
|
|
.then(
|
|
Commands.literal("rain")
|
|
.executes(p_264805_ -> setRain(p_264805_.getSource(), -1))
|
|
.then(
|
|
Commands.argument("duration", TimeArgument.time(1))
|
|
.executes(p_264809_ -> setRain(p_264809_.getSource(), IntegerArgumentType.getInteger(p_264809_, "duration")))
|
|
)
|
|
)
|
|
.then(
|
|
Commands.literal("thunder")
|
|
.executes(p_264808_ -> setThunder(p_264808_.getSource(), -1))
|
|
.then(
|
|
Commands.argument("duration", TimeArgument.time(1))
|
|
.executes(p_264804_ -> setThunder(p_264804_.getSource(), IntegerArgumentType.getInteger(p_264804_, "duration")))
|
|
)
|
|
)
|
|
);
|
|
}
|
|
|
|
private static int getDuration(CommandSourceStack p_265382_, int p_265171_, IntProvider p_265122_) {
|
|
return p_265171_ == -1 ? p_265122_.sample(p_265382_.getServer().overworld().getRandom()) : p_265171_;
|
|
}
|
|
|
|
private static int setClear(CommandSourceStack p_139173_, int p_139174_) {
|
|
p_139173_.getServer().overworld().setWeatherParameters(getDuration(p_139173_, p_139174_, ServerLevel.RAIN_DELAY), 0, false, false);
|
|
p_139173_.sendSuccess(() -> Component.translatable("commands.weather.set.clear"), true);
|
|
return p_139174_;
|
|
}
|
|
|
|
private static int setRain(CommandSourceStack p_139178_, int p_139179_) {
|
|
p_139178_.getServer().overworld().setWeatherParameters(0, getDuration(p_139178_, p_139179_, ServerLevel.RAIN_DURATION), true, false);
|
|
p_139178_.sendSuccess(() -> Component.translatable("commands.weather.set.rain"), true);
|
|
return p_139179_;
|
|
}
|
|
|
|
private static int setThunder(CommandSourceStack p_139183_, int p_139184_) {
|
|
p_139183_.getServer().overworld().setWeatherParameters(0, getDuration(p_139183_, p_139184_, ServerLevel.THUNDER_DURATION), true, true);
|
|
p_139183_.sendSuccess(() -> Component.translatable("commands.weather.set.thunder"), true);
|
|
return p_139184_;
|
|
}
|
|
} |