Você pode seguir a nossa conta no Twitter onde são publicadas notícias sobre Minecraft e links rápidos para a Wiki 

Protocolo do servidor clássico

De Minecraft Wiki
Ir para: navegação, pesquisa
Lang-pt.gif
A tradução da página está em andamento
Sinta-se livre para ajudar a Minecraft Wiki em Português!
cerca de 70% da tradução está concluída
Os conteúdos desta page não são suportados pela Mojang AB, a Minecraft Wiki ou Minecraft Forums.
Information icon.svg
Esse recurso é exclusivo para Edição Java.
Split-arrows.png
Tem sido sugerido que o conteúdo dessa página ser dividida para dentro de "Desatualizados e-date informação está a ser misturada, na página de protocolo do servidor desatualizado. Nota: É "Clasico" protocol, não "atual"". Discutir
Os tópicos apresentados nesta página podem ser diversos o suficiente para garantir páginas distintas.

A documentação sobre o protocolo usado pelo servidor Minecraft Classic Creative server.

Comunicação Minecraft.net[editar | editar código-fonte]

Heartbeats[editar | editar código-fonte]

o ser capaz de se conectar a um servidor em Minecraft Classic para o Server List,um servidor deve transmitir a minecraft.net uma chamada "pulsação" a cada poucos minutos.

The stock server broadcasts this heartbeat every 45 seconds.

A "batimento cardíaco" assume a forma de uma solicitação HTTP para https://minecraft.net/heartbeat.jsp. Depois de enviar um piscar de olhos, a URL para o servidor é retornado.

É fundamental um piscar de olhos bem sucedida que você deixar de fora o "www" na solicitação HTTP, como você está indo para ser alvo-lo como um URI, e não uma URL.


Pode ser uma solicitação GET ou POST. Uma tabela dos parâmetros necessários está abaixo:

Name Details
port Port number of the server. This is usually 25565
max Maximum number of players on the server
name The name of the server
public Whether the server is public (i.e. appears in the lobby) or not. Can be True or False, in that capitalization.
version Minecraft version, this should be 7
salt A random, 16-character base-62 salt
users Number of users connected to the server

A maneira mais simples para enviar uma pulsação do coração é para abrir um soquete TCP para a porta 80 no minecraft.net, e enviar a seguinte (com os valores alterados, obviamente):


OBTER/heartbeat.jsp?port=25565&max=32&name=My%20Server&public=True&version=7&salt=wo6kVAHjxoJcInKx&users=0, acrescido de um CRLF (Carriage-retorno e alimentação de linha).


Certifique-se de quaisquer cordas, como nome, escapamos.


Se tudo correr bem, no corpo da resposta você receberá um URL para o servidor. Caso contrário, você vai ter uma agradável mensagem de erro HTML. Não existem quaisquer cabeçalhos HTML para analisar, como a versão HTTP não é especificado de modo HTTP / 0.9 é usado, que não tem cabeçalhos.

Autenticação De Usuário[editar | editar código-fonte]

A "chave" fornecido quando um usuário se junta o servidor pode ser comparado com o MD5 checksum de "sal" do servidor mais o nome de usuário para verificar se o usuário está conectado para minecraft.net com esse nome de usuário. Isso é útil para estabelecer a confiança suficiente do nome fornecido para proibir ou o jogador

if( player.key == md5( server.salt + player.name ) ) {
 // jogador é registrado em via minecraft.net
} else {
 // jogador está forjando o nome de usuário
}

Esta é também a maneira que impede Notch "cracking", ou pirateado, os clientes acessem servidores online. Quando um cliente rachado tenta se conectar a um servidor online, um erro irá aparecer na tela de conexão, dizendo: "Falha ao conectar: Usuário Não premium"


Nota: Isso significa que você deve se certificar que seu "sal" é mantido em segredo e compartilhada apenas com heartbeat.jsp. Se "sal" do seu servidor é visível em qualquer lugar para usuários, é trivial para os usuários a produzir válida para o futuro "chave" s sem ser conectado para minecraft.net.

Protocolo Packet[editar | editar código-fonte]

Cada pacote inicia-se com um byte representando a ID do pacote.

Tipos de protocolo de dados[editar | editar código-fonte]

tipo tamanho [bytes] Descrição
Byte 1 Inteiro byte único (0 a 255)
SByte 1 Integer único byte assinado (-128 a 127)
Short 2 Inteiro assinado, network order (-32768 to 32767)
String 64 US-ASCII / ISO646-US seqüência codificada preenchido com espaços(0x20)
Byte array 1024 Dados binários preenchidos com bytes nulos (0x00)

