Начинающий
- Статус
- Оффлайн
- Регистрация
- 16 Янв 2025
- Сообщения
- 954
- Реакции
- 3
- Выберите загрузчик игры
- OptiFine
пр короче накалякал spider обходит но надо подделать вы подделаете
ss -
ss -
Код:
private long lastBucketUse = 0L;
private boolean hasWallContact = false;
private final Random random = new Random();
@Override
public void toggle() {
super.toggle();
mc.gameSettings.keyBindSneak.setPressed(false);
}
@EventHandler
private void onMotion(MotionEvent e) {
checkWallContact();
handleBucketUsage();
if (!hasWallContact) {
mc.gameSettings.keyBindSneak.setPressed(false);
}
}
private void checkWallContact() {
hasWallContact = mc.player.collidedHorizontally;
}
private void handleBucketUsage() {
int bucketSlot = locateWaterBucket();
if (bucketSlot == -1) return;
if (hasWallContact) {
if (mc.player.isOnGround()) {
mc.player.jump();
}
if (mc.player.getMotion().y <= 0.05) {
performWallBoost(bucketSlot);
}
}
}
private int locateWaterBucket() {
for (int i = 0; i < 9; i++) {
ItemStack stack = mc.player.inventory.getStackInSlot(i);
if (stack != null && stack.getItem() == Items.WATER_BUCKET) {
return i;
}
}
return -1;
}
private void performWallBoost(int bucketSlot) {
mc.gameSettings.keyBindSneak.setPressed(true);
Rotation aimed = new Rotation(mc.player.rotationYaw, 75.0F);
RotationComponent.update(aimed, 180.0F, 180.0F, 1, 5);
if (System.currentTimeMillis() - lastBucketUse < getCooldownByHeight())
return;
swapAndUseBucket(bucketSlot);
lastBucketUse = System.currentTimeMillis();
}
private void swapAndUseBucket(int slot) {
int prevSlot = mc.player.inventory.currentItem;
if (slot != prevSlot) mc.player.connection.sendPacket(new CHeldItemChangePacket(slot));
mc.player.rotationPitch = -90F;
mc.player.connection.sendPacket(new CPlayerTryUseItemPacket(Hand.MAIN_HAND));
mc.player.setMotion(mc.player.getMotion().x, 0.45, mc.player.getMotion().z);
if (slot != prevSlot) mc.player.connection.sendPacket(new CHeldItemChangePacket(prevSlot));
}
private long getCooldownByHeight() {
double height = computeHeightGap();
if (height < 5) return 450L;
if (height < 20) return 550L;
return 650L;
}
private double computeHeightGap() {
if (mc.player == null || mc.world == null) return 0.0;
double startY = mc.player.getPosY();
for (double y = startY; y > 0.0; y -= 0.1) {
BlockPos pos = new BlockPos(mc.player.getPosX(), y, mc.player.getPosZ());
if (!mc.world.isAirBlock(pos)) return Math.max(startY - (y + 1), 0.0);
}
return 0.0;
}
}
[CODE]
