Войти или зарегистрироваться
  • Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.

.

Статус
Закрыто для дальнейших ответов.
И снова здравствуйте нормальные девелоперы :D
Я тут решил разработать плагин, как всегда нужна помощь.
Суть в том что не работает загрузка данных из конфигов.
(Сообщение отладки не выводиться).
Не работает все именно после стоп-запуск.
Все остальное просьба не гадить, как умею так и пишу :D
JavaScript:
package ru.roboman.plugin.WarForFlag;

import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.Location;
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.block.BlockPlaceEvent;
import org.bukkit.plugin.java.JavaPlugin;

import java.util.ArrayList;
import java.util.Collections;

public class Solution extends JavaPlugin implements Listener
{

    protected FileConfiguration config;
    private Location locationOfRedFlag;
    private Location locationOfBlueFlag;
    private Location locationOfGreenFlag;
    private Location locationOfYellowFlag;

    @Override
    public void onEnable()
    {
        getServer().getPluginManager().registerEvents(this, this);
        config = getConfig();

        locationOfRedFlag.setX((Double) config.get("Location.RedFlag.X"));
        locationOfRedFlag.setY((Double) config.get("Location.RedFlag.Y"));
        locationOfRedFlag.setZ((Double) config.get("Location.RedFlag.Z"));
        locationOfRedFlag.getBlock().setTypeIdAndData(35, (byte) 14, true);

        locationOfBlueFlag.setX((Double) config.get("Location.BlueFlag.X"));
        locationOfBlueFlag.setY((Double) config.get("Location.BlueFlag.Y"));
        locationOfBlueFlag.setZ((Double) config.get("Location.BlueFlag.Z"));
        locationOfBlueFlag.getBlock().setTypeIdAndData(35, (byte) 11, true);

        locationOfGreenFlag.setX((Double) config.get("Location.GreenFlag.X"));
        locationOfGreenFlag.setY((Double) config.get("Location.GreenFlag.Y"));
        locationOfGreenFlag.setZ((Double) config.get("Location.GreenFlag.Z"));
        locationOfGreenFlag.getBlock().setTypeIdAndData(35, (byte) 5, true);

        locationOfYellowFlag.setX((Double) config.get("Location.YellowFlag.X"));
        locationOfYellowFlag.setY((Double) config.get("Location.YellowFlag.Y"));
        locationOfYellowFlag.setZ((Double) config.get("Location.YellowFlag.Z"));
        locationOfYellowFlag.getBlock().setTypeIdAndData(35, (byte) 4, true);
    }
Вы пытаетесь нулевым локациям задать координаты, надо использовать new Location(world, x, y ,z)
 
Вы пытаетесь нулевым локациям задать координаты, надо использовать new Location(world, x, y ,z)
Т.Е. вот это убрать?... И как-то по другому делать?..
JavaScript:
    private Location locationOfRedFlag;
    private Location locationOfBlueFlag;
    private Location locationOfGreenFlag;
    private Location locationOfYellowFlag;
 
Т.Е. вот это убрать?... И как-то по другому делать?..
JavaScript:
    private Location locationOfRedFlag;
    private Location locationOfBlueFlag;
    private Location locationOfGreenFlag;
    private Location locationOfYellowFlag;
Заменить строки setX, setY, setZ на строку new Location(world, x, y, z)
P.S. world можно взять методом Bukkit.getWorld(name)
 
Заменить строки setX, setY, setZ на строку new Location(world, x, y, z)
P.S. world можно взять методом Bukkit.getWorld(name)
Кажись понял, но вечером кодить не охота, завтра проверю)
Заменить строки setX, setY, setZ на строку new Location(world, x, y, z)
P.S. world можно взять методом Bukkit.getWorld(name)
Спасибо. Зароботалоооо :D
*Типо под кота Матроскина кошу*.
UPD: надо сделать чтоб:
Если игрок ломает блок, и Location этого блока совпадает с Location флага, выполнялся код BlockBreakEvent,
сейчас это выполняется при поломке любого блока! Что я делаю не так?
JavaScript:
package ru.roboman.plugin.WarForFlag;

