turt2live

Untitled

Nov 26th, 2011
173
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 13.86 KB | None | 0 0
  1. /* meaSuite is copyright 2011/2012 of Turt2Live Programming and Sayshal Productions
  2.  *
  3.  * Modifications of the code, or any use of the code must be preauthorized by Travis
  4.  * Ralston (Original author) before any modifications can be used. If any code is
  5.  * authorized for use, this header must retain it's original state. The authors (Travis
  6.  * Ralston and Tyler Heuman) can request your code at any time. Upon code request you have
  7.  * 24 hours to present code before we will ask you to not use our code.
  8.  *
  9.  * Contact information:
  10.  * Travis Ralston
  11.  *
  12.  * Tyler Heuman
  13.  */
  14. package mea.Freezer;
  15.  
  16. import java.io.BufferedReader;
  17. import java.io.File;
  18. import java.io.FileReader;
  19. import java.text.DateFormat;
  20. import java.text.SimpleDateFormat;
  21. import java.util.Date;
  22. import java.util.Random;
  23.  
  24. import mea.Math.Expression;
  25. import mea.plugin.MultiFunction;
  26.  
  27. import org.bukkit.Bukkit;
  28. import org.bukkit.Location;
  29. import org.bukkit.Material;
  30. import org.bukkit.entity.Player;
  31. import org.bukkit.plugin.java.JavaPlugin;
  32. import org.bukkit.util.config.Configuration;
  33.  
  34. @SuppressWarnings("deprecation")
  35. public class MeaFreezer {
  36.  
  37.     private JavaPlugin plugin;
  38.     private Material DOME_MATERIAL = Material.GLASS;
  39.    
  40.     public MeaFreezer(JavaPlugin plugin){
  41.         this.plugin = plugin;
  42.     }
  43.    
  44.     public void noPerms(Player player){
  45.         player.sendMessage("You can't do that!!");
  46.     }
  47.    
  48.     public void freezePlayer(Player sender, Player player, String args[]){
  49.         String playername = args[0];
  50.         if(!player.hasPermission("meaSuite.Freezer.exempt")){
  51.             Configuration frozen = new Configuration(new File(plugin.getDataFolder()+"/meaFreeze/frozen_players/"+playername+".yml"));
  52.             boolean domes = getNode("settings.iceDome").equalsIgnoreCase("true");
  53.             boolean domed = false;
  54.             if(sender.hasPermission("meaSuite.Freezer.domefreeze") && domes){
  55.                 domed = true;
  56.             }
  57.             System.out.println(getNode("settings.iceDome").equalsIgnoreCase("true"));
  58.             System.out.println(sender.hasPermission("meaSuite.Freezer.domefreeze"));
  59.             String rawFrozenLength = args[1];
  60.             String code = "none";
  61.             boolean codeFrozen = false;
  62.             String frozenBy = sender.getName();
  63.             if(args.length > 2 && sender.hasPermission("meaSuite.Freezer.codefreeze")){
  64.                 code = args[2];
  65.                 codeFrozen = true;
  66.             }
  67.             frozen.setProperty("frozenOn", getDate());
  68.             frozen.setProperty("codeFrozen", codeFrozen+"");
  69.             frozen.setProperty("code", code);
  70.             frozen.setProperty("frozenUntil", getFrozenUntil(getBackgroundExpire(rawFrozenLength)));
  71.             frozen.setProperty("whoFroze", frozenBy);
  72.             frozen.setProperty("frozenLength", rawFrozenLength);
  73.             frozen.setProperty("dome", domed+"");
  74.             frozen.setProperty("millisUntilExpire", getBackgroundExpire(rawFrozenLength));
  75.             frozen.setProperty("lastCheck", System.currentTimeMillis());
  76.             frozen.setProperty("frozen", "true");
  77.             if(domed){
  78.                 createDome(player.getLocation(), frozen);
  79.             }
  80.             frozen.save();
  81.             String command = convertVariables(getNode("messages.onFreezeCommand"), player, "freeze");
  82.             String onFreeze = convertVariables(getNode("messages.onFreeze"), player, "freeze");
  83.             if(codeFrozen){
  84.                 onFreeze  = convertVariables(getNode("messages.onCodeFreeze"), player, "freeze");
  85.             }
  86.             if(!onFreeze.equalsIgnoreCase("nomsg")){
  87.                 player.sendMessage(onFreeze);
  88.             }
  89.             if(!command.equalsIgnoreCase("nocmd")){
  90.                 Bukkit.dispatchCommand(Bukkit.getConsoleSender(), command);
  91.             }
  92.             MultiFunction.fireFeature(player);
  93.         }else{
  94.             sender.sendMessage(convertVariables(getNode("messages.onExempt"), player, "freeze"));
  95.         }
  96.     }
  97.    
  98.     public void unfreezePlayer(Player sender, Player player, String args){
  99.         String playername = args;
  100.         Configuration frozen = new Configuration(new File(plugin.getDataFolder()+"/meaFreeze/frozen_players/"+playername+".yml"));
  101.         frozen.load();
  102.         String rawFrozenLength = "0s";
  103.         frozen.setProperty("frozenUntil", getFrozenUntil(getBackgroundExpire(rawFrozenLength)));
  104.         frozen.setProperty("frozenLength", rawFrozenLength);
  105.         frozen.setProperty("frozen", "false");
  106.         frozen.save();
  107.         String command = convertVariables(getNode("messages.onUnfreezeCommand"), player, "unfreeze");
  108.         String onFreeze = convertVariables(getNode("messages.onUnfreeze"), player, "unfreeze");
  109.         if(!onFreeze.equalsIgnoreCase("nomsg")){
  110.             player.sendMessage(onFreeze);
  111.         }
  112.         if(!command.equalsIgnoreCase("nocmd")){
  113.             Bukkit.dispatchCommand(Bukkit.getConsoleSender(), command);
  114.         }
  115.         removeDome(player);
  116.         frozen.save();
  117.     }
  118.    
  119.     public void unfreezeCodedPlayer(Player sender, String args[]){
  120.         Configuration frozen = new Configuration(new File(plugin.getDataFolder()+"/meaFreeze/frozen_players/"+sender.getName()+".yml"));
  121.         frozen.load();
  122.         if(args[0].equals(frozen.getString("code"))){
  123.             //TODO: FIX THIS
  124.         }else{
  125.             sender.sendMessage("Wrong code!");
  126.         }
  127.     }
  128.    
  129.     public void toggleDome(String enabled){
  130.         if(enabled.equalsIgnoreCase("enable")){
  131.             setNode("settings.iceDome", "true");
  132.         }else{
  133.             setNode("settings.iceDome", "false");
  134.         }
  135.     }
  136.    
  137.     public void refresh(Player player){
  138.         String playername = player.getName();
  139.         Configuration frozen = new Configuration(new File(plugin.getDataFolder()+"/meaFreeze/frozen_players/"+playername+".yml"));
  140.         frozen.load();
  141.         if(frozen.getString("frozenLength") != null){
  142.             frozen.setProperty("frozenUntil", getFrozenUntil(getBackgroundExpire(frozen.getString("frozenLength"))));
  143.             frozen.setProperty("millisUntilExpire", checkTime(frozen));
  144.             frozen.setProperty("lastCheck", System.currentTimeMillis());
  145.         }
  146.         frozen.save();
  147.     }
  148.    
  149.     private double checkTime(Configuration frozen) {
  150.         double time = 0;
  151.         long lc = Long.parseLong(frozen.getString("lastCheck"));
  152.         time = System.currentTimeMillis() - lc;
  153.         time = Double.parseDouble(frozen.getString("millisUntilExpire")) - time;
  154.         return time;
  155.     }
  156.  
  157.     public boolean isFrozen(Player player){
  158.         String playername = player.getName();
  159.         Configuration frozen = new Configuration(new File(plugin.getDataFolder()+"/meaFreeze/frozen_players/"+playername+".yml"));
  160.         frozen.load();
  161.         boolean frozenBefore = false;
  162.         if(frozen.getString("millisUntilExpire") != null){
  163.             frozenBefore = (Double.parseDouble(frozen.getString("millisUntilExpire")) <= 0) ? true : false;
  164.         }
  165.         refresh(player);
  166.         boolean frozenAfter = true;
  167.         if(frozen.getString("millisUntilExpire") != null){
  168.             frozenAfter = (Double.parseDouble(frozen.getString("millisUntilExpire")) <= 0) ? false : true;
  169.         }
  170.         if(frozenBefore && !frozenAfter && frozen.getString("frozen").equalsIgnoreCase("true")){
  171.             unfreezePlayer(player, player, player.getName());
  172.         }
  173.         if(frozen.getString("millisUntilExpire") != null){
  174.             return (frozen.getString("frozen").equalsIgnoreCase("true")) ? true : false;
  175.         }else{
  176.             return false;
  177.         }
  178.     }
  179.    
  180.     public void displayInfo(Player sender, Player player){
  181.         boolean hasCommand = true;
  182.         int i = 1;
  183.         while(hasCommand){
  184.             if(getNode("messages.freezeInfo.line"+i) != null){
  185.                 sender.sendMessage(""+convertVariables(getNode("messages.freezeInfo.line"+i), player, "isFrozen"));
  186.             }else{
  187.                 hasCommand = false;
  188.             }
  189.             i++;
  190.         }
  191.     }
  192.    
  193.     public String getCode(){
  194.         String characters[] = getNode("code.characters").split("");
  195.         int length = Integer.parseInt(getNode("code.length"));
  196.         boolean uppercase = Boolean.parseBoolean(getNode("code.randomUppercase"));
  197.         String code = "";
  198.         for(int i=0;i<=length;i++){
  199.             Random rand = new Random(System.currentTimeMillis());
  200.             String character = characters[rand.nextInt(characters.length)-1];
  201.             if(uppercase){
  202.                 if(rand.nextInt(100) > 50){
  203.                     character = character.toUpperCase();
  204.                 }
  205.             }
  206.             code = code.concat(character);
  207.         }
  208.         return code;
  209.     }
  210.    
  211.     public void sendCommand(String command){
  212.         Bukkit.getServer().dispatchCommand(Bukkit.getConsoleSender(), command);
  213.     }
  214.    
  215.     private String getDate(){
  216.         DateFormat dateFormat = new SimpleDateFormat(getNode("timestamp.format"));
  217.         Date date = new Date();
  218.         String timestamp = dateFormat.format(date);
  219.         return timestamp;
  220.     }
  221.    
  222.     private double getBackgroundExpire(String command){
  223.         command = command.replaceAll("y", "*31536000000+");
  224.         command = command.replaceAll("mo", "*2628000000+");
  225.         command = command.replaceAll("w", "*604800000+");
  226.         command = command.replaceAll("d", "*86400000+");
  227.         command = command.replaceAll("h", "*3600000+");
  228.         command = command.replaceAll("m", "*60000+");
  229.         command = command.replaceAll("s", "*1000+");
  230.         command = command.substring(0, command.length()-1);
  231.         Double ret = 0.0;
  232.         ret = new Expression(command).resolve();
  233.         //System.out.println(ret/1000);
  234.         return ret;
  235.     }
  236.    
  237.     private String getFrozenUntil(double d){
  238.         d = d + System.currentTimeMillis();
  239.         DateFormat dateFormat = new SimpleDateFormat(getNode("timestamp.format"));
  240.         Date date = new Date((long) d);
  241.         String timestamp = dateFormat.format(date);
  242.         return timestamp;
  243.     }
  244.  
  245.     public String getNode(String node){
  246.         Configuration config = plugin.getConfiguration();
  247.         config.load();
  248.         return config.getString("meaFreeze."+node);
  249.     }
  250.    
  251.  
  252.     public void setNode(String node, String value){
  253.         Configuration config = plugin.getConfiguration();
  254.         config.load();
  255.         config.setProperty("meaFreeze."+node, value);
  256.         config.save();
  257.     }
  258.    
  259.     public void createDome(Location location, Configuration config){
  260.         try{
  261.             File f = new File(plugin.getDataFolder()+"/dome.csv");
  262.             if(!f.exists()){
  263.                 DomeCreator dome = new DomeCreator();
  264.                 dome.writeCSV(f.toString());
  265.             }
  266.             BufferedReader in = new BufferedReader(new FileReader(plugin.getDataFolder()+"/dome.csv"));
  267.             String line = in.readLine();
  268.             in.close();
  269.             String parts[] = line.split("\\.\\.");
  270.             int i = 0;
  271.             for(String part : parts){
  272.                 part = part.replaceAll("\\(", "");
  273.                 part = part.replaceAll("\\)", "");
  274.                 String array[] = part.split("\\,");
  275.                 double headAmount = 0.5;
  276.                 double x = Double.parseDouble(array[0]);
  277.                 double y = Double.parseDouble(array[1])-headAmount;
  278.                 double z = Double.parseDouble(array[2]);
  279.                 Location block = new Location(location.getWorld(), location.getX()+x, location.getY()+y, location.getZ()+z);
  280.                 if(location.getWorld().getBlockAt(block).getType() == Material.AIR){
  281.                     block.getBlock().setType(DOME_MATERIAL);
  282.                     config.setProperty("dome."+i+".x", block.getX()+"");
  283.                     config.setProperty("dome."+i+".y", block.getY()+"");
  284.                     config.setProperty("dome."+i+".z", block.getZ()+"");
  285.                     //config.setProperty("dome."+i+".world", block.getWorld().getName()+"");
  286.                     config.save();
  287.                 }
  288.                 i++;
  289.             }
  290.             config.setProperty("dome.max", i+"");
  291.             config.save();
  292.         }catch (Exception e){
  293.             e.printStackTrace();
  294.         }
  295.     }
  296.    
  297.     private void removeDome(Player player){
  298.         Configuration frozen = new Configuration(new File(plugin.getDataFolder()+"/meaFreeze/frozen_players/"+player.getName()+".yml"));
  299.         frozen.load();
  300.         if(frozen.getString("dome.max") != null){
  301.             int lastBlock = Integer.parseInt(frozen.getString("dome.max"));
  302.             for(int i=0;i<lastBlock;i++){
  303.                 double x = Double.parseDouble(frozen.getProperty("dome."+i+".x").toString().replaceAll("\\'", ""));
  304.                 double y = Double.parseDouble(frozen.getProperty("dome."+i+".y").toString().replaceAll("\\'", ""));
  305.                 double z = Double.parseDouble(frozen.getProperty("dome."+i+".z").toString().replaceAll("\\'", ""));
  306.                 Location block = new Location(player.getWorld(), x, y, z);
  307.                 if(player.getWorld().getBlockAt(block).getType() == DOME_MATERIAL){
  308.                     block.getWorld().getBlockAt(block).setType(Material.AIR);
  309.                 }
  310.             }
  311.         }
  312.     }
  313.    
  314.     public boolean isEnabled(){
  315.         Configuration config = plugin.getConfiguration();
  316.         config.load();
  317.         return config.getString("meaFreeze.enabled").equalsIgnoreCase("TRUE");
  318.     }
  319.    
  320.     public void enable(Player player){
  321.         Configuration config = plugin.getConfiguration();
  322.         config.load();
  323.         config.setProperty("meaFreeze.enabled", "true");
  324.         if(player != null){
  325.             player.sendMessage(convertVariables(getNode("onEnable"), player, "freeze"));
  326.         }
  327.         config.save();
  328.     }
  329.  
  330.     public void disable(Player player){
  331.         Configuration config = plugin.getConfiguration();
  332.         config.load();
  333.         config.setProperty("meaFreeze.enabled", "false");
  334.         if(player != null){
  335.             player.sendMessage(convertVariables(getNode("onDisable"), player, "freeze"));
  336.         }
  337.         config.save();
  338.     }
  339.    
  340.     public String getProperty(Player player, String node){
  341.         Configuration config = new Configuration(new File(plugin.getDataFolder()+"/meaFreeze/frozen_players/"+player.getName()+".yml"));
  342.         config.load();
  343.         return config.getString(node);
  344.     }
  345.  
  346.     public String convertVariables(String message, Player player, String command) {
  347.         message = message.replaceAll("%PLAYER%", player.getName());
  348.         message = message.replaceAll("%HELPMENU%", getHelpMenuFor(command));
  349.         message = message.replaceAll("%FROZENON%", getProperty(player, "frozenOn"));
  350.         message = message.replaceAll("%CODEFROZEN%", getProperty(player, "codeFrozen"));
  351.         message = message.replaceAll("%CODE%", getProperty(player, "code"));
  352.         message = message.replaceAll("%FROZENUNTIL%", getProperty(player, "frozenUntil"));
  353.         message = message.replaceAll("%WHOFROZE%", getProperty(player, "whoFroze"));
  354.         message = message.replaceAll("%FROZENLENGTH%", getProperty(player, "frozenLength"));
  355.         message = message.replaceAll("%DOME%", getProperty(player, "dome"));
  356.         message = MultiFunction.addColor(message, getNode("messages.colorVariable"));
  357.         return message;
  358.     }
  359.  
  360.     private String getHelpMenuFor(String command) {
  361.         String help = "No help found :(";
  362.         if(command.equalsIgnoreCase("freeze")){
  363.             help = "/freeze [PLAYERNAME | all] [Time: #s#m#h#d#w#mo#y] <Optional: Code>";
  364.         }else if(command.equalsIgnoreCase("unfreeze")){
  365.             help = "/unfreeze [PLAYERNAME | all]";
  366.         }else if(command.equalsIgnoreCase("isFrozen")){
  367.             help = "/isFrozen [PLAYERNAME]";
  368.         }else if(command.equalsIgnoreCase("useDome")){
  369.             help = "/useDome [enable | disable]";
  370.         }else if(command.equalsIgnoreCase("authenticate")){
  371.             help = "/authenticate [CODE]";
  372.         }
  373.         return help;
  374.     }
  375. }
  376.  
  377.  
Advertisement
Add Comment
Please, Sign In to add comment