Начинающий
- Статус
- Оффлайн
- Регистрация
- 10 Янв 2025
- Сообщения
- 123
- Реакции
- 0
- Выберите загрузчик игры
- Прочие моды
крч спайдер как и с трезубцем как и без как и с блоками
ss -
код-
ss -
Пожалуйста, авторизуйтесь для просмотра ссылки.
код-
Код:
import dev.kodek.client.api.events.orbit.EventHandler;
import dev.kodek.client.managers.events.player.MotionEvent;
import dev.kodek.client.managers.events.player.UpdateEvent;
import dev.kodek.client.managers.module.Category;
import dev.kodek.client.managers.module.Module;
import dev.kodek.client.managers.module.ModuleInfo;
import dev.kodek.client.managers.module.settings.impl.ModeSetting;
import dev.kodek.client.managers.module.settings.impl.SliderSetting;
import dev.kodek.client.utils.other.Instance;
import dev.kodek.client.utils.player.RotationUtil;
import dev.kodek.client.utils.timer.TimerUtil;
import lombok.AccessLevel;
import lombok.Getter;
import lombok.experimental.Accessors;
import lombok.experimental.FieldDefaults;
import net.minecraft.block.Block;
import net.minecraft.block.BlockState;
import net.minecraft.block.Blocks;
import net.minecraft.entity.player.PlayerInventory;
import net.minecraft.item.BlockItem;
import net.minecraft.item.ItemStack;
import net.minecraft.item.Items;
import net.minecraft.network.play.client.CEntityActionPacket;
import net.minecraft.network.play.client.CHeldItemChangePacket;
import net.minecraft.network.play.client.CPlayerTryUseItemPacket;
import net.minecraft.util.Direction;
import net.minecraft.util.Hand;
import net.minecraft.util.math.BlockPos;
import net.minecraft.util.math.BlockRayTraceResult;
import net.minecraft.util.math.MathHelper;
import net.minecraft.util.math.vector.Vector3d;
import net.mojang.blaze3d.matrix.MatrixStack;
import java.util.Random;
import java.util.Timer;
import java.util.TimerTask;
@Getter
@Accessors(fluent = true)
@FieldDefaults(level = AccessLevel.PRIVATE)
@ModuleInfo(name = "Spider", category = Category.MOVEMENT, desc = "Лазание по стенам как паук")
public class Spider extends Module {
public static Spider getInstance() {
return Instance.get(Spider.class);
}
private final ModeSetting mode = new ModeSetting(this, "Режим", "Blocks", "Matrix", "WaterSpam", "SpookyTime");
private final SliderSetting spiderSpeed = new SliderSetting(this, "Speed", 2.0f, 1.0f, 10.0f, 0.05f)
.setVisible(() -> mode.is("Matrix"));
private final SliderSetting waterSpamDelay = new SliderSetting(this, "Задержка", 100f, 50f, 500f, 10f)
.setVisible(() -> mode.is("WaterSpam"));
private final TimerUtil timerUtil = new TimerUtil();
private final Random random = new Random();
private Timer timer = new Timer();
private boolean canUse = true;
private long lastBucketUse = 0L;
private int prevSlot = -1;
@Override
protected void onEnable() {
if (mode.is("SpookyTime") || mode.is("WaterSpam")) {
mc.gameSettings.keyBindSneak.setPressed(false);
mc.gameSettings.keyBindJump.setPressed(false);
}
timer = new Timer();
canUse = true;
}
@Override
protected void onDisable() {
if (mode.is("SpookyTime") || mode.is("WaterSpam")) {
timer.cancel();
timer = new Timer();
canUse = true;
if (mc.gameSettings != null) {
mc.gameSettings.keyBindSneak.setPressed(false);
mc.gameSettings.keyBindJump.setPressed(false);
}
}
}
@EventHandler
public void onMotion(MotionEvent event) {
if (mode.is("Matrix")) {
handleMatrixMode(event);
}
if (mode.is("SpookyTime")) {
handleSpookyTimeMode();
}
if (mode.is("WaterSpam")) {
handleWaterSpamMode();
}
}
@EventHandler
public void onUpdate(UpdateEvent event) {
if (mode.is("Blocks")) {
handleBlocksMode();
}
}
private void handleMatrixMode(MotionEvent event) {
if (!mc.player.collidedHorizontally) return;
long speed = MathHelper.clamp(500 - (spiderSpeed.getValue().longValue() / 2 * 100), 0, 500);
if (timerUtil.hasReached(speed)) {
event.setOnGround(true);
mc.player.setOnGround(true);
mc.player.collidedVertically = true;
mc.player.collidedHorizontally = true;
mc.player.isAirBorne = true;
mc.player.jump();
timerUtil.reset();
}
}
private void handleSpookyTimeMode() {
if (mc.player == null || mc.player.isInWater()) return;
if (!mc.player.collidedHorizontally) {
if (mc.gameSettings.keyBindSneak.isKeyDown()) {
mc.gameSettings.keyBindSneak.setPressed(false);
}
return;
}
int waterSlot = findWaterBucket();
if (waterSlot == -1) return;
if (mc.player.isOnGround()) {
mc.player.jump();
return;
}
if (canUse) {
useWaterBucket(waterSlot);
double boost = 0.42 + (random.nextDouble() * 0.03);
mc.player.motion.y = boost;
canUse = false;
timer.schedule(new TimerTask() {
@Override
public void run() {
canUse = true;
}
}, 450 + random.nextInt(60) - 30);
}
mc.gameSettings.keyBindSneak.setPressed(true);
}
private void handleWaterSpamMode() {
if (mc.player == null) return;
if (mc.player.isInWater()) {
double height = getHeightFromGround();
if (height >= 3.0) {
mc.player.setMotion(mc.player.getMotion().x, 0.20, mc.player.getMotion().z);
}
return;
}
if (!mc.player.collidedHorizontally) {
if (mc.gameSettings.keyBindSneak.isKeyDown()) {
mc.gameSettings.keyBindSneak.setPressed(false);
}
if (mc.gameSettings.keyBindJump.isKeyDown()) {
mc.gameSettings.keyBindJump.setPressed(false);
}
return;
}
int waterSlot = findWaterBucket();
if (waterSlot == -1) return;
mc.gameSettings.keyBindJump.setPressed(true);
mc.gameSettings.keyBindSneak.setPressed(true);
if (canUse) {
double height = getHeightFromGround();
if (height >= 3.0) {
mc.player.rotationPitch = 75.0f;
}
useWaterBucket(waterSlot);
mc.player.motion.y = 0.42;
canUse = false;
timer.schedule(new TimerTask() {
@Override
public void run() {
canUse = true;
}
}, (long) waterSpamDelay.getValue());
}
}
private void handleBlocksMode() {
int blockSlot = findBlockInHotbar();
if (blockSlot == -1) return;
Hand hand = Hand.MAIN_HAND;
ItemStack stack = mc.player.inventory.getStackInSlot(blockSlot);
if (stack.getItem() instanceof BlockItem) {
BlockPos pos = findPlacePos();
if (pos != null && canPlaceBlock(stack)) {
Vector3d hitVec = Vector3d.copyCentered(pos);
Direction direction = Direction.getFacingFromVector(
hitVec.x - mc.player.getPosX(),
0,
hitVec.z - mc.player.getPosZ()
);
float[] rotations = RotationUtil.calculateAngle(hitVec.subtract(new Vector3d(direction.toVector3f()).mul(0.5)));
if (hand == Hand.MAIN_HAND) {
mc.player.connection.sendPacket(new CHeldItemChangePacket(blockSlot));
prevSlot = mc.player.inventory.currentItem;
mc.player.inventory.currentItem = blockSlot;
}
mc.player.rotationYaw = rotations[0];
mc.player.rotationPitch = rotations[1];
if (!mc.player.isSneaking()) {
mc.player.connection.sendPacket(new CEntityActionPacket(mc.player, CEntityActionPacket.Action.PRESS_SHIFT_KEY));
}
mc.playerController.rightClickBlock(
mc.player,
mc.world,
hand,
new BlockRayTraceResult(hitVec, direction.getOpposite(), pos, false)
);
if (!mc.player.isSneaking()) {
mc.player.connection.sendPacket(new CEntityActionPacket(mc.player, CEntityActionPacket.Action.RELEASE_SHIFT_KEY));
}
if (hand == Hand.MAIN_HAND && prevSlot != -1) {
new Thread(() -> {
try {
Thread.sleep(100);
mc.player.connection.sendPacket(new CHeldItemChangePacket(prevSlot));
mc.player.inventory.currentItem = prevSlot;
} catch (InterruptedException ignored) {}
}).start();
}
}
}
}
private int findWaterBucket() {
PlayerInventory inv = mc.player.inventory;
for (int i = 0; i < 9; i++) {
ItemStack stack = inv.getStackInSlot(i);
if (stack.getItem() == Items.WATER_BUCKET) return i;
}
return -1;
}
private int findBlockInHotbar() {
PlayerInventory inv = mc.player.inventory;
for (int i = 0; i < 9; i++) {
ItemStack stack = inv.getStackInSlot(i);
if (stack.getItem() instanceof BlockItem) return i;
}
return -1;
}
private void useWaterBucket(int slot) {
int currentSlot = mc.player.inventory.currentItem;
if (slot != currentSlot) {
mc.player.connection.sendPacket(new CHeldItemChangePacket(slot));
}
mc.player.connection.sendPacket(new CPlayerTryUseItemPacket(Hand.MAIN_HAND));
if (slot != currentSlot) {
mc.player.connection.sendPacket(new CHeldItemChangePacket(currentSlot));
}
lastBucketUse = System.currentTimeMillis();
}
private double getHeightFromGround() {
if (mc.player == null || mc.world == null) return 0;
double y = mc.player.getPosY();
for (double i = y; i > 0; i -= 0.1) {
BlockPos pos = new BlockPos(mc.player.getPosX(), i, mc.player.getPosZ());
if (!mc.world.isAirBlock(pos)) {
return y - (i + 1);
}
}
return 0;
}
private boolean canPlaceBlock(ItemStack stack) {
BlockPos pos = mc.player.getPosition();
double motionY = mc.player.getMotion().y;
double playerY = mc.player.getPosY();
double targetY = pos.getY() + motionY;
BlockState below = mc.world.getBlockState(pos.down());
boolean canPlace = targetY < playerY && below.getBlock() != Blocks.AIR;
return canPlace && stack.getItem() instanceof BlockItem;
}
private BlockPos findPlacePos() {
BlockPos pos = mc.player.getPosition();
Direction[] dirs = {Direction.WEST, Direction.EAST, Direction.SOUTH, Direction.NORTH};
for (Direction dir : dirs) {
BlockPos neighbor = pos.offset(dir);
if (!mc.world.getBlockState(neighbor).isAir()) {
return neighbor;
}
}
return null;
}
}