Skip to content
RedVortexDev edited this page Aug 23, 2026 · 31 revisions

Protocol Documentation

Table of Contents

Top

clientbound/clientbound_player.proto

S2CChestReference

Sent when the player opens a code chest.

FieldTypeLabelDescription
referenceChestReference

S2CPlayerSwitchMode

Sent when the player switches modes.

FieldTypeLabelDescription
modePlayerMode

Top

clientbound/clientbound_plot.proto

S2CCodeOperationResult

Sent as a response to a C2SCodeOperation message, error is true if the operation failed (see each operation for details), template is not empty only if a get operation succeeded.

FieldTypeLabelDescription
errorS2CCodeOperationResult.Error
templatestring

S2CMultiCodeOperationsResult

Sent as a response to a C2SMultiCodeOperations message, contains the results of all operations requested.

FieldTypeLabelDescription
resultsS2CCodeOperationResultrepeated

S2CPlotInfo

Sent when the player joins a plot. The plot name is a serialized Minecraft component.

FieldTypeLabelDescription
idint32
namestring
owner_namestring
owner_uuidstring
plot_sizeint32
build_regionRegion
code_regionRegion
spawn_posAPILocation
is_ownerbool
is_developerbool
is_builderbool
tagsPlotTagrepeated
handlestring
playersS2CPlotInfo.PlotPlayerrepeated

S2CPlotInfo.PlotPlayer

Represents a player in a plot.

FieldTypeLabelDescription
user_namestring
user_uuidstring
is_ownerbool
is_developerbool
is_builderbool
modePlayerMode

S2CPlotLineStarterUpdate

Sent when a line starter is added or removed from the plot, requires the player to have developer permissions on the plot.

FieldTypeLabelDescription
line_starterCodeLineStarter
actionS2CPlotLineStarterUpdate.Action

S2CPlotLineStarters

Sent when the player joins a plot, requires the player to have developer permissions on the plot.

FieldTypeLabelDescription
line_starterCodeLineStarterrepeated

S2CPlotProfiling

Sent when the plot finishes a lag measurement, requires the player to have developer permissions on the plot, and be profiling the plot.

FieldTypeLabelDescription
cpu_usageint32

S2CCodeOperationResult.Error

Represents an error that occurred while performing a code operation.

NameNumberDescription
NONE0
NO_PERMISSION1
NO_LOCATION2
INVALID_LOCATION3
NO_ACTION4
ACTION_NOT_FOUND5
NO_LOCATION_OR_TEMPLATE6
INVALID_LOCATION_OR_TEMPLATE7
TEMPLATE_NOT_FIT8
INVALID_TEMPLATE10
INTERNAL_ERROR9
NO_OPERATION11

S2CPlotLineStarterUpdate.Action

Represents an action performed on a line starter.

NameNumberDescription
ADD0
CHANGE1
REMOVE2

Top

clientbound/clientbound_server.proto

S2CHandshakeResponse

Sent as a response to a C2SHandshakeRequest message.

FieldTypeLabelDescription
errorS2CHandshakeResponse.Error
successS2CHandshakeResponse.Success

S2CHandshakeResponse.Success

Contains connection metadata after a successful handshake.

FieldTypeLabelDescription
server_infoServerInfo

S2CPlayerInfo

Sent after the player joins the server with their currency and permission information.

FieldTypeLabelDescription
currencyPlayerCurrency
permissionsPlayerPermissions

S2CServerBooster

Sent when the player joins the server.

FieldTypeLabelDescription
is_activebool
active_boosterS2CServerBooster.ActiveBoosteroptional

S2CServerBooster.ActiveBooster

Represents an active booster.

FieldTypeLabelDescription
tippedbool
multiplierint32
time_remainingint64
user_namestring
user_uuidstring

S2CHandshakeResponse.Error

NameNumberDescription
NONE0
INVALID_PROTOCOL1
INCOMPATIBLE_PROTOCOL2
ALREADY_CONNECTED3
NOT_APPLICABLE4

Top

common/common_code.proto

ChestReference

Represents a reference to an action and its arguments, sent when the player opens a code chest and bundled in other messages. Display text is serialized as Minecraft components.

