From 288f32a26b15c4d551642daabde09484e7674581 Mon Sep 17 00:00:00 2001 From: numenmca <50982527+numenmca@users.noreply.github.com> Date: Mon, 27 Apr 2026 21:19:33 +1000 Subject: [PATCH] Add Weather Changer module in Render category --- .../meteorclient/systems/modules/Modules.java | 1 + .../modules/render/WeatherChanger.java | 94 +++++++++++++++++++ 2 files changed, 95 insertions(+) create mode 100644 src/main/java/meteordevelopment/meteorclient/systems/modules/render/WeatherChanger.java diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/Modules.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/Modules.java index c657163f98..2e7aaf7500 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/Modules.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/Modules.java @@ -527,6 +527,7 @@ private void initRender() { add(new VoidESP()); add(new WallHack()); add(new WaypointsModule()); + add(new WeatherChanger()); add(new Xray()); add(new Zoom()); } diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/render/WeatherChanger.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/render/WeatherChanger.java new file mode 100644 index 0000000000..65d71dff63 --- /dev/null +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/render/WeatherChanger.java @@ -0,0 +1,94 @@ +/* + * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). + * Copyright (c) Meteor Development. + */ + +package meteordevelopment.meteorclient.systems.modules.render; + +import meteordevelopment.meteorclient.events.packets.PacketEvent; +import meteordevelopment.meteorclient.events.world.TickEvent; +import meteordevelopment.meteorclient.settings.DoubleSetting; +import meteordevelopment.meteorclient.settings.Setting; +import meteordevelopment.meteorclient.settings.SettingGroup; +import meteordevelopment.meteorclient.systems.modules.Categories; +import meteordevelopment.meteorclient.systems.modules.Module; +import meteordevelopment.orbit.EventHandler; +import net.minecraft.network.protocol.game.ClientboundGameEventPacket; + +public class WeatherChanger extends Module { + private final SettingGroup sgGeneral = settings.getDefaultGroup(); + + private final Setting rainLevel = sgGeneral.add(new DoubleSetting.Builder() + .name("rain-level") + .description("The specified rain level to be set.") + .defaultValue(0) + .sliderRange(0, 1) + .build() + ); + + private final Setting thunderLevel = sgGeneral.add(new DoubleSetting.Builder() + .name("thunder-level") + .description("The specified thunder level to be set.") + .defaultValue(0) + .sliderRange(0, 1) + .build() + ); + + private float oldThunderLevel; + private float oldRainLevel; + + public WeatherChanger() { + super(Categories.Render, "weather-changer", "Allows you to override the world's current weather."); + } + + @Override + public void onActivate() { + if (mc.level == null) { + return; + } + + oldThunderLevel = mc.level.getThunderLevel(1f); + oldRainLevel = mc.level.getRainLevel(1f); + } + + @Override + public void onDeactivate() { + if (mc.level == null) { + return; + } + + mc.level.setRainLevel(oldRainLevel); + mc.level.setThunderLevel(oldThunderLevel); + } + + @EventHandler + private void onPacketReceive(PacketEvent.Receive event) { + if (event.packet instanceof ClientboundGameEventPacket packet) { + ClientboundGameEventPacket.Type type = packet.getEvent(); + + if (type == ClientboundGameEventPacket.START_RAINING + || type == ClientboundGameEventPacket.STOP_RAINING + || type == ClientboundGameEventPacket.THUNDER_LEVEL_CHANGE + || type == ClientboundGameEventPacket.RAIN_LEVEL_CHANGE) { + + if (type == ClientboundGameEventPacket.THUNDER_LEVEL_CHANGE) { + oldThunderLevel = packet.getParam(); + } else if (type == ClientboundGameEventPacket.RAIN_LEVEL_CHANGE) { + oldRainLevel = packet.getParam(); + } + + event.cancel(); + } + } + } + + @EventHandler + private void onTick(TickEvent.Post event) { + if (mc.level == null) { + return; + } + + mc.level.setRainLevel(rainLevel.get().floatValue()); + mc.level.setThunderLevel(thunderLevel.get().floatValue()); + } +}