MCPcopy Index your code
hub / github.com/MCHPR/MCHPRS

github.com/MCHPR/MCHPRS @v0.5.1

Chat with this repo
repository ↗ · DeepWiki ↗ · release v0.5.1 ↗ · + Follow
923 symbols 2,175 edges 65 files 54 documented · 6% updated 49d agopreview · 2026-05-17★ 2,25038 open issues
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

Minecraft High-Performance Redstone Server

Build Status License: MIT Discord Banner 2

A Minecraft 1.20.4 creative server built for redstone. Each 256x256 plot runs on a separate thread, allowing for less lag, more concurrency, and many awesome extra features!

MCHPRS is very different from traditional servers. Because this server is tailored to the use of computation redstone, many things that are a part of Vanilla Minecraft servers don't exist here. That being said, MCHPRS comes with many of its own unique features.

MCHPRS has made it possible to run programs such as Graph Rendering, Conway's Game of Life, and Mandelbrot Rendering on CPUs in Minecraft. To accomplish these speeds, we created Redpiler, the "Redstone Compiler".

Table of Contents

Building

If the Rust compiler is not already installed, you can find out how on their official website.

git clone https://github.com/MCHPR/MCHPRS.git
cd MCHPRS
cargo build --release

Once complete, the optimized executable will be located at ./target/release/mchprs or ./target/release/mchprs.exe depending on your operating system.

Configuration

MCHPRS will generate a Config.toml file in the current working directory when starting the server if it does not exist.

The folowing options are available at the toplevel (under no header): | Field | Description | Default | | --- | --- |--- | | bind_address | Bind address and port | 0.0.0.0:25565 | | motd | Message of the day | "Minecraft High Performance Redstone Server" | | chat_format | How to format chat message interpolating username and message with curly braces | <{username}> {message} | | max_players | Maximum number of simultaneous players | 99999 | | view_distance | Maximal distance (in chunks) between players and loaded chunks | 8 | | bungeecord | Enable compatibility with BungeeCord | false | | whitelist | Whether or not the whitelist (in whitelist.json) shoud be enabled | false | | schemati | Mimic the verification and directory layout used by the Open Redstone Engineers Schemati plugin | false | | block_in_hitbox | Allow placing blocks inside of players (hitbox logic is simplified) | true | | auto_redpiler | Use redpiler automatically | true |

To change the plot size edit the constants defined in plot/mod.rs.

LuckPerms

MCHPRS has basic support for LuckPerms with MySQL or MariaDB remote database storage. This implementation has no commands or interface and would have to be manged through LuckPerms running on a proxy (/lpb) or other server (/lp)

To use LuckPerms, append this to your Config.toml:

[luckperms]
# Define the address for the database.
host = "localhost"
# The name of the database the LuckPerms data is in.
db_name = "minecraft"
# Credentials for the database.
username = "minecraft"
password = "minecraft"
# The name of the server, used for server specific permissions.
# See: https://luckperms.net/wiki/Context
server_context = "global"

Usage

General Commands

Command Alias Description
/rtps [rtps\|unlimited] None Set the redstone ticks per second in the plot to [rtps]. (There are two game ticks in a redstone tick)
/radvance [ticks] /radv Advances the plot by [ticks] redstone ticks.
/teleport [player] /tp Teleports you to [player].
/teleport [x] [y] [z] /tp Teleports you to [x] [y] [z]. Supports relative coordinates. Floats can be expressed as described here.
/speed [speed] None Sets your flyspeed.
/gamemode [mode] /gmc, /gmsp Sets your gamemode.
/container [type] [power] None Gives you a container (e.g. barrel) which outputs a specified amount of power when used with a comparator.
/redpiler compile /rp c Manually starts redpiler compilation. Available flags: --io-only --optimize --export --update (or in short: -ioeu)
/redpiler reset /rp r Stops redpiler.
/toggleautorp None Toggles automatic redpiler compilation.
/stop None Stops the server.

Plot Ownership

The plot ownership system in MCHPRS is very incomplete. These are the commands that are currently implemented: | Command | Alias | Description | | --- | --- |--- | | /plot info | /p i | Gets the owner of the plot you are in. | | /plot claim | /p c | Claims the plot you are in if it is not already claimed. | | /plot auto | /p a | Automatically finds an unclaimed plot and claims. | | /plot middle | None | Teleports you to the center of the plot you are in. | | /plot visit [player] | /p v | Teleports you to a player's plot. | | /plot tp [x] [z] | None | Teleports you to the plot at [x] [y]. Supports relative coordinates. | | /plot lock | None | Locks the player into the plot so moving outside of the plot bounds does not transfer you to other plots. | | /plot unlock | None | Reverses the locking done by /plot lock. | | /plot select | /p sel | Uses WorldEdit to select the entire plot. |

