Помогите Вопросы по WorldGuard API

MaрШутЧик

Активный участник
Пользователь
Баллы
66
Имя в Minecraft
serega100
1. Как получить регион, на котором стоит игрок.(желательно что-бы было через if).
2. Как узнать название региона, на котором стоит игрок.
3. Как телепортировать игрока за регион.
 
+ ещё Как подключить WorldGuard API к плагину (с библиотекой разобрался, а с кодом нет)
 
Кусок из своего плагина, немного переделал под вас.
1)
JavaScript:
package pl.invcheckrg.wgapi;

import com.sk89q.worldguard.bukkit.WorldGuardPlugin;
import com.sk89q.worldguard.protection.ApplicableRegionSet;
import com.sk89q.worldguard.protection.managers.RegionManager;
import com.sk89q.worldguard.protection.regions.ProtectedRegion;
import java.util.Iterator;
import java.util.List;
import org.bukkit.Location;
import org.bukkit.plugin.Plugin;
import pl.invcheckrg.InvCheckRG;

public class WorldGuardAPI
{
  private WorldGuardPlugin myWorldGuardPlugin;

  public WorldGuardAPI(Plugin wg)
  {
    this.myWorldGuardPlugin = ((WorldGuardPlugin)wg);
  }

  public ProtectedRegion getRegion(Location loc)
  {
    ApplicableRegionSet set = this.myWorldGuardPlugin.getRegionManager(loc.getWorld()).getApplicableRegions(loc);
    Iterator it = set.iterator();
    while (it.hasNext())
    {
      ProtectedRegion each = (ProtectedRegion)it.next();
      if (each != null) {
        return each;
      }
    }
    return null;
  }
}
2)each.getId();
3)Мне кажется вы так можете игрока в гору тпхнуть:В Ну или проверку на пустоту нужно делать будет(А если не пусто, то прийдется еще раз куда-то тпхать, и мне кажется морока будет)
 
Кусок из своего плагина, немного переделал под вас.
1)
JavaScript:
package pl.invcheckrg.wgapi;

import com.sk89q.worldguard.bukkit.WorldGuardPlugin;
import com.sk89q.worldguard.protection.ApplicableRegionSet;
import com.sk89q.worldguard.protection.managers.RegionManager;
import com.sk89q.worldguard.protection.regions.ProtectedRegion;
import java.util.Iterator;
import java.util.List;
import org.bukkit.Location;
import org.bukkit.plugin.Plugin;
import pl.invcheckrg.InvCheckRG;

public class WorldGuardAPI
{
  private WorldGuardPlugin myWorldGuardPlugin;

  public WorldGuardAPI(Plugin wg)
  {
    this.myWorldGuardPlugin = ((WorldGuardPlugin)wg);
  }

  public ProtectedRegion getRegion(Location loc)
  {
    ApplicableRegionSet set = this.myWorldGuardPlugin.getRegionManager(loc.getWorld()).getApplicableRegions(loc);
    Iterator it = set.iterator();
    while (it.hasNext())
    {
      ProtectedRegion each = (ProtectedRegion)it.next();
      if (each != null) {
        return each;
      }
    }
    return null;
  }
}
2)each.getId();
3)Мне кажется вы так можете игрока в гору тпхнуть:В Ну или проверку на пустоту нужно делать будет(А если не пусто, то прийдется еще раз куда-то тпхать, и мне кажется морока будет)
о бог мой
dzheki-chan_40893563_big_.jpg
 
JavaScript:
public class WorldGuardAPI
{
  private WorldGuardPlugin myWorldGuardPlugin;
  public WorldGuardAPI(Plugin wg)
  {
    this.myWorldGuardPlugin = ((WorldGuardPlugin)wg);
  }
  public ProtectedRegion getRegion(Location loc)
  {
    ApplicableRegionSet set = this.myWorldGuardPlugin.getRegionManager(loc.getWorld()).getApplicableRegions(loc);
    Iterator it = set.iterator();
    while (it.hasNext())
    {
      ProtectedRegion each = (ProtectedRegion)it.next();
      if (each != null) {
        return each;
      }
    }
    return null;
  }
}
ЗАЧЕМ?
 
