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

Помогите Как обновить название сундука

Тема в разделе "Разработка плагинов для новичков", создана пользователем AguRChek_TV, 15 май 2020.

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

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

    Баллы:
    76
    Имя в Minecraft:
    AguRChek_TV
    Имя сундука обновляется только после закрытия сундука
    и при открытии и закрытии
    Код:
    p.closeInventory();
    p.openInventory(inv);
    Предметы в сундуке появляются дважды

    Мне нужно сделать так что бы имя сундука обновлялось сразу после открытия сундука



    Код:
                if(e.getClickedBlock().getType() == Material.CHEST) {
                    Block block = e.getClickedBlock();
                    Chest chest = (Chest) block.getState();
                    Inventory inv = chest.getSnapshotInventory();
                    if(chest.getCustomName().equals(ChatColor.DARK_AQUA + "" + ChatColor.BOLD + "Locked")) {
                        BlockState state = block.getState();
                        inv.clear();
                        if(dropcd != 0) {
                            p.sendMessage(ChatColor.AQUA + "" + ChatColor.BOLD + "not so fast. please wait");
                            e.setCancelled(true);
                            return;
                        }
                        p.sendMessage("open");
                        dropcd = 11;
                        new BukkitRunnable() {
                            @Override
                            public void run() {
                                dropcd--;
                                ItemStack cd = new ItemStack(Material.PLAYER_HEAD, dropcd);
                                SkullMeta meta = (SkullMeta) cd.getItemMeta();
                                meta.setOwner("MHF_Chest");
                                meta.setDisplayName(ChatColor.AQUA + "" + ChatColor.BOLD + "before opening the lootbox " + dropcd + " second");
                                ArrayList<String> lore = new ArrayList<String>();
                                lore.add(ChatColor.WHITE + "" + ChatColor.BOLD + "This box may contain a lot of valuable Loot");
                                lore.add(ChatColor.WHITE + "" + ChatColor.BOLD + "while you open the box, you can be killed");
                                meta.setLore(lore);
                                cd.setItemMeta(meta);
                                inv.setItem(13, cd);
                                chest.update(true);
                                if(dropcd == 0) {
                                    chest.setCustomName(ChatColor.DARK_AQUA + "" + ChatColor.BOLD + "Opened");
                                    state.update();
                                    inv.clear();
                                    ItemStack golden_apple = new ItemStack(Material.GOLDEN_APPLE, 3);
                                    inv.addItem(golden_apple);
                                    chest.update(true);
                                    p.sendMessage("end");
                                    this.cancel();
                                }
                                if(p.getOpenInventory().getType() != InventoryType.CHEST) {
                                    dropcd = 0;
                                    p.sendMessage("clouse");
                                    inv.clear();
                                    chest.update(true);
                                    this.cancel();
                                }
                            }
                        }.runTaskTimer(this, 0, 20);
                    }
                }
     
  2. NoooobKa

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

    Баллы:
    76
    Имя в Minecraft:
    NoooobKa
    PlayerInteractEvent вызывается 2 раза, вроде при нажатии и отжатии кнпоки мыши. Ты ставишь имя в рунейбле, (собственно на следующий тик после открытия сундука)
     
  3. Автор темы
    AguRChek_TV

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

    Баллы:
    76
    Имя в Minecraft:
    AguRChek_TV
    я наверное тупой но я не понял.
     
  4. NoooobKa

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

    Баллы:
    76
    Имя в Minecraft:
    NoooobKa
    Прошу прощения, событие вызывается для обеих рук. Загуглите *PlayerInteractEvent twice triggering*
    Насчет имени, поскольку ты вызываешь его изменение в планировщике задач, то сменится оно не раньше, чем через один игровой тик после открытия сундука, т.е. Вы получаете старую дату сундука
     
  5. Автор темы
    AguRChek_TV

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

    Баллы:
    76
    Имя в Minecraft:
    AguRChek_TV
    спасибо
     

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