API
A API fornece uma interface pública para desenvolvedores integrarem seus plugins ao sistema de blocos customizados do yFarmBlock.
Obtendo a instância da API
A API é exposta como singleton pela classe yFarmBlockAPI (pacote com.ystoreplugins.yfarmblock.api).
Exemplo:
import com.ystoreplugins.yfarmblock.api.yFarmBlockAPI;
import org.bukkit.block.Block;
yFarmBlockAPI api;
try {
api = yFarmBlockAPI.getInstance();
} catch (IllegalStateException e) {
// Plugin yFarmBlock não está ativo / API não inicializada
return;
}A API é inicializada no onEnable do yFarmBlock. Se o plugin não estiver carregado, getInstance() lança IllegalStateException.
Métodos disponíveis
getInstance()
Obtém a instância singleton da API.
yFarmBlockAPI api = yFarmBlockAPI.getInstance();Retorno:
- Instância de
yFarmBlockAPI
Observações:
- Lança
IllegalStateExceptionse a API ainda não foi inicializada
setCustomBlock(Block block)
Registra um bloco como customizado com base no material-mapping do config.yml.
Block block = player.getTargetBlock(null, 5);
boolean success = api.setCustomBlock(block);Parâmetros:
block— bloco a ser registrado (nullretornafalse)
Retorno:
truese registrado com sucessofalsese o material não está no mapping, se o bloco já está registrado ou seblockénull
Observações:
- O material do bloco (
block.getType().name()) precisa existir emmaterial-mappingna config - A tag salva é o valor mapeado (ex.:
"cactus") - O registro é persistido automaticamente
isCustomBlock(Block block)
Verifica se um bloco está registrado como customizado.
if (api.isCustomBlock(block)) {
// bloco gerenciado pelo yFarmBlock
}Parâmetros:
block— bloco a verificar (nullretornafalse)
Retorno:
truese o bloco está registrado;falsecaso contrário
removeCustomBlock(Block block)
Remove o registro de um bloco customizado.
boolean removed = api.removeCustomBlock(block);Parâmetros:
block— bloco a remover do registro (nullretornafalse)
Retorno:
truese removido com sucessofalsese não estava registrado ou seblockénull
Observações:
- A alteração é persistida automaticamente
- Não quebra o bloco no mundo; apenas remove o registro interno
getCustomBlockType(Block block)
Retorna o tipo/tag do bloco customizado.
String type = api.getCustomBlockType(block);
if (type != null) {
// ex.: "cactus"
}Parâmetros:
block— bloco a verificar (nullretornanull)
Retorno:
- Tag do bloco (ex.:
"cactus") ounullse não for customizado
Exemplo de integração
import com.ystoreplugins.yfarmblock.api.yFarmBlockAPI;
import org.bukkit.block.Block;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.block.BlockPlaceEvent;
public class FarmBlockHook implements Listener {
@EventHandler
public void onPlace(BlockPlaceEvent event) {
yFarmBlockAPI api;
try {
api = yFarmBlockAPI.getInstance();
} catch (IllegalStateException e) {
return;
}
Block block = event.getBlockPlaced();
Player player = event.getPlayer();
if (api.setCustomBlock(block)) {
player.sendMessage("§aBloco registrado como farm customizada: §f"
+ api.getCustomBlockType(block));
}
}
}Dependência softdepend
No plugin.yml do seu plugin:
softdepend: [yFarmBlock]Compile com o JAR do yFarmBlock no classpath para acessar com.ystoreplugins.yfarmblock.api.yFarmBlockAPI.