Check if a player is in a certain region

Discussion in 'Plugin Development' started by XgXXSnipz, Jul 5, 2014.

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

    XgXXSnipz

    Heres my code, IDK why this doesnt work
    Code:java
    1. package me.XgXxSnipz.LifeGuard;
    2.  
    3. import java.util.HashMap;
    4. import java.util.Iterator;
    5.  
    6. import org.bukkit.ChatColor;
    7. import org.bukkit.Sound;
    8. import org.bukkit.entity.Player;
    9. import org.bukkit.event.EventHandler;
    10. import org.bukkit.event.Listener;
    11. import org.bukkit.event.entity.EntityDamageEvent;
    12. import org.bukkit.event.entity.EntityDamageEvent.DamageCause;
    13.  
    14. import com.sk89q.worldguard.bukkit.WorldGuardPlugin;
    15. import com.sk89q.worldguard.protection.ApplicableRegionSet;
    16. import com.sk89q.worldguard.protection.regions.ProtectedRegion;
    17.  
    18. public class DrowningListener implements Listener {
    19.  
    20. private WorldGuardPlugin getwg() {
    21. return null;
    22. }
    23.  
    24. private HashMap<Player, Player> lifeguard = new HashMap<Player, Player>();
    25. private HashMap<Player, Player> victim = new HashMap<Player, Player>();
    26.  
    27.  
    28. @EventHandler
    29. public void dropEvent(EntityDamageEvent e){
    30.  
    31.  
    32. Player p = (Player) e.getEntity();
    33.  
    34. ApplicableRegionSet ar = this.getwg().getRegionManager(p.getWorld()).getApplicableRegions(p.getLocation());
    35. Iterator<ProtectedRegion> prs = ar.iterator();
    36. while (prs.hasNext()) {
    37. ProtectedRegion pr = prs.next();
    38.  
    39. if(e.getEntity() instanceof Player){
    40.  
    41. if(e.getCause().equals(DamageCause.DROWNING) && pr.getId().startsWith("pool"));
    42. victim.put(p, p);
    43. p.sendMessage(ChatColor.YELLOW + "[" + ChatColor.BLUE + "LifeGuard" + ChatColor.YELLOW +"]" + ChatColor.GREEN + " Dont worry, a life guard is its way!!, try to stay alive!!" );
    44. }
    45.  
    46. if(lifeguard.containsValue(p));
    47. lifeguard.get(p).sendMessage(ChatColor.YELLOW + "[" + ChatColor.BLUE + "LifeGuard" + ChatColor.YELLOW +"]" + ChatColor.GREEN + victim.get(p).getName() + " needs your help!");
    48. lifeguard.get(p).playSound(p.getLocation(),Sound.ORB_PICKUP, 1, 0);
    49.  
    50. }
    51. }
    52. }
    53.  



    Main class
    Code:java
    1. package me.XgXxSnipz.LifeGuard;
    2.  
    3. import org.bukkit.Bukkit;
    4. import org.bukkit.ChatColor;
    5. import org.bukkit.command.Command;
    6. import org.bukkit.command.CommandSender;
    7. import org.bukkit.entity.Player;
    8. import org.bukkit.plugin.Plugin;
    9. import org.bukkit.plugin.java.JavaPlugin;
    10.  
    11. import com.sk89q.worldedit.BlockVector;
    12. import com.sk89q.worldedit.bukkit.WorldEditPlugin;
    13. import com.sk89q.worldedit.bukkit.selections.Selection;
    14. import com.sk89q.worldguard.bukkit.WorldGuardPlugin;
    15. import com.sk89q.worldguard.domains.DefaultDomain;
    16. import com.sk89q.worldguard.protection.regions.ProtectedCuboidRegion;
    17.  
    18. public class LifeGuard extends JavaPlugin {
    19.  
    20. public void onEnable(){
    21. Bukkit.getServer().getPluginManager().registerEvents(new DrowningListener(), this);
    22. }
    23.  
    24. public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args) {
    25. if (!(sender instanceof Player)) {
    26. sender.sendMessage(ChatColor.YELLOW + "[" + ChatColor.BLUE + "LifeGuard" + ChatColor.YELLOW + "]" + ChatColor.RED + "Error: Consoles can create a pool");
    27. return true;
    28. }
    29.  
    30. Player p = (Player) sender;
    31.  
    32.  
    33.  
    34. if (cmd.getName().equalsIgnoreCase("pool")) {
    35. Selection sel = getWorldEdit().getSelection(p);
    36. if (sel == null) {
    37.  
    38. p.sendMessage(ChatColor.YELLOW + "[" + ChatColor.BLUE + "LifeGuard" + ChatColor.YELLOW + "]" + ChatColor.RED + "Error: You must create a selection, before just doing /pool");
    39.  
    40. return true;
    41. }
    42.  
    43. ProtectedCuboidRegion region = new ProtectedCuboidRegion(
    44. "plot_" + p.getName(),
    45. new BlockVector(sel.getNativeMinimumPoint()),
    46. new BlockVector(sel.getNativeMaximumPoint())
    47. );
    48.  
    49. DefaultDomain owners = new DefaultDomain();
    50. owners.addPlayer(getWorldGuard().wrapPlayer(p));
    51.  
    52. region.setOwners(owners);
    53.  
    54. getWorldGuard().getRegionManager(p.getWorld()).addRegion(region);
    55.  
    56. p.sendMessage(ChatColor.YELLOW + "[" + ChatColor.BLUE + "LifeGuard" + ChatColor.YELLOW + "]" + ChatColor.GREEN + "You have created a pool, now time to employ a life guard");
    57. }
    58.  
    59. return true;
    60. }
    61.  
    62.  
    63.  
    64. private WorldGuardPlugin getWorldGuard() {
    65. Plugin plugin = Bukkit.getServer().getPluginManager().getPlugin("WorldGuard");
    66.  
    67. // WorldGuard may not be loaded
    68. if (plugin == null || !(plugin instanceof WorldGuardPlugin)) {
    69. return null; // Maybe you want throw an exception instead
    70. }
    71.  
    72. return (WorldGuardPlugin) plugin;
    73. }
    74.  
    75. private WorldEditPlugin getWorldEdit() {
    76. Plugin plugin = Bukkit.getServer().getPluginManager().getPlugin("WorldEdit");
    77.  
    78. // WorldGuard may not be loaded
    79. if (plugin == null || !(plugin instanceof WorldEditPlugin)) {
    80. return null; // Maybe you want throw an exception instead
    81. }
    82.  
    83. return (WorldEditPlugin) plugin;
    84. }
    85. }
     
  2. Offline

    leet4044

    XgXXSnipz Try this:
    PHP:
                ApplicableRegionSet ar1 zDuels.getInstance().getWorldGuard().getRegionManager(p.getWorld()).getApplicableRegions(p.getLocation());
                
    Iterator<ProtectedRegionprs1 ar1.iterator();
                while (
    prs1.hasNext()) {
                    
    ProtectedRegion pr prs1.next();
                    if (
    pr.getId().startsWith("spawn") == false) {
                        
    duelSender.sendMessage("§cYou must be in spawn to be able to duel!");
                        return 
    true;
                    }
                }
     
  3. Offline

    XgXXSnipz

    Still doesnt work, here is my code now
    Code:java
    1. private WorldGuardPlugin getwg() {
    2. return null;
    3. }
    4.  
    5. @EventHandler
    6. public void onDamage(EntityDamageEvent e){
    7. if(e.getEntity() instanceof Player){
    8. Player p = (Player) e.getEntity();
    9.  
    10. ApplicableRegionSet ar = this.getwg().getRegionManager(p.getWorld()).getApplicableRegions(p.getLocation());
    11. Iterator<ProtectedRegion> prs1 = ar.iterator();
    12. while (prs1.hasNext()) {
    13. ProtectedRegion pr = prs1.next();
    14. if(e.getEntity() instanceof Player){
    15.  
    16. if(e.getCause().equals(DamageCause.DROWNING) && (pr.getId().startsWith("pool") == true));
    17. p.sendMessage(ChatColor.GREEN + "This is a test");
    18. e.setCancelled(true);
    19.  
    20.  
    21. }
    22. }
    23. }
    24. }
    25. }
     
  4. Offline

    xTigerRebornx

    XgXXSnipz
    Code:
    private WorldGuardPlugin getwg() {
            return null;
        }
    Should be fairly obvious as to why this doesn't work....
     
  5. Offline

    XgXXSnipz

    Should I just do
    Code:java
    1. return false;
    ?
     
  6. Offline

    myminecrafter01

    No. You need to get the WorldGuardPlugin object. Try something like this:

    Code:java
    1. private WorldGuardPlugin getWG() {
    2. Plugin plugin = Bukkit.getServer().getPluginManager().getPlugin("WorldGuard");
    3. if (plugin == null || !(plugin instanceof WorldGuardPlugin)) {
    4. return null;
    5. }
    6. return (WorldGuardPlugin) plugin;
    7. }
    8.  
     
Thread Status:
Not open for further replies.

Share This Page