[ Закрыто ] Пересечение регионов

  • Автор темы Автор темы KuSaMe
  • Дата начала Дата начала
Статус
Закрыто для дальнейших ответов.

KuSaMe

Активный участник
Пользователь
Баллы
61
Имя в Minecraft
KuSaMe
Надо проверить есть ли пересечение региона с другим регионом, и если есть, то выдать сообщение ! WG API подключен!
 
Последнее редактирование:
просто я как понял он берет именно приват, а не выделения привата ! он не считывает точки выделения !
Выделение и название будущего региона + проход по списку регионов, проверяет пересечение. Не понимаю че ты мозг ипешь.
 
Последнее редактирование:
Вот те полный код.
Код:
package Example;

import org.bukkit.Bukkit;
import org.bukkit.World;
import org.bukkit.entity.Player;

import com.sk89q.minecraft.util.commands.CommandException;
import com.sk89q.worldedit.BlockVector;
import com.sk89q.worldedit.bukkit.WorldEditPlugin;
import com.sk89q.worldedit.bukkit.selections.CuboidSelection;
import com.sk89q.worldedit.bukkit.selections.Polygonal2DSelection;
import com.sk89q.worldedit.bukkit.selections.Selection;
import com.sk89q.worldguard.LocalPlayer;
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.ProtectedCuboidRegion;
import com.sk89q.worldguard.protection.regions.ProtectedPolygonalRegion;
import com.sk89q.worldguard.protection.regions.ProtectedRegion;

public class wg {
    protected static WorldGuardPlugin wg = (WorldGuardPlugin) Bukkit.getPluginManager().getPlugin("WorldGuard");

    public static void get(Player player, String id, World world) throws CommandException {
        LocalPlayer localPlayer = wg.wrapPlayer(player);
        RegionManager manager = wg.getRegionContainer().get(world);
        checkRegionDoesNotExist(manager, id, false);
        ApplicableRegionSet regions = manager.getApplicableRegions(checkRegionFromSelection(player, id));
        if (regions.size() > 0) {
            if (!regions.isOwnerOfAll(localPlayer)) {
                throw new CommandException("This region overlaps with someone else's region.");
            }
        }
    }

    protected static Selection checkSelection(Player player) throws CommandException {
        WorldEditPlugin worldEdit = WorldGuardPlugin.inst().getWorldEdit();
        Selection selection = worldEdit.getSelection(player);
        if (selection == null) {
            throw new CommandException(
                    "Please select an area first. Use WorldEdit to make a selection! (wiki: http://wiki.sk89q.com/wiki/WorldEdit).");
        }
        return selection;
    }

    protected static ProtectedRegion checkRegionFromSelection(Player player, String id) throws CommandException {
        Selection selection = checkSelection(player);
        if ((selection instanceof Polygonal2DSelection)) {
            Polygonal2DSelection polySel = (Polygonal2DSelection) selection;
            int minY = polySel.getNativeMinimumPoint().getBlockY();
            int maxY = polySel.getNativeMaximumPoint().getBlockY();
            return new ProtectedPolygonalRegion(id, polySel.getNativePoints(), minY, maxY);
        }
        if ((selection instanceof CuboidSelection)) {
            BlockVector min = selection.getNativeMinimumPoint().toBlockVector();
            BlockVector max = selection.getNativeMaximumPoint().toBlockVector();
            return new ProtectedCuboidRegion(id, min, max);
        }
        throw new CommandException("Sorry, you can only use cuboids and polygons for WorldGuard regions.");
    }

    protected static String checkRegionId(String id, boolean allowGlobal) throws CommandException {
        if (!ProtectedRegion.isValidId(id)) {
            throw new CommandException("The region name of '" + id + "' contains characters that are not allowed.");
        }
        if ((!allowGlobal) && (id.equalsIgnoreCase("__global__"))) {
            throw new CommandException("Sorry, you can't use __global__ here.");
        }
        return id;
    }