import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.Location;
import org.bukkit.World;
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.block.BlockBreakEvent;
import org.bukkit.event.block.BlockPlaceEvent;
import org.bukkit.plugin.java.JavaPlugin;

import java.util.ArrayList;
import java.util.Collections;

public class Solution extends JavaPlugin implements Listener
{

    protected FileConfiguration config;
    private Location locationOfRedFlag;
    private Location locationOfBlueFlag;
    private Location locationOfGreenFlag;
    private Location locationOfYellowFlag;
    private int WinOfRed = 0;
    private int WinOfBlue = 0;
    private int WinOfGreen = 0;
    private int WinOfYellow = 0;
    String plugin = ChatColor.translateAlternateColorCodes('&', "&a&l[&c&lWar&1&lFor&2&lFlag&a&l] ");

    @Override
    public void onEnable()
    {
        getServer().getPluginManager().registerEvents(this, this);
        config = getConfig();

        locationOfRedFlag = new Location((World) Bukkit.getWorld((String) config.get("Location.RedFlag.World")), (Double) config.get("Location.RedFlag.X"), (Double) config.get("Location.RedFlag.Y"), (Double) config.get("Location.RedFlag.Z"));
        locationOfRedFlag.getBlock().setTypeIdAndData(35, (byte) 14, true);

        locationOfBlueFlag = new Location((World) Bukkit.getWorld((String) config.get("Location.BlueFlag.World")), (Double) config.get("Location.BlueFlag.X"), (Double) config.get("Location.BlueFlag.Y"), (Double) config.get("Location.BlueFlag.Z"));
        locationOfBlueFlag.getBlock().setTypeIdAndData(35, (byte) 11, true);

        locationOfGreenFlag = new Location((World) Bukkit.getWorld((String) config.get("Location.GreenFlag.World")), (Double) config.get("Location.GreenFlag.X"), (Double) config.get("Location.GreenFlag.Y"), (Double) config.get("Location.GreenFlag.Z"));
        locationOfGreenFlag.getBlock().setTypeIdAndData(35, (byte) 5, true);

        locationOfYellowFlag = new Location((World) Bukkit.getWorld((String) config.get("Location.YellowFlag.World")), (Double) config.get("Location.YellowFlag.X"), (Double) config.get("Location.YellowFlag.Y"), (Double) config.get("Location.YellowFlag.Z"));
        locationOfYellowFlag.getBlock().setTypeIdAndData(35, (byte) 4, true);
    }

    @Override
    public void onDisable()
    {
        saveConfig();
    }

    public boolean isTeamString(String team)
    {
        ArrayList<String> list = new ArrayList<String>();
        Collections.addAll(list, "red", "blue", "green", "yellow");
        for (int i = 0; i < list.size(); i++)
        {
            if (team.equalsIgnoreCase(list.get(i)))
            {
                return true;
            }
        }
        return false;
    }

    public int getRedWins() { return WinOfRed; }

    public int getBlueWins() { return WinOfBlue; }

    public int getGreenWins(){ return WinOfGreen; }

    public int getYellowWins() { return WinOfYellow; }

    public Location getLocationOfRedFlag() { return locationOfRedFlag; }

    public Location getLocationOfBlueFlag() { return locationOfBlueFlag; }

    public Location getLocationOfGreenFlag() { return locationOfGreenFlag; }

    public Location getLocationOfYellowFlag() { return locationOfYellowFlag; }

    public void setLocationOfRedFlag(Location location) { locationOfRedFlag = location; }

    public void setLocationOfBlueFlag(Location location) { locationOfBlueFlag = location; }

    public void setLocationOfGreenFlag(Location location) { locationOfGreenFlag = location; }

    public void setLocationOfYellowFlag(Location location) { locationOfYellowFlag = location; }

