So like I said the code is supposed to discover a new recipe. Code: package me.sleepyhere.betterelytra import org.bukkit.Bukkit import org.bukkit.Material import org.bukkit.NamespacedKey import org.bukkit.entity.EntityType import org.bukkit.entity.Player import org.bukkit.event.EventHandler import org.bukkit.event.Listener import org.bukkit.event.entity.EntityPickupItemEvent import org.bukkit.inventory.ItemStack import org.bukkit.inventory.ShapedRecipe import org.bukkit.plugin.java.JavaPlugin class Elytra : JavaPlugin() { @Override override fun onEnable() { logger.info("Better Elytra Enabled.") var elytra = ItemStack(Material.ELYTRA, 2) var key = NamespacedKey(this, "Elytra") var recipe = ShapedRecipe(key, elytra) recipe.shape("DED", "LSL", "LSL") recipe.setIngredient('D', Material.DIAMOND_BLOCK) recipe.setIngredient('E', Material.ELYTRA) recipe.setIngredient('L', Material.LEATHER) recipe.setIngredient('S', Material.STICK) Bukkit.addRecipe(recipe) fun onListening(listener: Listener) { server.pluginManager.registerEvents(listener, this) class MyListener : Listener { @EventHandler fun onPlayerJoin(event: EntityPickupItemEvent?) { if (event != null) { if(event.entityType == EntityType.PLAYER) { var elytra = ItemStack(Material.ELYTRA) if(event.item == elytra) { val p = event.entity as Player p.discoverRecipe(key) } } } } } } } override fun onDisable() { // Plugin shutdown logic logger.info("Disabling . . . BYEEEEEEEEE") } } And Btw Im using Kotlin So Theres no error but nothing happens when I pickup an elytra.
I believe you need the @EventListener notation, but I don't code in Kotlin so I'm not sure how you'd do that... If you add prints to different locations in your event function, do they ever print? Can you confirm the event is ever being fired?
Ok, I'll try that. I tried it but I cant seed to add it. I already have eventhandler notation but I think I didn't import event listener idk how EDIT by Moderator: merged posts, please use the edit button instead of double posting.
I fixed my code now but it still doesn't work Nothing is firing... Code: package me.sleepyhere.betterelytra import org.bukkit.Bukkit import org.bukkit.Material import org.bukkit.NamespacedKey import org.bukkit.entity.EntityType import org.bukkit.entity.Player import org.bukkit.event.EventHandler import org.bukkit.event.Listener import org.bukkit.event.entity.EntityPickupItemEvent import org.bukkit.event.player.PlayerJoinEvent import org.bukkit.inventory.ItemStack import org.bukkit.inventory.ShapedRecipe import org.bukkit.plugin.java.JavaPlugin class Elytra : JavaPlugin(), Listener { @Override override fun onEnable() { logger.info("Better Elytra Enabled.") var elytra = ItemStack(Material.ELYTRA, 2) var key = NamespacedKey(this, "Elytra") var recipe = ShapedRecipe(key, elytra) recipe.shape("DED", "LSL", "LSL") recipe.setIngredient('D', Material.DIAMOND_BLOCK) recipe.setIngredient('E', Material.ELYTRA) recipe.setIngredient('L', Material.LEATHER) recipe.setIngredient('S', Material.STICK) Bukkit.addRecipe(recipe) server.pluginManager.registerEvents(Elytra(), this) class MyListener : Listener { @EventHandler fun onEntityPickUp(event: EntityPickupItemEvent?) { logger.info("Bro this event fired LOL") if (event != null) { if (event.entityType == EntityType.PLAYER) { var elytra = ItemStack(Material.ELYTRA) if (event.item == elytra) { val p = event.entity as Player p.discoverRecipe(key) } } } } } } override fun onDisable() { // Plugin shutdown logic logger.info("Disabling . . . BYEEEEEEEEE") } }
@_SleepyHere You still have classes inside your onEnable, that you never use. You register an "Elytra" class, no idea why you make a new instance of the same class that does not have any listener methods.