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

Помогите Как сделать регенерацию региона средствами WorldEdit API?

Тема в разделе "Разработка плагинов для новичков", создана пользователем MinecrafterCrafting, 15 фев 2014.

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

    MinecrafterCrafting Новичок

    Баллы:
    18
    Допустим у меня есть две точки. Как сделать регенерацию этого региона средствами WorldEdit API?
     
  2. Хостинг MineCraft
    <
  3. Автор темы
    MinecrafterCrafting

    MinecrafterCrafting Новичок

    Баллы:
    18
    Вот код:

    Код:
    public boolean regenerate(Region region, EditSession editSession)
      {
        BaseBlock[] history = new BaseBlock[256 * (getMaxY() + 1)];
        for (Vector2D chunk : region.getChunks())
        {
          Vector min = new Vector(chunk.getBlockX() * 16, 0, chunk.getBlockZ() * 16);
          for (int x = 0; x < 16; x++) {
            for (int y = 0; y < getMaxY() + 1; y++) {
              for (int z = 0; z < 16; z++)
              {
                Vector pt = min.add(x, y, z);
                int index = y * 16 * 16 + z * 16 + x;
                history[index] = editSession.getBlock(pt);
              }
            }
          }
          try
          {
            this.world.regenerateChunk(chunk.getBlockX(), chunk.getBlockZ());
          }
          catch (Throwable t)
          {
            t.printStackTrace();
          }
          for (int x = 0; x < 16; x++) {
            for (int y = 0; y < getMaxY() + 1; y++) {
              for (int z = 0; z < 16; z++)
              {
                Vector pt = min.add(x, y, z);
                int index = y * 16 * 16 + z * 16 + x;
                if (!region.contains(pt)) {
                  editSession.smartSetBlock(pt, history[index]);
                } else {
                  editSession.rememberChange(pt, history[index], editSession.rawGetBlock(pt));
                }
              }
            }
          }
        }
        return true;
      }
    Помогите переделать этот метод так, чтобы было не public boolean regenerate(Region region, EditSession editSession), а public boolean regenerate(минимальная точка, максимальная точка)[DOUBLEPOST=1392471274,1392470976][/DOUBLEPOST]fromgate, у меня мощный сервер. помогите плиз
     
  4. Shevchik

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

    Баллы:
    173
    Имя в Minecraft:
    _Shevchik_
    EditSession не привязана к игроку, не надо тут.
     
    ПриветОтЛайки и Bars нравится это.
  5. Shevchik

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

    Баллы:
    173
    Имя в Minecraft:
    _Shevchik_
    EditSession es = new EditSession(new BukkitWorld(world), Integer.Max_VALUE)
     
    fromgate и Bars нравится это.
  6. Shevchik

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

    Баллы:
    173
    Имя в Minecraft:
    _Shevchik_
  7. ptnk

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

    Баллы:
    173
    Открой исходники и погляди, как это используется в его плагине?
    Неужели это так сложно?
     
  8. ptnk

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

    Баллы:
    173
    В мире не существует ни одного плагина для регенерации территории с помощью WG\WE? К примеру плагины от Свевчика, у него есть плагин, который делает данную функцию.
     
  9. Shevchik

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

    Баллы:
    173
    Имя в Minecraft:
    _Shevchik_
    /**
    * Construct the object with a maximum number of blocks.
    *
    * @param world
    * @param maxBlocks
    */
    public EditSession(LocalWorld world, int maxBlocks) {
    if (maxBlocks < -1) {
    throw new IllegalArgumentException("Max blocks must be >= -1");
    }

    this.maxBlocks = maxBlocks;
    this.world = world;
    }

    сырцы говорят сами за себя.
     
    Bars нравится это.
  10. ptnk

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

    Баллы:
    173
    Я тебе привёл пример, где это можно поглядеть.
     

Поделиться этой страницей