Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package ru.babon.bukkit.gladiatorarena;
- import java.io.IOException;
- import org.bukkit.*;
- import org.bukkit.command.Command;
- import org.bukkit.command.CommandSender;
- import org.bukkit.configuration.file.FileConfiguration;
- import org.bukkit.entity.Player;
- import org.bukkit.event.EventHandler;
- import org.bukkit.event.Listener;
- import org.bukkit.event.entity.EntityDamageByEntityEvent;
- import org.bukkit.event.entity.PlayerDeathEvent;
- import org.bukkit.event.player.PlayerQuitEvent;
- import org.bukkit.inventory.ItemStack;
- import org.bukkit.plugin.java.JavaPlugin;
- import org.mcstats.Metrics;
- public class Arena extends JavaPlugin implements Listener {
- private FileConfiguration config;
- int glcount=0;
- String gladiators[];
- String FTeamPl[];
- String STeamPl[];
- String isStarted = "no";
- String isEnabled = "no";
- int GladLifed = 0;
- int FTeam = 0;
- int STeam = 0;
- String mark = ChatColor.GOLD+"[GlArena] "+ChatColor.GREEN;
- @Override
- public void onEnable() {
- config=getConfig();
- Bukkit.getPluginManager().registerEvents(this, this);
- if(!config.contains("GladiatorsCount")) config.set("GladiatorsCount", 2);
- 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); } }
- 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); } }
- gladiators = new String[config.getInt("GladiatorsCount")];
- FTeamPl = new String[(gladiators.length/2)];
- STeamPl = new String[(gladiators.length/2)];
- saveConfig();
- //Метрика
- try {
- Metrics metrics = new Metrics(this);
- metrics.start();
- } catch (IOException e) {
- // Failed to submit the stats :-(
- }
- }
- @Override
- public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
- if(command.getName().equalsIgnoreCase("glarena")){
- Player player = (Player)sender;
- if(args.length==0) {
- player.sendMessage(mark+"Commands from GlArena:\n" +
- "/glarena enable - Enable arena\n" +
- "/glarena disable - Disable arena\n" +
- "/glarena setspawn <1/2> - Set spawn from first/second team\n" +
- "/glarena register - Registers a player to the arena\n");
- }
- if(args.length>0){
- if(args[0].equalsIgnoreCase("setspawn")) {
- if(player.hasPermission("glarena.setspawn")) {
- if(args.length>1){
- if(args[1].equalsIgnoreCase("1") || args[1].equalsIgnoreCase("2")) {
- config.set("spawn"+args[1]+".world", player.getWorld().getName());
- config.set("spawn"+args[1]+".x", player.getLocation().getX());
- config.set("spawn"+args[1]+".y", player.getLocation().getY());
- config.set("spawn"+args[1]+".z", player.getLocation().getZ());
- saveConfig();
- if(args[1].equalsIgnoreCase("1")) player.sendMessage(mark+"Spawn for the first team set!");
- if(args[1].equalsIgnoreCase("2")) player.sendMessage(mark+"Spawn for the second team set!");
- } else player.sendMessage(ChatColor.RED+"Usage: /glarena setspawn <1 or 2>");
- } else player.sendMessage(ChatColor.RED+"Usage: /glarena setspawn <1 or 2>");
- } else player.sendMessage(ChatColor.RED+"You don't have permissions!");
- }
- if(args[0].equalsIgnoreCase("enable")) {
- if(player.hasPermission("glarena.enable")) {
- isEnabled="yes";
- Bukkit.broadcastMessage(mark+"Gladiatorial arena gaining "+String.valueOf(gladiators.length)+" gladiators! Sign up: /glarena register");
- } else player.sendMessage(ChatColor.RED+"You don't have permissions!");
- }
- if(args[0].equalsIgnoreCase("disable")) {
- if(player.hasPermission("glarena.disable")) {
- isEnabled="no";
- Bukkit.broadcastMessage(mark+"Gladiatorial arena disabled! Gladiators need a break :)");
- } else player.sendMessage(ChatColor.RED+"You don't have permissions!");
- }
- if(args[0].equalsIgnoreCase("register")) {
- if(player.hasPermission("glarena.register")) {
- if(config.contains("spawn1.world") & config.contains("spawn2.world")) {
- if(isEnabled=="yes") {
- if(isStarted=="no") {
- if(isArenaRegistered(player.getName())) {
- gladiators[glcount]=player.getName();
- Bukkit.broadcastMessage(mark+player.getName()+" signed to Gl. Arena!");
- if(glcount==(gladiators.length-1)){
- Bukkit.broadcastMessage(mark+"Gladiatorial battle started!");
- isStarted="yes";
- GladLifed=gladiators.length;
- //Старт игры
- int kpl=0;
- kpl=((gladiators.length)/2)-1;
- FTeam=kpl+1;
- STeam=kpl+1;
- for(int i=0; i<=kpl; i++) { // Первая команда
- Location spawn1 = new Location(Bukkit.getWorld(config.getString("spawn1.world")),config.getInt("spawn1.x"),config.getInt("spawn1.y"),config.getInt("spawn1.z"));
- Bukkit.getPlayerExact(gladiators[i]).teleport(spawn1);
- Bukkit.getPlayerExact(gladiators[i]).sendMessage(mark+"You in first team!");
- config.set(gladiators[i], 1);
- saveConfig();
- FTeamPl[i]=gladiators[i];
- STeamPl[i]=gladiators[i+(kpl+1)];
- GiveStartKit(gladiators[i]);
- }
- for(int i=(kpl+1); i<=(gladiators.length-1); i++) { // Вторая команда
- Location spawn2 = new Location(Bukkit.getWorld(config.getString("spawn2.world")),config.getInt("spawn2.x"),config.getInt("spawn2.y"),config.getInt("spawn2.z"));
- Bukkit.getPlayerExact(gladiators[i]).teleport(spawn2);
- Bukkit.getPlayerExact(gladiators[i]).sendMessage(mark+"You in second team");
- config.set(gladiators[i], 2);
- saveConfig();
- GiveStartKit(gladiators[i]);
- }
- } else Bukkit.broadcastMessage(mark+"To start left "+((gladiators.length-1)-(glcount))+" people!");
- glcount++;
- } else player.sendMessage(ChatColor.RED+"You have already registered in the arena!");
- } else player.sendMessage(ChatColor.RED+"Arena is already started!");
- } else player.sendMessage(ChatColor.RED+"Arena is off, come later!");
- } else player.sendMessage(ChatColor.RED+"No find spawn points from teams!");
- } else player.sendMessage(ChatColor.RED+"You don't have permissons!");
- }
- }
- }
- return false;
- }
- public boolean isArenaRegistered(String p) {
- String prov = "net";
- for(int i=0;i<(gladiators.length-1);i++){
- if(gladiators[i]==p) {
- prov = "da";
- }
- }
- if(prov=="da") { return false;
- } else { return true; }
- }
- //Работа с эвентами
- @EventHandler
- public void onDamage(EntityDamageByEntityEvent evt) {
- if((evt.getEntityType().toString().equals("PLAYER")) & (evt.getDamager().getType().name().equals("PLAYER"))) {
- Player damager = (Player)evt.getDamager();
- Player player = (Player)evt.getEntity();
- if((config.contains(damager.getName())) & (config.contains(player.getName()))) {
- if( config.getInt(damager.getName())==config.getInt(player.getName()) ) { damager.sendMessage(mark+"You can not damage a player from your team!"); evt.setCancelled(true); }
- }
- }
- }
- @EventHandler
- public void onDeath(PlayerDeathEvent evt) {
- Player player = evt.getEntity();
- if (config.contains(player.getName())) {
- //Эффекты
- player.getWorld().strikeLightningEffect(player.getLocation());
- SendComMess(0,mark+"Gladiator "+player.getName()+" died!");
- evt.setDroppedExp(0);
- evt.getDrops().clear();
- GladLifed--;
- int PlComand = config.getInt(player.getName());
- config.set(player.getName(), null);
- saveConfig();
- if(PlComand==1) FTeam--;
- if(PlComand==2) STeam--;
- if(FTeam==0 || STeam==0) {
- //Конец игры
- if(STeam==0) { // Если первая команда вин
- Bukkit.broadcastMessage(mark+"First team won in the arena, congratulations!");
- for(int i=0;i<=(FTeamPl.length-1);i++) {
- //Выдача предметов (FTeamPl[i])
- Bukkit.getPlayerExact(FTeamPl[i]).teleport(Bukkit.getPlayerExact(FTeamPl[i]).getWorld().getSpawnLocation());
- Bukkit.getPlayerExact(FTeamPl[i]).getInventory().clear();
- for(int b=0;b<3;b++) {
- ItemStack item = new ItemStack(Material.getMaterial(config.getInt( ("kits.winkit.item"+String.valueOf(b)) )),config.getInt("kits.winkit.item"+String.valueOf(b)+"count", 1));
- Bukkit.getPlayerExact(FTeamPl[i]).getInventory().addItem(item);
- }
- }
- }
- if(FTeam==0) { // Если вторая команда вин
- Bukkit.broadcastMessage(mark+"Second team won in the arena, congratulations!");
- for(int i=0;i<=(STeamPl.length-1);i++) {
- //Выдача предметов (STeamPl[i])
- Bukkit.getPlayerExact(STeamPl[i]).teleport(Bukkit.getPlayerExact(STeamPl[i]).getWorld().getSpawnLocation());
- Bukkit.getPlayerExact(STeamPl[i]).getInventory().clear();
- for(int c=0;c<3;c++) {
- ItemStack item = new ItemStack(Material.getMaterial(config.getInt( ("kits.winkit.item"+String.valueOf(c)) )),config.getInt("kits.winkit.item"+String.valueOf(c)+"count", 1));
- Bukkit.getPlayerExact(STeamPl[i]).getInventory().addItem(item);
- }
- }
- }
- for(int i=0;i<=(gladiators.length-1);i++) {
- config.set(gladiators[i], null);
- gladiators[i]=null;
- }
- for(int i=0;i<=(FTeamPl.length-1);i++) {
- FTeamPl[i]=null;
- STeamPl[i]=null;
- }
- glcount=0;
- GladLifed=0;
- isStarted="no";
- FTeam=0;
- STeam=0;
- saveConfig();
- Bukkit.broadcastMessage(mark+"Gladiatorial arena gaining "+String.valueOf(gladiators.length)+" gladiators! Sign up: /glarena register");
- }
- }
- }
- public void GiveStartKit(String p) {
- Player player = Bukkit.getPlayerExact(p);
- player.getInventory().clear();
- player.setHealth(20);
- for(int i=0;i<8;i++) {
- ItemStack item = new ItemStack(Material.getMaterial(config.getInt( ("kits.startkit.item"+String.valueOf(i)) )),config.getInt("kits.startkit.item"+String.valueOf(i)+"count", 1));
- player.getInventory().addItem(item);
- }
- }
- public void SendComMess(int com,String m) {
- if(com==1) { //Первой тиме
- for(int i=0;i<=(FTeamPl.length-1);i++) Bukkit.getPlayerExact(FTeamPl[i]).sendMessage(m);
- }
- if(com==2) { //Второй тиме
- for(int i=0;i<=(STeamPl.length-1);i++) Bukkit.getPlayerExact(STeamPl[i]).sendMessage(m);
- }
- if(com==0) { //Обоим тимам
- for(int i=0;i<=(FTeamPl.length-1);i++) Bukkit.getPlayerExact(FTeamPl[i]).sendMessage(m);
- for(int i=0;i<=(STeamPl.length-1);i++) Bukkit.getPlayerExact(STeamPl[i]).sendMessage(m);
- }
- }
- @EventHandler
- public void onQuit(PlayerQuitEvent evt) { //Защита от выхода, когда на арене
- if (config.contains(evt.getPlayer().getName())) evt.getPlayer().setHealth(0);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment