Bukkit团队循环数组/列表Java

Bukkit团队循环数组/列表Java,java,arrays,Java,Arrays,我对Java数组列表和循环有一个小问题。 所以,在游戏中有两名球员,但显示在红队是一名球员,在蓝队是两名球员 谁费心这么做 下面是开始使用团队类的代码 EggWars.java package godplay.vimikro.eggwars; import org.bukkit.Bukkit; import org.bukkit.ChatColor; import org.bukkit.Effect; import org.bukkit.Instrument; import org.bukk

我对Java数组列表和循环有一个小问题。 所以,在游戏中有两名球员,但显示在红队是一名球员,在蓝队是两名球员

谁费心这么做

下面是开始使用团队类的代码

EggWars.java

package godplay.vimikro.eggwars;

import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.Effect;
import org.bukkit.Instrument;
import org.bukkit.Location;
import org.bukkit.Material;
import org.bukkit.Note;
import org.bukkit.Sound;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.entity.CreatureSpawnEvent;
import org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason;
import org.bukkit.event.entity.PlayerDeathEvent;
import org.bukkit.event.player.PlayerJoinEvent;
import org.bukkit.event.player.PlayerRespawnEvent;
import org.bukkit.inventory.ItemStack;
import org.bukkit.plugin.Plugin; 
import org.bukkit.scheduler.BukkitRunnable;

import com.connorlinfoot.titleapi.TitleAPI;

import lt.ekgame.framework.Framework;
import lt.ekgame.framework.events.StandartEvents;
import lt.ekgame.framework.managers.MinigameManager;
import lt.nogalosa.database.GodPlayXP;

