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';
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.
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");
}
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();
}
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));
}
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
}
The MIT License, see LICENSE.