- Баллы
- 103
Собственно, столкнулся с такой проблемой, что при перемещении предметов как внутри, так и между инвентарями, не вызывается InventoryMoveItemEvent. С чем сей феномен может быть связан?
Следуйте инструкциям в видео ниже, чтобы узнать, как установить наш сайт как веб-приложение на главный экран вашего устройства.
Примечание: Эта функция может быть недоступна в некоторых браузерах.
Called when some entity or block (e.g. hopper) tries to move items directly from one inventory to another.
@EventHandler(ignoreCancelled = true)
public void onItemMove(InventoryMoveItemEvent event) {
//Тут код, который не хочет выполняться
}
Ну да, у меня в том же классе и другие события регистрируются, и всё нормально. А это никак не хочет (gtPluginManager().registerEvents(listener, plugin)?
в смысле через таймер?мб попробуй сделать действие через таймер
в смысле через таймер?
//Событие респавна
@EventHandler
public void onPlayerRespawn(PlayerRespawnEvent event){
final Player player = event.getPlayer();
final Location respawn = player.getWorld().getSpawnLocation();
//Начинается таймер
plugin.getServer().getScheduler().scheduleAsyncDelayedTask(plugin, new Runnable() {
public void run() {
player.teleport(respawn);
player.addPotionEffect(new PotionEffect(PotionEffectType.DAMAGE_RESISTANCE, 100, 1));
}
//Таймер заработает через 1 тик (т.е. меньше секунды)
}, 1);
}
хм, сча попробуюПример (Используется другой эвент):
Код://Событие респавна @EventHandler public void onPlayerRespawn(PlayerRespawnEvent event){ final Player player = event.getPlayer(); final Location respawn = player.getWorld().getSpawnLocation(); //Начинается таймер plugin.getServer().getScheduler().scheduleAsyncDelayedTask(plugin, new Runnable() { public void run() { player.teleport(respawn); player.addPotionEffect(new PotionEffect(PotionEffectType.DAMAGE_RESISTANCE, 100, 1)); } //Таймер заработает через 1 тик (т.е. меньше секунды) }, 1); }
Мне надо, чтобы при помещении определённой вещи в наковальню выполнялось определённое действие. Сначала написал такой код:Что ты птаешься сделать, может ты не тот эвент юзаешь?
@EventHandler(ignoreCancelled = true)
public void onItemMove(InventoryMoveItemEvent event) {
Inventory inv = event.getDestination();
if (inv.getType() == InventoryType.ANVIL) {
Logger.getLogger("Minecraft").info("Item is placed to Anvil!");
}
}

@EventHandler(ignoreCancelled = true)
public void onItemMove(InventoryMoveItemEvent event) {
Inventory inv = event.getDestination();
if (inv.getType() == InventoryType.ANVIL) {
MainClass plug = new MainClass(); //MainClass extends JavaPlugin
plug.thisPlugin.getServer().getScheduler().scheduleSyncDelayedTask(plug.thisPlugin, new Runnable() { //Переменная thisPlugin в MainClass = this
public void run() {
Logger.getLogger("Minecraft").info("Event is called!");
}
}, 1);
}
}

) "Хм... Значит в джавадоке ерунду написали... Ну чтож, тогда сча попробую InventoryClickEvent...Воронка и только вызывает этот эвент.
Если точнее то блок имеющий инвентарь перетаскивает предмет из одного инвентаря в другой.
Для остального InventoryClickEvent.