Перейти к содержанию

Помощь с написанием кода для kubejs.


Cakeov

Рекомендуемые сообщения

В теме 1 сообщение

Я хотел сделать сборку для игры со своим другом, основной её механникой должна быть технологическая гонка, и каждые 50 минут, должен происходить рейд, привязанный к игроку, рейд должен быть считатся проигранным если уничтожены все блоки одного типа(в моём случае это механизмы из create), и не требовать эффекта bad omen, сначала я хотел попробовать сделать это через epic siege mod, но там это сделать нельзя, зато я сделал так чтобы мобы атаковали эти самые блоки. Потом я попробовал делать это через Kubejs, но так, как я незнаю языка, то просил deepseek мне писать коды, они нормально запускаются, kubejs пишет что ошибок нету, в логах появится сообщения от kubejs, с содержанием "Test", это для проверки того, что он работает. Но за пределами логов, ничего не происходит, сообщения в чате не появляются, мобы не спавняться. Может кто-то знает что делать чтобы оно работало? Ну или если по наглеть то написать мне код на работу такого рейда и мобов которые идут напрямую к блокам(можно указать любой, я потом поправлю список). Но как я понимаю второе это из области фантастики. 

Версия kubejs 6.5

 

Наработки от deepseek (есть несостыковки с 6.5 Из-за изменений синтаксиса, и использованием старых библиотек deepseek'ом) 

console.log('RAID SYSTEM: Script loaded');

 

// Правильный синтаксис для KubeJS 6.5

ServerEvents.tick(event => {

    // Проверяем каждые 15 секунд (300 тиков = 15 сек)

    if (event.server.ticks % 300 !== 0) return;

    

    // Для каждого игрока

    event.server.players.forEach(player => {

        try {

            // Спавним разбойника в 5 блоках от игрока

            const pillager = player.level.createEntity('minecraft:pillager');

            pillager.setPos(

                player.x + (Math.random() * 10 - 5),

                player.y,

                player.z + (Math.random() * 10 - 5)

            );

            pillager.patrolLeader = true;

            player.level.addFreshEntity(pillager);

            

            // Сообщение игроку

            player.tell('Raid started!');

            

            // Логирование

            console.log('Spawned pillager for ' + player.name.string);

        } catch (e) {

            console.error('Raid error: ' + e);

        }

    });

});

 

 

 

// 1. Импорт необходимых методов

const { onServerTick } = require('kubejs/server');

 

// 2. Настройки рейдов

const RAID_INTERVAL = 15 * 20; // 15 секунд в тиках

const LOSE_BLOCKS = [

  'create:shaft',

  'create:cogwheel',

  'create:large_cogwheel'

];

 

// 3. Новый синтаксис обработки тиков

onServerTick(event => {

  if (event.server.ticks % RAID_INTERVAL !== 0) return;

  

  const players = event.server.players;

  if (players.length === 0) return;

 

  players.forEach(player => {

    const pos = player.blockPosition();

    // Спавн капитана рейда

    player.level.spawnEntity('minecraft:pillager', pos.x + 5, pos.y, pos.z + 5);

    player.tell('§cРейд начался!');

    

    // Проверка условий поражения

    const area = player.level.getBlockScan(pos, 30);

    const blocksDestroyed = LOSE_BLOCKS.every(blockId => 

      !area.find(b => b.id === blockId)

    );

    

    if (blocksDestroyed) {

      player.tell('§cВы проиграли! Шестерёнки уничтожены!');

      player.potionEffects.add('minecraft:darkness', 200, 0);

    }

  });

});

 

console.log('ESM Raids: Скрипт загружен!');

Ссылка на комментарий
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...