Подпишитесь на наш Telegram-канал, чтобы всегда быть в курсе важных обновлений! Перейти

Часть функционала OpenWalls EXP 3.1

Начинающий
Начинающий
Статус
Оффлайн
Регистрация
17 Апр 2025
Сообщения
50
Реакции
0
Выберите загрузчик игры
  1. Прочие моды
короче, я под фиксил свой код, и сделал опенваллс как у дельты
чуть гпт код, и работает только на сундуки, кому нужно там изи сделать на другие
залуп:
Expand Collapse Copy
public class OpenWalls extends Function {

    private boolean wasRightClickPressed = false;

    public OpenWalls() {

    }

    @Subscribe
    private void onMotion(EventMotion eventMotion) {
        if (mc.player == null || mc.world == null) return;

        
        boolean isRightClickPressed = GLFW.glfwGetMouseButton(mc.getMainWindow().getHandle(), GLFW.GLFW_MOUSE_BUTTON_RIGHT) == GLFW.GLFW_PRESS;

      
        if (isRightClickPressed && !wasRightClickPressed) {
            handleRightClick();
        }

        wasRightClickPressed = isRightClickPressed;
    }

    private void handleRightClick() {
  
        BlockPos targetChest = findChestInLookDirection();

        if (targetChest != null) {
        
            BlockRayTraceResult ray = new BlockRayTraceResult(
                    mc.player.getLookVec(),
                    mc.player.getHorizontalFacing(),
                    targetChest,
                    false
            );

          
            mc.playerController.processRightClickBlock(mc.player, mc.world, Hand.MAIN_HAND, ray);
        }
    }

    private BlockPos findChestInLookDirection() {
      
        double playerX = mc.player.getPosX();
        double playerY = mc.player.getPosY() + mc.player.getEyeHeight();
        double playerZ = mc.player.getPosZ();

      
        float yaw = mc.player.rotationYaw;
        float pitch = mc.player.rotationPitch;

    
        double dirX = -Math.sin(Math.toRadians(yaw)) * Math.cos(Math.toRadians(pitch));
        double dirY = -Math.sin(Math.toRadians(pitch));
        double dirZ = Math.cos(Math.toRadians(yaw)) * Math.cos(Math.toRadians(pitch));

      
        for (double distance = 1.0; distance <= 10.0; distance += 0.5) {
            int blockX = (int) Math.floor(playerX + dirX * distance);
            int blockY = (int) Math.floor(playerY + dirY * distance);
            int blockZ = (int) Math.floor(playerZ + dirZ * distance);

            BlockPos pos = new BlockPos(blockX, blockY, blockZ);

            if (mc.world.getBlockState(pos).getBlock() == Blocks.CHEST) {
                return pos;
            }
        }

      
        return findNearestChest();
    }

    private BlockPos findNearestChest() {
        BlockPos playerPos = mc.player.getPosition();
        BlockPos nearestChest = null;
        double nearestDistance = Double.MAX_VALUE;

      
        for (int x = -5; x <= 5; x++) {
            for (int y = -2; y <= 2; y++) {
                for (int z = -5; z <= 5; z++) {
                    BlockPos pos = playerPos.add(x, y, z);
                    if (mc.world.getBlockState(pos).getBlock() == Blocks.CHEST) {
                        double distance = playerPos.distanceSq(pos);
                        if (distance < nearestDistance) {
                            nearestDistance = distance;
                            nearestChest = pos;
                        }
                    }
                }
            }
        }

        return nearestChest;
    }
}


Пожалуйста, авторизуйтесь для просмотра ссылки.
(no ad)
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
написать изи на 6 строк
 
Назад
Сверху Снизу