Guest User

Untitled

a guest
Jun 24th, 2013
113
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 11.61 KB | None | 0 0
  1. package ru.babon.bukkit.gladiatorarena;
  2.  
  3. import java.io.IOException;
  4.  
  5. import org.bukkit.*;
  6. import org.bukkit.command.Command;
  7. import org.bukkit.command.CommandSender;
  8. import org.bukkit.configuration.file.FileConfiguration;
  9. import org.bukkit.entity.Player;
  10. import org.bukkit.event.EventHandler;
  11. import org.bukkit.event.Listener;
  12. import org.bukkit.event.entity.EntityDamageByEntityEvent;
  13. import org.bukkit.event.entity.PlayerDeathEvent;
  14. import org.bukkit.event.player.PlayerQuitEvent;
  15. import org.bukkit.inventory.ItemStack;
  16. import org.bukkit.plugin.java.JavaPlugin;
  17. import org.mcstats.Metrics;
  18.  
  19.  
  20. public class Arena extends JavaPlugin implements Listener {
  21.  
  22.     private FileConfiguration config;
  23.     int glcount=0;
  24.     String gladiators[];
  25.     String FTeamPl[];
  26.     String STeamPl[];
  27.     String isStarted = "no";
  28.     String isEnabled = "no";
  29.     int GladLifed = 0;
  30.     int FTeam = 0;
  31.     int STeam = 0;
  32.    
  33.     String mark = ChatColor.GOLD+"[GlArena] "+ChatColor.GREEN;
  34.  
  35.    
  36.     @Override
  37.     public void onEnable() {
  38.         config=getConfig();
  39.         Bukkit.getPluginManager().registerEvents(this, this);
  40.         if(!config.contains("GladiatorsCount")) config.set("GladiatorsCount", 2);
  41.        
  42.         for(int i=0;i<8;i++) { if(!config.contains("kits.startkit.item"+String.valueOf(i))) { config.set("kits.startkit.item"+String.valueOf(i), 0); config.set("kits.startkit.item"+String.valueOf(i)+"count", 1); } }
  43.         for(int i=0;i<3;i++) { if(!config.contains("kits.winkit.item"+String.valueOf(i))) { config.set("kits.winkit.item"+String.valueOf(i), 0); config.set("kits.winkit.item"+String.valueOf(i)+"count", 1); } }
  44.        
  45.         gladiators = new String[config.getInt("GladiatorsCount")];
  46.         FTeamPl = new String[(gladiators.length/2)];
  47.         STeamPl = new String[(gladiators.length/2)];
  48.         saveConfig();
  49.        
  50.         //Метрика
  51.         try {
  52.             Metrics metrics = new Metrics(this);
  53.             metrics.start();
  54.         } catch (IOException e) {
  55.             // Failed to submit the stats :-(
  56.         }
  57.     }  
  58.    
  59.    
  60.    
  61.      @Override
  62.        public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
  63.          
  64.            if(command.getName().equalsIgnoreCase("glarena")){
  65.            Player player = (Player)sender;
  66.            
  67.            if(args.length==0) {
  68.                player.sendMessage(mark+"Commands from GlArena:\n" +
  69.                     "/glarena enable - Enable arena\n" +
  70.                     "/glarena disable - Disable arena\n" +
  71.                     "/glarena setspawn <1/2> - Set spawn from first/second team\n" +
  72.                     "/glarena register - Registers a player to the arena\n");
  73.            }
  74.            
  75.            if(args.length>0){
  76.                
  77.                
  78.                
  79.                if(args[0].equalsIgnoreCase("setspawn")) {
  80.                    if(player.hasPermission("glarena.setspawn")) {
  81.                    if(args.length>1){  
  82.                    if(args[1].equalsIgnoreCase("1") || args[1].equalsIgnoreCase("2")) {    
  83.                    config.set("spawn"+args[1]+".world", player.getWorld().getName());
  84.                    config.set("spawn"+args[1]+".x", player.getLocation().getX());
  85.                    config.set("spawn"+args[1]+".y", player.getLocation().getY());
  86.                    config.set("spawn"+args[1]+".z", player.getLocation().getZ());
  87.                    saveConfig();
  88.                    if(args[1].equalsIgnoreCase("1")) player.sendMessage(mark+"Spawn for the first team set!");
  89.                    if(args[1].equalsIgnoreCase("2")) player.sendMessage(mark+"Spawn for the second team set!");
  90.                    } else player.sendMessage(ChatColor.RED+"Usage: /glarena setspawn <1 or 2>");
  91.                    } else player.sendMessage(ChatColor.RED+"Usage: /glarena setspawn <1 or 2>");
  92.                    } else player.sendMessage(ChatColor.RED+"You don't have permissions!");
  93.                }
  94.                
  95.                if(args[0].equalsIgnoreCase("enable")) {
  96.                    if(player.hasPermission("glarena.enable")) {
  97.                     isEnabled="yes";
  98.                     Bukkit.broadcastMessage(mark+"Gladiatorial arena gaining "+String.valueOf(gladiators.length)+" gladiators! Sign up: /glarena register");
  99.                    } else player.sendMessage(ChatColor.RED+"You don't have permissions!");
  100.                }
  101.                    
  102.                if(args[0].equalsIgnoreCase("disable")) {
  103.                    if(player.hasPermission("glarena.disable")) {
  104.                     isEnabled="no";
  105.                     Bukkit.broadcastMessage(mark+"Gladiatorial arena disabled! Gladiators need a break :)");
  106.                    } else player.sendMessage(ChatColor.RED+"You don't have permissions!");
  107.                }
  108.                    
  109.                
  110.            
  111.                
  112.                
  113.                
  114.                if(args[0].equalsIgnoreCase("register")) {
  115.                    if(player.hasPermission("glarena.register")) {  
  116.                     if(config.contains("spawn1.world") & config.contains("spawn2.world")) {
  117.                    if(isEnabled=="yes") {
  118.                    if(isStarted=="no") {
  119.                 if(isArenaRegistered(player.getName())) {  
  120.  
  121.                    gladiators[glcount]=player.getName();
  122.                    Bukkit.broadcastMessage(mark+player.getName()+" signed to Gl. Arena!");
  123.                    
  124.                    if(glcount==(gladiators.length-1)){
  125.                        
  126.                        Bukkit.broadcastMessage(mark+"Gladiatorial battle started!");
  127.                        isStarted="yes";
  128.                        GladLifed=gladiators.length;
  129.                        
  130.                        //Старт игры
  131.                        int kpl=0;
  132.                        kpl=((gladiators.length)/2)-1;
  133.                        FTeam=kpl+1;
  134.                        STeam=kpl+1;
  135.                        
  136.                        for(int i=0; i<=kpl; i++) { // Первая команда
  137.                            Location spawn1 = new Location(Bukkit.getWorld(config.getString("spawn1.world")),config.getInt("spawn1.x"),config.getInt("spawn1.y"),config.getInt("spawn1.z"));
  138.                            Bukkit.getPlayerExact(gladiators[i]).teleport(spawn1);
  139.                            Bukkit.getPlayerExact(gladiators[i]).sendMessage(mark+"You in first team!");
  140.                            config.set(gladiators[i], 1);
  141.                            saveConfig();
  142.                            FTeamPl[i]=gladiators[i];
  143.                            STeamPl[i]=gladiators[i+(kpl+1)];
  144.                            GiveStartKit(gladiators[i]);
  145.                        }
  146.                        
  147.                        for(int i=(kpl+1); i<=(gladiators.length-1); i++) { // Вторая команда
  148.                            Location spawn2 = new Location(Bukkit.getWorld(config.getString("spawn2.world")),config.getInt("spawn2.x"),config.getInt("spawn2.y"),config.getInt("spawn2.z"));
  149.                            Bukkit.getPlayerExact(gladiators[i]).teleport(spawn2);
  150.                            Bukkit.getPlayerExact(gladiators[i]).sendMessage(mark+"You in second team");
  151.                            config.set(gladiators[i], 2);
  152.                            saveConfig();
  153.                            GiveStartKit(gladiators[i]);
  154.                        }
  155.  
  156.                      
  157.                        
  158.                    } else Bukkit.broadcastMessage(mark+"To start left "+((gladiators.length-1)-(glcount))+" people!");
  159.  
  160.                    
  161.                    glcount++;
  162.                    
  163.                 } else player.sendMessage(ChatColor.RED+"You have already registered in the arena!");  
  164.                    } else player.sendMessage(ChatColor.RED+"Arena is already started!");
  165.                    } else player.sendMessage(ChatColor.RED+"Arena is off, come later!");
  166.                     } else player.sendMessage(ChatColor.RED+"No find spawn points from teams!");
  167.                } else player.sendMessage(ChatColor.RED+"You don't have permissons!");
  168.                }
  169.                
  170.                
  171.                
  172.                
  173.                
  174.            }
  175.            
  176.            }
  177.        return false;    
  178.      }
  179.    
  180.    
  181.      public boolean isArenaRegistered(String p) {
  182.          String prov = "net";
  183.          for(int i=0;i<(gladiators.length-1);i++){
  184.             if(gladiators[i]==p) {
  185.                 prov = "da";
  186.             }
  187.          }
  188.          
  189.          if(prov=="da") { return false;
  190.          } else { return true; }     
  191.      }
  192.      
  193.      
  194.      //Работа с эвентами
  195.      
  196.      
  197.      @EventHandler
  198.      public void onDamage(EntityDamageByEntityEvent evt) {
  199.     if((evt.getEntityType().toString().equals("PLAYER")) & (evt.getDamager().getType().name().equals("PLAYER"))) {
  200.         Player damager = (Player)evt.getDamager();
  201.         Player player = (Player)evt.getEntity();
  202.         if((config.contains(damager.getName())) & (config.contains(player.getName()))) {
  203.         if( config.getInt(damager.getName())==config.getInt(player.getName()) ) { damager.sendMessage(mark+"You can not damage a player from your team!"); evt.setCancelled(true); }   
  204.         }
  205.        
  206.     }
  207.      }
  208.      
  209.      
  210.      @EventHandler
  211.      public void onDeath(PlayerDeathEvent evt) {
  212.      Player player = evt.getEntity();
  213.  
  214.      if (config.contains(player.getName())) {
  215.          
  216.          //Эффекты
  217.          player.getWorld().strikeLightningEffect(player.getLocation());
  218.          SendComMess(0,mark+"Gladiator "+player.getName()+" died!");
  219.          
  220.          evt.setDroppedExp(0);
  221.          evt.getDrops().clear();
  222.          GladLifed--;
  223.          int PlComand = config.getInt(player.getName());
  224.          config.set(player.getName(), null);
  225.          saveConfig();
  226.          if(PlComand==1) FTeam--;
  227.          if(PlComand==2) STeam--;
  228.          
  229.          if(FTeam==0 || STeam==0) {
  230.              //Конец игры
  231.              
  232.             if(STeam==0) { // Если первая команда вин
  233.                 Bukkit.broadcastMessage(mark+"First team won in the arena, congratulations!");
  234.                 for(int i=0;i<=(FTeamPl.length-1);i++) {
  235.                 //Выдача предметов (FTeamPl[i]) 
  236.                     Bukkit.getPlayerExact(FTeamPl[i]).teleport(Bukkit.getPlayerExact(FTeamPl[i]).getWorld().getSpawnLocation());
  237.                     Bukkit.getPlayerExact(FTeamPl[i]).getInventory().clear();
  238.                     for(int b=0;b<3;b++) {
  239.                         ItemStack item = new ItemStack(Material.getMaterial(config.getInt( ("kits.winkit.item"+String.valueOf(b)) )),config.getInt("kits.winkit.item"+String.valueOf(b)+"count", 1));
  240.                         Bukkit.getPlayerExact(FTeamPl[i]).getInventory().addItem(item);
  241.                     }
  242.                 }
  243.             }
  244.            
  245.             if(FTeam==0) { // Если вторая команда вин
  246.                 Bukkit.broadcastMessage(mark+"Second team won in the arena, congratulations!");
  247.                 for(int i=0;i<=(STeamPl.length-1);i++) {
  248.                 //Выдача предметов (STeamPl[i]) 
  249.                     Bukkit.getPlayerExact(STeamPl[i]).teleport(Bukkit.getPlayerExact(STeamPl[i]).getWorld().getSpawnLocation());
  250.                     Bukkit.getPlayerExact(STeamPl[i]).getInventory().clear();  
  251.                     for(int c=0;c<3;c++) {
  252.                         ItemStack item = new ItemStack(Material.getMaterial(config.getInt( ("kits.winkit.item"+String.valueOf(c)) )),config.getInt("kits.winkit.item"+String.valueOf(c)+"count", 1));
  253.                         Bukkit.getPlayerExact(STeamPl[i]).getInventory().addItem(item);
  254.                     }
  255.                 }
  256.             }
  257.              
  258.              for(int i=0;i<=(gladiators.length-1);i++) {
  259.              config.set(gladiators[i], null);    
  260.              gladiators[i]=null;  
  261.              }
  262.              for(int i=0;i<=(FTeamPl.length-1);i++) {
  263.              FTeamPl[i]=null;
  264.              STeamPl[i]=null;    
  265.              }
  266.              
  267.              glcount=0;
  268.              GladLifed=0;
  269.              isStarted="no";
  270.              FTeam=0;
  271.              STeam=0;
  272.              saveConfig();
  273.              
  274.              Bukkit.broadcastMessage(mark+"Gladiatorial arena gaining "+String.valueOf(gladiators.length)+" gladiators! Sign up: /glarena register");
  275.          }
  276.      }
  277.      
  278.      }
  279.      
  280.      
  281.      public void GiveStartKit(String p) {
  282.         Player player = Bukkit.getPlayerExact(p);
  283.         player.getInventory().clear();
  284.         player.setHealth(20);
  285.        
  286.         for(int i=0;i<8;i++) {
  287.             ItemStack item = new ItemStack(Material.getMaterial(config.getInt( ("kits.startkit.item"+String.valueOf(i)) )),config.getInt("kits.startkit.item"+String.valueOf(i)+"count", 1));
  288.             player.getInventory().addItem(item);
  289.         }
  290.          
  291.      }
  292.      
  293.      public void SendComMess(int com,String m) {
  294.          if(com==1) { //Первой тиме
  295.              for(int i=0;i<=(FTeamPl.length-1);i++) Bukkit.getPlayerExact(FTeamPl[i]).sendMessage(m);    
  296.          }
  297.          if(com==2) { //Второй тиме
  298.              for(int i=0;i<=(STeamPl.length-1);i++) Bukkit.getPlayerExact(STeamPl[i]).sendMessage(m);    
  299.          }
  300.          if(com==0) { //Обоим тимам
  301.              for(int i=0;i<=(FTeamPl.length-1);i++) Bukkit.getPlayerExact(FTeamPl[i]).sendMessage(m);
  302.              for(int i=0;i<=(STeamPl.length-1);i++) Bukkit.getPlayerExact(STeamPl[i]).sendMessage(m);
  303.          }
  304.      }
  305.      
  306.      
  307.      
  308.      @EventHandler
  309.      public void onQuit(PlayerQuitEvent evt) { //Защита от выхода, когда на арене
  310.          if (config.contains(evt.getPlayer().getName())) evt.getPlayer().setHealth(0);
  311.      }
  312.      
  313.      
  314.      
  315. }
Advertisement
Add Comment
Please, Sign In to add comment