Compatibility
Minecraft: Java Edition
Platforms
Supported environments
Links
Tags
Creators
Details
Creeprchain
for installation and building, visit github
Minecraft Fabric 1.20.1 economy mod. Players deposit items at an ATM block and receive ERC-20-style tokens on an Ethereum-compatible blockchain. Tokens are visible in MetaMask.
Requirements
| Tool | Version |
|---|---|
| Java JDK | 21 |
| Fabric Loader | 0.19.2 |
| Fabric API | 0.92.9+1.20.1 |
| Node.js | 18+ (for Hardhat) |
| Hardhat | installed in blockchain/ |
Building the mod
./gradlew build
The output jar is at:
build/libs/creeprchain-1.0.0.jar
On Windows use
gradlew.bat build
Installing on a Fabric server
- Download Fabric Installer and install Fabric server for Minecraft 1.20.1.
- Copy
build/libs/creeprchain-1.0.0.jarinto the server'smods/folder. - Download Fabric API for 1.20.1 and place it in
mods/as well. - Start the server once — it will create the config directory at
config/creeprchain/. - Edit
config/creeprchain/blockchain.json(see Blockchain setup). - Restart the server.
Installing on a client
- Install Fabric Loader for Minecraft 1.20.1 in the launcher.
- Copy
build/libs/creeprchain-1.0.0.jarinto.minecraft/mods/. - Copy Fabric API for 1.20.1 into
.minecraft/mods/as well. - Launch the game and connect to the server.
The client and server must use the exact same jar. A version mismatch causes registry sync errors (
missing creeprchain:atm_block).
Blockchain setup (tested on LINUX)
The blockchain runs on a separate Linux machine. All commands below are run on that machine inside the blockchain/ folder.
Step 1 — Install dependencies
cd blockchain
npm install
Step 2 — Start Hardhat node
scripts/start-local-chain.sh
This starts a local Ethereum node at 0.0.0.0:8545 (chain ID 31337). Leave this terminal open.
Step 3 — Deploy the contract
Open a second terminal on the same machine:
scripts/deploy-contract.sh
Output example:
Token deployed to: 0xAbCd1234...
Copy the contract address.
Step 4 — Configure blockchain.json
On the Minecraft server machine, edit config/creeprchain/blockchain.json:
{
"rpcUrl": "http://192.168.0.108:8545",
"chainId": 31337,
"contractAddress": "0xAbCd1234...",
"privateKey": "0xd345b787fa175fa22321746c8e0289ad88eac2de8c39ce67215c8b362af621e5"
}
rpcUrl— IP of the Linux machine running the Hardhat nodecontractAddress— address printed by the deploy scriptprivateKey— the Hardhat deployer account; this wallet signs mint/burn transactions on behalf of the server
Restart the Minecraft server. The log will show:
BlockchainService connected: rpc=http://192.168.0.108:8545 chainId=31337 contract=0x...
MetaMask setup
- Open MetaMask → Settings → Networks → Add network manually:
- RPC URL:
http://192.168.0.108:8545 - Chain ID:
31337 - Currency symbol: ETH
- RPC URL:
- Add the token: MetaMask → Tokens → Import token → paste the contract address.
- Note your MetaMask wallet address — you will use it with
/linkwallet.
In-game setup and test
/linkwallet 0xYourMetaMaskAddress
Place an ATM block (/give @p creeprchain:atm_block) and right-click it while holding a diamond (or another configured item). The tokens will appear in MetaMask.
Commands
| Command | Description |
|---|---|
/linkwallet <address> |
Bind your Minecraft account to an Ethereum wallet address |
/balance |
Show your token balance |
/send <player> <amount> |
Transfer tokens to another online player |
/withdraw <amount> |
Burn tokens (blockchain withdraw) |
/withdraw <item> <count> |
Burn tokens and receive Minecraft items |
Configuration
Config files live in config/creeprchain/ on the server. If absent, bundled defaults from src/main/resources/config/ are used.
economy.json — deposit and withdraw rates
{
"depositRates": {
"minecraft:diamond": 100,
"minecraft:iron_ingot": 10,
"minecraft:gold_ingot": 20
},
"withdrawRates": {
"minecraft:diamond": 95,
"minecraft:iron_ingot": 9,
"minecraft:gold_ingot": 18
},
"maxDeposit": 10000,
"maxWithdraw": 5000,
"maxBalance": 100000
}
blockchain.json — connection to the Ethereum node
{
"rpcUrl": "http://192.168.0.108:8545",
"chainId": 31337,
"contractAddress": "0x0000000000000000000000000000000000000000",
"privateKey": ""
}
If privateKey is empty or contractAddress is zero, the mod runs in local-ledger mode (transactions stored only in SQLite, no blockchain interaction).
License
MIT


