(this README was created with AI assistance and fact-checked by a human)
A Paper 1.20.x plugin that lets builders drop “magic” entities into a GhibliCraft world with a single command and a selection wand. Teleport pads, particle shows, sound cues, schematic blocks and more are all defined, moved and removed completely in-game.
- Seven entity types: TELEPORTER, PARTICLE, SOUND, CHAIN, SINGLEBLOCK, SCHEMBLOCK, TRIGGER
- Single root command
/gc-magicwith sub-commandscreate,remove,move,list,wand,reload - Selection wand for accurate block targeting plus a handy
/gc-magic wand wherelocator - JSON persistence (everything auto-saves to
magicBlocks.jsonand re-applies on server start) - Runs on Java 17 and the Paper 1.20.4 API
-
Clone or download the repository.
-
Build with Maven:
mvn clean package
The shaded JAR will appear in
target/. -
Drop the JAR into your server’s
plugins/folder and restart the server.
| Action | Command pattern |
|---|---|
| Create an entity | /gc-magic create <type> <name> [extra-args] |
| Move an entity | /gc-magic move <type> <name> … |
| Delete an entity | /gc-magic remove <type> <name> |
| List entities | /gc-magic list <type|all|schems> [simple] |
| Give yourself a wand | /gc-magic wand or /gc-magic wand where |
| Reload the plugin | /gc-magic reload |
Permission required:
gc.commandmagic
- TELEPORTER: clickable pad that moves players
- PARTICLE: repeating particle emitter for ambience
- SOUND: positional sound-effect trigger
- CHAIN: links multiple magic actions in sequence
- SINGLEBLOCK: single block that toggles or changes state
- SCHEMBLOCK: drops a WorldEdit schematic at run time
- TRIGGER: fires other entities based on conditions
All entities are cached in memory and written to plugins/GC-CommandMagic/magicBlocks.json.
Running /gc-magic reload stops the scheduler, reloads entities from disk and resumes without a full server restart.
Type everything below after the root command /gc-magic.
[square] brackets are literal text, <angle> brackets are values you choose.
| Operation | Syntax |
|---|---|
| Create | create teleporter <name> <destX> <destY> <destZ> <yaw> <pitch> <CLICK|APPROACH> |
| Move | move teleporter <name> origin move teleporter <name> destination |
| Notes | CLICK = right-click the origin block. APPROACH = stand on it. Destination yaw & pitch are preserved. |
| Operation | Syntax |
|---|---|
| Create | create particle <name> <particle> <x> <y> <z> <dx> <dy> <dz> <speed> <count> <force|normal> <true|false-loop> |
| Create (wand) | Same as above but omit <x y z> to use the wand block |
| Move | move particle <name> [x y z] or wand move |
| Notes | loop=true emits every 10 ticks. force shows particles to all players regardless of distance. |
| Operation | Syntax |
|---|---|
| Create | create sound <name> <soundKey> <category> [x y z] <volume> <pitch> <minVolume> <true|false-loop> [intervalSecs] |
| Move | move sound <name> [x y z] or wand move |
| Notes | If looping, volume is recalculated per tick per player. minVolume = the quietest volume at max range (16 × volume). Default interval is 50 s (1000 ticks). |
| Operation | Syntax |
|---|---|
| Create | create singleblock <name> <x> <y> <z> <CLICK|APPROACH> <blockData…> (wand selects the trigger) |
| Move | move singleblock <name> <x> <y> <z> trigger|block |
| Notes | Saves the original block data before replacement and restores it on toggle—ideal for doors, lamps and décor. |
| Operation | Syntax |
|---|---|
| Create | create schemblock <name> <x> <y> <z> <file.schem> <CLICK|APPROACH> <true|false-replaceAir> (wand selects the trigger) |
| Move | move schemblock <name> <x> <y> <z> trigger|destination |
| Notes | Paste runs asynchronously; undo uses FAWE’s paste ID. replaceAir=false keeps existing blocks, true overwrites with air. |
| Operation | Syntax |
|---|---|
| Create | create chain <name> <CLICK|APPROACH> [x y z] TYPE:name [delay] TYPE:name … |
| Move | move chain <name> [x y z] or wand move |
| Notes | Each step references an existing entity (e.g. TELEPORTER:gate1). delay is in seconds and applies before that step. |
| Operation | Syntax |
|---|---|
| Create | create trigger <name> <chainName> <time|weather> <param> |
| Notes | time: day or night • weather: clear, rain, thunder Polls every 10 ticks and will not fire again until the condition resets. |
- Give yourself a selection wand:
then punch a block to set the origin.
/gc-magic wand - Create an entity with one of the commands above.
- List your creations:
(add
/gc-magic list allsimplefor a concise view). - Link multiple effects with a CHAIN entity.
- Save or reload at any time—everything lives in
magicBlocks.json.
Happy building!