A remaster of Void Island Control for Minecraft 1.12.2.
Original CurseForge project: https://www.curseforge.com/minecraft/mc-mods/void-island-control
Void Island Control adds a world type for a customizable, multiplayer void world. Players create and manage isolated islands, invite teammates, and run skyblock-style play in a void overworld (with optional void nether and end). This remaster keeps that feature set, runs on Log4j-patched Forge 1.12.2-14.23.5.2864, and adds visit / spectate / list tools that work while the island owner is offline.
This project is licensed under the GNU General Public License v3.0. The full license text is in LICENSE.md.
Original work:
Remaster:
Bartz24's original code and this remaster are both under GPLv3. You may copy, modify, and redistribute this mod under that license. Modified versions must keep the license, keep copyright notices, and mark the changes.
(From the original CurseForge description, plus remaster notes.)
Void Island Control adds a world type for a customizable, multiplayer void world. It is meant for isolated islands, teams, and skyblock-style play.
Original features
.nbt files in the config folder.Basic use (same as upstream)
Install the mod on client and server. Pick Void? World in singleplayer or set level-type=voidworld on a server. Use /island create [optional type] unless auto-create is on.
It is a normal dual-side Forge mod. The same jar goes on the dedicated server and on every client. The Forge handshake will reject a client that does not have it.
voidworld (server level-type).Default types (each can be enabled or disabled in config):
| Type | Notes |
|---|---|
| Grass | Optional tree; grass / dirt / coarse dirt |
| Sand | Optional cactus; normal or red sand |
| Snow | Optional pumpkins and packed-ice "igloo" ring |
| Wood | Planks of a chosen wood; optional water and string |
Garden of Glass (gog) |
Requires Botania and Garden of Glass |
Also:
.nbt files in the voidislandcontrolstructures config folder. Add the file name to the Custom Islands list. A structure block data tag spawn_point sets the landing block.0,0 can use bedrock, a named type, or random./startingInv and config startingItems.Island membership is stored in the world save as UUIDs (VoidIslandControlSaveData). That is separate from usercache.json / usernamecache.json. Those caches are only used to turn a typed player name into a UUID.
Default command name is /island (configurable).
| Command | What it does |
|---|---|
/island create [type] |
Create your island. Optional type name or index. |
/island invite <player> |
Invite another player to your island. |
/island join |
Accept a recent invite. |
/island leave |
Leave the island and go to spawn. Last member must confirm. Inventory clear follows config. |
/island kick <player> |
Owner kicks a member. Their items drop at the owner. |
/island home |
Teleport to your island. Must be far enough away (protection range). |
/island spawn |
Teleport to world spawn (0, islandY, 0). |
/island reset [type] |
New island in a new slot; inventory reset follows config. |
/island onechunk |
One-chunk border mode. Disabled in config by default. |
/island visit <player> |
Remaster: visible body on that island. Adventure by default; survival if you are an operator or you are allowed to harvest/place. |
/island spectate <player> |
Remaster: ghost cam on that island (spectator, including ops). |
/island list |
Remaster: names that have an island you can visit or spectate. |
/island permission <player> <flag> <true/false> |
Remaster: owner-only whitelist flags for that player on your island. |
Visit, spectate, list, and permissions:
usercache.json / usernamecache.json)./island list prints those names (except yourself). Tab complete uses the same list./island home is that)./island home / spawn / create / join / leave ends the visit and returns survival.allowVisitCommand disables visit and spectate. List still works.allowPerPlayerOverrides (aka the whitelist) must be true or /island permission does nothing. Overrides are stored on the island, keyed by visitor UUID. Same player can have different flags on different islands. They do not have to have visited first.Global visit flags (commandSettings.visitSettings, all default false):
| Flag | If true |
|---|---|
allowBlockInteract |
Chests / machines / right-click blocks |
allowItemUse |
Use items |
allowEntityInteract |
Frames, villagers, armor stands |
allowAttack |
Attack entities |
allowPickup |
Pick up items |
allowBlockHarvest |
Break / harvest blocks (visitor is put in survival) |
allowBlockPlace |
Place blocks (visitor is put in survival) |
allowPerPlayerOverrides |
Owners may set the flags above per visitor |
Island lockdown (islandSettings, default off):
| Option | Default | Meaning |
|---|---|---|
islandLockdown |
false |
Yank players back and show the “too far” message |
islandLockdownRange |
500 |
Distance from island center that triggers it |
Ops are not leashed. Old islandProtection / protectionBuildRange still exist for spawn build-protect; the walk-off message is lockdown only.
/islandAdmin (permission level 2):
| Command | What it does |
|---|---|
/islandAdmin kick <player> |
Force-remove a player from their island. |
/islandAdmin assign <player> <islandX> <islandY> |
Put a player on an existing island grid cell. |
/islandAdmin assignOwner <player> |
Make that player the island owner. |
/islandAdmin getIslandHere |
Print grid X/Y and member UUIDs for the island you are standing on. |
/islandAdmin list |
List every island, grid coords, and member UUIDs. |
/startingInv — capture or manage the starting inventory used for new / reset players (see in-game usage).
Compared with Bartz24's 1.5.3 line:
/island visit is a visible body: adventure, or survival for ops / harvest-place perms./island spectate, /island list, /island permission.gog islandInstall the jar on client and server.
mods on the server and on each client.voidworld (server.properties level-type=voidworld) or pick Void? World in the create-world screen./island create unless auto-create is on./island invite./island list./island visit <name>. Spectate: /island spectate <name>./island permission <name> allowBlockHarvest true (requires allowPerPlayerOverrides).Custom structures: save with a structure block, copy the .nbt into config/voidislandcontrolstructures/, add the name to the Custom Islands list, mark spawn with data spawn_point.
Island membership lives in the world (world/data/, VIC save, UUIDs).
Player names do not. Those live next to the server jar:
usercache.json (vanilla)usernamecache.json (Forge)If you copy only the world folder onto a test or new host, /islandAdmin list will still show every island and UUID. /island list, /island visit <name>, and /island spectate <name> will only show names the new server has already seen. Everyone else looks “missing” even though the island is there.
When you clone a world:
usercache.json and usernamecache.json from the old server root (same directory as the Forge jar) into the new server root.Do not put those two JSON files only inside the world folder. They will be ignored.