LogoyStore

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

  1. Sempre verificar valores retornados ao recuperar dados de Matadora
  2. Usar isMatadora() antes de processar itens para validar que são armas de boss
  3. Usar isUsingMatadora() para detectar uso de arma de boss para efeitos especiais
  4. Armazenar em cache dados de Matadora se acessando frequentemente a mesma arma
  5. Lidar com respostas nulas graciosamente quando Matadora não existe
  6. 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));
    }
}

Nesta página