Hooking with worldguard.. vault etc

Discussion in 'Plugin Development' started by mayhem7, Dec 2, 2012.

Thread Status:
Not open for further replies.
  1. Offline

    mayhem7

    Hi again guys! i tried to finf help in sk's forum but no one answered in days and you always help really fast :) i want to know how can i hook into worldguard, to check for example if a player is in a region.
    And also vault, to use economy with my plugins, thanks!
     
  2. how to hook into vault: explained on vaults plugin page
    how to hook into worldguard: search for hooking into worldguard at the forums
     
  3. Offline

    mayhem7

    I'm sure vault has some help but i'm bored of searching for worldguard's help... sk doesn't answer any post in his forum referring to hooks :(
     
  4. Offline

    Gildan27

    WorldGuard's development page is not the best, you may want to spend some time in their Javadoc and source code to understand it better. There's not a lot of help, best way is to figure it out. Anyway, the following will hopefully get you started:

    This will loop through all the regions the player is standing in.

    Code:
    Player player = //get reference to player however it pleases you
     
    //This will die if WorldGuard is not installed, you will need to perform standard checks to make sure it's installed
    WorldGuardPlugin worldGuardPlugin = (WorldGuardPlugin) Bukkit.getServer().getPluginManager().getPlugin("WorldGuard");
     
    RegionManager regionManager = worldGuardPlugin.getRegionManager(Bukkit.getServer().getWorld(player.getWorld()));
     
    Location location = player.getLocation();
     
    ApplicableRegionSet regions = regionManager.getApplicableRegions(BukkitUtil.toVector(location));
           
    for(ProtectedRegion region : regions) {
        String id = region.getId();
    }
    Actually, if it's any help, here's a WorldGuardHelper class I created with all the functionality I need for my plugin. It demonstrates accessing a number of WorldGuard functions (flags, owners, members, regions, etc.). If you have any questions, let me know.

    To make one, it just needs a world name:
    Code:
    WorldGuardHelper worldGuardHelper = new WorldGuardHelper(plugin, world.getName());

    Then you can do:
    Code:
    ApplicableRegionSet regions = worldGuardHelper.getRegions(player.getLocation());
    for(ProtectedRegion region : regions) {
        String id = region.getId(); //Look at all regions where the player is
    }
    

    Code:
    package com.example.project.util;
     
    import java.util.Calendar;
    import java.util.ArrayList;
    import java.util.List;
     
    import org.bukkit.Bukkit;
    import org.bukkit.Location;
    import org.bukkit.entity.Player;
    import org.bukkit.plugin.java.JavaPlugin;
     
    import com.sk89q.worldedit.Vector;
    import com.sk89q.worldguard.LocalPlayer;
    import com.sk89q.worldguard.bukkit.BukkitUtil;
    import com.sk89q.worldguard.bukkit.WorldGuardPlugin;
    import com.sk89q.worldguard.domains.DefaultDomain;
    import com.sk89q.worldguard.protection.ApplicableRegionSet;
    import com.sk89q.worldguard.protection.databases.ProtectionDatabaseException;
    import com.sk89q.worldguard.protection.flags.DefaultFlag;
    import com.sk89q.worldguard.protection.flags.StateFlag.State;
    import com.sk89q.worldguard.protection.managers.RegionManager;
    import com.sk89q.worldguard.protection.regions.ProtectedRegion;
     
    public class WorldGuardHelper {
     
        private WorldGuardPlugin worldGuardPlugin;
        private JavaPlugin plugin;
        private String world;
        private RegionManager regionManager;
     
        public WorldGuardHelper(JavaPlugin plugin, String world) {
            this.worldGuardPlugin = (WorldGuardPlugin) Bukkit.getServer().getPluginManager().getPlugin("WorldGuard");
            this.plugin = plugin;
            this.world = world;
            this.regionManager = worldGuardPlugin.getRegionManager(Bukkit.getServer().getWorld(this.world));
        }
     
        public String generateWorldGuardId(String type) {
            return world + "/" + type + "/" + Calendar.getInstance().getTimeInMillis();
        }
     
        public ProtectedRegion getRegion(String id) {
            return regionManager.getRegionExact(id);
        }
     
        public void addOwner(String id, String player) {
            plugin.getLogger().info("[WorldGuardHelper] [addOwner] " + "id: " + id + "player: " + player);
            ProtectedRegion region = getRegion(id);
         
            DefaultDomain owners = region.getOwners();
            owners.addPlayer(player);
            region.setOwners(owners);
         
            save();
        }
     
        public void removeOwner(String id, String player) {
            plugin.getLogger().info("[WorldGuardHelper] [removeOwner] " + "id: " + id + "player: " + player);
            ProtectedRegion region = getRegion(id);
            DefaultDomain owners = region.getOwners();
            owners.removePlayer(player);
            region.setOwners(owners);
     
            save();
         
        }
     
        public void removeOwners(String id) {
            plugin.getLogger().info("[WorldGuardHelper] [removeOwners] " + "id: " + id);
            ProtectedRegion region = getRegion(id);
         
            DefaultDomain owners = new DefaultDomain();
            region.setOwners(owners);
         
            save();
        }
     
        public boolean addMember(String id, String player) {
            plugin.getLogger().info("[WorldGuardHelper] [addMember] " + "id: " + id + "player: " + player);
            ProtectedRegion region = getRegion(id);
     
            if(region==null) return false;
         
            DefaultDomain members = region.getMembers();
            members.addPlayer(player);
            region.setMembers(members);
         
            save();
         
            return true;
        }
     
        public void removeMember(String id, String player) {
            plugin.getLogger().info("[WorldGuardHelper] [removeMember] " + "id: " + id + "player: " + player);
            ProtectedRegion region = getRegion(id);
            DefaultDomain members = region.getMembers();
            members.removePlayer(player);
            region.setMembers(members);
     
            save();
        }
     
        public void removeMembers(String id) {
            plugin.getLogger().info("[WorldGuardHelper] [removeMembers] " + "id: " + id);
            ProtectedRegion region = getRegion(id);
         
            DefaultDomain members = new DefaultDomain();
            region.setMembers(members);
         
            save();
        }
     
        public void addRegion(ProtectedRegion region) {
            regionManager.addRegion(region);;
            save();
        }
     
        public void removeRegion(String id) {
            regionManager.removeRegion(id);
            save();
        }
     
        public ProtectedRegion setDefaultFlags(ProtectedRegion region) {
            region.setFlag(DefaultFlag.DESTROY_VEHICLE, State.ALLOW);
            region.setFlag(DefaultFlag.PLACE_VEHICLE, State.ALLOW);
            return region;
        }
     
        public ApplicableRegionSet getRegions(Location location) {
            return getRegions(BukkitUtil.toVector(location));
        }
     
        public ApplicableRegionSet getRegions(Vector vector) {
            ApplicableRegionSet regions = regionManager.getApplicableRegions(vector);
            return regions;
        }
     
        public LocalPlayer getLocalPlayer(Player player) {
            return worldGuardPlugin.wrapPlayer(player);
        }
     
        public void save() {     
            Bukkit.getServer().getScheduler().scheduleAsyncDelayedTask(plugin, new Runnable() {
                public void run() {
                        try {
                          regionManager.save();
                      } catch (ProtectionDatabaseException e) {
                          e.printStackTrace();
                      }
                    }
             
              }, 0L);
        }
    }
    
    EDIT by Moderator: merged posts, please use the edit button instead of double posting.
     
    Last edited by a moderator: May 30, 2016
  5. That's a lot of help thanks to all :3
     
Thread Status:
Not open for further replies.

Share This Page