diff --git a/src/main/java/dev/cigarette/config/Config.java b/src/main/java/dev/cigarette/config/Config.java index 7af5c2ef..d97ffd88 100644 --- a/src/main/java/dev/cigarette/config/Config.java +++ b/src/main/java/dev/cigarette/config/Config.java @@ -14,6 +14,7 @@ import dev.cigarette.module.murdermystery.GoldESP; import dev.cigarette.module.murdermystery.PlayerESP; import dev.cigarette.module.render.ProjectileESP; +import dev.cigarette.module.skyblock.RedGifter; import dev.cigarette.module.ui.*; import dev.cigarette.module.zombies.Aimbot; import dev.cigarette.module.zombies.PowerupESP; @@ -74,6 +75,7 @@ public static Config construct() { cfg.putModules("Render", dev.cigarette.module.render.PlayerESP.INSTANCE, ProjectileESP.INSTANCE); cfg.putModules("UI", GUI.INSTANCE, ModuleList.INSTANCE, Notifications.INSTANCE, TargetHUD.INSTANCE, Watermark.INSTANCE); cfg.putModules("Zombies", Aimbot.INSTANCE, PowerupESP.INSTANCE, ReviveAura.INSTANCE, ZombieESP.INSTANCE); + cfg.putModules("Skyblock", RedGifter.INSTANCE); if (Cigarette.IN_DEV_ENVIRONMENT) { cfg.putCategory("Agents", DevWidget.CATEGORY_INSTANCE); } diff --git a/src/main/java/dev/cigarette/module/skyblock/RedGifter.java b/src/main/java/dev/cigarette/module/skyblock/RedGifter.java new file mode 100644 index 00000000..48f45ad4 --- /dev/null +++ b/src/main/java/dev/cigarette/module/skyblock/RedGifter.java @@ -0,0 +1,63 @@ +package dev.cigarette.module.skyblock; + +import dev.cigarette.GameDetector; +import dev.cigarette.gui.widget.ToggleWidget; +import dev.cigarette.lib.PlayerEntityL; +import dev.cigarette.lib.TextL; +import dev.cigarette.module.TickModule; +import net.minecraft.client.MinecraftClient; +import net.minecraft.client.network.ClientPlayerEntity; +import net.minecraft.client.world.ClientWorld; +import net.minecraft.entity.Entity; +import net.minecraft.entity.decoration.ArmorStandEntity; +import net.minecraft.text.Text; +import net.minecraft.util.Hand; +import org.jetbrains.annotations.NotNull; + +public class RedGifter extends TickModule { + public static final RedGifter INSTANCE = new RedGifter("skyblock.redgifter", "Auto Red Gifter", "Automatically gives and opens red gifts."); + + private final ToggleWidget gifter = new ToggleWidget("Run as Gifter", "Automatically gives red gifts to nearby players.").withDefaultState(false); + private final ToggleWidget opener = new ToggleWidget("Run as Opener", "Automatically opens red gifts you receive.").withDefaultState(true); + + private RedGifter(String id, String name, String tooltip) { + super(ToggleWidget::module, id, name, tooltip); + this.setChildren(gifter, opener); + gifter.registerConfigKey(id + ".asgifter"); + opener.registerConfigKey(id + ".asopener"); + gifter.registerModuleCallback((Boolean state) -> { + if (opener.getRawState() == state) { + opener.setRawState(!state); + } + }); + opener.registerModuleCallback((Boolean state) -> { + if (gifter.getRawState() == state) { + gifter.setRawState(!state); + } + }); + } + + @Override + protected void onEnabledTick(@NotNull MinecraftClient client, @NotNull ClientWorld world, @NotNull ClientPlayerEntity player) { + if (opener.getRawState()) { + for (Entity entity : world.getOtherEntities(player, player.getBoundingBox().expand(4))) { + if (!(entity instanceof ArmorStandEntity armorStand)) continue; + + Text customName = armorStand.getCustomName(); + if (customName == null) continue; + + String name = TextL.toColorCodedString(customName); + if (!name.equals("§r§e§lCLICK TO OPEN")) continue; + + PlayerEntityL.setRotationVector(player, armorStand.getPos().add(0, 1.5, 0).subtract(player.getEyePos())); + if (client.interactionManager != null) client.interactionManager.interactEntity(player, armorStand, Hand.MAIN_HAND); + } + + } + } + + @Override + public boolean inValidGame() { + return GameDetector.rootGame == GameDetector.ParentGame.SKYBLOCK; + } +}