Follow along with the video below to see how to install our site as a web app on your home screen.
Примечание: This feature may not be available in some browsers.
private static final float ITEM_POS_X = 0.56F;
private static final float ITEM_POS_Y = -0.52F;
private static final float ITEM_POS_Z = -0.72F;
public Vector3d getHand() {
PlayerEntity player = mc.player;
if (player != null) {
// Позиция глаз
Vector3d eyePos = player.getEyePosition(1.0F);
// Пример смещения
Vector3d handOffset = new Vector3d(0.0, -0.5, -0.5);
// Позиция руки
Vector3d handPos = eyePos.add(handOffset);
return handPos;
}
return null;
}
А каким образом получить ModelPart игрока?Из модели берёшь ModelPart выбранной руки(Внутри есть позиция)
оффсет(вроде этот, взят из ItemInHandRenderer(лучше еще там посмореть))
Java:private static final float ITEM_POS_X = 0.56F; private static final float ITEM_POS_Y = -0.52F; private static final float ITEM_POS_Z = -0.72F;
Чаще всего ModelPart приватны поэтому либо accesstransformers/@Accessor либо вариант выше от YeanLondi.А каким образом получить ModelPart игрока?
Попробовал поискать и нашел, но не знаю как получить playerModel<>, где как раз и определены эти ModelpartА каким образом получить ModelPart игрока?
Попробовал поискать и нашел, но не знаю как получить playerModel<>, где как раз и определены эти Modelpart
Minecraft.geInstance().getEntityRenderDistatcher().getRenderer(//Сущность)
Написал код, но ничего не получается, pos принимает только одну координату, вообще где-то случайно в миреПопробовал поискать и нашел, но не знаю как получить playerModel<>, где как раз и определены эти Modelpart
AbstractClientPlayer player = Minecraft.getInstance().player;
PlayerRenderer renderer =(PlayerRenderer) Minecraft.getInstance().getEntityRenderDispatcher().getRenderer(player);
PlayerModel<AbstractClientPlayer> model = renderer.getModel();
Vec3 pos = new Vec3(model.leftArm.x, model.leftArm.y, model.leftArm.z);
Написал код, но ничего не получается, pos принимает только одну координату, вообще где-то случайно в мире
public Vector3d getPlayerHandPosition() {
AbstractClientPlayer player = Minecraft.getInstance().player;
if (player == null) {
return null;
}
PlayerRenderer renderer = (PlayerRenderer) Minecraft.getInstance().getEntityRenderDispatcher().getRenderer(player);
PlayerModel<AbstractClientPlayer> model = renderer.getModel();
Vector3d handPosition = new Vector3d(model.leftArm.x, model.leftArm.y, model.leftArm.z);
Vector3d playerPosition = new Vector3d(player.getX(), player.getY(), player.getZ());
Vector3d finalPosition = playerPosition.add(handPosition);
return finalPosition;
}
YeanLondi, написал ваш код, но ситуация не улучшилась. Если вывести координаты leftHand, то они равны 5.0f по x, 2.5f по y и 0.0f по z. Получается что вектор перемещается за игроком, но он не в позиции руки, и еще он не вращается вместе с игроком.Написал код, но ничего не получается, pos принимает только одну координату, вообще где-то случайно в мире
Java:AbstractClientPlayer player = Minecraft.getInstance().player; PlayerRenderer renderer =(PlayerRenderer) Minecraft.getInstance().getEntityRenderDispatcher().getRenderer(player); PlayerModel<AbstractClientPlayer> model = renderer.getModel(); Vec3 pos = new Vec3(model.leftArm.x, model.leftArm.y, model.leftArm.z);
Мне нужно заспавнить партиклы в месте, где игрок держит предмет, и необходимо чтобы позиция партиклов всегда находилась в позиции руки, и не менялась(следовала за движениями и поворотами игрока)YeanLondi, написал ваш код, но ситуация не улучшилась. Если вывести координаты leftHand, то они равны 5.0f по x, 2.5f по y и 0.0f по z. Получается что вектор перемещается за игроком, но он не в позиции руки, и еще он не вращается вместе с игроком.
private static final Minecraft mc = Minecraft.getInstance();
@SubscribeEvent
public static void onRenderHand(RenderHandEvent event) {
EntityPlayer player = mc.player;
Vec3d handPosition = getHandPosition(player);
spawnParticles(handPosition);
}
private static Vec3d getHandPosition(EntityPlayer player) {
GlStateManager.pushMatrix();
GlStateManager.translate(0.5F, 0.5F, 0.5F);
Vec3d playerPos = player.getPositionVector();
float yaw = player.rotationYaw * ((float) Math.PI / 180F);
float pitch = player.rotationPitch * ((float) Math.PI / 180F);
double xOffset = Math.sin(yaw) * Math.cos(pitch);
double yOffset = -Math.sin(pitch);
double zOffset = -Math.cos(yaw) * Math.cos(pitch);
Vec3d handPosition = playerPos.add(xOffset, yOffset, zOffset);
GlStateManager.popMatrix();
return handPosition;
}
private static void spawnParticles(Vec3d position) {
Particle particle = new Particle(/* ТТТТТТТТ */);
mc.world.spawnEntity(particle);
}
Caused by: java.lang.IllegalStateException: Cannot get config value before config is loaded.
А причем тут конфиг?Cannot get config value before config is loaded