Worldedit

MCHPRS provides its own implementation of WorldEdit. Visit their documentation for more information. These are the commands that are currently implemented: | Command | Alias | Description | | --- | --- |--- | | /up | /u | Go upwards some distance | | /ascend | /asc | Go up a floor | | /descend | /desc | Go down a floor | | //pos1 | //1 | Set position 1 | | //pos2 | //2 | Set position 2 | | //hpos1 | //h1 | Set position 1 to targeted block | | //hpos2 | //h2 | Set position 2 to targeted block | | //sel | None | Clears your worldedit first and second positions. | | //set | None | Sets all the blocks in the region | | //replace | None | Replace all blocks in a selection with another | | //copy | //c | Copy the selection to the clipboard | | //cut | //x | Cut the selection to the clipboard | | //paste | //v | Paste the clipboard's contents (-a to ignore air, -u to also update) | | //undo | None | Undoes the last action (from history) | | //redo | None | Redoes the last action (from history) | | //rstack | //rs | Stack with more options, Refer to RedstoneTools | | //stack | //s | Repeat the contents of the selection | | //move | None | Move the contents of the selection | | //count | None | Counts the number of blocks matching a mask | | //load | None | Loads a schematic from the ./schems/ folder. Make sure the schematic in the Sponge format if there are any issues. | | //save | None | Save a schematic to the ./schems/ folder. | | //expand | //e | Expand the selection area | | //contract | None | Contract the selection area | | //shift | None | Shift the selection area | | //flip | //f | Flip the contents of the clipboard across the origin | | //rotate | //r | Rotate the contents of the clipboard | | //update | None | Updates all blocks in the selection (-p to update the entire plot) | | //help | None | Displays help for WorldEdit commands |

Acknowledgments

  • @AL1L for his contributions to worldedit and other various features.
  • @DavidGarland for a faster and overall better implementation of get_entry in the in-memory storage. This simple function runs 30% of the runtime for redstone.

Contributing

Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change.

License

MIT

Extension points exported contracts — how you extend this code

ServerBoundPacket (Interface)
(no doc) [26 implementers]
crates/network/src/packets/serverbound.rs
Pass (Interface)
(no doc) [11 implementers]
crates/redpiler/src/passes/mod.rs
BlockProperty (Interface)
(no doc) [3 implementers]
crates/blocks/src/lib.rs
PacketSender (Interface)
(no doc) [2 implementers]
crates/core/src/player.rs
World (Interface)
(no doc) [1 implementers]
crates/world/src/lib.rs
ClientBoundPacket (Interface)
(no doc) [50 implementers]
crates/network/src/packets/clientbound.rs
JITBackend (Interface)
(no doc) [1 implementers]
crates/redpiler/src/backend/mod.rs
BlockTransform (Interface)
(no doc) [2 implementers]
crates/blocks/src/blocks/mod.rs

Core symbols most depended-on inside this repo

get_block
called by 82
crates/world/src/storage.rs
offset
called by 80
crates/blocks/src/lib.rs
write_varint
called by 79
crates/network/src/packets/mod.rs
encode
called by 75
crates/blocks/src/lib.rs
send_packet
called by 74
crates/core/src/player.rs
send_error_message
called by 66
crates/core/src/player.rs
block_face
called by 44
crates/blocks/src/lib.rs
set_block
called by 38
crates/world/src/storage.rs

Shape

Method 489
Class 201
Function 173
Enum 48
Interface 12

Languages

Rust100%

Modules by API surface

crates/network/src/packets/clientbound.rs76 symbols
crates/network/src/packets/serverbound.rs58 symbols
crates/core/src/plot/mod.rs56 symbols
crates/network/src/packets/mod.rs54 symbols
crates/core/src/plot/worldedit/mod.rs44 symbols
crates/core/src/player.rs41 symbols
crates/world/src/storage.rs36 symbols
crates/blocks/src/lib.rs33 symbols
crates/core/src/plot/worldedit/execute.rs31 symbols
crates/redpiler/src/backend/direct/mod.rs27 symbols
crates/core/src/server.rs25 symbols
crates/blocks/src/blocks/props.rs23 symbols

For agents

$ claude mcp add MCHPRS \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact

Ask about this repo answers extend the page