Home›Java›Mods›ComputerCraft Wake Nodes
ComputerCraft Wake Nodes
ModsJava

ComputerCraft Wake Nodes

Java mod listed for Minecraft 1.20. Downloads from the MC Java Mods app on Android.

by 0Davgi0 · on CurseForge

A Forge mod adding wake nodes for CC: Tweaked computers with dynamic chunk-loading control, allowing you to remotely wake distant CC:Tweaked computers.

⬇ Download on CurseForge

The author built this one for Minecraft 1.20.1 on Forge. On other versions it may install and then do nothing.

ComputerCraft Wake Nodes — screenshot 1ComputerCraft Wake Nodes — screenshot 2ComputerCraft Wake Nodes — screenshot 3

ComputerCraft Wake Nodes

ComputerCraft Wake Nodes is a Forge mod for Minecraft 1.20.1 that adds a small chunk-loading network for CC: Tweaked (ComputerCraft) computers, particularly useful for automation setups.

It introduces three ComputerCraft peripherals:

The main use case is waking distant computer setups long enough for their chunk to load and tick, allowing their startup logic to run.

It also adds the Wake Chip, a crafting component used by the other blocks.

If Create is installed, custom Create recipes are provided for the Wake Chip, Wake Node, Advanced Wake Node, and Wake Controller.

Features

Requirements

Added Content

Wake Chip

Crafting component used by the other blocks.

Recipe:

Wake chip recipe

Creative tab: Ingredients

Wake Node

A thin peripheral block that must be placed directly against a CC: Tweaked computer block.

What it does:

Important placement rule:

Recipe:

Wake Node recipe

Creative tab: Functional Blocks

Advanced Wake Node

An upgraded Wake Node that lets the user choose the loaded area around the attached computer:

It inherits all features of the basic Wake Node and adds setRange(), getRange(), and listAvailableRanges() methods.

Recipe (same shape as Wake Node, but with netherite instead of iron):

Advanced Wake Node recipe

Creative tab: Functional Blocks

Wake Controller

A peripheral block used by a controller computer to manage registered wake nodes.

What it does:

Recipe:

Wake Controller recipe

Creative tab: Functional Blocks

How It Works

  1. Place a Wake Node on the face of a CC: Tweaked computer.
  2. On that computer, call setId("some_name") on the wake_node peripheral to register the node.
    The computer that performs this registration becomes the node owner.
  3. Authorize controller computers with grantController(computerId).
  4. Place a Wake Controller next to another computer.
  5. From the authorized controller computer, call loadNode("some_name") or loadFor("some_name", seconds).

The loaded chunk is the computer's chunk, not the Wake Node block's chunk.

Each node has an owner computer and an access control list (ACL) of authorized controller computer IDs.
Controller methods only operate on nodes the calling computer is authorized to manage.

Node registrations are saved, but active forced chunks are not. After a server restart, nodes still exist in the registry, but none of them remain loaded until requested again.

ComputerCraft API

Peripheral Types

Wake Node API

Find the peripheral with standard ComputerCraft calls such as:

local wake = peripheral.find("wake_node")

Check the API.md file on GitHub for a more compact version of the API documentation.

setId(id)

Registers this Wake Node under the given string ID.

Example:

local wake = peripheral.find("wake_node")
assert(wake, "wake_node not found")

wake.setId("remote_factory")

grantController(computerId)

Authorizes a controller computer ID to manage this node.

revokeController(computerId)

Removes a controller computer ID from this node's allowed list.

listControllers()

Returns a sorted list of authorized controller computer IDs.

getPermissions()

Returns ownership and controller ACL for this node:

{
  owner = 17,
  controllers = { 42, 73 }
}

getId()

Returns the current node ID, or nil if none has been assigned.

Example:

print(wake.getId())

getChunk()

Returns a table describing the attached computer's chunk:

{
  dimension = "minecraft:overworld",
  chunk_x = 12,
  chunk_z = -4
}