Pacotes de cliente → servidor[editar | editar código-fonte]

Packet ID Purpose Field Description Field Type Notes
0x00 Player Identification Packet ID Byte Sent by a player joining a server with relevant information. Current protocol version is 0x07.
Protocol version Byte
Username String
Verification key String
Unused Byte
0x05 Set Block Packet ID Byte Sent when a user changes a block. The mode field indicates whether a block was created (0x01) or destroyed (0x00).

Block type is always the type player is holding, (even when deleting).

Client assumes that this command packet always succeeds, and so draws the new block immediately. To disallow block creation, server must send back Set Block packet with the old block type.

The XYZ coordinates of the block are just integers representing the coordinate of the block. (As opposed to player coordinates where the lower 5 bits are fractional coordinates)

X Short
Y Short
Z Short
Mode Byte
Block type Byte
0x08 Position and Orientation Packet ID Byte Sent frequently (even while not moving) by the player with the player's current location and orientation. Player ID is always 255, referring to itself. Player coordinates are fixed-point values with the lowest 5 bits representing the fractional position (i.e. divide by 32 to get actual position in terms of block coordinates). The angle parameters are scaled such that a value of 256 would correspond to 360 degrees.
Player ID Byte
X Short
Y Short
Z Short
Yaw (Heading) Byte
Pitch Byte
0x0d Message Packet ID Byte Contain chat messages sent by player.
Unused, maybe message color Byte (0xFF)
Message String

Servidor → pacotes de cliente[editar | editar código-fonte]

Packet ID Purpose Field Description Field Type Notes
0x00 Server Identification Packet ID Byte Response to a joining player. The user type indicates whether a player is an op (0x64) or not (0x00) Current protocol version is 0x07.
Protocol version Byte
Server name String
Server MOTD String
User type Byte
0x01 Ping Packet ID Byte Sent to clients periodically. The only way a client can disconnect at the moment is to force it closed, which does not let the server know. The ping packet is used to determine if the connection is still open.
0x02 Level Initialize Packet ID Byte Notifies player of incoming level data.
0x03 Level Data Chunk Packet ID Byte Contains a chunk of gzipped map (not level.dat file). After decompression the map consists of an int(4 bytes) containing number of blocks + raw map array. (chunk is up to 1024 bytes, padded with 0x00s if less).
Chunk Length Short
Chunk Data Byte Array
Percent Complete Byte
0x04 Level Finalize Packet ID Byte Sent after level data is complete and gives map dimensions. The y coordinate is how tall the map is.
X Size Short
Y Size Short
Z Size Short
0x06 Set Block Packet ID Byte Sent to indicate a block change by physics or by players. In the case of a player change, the server will also echo the block change back to the player who initiated it.
X Short
Y Short
Z Short
Block Type Byte
0x07 Spawn Player Packet ID Byte Sent to indicate where a new player is spawning in the world. Position and orientation are encoded the same as for packet 0x08 below.
Player ID SByte
Player Name String
X Short
Y Short
Z Short
Yaw (Heading) Byte
Pitch Byte
0x08 Position and Orientation (Player Teleport) Packet ID Byte Sent with changes in player position and rotation. Teleports player it's sent to if player ID < 0 (For sending initial position in map, and /tp)
Player ID SByte
X Short
Y Short
Z Short
Yaw (Heading) Byte
Pitch Byte
0x09 Position and Orientation Update Packet ID Byte Sent with changes in player position and rotation. Sent when both position and orientation is changed at the same time.

Not required for server operation.

Player ID SByte
Change in X SByte
Change in Y SByte
Change in Z SByte
Yaw (Heading) Byte
Pitch Byte
0x0a Position Update Packet ID Byte Sent with changes in player position.

Not required for server operation.

Player ID SByte
Change in X SByte
Change in Y SByte
Change in Z SByte
0x0b Orientation Update Packet ID Byte Sent with changes in player rotation.

Not required for server operation.

Player ID SByte
Yaw (Heading) Byte
Pitch Byte
0x0c Despawn Player Packet ID Byte Sent when player disconnects.
Player ID SByte
0x0d Message Packet ID Byte Messages sent by chat or from the console.
Player ID SByte
Message String
0x0e Disconnect player Packet ID Byte Sent to a player when they're disconnected from the server.
  1. "Cheat detected: Distance" - happens not only when setting tile too far away from the player (how far is maximum distance and how it is measured?), but also when player moves and then immediately builds.
  2. "Cheat detected: Tile type"
