Serveur minecraft

API Mojang – wiki.vg – Monter un serveur MineCraft

Le 28 janvier 2020 - 4 minutes de lecture

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 être application / 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

Votre commentaire sera révisé par les administrateurs si besoin.