    @EventHandler
    public void onFlagPlaced(BlockPlaceEvent bpe)
    {
        Location locOfCheck = bpe.getBlock().getLocation();
        locOfCheck.setY(locOfCheck.getY()-1);
        if (locationOfRedFlag.equals(locOfCheck))
        {
            Bukkit.broadcastMessage(ChatColor.translateAlternateColorCodes('&', plugin + "&aКрасная команда принесла флаг на свою базу."));
            WinOfRed++;
        }

        if (locationOfBlueFlag.equals(locOfCheck))
        {
            Bukkit.broadcastMessage(ChatColor.translateAlternateColorCodes('&', plugin + "&aСиняя команда принесла флаг на свою базу."));
            WinOfBlue++;
        }

        if (locationOfGreenFlag.equals(locOfCheck))
        {
            Bukkit.broadcastMessage(ChatColor.translateAlternateColorCodes('&', plugin + "&aЗеленая команда принесла флаг на свою базу."));
            WinOfGreen++;
        }

        if (locationOfYellowFlag.equals(locOfCheck))
        {
            Bukkit.broadcastMessage(ChatColor.translateAlternateColorCodes('&', plugin + "&aЖелтая команда принесла флаг на свою базу."));
            WinOfYellow++;
        }
    }

    //Туто надо помочь!)
    @EventHandler
    public void onFlagBreaked(BlockBreakEvent bbe)
    {
        if (bbe.getBlock().getLocation().equals(locationOfRedFlag) && !locationOfRedFlag.equals(null) || bbe.getBlock().getLocation().equals(locationOfBlueFlag) && !locationOfBlueFlag.equals(null) || bbe.getBlock().getLocation().equals(locationOfGreenFlag)  && !locationOfGreenFlag.equals(null)|| bbe.getBlock().getLocation().equals(locationOfYellowFlag) && !locationOfYellowFlag.equals(null));
        {
            bbe.setCancelled(true);
            bbe.getBlock().breakNaturally();
            if (bbe.getBlock().getLocation().equals(locationOfRedFlag)) bbe.getBlock().setTypeIdAndData(35, (byte) 14, true);
            if (bbe.getBlock().getLocation().equals(locationOfBlueFlag)) bbe.getBlock().setTypeIdAndData(35, (byte) 11, true);
            if (bbe.getBlock().getLocation().equals(locationOfGreenFlag)) bbe.getBlock().setTypeIdAndData(35, (byte) 5, true);
            if (bbe.getBlock().getLocation().equals(locationOfYellowFlag)) bbe.getBlock().setTypeIdAndData(35, (byte) 4, true);
        }
    }


