API
Documentação completa da API do yBosses, incluindo métodos para gerenciar armas de boss (Matadora) e detectar interações de combate com boss.
Obtendo a Instância da API
Para acessar a API do yBosses, recupere a instância do serviço Bukkit:
import br.com.ystoreplugins.product.ynewbosses.BossAPIHolder;
import org.bukkit.Bukkit;
BossAPIHolder bossAPI = (BossAPIHolder) Bukkit.getServicesManager()
.load(BossAPIHolder.class);
if (bossAPI != null) {
// API está pronta para uso
}Alternativamente, se você estiver usando Maven e tiver o plugin como uma dependência:
import com.ystoreplugins.ynewbosses.api.BossAPI;
BossAPI bossAPI = new BossAPI();Métodos Disponíveis
isUsingMatadora()
Verifica se um jogador está usando uma Matadora (arma de boss).
Parâmetros:
player(Player) - A instância do Jogador a verificar
Retorna:
boolean- true se o jogador está segurando/usando uma Matadora, false caso contrário
Observações:
- Verifica o item atualmente seguro pelo jogador
- Retorna false se o jogador não está segurando nenhum item
- Armas Matadora têm propriedades especiais de caça de boss
- Use isto para aplicar efeitos especiais ou bônus ao usar Matadora
if (bossAPI.isUsingMatadora(player)) {
System.out.println("Jogador está usando uma Matadora!");
}isMatadora()
Verifica se um ItemStack é uma Matadora válida (arma de boss).
Parâmetros:
itemStack(ItemStack) - O ItemStack a verificar
Retorna:
boolean- true se o item é uma Matadora, false caso contrário
Observações:
- Funciona com qualquer ItemStack (seguro, no inventário, no chão, etc.)
- Retorna false se itemstack for null
- Armas Matadora são ferramentas especiais de caça de boss
- Use isto para validar itens antes de processar
ItemStack item = player.getItemInHand();
if (bossAPI.isMatadora(item)) {
System.out.println("Esta é uma arma Matadora!");
}getMatadora()
Recupera dados da arma Matadora pelo seu identificador.
Parâmetros:
s(String) - O identificador único da Matadora
Retorna:
MatadoraHolder- Objeto contendo a configuração da Matadora, ou null se não encontrado
Observações:
- Retorna null se o identificador da Matadora não existe
- Recupera do cache para melhor desempenho
- Contém estatísticas da arma, dano, efeitos especiais
- Use isto para acessar propriedades e configurações da Matadora
MatadoraHolder matadora = bossAPI.getMatadora("legendary_matadora");
if (matadora != null) {
System.out.println("Matadora recuperada: " + matadora);
}Estruturas de Dados
MatadoraHolder
Representa uma configuração de Matadora (arma de boss). Contém:
- Identificador e nome da arma
- Configuração de dano
- Efeitos especiais e bônus contra bosses
- Taxas de golpe crítico
- Encantamentos personalizados
- Configurações de durabilidade
Melhores Práticas
- Sempre verificar valores retornados ao recuperar dados de Matadora
- Usar isMatadora() antes de processar itens para validar que são armas de boss
- Usar isUsingMatadora() para detectar uso de arma de boss para efeitos especiais
- Armazenar em cache dados de Matadora se acessando frequentemente a mesma arma
- Lidar com respostas nulas graciosamente quando Matadora não existe
- Aplicar bônus especiais quando jogadores usam Matadora contra bosses
Exemplos de Uso
Exemplo 1: Detectando Uso de Matadora
BossAPIHolder bossAPI = (BossAPIHolder) Bukkit.getServicesManager()
.load(BossAPIHolder.class);
if (bossAPI.isUsingMatadora(player)) {
player.sendMessage("§aSua Matadora está pronta para a batalha!");
} else {
player.sendMessage("§cVocê precisa de uma Matadora para lutar contra bosses!");
}Exemplo 2: Validando Item como Matadora
BossAPIHolder bossAPI = (BossAPIHolder) Bukkit.getServicesManager()
.load(BossAPIHolder.class);
ItemStack item = player.getItemInHand();
if (bossAPI.isMatadora(item)) {
System.out.println("Arma Matadora válida detectada");
} else {
System.out.println("Este item não é uma Matadora");
}Exemplo 3: Obtendo Configuração de Matadora
BossAPIHolder bossAPI = (BossAPIHolder) Bukkit.getServicesManager()
.load(BossAPIHolder.class);
MatadoraHolder matadora = bossAPI.getMatadora("elite_matadora");
if (matadora != null) {
System.out.println("Arma Matadora carregada: " + matadora);
} else {
System.out.println("Matadora não encontrada");
}Exemplo 4: Bônus de Combate contra Boss
@EventHandler
public void onPlayerAttack(EntityDamageByEntityEvent event) {
BossAPIHolder bossAPI = (BossAPIHolder) Bukkit.getServicesManager()
.load(BossAPIHolder.class);
if (!(event.getDamager() instanceof Player)) return;
Player player = (Player) event.getDamager();
if (bossAPI.isUsingMatadora(player)) {
// Aplicar bônus de dano de 50% contra bosses
double baseDamage = event.getDamage();
event.setDamage(baseDamage * 1.5);
player.sendMessage("§6+50% bônus de dano Matadora aplicado!");
}
}Exemplo 5: Verificação de Arma Matadora ao Entrar
@EventHandler
public void onPlayerJoin(PlayerJoinEvent event) {
BossAPIHolder bossAPI = (BossAPIHolder) Bukkit.getServicesManager()
.load(BossAPIHolder.class);
Player player = event.getPlayer();
ItemStack held = player.getItemInHand();
if (bossAPI.isMatadora(held)) {
player.sendMessage("§aBem-vindo de volta! Sua Matadora está equipada.");
}
}Exemplo 6: Validar Inventário para Matadora
BossAPIHolder bossAPI = (BossAPIHolder) Bukkit.getServicesManager()
.load(BossAPIHolder.class);
boolean hasMatadora = false;
for (ItemStack item : player.getInventory().getContents()) {
if (item != null && bossAPI.isMatadora(item)) {
hasMatadora = true;
break;
}
}
if (hasMatadora) {
System.out.println("Jogador possui uma Matadora no inventário");
}Exemplo 7: Controle de Acesso à Arena de Boss
@EventHandler
public void onPlayerMove(PlayerMoveEvent event) {
BossAPIHolder bossAPI = (BossAPIHolder) Bukkit.getServicesManager()
.load(BossAPIHolder.class);
Location to = event.getTo();
// Verificar se entrando na arena de boss
if (isBossArena(to)) {
Player player = event.getPlayer();
if (!bossAPI.isUsingMatadora(player)) {
event.setCancelled(true);
player.sendMessage("§cVocê deve estar empunhando uma Matadora para entrar!");
}
}
}
private boolean isBossArena(Location loc) {
// Implementação aqui
return false;
}Exemplo 8: Sistema de Durabilidade de Matadora
@EventHandler
public void onPlayerAttack(EntityDamageByEntityEvent event) {
BossAPIHolder bossAPI = (BossAPIHolder) Bukkit.getServicesManager()
.load(BossAPIHolder.class);
if (!(event.getDamager() instanceof Player)) return;
Player player = (Player) event.getDamager();
ItemStack held = player.getItemInHand();
if (bossAPI.isMatadora(held)) {
// Reduzir durabilidade no ataque
short durability = held.getDurability();
held.setDurability((short) (durability + 1));
if (durability > 200) {
player.sendMessage("§c⚠ Sua Matadora está quase quebrada!");
}
}
}Exemplo 9: Detecção de Troca de Arma Matadora
@EventHandler
public void onPlayerItemHeld(PlayerItemHeldEvent event) {
BossAPIHolder bossAPI = (BossAPIHolder) Bukkit.getServicesManager()
.load(BossAPIHolder.class);
Player player = event.getPlayer();
ItemStack newItem = player.getInventory().getItem(event.getNewSlot());
if (bossAPI.isMatadora(newItem)) {
player.sendMessage("§a§lMatadora equipada!");
player.playSound(player.getLocation(), Sound.ENTITY_EXPERIENCE_ORB_PICKUP, 1.0f, 2.0f);
}
}Exemplo 10: Manipulador Multi-Tipo de Matadora
public class MatadoraTypeHandler {
private final BossAPIHolder bossAPI;
public MatadoraTypeHandler(BossAPIHolder bossAPI) {
this.bossAPI = bossAPI;
}
public void applyBonusBasedOnType(Player player) {
ItemStack held = player.getItemInHand();
if (!bossAPI.isMatadora(held)) return;
// Determinar tipo de Matadora e aplicar bônus
String displayName = held.getItemMeta() != null ?
held.getItemMeta().getDisplayName() : "";
if (displayName.contains("Legendary")) {
applyLegendaryBonus(player);
} else if (displayName.contains("Elite")) {
applyEliteBonus(player);
} else if (displayName.contains("Rare")) {
applyRareBonus(player);
}
}
private void applyLegendaryBonus(Player player) {
player.addPotionEffect(new PotionEffect(PotionEffectType.STRENGTH,
200, 2, true, false));
}
private void applyEliteBonus(Player player) {
player.addPotionEffect(new PotionEffect(PotionEffectType.STRENGTH,
200, 1, true, false));
}
private void applyRareBonus(Player player) {
player.addPotionEffect(new PotionEffect(PotionEffectType.STRENGTH,
200, 0, true, false));
}
}