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

.

Статус
Закрыто для дальнейших ответов.
Как-то так
Java:
int i = Integer.parseInt("&e&lStatTrack: число".split(": ")[1]);
 
А можете еще рассказать как это работает?)
Сначала разбивает на 2 части, границами которых является ": ", потом из второй строки(которая является числом) извлекает само число.
А как изменить это число? Ну вернее увеличить его на 1 и поставить на то же место!
Извлекаешь обе части. Вторую превращаешь в число и прибавляешь 1, потом соеденяешь 2 части обратно и присваиваешь лору
 
Тот код, который я дал, работает. Ну IDE, по крайней мере, не ругается.
Скинь свой код
JavaScript:
    @EventHandler
    public void addST(EntityDamageByEntityEvent event)
    {
        if (event.getDamager() instanceof Player && event.getEntity() instanceof Player)
        {
            Player agree = (Player) event.getDamager();
            Player disagree = (Player) event.getEntity();
            if (disagree.isDead()) {
                if (agree.getInventory().getItemInHand().getItemMeta().getLore().get(1).contains(ChatColor.translateAlternateColorCodes('&', "&e&lStatTrack: ")))
                {
                    String lore = agree.getInventory().getItemInHand().getItemMeta().getLore().get(1);
                    int ST = Integer.parseInt(lore.split(": "[1]));
                }
            }
        }
    }
 
При помощи getLore() выводишь содержимое Лора в ArrayList, получаешь 2-й его элемент как строку, сплитишь ее, получаешь нужный элемент
List<String> lore = ItemStack.getLore();

int number = Integer.valueOf(lore.get(1).split(" ")[1]);

А, ну number - то, что и требовалось
 
При помощи getLore() выводишь содержимое Лора в ArrayList, получаешь 2-й его элемент как строку, сплитишь ее, получаешь нужный элемент
List<String> lore = ItemStack.getLore();

int number = Integer.valueOf(lore.get(1).split(" ")[1]);

А, ну number - то, что и требовалось
Ошибок не бьет, Lore не изменяется...
JavaScript:
    @EventHandler
    public void addST(EntityDamageByEntityEvent event)
    {
        if (event.getDamager() instanceof Player && event.getEntity() instanceof Player)
        {
            Player agree = (Player) event.getDamager();
            Player disagree = (Player) event.getEntity();
            if (disagree.isDead()) {
                if (agree.getInventory().getItemInHand().getItemMeta().getLore().get(1).contains(ChatColor.translateAlternateColorCodes('&', "&e&lСтатТрек: ")))
                {
                    int number = Integer.valueOf(agree.getInventory().getItemInHand().getItemMeta().getLore().get(1).split(" ")[1]);
                    number++;
                    ItemMeta meta = agree.getInventory().getItemInHand().getItemMeta();
                    ArrayList<String> lore = new ArrayList<String>();
                    lore.add(meta.getLore().get(0));
                    lore.add(ChatColor.translateAlternateColorCodes('&', "&e&lСтатТрек: " + number));
                    meta.setLore(lore);
                    agree.getInventory().getItemInHand().setItemMeta(meta);
                }
            }
        }
    }
 
Ошибок не бьет, Lore не изменяется...
JavaScript:
    @EventHandler
    public void addST(EntityDamageByEntityEvent event)
    {
        if (event.getDamager() instanceof Player && event.getEntity() instanceof Player)
        {
            Player agree = (Player) event.getDamager();
            Player disagree = (Player) event.getEntity();
            if (disagree.isDead()) {
                if (agree.getInventory().getItemInHand().getItemMeta().getLore().get(1).contains(ChatColor.translateAlternateColorCodes('&', "&e&lСтатТрек: ")))
                {
                    int number = Integer.valueOf(agree.getInventory().getItemInHand().getItemMeta().getLore().get(1).split(" ")[1]);
                    number++;
                    ItemMeta meta = agree.getInventory().getItemInHand().getItemMeta();
                    ArrayList<String> lore = new ArrayList<String>();
                    lore.add(meta.getLore().get(0));
                    lore.add(ChatColor.translateAlternateColorCodes('&', "&e&lСтатТрек: " + number));
                    meta.setLore(lore);
                    agree.getInventory().getItemInHand().setItemMeta(meta);
                }
            }
        }
    }


