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

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

Discussion in 'Разработка плагинов для новичков' started by MinecrafterCrafting, Feb 15, 2014.

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

    MinecrafterCrafting Новичок

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

    MinecrafterCrafting Новичок

    Trophy Points:
    18
    Вот код:

    Code:
    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 Старожил Пользователь

    Trophy Points:
    173
    Имя в Minecraft:
    _Shevchik_
    EditSession не привязана к игроку, не надо тут.
     
  5. Shevchik

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

    Trophy Points:
    173
    Имя в Minecraft:
    _Shevchik_
    EditSession es = new EditSession(new BukkitWorld(world), Integer.Max_VALUE)
     
    fromgate and Bars like this.
  6. Shevchik

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

    Trophy Points:
    173
    Имя в Minecraft:
    _Shevchik_
  7. ptnk

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

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

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

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

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

    Trophy Points:
    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 likes this.
  10. ptnk

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

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

Share This Page