FieldTypeLabelDescription
materialstring
namestring
descriptionstringrepeated
additional_infoChestReference.Noterepeated
tagsint32optional
argumentsChestReference.Argumentrepeated
return_valuesChestReference.ReturnValuerepeated
cancellablebooloptional
cancelled_automaticallybooloptional

ChestReference.Argument

Represents an argument for the chest.

FieldTypeLabelDescription
typeChestReference.Value
pluralbool
optionalbool
descriptionstringrepeated
notesChestReference.Noterepeated

ChestReference.Note

Represents a note in the notes field of an action icon.

FieldTypeLabelDescription
notestringrepeated

ChestReference.ReturnValue

Represents a return value of an action.

FieldTypeLabelDescription
standard_valueChestReference.ReturnValue.Standard
simple_valueChestReference.ReturnValue.Simple

ChestReference.ReturnValue.Simple

A simple return value, which only contains a text field.

FieldTypeLabelDescription
textstring

ChestReference.ReturnValue.Standard

A standard return value, which contains the value and descriptions fields.

FieldTypeLabelDescription
value_typeChestReference.Value
descriptionsstringrepeated

ChestReference.Value

Represents a value type.

NameNumberDescription
ANY_TYPE0
VARIABLE1
NUMBER2
TEXT3
COMPONENT4
LOCATION5
VECTOR6
LIST7
DICT8
POTION9
PARTICLE10
SOUND11
SPAWN_EGG12
PROJECTILE13
VEHICLE14
ENTITY_TYPE15
BLOCK16
BLOCK_TAG17
ITEM18
BYTE19
NONE20

Top

common/common_player.proto

PlayerCurrency

Represents the player's currency information. Ticket bundle names are serialized Minecraft components.

FieldTypeLabelDescription
tokensint32
ticketsint32
ticket_bundlesPlayerCurrency.TicketBundlerepeated
sparksint32

PlayerCurrency.TicketBundle

Represents an unclaimed ticket bundle.

FieldTypeLabelDescription
event_namestring
prize_namestring
ticket_amountint32

PlayerPermissions

Represents the player's permissions, admins will have all permissions set to their highest level.

FieldTypeLabelDescription
donorint32
vipint32
qaint32
youtuberint32
supportint32
moderationint32
adminint32

Top

common/common_plot.proto

CodeLineStarter

Represents a code line starter in the plot.

FieldTypeLabelDescription
locationAPILocation
chestChestReferenceoptional

Region

Represents a cuboid region in the world.

FieldTypeLabelDescription
minAPILocation
maxAPILocation

PlotTag

Represents a tag, also known as a category, a plot can have.

NameNumberDescription
ARCADE0
VERSUS1
COMBAT2
PARKOUR3
ADVENTURE4
ROLEPLAY5
STRATEGY6
PUZZLE7
TRIVIA8
RESOURCES9
ELIMINATION10
CREATION11
MISCELLANEOUS12

Top

common/common_server.proto

ServerInfo

Represents information about the server.

FieldTypeLabelDescription
protocol_versionstring
bungee_namestring
patch_versionstring
server_typeServerInfo.DFServerType

ServerInfo.DFServerType

Represents a server type.

NameNumberDescription
MAIN0
BETA1
DEV2
PUBLIC_TEST3
PUBLIC_EVENT4
LOCAL_DEV5
PRIVATE6

Top

common/data_type.proto

APILocation

Represents a location.

FieldTypeLabelDescription
xdouble
ydouble
zdouble
pitchfloat
yawfloat

Template

Represents a code template.

FieldTypeLabelDescription
jsonstring
datastring

LineStarterBlock

Represents a line starter type.

NameNumberDescription
EVENT0
FUNCTION2
PROCESS3

PlayerMode

Represents a player's mode.

NameNumberDescription
PLAY0
BUILD1
DEV2
CODE_STALK3
VERIFY4
VANISH5
IDLE6

Top

serverbound/serverbound_player.proto

C2SPlayerMode

Switches a player's mode, the player must have the permission to do so.

FieldTypeLabelDescription
modePlayerMode

C2SPlayerTeleport

Teleports the player to the specified location, the player must be building or coding, and the location will be clamped to the plot boundaries.

FieldTypeLabelDescription
locationAPILocation

Top

serverbound/serverbound_plot.proto

C2SCodeOperation

