|
1 | | -/* |
2 | | - * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). |
3 | | - * Copyright (c) Meteor Development. |
4 | | - */ |
5 | | - |
6 | 1 | package com.dark.zewo2.modules; |
7 | 2 |
|
8 | 3 | import com.dark.zewo2.Addon; |
9 | | -import com.dark.zewo2.Utils.JinxUtils; |
10 | 4 | import com.dark.zewo2.Utils.Utils; |
11 | 5 | import meteordevelopment.meteorclient.events.entity.player.PlayerMoveEvent; |
12 | 6 | import meteordevelopment.meteorclient.events.game.GameLeftEvent; |
|
20 | 14 | import net.minecraft.entity.ItemEntity; |
21 | 15 | import net.minecraft.network.packet.c2s.play.PlayerMoveC2SPacket; |
22 | 16 | import net.minecraft.util.math.BlockPos; |
| 17 | +import net.minecraft.util.math.Vec3d; |
23 | 18 |
|
24 | | -import java.util.Objects; |
| 19 | +import java.util.*; |
| 20 | +import java.util.stream.StreamSupport; |
25 | 21 |
|
26 | 22 | public class Magnet extends Module { |
27 | 23 | private final SettingGroup sgGeneral = settings.getDefaultGroup(); |
@@ -54,13 +50,17 @@ public void onMove(PlayerMoveEvent event) { |
54 | 50 |
|
55 | 51 | @EventHandler |
56 | 52 | private void onTick(TickEvent.Pre event) { |
57 | | - for (Entity entity : mc.world.getEntities()) { |
58 | | - if (entity instanceof ItemEntity){ |
59 | | - if (mc.player.distanceTo(entity) > range.get()) return; |
| 53 | + List<Entity> entities = new ArrayList<>(StreamSupport.stream(mc.world.getEntities().spliterator(), true) |
| 54 | + .filter(entity -> entity instanceof ItemEntity) |
| 55 | + .filter(entity -> entity.distanceTo(mc.player) <= range.get()) |
| 56 | + .filter(entity -> Utils.isABFree(mc.player.getPos(), entity.getPos())) |
| 57 | + .toList()); |
| 58 | + |
| 59 | + if (entities.isEmpty()) return; |
| 60 | + |
| 61 | + entities.sort(Comparator.comparingDouble(entity -> entity.distanceTo(mc.player))); |
| 62 | + Entity closest = entities.get(0); |
60 | 63 |
|
61 | | - if (!Utils.isABFree(mc.player.getPos(), entity.getPos())) return; |
62 | | - mc.player.networkHandler.sendPacket(new PlayerMoveC2SPacket.PositionAndOnGround(entity.getX(), entity.getY(), entity.getZ(), true, false)); |
63 | | - } |
64 | | - } |
| 64 | + if (closest.distanceTo(mc.player) > 1) mc.player.networkHandler.sendPacket(new PlayerMoveC2SPacket.PositionAndOnGround(closest.getX(), closest.getY(), closest.getZ(), mc.player.isOnGround(), false)); |
65 | 65 | } |
66 | 66 | } |
0 commit comments