    @Override
    public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args)
    {
        Player player = null;
        if (sender instanceof Player)
        {
            player = (Player) sender;

            if (cmd.getName().equalsIgnoreCase("WFF"))
            {

                if (args.length == 0)
                {
                    player.sendMessage(ChatColor.translateAlternateColorCodes('&', plugin + "&aИспользование команды&0: &5/WFF <команда> <аргументы>"));
                }

                else
                {

                    if (args.length == 1 && isTeamString(args[0]))
                    {

                        if (args[0].equalsIgnoreCase("red"))
                        {
                            Bukkit.broadcastMessage(ChatColor.translateAlternateColorCodes('&', plugin + "&aФлагов забрано&a: &c" + WinOfRed));
                        }

                        if (args[0].equalsIgnoreCase("blue"))
                        {
                            Bukkit.broadcastMessage(ChatColor.translateAlternateColorCodes('&', plugin + "&aФлагов забрано&a: &c" + WinOfBlue));
                        }

                        if (args[0].equalsIgnoreCase("green"))
                        {
                            Bukkit.broadcastMessage(ChatColor.translateAlternateColorCodes('&', plugin + "&aФлагов забрано&a: &c" + WinOfGreen));
                        }

                        if (args[0].equalsIgnoreCase("yellow"))
                        {
                            Bukkit.broadcastMessage(ChatColor.translateAlternateColorCodes('&', plugin + "&aФлагов забрано&a: &c" + WinOfYellow));
                        }

                    }

                    if (args.length == 1 && args[0].equals("stats"))
                    {
                        Bukkit.broadcastMessage(ChatColor.translateAlternateColorCodes('&', plugin + "&aСтатистика: красная команда: [" + WinOfRed + "&a], синяя: [" + WinOfBlue + "&a], зеленая: [" + WinOfGreen + "&a], желтая: [" + WinOfYellow + "&a]."));
                    }

                    if (args.length == 2 && isTeamString(args[0]) && player.hasPermission("warforflag.admin"))
                    {

                        if (args[1].equalsIgnoreCase("setFlag"))
                        {

                            if (args[0].equalsIgnoreCase("red"))
                            {
                                player.getTargetBlock(null, 32).setTypeIdAndData(35, (byte) 14, true);
                                locationOfRedFlag = player.getTargetBlock(null, 32).getLocation();
                                config.set("Location.RedFlag.X", player.getTargetBlock(null, 32).getLocation().getX());
                                config.set("Location.RedFlag.Y", player.getTargetBlock(null, 32).getLocation().getY());
                                config.set("Location.RedFlag.Z", player.getTargetBlock(null, 32).getLocation().getZ());
                                config.set("Location.RedFlag.World", player.getWorld().getName());
                            }

                            if (args[0].equalsIgnoreCase("blue"))
                            {
                                player.getTargetBlock(null, 32).setTypeIdAndData(35, (byte) 11, true);
                                locationOfBlueFlag = player.getTargetBlock(null, 32).getLocation();
                                config.set("Location.BlueFlag.X", player.getTargetBlock(null, 32).getLocation().getX());
                                config.set("Location.BlueFlag.Y", player.getTargetBlock(null, 32).getLocation().getY());
                                config.set("Location.BlueFlag.Z", player.getTargetBlock(null, 32).getLocation().getZ());
                                config.set("Location.BlueFlag.World", player.getWorld().getName());
                            }

                            if (args[0].equalsIgnoreCase("green"))
                            {
                                player.getTargetBlock(null, 32).setTypeIdAndData(35, (byte) 5, true);
                                locationOfGreenFlag = player.getTargetBlock(null, 32).getLocation();
                                config.set("Location.GreenFlag.X", player.getTargetBlock(null, 32).getLocation().getX());
                                config.set("Location.GreenFlag.Y", player.getTargetBlock(null, 32).getLocation().getY());
                                config.set("Location.GreenFlag.Z", player.getTargetBlock(null, 32).getLocation().getZ());
                                config.set("Location.GreenFlag.World", player.getWorld().getName());
                            }

                            if (args[0].equalsIgnoreCase("yellow"))
                            {
                                player.getTargetBlock(null, 32).setTypeIdAndData(35, (byte) 4, true);
                                locationOfYellowFlag = player.getTargetBlock(null, 32).getLocation();
                                config.set("Location.YellowFlag.X", player.getTargetBlock(null, 32).getLocation().getX());
                                config.set("Location.YellowFlag.Y", player.getTargetBlock(null, 32).getLocation().getY());
                                config.set("Location.YellowFlag.Z", player.getTargetBlock(null, 32).getLocation().getZ());
                                config.set("Location.YellowFlag.World", player.getWorld().getName());
                            }
                            saveConfig();
                        }
                    }
                }
            }
            return true;
        }
        else
        {
            return false;
        }
    }
}
 
@Mr_Grom врет, у класса Location переопределен метод equals значит его можно так сравнивать. Тут дело в чем-то другом...
Действительно бред написал, извиняюсь.
@Mr_Grom врет, у класса Location переопределен метод equals значит его можно так сравнивать. Тут дело в чем-то другом...
bbe.getBlock().getLocation().equals(locationOfRedFlag)&&!locationOfRedFlag.equals(null)

пока что могу сказать что проверка на нулл ой какая хреновая )
 
