Начинающий
- Статус
- Оффлайн
- Регистрация
- 20 Июн 2022
- Сообщения
- 120
- Реакции
- 0
- Выберите загрузчик игры
- Vanilla
- OptiFine
хз зачем хз почему
туски обещанную сабку так и не выдал
eclip:
package shk.fuck.commands.impl;
import net.minecraft.inventory.container.ClickType;
import net.minecraft.item.Items;
import net.minecraft.network.play.client.CEntityActionPacket;
import net.minecraft.network.play.client.CPlayerPacket;
import net.minecraft.util.math.BlockPos;
import net.minecraft.util.text.StringTextComponent;
import net.minecraft.util.text.TextFormatting;
import org.apache.commons.lang3.math.NumberUtils;
import shk.fuck.client.utils.ClientUtil;
import shk.fuck.commands.Command;
import shk.fuck.commands.CommandInfo;
import shk.fuck.client.utils.IMinecraft;
import net.minecraft.client.Minecraft;
import net.minecraft.block.Blocks;
@CommandInfo(name = "eclip", description = "Телепортирует вас вертикально (нужны элитры в инвентаре)")
public class EClipCommand extends Command {
private int getSlotIDFromItem(net.minecraft.item.Item item) {
if (Minecraft.getInstance().player == null) return -1;
if (Minecraft.getInstance().player.inventory.armorItemInSlot(2).getItem() == Items.ELYTRA) {
return -2;
}
for (int i = 0; i < 36; i++) {
if (Minecraft.getInstance().player.inventory.getStackInSlot(i).getItem() == Items.ELYTRA) {
if (i < 9) {
return 36 + i;
} else {
return i;
}
}
}
return -1;
}
private void teleportSafely(double deltaY) {
double startY = IMinecraft.mc.player.getPosY();
double targetY = startY + deltaY;
int direction = deltaY > 0 ? 1 : -1;
double step = direction * 8.0;
double currentY = startY;
int steps = 0;
int maxSteps = 15;
while (steps < maxSteps && Math.abs(currentY - targetY) > Math.abs(step)) {
currentY += step;
sendTeleportPacket(currentY);
steps++;
}
if (Math.abs(currentY - targetY) > 0.1) {
sendTeleportPacket(targetY);
}
IMinecraft.mc.player.setPosition(IMinecraft.mc.player.getPosX(), targetY, IMinecraft.mc.player.getPosZ());
}
private void sendTeleportPacket(double y) {
IMinecraft.mc.getConnection().sendPacket(new CPlayerPacket.PositionPacket(
IMinecraft.mc.player.getPosX(),
y,
IMinecraft.mc.player.getPosZ(),
false
));
}
public void sendMessage(String message) {
IMinecraft.mc.player.sendMessage(new StringTextComponent(message), null);
}
@Override
public void run(String[] args) throws Exception {
if (args.length < 2) {
error();
return;
}
double y = 0;
if (args[1].equalsIgnoreCase("bd")) {
y = -IMinecraft.mc.player.getPosY() - 5;
}
else if (args[1].equalsIgnoreCase("down")) {
boolean foundAir = false;
BlockPos playerPos = new BlockPos(
IMinecraft.mc.player.getPosX(),
IMinecraft.mc.player.getPosY(),
IMinecraft.mc.player.getPosZ()
);
for (int i = 1; i < 256; i++) {
BlockPos checkPos = playerPos.add(0, -i, 0);
if (IMinecraft.mc.world.getBlockState(checkPos).getBlock() == Blocks.AIR) {
y = -i;
foundAir = true;
break;
}
if (IMinecraft.mc.world.getBlockState(checkPos).getBlock() == Blocks.BEDROCK && !foundAir) {
return;
}
}
if (!foundAir) {
y = -50;
}
}
else if (args[1].equalsIgnoreCase("up")) {
boolean foundAir = false;
BlockPos playerPos = new BlockPos(
IMinecraft.mc.player.getPosX(),
IMinecraft.mc.player.getPosY(),
IMinecraft.mc.player.getPosZ()
);
for (int i = 4; i < 256; i++) {
BlockPos checkPos = playerPos.add(0, i, 0);
if (IMinecraft.mc.world.getBlockState(checkPos).getBlock() == Blocks.AIR) {
y = i;
foundAir = true;
break;
}
}
if (!foundAir) {
y = 50;
}
}
else if (NumberUtils.isCreatable(args[1])) {
y = Double.parseDouble(args[1]);
} else {
return;
}
double maxDistance = 150;
if (Math.abs(y) > maxDistance) {
y = y > 0 ? maxDistance : -maxDistance;
}
int elytra = getSlotIDFromItem(Items.ELYTRA);
if (elytra == -1) {
ClientUtil.sendMessage(TextFormatting.RED + "У вас нет элитры!");
return;
}
if (elytra != -2) {
IMinecraft.mc.playerController.windowClick(0, elytra, 1, ClickType.PICKUP, IMinecraft.mc.player);
IMinecraft.mc.playerController.windowClick(0, 6, 1, ClickType.PICKUP, IMinecraft.mc.player);
}
IMinecraft.mc.getConnection().sendPacket(new CPlayerPacket.PositionPacket(
IMinecraft.mc.player.getPosX(),
IMinecraft.mc.player.getPosY(),
IMinecraft.mc.player.getPosZ(),
false
));
IMinecraft.mc.getConnection().sendPacket(new CPlayerPacket.PositionPacket(
IMinecraft.mc.player.getPosX(),
IMinecraft.mc.player.getPosY(),
IMinecraft.mc.player.getPosZ(),
false
));
IMinecraft.mc.getConnection().sendPacket(new CEntityActionPacket(
IMinecraft.mc.player,
CEntityActionPacket.Action.START_FALL_FLYING
));
teleportSafely(y);
IMinecraft.mc.getConnection().sendPacket(new CEntityActionPacket(
IMinecraft.mc.player,
CEntityActionPacket.Action.START_FALL_FLYING
));
if (elytra != -2) {
IMinecraft.mc.playerController.windowClick(0, 6, 1, ClickType.PICKUP, IMinecraft.mc.player);
IMinecraft.mc.playerController.windowClick(0, elytra, 1, ClickType.PICKUP, IMinecraft.mc.player);
}
}
@Override
public void error() {
}
}
Последнее редактирование:
