- Баллы
- 66
- Имя в Minecraft
- Thorgathis
а как мне тогда эту строку записпть
ItemStack item = p.getPlayer().getInventory();
ItemStack item = p.getPlayer().getInventory();
Следуйте инструкциям в видео ниже, чтобы узнать, как установить наш сайт как веб-приложение на главный экран вашего устройства.
Примечание: Эта функция может быть недоступна в некоторых браузерах.
В данном случае лучше использовать 2 ивента 1 когда игрок бросает снежок другой когда снежок прилетает, это нужно дабы избежать того что в момент полета игрок сменит предмет в руке. При бросании снежка записывай игрока в коллекцию а лучше в мапу пусть ключем будет ентити снежка а значение это будет игрок который бросил и при попадании просто доставай из мапы игрока по ключу и все. А проводить проверки над снежком можно в ивенте бросания его.Сервер выдает ошыбку null
вот код
ругается на эту строку
item.addEnchantment(Enchantment.LOOT_BONUS_BLOCKS, 10);
Код:@EventHandler public void onHitSnowBall(ProjectileHitEvent e) { if(e.getEntity().getShooter() instanceof Player) { Player p = (Player) e.getEntity().getShooter(); Player t = (Player) e.getHitEntity(); ItemStack item = p.getPlayer().getInventory().getItemInMainHand(); item.addEnchantment(Enchantment.LOOT_BONUS_BLOCKS, 10); item.setType(Material.SNOWBALL); if(item != null && item.getType() == Material.SNOWBALL && item.getEnchantmentLevel(Enchantment.LOOT_BONUS_BLOCKS) >= 10) { if(e.getHitEntity() instanceof Player) { if (p.getGameMode() == GameMode.SURVIVAL) { p.getInventory().addItem(item); p.updateInventory(); } if (p.getGameMode() == GameMode.CREATIVE) { } p.sendMessage(ChatColor.GOLD + "Ты кикнул " + ChatColor.AQUA + t.getName()); Bukkit.getScheduler().runTask(main.getInstance(), () -> t.kickPlayer(ChatColor.RED + "Кикнуты администратором")); } } } }
@mirrerror
Обыкновенно, ты забыл добавить getItemInMainHand.а как мне тогда эту строку записпть
ItemStack item = p.getPlayer().getInventory();
БредПри бросании снежка записывай игрока в коллекцию а лучше в мапу пусть ключем будет ентити снежка а значение это будет игрок который бросил и при попадании просто доставай из мапы игрока по ключу и все.
В каком же месте и что тебя не устраивает? Если игрок после того как кинул снежок сменит предмет в руке то как ты достанешь именно тот снежок который был кинут? А если у игрока весь инвентарь в сежках? А если игрок выкинет все снежки из инвентаря?
Я уже дал рабочее решение этой проблемы, а то, что ты предлагаешь хранение в мапе - бред и самый обычный костыль.В каком же месте и что тебя не устраивает? Если игрок после того как кинул снежок сменит предмет в руке то как ты достанешь именно тот снежок который был кинут? А если у игрока весь инвентарь в сежках? А если игрок выкинет все снежки из инвентаря?
Ну Дак как получить именно тот снежок который был кинут, из инвентаря игрока?)Я уже дал рабочее решение этой проблемы, а то, что ты предлагаешь хранение в мапе - бред и самый обычный костыль.
Metadata/PersistentDataContainer тебе в помощь.Ну Дак как получить именно тот снежок который был кинут, из инвентаря игрока?)
Каким образом ты хочешь это реализовать? Тоже через 2 ивента?)Metadata/PersistentDataContainer тебе в помощь.
Да, через два ивентаКаким образом ты хочешь это реализовать? Тоже через 2 ивента?)
Тоже самое только без мапы) я предложил то что будет понятнее TC, а ты предлагаешь ту же логику только более сложную вот и все.Да, через два ивента
Использования двух ивентов я не называл бредом, начнем с этого.Тоже самое только без мапы)
Работа с мапой как раз будет запарнее, чем с Metadata/PersistentDataContainer, так еще и работать будет криво.я предложил то что будет понятнее TC, а ты предлагаешь ту же логику только более сложную вот и все.
Ну для кого как, по моему мнению использовать мапу куда легче чем записывать данные на предмет а после проверять все предметы в инвенторе на наличие этих данных.Использования двух ивентов я не называл бредом, начнем с этого.
Работа с мапой как раз будет запарнее, чем с Metadata/PersistentDataContainer.
Нафига? Ты вообще видел мой вариант решения?а после проверять все предметы в инвенторе на наличие этих данных.
Ты куда-то его вообще кидал? Даже если без проверки всего инвентаря все равно по моему мнению легче понять как работает мапа чем MetaData.Нафига? Ты вообще смотрел мой вариант решения?
http://rubukkit.org/threads/projectilehitevent-snezhok-v-igroka.179464/page-2#post-1680813Ты куда-то его вообще кидал? Даже если без проверки всего инвентаря все равно по моему мнению легче понять как работает мапа чем MetaData.
@EventHandler
public void onHitSnowBall(ProjectileHitEvent e) {
if(e.getEntity().getShooter() instanceof Player) {
Player p = (Player) e.getEntity().getShooter();
Player t = (Player) e.getHitEntity();
ItemStack item = p.getPlayer().getInventory();
if(item == null) return;
item.addEnchantment(Enchantment.LOOT_BONUS_BLOCKS, 10);
item.setType(Material.SNOWBALL);
if(item != null && item.getType() == Material.SNOWBALL && item.getEnchantmentLevel(Enchantment.LOOT_BONUS_BLOCKS) >= 10) {
if(e.getHitEntity() instanceof Player) {
if (p.getGameMode() == GameMode.SURVIVAL) {
p.getInventory().addItem(item);
p.updateInventory();
}
if (p.getGameMode() == GameMode.CREATIVE) {
}
p.sendMessage(ChatColor.GOLD + "Ты кикнул " + ChatColor.AQUA + t.getName());
Bukkit.getScheduler().runTask(main.getInstance(), () -> t.kickPlayer(ChatColor.RED + "Кикнуты администратором"));
}
}
}
}
Это вообще другой топик, по этому и не видел. Но факт остается фактом.http://rubukkit.org/threads/projectilehitevent-snezhok-v-igroka.179464/page-2#post-1680813
Чем же его тяжелее понять?)
по моему мнению легче понять как работает мапа чем MetaData.
Видимо тебе проще написать велосипедЭто вообще другой топик, по этому и не видел. Но факт остается фактом.

Тебе надо сделать выдачу снежка с энчантом что-ли? Сделай это через команду свою и все.у меня сейчас такой код
Код:@EventHandler public void onHitSnowBall(ProjectileHitEvent e) { if(e.getEntity().getShooter() instanceof Player) { Player p = (Player) e.getEntity().getShooter(); Player t = (Player) e.getHitEntity(); ItemStack item = p.getPlayer().getInventory(); if(item == null) return; item.addEnchantment(Enchantment.LOOT_BONUS_BLOCKS, 10); item.setType(Material.SNOWBALL); if(item != null && item.getType() == Material.SNOWBALL && item.getEnchantmentLevel(Enchantment.LOOT_BONUS_BLOCKS) >= 10) { if(e.getHitEntity() instanceof Player) { if (p.getGameMode() == GameMode.SURVIVAL) { p.getInventory().addItem(item); p.updateInventory(); } if (p.getGameMode() == GameMode.CREATIVE) { } p.sendMessage(ChatColor.GOLD + "Ты кикнул " + ChatColor.AQUA + t.getName()); Bukkit.getScheduler().runTask(main.getInstance(), () -> t.kickPlayer(ChatColor.RED + "Кикнуты администратором")); } } } }