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

Помогите Запрещаем класть вещи в сундук

Тема в разделе "Разработка плагинов для новичков", создана пользователем Pro_Panda_Men, 25 июл 2017.

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

    Pro_Panda_Men Активный участник

    Баллы:
    61
    Имя в Minecraft:
    Pro_Panda_Men
    Как можно запретить класть игроку определенные блоки в сундук?
     
  2. DonDays

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

    Баллы:
    96
    Имя в Minecraft:
    DonDays
    Лови InventoryMoveEvent
     
  3. Автор темы
    Pro_Panda_Men

    Pro_Panda_Men Активный участник

    Баллы:
    61
    Имя в Minecraft:
    Pro_Panda_Men
    В итоге InventoryMoveEvent нет, но я подумаю что это InventoryMoveItemEvent, после чего написал код, ошибок нет, но ничего не работает, как кидать в сундук мог золото, так и продолжаю


    @EventHandler
    public void onMove(InventoryMoveItemEvent event)
    {
    if(event.getItem().getType() == Material.Gold)
    event.setCancelled(true);
    }
     
  4. gamerforEA

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

    Баллы:
    143
    Skype:
    sk2000sk1
    Имя в Minecraft:
    gamerforEA_MCPC
    InventoryMoveItemEvent используется, насколько я помню, воронками. Попробуйте InventoryClickEvent (вроде, так называется). Ну и ещё есть ивент, который мог бы подойти в некоторых случаях - InventoryDragEvent.
     
  5. DonDays

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

    Баллы:
    96
    Имя в Minecraft:
    DonDays
    хз, надо уточнить, погуглю позже
     
  6. HunterGaming

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

    Баллы:
    96
    Имя в Minecraft:
    sqdFendy
    InventoryClickEvent отслеживай, чекай тип инвентаря сундук и чекай item ,потом отменяй. PROFIT
     
  7. AndiStore

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

    Баллы:
    66
    Вот из исходников WG, может пригодится.
    Код:
        @EventHandler(ignoreCancelled = true)
        public void onInventoryClick(InventoryClickEvent event) {
            HumanEntity entity = event.getWhoClicked();
            Inventory inventory = event.getInventory();
            ItemStack item = event.getCurrentItem();
    
            if (item != null && entity instanceof Player) {
                Player player = (Player) entity;
                ConfigurationManager cfg = getPlugin().getGlobalStateManager();
                WorldConfiguration wcfg = cfg.get(entity.getWorld());
                LocalPlayer localPlayer = getPlugin().wrapPlayer(player);
    
                if (wcfg.getBlacklist() != null && !wcfg.getBlacklist().check(
                        new ItemAcquireBlacklistEvent(localPlayer, toVector(entity.getLocation()), createTarget(item)), false, false)) {
                    event.setCancelled(true);
    
                    if (inventory.getHolder().equals(player)) {
                        event.setCurrentItem(null);
     
  8. JolyHoska

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

    Баллы:
    76
    Имя в Minecraft:
    JolyNoska
    А где проверка типа инвентаря?? Inventory, я тебе сократил
    Chest chest = (Chest) e.getBlock().getState();
    Inventory inv = chest.getBlockInventory();
     
  9. DonDays

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

    Баллы:
    96
    Имя в Minecraft:
    DonDays
    Если ты не проверил e.getBlock().getState() instanceof Sign будет ClassCastException
     

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