-
Автор темы
- #1
Перед прочтением основного контента ниже, пожалуйста, обратите внимание на обновление внутри секции Майна на нашем форуме. У нас появились:
- бесплатные читы для Майнкрафт — любое использование на свой страх и риск;
- маркетплейс Майнкрафт — абсолютно любая коммерция, связанная с игрой, за исключением продажи читов (аккаунты, предоставления услуг, поиск кодеров читов и так далее);
- приватные читы для Minecraft — в этом разделе только платные хаки для игры, покупайте группу "Продавец" и выставляйте на продажу свой софт;
- обсуждения и гайды — всё тот же раздел с вопросами, но теперь модернизированный: поиск нужных хаков, пати с игроками-читерами и другая полезная информация.
Спасибо!
Когда включаю функцию то игрок идёт к ослу и садится на него, но я не могу потом спрыгнуть с осла на Shift и не могу открыть инвентарь осла!
При перезаходе в одиночный мир я появляюсь там где сел на осла в первый раз!
Сажу игрока на осла при помощи mc.player.startRiding(target, true);
При перезаходе в одиночный мир я появляюсь там где сел на осла в первый раз!
Сажу игрока на осла при помощи mc.player.startRiding(target, true);
Java:
package com.example.examplemod.Module.MOVEMENT;
import com.example.examplemod.Module.Module;
import net.minecraft.client.Minecraft;
import net.minecraft.entity.passive.EntityDonkey;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.util.EnumHand;
import net.minecraft.util.math.AxisAlignedBB;
import net.minecraft.util.math.MathHelper;
import net.minecraft.util.math.Vec3d;
import net.minecraftforge.client.event.RenderWorldLastEvent;
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
import net.minecraftforge.fml.common.gameevent.TickEvent;
import org.lwjgl.input.Keyboard;
import java.util.Comparator;
public class GoDonkey extends Module {
private EntityDonkey targetDonkey;
private boolean moveForward = false;
public GoDonkey() {
super("GoDonkey", Keyboard.KEY_NONE, Category.MOVEMENT);
}
@SubscribeEvent
public void onUpdate(RenderWorldLastEvent e) {
if (mc.player != null && mc.world != null && !mc.player.isRiding()) {
double range = 100;
EntityDonkey target = mc.world.loadedEntityList.stream()
.filter(entity -> entity instanceof EntityDonkey)
.map(entity -> (EntityDonkey) entity)
.filter(donkey -> donkey.getDistance(mc.player) <= range)
.min(Comparator.comparingDouble(donkey -> donkey.getDistance(mc.player)))
.orElse(null);
if (target != null) {
mc.player.rotationYaw = rotations(target)[0];
mc.player.rotationPitch = rotations(target)[1];
moveForward = true;
} else {
moveForward = false;
}
}
}
@SubscribeEvent
public void onLivingUpdate(TickEvent.PlayerTickEvent e) {
if (mc.player != null && mc.world != null && !mc.player.isRiding()) {
if (e.phase == TickEvent.Phase.END && e.side.isClient() && moveForward) {
EntityDonkey target = findNearestDonkey();
if (target != null) {
Vec3d playerPos = e.player.getPositionVector();
Vec3d donkeyPos = target.getPositionVector();
Vec3d direction = donkeyPos.subtract(playerPos).normalize();
e.player.motionX = direction.x * 0.3;
e.player.motionZ = direction.z * 0.3;
// Проверяем близость игрока к ослу для прекращения установки взгляда и садиться
if (playerPos.distanceTo(donkeyPos) <= 2.0) {
mc.player.rotationYaw = rotations(target)[0];
mc.player.rotationPitch = rotations(target)[1];
mc.player.startRiding(target, true);
moveForward = false;
}
if (mc.gameSettings.keyBindInventory.isKeyDown() && mc.player.isRiding() && mc.player.getRidingEntity() instanceof EntityDonkey) {
EntityDonkey donkey = (EntityDonkey) mc.player.getRidingEntity();
mc.playerController.interactWithEntity(mc.player, donkey, EnumHand.MAIN_HAND);
}
}
}
}
}
public float[] rotations(EntityDonkey entity) {
double x = entity.posX - mc.player.posX;
double y = entity.posY - (mc.player.posY + mc.player.getEyeHeight()) + 1;
double z = entity.posZ - mc.player.posZ;
double u = MathHelper.sqrt(x * x + z * z);
float u2 = (float) (MathHelper.atan2(z, x) * (180D / Math.PI) - 90.0F);
float u3 = (float) (-MathHelper.atan2(y, u) * (180D / Math.PI));
return new float[]{u2, u3};
}
private EntityDonkey findNearestDonkey() {
double range = 100;
return mc.world.loadedEntityList.stream()
.filter(entity -> entity instanceof EntityDonkey)
.map(entity -> (EntityDonkey) entity)
.filter(donkey -> donkey.getDistance(mc.player) <= range)
.min(Comparator.comparingDouble(donkey -> donkey.getDistance(mc.player)))
.orElse(null);
}
}