PlayerInteractEvent для плит можно ещё
Так даже лучше будет.
Я тут попробовал забасать аптечки из сталкера типо вот что вышло, но вылазет ошибка .
==============================
Главный класс
==============================
package MainPack;
import java.util.ArrayList;
import java.util.List;
import org.bukkit.Material;
import org.*********ventory.ItemStack;
import org.*********ventory.meta.ItemMeta;
import org.bukkit.plugin.java.JavaPlugin;
import net.md_5.bungee.api.ChatColor;
public class Main extends JavaPlugin{
public void onEnable() {
getServer().getPluginManager().registerEvents( new SmallHandler(), this);
getLogger().info("Healer Started !");
SmallMain();
}
public void onDisable() {
getLogger().info("Healer Disabled !");
}
private void SmallMain()
{
ItemStack item = new ItemStack(Material.GOLDEN_APPLE);
ItemMeta meta = item.getItemMeta();
meta.setDisplayName(ChatColor.GREEN + "Аптечка");
List<String> lore = new ArrayList<String>();
lore.add("Обыкновенная аптечка есть у каждого сталкера . Восстанавливает 5хп !");
item.setItemMeta(meta);
meta.setLore(lore);
}
====================================
Слушатель
====================================
package MainPack;
import org.bukkit.Material;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.block.Action;
import org.bukkit.event.player.PlayerInteractEvent;
import org.*********ventory.ItemStack;
import org.*********ventory.meta.ItemMeta;
import net.md_5.bungee.api.ChatColor;
public class SmallHandler implements Listener{
@EventHandler
public void onInteract(PlayerInteractEvent e)
{
if(e.getPlayer().getItemInHand().getType() != Material.GOLDEN_APPLE) return;
if(e.getAction() != Action.RIGHT_CLICK_AIR && e.getAction() != Action.RIGHT_CLICK_BLOCK) return;
Player p = e.getPlayer();
ItemStack item = p.getItemInHand();
ItemMeta meta = item.getItemMeta();
if(!(meta.hasDisplayName())) return;
if(!(meta.hasLore())) return;
if(!(meta.getDisplayName().equals(ChatColor.GREEN + "Аптечка"))) return;
if(!(meta.getLore().get(0).equals("Обыкновенная аптечка есть у каждого сталкера . Восстанавливает 5хп !"))) return;
e.setCancelled(true);
onRemoveItem(p);
onHeal(p);
}
private void onRemoveItem(Player p)
{
ItemStack item = p.getItemInHand();
item.setAmount(item.getAmount() - 1);
p.setItemInHand(item);
}
private void onHeal(Player p)
{
p.setHealth(p.getHealth() + 5);
p.setHealth(p.getHealth());
}
}
Ошибка прикреплена .
Заранее спасибо!