/[projects]/miscJava/bukkit-minecraft-plugins/HoerupUtils/src/main/java/dk/thoerup/bukkit/hoeruputils/chests/AdvancedChest.java
ViewVC logotype

Diff of /miscJava/bukkit-minecraft-plugins/HoerupUtils/src/main/java/dk/thoerup/bukkit/hoeruputils/chests/AdvancedChest.java

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1808 by torben, Sun Jun 3 20:16:40 2012 UTC revision 1868 by torben, Mon Nov 5 21:46:57 2012 UTC
# Line 24  import org.bukkit.event.EventHandler; Line 24  import org.bukkit.event.EventHandler;
24  import org.bukkit.event.Listener;  import org.bukkit.event.Listener;
25  import org.bukkit.event.block.Action;  import org.bukkit.event.block.Action;
26  import org.bukkit.event.block.BlockBreakEvent;  import org.bukkit.event.block.BlockBreakEvent;
27    import org.bukkit.event.block.BlockBurnEvent;
28  import org.bukkit.event.block.BlockPlaceEvent;  import org.bukkit.event.block.BlockPlaceEvent;
29  import org.bukkit.event.entity.EntityExplodeEvent;  import org.bukkit.event.entity.EntityExplodeEvent;
30  import org.bukkit.event.inventory.InventoryCloseEvent;  import org.bukkit.event.inventory.InventoryCloseEvent;
# Line 76  public class AdvancedChest  implements L Line 77  public class AdvancedChest  implements L
77                                    
78                  if (args.length == 0) {                  if (args.length == 0) {
79                          player.sendMessage("Usage:");                          player.sendMessage("Usage:");
80                          player.sendMessage("/chest (status|lock|snitch|remove|addplayer|removeplayer) [player]");                          player.sendMessage("/chest (status|lock|snitch|remove|addplayer|removeplayer|setowner) [player]");
81                          return true;                          return true;
82                  }                  }
83                                    
# Line 140  public class AdvancedChest  implements L Line 141  public class AdvancedChest  implements L
141                  }                  }
142                                    
143                  if (cmd.equals("remove")) {                  if (cmd.equals("remove")) {
144                          if (chest != null) {                          if (chest == null) {
145                                  player.sendMessage("[LockedChest] Removing protection from chest");                                  player.sendMessage("This chest is not protected");
146                                  removeChest(loc);                                                                return true;
147                          } else {                          }
148                                  player.sendMessage("This chest is not protected");                                if (! chest.getOwner().equals( player.getName() ) ) {
149                                    player.sendMessage("You can not remove lock from a chest you don't own");
150                                    return true;
151                            }
152    
153                            player.sendMessage("[LockedChest] Removing protection from chest");
154                            removeChest(loc);                              
155    
156                            return true;
157                    }
158    
159                    if (cmd.equals("setowner")) {
160                            if (chest == null) {
161                                    player.sendMessage("This chest is not protected");
162                                    return true;
163                            }
164                            if (! chest.getOwner().equals( player.getName() ) ) {
165                                    player.sendMessage("You can not set new owner of a chest you dont own");
166                                    return true;
167                            }
168                            if (args.length != 2) {
169                                    player.sendMessage("You need to specify which player should own this chest");
170                                    return true;
171                            }
172                            OfflinePlayer p2 = server.getOfflinePlayer(args[1]);
173                            if ( p2.hasPlayedBefore() == false && p2.isOnline() == false) {
174                                    player.sendMessage("Unknown user: " + args[1] );
175                                    return true;
176                          }                          }
177                            chest.setOwner( p2.getName() );
178                            plugin.getDatabase().save( chest );
179                            player.sendMessage("ok");
180                          return true;                          return true;
181                  }                  }
182                                    
# Line 154  public class AdvancedChest  implements L Line 185  public class AdvancedChest  implements L
185                                  player.sendMessage("This chest is not protected");                                  player.sendMessage("This chest is not protected");
186                                  return true;                                  return true;
187                          }                          }
188                            if (! chest.getOwner().equals( player.getName() ) ) {
189                                    player.sendMessage("You can not add/remove players from a chest you don't own");
190                                    return true;
191                            }
192                          if (args.length != 2) {                          if (args.length != 2) {
193                                  player.sendMessage("You need to specify which player to add or remove");                                  player.sendMessage("You need to specify which player to add or remove");
194                                  return true;                                  return true;
# Line 216  public class AdvancedChest  implements L Line 251  public class AdvancedChest  implements L
251                          } else {                          } else {
252                                  event.setCancelled(true);                                  event.setCancelled(true);
253                                  event.getPlayer().sendMessage("You can't destroy that chest");                                  event.getPlayer().sendMessage("You can't destroy that chest");
254                                    server.getLogger().info( "[AdvancedChest] " + event.getPlayer().getName() + " tried breaking a chest owned by " + chest.getOwner() );
255                          }                          }
256                  }                  }
257          }          }
# Line 264  public class AdvancedChest  implements L Line 300  public class AdvancedChest  implements L
300                    
301          void loadChests() {                      void loadChests() {            
302                  int count = loadChestsWorker();                  int count = loadChestsWorker();
303                  plugin.getLogger().info("[AdvancedChest] loaded " + count + " chests");                  server.getLogger().info("[AdvancedChest] loaded " + count + " chests");
304          }          }
305                    
306                    
# Line 365  public class AdvancedChest  implements L Line 401  public class AdvancedChest  implements L
401                  for (Block b : event.blockList() ) {                  for (Block b : event.blockList() ) {
402                          ChestBean chest = chestMap.get( b.getLocation() );                          ChestBean chest = chestMap.get( b.getLocation() );
403                          if (chest != null) {                          if (chest != null) {
404                                    server.getLogger().info( "[AdvancedChest] Prevented an explosion from destroying chest owned by " + chest.getOwner() );
405                                  event.setCancelled( true );                                  event.setCancelled( true );
406                                  return;                                  return;
407                          }                          }
408                  }                  }
409          }                }
410    
411            @EventHandler
412            public void onChestBurn(BlockBurnEvent event) {
413                    ChestBean chest = chestMap.get( event.getBlock().getLocation() );
414                    if (chest != null) {
415                            server.getLogger().info( "[AdvancedChest] prevented a fire from destrying chest owned by " + chest.getOwner() );
416                            event.setCancelled( true);
417                    }
418            }
419                    
420          // prevent a user from opening a chest          // prevent a user from opening a chest
421          @EventHandler          @EventHandler
# Line 395  public class AdvancedChest  implements L Line 441  public class AdvancedChest  implements L
441                                          return; //chest is opened by it's owner                                          return; //chest is opened by it's owner
442                                  }                                  }
443                                                                    
444                                  if (chest.getModifyPlayers() != null && chest.getModifyPlayers().length()>0) {                                  Set<String> players = Util.stringToSet( chest.getModifyPlayers() );
445                                          String modplayers[] = chest.getModifyPlayers().split(",");                                  if ( players.contains(player.getName()) ) {
446                                          for (String p : modplayers) {                                          return; //this player is on the whitelist so he may open
                                                 if ( player.getName().equals(p) ) {  
                                                         return; //this player is on the whitelist so he may open  
                                                 }  
                                         }  
447                                  }                                  }
448    
449                            
450                                    server.getLogger().info( "[AdvancedChest] " + event.getPlayer().getName() + " tried opening a chest owned by " + chest.getOwner() );
451                                  player.sendMessage( ChatColor.BLUE +  "Sorry but this chest is locked !");                                  player.sendMessage( ChatColor.BLUE +  "Sorry but this chest is locked !");
452                                  event.setCancelled(true);                                  event.setCancelled(true);
453                          }                          }
# Line 437  public class AdvancedChest  implements L Line 480  public class AdvancedChest  implements L
480                          Player player = (Player) event.getPlayer();                          Player player = (Player) event.getPlayer();
481                          if (player.getName().equals(chest.getOwner() )) {                          if (player.getName().equals(chest.getOwner() )) {
482                                  return; //chest is owned by it's own player                                  return; //chest is owned by it's own player
483                          }                                                }
484                            
485                            Set<String> players = Util.stringToSet( chest.getModifyPlayers() );
486                            if ( players.contains(player.getName()) ) {
487                                    return; //this player is on the whitelist so he may open
488                            }
489                                                    
490                                                    
491                          ItemCount contents = countItems( event.getInventory().getContents() );                                            ItemCount contents = countItems( event.getInventory().getContents() );                  
# Line 509  public class AdvancedChest  implements L Line 557  public class AdvancedChest  implements L
557                                          }                                          }
558                                                                    
559                                                                    
560                                          plugin.getLogger().info(msg);                                          server.getLogger().info( "[AdvancedChest]" + msg);
561                                          plugin.getMessageWrapper().sendMessage("system", owner, msg);                                          plugin.getMessageWrapper().sendMessage("system", owner, msg);
562                                  }                                  }
563                                                                    

Legend:
Removed from v.1808  
changed lines
  Added in v.1868

  ViewVC Help
Powered by ViewVC 1.1.20