JavaScript:
public class WorldGuardAPI
{
  private WorldGuardPlugin myWorldGuardPlugin;
  public WorldGuardAPI(Plugin wg)
  {
    this.myWorldGuardPlugin = ((WorldGuardPlugin)wg);
  }
  public ProtectedRegion getRegion(Location loc)
  {
    ApplicableRegionSet set = this.myWorldGuardPlugin.getRegionManager(loc.getWorld()).getApplicableRegions(loc);
    Iterator it = set.iterator();
    while (it.hasNext())
    {
      ProtectedRegion each = (ProtectedRegion)it.next();
      if (each != null) {
        return each;
      }
    }
    return null;
  }
}
ЗАЧЕМ?
Ему нужно получить имя региона в котором стоит игрок, потом проверить есть ли там регион, а это то что возвратит эти данные. По-моему, это и так понятно.
 
Можно проверку и легче сделать..
 
Можно проверку и легче сделать..
Я не спорю. Это проверка еще с версии 1.5.2, я её не менял никогда. Она могла и устареть.
P.S. Мне стыдно за вас.. Вместо того, чтобы поправить что-то, вы чмокаете и отворачиваете глаза. Прям как это делают девушки.
 
Я не спорю. Это проверка еще с версии 1.5.2, я её не менял никогда. Она могла и устареть.
P.S. Мне стыдно за вас.. Вместо того, чтобы поправить что-то, вы чмокаете и отворачиваете глаза. Прям как это делают девушки.
пффф Я и не спорю, МБ работает, но на 1.5.2 даже есть способ это проверить легче
 
И чем это можно упросить, чтобы я знал?
Подожди 5 - 7 минуток, до дома дойду :)
CSS:
        RegionManager manager = getWorldGuard().getRegionManager(p.getLocation().getWorld());
        for (ProtectedRegion region : manager.getApplicableRegions(p.getLocation())) {
            if (region.getId().equalsIgnoreCase("pvp")) {
                if (p.getGameMode() == GameMode.CREATIVE) {
                    p.setGameMode(GameMode.SURVIVAL);
                    event.setCancelled(true);

                }
            }
          
        }

    }

}
 
Подожди 5 - 7 минуток, до дома дойду :)
CSS:
        RegionManager manager = getWorldGuard().getRegionManager(p.getLocation().getWorld());
        for (ProtectedRegion region : manager.getApplicableRegions(p.getLocation())) {
            if (region.getId().equalsIgnoreCase("pvp")) {
                if (p.getGameMode() == GameMode.CREATIVE) {
                    p.setGameMode(GameMode.SURVIVAL);
                    event.setCancelled(true);

                }
            }
       
        }

    }

}
Уууу.. Охохохо:В
А чем то это проще?
Работа такая же, только у меня отдельный класс и метод для этого)
И тс не нужна проверка на креатив)
А еще while, вроде быстрее for)
 
Последнее редактирование:
Уууу.. Охохохо:В
А чем то это проще?
Работа такая же, только у меня отдельный класс и метод для этого)
И тс не нужна проверка на креатив)
А еще while, вроде быстрее for)
Я взял куд из своего плугина, мне эта проверка нужна была :)
 
3)Мне кажется вы так можете игрока в гору тпхнуть:В Ну или проверку на пустоту нужно делать будет(А если не пусто, то прийдется еще раз куда-то тпхать, и мне кажется морока будет)
Ничего из этого не понял, короче на примере worldborder. Переходишь рамку и тебя тпхает назад, ещё отправляет игроку уведомление о том, что он достиг края мира.
Мне надо примерно также, когда игрок заходит на запрещённый регион, ему отправляется уведомление и тпхает назад.
  • if (p.getGameMode() == GameMode.CREATIVE) {
  • p.setGameMode(GameMode.SURVIVAL);
Дак для этого вроде флаг в wg есть
 
Назад
Верх