bbe.getBlock().getLocation().equals(locationOfRedFlag)&&!locationOfRedFlag.equals(null)
пока что могу сказать что проверка на нулл ой какая хреновая )
И бессмысленная. В методе equals уже есть проверка на null, и если null, то возвращает false
 
И бессмысленная. В методе equals уже есть проверка на null, и если null, то возвращает false
Ок, ок, ок, убрал проверку на null, я ее добавил после того как возник баг описанный выше, думал поможет...
Код почти не поменялся, думаю выкладывать не стоит (только проверку на null убрал), баг как был так и остался.
UP
 
Java:
    @EventHandler
    private void onFlagBreak(BlockBreakEvent e) {
        Block b = e.getBlock();
        if (locationOfRedFlag == null) {
            Bukkit.getLogger().info("locationOfRedFlag is null!");
        }
        if (b.getLocation().equals(locationOfRedFlag)) {
            e.setCancelled(true);
            b.setType(Material.AIR);
            e.getPlayer().getInventory().setHelmet(new ItemStack(Material.WOOL));
        }
        //TODO: more else
    }
попробуй...
 
Java:
    @EventHandler
    private void onFlagBreak(BlockBreakEvent e) {
        Block b = e.getBlock();
        if (locationOfRedFlag == null) {
            Bukkit.getLogger().info("locationOfRedFlag is null!");
        }
        if (b.getLocation().equals(locationOfRedFlag)) {
            e.setCancelled(true);
            b.setType(Material.AIR);
            e.getPlayer().getInventory().setHelmet(new ItemStack(Material.WOOL));
        }
        //TODO: more else
    }
попробуй...
Тут вроде почти тоже самое, только с блоком на голове..
 
У тебя написно что-то странное, двойная проверка блока + null через equals сравниваешь. По сути я убрал у тебя лишнии действия
null я уже убрал (выше писал). Где двойная проверка не понял..
 