Disconnect reason String
0x0f Update user type Packet ID Byte Sent when a player is opped/deopped

Will give or remove the client's ability of breaking Bedrock blocks

  1. User type can be either 100, which will allow the player, or 0, which will disallow the player to break Bedrock blocks
User type Byte

Posição do Jogador[editar | editar código-fonte]

Ponto Fixo[editar | editar código-fonte]

Posição do jogador é representado através de X, Y, Z e coordenadas de ponto fixo. A parte fracionária é de 5 bits, então dividindo os inteiros curtos recebidos em pacotes de atualização de posição por 32, você terá ponto flutuante coordenadas para o jogador. Esta posição corresponde ao centro da janela do cliente.

Estar em Coisas[editar | editar código-fonte]

A parte inferior do pé do jogador está localizado 1,59375 (ponto fixo: 51) unidades abaixo do centro da janela de visualização, de modo a posicionar o aparelho em cima de um bloco especial que você poderia enviar um pacote de teletransporte (0x08) especificando um valor de Y com base em a posição do bloco como: (Y x 32 + 51)

orientação[editar | editar código-fonte]

Um valor de guinada de 0 significa que o jogador está enfrentando no (Z negativo) direcção Z-. Este valor aumenta no sentido horário como visto a partir de cima. Se chamarmos a direção Z negativa "do Norte", em seguida, uma guinada de 64 significa "Oriente", 128 significa "do Sul", e 192 significa "Ocidente".


Um valor de inclinação de 0 significa nível e este valor aumenta no sentido descendente. 64 é baixo, e 192 é para cima. Os valores de 65-191 nunca deve ocorrer porque o jogador não pode olhar mais para cima ou para baixo do que o intervalo de 64 → 0, 255 → 192. No entanto, o cliente Minecraft clássico não ignora valores inválidos, por isso, é possível fazer as cabeças dos jogadores "upside-down".

Color Codes[editar | editar código-fonte]

Hex digit to color mapping

As mensagens enviadas a partir do servidor para o cliente pode conter códigos de cores, que permitem coloração de texto para vários fins.


Um símbolo comercial (&) seguido de um dígito hex na mensagem informa o cliente para mudar as cores ao exibir texto. A versão atual do jogo usa um símbolo da seção (§), mas a versão 0.30 usa ampersands. Para os códigos de formatação para a versão atual do jogo, consulte Formatando códigos.


O código de cores no início da mensagem só vai funcionar se o byte player ID é inferior a 127. Se for 127 ou superior, o jogo adiciona automaticamente & e antes que a mensagem, tornando-se amarelo. No entanto, os códigos de cores após a primeira personagem ainda funcionam. Se você usar um ID abaixo 127, ele não adiciona um código de cor, então aqueles que você usa irá funcionar.

Sample Code Common Name Alternate Name Foreground Color Background Color
R G B HEX R G B HEX
&0 Black Black 0 0 0 #000 0 0 0 #000000
&1 Dark Blue Navy 0 0 170 #00A 0 0 42 #00002A
&2 Dark Green Green 0 170 0 #0A0 0 42 0 #002A00
&3 Teal Teal 0 170 170 #0AA 0 42 42 #002A2A
&4 Dark Red Maroon 170 0 0 #A00 42 0 0 #2A0000
&5 Purple Purple 170 0 170 #A0A 42 0 42 #2A002A
&6 Dark Yellow Gold 170 170 0 #AA0 42 42 0 #2A2A00
&7 Grey Silver 170 170 170 #AAA 42 42 42 #2A2A2A
&8 Dark Grey Grey 85 85 85 #555 21 21 21 #151515
&9 Indigo Blue 85 85 255 #55F 21 21 63 #15153F
&a Bright Green Lime 85 255 85 #5F5 21 63 21 #153F15
&b Cyan Aqua 85 255 255 #5FF 21 63 63 #153F3F
&c Red Red 255 85 85 #F55 63 21 21 #3F1515
&d Pink Pink 255 85 255 #F5F 63 21 63 #3F153F
&e Yellow Yellow 255 255 85 #FF5 63 63 21 #3F3F15
&f White White 255 255 255 #FFF 63 63 63 #3F3F3F