public class EggWars extends MinigameManager implements Listener{

/*
 * TODO SĄRAŠAS
 * kai viena komanda numiršta laimi kita komanda ! MID
 * Padaryti, kad kiekvienas žaidėjas turėtų 3 gyvybes ! MID
 * Padaryti, kad neduotų damage savai komandai ! MID
 * Padaryti spalvotus NameTagus ! DIFFICULT
 * Padaryti komandų spawn vietas ! EASY
 */

Plugin plugin;

boolean inCount = false;
int countdown = 30;
int team_won = 0;
StandartEvents settings;
String faze = "start";

public EggWars(Plugin plugin){
    this.plugin = plugin;
    Bukkit.getPluginManager().registerEvents(this, plugin);
    settings = Framework.getGameSettings();
    settings.allowBlockManipulation(false);
    settings.allowDropItems(false);
    settings.allowManipulateInventory(false);
    settings.allowPVP(false);
    settings.canPlayersTakeDamage(true);
    settings.canPlayersTakeFallDamage(false);
    settings.setUseFood(false);
    settings.setForceRespawn(true);
    settings.clearInventoryOnJoin(true);
    settings.allowBreakBlock(false);
}

@EventHandler
public void onPlayerJoin(PlayerJoinEvent event) {
    event.getPlayer().sendMessage(ChatColor.DARK_RED + "Sveiki atvykę į Minigame - EggWars");
    event.getPlayer().sendMessage(ChatColor.GOLD + "Linkime gerai praleisti laiką!");
    TitleAPI.sendTitle(event.getPlayer(), 2,5, 2, ChatColor.RED + "EggWars", ChatColor.YELLOW + "Sveiki, " + event.getPlayer().getName());

    //COUNTDOWN
    if (Bukkit.getOnlinePlayers().size() >= 2 && !inCount) {
        inCount = true;
        Bukkit.broadcastMessage(ChatColor.GOLD + "Žaidime surinkta pakankamai žaidėjų! Pradedam skaičiavimą");
        new BukkitRunnable(){
            public void run(){
                for(Player pl : Bukkit.getOnlinePlayers()){
                    pl.setLevel(countdown);
                }

                if(countdown <= 10 && faze.equals("start")) {
                    Bukkit.broadcastMessage("" + ChatColor.RED + "IKI STARTO LIKO " + countdown + " SEK.");
                    for(Player pl : Bukkit.getOnlinePlayers()){
                        Location location = pl.getLocation();
                        pl.playSound(location,Sound.ITEM_PICKUP,1, 1);
                        location.getWorld().playEffect(location, Effect.MOBSPAWNER_FLAMES, 2004);
                        pl.playNote(location, Instrument.PIANO, new Note(1));
                    }
                }

                if(countdown == 0 && faze.equals("start")){
                    countdown = 60;
                    faze = "game";
                    settings.allowPVP(true);
                    Team.clearTeams();

                    for(Player pl : Bukkit.getOnlinePlayers()) {
                        int i = 1;
                        if(i < Bukkit.getOnlinePlayers().size()) {
                            if(Team.getBlueTeam().size() > Team.getRedTeam().size()) {
                                Team.addToTeam(TeamType.RAUDONA, pl);
                                Bukkit.broadcastMessage("RAUDONA " + pl.getName());
                            } else {
                                Team.addToTeam(TeamType.MELYNA, pl);
                                Bukkit.broadcastMessage("MĖLYNA " + pl.getName());
                            }
                        }
                        i++;
                    }

                    Location location = new Location(Bukkit.getOnlinePlayers().iterator().next().getWorld(), -35, 64, -33);

                    for(Player pl : Bukkit.getOnlinePlayers()){
                        pl.teleport(location);
                        pl.getInventory().addItem(new ItemStack(Material.EGG, 16));
                        pl.getInventory().addItem(new ItemStack(Material.IRON_SWORD, 1));

                        Location loc = pl.getLocation();
                        pl.playSound(loc,Sound.EXPLODE,1, 1);
                        loc.getWorld().playEffect(loc, Effect.FIREWORKS_SPARK, 2004);
                    }

                    TitleAPI.sendTitle(event.getPlayer(), 2,5, 2, ChatColor.RED + "Pradedame žaidimą!", ChatColor.YELLOW + "Jūs turite 3 gyvybes");
                }

                if(countdown <= 10 && faze.equals("game")) {
                    for(Player pl : Bukkit.getOnlinePlayers()){
                        Location location = pl.getLocation();
                        pl.playSound(location,Sound.ITEM_PICKUP,1, 1);
                        location.getWorld().playEffect(location, Effect.MOBSPAWNER_FLAMES, 2004);
                        pl.playNote(location, Instrument.PIANO, new Note(1));
                    }
                }

                if(countdown == 0 && faze.equals("game")){
                    countdown = 20;
                    faze = "done";
                    for(Player pl : Bukkit.getOnlinePlayers()){
                        Location loc = pl.getLocation();
                        pl.playSound(loc,Sound.EXPLODE,1, 1);
                        loc.getWorld().playEffect(loc, Effect.FIREWORKS_SPARK, 2004);
                    }

                    settings.allowPVP(false);

                    if (team_won == 1) {
                        TitleAPI.sendTitle(event.getPlayer(), 2,5, 2, ChatColor.RED + "Žaidimas baigėsi!", ChatColor.YELLOW + "Laimėjo RAUDONA komanda");
                        Bukkit.broadcastMessage(ChatColor.GREEN + "Žaidimas baigtas. Laimėjo RAUDONA komanda! Jiems atitenka po 10 XP");
                    } else if (team_won == 2) {
                        TitleAPI.sendTitle(event.getPlayer(), 2,5, 2, ChatColor.BLUE + "Žaidimas baigėsi!", ChatColor.YELLOW + "Laimėjo MĖLYNA komanda");
                        Bukkit.broadcastMessage(ChatColor.GREEN + "Žaidimas baigtas. Laimėjo MĖLYNA komanda! Jiems atitenka po 10 XP");
                    } else if (Team.getRedTeam().size() == Team.getBlueTeam().size()) {
                        TitleAPI.sendTitle(event.getPlayer(), 2,5, 2, ChatColor.GREEN + "Žaidimas baigėsi!", ChatColor.YELLOW + "LYGIOSIOS");
                        Bukkit.broadcastMessage(ChatColor.GREEN + "Žaidimas baigtas. Lygiosios! Visi gaunate po 5 XP");
                    } else if (Team.getRedTeam().size() > Team.getBlueTeam().size()) {
                        TitleAPI.sendTitle(event.getPlayer(), 2,5, 2, ChatColor.RED + "Žaidimas baigėsi!", ChatColor.YELLOW + "Laimėjo RAUDONA komanda");
                        Bukkit.broadcastMessage(ChatColor.GREEN + "Žaidimas baigtas. Laimėjo RAUDONA komanda! Jiems atitenka po 10 XP");
                    } else if (Team.getRedTeam().size() < Team.getBlueTeam().size()) {
                        TitleAPI.sendTitle(event.getPlayer(), 2,5, 2, ChatColor.BLUE + "Žaidimas baigėsi!", ChatColor.YELLOW + "Laimėjo MĖLYNA komanda");
                        Bukkit.broadcastMessage(ChatColor.GREEN + "Žaidimas baigtas. Laimėjo MĖLYNA komanda! Jiems atitenka po 10 XP");
                    }
                }

                if(countdown <= 5 && faze.equals("done")) {
                    Bukkit.broadcastMessage("" + ChatColor.RED + "IKI PERKROVIMO LIKO " + countdown + " SEK.");
                    for(Player pl : Bukkit.getOnlinePlayers()){
                        Location location = pl.getLocation();
                        pl.playSound(location,Sound.ITEM_PICKUP,1, 1);
                        location.getWorld().playEffect(location, Effect.MOBSPAWNER_FLAMES, 2004);
                        pl.playNote(location, Instrument.PIANO, new Note(1));
                    }
                }

                if(countdown == 0 && faze.equals("done")) {
                    Bukkit.broadcastMessage("" + ChatColor.RED + "Serveris perkraunamas");
                    Bukkit.shutdown();
                }


                countdown--;
            }
        }.runTaskTimer(plugin, 20, 20);
    }
}

@EventHandler
public void onEntityDeath(PlayerRespawnEvent event){
    Location location = new Location(event.getPlayer().getWorld(), -13, 64, -32);
    event.setRespawnLocation(location);
}

@EventHandler
public void onEntityDeath(PlayerDeathEvent event) {
    if(faze.equals("game")){
        event.setDeathMessage(ChatColor.RED + event.getEntity().getKiller().getName() + " sudegė " + event.getEntity().getName() + "!");
        GodPlayXP.addXP(event.getEntity().getKiller().getName(), 5);

        if(Team.removeFromTeam(event.getEntity()))
            Bukkit.broadcastMessage("Išėjo pratrint");
        else
            Bukkit.broadcastMessage("Nepaėjo varkė");   

        Bukkit.broadcastMessage(ChatColor.GRAY + "Liko " + Team.getRedTeam().size() + " RAUDONŲ, " + Team.getBlueTeam().size() + " MĖLYNŲ!");
    }

    if(faze.equals("game")) {
        if(Team.getRedTeam().size() == 0) {
            countdown = 0;
            team_won = 1;
        } else if(Team.getBlueTeam().size() == 0) {
            countdown = 0;
            team_won = 2;
        }
    }
}

@EventHandler
public void onCreatureSpawn(CreatureSpawnEvent event)
{
    if (event.getSpawnReason() == SpawnReason.EGG)
    {
        event.setCancelled(true);
    }
}

}
package godplay.vimikro.eggwars;
导入org.bukkit.bukkit;
导入org.bukkit.ChatColor;
导入org.bukkit.Effect;
导入org.bukkit.Instrument;
导入org.bukkit.Location;
导入org.bukkit.Material;
导入org.bukkit.Note;
导入org.bukkit.Sound;
导入org.bukkit.entity.Player;
导入org.bukkit.event.EventHandler;
导入org.bukkit.event.Listener;
导入org.bukkit.event.entity.CreatureSpawnEvent;
导入org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason;
导入org.bukkit.event.entity.PlayerDeathEvent;
导入org.bukkit.event.player.PlayerJoinEvent;
导入org.bukkit.event.player.PlayerRespawnEvent;
导入org.bukkit.inventory.ItemStack;
导入org.bukkit.plugin.plugin;
导入org.bukkit.scheduler.bukkitrunable;
导入com.connorlinfot.titleapi.titleapi;
导入lt.ekgame.framework.framework;
导入lt.ekgame.framework.events.StandartEvents;
导入lt.ekgame.framework.managers.MinigameManager;
导入lt.nogalosa.database.GodPlayXP;
公共类EggWars扩展MinigameManager实现侦听器{
/*
*托多·SĄRAŠAS
*凯维娜·科曼达·努米尔·塔莱米·科曼达!中
*Padaryti,kad kiekvienasžaidėjas turėtų3 gyvybes!中
*Padaryti,kad neduotųsavai komandai!中
*Padaryti spalvotus NameTagus!困难
*Padaryti komandų产卵vietas!轻松
*/
插件;
布尔计数=假;
整数倒计时=30;
国际队赢得=0;
标准设置;
字符串faze=“开始”;
公共EggWars(插件){
this.plugin=plugin;
Bukkit.getPluginManager().registerEvents(这个插件);
设置=Framework.getGameSettings();
设置。allowBlockManipulation(false);
设置。allowDropItems(false);
设置。allowManipulateInventory(false);
settings.allowvp(false);
设置。CanPlayerTakeDamage(真);
设置。CanPlayerTakeFallDamage(假);
settings.setUseFood(false);
设置。setForceRespawn(真);
设置。clearInventoryOnJoin(true);
设置。allowBreakBlock(false);
}
@事件处理程序
PlayerJoin上的公共无效(PlayerJoinEvent事件){
event.getPlayer().sendMessage(ChatColor.DARK_RED+“Sveiki atvykęįMinigame-EggWars”);
event.getPlayer().sendMessage(ChatColor.GOLD+“Linkime gerai praleisti laiką!”;
TitleAPI.sendTitle(event.getPlayer(),2,5,2,ChatColor.RED+“EggWars”,ChatColor.YELLOW+“Sveiki,”+event.getPlayer().getName());
//倒计时
if(Bukkit.getOnlinePlayer().size()>=2&&!inCount){
inCount=true;
Bukkit.broadcastMessage(ChatColor.GOLD+“aidime surinkta pakankamaižaidųjų!Pradedam skaičiavimą”);
新的bukkitrunable(){
公开募捐{
for(Player pl:Bukkit.getOnlinePlayer()){
pl.setLevel(倒计时);
}
if(倒计时团队.getRedTeam().size()){
Team.addToTeam(TeamType.RAUDONA,pl);
Bukkit.broadcastMessage(“RAUDONA”+pl.getName());
}否则{
Team.addToTeam(TeamType.MELYNA,pl);
Bukkit.broadcastMessage(“MĖLYNA”+pl.getName());
}
}
i++;
}
Location Location=新位置(Bukkit.getOnlinePlayer().iterator().next().getWorld(),-35,64,-33);
for(Player pl:Bukkit.getOnlinePlayer()){
pl.远程传送(位置);
pl.getInventory().addItem(新项堆栈(Material.EGG,16));
pl.getInventory().addItem(新项目堆栈(Material.IRON_-swill,1));
Location loc=pl.getLocation();
播放声音(位置,声音爆炸,1,1);
loc.getWorld().游戏效果(loc,Effect.FIREWORKS_SPARK,2004);
}
TitleAPI.sendTitle(event.getPlayer(),2,5,2,ChatColor.RED+“Pradedamežaidimą!”,ChatColor.YELLOW+“Jūs turite 3 gyvybes”);
}
if(倒计时团队.getBlueTeam().size()){
TitleAPI.sendTitle(event.getPlayer(),2,5,2,ChatColor.RED+“aidimas baigėsi!”,ChatColor.YELLOW+“Laimėjo RAUDONA komanda”);
Bukkit.broadcastMessage(ChatColor.GREEN+“aidimas baigtas.Laimėjo RAUDONA komanda!Jiems atitenka po 10 XP”);
}else if(Team.getRedTeam().size()如果(倒计时问题出在您的switch语句中。您缺少一个中断,因此当type为
RAUDONA
时,
player.getName()
将添加到两个团队:

switch(type) {
    case RAUDONA:
        redTeam.add(player.getName());
        break; // add this
    case MELYNA:
        blueTeam.add(player.getName());
        break; // and this
}

非常感谢:)我的回答总是太慢:-)太多的代码。还有一个副本
switch(type) {
    case RAUDONA:
        redTeam.add(player.getName());
        break; // add this
    case MELYNA:
        blueTeam.add(player.getName());
        break; // and this
}