null я уже убрал (выше писал). Где двойная проверка не понял..
//Туто надо помочь!)
@EventHandler
public void onFlagBreaked(BlockBreakEvent bbe)
{
if (bbe.getBlock().getLocation().equals(locationOfRedFlag) ....);
{
bbe.setCancelled(true);
bbe.getBlock().breakNaturally();
if (bbe.getBlock().getLocation().equals(locationOfRedFlag)) bbe.getBlock().setTypeIdAndData(35, (byte) 14, true); ....
[/code]
 
Ну так, сначало проверяю, чтоб хотя-бы одно из условий было верно, и не зависимо от того какой это флаг делаю что мне надо, а потом, уже проверяю какой именно блок (флаг) стоит, и строю его обратно..
Блин, у меня бомбит... Ну почему этот код вызывается при ломании любого блока... Мой if тупо не пашет...
JavaScript:
    @EventHandler
    public void onFlagBreaked(BlockBreakEvent bbe)
    {
        if (bbe.getBlock().getLocation().equals(locationOfRedFlag)|| bbe.getBlock().getLocation().equals(locationOfBlueFlag)|| bbe.getBlock().getLocation().equals(locationOfGreenFlag)|| bbe.getBlock().getLocation().equals(locationOfYellowFlag));
        {
            bbe.setCancelled(true);
            bbe.getBlock().breakNaturally();
            if (bbe.getBlock().getLocation().equals(locationOfRedFlag)) bbe.getBlock().setTypeIdAndData(35, (byte) 14, true);
            if (bbe.getBlock().getLocation().equals(locationOfBlueFlag)) bbe.getBlock().setTypeIdAndData(35, (byte) 11, true);
            if (bbe.getBlock().getLocation().equals(locationOfGreenFlag)) bbe.getBlock().setTypeIdAndData(35, (byte) 5, true);
            if (bbe.getBlock().getLocation().equals(locationOfYellowFlag)) bbe.getBlock().setTypeIdAndData(35, (byte) 4, true);
        }
    }
 
Попробуйте сравнивать координаты блоков, а не их локации.
 
Будет звучать довольно странно, но может сработать:
Сделай все поля с location статичными(static)
Не прощла(
Блин это какой-то бред... Моего IF тупо не видно..
В коде изменений не много, но все-же залью, баг остался.
JavaScript:
package ru.roboman.plugin.WarForFlag;

import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.Location;
import org.bukkit.World;
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.block.BlockBreakEvent;
import org.bukkit.event.block.BlockPlaceEvent;
import org.bukkit.plugin.java.JavaPlugin;

import java.util.ArrayList;
import java.util.Collections;
import java.util.HashSet;

public class Solution extends JavaPlugin implements Listener
{

    protected FileConfiguration config;
    private HashSet<Byte> unSeenBlocks = new HashSet<Byte>();
    private static Location locationOfRedFlag = null;
    private static Location locationOfBlueFlag = null;
    private static Location locationOfGreenFlag = null;
    private static Location locationOfYellowFlag = null;
    private int WinOfRed = 0;
    private int WinOfBlue = 0;
    private int WinOfGreen = 0;
    private int WinOfYellow = 0;
    private String plugin = ChatColor.translateAlternateColorCodes('&', "&a&l[&c&lWar&1&lFor&2&lFlag&a&l] ");

    @Override
    public void onEnable()
    {
        Collections.addAll(unSeenBlocks, (byte) 8, (byte) 9, (byte) 10, (byte) 11);
        getServer().getPluginManager().registerEvents(this, this);
        config = getConfig();

        locationOfRedFlag = new Location(Bukkit.getWorld((String) config.get("Location.RedFlag.World")), (Double) config.get("Location.RedFlag.X"), (Double) config.get("Location.RedFlag.Y"), (Double) config.get("Location.RedFlag.Z"));
        locationOfRedFlag.getBlock().setTypeIdAndData(35, (byte) 14, true);

        locationOfBlueFlag = new Location(Bukkit.getWorld((String) config.get("Location.BlueFlag.World")), (Double) config.get("Location.BlueFlag.X"), (Double) config.get("Location.BlueFlag.Y"), (Double) config.get("Location.BlueFlag.Z"));
        locationOfBlueFlag.getBlock().setTypeIdAndData(35, (byte) 11, true);

        locationOfGreenFlag = new Location(Bukkit.getWorld((String) config.get("Location.GreenFlag.World")), (Double) config.get("Location.GreenFlag.X"), (Double) config.get("Location.GreenFlag.Y"), (Double) config.get("Location.GreenFlag.Z"));
        locationOfGreenFlag.getBlock().setTypeIdAndData(35, (byte) 5, true);

        locationOfYellowFlag = new Location(Bukkit.getWorld((String) config.get("Location.YellowFlag.World")), (Double) config.get("Location.YellowFlag.X"), (Double) config.get("Location.YellowFlag.Y"), (Double) config.get("Location.YellowFlag.Z"));
        locationOfYellowFlag.getBlock().setTypeIdAndData(35, (byte) 4, true);
    }

    @Override
    public void onDisable()
    {
        saveConfig();
    }

    public boolean isTeamString(String team)
    {
        ArrayList<String> list = new ArrayList<String>();
        Collections.addAll(list, "red", "blue", "green", "yellow");
        for (int i = 0; i < list.size(); i++)
        {
            if (team.equalsIgnoreCase(list.get(i)))
            {
                return true;
            }
        }
        return false;
    }

    public int getRedWins() { return WinOfRed; }

    public int getBlueWins() { return WinOfBlue; }

    public int getGreenWins(){ return WinOfGreen; }

    public int getYellowWins() { return WinOfYellow; }

    public Location getLocationOfRedFlag() { return locationOfRedFlag; }

    public Location getLocationOfBlueFlag() { return locationOfBlueFlag; }

    public Location getLocationOfGreenFlag() { return locationOfGreenFlag; }

    public Location getLocationOfYellowFlag() { return locationOfYellowFlag; }

    public void setLocationOfRedFlag(Location location) { locationOfRedFlag = location; }

    public void setLocationOfBlueFlag(Location location) { locationOfBlueFlag = location; }

    public void setLocationOfGreenFlag(Location location) { locationOfGreenFlag = location; }

    public void setLocationOfYellowFlag(Location location) { locationOfYellowFlag = location; }

    @EventHandler
    public void onFlagPlaced(BlockPlaceEvent bpe)
    {
        Location locOfCheck = bpe.getBlock().getLocation();
        locOfCheck.setY(locOfCheck.getY()-1);
        if (locationOfRedFlag.equals(locOfCheck))
        {
            Bukkit.broadcastMessage(ChatColor.translateAlternateColorCodes('&', plugin + "&aКрасная команда принесла флаг на свою базу."));
            WinOfRed++;
        }

        if (locationOfBlueFlag.equals(locOfCheck))
        {
            Bukkit.broadcastMessage(ChatColor.translateAlternateColorCodes('&', plugin + "&aСиняя команда принесла флаг на свою базу."));
            WinOfBlue++;
        }

        if (locationOfGreenFlag.equals(locOfCheck))
        {
            Bukkit.broadcastMessage(ChatColor.translateAlternateColorCodes('&', plugin + "&aЗеленая команда принесла флаг на свою базу."));
            WinOfGreen++;
        }

        if (locationOfYellowFlag.equals(locOfCheck))
        {
            Bukkit.broadcastMessage(ChatColor.translateAlternateColorCodes('&', plugin + "&aЖелтая команда принесла флаг на свою базу."));
            WinOfYellow++;
        }
    }

    @EventHandler
    public void onFlagBreaked(BlockBreakEvent bbe)
    {
        if (bbe.getBlock().getLocation().equals(locationOfRedFlag)|| bbe.getBlock().getLocation().equals(locationOfBlueFlag)|| bbe.getBlock().getLocation().equals(locationOfGreenFlag)|| bbe.getBlock().getLocation().equals(locationOfYellowFlag));
        {
            bbe.setCancelled(true);
            bbe.getBlock().breakNaturally();
            if (bbe.getBlock().getLocation().equals(locationOfRedFlag)) bbe.getBlock().setTypeIdAndData(35, (byte) 14, true);
            if (bbe.getBlock().getLocation().equals(locationOfBlueFlag)) bbe.getBlock().setTypeIdAndData(35, (byte) 11, true);
            if (bbe.getBlock().getLocation().equals(locationOfGreenFlag)) bbe.getBlock().setTypeIdAndData(35, (byte) 5, true);
            if (bbe.getBlock().getLocation().equals(locationOfYellowFlag)) bbe.getBlock().setTypeIdAndData(35, (byte) 4, true);
        }
    }


    @Override
    public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args)
    {
        Player player = null;
        if (sender instanceof Player)
        {
            player = (Player) sender;

            if (cmd.getName().equalsIgnoreCase("WFF"))
            {

                if (args.length == 0)
                {
                    player.sendMessage(ChatColor.translateAlternateColorCodes('&', plugin + "&aИспользование команды&0: &5/WFF <команда> <аргументы>"));
                }

                else
                {

                    if (args.length == 1 && isTeamString(args[0]))
                    {

                        if (args[0].equalsIgnoreCase("red"))
                        {
                            Bukkit.broadcastMessage(ChatColor.translateAlternateColorCodes('&', plugin + "&aФлагов забрано&a: &c" + WinOfRed));
                        }

                        if (args[0].equalsIgnoreCase("blue"))
                        {
                            Bukkit.broadcastMessage(ChatColor.translateAlternateColorCodes('&', plugin + "&aФлагов забрано&a: &c" + WinOfBlue));
                        }

                        if (args[0].equalsIgnoreCase("green"))
                        {
                            Bukkit.broadcastMessage(ChatColor.translateAlternateColorCodes('&', plugin + "&aФлагов забрано&a: &c" + WinOfGreen));
                        }

                        if (args[0].equalsIgnoreCase("yellow"))
                        {
                            Bukkit.broadcastMessage(ChatColor.translateAlternateColorCodes('&', plugin + "&aФлагов забрано&a: &c" + WinOfYellow));
                        }

                    }

                    if (args.length == 1 && args[0].equals("stats"))
                    {
                        Bukkit.broadcastMessage(ChatColor.translateAlternateColorCodes('&', plugin + "&aСтатистика: красная команда: [" + WinOfRed + "&a], синяя: [" + WinOfBlue + "&a], зеленая: [" + WinOfGreen + "&a], желтая: [" + WinOfYellow + "&a]."));
                    }

                    if (args.length == 2 && isTeamString(args[0]) && player.hasPermission("warforflag.admin"))
                    {

                        if (args[1].equalsIgnoreCase("setFlag"))
                        {

                            if (args[0].equalsIgnoreCase("red"))
                            {
                                player.getTargetBlock(unSeenBlocks, 32).setTypeIdAndData(35, (byte) 14, true);
                                locationOfRedFlag = player.getTargetBlock(unSeenBlocks, 32).getLocation();
                                config.set("Location.RedFlag.X", player.getTargetBlock(unSeenBlocks, 32).getLocation().getX());
                                config.set("Location.RedFlag.Y", player.getTargetBlock(unSeenBlocks, 32).getLocation().getY());
                                config.set("Location.RedFlag.Z", player.getTargetBlock(unSeenBlocks, 32).getLocation().getZ());
                                config.set("Location.RedFlag.World", player.getWorld().getName());
                            }

                            if (args[0].equalsIgnoreCase("blue"))
                            {
                                player.getTargetBlock(unSeenBlocks, 32).setTypeIdAndData(35, (byte) 11, true);
                                locationOfBlueFlag = player.getTargetBlock(unSeenBlocks, 32).getLocation();
                                config.set("Location.BlueFlag.X", player.getTargetBlock(unSeenBlocks, 32).getLocation().getX());
                                config.set("Location.BlueFlag.Y", player.getTargetBlock(unSeenBlocks, 32).getLocation().getY());
                                config.set("Location.BlueFlag.Z", player.getTargetBlock(unSeenBlocks, 32).getLocation().getZ());
                                config.set("Location.BlueFlag.World", player.getWorld().getName());
                            }

                            if (args[0].equalsIgnoreCase("green"))
                            {
                                player.getTargetBlock(unSeenBlocks, 32).setTypeIdAndData(35, (byte) 5, true);
                                locationOfGreenFlag = player.getTargetBlock(unSeenBlocks, 32).getLocation();
                                config.set("Location.GreenFlag.X", player.getTargetBlock(unSeenBlocks, 32).getLocation().getX());
                                config.set("Location.GreenFlag.Y", player.getTargetBlock(unSeenBlocks, 32).getLocation().getY());
                                config.set("Location.GreenFlag.Z", player.getTargetBlock(unSeenBlocks, 32).getLocation().getZ());
                                config.set("Location.GreenFlag.World", player.getWorld().getName());
                            }

                            if (args[0].equalsIgnoreCase("yellow"))
                            {
                                player.getTargetBlock(unSeenBlocks, 32).setTypeIdAndData(35, (byte) 4, true);
                                locationOfYellowFlag = player.getTargetBlock(unSeenBlocks, 32).getLocation();
                                config.set("Location.YellowFlag.X", player.getTargetBlock(unSeenBlocks, 32).getLocation().getX());
                                config.set("Location.YellowFlag.Y", player.getTargetBlock(unSeenBlocks, 32).getLocation().getY());
                                config.set("Location.YellowFlag.Z", player.getTargetBlock(unSeenBlocks, 32).getLocation().getZ());
                                config.set("Location.YellowFlag.World", player.getWorld().getName());
                            }
                            saveConfig();
                        }
                    }
                }
            }
            return true;
        }
        else
        {
            return false;
        }
    }
}

Статики потом уберу, только сейчас заметил, но уже закрыл IDE :cry:
UP
 
Статус
Закрыто для дальнейших ответов.

Поделиться этой страницей

Назад
Верх