Então pessoal eu tenho um evento ( entityExplodeEvent ), que verificar se a entidade cujo vai explodir possui um determinado metadado ou não.
Porem ele não identifica esse metadado... Segue código:
@EventHandler
fun boostTnt (e: EntityExplodeEvent) {
Bukkit.broadcastMessage("Algo explodindo no mundo...") //Apenas para debug.
val entityTypeEvent = e.entityType
if (e.entity.hasMetadata(TNTBOOST)) {
Bukkit.broadcastMessage("Tnt Capturada...") //Apenas para debug.
e.isCancelled = true
e.entity.removeMetadata(TNTBOOST, plugin)
}
}
Aqui esta como eu atribuo o metadado:
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
fun boostTntSetData (e: BlockPlaceEvent) {
try {
val itemPlayerHand: ItemStack = e.player.itemInHand
if (itemPlayerHand.itemMeta.displayName != null) {
if (itemPlayerHand.itemMeta.displayName == "Tnt de impulssão!") {
e.blockPlaced.setMetadata(TNTBOOST, FixedMetadataValue(plugin, "boostTnt"))
}
}
} catch (e: Exception) {}
}
E por ultimo aqui esta o item (TNT) que eu recebo:
var boostTnt: ItemStack = ItemStack(Material.TNT)
boostTnt.addUnsafeEnchantment(Enchantment.DURABILITY, 2)
var boostTntMeta: ItemMeta = boostTnt.itemMeta
boostTntMeta.displayName = "Tnt de impulssão!"
boostTntMeta.lore = boostTntLore
boostTnt.setItemMeta(boostTntMeta)
target.inventory.addItem(boostTnt)
Só relembrando o problema todo esta em que mesmo eu usando a TNT com meu metadados o evento não reconhece que ela esta com Metadados.