Запретить открытие Vanilla GUI (что бы впоследствии заменить на свое)

Led

291
3
0
Суть проблемы ясна из названия. Я помню что видел что-то подобное на форуме, поэтому уже изнасиловал поиск, но не смог найти.
Нужно запретить игрокам открывать ГУИ чароватьного стола (и наковальни).
Пробую так. Не пашет.
Люди добрые ткните меня тупого в ошибку мою.
Код:
    //Не даем открыть гуи стола зачарования
    @SubscribeEvent
    public void cancelOpenGUIEnchantmentTable(PlayerInteractEvent event)
    {
        Block block = event.world.getBlock(event.x, event.y, event.z);
        if (event.action != PlayerInteractEvent.Action.LEFT_CLICK_BLOCK)
        {
        if (block == Blocks.enchanting_table)
            {
            event.setResult(Result.DENY);
                //Дебаг
            System.out.print("Инвент наконец сработал... Ура..");
            }
            }
    }
}

Заранее спасибо, извините что отнял время вопросом тупым.
С Уважением, Led.
 
Код:
@SubscribeEvent
public void opening(PlayerInteractEvent event) {
    if (event.action == PlayerInteractEvent.Action.RIGHT_CLICK_BLOCK) {
        Block block = event.world.getBlock(event.x, event.y, event.z);
        if (block == Blocks.enchanting_table) {
            event.setCanceled(true);
        }
    }
}
[merge_posts_bbcode]Добавлено: 12.04.2016 21:37:49[/merge_posts_bbcode]

Т.е. нужно использовать:
Код:
event.setCanceled(true);
для отмены.
 
Код:
public class EventEnchTable {
    
    //Не даем открыть гуи стола зачарования
    @SubscribeEvent
    public void cancelOpenGUIEnchantmentTable(PlayerInteractEvent event)
    {
        if (event.action == PlayerInteractEvent.Action.RIGHT_CLICK_BLOCK){
        Block block = event.world.getBlock(event.x, event.y, event.z);
            System.out.print("Debug1");
        if (block == Blocks.enchanting_table)
            {
            event.setCanceled(true);
            System.out.print("Debug2");
            }
            }
    }
}
Так тоже не пашет

Похоже нашел ошибку. Я его как генерацию регал (по аналогии с уже имеющимся ивентом, запрещающим генерироваться голдор.)
MinecraftForge.ORE_GEN_BUS.register(new EventEnchTable());
 
А это эвент зарегистрирован?
 
timaxa007 написал(а):
А это эвент зарегистрирован?
Огромное спасибо, timaxa007.
Хочу искренне тебя поблагодарить, ты уже не первый раз откликаешься на мой зов о помощи (с тупенькими вопросами).
Вопрос полностью решен.
 
Пожалуйста.
Тему закрывать?
 
Проблема.
Почему так много раз?
Kg70yR5O9ic.jpg
 
Не могу сказать точно, возможно ты пытался много раз нажать на этот блок.
 
Или сам класс эвента зарегистрирован несколько раз, и вот он дублирует.
[merge_posts_bbcode]Добавлено: 12.04.2016 21:58:58[/merge_posts_bbcode]

У меня в консоль всё нормально высвечивало.
 
Назад
Сверху