Начинающий
- Статус
- Оффлайн
- Регистрация
- 10 Окт 2021
- Сообщения
- 5
- Реакции
- 0
- Выберите загрузчик игры
- Прочие моды
Перед прочтением основного контента ниже, пожалуйста, обратите внимание на обновление внутри секции Майна на нашем форуме. У нас появились:
- бесплатные читы для Майнкрафт — любое использование на свой страх и риск;
- маркетплейс Майнкрафт — абсолютно любая коммерция, связанная с игрой, за исключением продажи читов (аккаунты, предоставления услуг, поиск кодеров читов и так далее);
- приватные читы для Minecraft — в этом разделе только платные хаки для игры, покупайте группу "Продавец" и выставляйте на продажу свой софт;
- обсуждения и гайды — всё тот же раздел с вопросами, но теперь модернизированный: поиск нужных хаков, пати с игроками-читерами и другая полезная информация.
Спасибо!
Решил залить спайдер покормить пастеров хоть я сам такой-же
Если сс не грузит то вот второй сс
Пожалуйста, авторизуйтесь для просмотра ссылки.
Осторожно Chatgpt code:
package dev.zovchik.modules.impl.movement;
import com.google.common.eventbus.Subscribe;
import dev.zovchik.events.EventMotion;
import dev.zovchik.events.EventPacket;
import dev.zovchik.events.EventUpdate;
import dev.zovchik.modules.api.Category;
import dev.zovchik.modules.api.Module;
import dev.zovchik.modules.api.ModuleRegister;
import dev.zovchik.modules.settings.impl.BooleanSetting;
import dev.zovchik.modules.settings.impl.ModeSetting;
import dev.zovchik.modules.settings.impl.SliderSetting;
import dev.zovchik.utils.math.StopWatch;
import dev.zovchik.utils.player.MouseUtil;
import dev.zovchik.utils.player.MoveUtils;
import net.minecraft.inventory.container.ClickType;
import net.minecraft.item.BlockItem;
import net.minecraft.item.ItemStack;
import net.minecraft.item.Items;
import net.minecraft.network.IPacket;
import net.minecraft.network.play.client.CEntityActionPacket;
import net.minecraft.network.play.server.SEntityMetadataPacket;
import net.minecraft.network.play.server.SPlayerPositionLookPacket;
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;
@ModuleRegister(name = "Spider", category = Category.Movement, description = "Позволяет лазить по стенам разными способами, включая размещение бамбука")
public class Spider extends Module {
public ModeSetting mode = new ModeSetting("Mode", "Grim", "Grim", "Grim 2", "Matrix", "Elytra", "Bamboo");
private final SliderSetting spiderSpeed = new SliderSetting("Скорость", 2.0f, 1.0f, 10.0f, 0.05f).setVisible(() -> mode.is("Matrix") || mode.is("Bamboo"));
private final BooleanSetting bypass = new BooleanSetting("Обход", true).setVisible(() -> mode.is("Elytra"));
StopWatch stopWatch = new StopWatch();
int oldItem = -1;
int oldItem1 = -1;
int i;
long speed;
public Spider() {
addSettings(mode, bypass, spiderSpeed);
}
[USER=1474073]@Subscribe[/USER]
private void onMotion(EventMotion motion) {
switch (mode.get()) {
case "Matrix" -> {
if (!mc.player.collidedHorizontally) {
return;
}
long speed = MathHelper.clamp(500 - (spiderSpeed.get().longValue() / 2 * 100), 0, 500);
if (stopWatch.isReached(speed)) {
motion.setOnGround(true);
mc.player.setOnGround(true);
mc.player.collidedVertically = true;
mc.player.collidedHorizontally = true;
mc.player.isAirBorne = true;
mc.player.jump();
stopWatch.reset();
}
}
case "Grim" -> {
int slot = getBambooSlot();
if (slot == -1) {
slot = getSlotInInventoryOrHotbar(true);
if (slot == -1) {
print("Бамбук или блоки не найдены!");
toggle();
return;
}
}
if (!mc.player.collidedHorizontally) {
return;
}
if (mc.player.isOnGround()) {
motion.setOnGround(true);
mc.player.setOnGround(true);
mc.player.jump();
}
if (mc.player.fallDistance > 0 && mc.player.fallDistance < 2) {
placeBlocksOrBamboo(motion, slot);
}
}
case "Grim 2" -> {
if (!mc.player.isOnGround()) {
speed = (long) MathHelper.clamp(500L - spiderSpeed.get() / 2L * 100L, 0L, 500L);
if (this.stopWatch.isReached(speed)) {
mc.gameSettings.keyBindSneak.setPressed(true);
motion.setOnGround(true);
mc.player.setOnGround(true);
mc.player.collidedVertically = true;
mc.player.collidedHorizontally = true;
mc.player.isAirBorne = true;
if (mc.player.fallDistance != 0.0F) {
mc.gameSettings.keyBindForward.setPressed(true);
mc.gameSettings.keyBindForward.setPressed(false);
}
mc.player.jump();
mc.gameSettings.keyBindSneak.setPressed(false);
this.stopWatch.reset();
}
}
}
case "Elytra" -> {
motion.setPitch(0.0F);
mc.player.rotationPitchHead = 0.0F;
}
case "Bamboo" -> {
// Проверяем, сталкивается ли игрок со стеной
if (!mc.player.collidedHorizontally) {
return;
}
// Ищем бамбук в инвентаре
int bambooSlot = getBambooSlot();
if (bambooSlot == -1) {
print("Бамбук не найден в инвентаре!");
toggle();
return;
}
// Определяем позицию игрока
BlockPos playerPos = new BlockPos(mc.player.getPosX(), mc.player.getPosY(), mc.player.getPosZ());
// Находим верхний блок бамбука в текущем стебле
BlockPos bambooPos = findTopBamboo(playerPos);
if (bambooPos == null) {
// Если бамбука нет, размещаем начальный блок под игроком
placeBamboo(motion, bambooSlot, playerPos.down());
} else {
// Проверяем, насколько игрок близко к верхнему блоку бамбука
double distanceToTop = mc.player.getPosY() - bambooPos.getY();
if (distanceToTop > 0.5 && distanceToTop < 1.5) {
// Размещаем новый бамбук над текущим верхним блоком
placeBamboo(motion, bambooSlot, bambooPos.up());
}
}
// Управляем скоростью лазания
long speed = MathHelper.clamp(300 - (spiderSpeed.get().longValue() / 2 * 100), 0, 300);
if (stopWatch.isReached(speed)) {
// Имитируем лазание по лестнице
motion.setOnGround(true);
mc.player.setOnGround(true);
mc.player.jump();
mc.player.fallDistance = 0;
stopWatch.reset();
}
}
}
}
[USER=1474073]@Subscribe[/USER]
public void onUpdate(EventUpdate e) {
if (mode.is("Elytra")) {
if (!bypass.get()) {
for (i = 0; i < 9; ++i) {
if (mc.player.inventory.getStackInSlot(i).getItem() == Items.ELYTRA && !mc.player.isOnGround() && mc.player.collidedHorizontally && mc.player.fallDistance == 0.0F) {
mc.playerController.windowClick(0, 6, i, ClickType.SWAP, mc.player);
mc.player.connection.sendPacket(new CEntityActionPacket(mc.player, CEntityActionPacket.Action.START_FALL_FLYING));
MoveUtils.setMotion(0.06);
mc.player.motion.y = 0.366;
mc.playerController.windowClick(0, 6, i, ClickType.SWAP, mc.player);
this.oldItem = i;
}
}
} else {
if (((ItemStack)mc.player.inventory.armorInventory.get(2)).getItem() != Items.ELYTRA && mc.player.collidedHorizontally) {
for(i = 0; i < 9; ++i) {
if (mc.player.inventory.getStackInSlot(i).getItem() == Items.ELYTRA) {
mc.playerController.windowClick(0, 6, i, ClickType.SWAP, mc.player);
this.oldItem1 = i;
this.stopWatch.reset();
}
}
}
if (mc.player.collidedHorizontally) {
mc.gameSettings.keyBindJump.setPressed(false);
if (this.stopWatch.isReached(180L)) {
mc.gameSettings.keyBindJump.setPressed(true);
}
}
if (((ItemStack)mc.player.inventory.armorInventory.get(2)).getItem() == Items.ELYTRA && !mc.player.collidedHorizontally && this.oldItem1 != -1) {
mc.playerController.windowClick(0, 6, this.oldItem1, ClickType.SWAP, mc.player);
this.oldItem1 = -1;
}
if (((ItemStack)mc.player.inventory.armorInventory.get(2)).getItem() == Items.ELYTRA && !mc.player.isOnGround() && mc.player.collidedHorizontally) {
if (mc.player.fallDistance != 0.0F) {
return;
}
mc.player.connection.sendPacket(new CEntityActionPacket(mc.player, CEntityActionPacket.Action.START_FALL_FLYING));
MoveUtils.setMotion(0.02);
mc.player.motion.y = 0.36;
}
}
}
}
[USER=1474073]@Subscribe[/USER]
public void onPacket(EventPacket e) {
if (mode.is("Elytra")) {
if (!bypass.get()) {
IPacket var4 = e.getPacket();
if (var4 instanceof SPlayerPositionLookPacket) {
SPlayerPositionLookPacket p = (SPlayerPositionLookPacket) var4;
mc.player.func_242277_a(new Vector3d(p.getX(), p.getY(), p.getZ()));
mc.player.setRawPosition(p.getX(), p.getY(), p.getZ());
return;
}
if (e.getPacket() instanceof SEntityMetadataPacket && ((SEntityMetadataPacket) e.getPacket()).getEntityId() == mc.player.getEntityId()) {
e.cancel();
}
} else {
if (e.getPacket() instanceof SEntityMetadataPacket && ((SEntityMetadataPacket) e.getPacket()).getEntityId() == mc.player.getEntityId()) {
e.cancel();
}
}
}
}
private void placeBlocksOrBamboo(EventMotion motion, int slot) {
int last = mc.player.inventory.currentItem;
mc.player.inventory.currentItem = slot;
motion.setPitch(80);
motion.setYaw(mc.player.getHorizontalFacing().getHorizontalAngle());
BlockRayTraceResult r = (BlockRayTraceResult) MouseUtil.rayTrace(4, motion.getYaw(), motion.getPitch(), mc.player);
mc.player.swingArm(Hand.MAIN_HAND);
mc.playerController.processRightClickBlock(mc.player, mc.world, Hand.MAIN_HAND, r);
mc.player.inventory.currentItem = last;
mc.player.fallDistance = 0;
}
private void placeBamboo(EventMotion motion, int slot, BlockPos targetPos) {
// Сохраняем текущий выбранный слот
int last = mc.player.inventory.currentItem;
mc.player.inventory.currentItem = slot;
// Вычисляем направление взгляда для точного размещения бамбука
Vector3d target = new Vector3d(targetPos.getX() + 0.5, targetPos.getY(), targetPos.getZ() + 0.5);
Vector3d playerPos = mc.player.getPositionVec();
Vector3d lookVec = target.subtract(playerPos).normalize();
float yaw = (float) Math.toDegrees(Math.atan2(lookVec.x, lookVec.z));
float pitch = (float) Math.toDegrees(-Math.asin(lookVec.y));
motion.setYaw(yaw);
motion.setPitch(pitch);
// Выполняем трассировку луча для размещения блока
BlockRayTraceResult rayTrace = (BlockRayTraceResult) MouseUtil.rayTrace(4, yaw, pitch, mc.player);
mc.player.swingArm(Hand.MAIN_HAND);
mc.playerController.processRightClickBlock(mc.player, mc.world, Hand.MAIN_HAND, rayTrace);
// Восстанавливаем исходный слот
mc.player.inventory.currentItem = last;
}
private BlockPos findTopBamboo(BlockPos startPos) {
// Начинаем с позиции игрока
BlockPos current = startPos;
// Ищем основание стебля бамбука, спускаясь вниз
while (mc.world.getBlockState(current).getBlock() == net.minecraft.block.Blocks.BAMBOO && current.getY() > 0) {
current = current.down();
}
// Возвращаемся на один блок вверх, чтобы найти нижний бамбук
current = current.up();
if (mc.world.getBlockState(current).getBlock() != net.minecraft.block.Blocks.BAMBOO) {
return null; // Бамбук не найден
}
// Ищем верхний блок бамбука, поднимаясь вверх
while (mc.world.getBlockState(current.up()).getBlock() == net.minecraft.block.Blocks.BAMBOO && current.getY() < 256) {
current = current.up();
}
return current;
}
private int getSlotInInventoryOrHotbar(boolean inHotBar) {
int firstSlot = inHotBar ? 0 : 9;
int lastSlot = inHotBar ? 9 : 36;
int finalSlot = -1;
for (int i = firstSlot; i < lastSlot; i++) {
if (mc.player.inventory.getStackInSlot(i).getItem() == Items.TORCH) {
continue;
}
if (mc.player.inventory.getStackInSlot(i).getItem() instanceof BlockItem
|| mc.player.inventory.getStackInSlot(i).getItem() == Items.WATER_BUCKET) {
finalSlot = i;
}
}
return finalSlot;
}
private int getBambooSlot() {
// Проверяем слоты в хотбаре на наличие бамбука
for (int i = 0; i < 9; i++) {
ItemStack stack = mc.player.inventory.getStackInSlot(i);
if (stack.getItem() == Items.BAMBOO) {
return i;
}
}
return -1;
}
[USER=1367676]@override[/USER]
public void onDisable() {
super.onDisable();
mc.player.fallDistance = 0;
mc.gameSettings.keyBindSneak.setPressed(false);
mc.gameSettings.keyBindJump.setPressed(false);
mc.gameSettings.keyBindForward.setPressed(false);
if (oldItem != -1) {
mc.player.inventory.currentItem = oldItem;
oldItem = -1;
}
if (oldItem1 != -1) {
mc.playerController.windowClick(0, 6, oldItem1, ClickType.SWAP, mc.player);
oldItem1 = -1;
}
}
}
Последнее редактирование: