1. Этот сайт использует файлы cookie. Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie. Узнать больше.
  2. Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.
    Скрыть объявление
Скрыть объявление
В преддверии глобального обновления, мы проводим исследования, которые помогут нам сделать опыт пользования форумом ещё удобнее. Помогите нам, примите участие!

Помогите PAPI JavaScript - количество предметов с ID в инвентаре

Тема в разделе "Помощь", создана пользователем ThePrime, 10 май 2019.

  1. Автор темы
    ThePrime

    ThePrime Активный участник Пользователь

    Баллы:
    66
    Имя в Minecraft:
    Isus
    Есть JS-плейсхолдер, который подсчитывает количество нужных предметов в инвентаре игрока. (%javascript_amount_STONE%). Но проблема в том, что в 1.12 предметы уникальны по ID, а не NBT, так что начиная от камня и заканчивая андезитом, плейсхолдер считает это как один материал.
    Необходимо переделать плейсхолдер так, чтобы можно было передавать в параметры числовой ID и получать количество необходимых предметов именно по нему. К примеру, %javascript_amount_1:3%

    Вот сам плейсхолдер:
    var player = BukkitPlayer;
    var searchItem = null;
    var searchName = null;
    var amountOfItem = 0;

    function checkForItem() {
    if (args !== undefined) {
    if (args.length >= 1) {
    searchItem = args[0].toUpperCase();
    searchItem = searchItem.replace("-", "_")
    .replace("WOODEN", "WOOD")
    .replace("SHOVEL", "SPADE");
    };
    if (args.length == 2) {
    searchName = args[1];
    };
    };

    var itemsInInventory = player.getInventory().getContents();

    for (i = 0; i < itemsInInventory.length; i++) {
    if (searchName != null) {
    if (itemsInInventory != null && itemsInInventory.getType() == searchItem && itemsInInventory.getItemMeta().getDisplayName() == searchName) {
    amountOfItem += itemsInInventory.getAmount();
    };
    }
    else if (itemsInInventory != null && itemsInInventory.getType() == searchItem) {
    amountOfItem += itemsInInventory.getAmount();
    };
    };
    if (searchItem == null) {
    return "&cSyntax: %" + "javascript_[MATERIAL]<,NAME>" + "%";
    }
    return amountOfItem.toString();
    };

    checkForItem();
     
  2. MurlikMurlik

    MurlikMurlik Активный участник Пользователь

    Баллы:
    96
    Получай дамаг предмета, ибо зачастую это и есть тот самый суб ид ниже 1.13 версий
     
  3. HauserGrim

    HauserGrim Активный участник Пользователь

    Баллы:
    96
    Странно, что с hasitem можно чекнуть data, а с amount - нельзя. Попробуй написать об этом разрабу, может есть способ или добавит такую возможность.
    https://github.com/PlaceholderAPI/PlaceholderAPI/issues
     
  4. alexandrage

    alexandrage Старожил Пользователь

    Баллы:
    173
    Переходина 1.13+, там такой проблемы нет
     

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