GitHub 儲存庫spnda/dart_minecraft

dart_minecraft

一個用於 Minecraft 和 Mojang Web-API、驗證以及 NBT 檔案的 Dart 庫。

dart_minecraft 專案封面
星標
23
分支
7
最近推送(UTC)
2024年5月22日
專案狀態
未封存

原始 README

以下為英文專案原文快照,最新內容請造訪 GitHub。

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
GitHub 作者

Sean Apeler ↗

Studying Computer Engineering

RWTH Aachen UniversityAachen, Germany
語言Dart

分類

此儲存庫發佈的套件

使用的依賴

依賴清單 6 項

如何選擇適合專案的儲存庫?

先依使用情境篩選,再比較專案活躍情況,最後到原始儲存庫確認使用要求。

  1. 透過儲存庫名稱、作者或描述搜尋,再依技術分類縮小範圍。
  2. 綜合星標、分支與最近推送比較專案;星標反映社群關注,不保證品質。
  3. 使用前在 GitHub 確認 README、授權條款與 Issues。

來源與維護

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

GitHub Docs — About repositories ↗