Хостинг серверов Minecraft playvds.com
  1. Вы находитесь в русском сообществе Bukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на русский язык плагины наших собратьев из других стран.
    Dismiss Notice

Совет Ферма. (на bol)

Discussion in 'Руководства, инструкции, утилиты' started by repeat, Aug 8, 2011.

  1. Автор темы
    repeat

    repeat Старожил Девелопер Пользователь

    Trophy Points:
    123
    от безделья периодического сажусь писать скрипт для
    BucketOfLua - Lua for Bukkit
    принцип пока наипростейший - прямоугольная область с точками х1,z1; х2,z2 где отслеживаются животные определённого типа (пусть будут Pig). в момент когда игра их метит как умершие своей смертью (isDead() = true) и собирается удалить из мира (entity.remove()) прервать это действие или спавнить новое животное, если отключить удаление не получится.
    Дальше можно будет уже думать о рождаемости новых особей.

    Сейчас меня интересует может есть у кого алгоритм, рабочая версия определения существа в заданной области? Пока я собираюсь использовать вариант: выяснять по координате(*) чанк, брать всех животных в чанке брать у каждого координату и проверять внутри ли он заданной области. Если внутри, проверять состояние isDead().

    (*) - алгоритм выяснения чанков покрытых заданной площадью очень приветствуется.
     
    D_ART and alexoz12 like this.
  2. Хостинг MineCraft
    <
  3. miker9

    miker9 Активный участник

    Trophy Points:
    88
    Code:
        int cnoy = 0, cnox = 0;
              if(((maxX-minX)/16 -Math.floor((maxX-minX)/16))*16 - Math.ceil(minX/16)*16-minX <= 0)
                {
                    cnox=(int) ((maxX-minX)/16) + 1;
                }
                else if(((maxX-minX)/16 -Math.floor((maxX-minX)/16))*16 - Math.ceil(minX/16)*16-minX > 0)
                {
                    cnox=(int) ((maxX-minX)/16) + 2;
                }
    
                if(((maxY-minY)/16 -Math.floor((maxY-minY)/16))*16 - Math.ceil(minY/16)*16-minY <= 0)
                {
                    cnoy=(int) ((maxY-minY)/16) + 1;
                }
                else if(((maxY-minY)/16 -Math.floor((maxY-minY)/16))*16 - Math.ceil(minY/16)*16-minY > 0)
                {
                    cnoy=(int) ((maxY-minY)/16) + 2;
                }
            for(int i = 0; i < cnox; i++)
            {
                for(int k = 0; k < cnoy; k++)
                {
                    int X, Y;
                    X = (int)minX + i*16;
                    Y = (int)minY + k*16;
                    System.out.println(X + " " + Y);
                    //заменить на поиск чанка по координатам (world.getChunkAt(X, Y))
                }
            }
    Переменные maxX maxY minX minY типа double

    Это не lua но думаю смысл понятен.
     
  4. kursorik

    kursorik Активный участник Пользователь

    Trophy Points:
    76
    Имя в Minecraft:
    kursorik
    Lua и Java связаны друг с другом ?
     
  5. Mr_RoboMan

    Mr_RoboMan Старожил Пользователь

    Trophy Points:
    123
    OMG Зачем апать такую старую тему?
     

Share This Page