HomeCore 1.14.0

Shared API for the devices and networks of a Minecraft base. HomeCore depends on no consumer mod: Dashboard, Energy, Furnace, Quarry, Farm, Storage and Tasks use its contracts without it knowing their implementations.

Minecraft 1.21.1 NeoForge 21.1.250 Java 21 DashboardAPI 1.9.0 Foundation: no dependencies JEI: optional support REI: optional support
CurseForge Releases Source

Role#

HomeCore defines the shared contracts (fr.lkdm.homecore.api.*) that any mod can implement or consume:

Permissions#

RoleDefault permissions
OWNERAll recognized permissions
ADMINVIEW, CONTROL, AUTOMATE, CONFIGURE, MANAGE_NETWORK
MEMBERVIEW, CONTROL, AUTOMATE
VIEWERVIEW

Each device checks network membership, a CONTROL/specific permission, ONLINE state and parameter validity before running an action. A limit of 10 requests per player, refilled at 10/s, guards against abuse.

homecore:electronics_workbench is the assembly station shared by every HomeLink mod. It occupies 2 blocks, consumes neither energy nor fuel, and crafts the four base electronic components:

ComponentIDRole
Circuit Boardhomecore:homelink_circuit_boardBase electronics
Microprocessorhomecore:homelink_microprocessorProcessing and logic
Communication Modulehomecore:homelink_communication_moduleCommunication, networking, detection
Control Modulehomecore:homelink_control_moduleMachine control and automation

These IDs are stable: consumer mods can reference them directly without depending on one another.

Recipes#

The workbench is crafted at the vanilla table. The four components are crafted inside the electronics workbench (shapeless recipe: a list of ingredients with amounts, no fixed grid). The 3×3 grid below applies only to the workbench itself.

Icons: 3D render of the blocks, as in the inventory; items (ingots, components…) keep their real texture.

Iron Ingot
Redstone
Iron Ingot
Copper Ingot
Crafting Table
Copper Ingot
Planks (any type)
Planks (any type)
Planks (any type)
HomeLink Electronics Workbench
Electronics Workbench×1
Component (workbench)IngredientsResult
Circuit Board
Copper×4 Redstone×4 Quartz×1
Circuit Board×2
Microprocessor
Circuit Board×1 Gold Nugget×4 Copper×2 Redstone×1 Quartz×1
Microprocessor×1
Communication Module
Circuit Board×1 Microprocessor×1 Copper×2 Redstone×2 Quartz×1 Amethyst Shard×1
Communication Module×1
Control Module
Circuit Board×1 Microprocessor×1 Comparator×1 Copper×2 Redstone×2 Iron×1
Control Module×1

homecore:homelink_connector is the common tool for binding a device to a HomeNetwork. It works with any device discovered by a HomeCore provider and implementing NetworkMember: it is therefore the same tool for Farm, Quarry, Storage or Dashboard machines.

The four uses of the connector.
ActionEffect
Click in the airCycles through the networks the player can administer; the selected network is shown in the message.
Click on a deviceBinds that device to the selected network.
Sneak + click a bound deviceSelects that device's network.
Sneak + click in the airClears the tool's selection (detaches no device).

The selection is kept on the item and permissions are rechecked on every use. The connector calls DashboardAPI.bindDevice(): it requires the right to configure the machine and MANAGE_NETWORK on both the target network and the previous one. A denial keeps the existing binding. The machine's owner is not transferred with its binding.

Each mod's specialized tools remain useful for their own associations (crop zones, mining area). The energy cables of HomeLink Energy and item ports are physical connections, distinct from the HomeNetwork.

The icon below is a 3D render of the connector, as in the inventory. Crafted at the vanilla table, on a 2 × 2 grid.

Persistent networks#

HomeNetworks are saved in the Overworld's SavedData and shared across dimensions. Device UUIDs survive restarts. Three link states are available to consumers: CONNECTED, UNREACHABLE, OFFLINE. HomeCore computes no radio range: that logic belongs to each mod (see Dashboard for its repeater system).

Install / build#

./gradlew.bat clean build test javadoc
./gradlew.bat runClient

The JAR is produced in build/libs; install homecore-1.14.0.jar on both client and server. To develop a consumer mod, first publish HomeCore locally with ./gradlew.bat publishToMavenLocal.

Gallery#

In-game captures. Click to enlarge.

Source code and full documentation on GitHub →