API Mojang – wiki.vg – Monter un serveur MineCraft
Sommaire
Remarques
- Toutes les API publiques sont limitées en taux, vous devez donc mettre en cache les résultats. Il est actuellement fixé à 600 demandes par 10 minutes, mais cela peut changer.
- Pour certaines parties de l'API, les comptes de démonstration sont parfois inclus, parfois non. Mojang ne cesse de changer cela.
Statut de l'API
GET https://status.mojang.com/check
Renvoie le statut de divers services Mojang. Les valeurs possibles sont vert
(pas d'issues), Jaune
(quelques problemes), rouge
(Service indisponible).
Réponse
[
"minecraft.net": "yellow"
,
"session.minecraft.net": "green"
,
"account.mojang.com": "green"
,
"auth.mojang.com": "green"
,
"skins.minecraft.net": "green"
,
"authserver.mojang.com": "green"
,
"sessionserver.mojang.com": "yellow"
,
"api.mojang.com": "green"
,
"textures.minecraft.net": "red"
,
"mojang.com": "green"
]
Nom d'utilisateur -> UUID au moment
OBTENEZ https://api.mojang.com/users/profiles/minecraft/? at =
Cela renverra l'UUID du nom à l'horodatage fourni.
? at = 0
peut être utilisé pour obtenir l'UUID de l'utilisateur d'origine de ce nom d'utilisateur, mais cela ne fonctionne que si le nom a été modifié au moins une fois ou si le compte est hérité.
- L'horodatage est un horodatage UNIX (sans millisecondes)
- Quand le
à
le paramètre n'est pas envoyé, l'heure actuelle est utilisée
Réponse
"id": "7125ba8b1c864508b92bb5c042ccfe2b",
"nom": "KrisJelbring"
-
Nom
est le nom actuel de cet uuide, il est pas le nom demandé! -
héritage
n'apparaît que si vrai (non migré vers le compte mojang) -
démo
n'apparaît que si vrai (compte non payé)
S'il n'y a pas de joueur avec le nom d'utilisateur donné, un code d'état HTTP 204 (sans contenu) est envoyé sans aucun corps HTTP.
Si l'horodatage n'est pas un nombre, trop grand ou trop petit, le code d'état HTTP 400 (Bad Request) est envoyé avec un message d'erreur ressemblant à ceci:
"error": "IllegalArgumentException",
"errorMessage": "Horodatage non valide."
UUID -> Historique des noms
GET https://api.mojang.com/user/profiles//des noms
Renvoie tous les noms d'utilisateur que cet utilisateur a utilisés dans le passé et celui qu'il utilise actuellement. L'UUID doit être indiqué sans tirets.
Réponse
[
"name": "Gold"
,
"name": "Diamond",
"changedToAt": 1414059749000
]
le changéAu
champ est un horodatage Java en millisecondes.
Noms de jeu -> UUID
POST https://api.mojang.com/profiles/minecraft
Cela renverra les UUID des joueurs et certains extras.
Charge utile
[
"maksimkurb",
"nonExistingPlayer" //Test for non-existing player
]
Réponse
[
"id": "0d252b7218b648bfb86c2ae476954d32",
"name": "maksimkurb",
"legacy": true,
"demo": true
]
- le nom est corrigé de la casse
- l'héritage n'apparaît que lorsqu'il est vrai (le profil n'est pas migré vers mojang.com)
- la démo n'apparaît que si elle est vraie (compte non payé)
- IllegalArgumentException est renvoyée lorsque l'un des noms d'utilisateur est nul ou ""
- le
Type de contenu
L'en-tête HTTP doit êtreapplication / json
- Vous ne pouvez pas demander plus de 10 noms par demande
UUID -> Profil + Skin / Cape
GET https://sessionserver.mojang.com/session/minecraft/profile/
Cela renverra le nom d'utilisateur du joueur ainsi que toute information supplémentaire à leur sujet (par exemple, les skins). Exemple: https://sessionserver.mojang.com/session/minecraft/profile/4566e69fc90748ee8d71d7ba5aa00d20
Cela a une limite de taux beaucoup plus stricte: vous pouvez demander le même profil une fois par minute, mais vous pouvez envoyer autant de demandes uniques que vous le souhaitez.
Réponse
"id": "",
"Nom": "",
"Propriétés":[
"nom": "textures",
"valeur": "",
"Signature": ""// Fourni uniquement si? Unsigned = false est ajouté à l'URL
]
-
"héritage": vrai
apparaîtra dans la réponse si l'utilisateur n'a pas migré son compte minecraft.net vers mojang.
La chaîne "value" base64 pour l'objet "textures" décodé:
"horodatage": ,
"carte d'indentité": "",
"nom de profil": "",
"signatureRequired": true, // Présent uniquement si? unsigned = false est ajouté à l'url
"textures":
"PEAU":
"url": ""
,
"CAPE":
"url": ""
- L'horodatage est parfois dans le passé (probablement en raison de résultats mis en cache?)
- le
"PEAU"
l'objet aura"métadonnées": "modèle": "slim"
si le modèle du joueur a des bras minces (style «Alex?»). Pour les bras carrés (style "Steve?"),"métadonnées"
sera manquant. - Si aucun habillage personnalisé n'a été défini,
"PEAU"
sera manquant.
Que le joueur ait le skin "Alex?" Ou "Steve?" Dépend du code de hachage Java de son UUID. Steve est utilisé pour des hachages réguliers. Exemples d'implémentations: - également
"CAP"
sera manquant si le compte n'a pas de cape.
Changer de peau
POST https://api.mojang.com/user/profile//peau
Cela définira l'habillage du profil sélectionné, mais les serveurs de Mojang récupéreront l'habillage à partir d'une URL. Cela fonctionnera également pour les anciens comptes.
Réponse
En cas d'erreur, le serveur renverra un JSON avec l'erreur. (Le succès est une charge utile vierge)
Autorisation: porteur
Charge utile
La charge utile de cette API se compose de deux champs de formulaire encodés en URL (conjoints par «&»).
modèle =<""/"slim">& url =
model est une chaîne vide pour le modèle par défaut et "slim" pour le modèle slim
Exemple
curl -H "Autorisation: porteur"--data-urlencode" model = "--data-urlencode" url = http: //assets.mojang.com/SkinTemplates/steve.png "https://api.mojang.com/user/profile/ /peau
POST / utilisateur / profil // skin HTTP / 1.1 Hôte: api.mojang.com User-Agent: curl / 7.49.0 J'accepte: */* Autorisation: porteur Longueur du contenu: 69 Type de contenu: application / x-www-form-urlencoded model = & url = http% 3A% 2F% 2Fassets.mojang.com% 2FSkinTemplates% 2Fsteve.png
Télécharger un skin
PUT https://api.mojang.com/user/profile//peau
Cela télécharge un skin sur les serveurs de Mojang. Il définit également la peau des utilisateurs. Cela fonctionne également sur les comptes hérités.
Réponse
Pas de réponse sauf erreur
Autorisation: porteur
Charge utile
La charge utile de cette API se compose de données de formulaire en plusieurs parties. Il y a deux parties (l'ordre n'a pas d'importance b / c de frontière):
modèle | Chaîne vide pour le modèle par défaut et "slim" pour le modèle slim |
fichier | Données de fichier image brutes |
Exemple
curl -X PUT -H "Autorisation: porteur"-F model = alex -F file =" @ alex.png; type = image / png "https://api.mojang.com/user/profile/ /peau
PUT / utilisateur / profil // skin HTTP / 1.1 Hôte: api.mojang.com User-Agent: curl / 7.49.0 J'accepte: */* Autorisation: porteur Longueur du contenu: Type de contenu: multipart / form-data; limite = - Contenu-Disposition: formulaire-données; nom = "modèle" svelte - Contenu-Disposition: formulaire-données; nom = "fichier"; filename = "alex.png" Type de contenu: image / png - -
Réinitialiser la peau
SUPPRIMER https://api.mojang.com/user/profile//peau
Réinitialise l'habillage de l'utilisateur à celui par défaut.
Réponse
Pas de réponse sauf erreur
Autorisation: porteur
Exemple
curl -X DELETE -H "Autorisation: porteur"https://api.mojang.com/user/profile/ /peau
SUPPRIMER / utilisateur / profil // skin HTTP / 1.1 Hôte: api.mojang.com User-Agent: curl / 7.46.0 J'accepte: */* Autorisation: porteur
Flux de questions-réponses de sécurité
Cela est nécessaire pour faire fonctionner le point de terminaison de changement de peau au cas où les services ne font pas encore confiance à votre IP.
Vérifiez si des questions de sécurité sont nécessaires
OBTENEZ https://api.mojang.com/user/security/location Autorisation: porteur
Bonne réponse:
204 SANS CONTENU
Mauvaise réponse:
"error": "ForbiddenOperationException",
"errorMessage": "L'IP actuelle n'est pas sécurisée"
Obtenez la liste des questions
OBTENEZ https://api.mojang.com/user/security/challenges Autorisation: porteur
Répondre:
[
"answer":
"id": 123
,
"question":
"id": 1,
"question": "What is your favorite pet's name?"
,
"answer":
"id": 456
,
"question":
"id": 2,
"question": "What is your favorite movie?"
,
"answer":
"id": 789
,
"question":
"id": 3,
"question": "What is your favorite author's last name?"
],
Les identifiants possibles sont les suivants:
1 Quel est le nom de votre animal préféré? 2 Quel est votre film préféré? 3 Quel est le nom de famille de votre auteur préféré? 4 Quel est le nom de famille de votre artiste préféré? 5 Quel est le nom de votre acteur préféré? 6 Quelle est votre activité préférée? 7 Quel est votre restaurant préféré? 8 Quel est le nom de votre dessin animé préféré? 9 Quel est le nom de la première école que vous avez fréquentée? 10 Quel est le nom de famille de votre professeur préféré? 11 Quel est le prénom de votre meilleur ami? 12 Quel est le nom de votre cousin préféré? 13 Quel était le prénom de votre première fille / petit ami? 14 Quel était le nom de votre premier animal en peluche? 15 Quel est le deuxième prénom de votre mère? 16 Quel est le deuxième prénom de votre père? 17 Quel est le deuxième prénom de votre frère aîné? 18 Dans quelle ville tes parents se sont-ils rencontrés? 19 Dans quel hôpital êtes-vous né? 20 Quelle est votre équipe préférée? 21 Quel âge aviez-vous lorsque vous avez obtenu votre premier ordinateur? 22 Quel âge aviez-vous lorsque vous avez obtenu votre première console de jeu? 23 Quel a été votre premier jeu vidéo? 24 Quel est votre jeu de cartes préféré? 25 Quel est votre jeu de société préféré? 26 Quelle a été votre première console de jeu? 27 Quel a été le premier livre que vous ayez lu? 28 Où êtes-vous allé lors de vos premières vacances? 29 Dans quelle ville vit ta grand-mère? 30 Dans quelle ville vit ton grand-père? 31 Quel est le prénom de votre grand-mère? 32 Quel est le prénom de votre grand-père? 33 Quel est votre plat le moins préféré? 34 Quelle est votre saveur de crème glacée préférée? 35 Quelle est votre saveur de crème glacée préférée? 36 Quel est votre endroit préféré à visiter? 37 Quel est votre métier de rêve? 38 De quelle couleur était votre premier animal de compagnie? 39 Quel est votre numéro porte-bonheur?
Renvoyez les réponses
POST https://api.mojang.com/user/security/location Autorisation: porteur
[
"id": 123,
"answer" : "foo"
,
"id": 456,
"answer" : "bar"
,
"id": 589,
"answer" : "baz"
]
En cas d'échec, vous obtiendrez une sorte d'erreur. Sauf s'il s'agit d'une erreur de syntaxe ou de structure json, ce sera ceci:
"error": "ForbiddenOperationException",
"errorMessage": "Au moins une réponse était incorrecte"
En cas de succès:
204 SANS CONTENU
Serveurs bloqués
GET https://sessionserver.mojang.com/blockedservers
Renvoie une liste des hachages SHA1 utilisés pour comparer les adresses de serveur lorsque le client tente de se connecter.
Les clients vérifient le nom en minuscules à l'aide du jeu de caractères ISO-8859-1 par rapport à cette liste. Ils tenteront également de vérifier les sous-domaines, en remplaçant chaque niveau par un *
. Plus précisément, il se divise en fonction de la .
dans le domaine, passe par chaque section en supprimant une à la fois. Par exemple, pour mc.example.com
, il essaierait mc.example.com
, * .example.com
, et * .com
. Avec les adresses IP (vérifiées en ayant 4 sections divisées, chaque section étant un entier valide entre 0 et 255 inclus), la substitution commence à la fin, donc pour 192.168.0.1
, il essaierait 192.168.0.1
, 192.168.0. *
, 192.168. *
, et 192. *
.
Cette vérification est effectuée par la classe bootstrap dans netty. La classe netty par défaut est remplacée par une dans la dépendance com.mojang: netty chargée par le lanceur. Cela lui permet d'affecter n'importe quelle version utilisant netty (1.7+)
Réponse
Une liste séparée par des lignes de tous les hachages SHA1.
Certains des ~ 2200 hachages actuels ont été fissurés.
6f2520f8bd70a718c568ab5274c56bdbbfc14ef4: *. Minetime.com 7ea72de5f8e70a2ac45f1aa17d43f0ca3cddeedd: *. Trollingbrandon.club c005ad34245a8f2105658da2d6d6e8545ef0f0de: *. skygod.us c645d6c6430db3069abd291ec13afebdb320714b: *. mineaqua.es 8bf58811e6ebca16a01b842ff0c012db1171d7d6: *. Eulablows.host 8789800277882d1989d384e7941b6ad3dadab430: *. Moredotsmoredots.xyz e40c3456fb05687b8eeb17213a47b263d566f179: *. brandonlovescock.bid 278b24ffff7f9f46cf71212a4c0948d07fb3bc35: *. Brandonlovescock.club c78697e385bfa58d6bd2a013f543cdfbdc297c4f: *. mineaqua.net b13009db1e2fbe05465716f67c8d58b9c0503520: *. endercraft.com 3e560742576af9413fca72e70f75d7ddc9416020: *. Insanefactions.org 986204c70d368d50ffead9031e86f2b9e70bb6d0: *. Playmc.mx 65ca8860fa8141da805106c0389de9d7c17e39bf: *. Howdoiblacklistsrv.host 7dca807cc9484b1eed109c003831faf189b6c8bf: *. Brandonlovescock.online c6a2203285fb0a475c1cd6ff72527209cc0ccc6e: *. brandonlovescock.press e3985eb936d66c9b07aa72c15358f92965b1194e: *. insanenetwork.org b140bec2347bfbe6dcae44aa876b9ba5fe66505b: *. phoenixnexus.net 27ae74becc8cd701b19f25d347faa71084f69acd: *. Arkhamnetwork.org 48f04e89d20b15de115503f22fedfe2cb2d1ab12: brandonisan.unusualperson.com 9f0f30820cebb01f6c81f0fdafefa0142660d688: *. Kidslovemy500dollarranks.club cc90e7b39112a48064f430d3a08bbd78a226d670: *. eccgamers.com 88f155cf583c930ffed0e3e69ebc3a186ea8cbb7: *. Fucktheeula.com 605e6296b8dba9f0e4b8e43269fe5d053b5f4f1b: *. Mojangendorsesbrazzers.webcam 5d2e23d164a43fbfc4e6093074567f39b504ab51: touchmybody.redirectme.net f3df314d1f816a8c2185cd7d4bcd73bbcffc4ed8: *. mojangsentamonkeyinto.space 073ca448ef3d311218d7bd32d6307243ce22e7d0: *. Diacraft.org 33839f4006d6044a3a6675c593fada6a690bb64d: *. Diacraft.de e2e12f3b7b85eab81c0ee5d2e9e188df583fe281: *. eulablacklist.club 11a2c115510bfa6cb56bbd18a7259a4420498fd5: *. Slaughterhousepvp.com 75df09492c6c979e2db41116100093bb791b8433: *. Timelesspvp.net d42339c120bc10a393a0b1d2c6a2e0ed4dbdd61b: *. herowars.org 4a1b3b860ba0b441fa722bbcba97a614f6af9bb8: justgiveinandblockddnsbitches.ddns.net b8c876f599dcf5162911bba2d543ccbd23d18ae5: brandonisagainst.health-carereform.com 9a9ae8e9d0b6f3bf54c266dcd1e4ec034e13f714: brandonwatchesporn.onthewifi.com 336e718ffbc705e76b4a72884172c6b95216b57c: canyouwildcardipsplease.gotdns.ch 27cf97ecf24c92f1fe5c84c5ff654728c3ee37dd: letsplaysome.servecounterstrike.com 32066aa0c7dc9b097eed5b00c5629ad03f250a2d: mojangbrokeintomy.homesecuritymac.com 39f4bbfd123a5a5ddbf97489877831c15a70d7f2: *. Primemc.org f32f824d41aaed334aef248fbe3a0f8ecf4ac1a0: *. meep.in c22efe4cf7fb319ca2387bbc930c1fdf77ab72fc: *. itsjerryandharry.com cc8e1ae93571d144bf4b37369cb8466093d6db5a: *. thearchon.net 9c0806e5ffaccb45121e57e4ce88c7bc76e057f1: *. Goatpvp.com 5ca81746337088b7617c851a1376e4f00d921d9e: *. Gotpvp.com a5944b9707fdb2cc95ed4ef188cf5f3151ac0525: *. guildcraft.org
Statistiques
POST https://api.mojang.com/orders/statistics
Obtenez des statistiques sur les ventes de Minecraft.
Charge utile
La charge utile est une liste json d'options sous la clé metricKeys.
Vous recevrez un seul objet correspondant à la somme des ventes du ou des types demandés.
Vous devez demander au moins un type de vente.
Voici la liste par défaut utilisée par https://minecraft.net/en/stats/
"metricKeys": [
"item_sold_minecraft",
"prepaid_card_redeemed_minecraft"
]
Les options valides sont:
item_sold_minecraft prepaid_card_redeemed_minecraft item_sold_cobalt item_sold_scrolls
Réponse
Un objet json est retourné avec le nombre total d'exemplaires vendus, le nombre d'exemplaires vendus au cours des dernières 24h et le nombre de ventes par seconde.
"total": quantité totale vendue,
"last24h": nombre entier vendu au cours des dernières 24 heures,
"saleVelocityPerSeconds": ventes moyennes décimales par seconde
Exemples
C # | wrapper API complet
Allez | UUID ou noms aux profils avec des skins, des capes et des historiques de noms
Python | wrapper API complet
Python | UUID ou noms aux profils
Python | fichier de noms en uuids + fichier de noms
PHP | UUID ou noms aux profils avec des skins, des têtes et des historiques de noms
PHP | UUID aux noms
PHP | UUID aux noms, noms aux uuides
Java | Wrapper API presque complet
JavaScript | UUID ou noms aux profils avec des skins, des capes et des historiques de noms
Commentaires
Laisser un commentaire