    protected static void checkRegionDoesNotExist(RegionManager manager, String id, boolean mayRedefine)
            throws CommandException {
        if (manager.hasRegion(id)) {
            throw new CommandException("A region with that name already exists. Please choose another name."
                    + (mayRedefine ? " To change the shape, use /region redefine " + id + "." : ""));
        }
    }
}
Как подключить этот код к этому ? я слишком глуп или не понимаю что требуется (

Код:
package event.main.KuSaMe;

import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.Sound;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.block.Action;
import org.bukkit.event.player.PlayerInteractEvent;

import com.sk89q.worldguard.bukkit.WorldGuardPlugin;
import com.sk89q.worldguard.protection.ApplicableRegionSet;
import com.sk89q.worldguard.protection.managers.RegionManager;

public class private2 implements Listener
{
    private AR plugin;
    public private2(AR plugin)
    {
          this.plugin = plugin;           
    }

    @SuppressWarnings("deprecation")
    @EventHandler
    public void interact(PlayerInteractEvent e)
    {       
         Action a = e.getAction();
         Player p = e.getPlayer();
          if (a == Action.RIGHT_CLICK_BLOCK )
          {   
              int x = plugin.getConfig().getInt("p.x");
              
              int c2 = plugin.getConfig().getInt("p2.c");
               String n2 = plugin.getConfig().getString("p2.n");
               String s2 = plugin.getConfig().getString("p2.s");
               String w2 = plugin.getConfig().getString("p2.w");
               String e2 = plugin.getConfig().getString("p2.e");
               String z2 = plugin.getConfig().getString("p2.z");

                WorldGuardPlugin wg = (WorldGuardPlugin) Bukkit.getServer().getPluginManager().getPlugin("WorldGuard");
                RegionManager rgm = wg.getRegionManager(p.getWorld());
                ApplicableRegionSet ars = rgm.getApplicableRegions(p.getLocation());
                
             if(p.getItemInHand().getTypeId() != c2 ) return;
                 if(e.getClickedBlock().getTypeId() == x)
                {
                int rnd1 = 1 + (int) (Math.random()*100);
                int rnd2 = 1 + (int) (Math.random()*100);
                int rnd3 = 1 + (int) (Math.random()*100);   
            p.playSound(p.getLocation(),
                    Sound.ENDERDRAGON_DEATH, 1, 2);
            p.performCommand("/hpos1");
            p.performCommand("/hpos2");
            p.performCommand("/expand" + " " + n2);
            p.performCommand("/expand" + " " + s2);
            p.performCommand("/expand" + " " + w2);
            p.performCommand("/expand" + " " + e2);
            p.performCommand("/expand vert");

            if (ars.getRegions().iterator() == null ) return;
                    if(ars.getRegions().iterator().equals("__global__")) return;
                        if( ars.size() == 0)
                        {
            p.sendMessage(ChatColor.GREEN + "Ваш приват не пересекаеться с другими приватами.");
            p.performCommand("rg" + " " + "claim" + " " + p.getName()
                    + "_" + z2 + "x" + z2 + "_" + rnd1 + rnd2 + rnd3);
             }
            else
            {
                p.sendMessage(ChatColor.RED + "Вы не можете заприватить, так как ваш приват пересекаеться с другим приватом.");
            
            }
}
}
          e.isCancelled();
}
    
            
}
 
Вот как то так.

Код:
    @EventHandler
    public void interact(PlayerInteractEvent e) {
        Player player = e.getPlayer();
        try {
            wg.get(player, player.getName()+e.getClickedBlock().getChunk(), player.getWorld());
            //Что то делаем.
            player.sendMessage("Ок");
        } catch (CommandException ex) {
            player.sendMessage(ex.getMessage());
        }
    }
 
Последнее редактирование:
Вот как то так.

Код:
    @EventHandler
    public void interact(PlayerInteractEvent e) {
        Player player = e.getPlayer();
        try {
            wg.get(player, player.getName()+e.getClickedBlock().getChunk(), player.getWorld());
            //Что то делаем.
            player.sendMessage("Ок");
        } catch (CommandException ex) {
            player.sendMessage(ex.getMessage());
        }
    }
Спасибо большое ) очень благодарен ! все работает как надо )
 
Статус
Закрыто для дальнейших ответов.
Назад
Верх