Войти или зарегистрироваться
  • Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.

Помогите Небольшая "функция"

А я что написал?
Код:
@СобытияОбработчик
публичный ничегоневозвращающий наИгрокИнтеракт(ИгрокВзаимодействиеСобытие е) {
Игрок р = е.получитьИгрок();
если(е.получитьДействие() == Действие.ПРАВЫЙ_КЛИК_ПО_БЛОКУ И p.получитьПредметВРуке().получитьМатериалНомер() == шесть) то
// съесть торт
конец_условия
}

Использовал твой код, немного дополнив, надеюсь правильно. Но также подчеркивает getItemId.
Код:
public void onPlayerInteract(PlayerInteractEvent e) {
        Player p = e.getPlayer();
        if(e.getAction() == Action.RIGHT_CLICK_BLOCK && e.getClickedBlock().getTypeId() == 6 && p.getItemInHand().getTypeId() == 3) {
        getLogger().info("Block with ID 6 has been clicked by Player with Stone in hand!");
        }
    }

Как я понял - в PlayerInteractEvent нет класса getItemId, а проверку организовать надо.
 
Использовал твой код, немного дополнив, надеюсь правильно. Но также подчеркивает getItemId.
Код:
public void onPlayerInteract(PlayerInteractEvent e) {
        Player p = e.getPlayer();
        if(e.getAction() == Action.RIGHT_CLICK_BLOCK && e.getClickedBlock().getTypeId() == 6 && p.getItemInHand().getTypeId() == 3) {
        getLogger().info("Block with ID 6 has been clicked by Player with Stone in hand!");
        }
    }

Как я понял - в PlayerInteractEvent нет класса getItemId, а проверку организовать надо.
В 1.6 все методы, возвращающие id предметов/блоков помечены устаревшими, но они работают как обычно
И вообще, читай, что тебе пишет эклипс в месте с ошибкой
 
В 1.6 все методы, возвращающие id предметов/блоков помечены устаревшими, но они работают как обычно
И вообще, читай, что тебе пишет эклипс в месте с ошибкой

Ошибок ноль, разве что http://prntscr.com/1wv8us. Экспортировал плагин, включил сервер, при нажатии на блок с ID 6 блоком с ID 1 в лог сервера ничего не пишет.
P.S. Да, выше в коде было "==3", но исправил на "==1".
 
Ошибок ноль, разве что http://prntscr.com/1wv8us. Экспортировал плагин, включил сервер, при нажатии на блок с ID 6 блоком с ID 1 в лог сервера ничего не пишет.
P.S. Да, выше в коде было "==3", но исправил на "==1".
Всё, что не подчёркнуто красным - не ошибка:D
@EventHandler стоит над методом? Слушатель зарегистрирован?
 
Всё, что не подчёркнуто красным - не ошибка:D
@EventHandler стоит над методом? Слушатель зарегистрирован?

Я и написал, что ошибок ноль. EventHandler стоит над методом.
Слушатель - public class mainClass extends JavaPlugin implements Listener?
 
Я и написал, что ошибок ноль. EventHandler стоит над методом.
Слушатель - public class mainClass extends JavaPlugin implements Listener?
getServer().getPluginManager().registerEvents(this, this); - это регистрация эвентов, и наследовать Listener тоже надо
 
Ну, я теорию обошел стороной;) Поэтому у меня чуточку своя терминология

Это общепринятая терминология, наследование и реализация интерфейса это различные вещи.
 
Так как все таки правильно слушателя зарегистрировать?
 
Разобрался и начал писать дальше. Теперь уже вопрос, касающийся БД и типов данных. Поставил JDBC, и написал так:
Код:
PreparedStatement sampleQueryStatement = conn.prepareStatement("SELECT price FROM blocks WHERE id = 1");
            ResultSet result1 = sampleQueryStatement.executeQuery();
Т.к. SELECT тут выбирает определенный столбец, который является int, то и результат должен быть int. Но выдает ошибку, если ResulSet изменить на int. Как можно преобразовать из ResultSet в int?
Если что, то далее этот result1 понадобится для мат. действий, т.е. тип int обязателен.
 
Разобрался и начал писать дальше. Теперь уже вопрос, касающийся БД и типов данных. Поставил JDBC, и написал так:
Код:
PreparedStatement sampleQueryStatement = conn.prepareStatement("SELECT price FROM blocks WHERE id = 1");
            ResultSet result1 = sampleQueryStatement.executeQuery();
Т.к. SELECT тут выбирает определенный столбец, который является int, то и результат должен быть int. Но выдает ошибку, если ResulSet изменить на int. Как можно преобразовать из ResultSet в int?
Если что, то далее этот result1 понадобится для мат. действий, т.е. тип int обязателен.
Неужели так сложно открыть гугл и почитать, что уже объяснено?
 

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

Назад
Верх