-
Автор темы
- #1
Перед прочтением основного контента ниже, пожалуйста, обратите внимание на обновление внутри секции Майна на нашем форуме. У нас появились:
- бесплатные читы для Майнкрафт — любое использование на свой страх и риск;
- маркетплейс Майнкрафт — абсолютно любая коммерция, связанная с игрой, за исключением продажи читов (аккаунты, предоставления услуг, поиск кодеров читов и так далее);
- приватные читы для Minecraft — в этом разделе только платные хаки для игры, покупайте группу "Продавец" и выставляйте на продажу свой софт;
- обсуждения и гайды — всё тот же раздел с вопросами, но теперь модернизированный: поиск нужных хаков, пати с игроками-читерами и другая полезная информация.
Спасибо!
Управление полетом на крыльях, поиск ракет фейерверков в инвентаре и отправка соответствующих пакетов на сервер позволяют инициировать полет. После иницииации выполняется анимация движения, основанная на времени, а также устанавливается скорость перемещения игрока по осям X и Z. Для этого используются различные классы и утилиты.
Сообственно функционал прост, подойдет больше для хвх. Таймер на 1500L пускание фейверка, и вращение по кругу.
Сообственно функционал прост, подойдет больше для хвх. Таймер на 1500L пускание фейверка, и вращение по кругу.
Java:
private void handleElytraFly() {
final int fireworkSlot = InvUtil.getSlot(Items.FIREWORK_ROCKET);
if (fireworkSlot != -1 && timerUtil.hasTimeElapsed(1500L)) {
Redirector.mc.player.connection.sendPacket((IPacket)new CEntityActionPacket((Entity) Redirector.mc.player, CEntityActionPacket.Action.START_FALL_FLYING));
Redirector.mc.player.connection.sendPacket(new CHeldItemChangePacket(Redirector.mc.player.inventory.currentItem));
InvUtil.inventorySwapClick(Items.FIREWORK_ROCKET);
timerUtil.reset();
}
if (mc.player.isElytraFlying()) {
double radius = 2.0;
double speed = 0.5;
double angle = (System.currentTimeMillis() % 2000) / 1000.0 * Math.PI * 2;
double offsetX = Math.cos(angle) * radius;
double offsetZ = Math.sin(angle) * radius;
mc.player.setVelocity(offsetX * speed, 0, offsetZ * speed);
}
}
InvUtil:
public static int getSlot(Item input) {
for (ItemStack stack : mc.player.getArmorInventoryList()) {
if (stack.getItem() == input) {
return -2;
}
}
int slot = -1;
for (int i = 0; i < 36; i++) {
ItemStack s = mc.player.inventory.getStackInSlot(i);
if (s.getItem() == input) {
slot = i;
break;
}
}
if (slot < 9 && slot != -1) {
slot = slot + 36;
}
return slot;
}
Timerutil:
public class TimerUtil {
public long lastMS = System.currentTimeMillis();
public void reset() {
lastMS = System.currentTimeMillis();
}
public boolean hasTimeElapsed(long time, boolean reset) {
if (System.currentTimeMillis() - lastMS > time) {
if (reset) reset();
return true;
}
return false;
}
public long getLastMS() {
return this.lastMS;
}
public void setLastMC() {
lastMS = System.currentTimeMillis();
}
public boolean hasTimeElapsed(long time) {
return System.currentTimeMillis() - lastMS > time;
}
public long getTime() {
return System.currentTimeMillis() - lastMS;
}
public void setTime(long time) {
lastMS = time;
}
}