Помогите Зоны - WorldGuard

DarklingCodex

Активный участник
Пользователь
Баллы
61
Здравствуйте, уважаемы посетители форума Rubukkit. Интересует меня одна, но правда, очень легкая задача - каким образом можно получить иное: при заходе в allowPvp зону WorldGuard'a игроку отправлялось определенное сообщение; а в noPvp - другое?
 
Последнее редактирование:
HashMap<Player, String> regions = new HashMap<Player, String>;
void onMove(PlayerMoveEvent e) {
Player p = e.getPlayer();
String region = гуглишь как получить текущий регион игрока;
if(regions.containsKey(p)) {
if(regions.get(p).equals(region)) {
тут до сих пор в том регионе, в котором был на одно движение раньше
} else {
Это часть кода, которая будет выполняться при смене региона (иначе говоря при входе в другой регион).
Проверяем есть ли у текущего региона allowPvp и в зависимости от результата отправляем нужные сообщения.
}
}
}
 
HashMap<Player, String> regions = new HashMap<Player, String>;
void onMove(PlayerMoveEvent e) {
Player p = e.getPlayer();
String region = гуглишь как получить текущий регион игрока;
if(regions.containsKey(p)) {
if(regions.get(p).equals(region)) {
тут до сих пор в том регионе, в котором был на одно движение раньше
} else {
Это часть кода, которая будет выполняться при смене региона (иначе говоря при входе в другой регион).
Проверяем есть ли у текущего региона allowPvp и в зависимости от результата отправляем нужные сообщения.
}
}
}
Отлитчный способ убить тпс сервера.
 
У WG там вроде свои очереди проверки, если проверять как выше, то будет плохо.
 
Вот можете взять из моего екшенвг за основу. Вместо канбуилд проверяешь на флаг.

Java:
package ActionWG;

import com.sk89q.worldguard.bukkit.*;
import org.bukkit.*;
import org.bukkit.entity.*;
import com.sk89q.worldguard.protection.regions.*;
import com.sk89q.worldguard.protection.*;
import java.util.*;

public class wg6
{
    public Main plugin;
    public WorldGuardPlugin wg;

    public wg6(Main instance) {
        this.wg = (WorldGuardPlugin)Bukkit.getPluginManager().getPlugin("WorldGuard");
        this.plugin = instance;
    }

    String wg(Player p) {
        ApplicableRegionSet set = this.wg.getRegionManager(p.getWorld()).getApplicableRegions(p.getLocation());
        Iterator<ProtectedRegion> iterator = set.getRegions().iterator();
        if (iterator.hasNext()) {
            ProtectedRegion rg = iterator.next();
            return String.valueOf(rg.getId()) + ":" + this.wg.canBuild(p, p.getLocation());
        }
        return "__global__:" + this.wg.canBuild(p, p.getLocation());
    }
}
Ну и там шедулоер рисуете на примере моего.

Java:
package ActionWG;

import org.bukkit.entity.*;
import java.util.*;

class wg6Runs implements Runnable
{
    private Main plugin;

    wg6Runs(Main instance) {
        this.plugin = instance;
    }

    @Override
    public void run() {
        for (Player p : this.plugin.getServer().getOnlinePlayers()) {
            String[] rg = this.plugin.w.wg(p).split(":");
            String s = "4";
            if (rg[1].equals("true")) {
                s = "2";
            }
            ActionBar actionBar = new ActionBar("[§" + s + rg[0] + "§f]");
            if (this.plugin.map.get(p) == null) {
                this.plugin.map.put(p, rg[0]);
                actionBar.sendToPlayer(p);
            } else {
                if (this.plugin.map.get(p).equals(rg[0])) {
                    continue;
                }
                this.plugin.map.put(p, rg[0]);
                actionBar.sendToPlayer(p);
            }
        }
    }
}
 
Последнее редактирование:
Вот можете взять из моего екшенвг за основу. Вместо канбуилд проверяешь на флаг.

Java:
package ActionWG;

import com.sk89q.worldguard.bukkit.*;
import org.bukkit.*;
import org.bukkit.entity.*;
import com.sk89q.worldguard.protection.regions.*;
import com.sk89q.worldguard.protection.*;
import java.util.*;

public class wg6
{
    public Main plugin;
    public WorldGuardPlugin wg;

    public wg6(Main instance) {
        this.wg = (WorldGuardPlugin)Bukkit.getPluginManager().getPlugin("WorldGuard");
        this.plugin = instance;
    }

    String wg(Player p) {
        ApplicableRegionSet set = this.wg.getRegionManager(p.getWorld()).getApplicableRegions(p.getLocation());
        Iterator<ProtectedRegion> iterator = set.getRegions().iterator();
        if (iterator.hasNext()) {
            ProtectedRegion rg = iterator.next();
            return String.valueOf(rg.getId()) + ":" + this.wg.canBuild(p, p.getLocation());
        }
        return "__global__:" + this.wg.canBuild(p, p.getLocation());
    }
}
Ну и там шедулоер рисуете на примере моего.

Java:
package ActionWG;

import org.bukkit.entity.*;
import java.util.*;

class wg6Runs implements Runnable
{
    private Main plugin;

    wg6Runs(Main instance) {
        this.plugin = instance;
    }

    @Override
    public void run() {
        for (Player p : this.plugin.getServer().getOnlinePlayers()) {
            String[] rg = this.plugin.w.wg(p).split(":");
            String s = "4";
            if (rg[1].equals("true")) {
                s = "2";
            }
            ActionBar actionBar = new ActionBar("[§" + s + rg[0] + "§f]");
            if (this.plugin.map.get(p) == null) {
                this.plugin.map.put(p, rg[0]);
                actionBar.sendToPlayer(p);
            } else {
                if (this.plugin.map.get(p).equals(rg[0])) {
                    continue;
                }
                this.plugin.map.put(p, rg[0]);
                actionBar.sendToPlayer(p);
            }
        }
    }
}
Дык лол, тоже самое, но через шулдер.
 
Назад
Верх