- NEW: GDMC-HTTP is now compatible with both the Forge and Fabric modding platform!
- NEW:
GET /heightmap
can now receive a list of block IDs, block tag keys and fluid tag keys to create your own custom heightmaps! - NEW:
GET /heightmap
can now receive an upper and lower Y-value limit for the requested heightmap. Useful for taking measurements of the surface of caves or The Nether dimension. - NEW: Add
keepLiquids
flag toPOST /structure
endpoint. When set tofalse
it removes all water sources present at the placement locations of the to be placed structure. - FIX: Actually implement behaviour to prevent spawning drops when placing structures for the
spawnDrops
flag of thePOST /structure
endpoint. - FIX:
/commands
now returns a 405 is any other HTTP method besidesPOST
is used.
- NEW: To enhance backwards compatibility, all features introduced in GDMC-HTTP 1.4.0 are now also available for Minecraft 1.19.2!
- FIX: When the
doBlockUpdates=false
parameter is set onPUT /blocks
discard placement instructions for duplicate block positions except the last one for that position. This prevents an undefined behaviour that made it impossible to predict in what order placement instructions targeting the same block position would resolve.
- NEW: GDMC-HTTP can now also be obtained via the Modrinth mod portal!
- FIX: Add proper error handling for some instances where NBT data for a sign block submitted via
PUT /blocks
was formatted incorrectly (#26). - FIX: Restore
spawnDrops
flag ofPUT /blocks
back to working order (#27). - FIX:
/item
command now works as expected when called via thePOST /commands
endpoint (#28).
- FIX: Allow
GET /chunks
to be used without having to set a build area. - FIX: Off-by-one bugs for block/chunk ranges in request URLs.
- FIX: Documentation cleanup.
- FIX:
OPTIONS /
now also returns theDataVersion
field. - FIX: Expanded and updated documentation.
- FIX:
GET /biomes
do not return entries for positions beyond the world's build height range. - FIX: Respond with
404
status whenGET /biomes
has thewithinBuildArea=true
flag while no build area has been set using the/setbuildarea
command. - FIX: Respond with
404
status whenGET /blocks
has thewithinBuildArea=true
flag while no build area has been set using the/setbuildarea
command.
- FIX: Upgrade to Forge 1.20.2-48.1.0
TL;DR:
-
⛏ Minecraft 1.20.2 compatibility!
-
⏱ Huge performance improvements!
-
📜 Commands now return useful feedback to the client!
-
📐 Restrict actions to the build area with the
withinBuildArea
flag! -
🏗 SNBT support for placing structures!
-
😸 Lots of quality-of-life improvements!
-
NEW: Compatibility with Minecraft version 1.20.2. No longer compatible with older versions of Minecraft. Any GDMC client (e.g. your settlement generator) that works with GDMC-HTTP 1.0.0 or later should work with GDMC-HTTP 1.4.0 without making any changes to your code.
-
NEW: The value
"message"
property returned by thePOST /commands
endpoint is now equal to what you would see in the in-game chat. -
NEW:
POST /structure
endpoint now also accepts SNBT-encoded files. -
NEW:
GET /chunks
default to using the build area if no URL query parameters are given. -
NEW: Add
withinBuildArea
flag toGET /chunks
. If set to true and a build area is set, chunks outside the build area are skipped. -
NEW: Add
withinBuildArea
flag toGET /biomes
. If set to true and a build area is set, it skips positions outside the build area. -
NEW: Add
withinBuildArea
flag toGET /structure
. If set to true and a build area is set, it skips positions outside the build area. -
NEW: Add
withinBuildArea
flag toPOST /structure
. If set to true and a build area is set, structures that are (partially) outside the build area cannot be placed. -
NEW: Copy JSON representation of the current build area to clipboard when clicking on the chat message after setting it with the
/setbuildarea
command. -
NEW: Display GDMC-HTTP server status in chat message when player joins the world.
-
NEW: Revert interface port to default (
9000
) if/sethttpport
command has no arguments. -
FIX: Requests to
PUT /blocks
are up to 80%1 faster when block updates are enabled (default). -
FIX: Requests to
PUT /blocks
are up to 90%1 faster when block updates are disabled. -
FIX: Requests to
GET /blocks
are up to 60%1 faster! -
FIX: Requests to
GET /chunks
are up to 60%1 faster! -
FIX: Requests to
GET /heightmap
are now up to 85%1 faster! -
FIX: Requests to
GET /biomes
are now up to 60%1 faster! -
FIX: Requests to
GET /structure
are now up to 60%1 faster! -
FIX: Requests to
GET /chunks
larger than 52x52 chunks should no longer time out1. -
FIX: Parse arguments
dx
,dy
anddz
inGET /entities
as ranges (correct) instead of absolute coordinates (wrong). -
FIX: Improved error handling across all endpoints.
-
FIX: Do not ignore blank entries in requests to
DELETE /entities
.
- NEW: Add logo designed by Blinkenlights.
- FIX: Improved documentation.
- FIX: Replace links to Minecraft wiki the new domain (https://minecraft.wiki/).
- NEW: Add
GET /heightmap
to get heightmap data of a given type of the currently set build area. Thanks to cmoyates! - NEW: Add custom heightmap types
MOTION_BLOCKING_NO_PLANTS
andOCEAN_FLOOR_NO_PLANTS
. - NEW: Add
withinBuildArea
flag toGET /blocks
. If set to true it skips over positions outside the build area. - NEW: Add
withinBuildArea
flag toPUT /blocks
. If set to true it does not place blocks outside the build area.
- FIX: With
PUT /blocks
, allow for changing the block entity (NBT) data of a block even if the target block matches the block state and block ID of the placement instruction. This makes it possible to do things such as changing the text on an existing sign or changing the items of an already placed chest. - FIX: Reworked the algorithm for changing the shape of a block to fit with directly adjacent blocks (e.g. fences) to be more efficient.
- FIX: Ensure blocks placed via
POST /structure
always update on the client side to reflect its block entity data (e.g. text on signs, pieces of armor on armor stands, etc.). Prior to this fix the data was correctly parsed, but only became visible in-game if the relevant chunks were reloaded. - FIX: Remove support for
pivotY
URL query parameter in thePOST /structure
endpoint since it wasn't implemented in the first place. Minecraft does not support it. This is not a breaking change since unknown query parameters will be ignored by GDMC-HTTP. - FIX: Add clarification on the transformation order of structures in the
POST /structure
endpoint to documentation.
- FIX: Issue where NBT file returned by
GET /structure
wasn't GZIP-compressed even if the"Content-Encoding"
request header contained the word "gzip". - FIX: Improve error handling when an empty file is submitted to
POST /structure
.
- NEW: Add
GET /players
endpoint to get all players on the server. Thanks to cmoyates! - NEW: Add support for target selector for entities in the
GET /entities
endpoint using theselector
query parameter. - NEW: Add support for target selector for players in the
GET /players
endpoint using theselector
query parameter. - NEW: Unset build area by entering the
/setbuildarea
command without arguments.
- FIX: Undo explicitly setting HTTP interface address to the "loop back" address.
- NEW:
POST /command
now acceptsx
,y
,z
parameters, usefull for when using commands with relative coordinates. - NEW: Add
OPTIONS /
to get version of Minecraft and version of GDMC-HTTP interface. - NEW: Port number of the HTTP interface can be changed using the
/sethttpport <port>
Minecraft console command. This value will be saved to a config file and therefore will be persistent. - NEW: Get port number of the HTTP interface via the
/gethttpport
Minecraft console command. - FIX: The
/setbuildarea
console command can now also accept coordinates that aren't loaded yet. - FIX: Explicitly set HTTP interface address to that of the "loop back" address, which is usually "localhost".
- NEW: First stable release!
- BREAKING: JSON-formatted NBT-like data is no longer supported in request bodies. Use SNBT notation instead.
- BREAKING: Properties containing NBT values in JSON responses are no longer formatted as JSON, but as SNBT strings.
- BREAKING: Plain-text formatted responses have been removed in favour of JSON.
- BREAKING: Consistent error messages.
- BREAKING: Plain-text request bodies are no longer accepted (except for
POST /command
). JSON-formatted request bodies are expected instead. - FIX: Improved performance!
- FIX:
GET /biomes
now returns an empty string for the biome ID if the requested position is outside the vertical boundaries of the world. - FIX: Typo in error message
POST /structure
handler.
- NEW:
GET /entities
for reading entities within a certain area. - NEW:
PUT /entities
for creating any number of entities. - NEW:
PATCH /entities
for editing existing entities in the world. - NEW:
DELETE /entities
for removing existing entities from the world. - NEW: Add parameters
doBlockUpdates
,spawnDrops
andcustomFlags
from thePUT /blocks
endpoint to thePOST /structure
endpoint as well. - FIX: Issue where output with the response header
Content-Encoding: gzip
didn't actually return gzipped response for the endpointsGET /chunks
andGET /structures
. - FIX: Partial refactor for improved readability and decreased branching.
- FIX: Placement of multipart blocks such as beds and doors.
- NEW: Improved user-facing documentation.
- FIX: Add proper exception handling for malformed JSON input at
PUT /blocks
.
- FIX: Allow endpoint
PUT /blocks
to process block placement instructions without (valid) coordinates. It places it at the URL query coordinates instead.
- NEW:
PUT /blocks
endpoint can now accept a JSON-formatted request body as input using the request header"Content-Type": "application/json"
. The format is identical the response of theGET /blocks
with the"Accept": "application/json"
request header, with a few minor additional features:- For each placement instruction,
x
,y
andz
are optional. If omitted, it uses the coordinate set in the request's URL query as a fallback, or 0 if these aren't set. - For each placement instruction,
x
,y
andz
can be an integer ("x":32
) or use tilde ("x": "~32"
) or caret ("x": "^32"
) notation in a string. - Block state (
"state"
) and block entity data ("data"
) can be an JSON object, a single string or can be omitted all together. - When placing blocks with
PUT /blocks
, the "shapes" of directly adjacent blocks are updated, unless thedoBlockUpdates
flag is explicitly disabled. This means that placing a fence block directly adjacent to an existing block changes the shape of the fence such that it makes the appropriate connections.
- For each placement instruction,
- NEW:
POST /structure
can now accept both GZIP-compressed and uncompressed NBT files. - NEW:
GET /structure
can now output GZIP-compressed (default) or uncompressed NBT files. The latter can be achieved by setting the request header"Accept-Encoding": "*"
. - BREAKING: JSON response format of
PUT /blocks
has changed to a simple array of strings. - BREAKING: For
GET /chunks
, the binary format is now the default unless the"Accept"
header is set to"application/json"
or"text/plain"
. - BREAKING:
/version
now returns a 405 is any other HTTP method besidesGET
is used. - FIX: Improvements to code readability.
- FIX: Minor improvements to performance.
- NEW: Add
GET /structure
endpoint, for generating an NBT-formatted file of an area of blocks in the world. - NEW: Add
POST /structure
endpoint, for placing an NBT-formatted file of a structure into the world.
- NEW: Enable
GET /chunks
to return a JSON-formatted response when the request headerAccept
is set toapplication/json
.
- NEW: Allow negative values for range coordinates in all endpoints that take the
dx
,dy
anddz
parameters.
- FIX: Fixed formatting coordinates in plain-text response for
GET /blocks
endpoint.
- NEW: Add
GET /biomes
endpoint to request biome of a location in the world. - FIX: Minor performance improvements.
- NEW:
PUT /blocks
can now also process block entity data (e.g. chest contents, a book on a lectern, armor on an armor stand, etc.). - NEW:
GET /blocks
can return multiple blocks within a given area. - NEW: Response of
GET /blocks
now always includes a block's position in front of its material. - BREAKING: JSON response format of
GET /blocks
is now a JSON array instead of a single object. - BREAKING: Response of
GET /blocks
now always includes a block's position in front of its material. - BREAKING: Endpoint
OPTIONS /blocks
has been removed. - BREAKING: Upgrade to Forge 1.19.2-43-2.0.
- FIX: Minor performance improvements.
- NEW: Implement parameter for specify target dimension (overworld, nether, end, etc.) for the
/blocks
,/command
and/chunks
endpoints. For examplePUT /blocks?dimension=nether
places blocks in the nether instead of the overworld. If parameter is omitted it defaults to the overworld. - NEW: Implement
OPTIONS
method for the/blocks
endpoint. - FIX: Relative position placement for blocks with a
~<int>
position when placing blocks with thePUT /blocks
endpoint.
- BREAKING: Renamed
GET /info
endpoint toGET /version
.
- NEW: Add
GET /info
endpoint, to get the current Minecraft version.
- NEW: Compatibility with Minecraft version 1.19.2.
- BREAKING: No longer compatible with versions of Minecraft older than 1.19.2.
For older versions of GDMC-HTTP, refer to nilsgawlik/gdmc_http_interface