Repositório GitHubspnda/dart_minecraft

dart_minecraft

Uma biblioteca Dart para Minecraft e APIs da Mojang, autenticação e arquivos NBT.

Capa do projeto dart_minecraft
Estrelas
23
Forks
7
Último push (UTC)
22 de mai. de 2024
Status do projeto
Ativo

README original

Texto original em inglês. Visite o GitHub para a versão atual.

dart_minecraft

Pub Package GitHub Issues GitHub Stars GitHub License

A simple Dart library for interfacing with the Mojang and Minecraft APIs. It also includes NBT read/write functionality and functions to ping Minecraft: Java Edition servers.

You can simply import the library like this:

import 'package:dart_minecraft/dart_minecraft.dart';

Examples

Below are some basic examples of the features included in this library. A better and more extensive example can be found here. However you should always keep in mind that there is a rate limit on all API, set at 600 requests per 10 minutes. You are expected to cache the results and this is not done by the library itself.

Authenticating with Mojang API

dart_minecraft offers functionality to authenticate with the Mojang API called Yggdrasil.

void main() async {
    // This authenticates, invalidates older tokens, and gets a new access
    // and client token. Be sure to store them, but keep them safe.
    MojangAccount account = authenticate("username", "password");
}
Skin/Cape of a player

Get the skin and/or cape texture URL of a player. This just requires the player's UUID or username.

void main() async {
    // PlayerUUID is a Pair<String, String>
    PlayerUuid player = await getUuid('<your username>');
    Profile profile = await getProfile(player.second);
    String url = profile.textures.getSkinUrl();
}
Reading NBT data

Read NBT data from a local file. This supports the full NBT specification, however support for SNBT is not implemented yet. A full list of tags/types usable in this context can be found here.

void main() async {
    // You can create a NbtFile object from a File object or
    // from a String path.
    final nbtReader = NbtReader.fromFile('yourfile.nbt');
    await nbtReader.read();
    NbtCompound rootNode = nbtReader.root;
    // You can now read information from your [rootNode].
    // for example, rootNode[0] will return the first child,
    // if present.
    print(rootNode.first);
    print(rootNode.getChildrenByTag(NbtTagType.TAG_STRING));
}
Pinging a server

Pings the Minecraft: Java Edition (1.6+) server at 'mc.hypixel.net'. You can use any DNS or IP Address to ping them. The server will provide basic information, as the player count, ping and MOTD.

void main() async {
	/// Pinging a server and getting its basic information is 
	/// as easy as that.
	final server = await ping('mc.hypixel.net');
	if (server == null || server.response == null) return;
	print('Latency: ${server.ping}');
	final players = ping.response!.players;
	print('${players.online} / ${players.max}'); // e.g. 5 / 20
}

License

The MIT License, see LICENSE.

Sean Apeler GitHub avatar
Autor no GitHub

Sean Apeler ↗

Studying Computer Engineering

RWTH Aachen UniversityAachen, Germany
LinguagensDart

Categorias

Pacotes publicados por este repositório

Dependências usadas

Lista de dependências 6 itens

Como escolher um repositório para seu projeto?

Filtre pelo caso de uso, compare a atividade e confira o projeto original antes de adotá-lo.

  1. Busque por nome, autor ou descrição e filtre por tema.
  2. Compare estrelas, forks e envios recentes. Estrelas indicam interesse, mas não garantem qualidade.
  3. Confira o README, a licença e as issues no GitHub antes de usar o projeto.

Fontes e manutenção

“A repository is the most basic element of GitHub.”

GitHub Docs — About repositories ↗