getInfo()

Returns a table with the node ID and chunk information:

{
  id = "remote_factory",
  dimension = "minecraft:overworld",
  chunk_x = 12,
  chunk_z = -4
}

If no ID has been assigned yet, id is returned as an empty string.

Advanced Wake Node API

The Advanced Wake Node exposes the wake_node_advanced peripheral type. It inherits all methods from the basic Wake Node and adds the following:

local wake = peripheral.find("wake_node_advanced")

setRange(size)

Sets the loaded area around the computer.

Example:

wake.setRange(5) -- load a 5×5 area (25 chunks)

getRange()

Returns the current range size (1, 3, or 5).

print(wake.getRange()) -- 3

listAvailableRanges()

Returns an array of allowed range values based on server configuration.

local ranges = wake.listAvailableRanges()
-- { 1, 3, 5 }

getInfo() (overridden)

Returns the same table as the basic getInfo() plus two extra fields:

{
  id = "remote_factory",
  dimension = "minecraft:overworld",
  chunk_x = 12,
  chunk_z = -4,
  range = 3,
  loaded_chunks = 9
}

Wake Controller API

Find the peripheral with standard ComputerCraft calls such as:

local ctl = peripheral.find("wake_controller")

listNodes()

Returns a list of registered node IDs accessible by the calling controller computer.

Example:

for _, id in ipairs(ctl.listNodes()) do
  print(id)
end

getNodeInfo(id)

Returns node information for an accessible node.

Raises an error if the node does not exist or if the calling controller is not authorized.

Returned table:

{
  id = "remote_factory",
  dimension = "minecraft:overworld",
  chunk_x = 12,
  chunk_z = -4,
  loaded = false,
  expires_at = 90
}

Notes:

loadNode(id)

Force-loads the node's chunk indefinitely, until one of these happens:

Raises an error if the node does not exist.

Also raises an error if the calling controller is not authorized for this node.

loadFor(id, seconds)

Force-loads the node's chunk for a limited number of seconds.

Raises an error if the node does not exist or the duration is invalid.

Also raises an error if the calling controller is not authorized for this node.

unloadNode(id)

Unloads the given node if it is currently loaded.

unloadAll()

Unloads every currently loaded node accessible by the calling controller.

isNodeLoaded(id)

Returns true if the node is currently loaded, otherwise false.

Raises an error if the calling controller is not authorized for this node.

getLoadedNodes()

Returns a list of currently loaded node IDs accessible by the calling controller.

Example Setup

Remote Computer

Attach a Wake Node to a computer and register it:

local wake = peripheral.find("wake_node")
assert(wake, "wake_node not found")

wake.setId("remote_factory")
wake.grantController(42) -- controller computer ID
print(textutils.serialize(wake.getInfo()))

Controller Computer

Load the remote chunk for two minutes:

local ctl = peripheral.find("wake_controller")
assert(ctl, "wake_controller not found")

print("Known nodes:")
for _, id in ipairs(ctl.listNodes()) do
  print(" - " .. id)
end

ctl.loadFor("remote_factory", 120)
print(textutils.serialize(ctl.getNodeInfo("remote_factory")))

Configuration

Server config keys:

Common config keys:

Behavior Notes

Sample Scripts

The repository includes example Lua scripts in sampleScripts/recallCreateTrains/ demonstrating how Wake Nodes can wake remote Create station computers and coordinate train recall flows over Rednet.

License

Code is licensed under the MIT License.

Some bundled assets (textures) are licensed under the ComputerCraft Public License v1.0.0 (CCPL).

See the LICENSE and [LICENSE-CCPL](https://github.com/cogilabs/CC-

Quick facts

Install steps are the general flow for this file type — How to install Minecraft Java mods & modpacks walks through it step by step.

File checked by MCModsHub

These come from our own check of the pack file, not from the source page.

Explore more