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

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);
                }
            }
 
PlayerInteractEvent вызывается 2 раза, вроде при нажатии и отжатии кнпоки мыши. Ты ставишь имя в рунейбле, (собственно на следующий тик после открытия сундука)
 
PlayerInteractEvent вызывается 2 раза, вроде при нажатии и отжатии кнпоки мыши. Ты ставишь имя в рунейбле, (собственно на следующий тик после открытия сундука)

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