Advertisement
Guest User

Untitled

a guest
Apr 9th, 2011
127
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 15.94 KB | None | 0 0
  1. package com.vildaberper.Locker;
  2.  
  3. import java.io.File;
  4. import java.util.ArrayList;
  5. import java.util.List;
  6.  
  7. import javax.persistence.PersistenceException;
  8.  
  9. import org.bukkit.command.Command;
  10. import org.bukkit.command.CommandSender;
  11. import org.bukkit.entity.Player;
  12. import org.bukkit.event.Event.Priority;
  13. import org.bukkit.event.Event.Type;
  14. import org.bukkit.plugin.java.JavaPlugin;
  15. import org.bukkit.util.config.Configuration;
  16.  
  17. import com.nijikokun.bukkit.Permissions.Permissions;
  18.  
  19. public final class Locker extends JavaPlugin{
  20.     private final LockerBlockListener blockListener = new LockerBlockListener();
  21.     private final LockerEntityListener entityListener = new LockerEntityListener();
  22.     private final LockerPlayerListener playerListener = new LockerPlayerListener();
  23.  
  24.     @Override
  25.     public void onDisable(){
  26.         saveConfig();
  27.         System.out.println(this.getDescription().getName() + " " + this.getDescription().getVersion() + " is disabled.");
  28.     }
  29.  
  30.     @Override
  31.     public void onEnable(){
  32.         Config.plugin = this;
  33.         Perm.PermissionsHandler = null;
  34.         Perm.Permissions.clear();
  35.         setupDatabase();
  36.         loadConfig();
  37.         setupPermissions();
  38.         this.getServer().getPluginManager().registerEvent(Type.ENTITY_EXPLODE, entityListener, Priority.Highest, this);
  39.         this.getServer().getPluginManager().registerEvent(Type.PLAYER_QUIT, playerListener, Priority.Low, this);
  40.         this.getServer().getPluginManager().registerEvent(Type.PLAYER_JOIN, playerListener, Priority.Low, this);
  41.         this.getServer().getPluginManager().registerEvent(Type.PLAYER_INTERACT, playerListener, Priority.High, this);
  42.         this.getServer().getPluginManager().registerEvent(Type.BLOCK_BREAK, blockListener, Priority.High, this);
  43.         this.getServer().getPluginManager().registerEvent(Type.BLOCK_PLACE, blockListener, Priority.High, this);
  44.         this.getServer().getPluginManager().registerEvent(Type.PLAYER_ANIMATION, playerListener, Priority.High, this);
  45.         System.out.println(this.getDescription().getName() + " " + this.getDescription().getVersion() + " is enabled.");
  46.     }
  47.  
  48.     @Override
  49.     public boolean onCommand(CommandSender sender, Command command, String commandLabel, String[] args){
  50.         Player s;
  51.  
  52.         if(command.getName().equalsIgnoreCase("lock") && sender instanceof Player){
  53.             s = (Player) sender;
  54.             sender.sendMessage(Misc.replaceColor(Config.lock));
  55.             LockerAction.setAction(s.getName(), new Action(s.getName(), "lock", args));
  56.             return true;
  57.         }else if(command.getName().equalsIgnoreCase("unlock") && sender instanceof Player){
  58.             s = (Player) sender;
  59.             if(args.length != 0 && args.length != 1){
  60.                 return false;
  61.             }
  62.             sender.sendMessage(Misc.replaceColor(Config.unlock));
  63.             LockerAction.setAction(s.getName(), new Action(s.getName(), "unlock", args));
  64.             return true;
  65.         }else if(command.getName().equalsIgnoreCase("lockinfo") && sender instanceof Player){
  66.             s = (Player) sender;
  67.             if(args.length != 0){
  68.                 return false;
  69.             }
  70.             sender.sendMessage(Misc.replaceColor(Config.info));
  71.             LockerAction.setAction(s.getName(), new Action(s.getName(), "lockinfo", args));
  72.             return true;
  73.         }else if(command.getName().equalsIgnoreCase("locker")){
  74.             if(args.length == 1 || args.length == 2 || args.length == 3){
  75.                 /*if(args[0].equalsIgnoreCase("save")){
  76.                     if(sender instanceof Player){
  77.                         if(!Perm.hasPermission((Player) sender, "locker.save")){
  78.                             return false;
  79.                         }
  80.                     }
  81.                     if(args.length != 1 && args.length != 2){
  82.                         return false;
  83.                     }
  84.                     if(args.length > 1){
  85.                         saveDB(args[1]);
  86.                         sender.sendMessage("Saved " + LockerDB.getSize() + " blocks to " + args[1] + ".yml.");
  87.                     }else{
  88.                         saveDB(Config.default_db);
  89.                         sender.sendMessage("Saved " + LockerDB.getSize() + " blocks.");
  90.                     }
  91.                     saveConfig();
  92.                 }else if(args[0].equalsIgnoreCase("load")){
  93.                     if(sender instanceof Player){
  94.                         if(!Perm.hasPermission((Player) sender, "locker.load")){
  95.                             return false;
  96.                         }
  97.                     }
  98.                     if(args.length != 1 && args.length != 2){
  99.                         return false;
  100.                     }
  101.                     if(args.length > 1){
  102.                         loadDB(args[1]);
  103.                         sender.sendMessage("Loaded " + LockerDB.getSize() + " blocks from " + args[1] + ".yml.");
  104.                     }else{
  105.                         loadDB(Config.default_db);
  106.                         sender.sendMessage("Loaded " + LockerDB.getSize() + " blocks.");
  107.                     }
  108.                     loadConfig();
  109.                 }else if(args[0].equalsIgnoreCase("clear")){
  110.                     int cleared = 0;
  111.  
  112.                     if(sender instanceof Player){
  113.                         if(!Perm.hasPermission((Player) sender, "locker.clear")){
  114.                             return false;
  115.                         }
  116.                     }
  117.                     if(args.length != 1 || args.length != 2){
  118.                         return false;
  119.                     }
  120.                     if(args.length > 1){
  121.                         for(int i = 0; i < LockerDB.getSize(); i++){
  122.                             if(LockerDB.getLock(i).getOwner().equals(args[1])){
  123.                                 cleared++;
  124.                                 LockerDB.setLock(LockerDB.getLock(i).getWorld(), LockerDB.getLock(i).getX(), LockerDB.getLock(i).getY(), LockerDB.getLock(i).getZ(), null);
  125.                                 i--;
  126.                             }
  127.                         }
  128.                         sender.sendMessage("Cleared " + cleared + " of " + (cleared + LockerDB.getSize()) + " blocks.");
  129.                     }else{
  130.                         cleared = LockerDB.getSize();
  131.                         LockerDB.clearDB();
  132.                         sender.sendMessage("Cleared " + cleared + " blocks.");
  133.                     }
  134.                 }else if(args[0].equalsIgnoreCase("validate")){
  135.                     int cleared = 0;
  136.  
  137.                     if(sender instanceof Player){
  138.                         if(!Perm.hasPermission((Player) sender, "locker.validate")){
  139.                             return false;
  140.                         }
  141.                     }
  142.                     if(args.length != 1){
  143.                         return false;
  144.                     }
  145.                     for(int i = 0; i < LockerDB.getSize(); i++){
  146.                         if(this.getServer().getWorld(LockerDB.getLock(i).getWorld()) == null){
  147.                             cleared++;
  148.                             LockerDB.setLock(LockerDB.getLock(i).getWorld(), LockerDB.getLock(i).getX(), LockerDB.getLock(i).getY(), LockerDB.getLock(i).getZ(), null);
  149.                             i--;
  150.                         }else{
  151.                             if(!Misc.isValidBlock(this.getServer().getWorld(LockerDB.getLock(i).getWorld()).getBlockAt(LockerDB.getLock(i).getX(), LockerDB.getLock(i).getY(), LockerDB.getLock(i).getZ()))){
  152.                                 cleared++;
  153.                                 LockerDB.setLock(LockerDB.getLock(i).getWorld(), LockerDB.getLock(i).getX(), LockerDB.getLock(i).getY(), LockerDB.getLock(i).getZ(), null);
  154.                                 i--;
  155.                             }
  156.                         }
  157.                     }
  158.                     sender.sendMessage("Cleared " + cleared + " of " + (cleared + LockerDB.getSize()) + " blocks.");
  159.                 }else if(args[0].equalsIgnoreCase("info")){
  160.                     String p = "s";
  161.  
  162.                     if(sender instanceof Player){
  163.                         if(!Perm.hasPermission((Player) sender, "locker.info")){
  164.                             return false;
  165.                         }
  166.                     }
  167.                     if(args.length != 1){
  168.                         return false;
  169.                     }
  170.                     if(LockerDB.getOwners().size() == 1){
  171.                         p = "";
  172.                     }
  173.                     sender.sendMessage("There are " + LockerDB.getSize() + " blocks locked by " + LockerDB.getOwners().size() + " player" + p + ".");
  174.                 }else */if(args[0].equalsIgnoreCase("set")){
  175.                     String value = "";
  176.  
  177.                     if(sender instanceof Player){
  178.                         if(!Perm.hasPermission((Player) sender, "locker.set")){
  179.                             return false;
  180.                         }
  181.                     }
  182.                     if(args.length != 3){
  183.                         return false;
  184.                     }
  185.                     for(int i = 2; i < args.length; i++){
  186.                         value += args[i];
  187.                     }
  188.                     if(setConfig(args[1], value)){
  189.                         sender.sendMessage("Set property '" + args[1] +  "' to '" + value + "'.");
  190.                     }else{
  191.                         sender.sendMessage("Failed to set property '" + args[1] +  "' to '" + value + "'.");
  192.                         return false;
  193.                     }
  194.                 }else{
  195.                     return false;
  196.                 }
  197.             }else{
  198.                 return false;
  199.             }
  200.             return true;
  201.         }
  202.         return false;
  203.     }
  204.  
  205.     public void setupPermissions(){
  206.         if(Perm.PermissionsHandler == null){
  207.             if(this.getServer().getPluginManager().getPlugin("Permissions") != null){
  208.                 Perm.PermissionsHandler = ((Permissions)this.getServer().getPluginManager().getPlugin("Permissions")).getHandler();
  209.             }else{
  210.                 Config.op_permissions = true;
  211.             }
  212.         }
  213.     }
  214.  
  215.     private void setupDatabase(){
  216.         try{
  217.             getDatabase().find(Lock.class).findRowCount();
  218.         }catch(PersistenceException ex){
  219.             System.out.println("Installing database for " + getDescription().getName() + " due to first time usage.");
  220.             installDDL();
  221.         }
  222.     }
  223.  
  224.     @Override
  225.     public List<Class<?>> getDatabaseClasses(){
  226.         List<Class<?>> list = new ArrayList<Class<?>>();
  227.         list.add(Lock.class);
  228.         return list;
  229.     }
  230.  
  231.     public boolean setConfig(String property, String value){
  232.         Configuration config = new Configuration(new File(this.getDataFolder(), "Locker.yml"));
  233.  
  234.         if(property.equals("op_permissions") || property.equals("block_explosions") || property.equals("block_redstone")){
  235.             if(value.equals("true")){
  236.                 config.load();
  237.                 config.setProperty(property, true);
  238.                 config.save();
  239.                 loadConfig();
  240.                 return true;
  241.             }else if(value.equals("false")){
  242.                 config.load();
  243.                 config.setProperty(property, false);
  244.                 config.save();
  245.                 loadConfig();
  246.                 return true;
  247.             }
  248.         }else if(property.equals("max_blocks")){
  249.             if(Misc.isNumeric(value)){
  250.                 config.load();
  251.                 config.setProperty(property, Integer.parseInt(value));
  252.                 config.save();
  253.                 loadConfig();
  254.                 return true;
  255.             }
  256.         }else if(
  257.                 property.equals("default_db")
  258.                 || property.equals("not_permission")
  259.                 || property.equals("not_possible")
  260.                 || property.equals("not_locked")
  261.                 || property.equals("not_password")
  262.                 || property.equals("not_place")
  263.                 || property.equals("not_break")
  264.                 || property.equals("not_lock_one")
  265.                 || property.equals("not_lock_two")
  266.                 || property.equals("not_unlock_one")
  267.                 || property.equals("not_unlock_two")
  268.                 || property.equals("unlock_one")
  269.                 || property.equals("unlock_two")
  270.                 || property.equals("lock_one")
  271.                 || property.equals("lock_two")
  272.                 || property.equals("invalid_block")
  273.                 || property.equals("invalid_password")
  274.                 || property.equals("wrong_password")
  275.                 || property.equals("correct_password")
  276.                 || property.equals("owned")
  277.                 || property.equals("locked")
  278.                 || property.equals("lock")
  279.                 || property.equals("unlock")
  280.                 || property.equals("info")
  281.                 || property.equals("type")
  282.                 || property.equals("owner")
  283.                 || property.equals("allowed")
  284.                 || property.equals("password")
  285.                 || property.equals("limit")
  286.         ){
  287.             config.load();
  288.             config.setProperty(property, value);
  289.             config.save();
  290.             loadConfig();
  291.             return true;
  292.         }
  293.         return false;
  294.     }
  295.  
  296.     public void saveConfig(){
  297.         Configuration config = new Configuration(new File(this.getDataFolder(), "Locker.yml"));
  298.  
  299.         config.setProperty("op_permissions", Config.op_permissions);
  300.         config.save();
  301.         config.load();
  302.         config.setProperty("block_explosions", Config.block_explosions);
  303.         config.save();
  304.         config.load();
  305.         config.setProperty("block_redstone", Config.block_redstone);
  306.         config.save();
  307.         config.load();
  308.         config.setProperty("max_blocks", Config.max_blocks);
  309.         config.save();
  310.         config.load();
  311.         config.setProperty("default_db", Config.default_db);
  312.         config.save();
  313.         config.load();
  314.         config.setProperty("not_permission", Config.not_permission);
  315.         config.save();
  316.         config.load();
  317.         config.setProperty("not_possible", Config.not_possible);
  318.         config.save();
  319.         config.load();
  320.         config.setProperty("not_locked", Config.not_locked);
  321.         config.save();
  322.         config.load();
  323.         config.setProperty("not_password", Config.not_password);
  324.         config.save();
  325.         config.load();
  326.         config.setProperty("not_place", Config.not_place);
  327.         config.save();
  328.         config.load();
  329.         config.setProperty("not_break", Config.not_break);
  330.         config.save();
  331.         config.load();
  332.         config.setProperty("not_lock_one", Config.not_lock_one);
  333.         config.save();
  334.         config.load();
  335.         config.setProperty("not_lock_two", Config.not_lock_two);
  336.         config.save();
  337.         config.load();
  338.         config.setProperty("not_unlock_one", Config.not_unlock_one);
  339.         config.save();
  340.         config.load();
  341.         config.setProperty("not_unlock_two", Config.not_unlock_two);
  342.         config.save();
  343.         config.load();
  344.         config.setProperty("unlock_one", Config.unlock_one);
  345.         config.save();
  346.         config.load();
  347.         config.setProperty("unlock_two", Config.unlock_two);
  348.         config.save();
  349.         config.load();
  350.         config.setProperty("lock_one", Config.lock_one);
  351.         config.save();
  352.         config.load();
  353.         config.setProperty("lock_two", Config.lock_two);
  354.         config.save();
  355.         config.load();
  356.         config.setProperty("invalid_block", Config.invalid_block);
  357.         config.save();
  358.         config.load();
  359.         config.setProperty("invalid_password", Config.invalid_password);
  360.         config.save();
  361.         config.load();
  362.         config.setProperty("wrong_password", Config.wrong_password);
  363.         config.save();
  364.         config.load();
  365.         config.setProperty("correct_password", Config.correct_password);
  366.         config.save();
  367.         config.load();
  368.         config.setProperty("owned", Config.owned);
  369.         config.save();
  370.         config.load();
  371.         config.setProperty("locked", Config.locked);
  372.         config.save();
  373.         config.load();
  374.         config.setProperty("lock", Config.lock);
  375.         config.save();
  376.         config.load();
  377.         config.setProperty("unlock", Config.unlock);
  378.         config.save();
  379.         config.load();
  380.         config.setProperty("info", Config.info);
  381.         config.save();
  382.         config.load();
  383.         config.setProperty("type", Config.type);
  384.         config.save();
  385.         config.load();
  386.         config.setProperty("owner", Config.owner);
  387.         config.save();
  388.         config.load();
  389.         config.setProperty("allowed", Config.allowed);
  390.         config.save();
  391.         config.load();
  392.         config.setProperty("limit", Config.limit);
  393.         config.save();
  394.         config.load();
  395.         config.setProperty("password", Config.password);
  396.         config.save();
  397.         config.load();
  398.         config.setProperty("Permissions", Perm.getPermissions());
  399.         config.save();
  400.     }
  401.  
  402.     public void loadConfig(){
  403.         Configuration config = new Configuration(new File(this.getDataFolder(), "Locker.yml"));
  404.  
  405.         Perm.PermissionsHandler = null;
  406.         Perm.resetPermissions();
  407.         config.load();
  408.         Config.op_permissions = config.getBoolean("op_permissions", Config.op_permissions);
  409.         Config.block_explosions = config.getBoolean("block_explosions", Config.block_explosions);
  410.         Config.block_redstone = config.getBoolean("block_redstone", Config.block_redstone);
  411.         Config.max_blocks = config.getInt("max_blocks", Config.max_blocks);
  412.         Config.default_db = config.getString("default_db", Config.default_db);
  413.         Config.not_permission = config.getString("not_permission", Config.not_permission);
  414.         Config.not_possible = config.getString("not_possible", Config.not_possible);
  415.         Config.not_locked = config.getString("not_locked", Config.not_locked);
  416.         Config.not_password = config.getString("not_password", Config.not_password);
  417.         Config.not_place = config.getString("not_place", Config.not_place);
  418.         Config.not_break = config.getString("not_break", Config.not_break);
  419.         Config.not_lock_one = config.getString("not_lock_one", Config.not_lock_one);
  420.         Config.not_lock_two = config.getString("not_lock_two", Config.not_lock_two);
  421.         Config.not_unlock_one = config.getString("not_unlock_one", Config.not_unlock_one);
  422.         Config.not_unlock_two = config.getString("not_unlock_two", Config.not_unlock_two);
  423.         Config.unlock_one = config.getString("unlock_one", Config.unlock_one);
  424.         Config.unlock_two = config.getString("unlock_two", Config.unlock_two);
  425.         Config.lock_one = config.getString("lock_one", Config.lock_one);
  426.         Config.lock_two = config.getString("lock_two", Config.lock_two);
  427.         Config.invalid_block = config.getString("invalid_block", Config.invalid_block);
  428.         Config.invalid_password = config.getString("invalid_password", Config.invalid_password);
  429.         Config.wrong_password = config.getString("wrong_password", Config.wrong_password);
  430.         Config.correct_password = config.getString("correct_password", Config.correct_password);
  431.         Config.owned = config.getString("owned", Config.owned);
  432.         Config.locked = config.getString("locked", Config.locked);
  433.         Config.lock = config.getString("lock", Config.lock);
  434.         Config.unlock = config.getString("unlock", Config.unlock);
  435.         Config.info = config.getString("info", Config.info);
  436.         Config.type = config.getString("type", Config.type);
  437.         Config.owner = config.getString("owner", Config.owner);
  438.         Config.allowed = config.getString("allowed", Config.allowed);
  439.         Config.password = config.getString("password", Config.password);
  440.         Config.limit = config.getString("limit", Config.limit);
  441.         Perm.setPermissions(config.getStringList("Permissions", Perm.getPermissions()));
  442.         setupPermissions();
  443.     }
  444. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement