Помогите Не устанавливаются переменные в методе onCommand()

  • Автор темы Автор темы Swaimer
  • Дата начала Дата начала

Swaimer

Активный участник
Пользователь
Баллы
61
Кароче, я сделал когда игрок пишет команду, открывался инвентарь, и записывались данные (Игрок, и открыт ли инвентарь (boolean)) Вот код:
Код:
@EventHandler
public void onInventoryClick(InventoryClickEvent event) {
    if(hm.get((Player) event.getWhoClicked())){
        event.setCancelled(true);
    }
}
А вот код установки значений:
Код:
Player user = (Player) commandSender;
user.openInventory(inv);
hm.put(user, true);

Ну и переменная:
Код:
public HashMap<Player, Boolean> hm;
Вобщем, при установке вроде как бы и устанавливается, но InventoryClickEvent не отменяется, я решил сделать вот это:

Код:
@EventHandler
public void onInventoryClick(InventoryClickEvent event) {
    test((Player) event.getWhoClicked());
    if(hm.get((Player) event.getWhoClicked())){
        event.setCancelled(true);
    }
}
public void test(Player p){
    Bukkit.dispatchCommand(Bukkit.getConsoleSender(), "say "+hm.get(p));
}
А оно не пишет, типо игрок вообще не установлен, а я один на сервере Помогите[/Code]
 
Последнее редактирование:
Кароче, я сделал когда игрок пишет команду, открывался инвентарь, и записывались данные (Игрок, и открыт ли инвентарь (boolean)) Вот код:
Код:
@EventHandler
public void onInventoryClick(InventoryClickEvent event) {
    if(hm.get((Player) event.getWhoClicked())){
        event.setCancelled(true);
    }
}
А вот код установки значений:
Код:
Player user = (Player) commandSender;
user.openInventory(inv);
hm.put(user, true);

Ну и переменная:
Код:
public HashMap<Player, Boolean> hm;
Вобщем, при установке вроде как бы и устанавливается, но InventoryClickEvent не отменяется, я решил сделать вот это:

Код:
@EventHandler
public void onInventoryClick(InventoryClickEvent event) {
    test((Player) event.getWhoClicked());
    if(hm.get((Player) event.getWhoClicked())){
        event.setCancelled(true);
    }
}
public void test(Player p){
    Bukkit.dispatchCommand(Bukkit.getConsoleSender(), "say "+hm.get(p));
}
А оно не пишет, типо игрок вообще не установлен, а я один на сервере Помогите[/Code]
Оно ничего не пишет, ну я так понимаю изза пустого списка
 
Незнаю поможет ли это в решении, но ты неправильно объявил HashMap. Его объявляют вот так
Код:
public Map<Player,boolean> map = new HashMap<Player,boolean>();
Кстати, сам тип Map при помощи new Map() создать нельзя.
 
Незнаю поможет ли это в решении, но ты неправильно объявил HashMap. Его объявляют вот так
Код:
public Map<Player,boolean> map = new HashMap<Player,boolean>();
Кстати, сам тип Map при помощи new Map() создать нельзя.
в дженерики нельзя пихать примитивы братан
 
Кароче, я сделал когда игрок пишет команду, открывался инвентарь, и записывались данные (Игрок, и открыт ли инвентарь (boolean)) Вот код:
Код:
@EventHandler
public void onInventoryClick(InventoryClickEvent event) {
    if(hm.get((Player) event.getWhoClicked())){
        event.setCancelled(true);
    }
}
А вот код установки значений:
Код:
Player user = (Player) commandSender;
user.openInventory(inv);
hm.put(user, true);

Ну и переменная:
Код:
public HashMap<Player, Boolean> hm;
Вобщем, при установке вроде как бы и устанавливается, но InventoryClickEvent не отменяется, я решил сделать вот это:

Код:
@EventHandler
public void onInventoryClick(InventoryClickEvent event) {
    test((Player) event.getWhoClicked());
    if(hm.get((Player) event.getWhoClicked())){
        event.setCancelled(true);
    }
}
public void test(Player p){
    Bukkit.dispatchCommand(Bukkit.getConsoleSender(), "say "+hm.get(p));
}
А оно не пишет, типо игрок вообще не установлен, а я один на сервере Помогите[/Code]
Можешь показать, как регистрируешь команду и слушатель?
 
Код:
getCommand("duel").setExecutor(new GuiManager(this));
Bukkit.getPluginManager().registerEvents(new GuiManager(this), this);
У тебя два разных объекта - один работает как слушатель, другой как обработчик команд. Сделай переменную GuiManager'а и используй её при регистрации вместо создания двух новых.
 
У тебя два разных объекта - один работает как слушатель, другой как обработчик команд. Сделай переменную GuiManager'а и используй её при регистрации вместо создания двух новых.
Кстатиии, спасибо, попробую. По идеи это должно сработать как я не додул
 
При всем. У тебя проблемы от незнания языка. Ты банально не умеешь работать с переменными и объектами.
Я просто как всегда начал писать плагин, а за эту хрень забыл, поэтому обратился в форум, а мне напомнили за это.
 
Назад
Верх