Раз не передаются исключения и лор не меняется - проверь, выполняется ли вообще условие

if (agree.getInventory().getItemInHand().getItemMeta().getLore().get(1).contains(ChatColor.translateAlternateColorCodes('&', "&e&lСтатТрек: "))
  1. Я бы вообще сделал так:
    if (agree.getItemInHand().getItemMeta().getLore().get(1).contains("СтатТрек"))) {


    Ну и на всякий - agree.updateInventory()
 
Раз не передаются исключения и лор не меняется - проверь, выполняется ли вообще условие

if (agree.getInventory().getItemInHand().getItemMeta().getLore().get(1).contains(ChatColor.translateAlternateColorCodes('&', "&e&lСтатТрек: "))
  1. Я бы вообще сделал так:
    if (agree.getItemInHand().getItemMeta().getLore().get(1).contains("СтатТрек"))) {


    Ну и на всякий - agree.updateInventory()
Ни пашит(9((99(9((((((
PHP:
    @EventHandler
    public void addST(EntityDamageByEntityEvent event)
    {
        if (event.getDamager() instanceof Player && event.getEntity() instanceof Player)
        {
            Player agree = (Player) event.getDamager();
            Player disagree = (Player) event.getEntity();
            if (disagree.isDead()) {
                if (agree.getInventory().getItemInHand().getItemMeta().getLore().get(1).contains("&e&lСтатТрек: "))
                {
                    int number = Integer.valueOf(agree.getInventory().getItemInHand().getItemMeta().getLore().get(1).split(" ")[1]);
                    number++;
                    ItemMeta meta = agree.getInventory().getItemInHand().getItemMeta();
                    ArrayList<String> lore = new ArrayList<String>();
                    lore.add(meta.getLore().get(0));
                    lore.add(ChatColor.translateAlternateColorCodes('&', "&e&lСтатТрек: " + number));
                    meta.setLore(lore);
                    agree.getInventory().getItemInHand().setItemMeta(meta);
                    agree.updateInventory();
                }
            }
        }
    }

Поставив "отладку" выявил что не работает проверка на "смерть"... Как правильно проверить умрет ли игрок после нанесения урона в этом евенте?
 
Ни пашит(9((99(9((((((
PHP:
    @EventHandler
    public void addST(EntityDamageByEntityEvent event)
    {
        if (event.getDamager() instanceof Player && event.getEntity() instanceof Player)
        {
            Player agree = (Player) event.getDamager();
            Player disagree = (Player) event.getEntity();
            if (disagree.isDead()) {
                if (agree.getInventory().getItemInHand().getItemMeta().getLore().get(1).contains("&e&lСтатТрек: "))
                {
                    int number = Integer.valueOf(agree.getInventory().getItemInHand().getItemMeta().getLore().get(1).split(" ")[1]);
                    number++;
                    ItemMeta meta = agree.getInventory().getItemInHand().getItemMeta();
                    ArrayList<String> lore = new ArrayList<String>();
                    lore.add(meta.getLore().get(0));
                    lore.add(ChatColor.translateAlternateColorCodes('&', "&e&lСтатТрек: " + number));
                    meta.setLore(lore);
                    agree.getInventory().getItemInHand().setItemMeta(meta);
                    agree.updateInventory();
                }
            }
        }
    }

Поставив "отладку" выявил что не работает проверка на "смерть"... Как правильно проверить умрет ли игрок после нанесения урона в этом евенте?
Почему бы не воспользоваться, например, евентом смерти ентити?

EntityDeathEvent
 
Почему бы не воспользоваться, например, евентом смерти ентити?

EntityDeathEvent
Вообще-то не подумал...
Щя попробую.
Вообще-то не подумал...
Щя попробую.
В EDE можно получить только одного игрока... Не подскажете, это кто убийца или убитый?
Зароботало, всем спасибо :D
 
Вообще-то не подумал...
Щя попробую.

В EDE можно получить только одного игрока... Не подскажете, это кто убийца или убитый?
Зароботало, всем спасибо :D

e.getEntity() возвращает убитое ентити

e.getEntity().getKiller() возвращает убийцу, необходимо привести к Player
 
Статус
Закрыто для дальнейших ответов.

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

Назад
Верх