aboutsummaryrefslogtreecommitdiff
path: root/Minecraft.World/WeatherCommand.h
diff options
context:
space:
mode:
authorLoki Rautio <lokirautio@gmail.com>2026-03-04 03:56:03 -0600
committerLoki Rautio <lokirautio@gmail.com>2026-03-04 03:56:03 -0600
commit42aec6dac53dffa6afe072560a7e1d4986112538 (patch)
tree0836426857391df1b6a83f6368a183f83ec9b104 /Minecraft.World/WeatherCommand.h
parentc9d58eeac7c72f0b3038e084667b4d89a6249fce (diff)
parentef9b6fd500dfabd9463267b0dd9e29577eea8a2b (diff)
Merge branch 'main' into pr/win64-world-saves
# Conflicts: # Minecraft.Client/MinecraftServer.cpp # README.md
Diffstat (limited to 'Minecraft.World/WeatherCommand.h')
-rw-r--r--Minecraft.World/WeatherCommand.h73
1 files changed, 73 insertions, 0 deletions
diff --git a/Minecraft.World/WeatherCommand.h b/Minecraft.World/WeatherCommand.h
new file mode 100644
index 00000000..795b7bdf
--- /dev/null
+++ b/Minecraft.World/WeatherCommand.h
@@ -0,0 +1,73 @@
+/*
+package net.minecraft.commands.common;
+
+import java.util.*;
+
+import net.minecraft.SharedConstants;
+import net.minecraft.commands.*;
+import net.minecraft.commands.exceptions.UsageException;
+import net.minecraft.server.MinecraftServer;
+import net.minecraft.world.level.Level;
+import net.minecraft.world.level.storage.LevelData;
+
+public class WeatherCommand extends BaseCommand {
+ @Override
+ public String getName() {
+ return "weather";
+ }
+
+ @Override
+ public int getPermissionLevel() {
+ return LEVEL_GAMEMASTERS;
+ }
+
+ @Override
+ public String getUsage(CommandSender source) {
+ return "commands.weather.usage";
+ }
+
+ @Override
+ public void execute(CommandSender source, String[] args) {
+ if (args.length < 1 || args.length > 2) {
+ throw new UsageException("commands.weather.usage");
+ }
+
+ int duration = (300 + new Random().nextInt(600)) * SharedConstants.TICKS_PER_SECOND;
+ if (args.length >= 2) {
+ duration = convertArgToInt(source, args[1], 1, 1000000) * SharedConstants.TICKS_PER_SECOND;
+ }
+
+ Level level = MinecraftServer.getInstance().levels[0];
+ LevelData levelData = level.getLevelData();
+ levelData.setRainTime(duration);
+ levelData.setThunderTime(duration);
+
+ if ("clear".equalsIgnoreCase(args[0])) {
+ levelData.setRaining(false);
+ levelData.setThundering(false);
+ logAdminAction(source, "commands.weather.clear");
+ } else if ("rain".equalsIgnoreCase(args[0])) {
+ levelData.setRaining(true);
+ levelData.setThundering(false);
+ logAdminAction(source, "commands.weather.rain");
+ } else if ("thunder".equalsIgnoreCase(args[0])) {
+ levelData.setRaining(true);
+ levelData.setThundering(true);
+ logAdminAction(source, "commands.weather.thunder");
+ } else {
+ throw new UsageException("commands.weather.usage");
+ }
+ }
+
+ @Override
+ public List<String> matchArguments(CommandSender source, String[] args) {
+ if (args.length == 1) {
+ return matchArguments(args, "clear", "rain", "thunder");
+ }
+
+ return null;
+ }
+
+}
+
+*/ \ No newline at end of file