diff --git a/src/main/java/com/genyo/addon/GenyoAddon.java b/src/main/java/com/genyo/addon/GenyoAddon.java index a25b875..2ab6fe4 100644 --- a/src/main/java/com/genyo/addon/GenyoAddon.java +++ b/src/main/java/com/genyo/addon/GenyoAddon.java @@ -1,31 +1,35 @@ package com.genyo.addon; import com.genyo.addon.hud.PvPNeccessaryHud; +import com.genyo.addon.modules.GenyoAutoEZ; import com.mojang.logging.LogUtils; import meteordevelopment.meteorclient.addons.GithubRepo; import meteordevelopment.meteorclient.addons.MeteorAddon; import meteordevelopment.meteorclient.systems.hud.Hud; import meteordevelopment.meteorclient.systems.hud.HudGroup; import meteordevelopment.meteorclient.systems.modules.Category; +import meteordevelopment.meteorclient.systems.modules.Module; import meteordevelopment.meteorclient.systems.modules.Modules; import org.slf4j.Logger; public class GenyoAddon extends MeteorAddon { public static final Logger LOG = LogUtils.getLogger(); - public static final Category CATEGORY = new Category("Example"); + public static final Category GENYO = new Category("Genyo"); public static final HudGroup HUD_GROUP = new HudGroup("Genyo"); @Override public void onInitialize() { LOG.info("Genyo fasz indul genyo"); + Modules.get().add(new GenyoAutoEZ()); + // HUD Hud.get().register(PvPNeccessaryHud.INFO); } @Override public void onRegisterCategories() { - Modules.registerCategory(CATEGORY); + Modules.registerCategory(GENYO); } @Override diff --git a/src/main/java/com/genyo/addon/modules/GenyoAutoEZ.java b/src/main/java/com/genyo/addon/modules/GenyoAutoEZ.java new file mode 100644 index 0000000..a0f3d73 --- /dev/null +++ b/src/main/java/com/genyo/addon/modules/GenyoAutoEZ.java @@ -0,0 +1,178 @@ +package com.genyo.addon.modules; + +import com.genyo.addon.GenyoAddon; +import meteordevelopment.meteorclient.events.packets.PacketEvent; +import meteordevelopment.meteorclient.events.world.TickEvent; +import meteordevelopment.meteorclient.settings.*; +import meteordevelopment.meteorclient.systems.friends.Friends; +import meteordevelopment.meteorclient.systems.modules.Module; +import meteordevelopment.meteorclient.utils.player.ChatUtils; +import meteordevelopment.orbit.EventHandler; +import meteordevelopment.orbit.EventPriority; +import net.minecraft.client.network.AbstractClientPlayerEntity; +import net.minecraft.client.network.PlayerListEntry; +import net.minecraft.entity.Entity; +import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.network.packet.s2c.play.EntityStatusS2CPacket; + +import java.util.*; + +public class GenyoAutoEZ extends Module { + + public GenyoAutoEZ() { + super(GenyoAddon.GENYO, "genyo-auto-ez", "igen igen igen, dikta mamo tyibori."); + } + + private final SettingGroup sgGeneral = settings.getDefaultGroup(); + + //--------------------General--------------------// + private final Setting range = sgGeneral.add(new DoubleSetting.Builder() + .name("Enemy Range") + .description("Only send message if enemy died inside this range.") + .defaultValue(25) + .min(0) + .sliderRange(0, 50) + .build() + ); + private final Setting tickDelay = sgGeneral.add(new IntSetting.Builder() + .name("Delay") + .description("How many ticks to wait between sending messages.") + .defaultValue(50) + .min(0) + .sliderRange(0, 100) + .build() + ); + + private final Setting pop = sgGeneral.add(new BoolSetting.Builder() + .name("Pop") + .description("Should we send a message when enemy pops a totem") + .defaultValue(true) + .build() + ); + + private final Setting trackPlayers = sgGeneral.add(new BoolSetting.Builder() + .name("Track Players") + .description("követi, hogy kit öltél meg ewkgnwekjghhewjkfhew") + .defaultValue(true) + .build() + ); + + private final Setting> popMessages = sgGeneral.add(new StringListSetting.Builder() + .name("Pop Messages") + .description("Messages to send when popping an enemy") + .defaultValue(List.of("ez pop ", "pop ", "i love kiwi pop ")) + .build() + ); + + private final Random r = new Random(); + private int lastPop; + private final List messageQueue = new LinkedList<>(); + private HashMap taggedPlayers = new HashMap(); + private int timer = 0; + + + private AbstractClientPlayerEntity target; + + private String renderName = null; + private float renderHealth; + private float renderPing; + + private final Map tog = new HashMap<>(); + + @Override + public void onActivate() { + super.onActivate(); + taggedPlayers.clear(); + } + + @EventHandler(priority = EventPriority.HIGHEST) + private void onTick(TickEvent.Pre event) { + timer++; + if (mc.player != null && mc.world != null) { + if (timer >= tickDelay.get() && !messageQueue.isEmpty()) { + Message msg = messageQueue.get(0); + ChatUtils.sendPlayerMsg(msg.message); + timer = 0; + + if (msg.kill) messageQueue.clear(); + else messageQueue.remove(0); + } + } + } + + private void updateTarget() { + target = null; + if (mc.world == null) {return;} + + AbstractClientPlayerEntity closest = null; + double distance = Double.MAX_VALUE; + + for (AbstractClientPlayerEntity player : mc.world.getPlayers()) { + if (player == mc.player) {continue;} + if (Friends.get().isFriend(player)) {continue;} + + double d = mc.player.distanceTo(player); + + if (d < distance) { + closest = player; + distance = d; + } + } + + target = closest; + + if (target != null) { + renderName = target.getName().getString(); + renderHealth = target.getHealth() + target.getAbsorptionAmount(); + + PlayerListEntry playerListEntry = mc.getNetworkHandler().getPlayerListEntry(target.getUuid()); + renderPing = playerListEntry == null ? -1 : playerListEntry.getLatency(); + } + } + + @EventHandler + private void onReceive(PacketEvent.Receive event) { + if (event.packet instanceof EntityStatusS2CPacket packet) { + // Pop + if (packet.getStatus() == 35) { + Entity entity = packet.getEntity(mc.world); + if (pop.get() && mc.player != null && mc.world != null && entity instanceof PlayerEntity playerEntity) { + if (entity != mc.player && !Friends.get().isFriend((PlayerEntity) entity) && + mc.player.getPos().distanceTo(entity.getPos()) <= range.get()) { + + if (trackPlayers.get() && taggedPlayers.containsKey(playerEntity)) { + int count = taggedPlayers.get(entity) + 1; + + taggedPlayers.replace(playerEntity, count); + sendPopMessage(entity.getName().getString(), count); + } else { + sendPopMessage(entity.getName().getString(), 0); + taggedPlayers.put(playerEntity, 1); + } + } + } + } + } + } + + private void sendPopMessage(String name, int count) { + if (!popMessages.get().isEmpty()) { + int num = r.nextInt(0, popMessages.get().size() - 1); + if (num == lastPop) { + num = num < popMessages.get().size() - 1 ? num + 1 : 0; + } + lastPop = num; + String messageString = popMessages.get().get(num).replace("", name); + + if (count > 0) { + messageString += " +" + count; + } + + Message message = new Message(messageString, false); + messageQueue.add(message); + } + } + + private record Message(String message, boolean kill) { + } +}