Advertisement
Guest User

WGHook

a guest
Jul 13th, 2014
225
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.63 KB | None | 0 0
  1. @SuppressWarnings({ "rawtypes", "unchecked" })
  2.     private synchronized boolean updateRegions(final Player player, final MovementWay movement, Location to){
  3.         Set<ProtectedRegion> regions;
  4.        
  5.         if(this.playerRegions.get(player) == null){
  6.             regions = new HashSet();
  7.         }else{
  8.             regions = new HashSet((Collection)this.playerRegions.get(player));
  9.         }
  10.        
  11.         Set<ProtectedRegion> oldRegions = new HashSet(regions);
  12.        
  13.         RegionManager manager = Main.guard.worldGuard().getRegionManager(to.getWorld());
  14.        
  15.         if(manager == null){
  16.             return false;
  17.         }
  18.        
  19.         ApplicableRegionSet appRegions = manager.getApplicableRegions(to);
  20.        
  21.         for(final ProtectedRegion region: appRegions){
  22.             if(!regions.contains(region)){
  23.                 RegionEnterEvent e = new RegionEnterEvent(region, player, movement);
  24.                 Main.instance.getServer().getPluginManager().callEvent(e);
  25.                
  26.                
  27.                 if(e.isCancelled()){
  28.                     regions.clear();
  29.                     regions.addAll(oldRegions);
  30.                     return true;
  31.                 }
  32.                
  33.                 new Thread(){
  34.                     public void run(){
  35.                         try{
  36.                             sleep(50L);
  37.                         }catch(InterruptedException e){}
  38.                        
  39.                         RegionEnteredEvent e = new RegionEnteredEvent(region, player, movement);
  40.                         Main.instance.getServer().getPluginManager().callEvent(e);
  41.                        
  42.                        
  43.                     }
  44.                 }.start();
  45.                
  46.             }
  47.         }
  48.        
  49.         Collection<ProtectedRegion> app = (Collection)getPrivateValue(appRegions, "applicable");
  50.         Iterator<ProtectedRegion> itr = regions.iterator();
  51.         while(itr.hasNext()){
  52.             final ProtectedRegion region = (ProtectedRegion)itr.next();
  53.             if(!app.contains(region)){
  54.                 if(manager.getRegion(region.getId()) != region){
  55.                     itr.remove();
  56.                 }else{
  57.                     RegionLeaveEvent e = new RegionLeaveEvent(region, player, movement);
  58.                    
  59.                     Main.instance.getServer().getPluginManager().callEvent(e);
  60.                     Bukkit.getLogger().info("RegionLeaveEvent Thrown");
  61.                    
  62.                     if(e.isCancelled()){
  63.                         regions.clear();regions.addAll(oldRegions);
  64.                         return true;
  65.                     }
  66.                    
  67.                     new Thread(){
  68.                         public void run(){
  69.                             try{
  70.                                 sleep(50L);
  71.                             }catch(InterruptedException e){}
  72.                            
  73.                             RegionLeftEvent e = new RegionLeftEvent(region, player, movement);
  74.                             Main.instance.getServer().getPluginManager().callEvent(e);
  75.                             Bukkit.getLogger().info("RegionLeftEvent Thrown");
  76.                            
  77.                         }
  78.                     }.start();
  79.                     itr.remove();
  80.                    
  81.                    
  82.                 }
  83.             }
  84.         }
  85.         this.playerRegions.put(player, regions);
  86.         return false;
  87.     }
  88.    
  89.     private Object getPrivateValue(Object obj, String name){
  90.         try{
  91.             Field f = obj.getClass().getDeclaredField(name);
  92.             f.setAccessible(true);
  93.             return f.get(obj);
  94.         }catch(Exception e){
  95.             return null;
  96.         }
  97.     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement