Advertisement
kevinatoranator

AGTV.java v.06

Jun 24th, 2012
110
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 16.67 KB | None | 0 0
  1. package me.kevinatoranator.AGTV;
  2.  
  3. /* Official AGTV server plugin
  4.  * Open Source feel free to use any code for your plugins
  5.  *
  6.  * Developed by Kevinatoranator
  7.  * Ideas from those at AGTV
  8.  *
  9.  * Also join us on AGTV @ 206.217.141.228.25565
  10.  */
  11.  
  12. import java.io.BufferedReader;
  13. import java.io.BufferedWriter;
  14. import java.io.File;
  15. import java.io.FileInputStream;
  16. import java.io.FileOutputStream;
  17. import java.io.FileReader;
  18. import java.io.FileWriter;
  19. import java.io.IOException;
  20. import java.io.ObjectInputStream;
  21. import java.io.ObjectOutputStream;
  22. import java.util.ArrayList;
  23. import java.util.HashMap;
  24. import java.util.HashSet;
  25. import java.util.Map.Entry;
  26. import java.util.logging.Logger;
  27.  
  28. import org.bukkit.Bukkit;
  29. import org.bukkit.ChatColor;
  30. import org.bukkit.GameMode;
  31. import org.bukkit.Location;
  32. import org.bukkit.Material;
  33. import org.bukkit.World;
  34. import org.bukkit.command.Command;
  35. import org.bukkit.command.CommandSender;
  36. import org.bukkit.configuration.file.FileConfiguration;
  37. import org.bukkit.entity.Player;
  38.  
  39. import org.bukkit.inventory.ItemStack;
  40. import org.bukkit.inventory.ShapedRecipe;
  41. import org.bukkit.plugin.PluginManager;
  42. import org.bukkit.plugin.java.JavaPlugin;
  43.  
  44. public class AGTV extends JavaPlugin {
  45.     private Logger log = Logger.getLogger("AGTV");
  46.     public static AGTV plugin;
  47.     private File hFolder;
  48.     private final String Homes_File = "homelist.txt";
  49.     private HashMap<String, Location> pHome = new HashMap<String, Location>();
  50.     public static boolean XPon;
  51.     private int votes;
  52.     private String reason;
  53.     private boolean isVotekicking=false;
  54.     HashSet <String> hasvoted = new HashSet <String>();
  55.  
  56.     public void onDisable(){
  57.         log.info("All systems offline");
  58.         try {
  59.             save(clearInv.clearWorlds ,"clearWorlds.txt");
  60.         } catch (Exception e) {
  61.             // TODO Auto-generated catch block
  62.             e.printStackTrace();
  63.         }
  64.        
  65.         try {
  66.             watersave(deepWater.DeepWaterWorlds, "DeepWaterWorlds.txt");
  67.         } catch (Exception e) {
  68.             // TODO
  69.             e.printStackTrace();
  70.         }
  71.     }
  72.     @SuppressWarnings("unchecked")
  73.     public void onEnable(){
  74.         log.info("Welcome to AGTV");
  75.         hFolder= getDataFolder();
  76.         PluginManager pm = getServer().getPluginManager();
  77.         pm.registerEvents(new Playerjoiner(this), this);
  78.         pm.registerEvents(new fireArrow(this), this);
  79.         pm.registerEvents(new clearInv(), this);
  80.         pm.registerEvents(new harderEnemies(this), this);
  81.         pm.registerEvents(new plantBiomes(this), this);
  82.         pm.registerEvents(new deepWater(this), this);
  83.         pm.registerEvents(new miner(this), this);
  84.        
  85.         final FileConfiguration config = this.getConfig();
  86.        
  87.         config.options().copyDefaults(true);
  88.         saveConfig();
  89.        
  90.         try {
  91.             clearInv.clearWorlds = (HashSet<String>)load("clearWorlds.txt");
  92.         } catch (Exception e1) {
  93.             // TODO Auto-generated catch block
  94.             e1.printStackTrace();
  95.         }
  96.        
  97.         try {
  98.             deepWater.DeepWaterWorlds = (ArrayList<String>) waterload("DeepWaterWorlds.txt");
  99.         } catch (Exception e1) {
  100.             // TODO Auto-generated catch block
  101.             e1.printStackTrace();
  102.         }
  103.        
  104.         ShapedRecipe firechRecipe = new ShapedRecipe(new ItemStack(385, 1));
  105.         firechRecipe.shape(new String[] {"BA"});
  106.         firechRecipe.setIngredient('B', Material.FLINT_AND_STEEL);
  107.         firechRecipe.setIngredient('A', Material.SULPHUR);
  108.        
  109.         getServer().addRecipe(firechRecipe);
  110.        
  111.         ShapedRecipe saddlerRecipe = new ShapedRecipe(new ItemStack(329,1));
  112.         saddlerRecipe.shape(new String[] {"BBB","ACA"});
  113.         saddlerRecipe.setIngredient('A', Material.STRING);
  114.         saddlerRecipe.setIngredient('B', Material.LEATHER);
  115.        
  116.         getServer().addRecipe(saddlerRecipe);
  117.        
  118.         ShapedRecipe chainhat = new ShapedRecipe(new ItemStack(Material.CHAINMAIL_HELMET ,1));
  119.         chainhat.shape(new String[] {"BAB", "BCB"});
  120.         chainhat.setIngredient('A', Material.LEATHER);
  121.         chainhat.setIngredient('B', Material.IRON_INGOT);
  122.        
  123.         getServer().addRecipe(chainhat);
  124.        
  125.         ShapedRecipe chainshirt = new ShapedRecipe(new ItemStack(Material.CHAINMAIL_CHESTPLATE, 1));
  126.         chainshirt.shape(new String[] {"ACA","BBB","BBB"});
  127.         chainshirt.setIngredient('B', Material.IRON_INGOT);
  128.         chainshirt.setIngredient('A', Material.LEATHER);
  129.        
  130.         getServer().addRecipe(chainshirt);
  131.        
  132.         ShapedRecipe chainpants = new ShapedRecipe(new ItemStack(Material.CHAINMAIL_LEGGINGS, 1));
  133.         chainpants.shape(new String[] {"BAB", "BCB", "BCB"});
  134.         chainpants.setIngredient('A', Material.LEATHER);
  135.         chainpants.setIngredient('B', Material.IRON_INGOT);
  136.        
  137.         getServer().addRecipe(chainpants);
  138.        
  139.         ShapedRecipe chainboots = new ShapedRecipe(new ItemStack(Material.CHAINMAIL_BOOTS, 1));
  140.         chainboots.shape(new String[] {"ACA","BCB"});
  141.         chainboots.setIngredient('A', Material.LEATHER);
  142.         chainboots.setIngredient('B', Material.IRON_INGOT);
  143.        
  144.         getServer().addRecipe(chainboots);
  145.        
  146.         ShapedRecipe spideyweb = new ShapedRecipe(new ItemStack(Material.WEB,2));
  147.         spideyweb.shape(new String[]{"ABA", "BAB", "ABA"});
  148.         spideyweb.setIngredient('A', Material.STRING);
  149.        
  150.         getServer().addRecipe(spideyweb);  
  151.        
  152.         ShapedRecipe mossyR = new ShapedRecipe(new ItemStack(Material.MOSSY_COBBLESTONE,1));
  153.         mossyR.shape(new String[]{"AAA", "ABA", "AAA"});
  154.         mossyR.setIngredient('A', Material.VINE);
  155.         mossyR.setIngredient('B', Material.COBBLESTONE);
  156.        
  157.         getServer().addRecipe(mossyR);
  158.        
  159.         ShapedRecipe nbrickR = new ShapedRecipe(new ItemStack(Material.NETHER_BRICK,1));
  160.         nbrickR.shape(new String[]{"AA", "AA"});
  161.         nbrickR.setIngredient('A', Material.NETHERRACK);
  162.        
  163.         getServer().addRecipe(nbrickR);
  164.        
  165.         if(!hFolder.exists()){
  166.             hFolder.mkdir();
  167.             log.info("Config made");
  168.         }
  169.         File ListoHomes = new File(hFolder.getAbsolutePath() + File.separator+ Homes_File);
  170.         if(!ListoHomes.exists()){
  171.             try {
  172.                 ListoHomes.createNewFile();
  173.                 log.info("Created homelist file");
  174.             } catch (IOException e) {
  175.                 log.info("Failed to create home file");
  176.             }
  177.            
  178.         }
  179.         if(loadSettings()){
  180.             log.info("AGTV-homes enabled");
  181.         }
  182.        
  183.        
  184.        
  185.     }
  186.  
  187.     public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args){
  188.         Player player= (Player)sender;
  189.        
  190.        
  191.         if(cmd.getName().equalsIgnoreCase("c")
  192.                 && player.hasPermission("gamemode.cr")){
  193.             if(args.length==0){
  194.                 player.setGameMode(GameMode.CREATIVE);
  195.                 player.sendMessage(ChatColor.GRAY + "Gamemode-Creative");
  196.                 log.info(player.getName()+ " entered creative mode");
  197.                 Bukkit.getServer().broadcastMessage(player.getName() +" has entered creative mode");
  198.             }else if(args.length==1){
  199.                 if(player.hasPermission("gamemode.cro")){
  200.                     Player target = Bukkit.getPlayer(args[0]);
  201.                     target.setGameMode(GameMode.CREATIVE);
  202.                     target.sendMessage(ChatColor.GRAY + player.getName() + " has set you in Creative mode");
  203.                     log.info(target.getName()+ " entered creative mode");
  204.                     Bukkit.getServer().broadcastMessage(player.getName() +" has set "+ target.getName()+" creative mode");
  205.                 }
  206.                    
  207.             }else if(args.length>1){
  208.                 player.sendMessage(ChatColor.GRAY + "Too many arguments. /c or /c <playername>");
  209.                
  210.             }
  211.         }
  212.        
  213.         if(cmd.getName().equalsIgnoreCase("s")
  214.                 && player.hasPermission("gamemode.sr")){
  215.             if(args.length==0){
  216.                 player.setGameMode(GameMode.SURVIVAL);
  217.                 player.sendMessage(ChatColor.GRAY + "Gamemode-Survival");
  218.                 log.info(player.getName()+ " entered survival mode");
  219.                 Bukkit.getServer().broadcastMessage(player.getName() +" has entered survival mode");
  220.             }else if(args.length==1){
  221.                 if(player.hasPermission("gamemode.sro")){
  222.                     Player target = Bukkit.getPlayer(args[0]);
  223.                     target.setGameMode(GameMode.SURVIVAL);
  224.                     target.sendMessage(ChatColor.GRAY + player.getName() + " has set you in Survival mode");
  225.                     log.info(target.getName()+ " entered survival mode");
  226.                     Bukkit.getServer().broadcastMessage(player.getName() +" has set "+ target.getName()+" creative mode");
  227.                 }  
  228.                    
  229.             }else if(args.length>1){
  230.                 player.sendMessage(ChatColor.GRAY + "Too many arguments. /s or /s <playername>");
  231.                
  232.             }
  233.         }
  234.        
  235.  
  236.        
  237.         if(commandLabel.equalsIgnoreCase("SetaHome")
  238.                 && player.hasPermission("homes.sethome")){
  239.             pHome.put(player.getName(), player.getLocation());
  240.             player.sendMessage(ChatColor.GRAY + "You have set your home");
  241.             saveSettings();
  242.         }
  243.        
  244.         if(commandLabel.equalsIgnoreCase("home")
  245.                 && player.hasPermission("homes.home")){
  246.             Location playerhome = pHome.get(player.getName());
  247.             if(playerhome !=null){
  248.                 player.teleport(playerhome);
  249.             }
  250.             else{
  251.                 player.sendMessage(ChatColor.GRAY+ "Home not set");
  252.             }
  253.         }
  254.        
  255.         if(cmd.getName().equalsIgnoreCase("votekick")
  256.                 && player.hasPermission("votekick.start")){
  257.             Player target = Bukkit.getServer().getPlayer(args[0]);
  258.             if(Bukkit.getServer().getOnlinePlayers().length>getConfig().getInt("PlayerNumforVK")-1){
  259.                 if(args.length!=2){
  260.                     player.sendMessage("Usage: /votekick <playername> <reason>");
  261.                 }
  262.                     if(args.length == 2){
  263.                         if(isVotekicking == false){
  264.                             reason=args[1];
  265.                             isVotekicking =true;
  266.                             Bukkit.getServer().broadcastMessage(player.getName() + " started a votekick against " + target.getName() + " for reason "+ reason);
  267.                             log.info(player.getName() + " started a votekick against " + target.getName() + " for reason "+ reason);
  268.                         }else{
  269.                             player.sendMessage("A votekick is already in progress");
  270.                         }
  271.                     }
  272.             }else{
  273.                 player.sendMessage("Not enough players to start votekick");
  274.             }
  275.         }  
  276.         if(cmd.getName().equalsIgnoreCase("vote")
  277.                 && player.hasPermission("votekick.vote")){
  278.             if(args.length>0){
  279.                 player.sendMessage("Usage: /vote <playername>");
  280.             }
  281.            
  282.             if(args.length == 1){
  283.                 if(isVotekicking==true){
  284.                     if(!hasvoted.contains(player.getName())){
  285.                     votes++;
  286.                     hasvoted.add(player.getName());
  287.                     final Player target = Bukkit.getServer().getPlayer(args[0]);
  288.                     if(Bukkit.getServer().getOnlinePlayers().length>getConfig().getInt("VKkick")-1){
  289.                         if((Bukkit.getServer().getOnlinePlayers().length)/getConfig().getInt("percentvoteKick")<votes){
  290.                            
  291.                             target.kickPlayer(target.getName());
  292.                         }
  293.                     }
  294.                     if(Bukkit.getServer().getOnlinePlayers().length>getConfig().getInt("VKban")-1){
  295.                         if((Bukkit.getServer().getOnlinePlayers().length)/getConfig().getInt("percentvoteBan")<votes){
  296.                             target.setBanned(true);
  297.                             isVotekicking=false;
  298.                             votes=0;
  299.                             hasvoted.removeAll(hasvoted);
  300.                         }
  301.                     }
  302.                     plugin.getServer().getScheduler().scheduleSyncDelayedTask(plugin, new Runnable() {
  303.  
  304.                            public void run() {
  305.                                Bukkit.getServer().broadcastMessage("Votekick for "+ target.getName() + " has ended");
  306.                                isVotekicking=false;
  307.                                votes=0;
  308.                                hasvoted.removeAll(hasvoted);
  309.                            }
  310.                         }, 6000);
  311.                     }else{
  312.                         player.sendMessage("You have already voted for this votekick");
  313.                     }
  314.                 }else{
  315.                     player.sendMessage("No votekick in progress");
  316.                 }
  317.             }else{
  318.                 player.sendMessage("Usage: /vote <playername>");
  319.             }
  320.         }
  321.         if(commandLabel.equalsIgnoreCase("endvk")
  322.                 && player.hasPermission("votekick.end")){
  323.             isVotekicking=false;
  324.             votes=0;
  325.             hasvoted.removeAll(hasvoted);
  326.             Bukkit.getServer().broadcastMessage(player.getName() + "ended the votekick");
  327.             log.info(player.getName() + "ended the votekick");
  328.         }
  329.        
  330.         if(commandLabel.equalsIgnoreCase("addclearworld")
  331.                 && player.hasPermission("world.addclear")){
  332.             clearInv.clearWorlds.add(player.getWorld().getName());
  333.             player.sendMessage(player.getWorld().getName() + " has become a clear inventory world");
  334.             log.info(player.getName()+" has made " +player.getWorld().getName() + " a clear inventory world");
  335.         }
  336.         if(commandLabel.equalsIgnoreCase("removeclearworld")
  337.                 && player.hasPermission("world.removeclear")){
  338.             clearInv.clearWorlds.remove(player.getWorld().getName());
  339.             player.sendMessage(player.getWorld().getName() + " is no longer a clear inventory world");
  340.             log.info(player.getName()+" has made " +player.getWorld().getName() + " a non clear inventory world");
  341.         }
  342.         if(commandLabel.equalsIgnoreCase("listclearworld")
  343.                 && player.hasPermission("world.listclear")){
  344.             if(clearInv.clearWorlds.isEmpty()){
  345.                 player.sendMessage("There are no clear inventory worlds");
  346.             }else
  347.             player.sendMessage(clearInv.clearWorlds.toString());
  348.         }
  349.         if(commandLabel.equalsIgnoreCase("motd")
  350.                 && player.hasPermission("server.motd")){
  351.                 player.sendMessage(ChatColor.WHITE + getConfig().getString("motd"));
  352.         }
  353.         if(commandLabel.equalsIgnoreCase("reloadConfig")
  354.                 && player.hasPermission("server.reloadconfig")){
  355.                 this.reloadConfig();
  356.                 player.sendMessage("The AGTV config.yml has been reloaded from file");
  357.         }
  358.        
  359.         if(commandLabel.equalsIgnoreCase("addwaterworld")
  360.                 && player.hasPermission("world.addwater")){
  361.             deepWater.DeepWaterWorlds.add(player.getWorld().getName());
  362.             player.sendMessage(player.getWorld().getName() + " has become a deep water world");
  363.             log.info(player.getName()+" has made " +player.getWorld().getName() + " a deep water world");
  364.         }
  365.         if(commandLabel.equalsIgnoreCase("removewaterworld")
  366.                 && player.hasPermission("world.removewater")){
  367.             deepWater.DeepWaterWorlds.remove(player.getWorld().getName());
  368.             player.sendMessage(player.getWorld().getName() + " is no longer a deep water world");
  369.             log.info(player.getName()+" has made " +player.getWorld().getName() + " a non deep water world");
  370.         }
  371.         if(commandLabel.equalsIgnoreCase("listwaterworld")
  372.                 && player.hasPermission("world.listwater")){
  373.             if(deepWater.DeepWaterWorlds.isEmpty()){
  374.                 player.sendMessage("There are no deep water worlds");
  375.             }else
  376.             player.sendMessage(deepWater.DeepWaterWorlds.toString());
  377.         }
  378.        
  379.         //if(commandLabel.equalsIgnoreCase("addDarkWorld")
  380.         //      && player.hasPermission("dark.add")){
  381.         //      isDarkness.darkWorldsEnabled.add(player.getWorld());
  382.         //      player.sendMessage(player.getWorld().getName()+" is now DarkWorld Enabled");
  383.         //      log.info(player.getName() + " has enabled DarkWorld for "+ player.getWorld().getName());
  384.         //}
  385.         //if(commandLabel.equalsIgnoreCase("removeDarkWorld")
  386.         //      && player.hasPermission("dark.remove")){
  387.         //      isDarkness.darkWorldsEnabled.remove(player.getWorld());
  388.         //      player.sendMessage(player.getWorld().getName()+" is now DarkWorld Disabled");
  389.         //      log.info(player.getName() + " has disabled DarkWorld for "+ player.getWorld().getName());
  390.         //}
  391.         //if(commandLabel.equalsIgnoreCase("listDarkWorld")
  392.         //      && player.hasPermission("dark.list")){
  393.         //      player.sendMessage(isDarkness.darkWorldsEnabled.toString());
  394.         //}
  395.        
  396.         return false;
  397.     }
  398.    
  399.         private boolean saveSettings() {
  400.         try{
  401.             BufferedWriter writer = new BufferedWriter(new FileWriter((hFolder.getAbsolutePath()+ File.separator + Homes_File)));
  402.             for(Entry <String,Location> entry : pHome.entrySet()){
  403.                 Location PlHome = entry.getValue();
  404.                 if( PlHome != null){
  405.                     writer.write(entry.getKey() + ";" + PlHome.getX()+";"+PlHome.getY()+";"+PlHome.getZ()+";"+ PlHome.getPitch()+";"+PlHome.getYaw()+";"+PlHome.getWorld().getName());
  406.                     writer.newLine();
  407.                 }
  408.             }
  409.             writer.close();
  410.             return true;
  411.         }
  412.         catch(Exception ex){
  413.             return false;
  414.         }
  415.        
  416.     }
  417.     private boolean loadSettings(){
  418.         try{
  419.             BufferedReader breader = new BufferedReader(new FileReader((hFolder.getAbsolutePath() + File.separator+"homelist.txt")));
  420.             String line = breader.readLine();
  421.             while (line != null){
  422.                 String[] values = line.split(";");
  423.                 if(values.length==7){
  424.                     double homeX = Double.parseDouble(values[1]);
  425.                     double homeY = Double.parseDouble(values[2]);
  426.                     double HomeZ = Double.parseDouble(values[3]);
  427.                     float HomeP =  Float.parseFloat(values[4]);
  428.                     float HomeYa = Float.parseFloat(values[5]);
  429.                     World homeW = getServer().getWorld(values[6]);
  430.                     if(homeW != null)
  431.                         pHome.put(values[0], new Location(homeW, homeX, homeY, HomeZ,HomeYa, HomeP));
  432.                     }
  433.                 line = breader.readLine();
  434.                 }
  435.                 return true;
  436.             }
  437.             catch (Exception ex){
  438.                 return false;
  439.             }
  440.         }
  441.    
  442.     public static void save(Object obj,String path) throws Exception
  443.     {
  444.         ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("clearWorlds.txt"));
  445.         oos.writeObject(obj);
  446.         oos.flush();
  447.         oos.close();
  448.     }
  449.     public static Object load(String path) throws Exception
  450.     {
  451.         ObjectInputStream ois = new ObjectInputStream(new FileInputStream("clearWorlds.txt"));
  452.         Object result = ois.readObject();
  453.         ois.close();
  454.         return result;
  455.     }
  456.  
  457.     public static void watersave(Object obj, String path) throws Exception
  458.         {
  459.         ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("DeepWaterWorlds.txt"));
  460.         oos.writeObject(obj);
  461.         oos.flush();
  462.         oos.close();
  463.         }
  464.     public static Object waterload(String path) throws Exception
  465.     {
  466.         ObjectInputStream ois = new ObjectInputStream(new FileInputStream("DeepWaterWorlds.txt"));
  467.         Object result = ois.readObject();
  468.         ois.close();
  469.         return result;
  470.     }
  471. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement