Помогите Как обработать открытие сундука?

Poyalnik

Активный участник
Пользователь
Баллы
66
Только не такой способ:
@EventHandler
public void openInventory(InventoryOpenEvent e) {

if(e.getInventory().getType()==InventoryType.CHEST) {
Потому что я создаю новый инвентарь заполняю его рандомными ресурсами и открываю его игроку, но
Событие реагирует на это и получается зацикленная система.

Можно не создавать новый инвентарь и добавлять предметы в инвентарь сундука, но мне нужно изменить title инвентаря, а как это сделать без создания нового инвентаря я не знаю.
 
для своих инвентарей используй InventoryHolder, а не проверку имени инвентаря
 
Если вы еще здесь, помогите пожалуйста. Можно ли искусственно запустить анимацию открытия крышки сундука?
PHP:
//Импорты привязываются к версии
    public void playChest(Location chestLocation, boolean action) {
        WorldServer world = ((CraftWorld)chestLocation.getWorld()).getHandle();
        BlockPosition position = new BlockPosition(chestLocation.getX(), chestLocation.getY(), chestLocation.getZ());
        if (chestLocation.getBlock().getTypeId() == 54) {
            try {
                TileEntityChest tileChest = (TileEntityChest)world.getTileEntity(position);
                world.playBlockAction(position, tileChest.w(), 1, action ? 1 : 0);
            } catch (Exception tileChest) {}
        } else if (chestLocation.getBlock().getTypeId() == 130) {
            try {
                TileEntityEnderChest tileChest = (TileEntityEnderChest)world.getTileEntity(position);
                world.playBlockAction(position, tileChest.w(), 1, action ? 1 : 0);
            } catch (Exception tileChest) { }
        }
    }
 
PHP:
//Импорты привязываются к версии
    public void playChest(Location chestLocation, boolean action) {
        WorldServer world = ((CraftWorld)chestLocation.getWorld()).getHandle();
        BlockPosition position = new BlockPosition(chestLocation.getX(), chestLocation.getY(), chestLocation.getZ());
        if (chestLocation.getBlock().getTypeId() == 54) {
            try {
                TileEntityChest tileChest = (TileEntityChest)world.getTileEntity(position);
                world.playBlockAction(position, tileChest.w(), 1, action ? 1 : 0);
            } catch (Exception tileChest) {}
        } else if (chestLocation.getBlock().getTypeId() == 130) {
            try {
                TileEntityEnderChest tileChest = (TileEntityEnderChest)world.getTileEntity(position);
                world.playBlockAction(position, tileChest.w(), 1, action ? 1 : 0);
            } catch (Exception tileChest) { }
        }
    }
Часто по голове бьют? Протоколлиб не не в курсе?
 
Код:
        Player player = e.getPlayer();
        WrapperPlayServerBlockAction packet = new WrapperPlayServerBlockAction();
        packet.setBlockType(Material.CHEST);
        packet.setByte1(1);
        packet.setByte2(1);
        packet.setLocation(new BlockPosition(e.getClickedBlock().getLocation().toVector()));
        packet.sendPacket(player);
        player.playSound(e.getClickedBlock().getLocation(), Sound.BLOCK_CHEST_OPEN, 1, 1);

packet.setByte2(0); закрыть.
 
Назад
Верх