Requests to execute a code operation. An S2CCodeOperationResult message will be sent as a response, the relevant field will be set depending on the operation requested.

FieldTypeLabelDescription
get_by_locationGetByLocationOperation
get_by_blockGetByBlockOperation
placePlaceOperation
delete_by_locationDeleteByLocationOperation
delete_by_blockDeleteByBlockOperation
replace_by_locationReplaceByLocationOperation
replace_by_blockReplaceByBlockOperation

C2SMultiCodeOperations

Requests to execute multiple code operations in one message. An S2CMultiCodeOperationResult message will be sent as a response, containing the results of all operations requested.

FieldTypeLabelDescription
operationsC2SCodeOperationrepeated

DeleteByBlockOperation

Requests to delete the code block with the given line starter type and action name, requires the player to have developer permissions on the plot, and that the code block exists.

FieldTypeLabelDescription
typeLineStarterBlock
actionstring

DeleteByLocationOperation

Requests to delete the code block at the given location, requires the player to have developer permissions on the plot, and the location being a valid line starter.

FieldTypeLabelDescription
locationAPILocation

GetByBlockOperation

Requests to get the template for the given line starter type and action name, requires the player to have developer permissions on the plot, and that the code block exists.

FieldTypeLabelDescription
typeLineStarterBlock
actionstring

GetByLocationOperation

Requests to get the template for the code block at the given location, if the location is a line starter, the entire line will be returned, otherwise only the code block will be returned, requires the player to have developer permissions on the plot, and the location being a valid line starter.

FieldTypeLabelDescription
locationAPILocation

PlaceOperation

Requests to place a template at the given location, requires the player to have developer permissions on the plot, the location being a valid line starter, and that the template will not override any blocks nor exit the plot bounds.

FieldTypeLabelDescription
locationAPILocation
templateTemplate

ReplaceByBlockOperation

Requests to replace the code block with the given line starter type and action name with the given template, requires the player to have developer permissions on the plot, and that the code block exists, and that the template will not override any blocks nor exit the plot bounds (except for the blocks being replaced).

FieldTypeLabelDescription
typeLineStarterBlock
actionstring
templateTemplate

ReplaceByLocationOperation

Requests to replace the code block at the given location with the given template, requires the player to have developer permissions on the plot, the location being a valid line starter, and that the template will not override any blocks nor exit the plot bounds (except for the blocks being replaced).

FieldTypeLabelDescription
locationAPILocation
templateTemplate

Top

serverbound/serverbound_server.proto

C2SHandshakeRequest

Notifies the server you are interested in receiving ModAPI messages. The client sends this during the configuration stage. This must be sent before any ModAPI messages are sent by the client. A S2CHandshakeResponse message will be sent in response.

FieldTypeLabelDescription
protocol_versionstring

Scalar Value Types

.proto TypeNotesC++JavaPythonGoC#PHPRuby
doubledoubledoublefloatfloat64doublefloatFloat
floatfloatfloatfloatfloat32floatfloatFloat
int32Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint32 instead.int32intintint32intintegerBignum or Fixnum (as required)
int64Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint64 instead.int64longint/longint64longinteger/stringBignum
uint32Uses variable-length encoding.uint32intint/longuint32uintintegerBignum or Fixnum (as required)
uint64Uses variable-length encoding.uint64longint/longuint64ulonginteger/stringBignum or Fixnum (as required)
sint32Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int32s.int32intintint32intintegerBignum or Fixnum (as required)
sint64Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int64s.int64longint/longint64longinteger/stringBignum
fixed32Always four bytes. More efficient than uint32 if values are often greater than 2^28.uint32intintuint32uintintegerBignum or Fixnum (as required)
fixed64Always eight bytes. More efficient than uint64 if values are often greater than 2^56.uint64longint/longuint64ulonginteger/stringBignum
sfixed32Always four bytes.int32intintint32intintegerBignum or Fixnum (as required)
sfixed64Always eight bytes.int64longint/longint64longinteger/stringBignum
boolboolbooleanbooleanboolboolbooleanTrueClass/FalseClass
stringA string must always contain UTF-8 encoded or 7-bit ASCII text.stringStringstr/unicodestringstringstringString (UTF-8)
bytesMay contain any arbitrary sequence of bytes.stringByteStringstr[]byteByteStringstringString (ASCII-8BIT)