A small NeoForge addon for Minecraft 1.21.1 that lets CC:Tweaked computers read Create Material Checklists from placed Create Clipboards.
The mod does not add new blocks, items, or GUIs. It adds Lua peripheral methods to Create's placed Clipboard block entity.
Create can print a Schematicannon Material Checklist onto a Clipboard. Normally, CC:Tweaked can only see the item name and an opaque NBT/data hash, not the checklist contents.
This addon reads Create's real Clipboard data component on the Java side and exposes the useful parts to Lua.
You can use it to:
- read all Clipboard pages and entries;
- read item rows from a printed Material Checklist;
- get a compact list of missing materials;
- use that list for storage systems, autocrafting, logistics, or dashboards.
Target versions used by this project:
| Dependency | Version |
|---|---|
| Minecraft | 1.21.1 |
| NeoForge | 21.1.233 |
| Create | 6.0.10-280 |
| CC:Tweaked | 1.119.0 |
| Java | 21 |
If you use the included justfile:
just install-tools-macosIf java -version still does not show Java 21, add Java 21 to your shell path:
export PATH="$(brew --prefix openjdk@21)/bin:$PATH"
export JAVA_HOME="$(/usr/libexec/java_home -v 21)"Arch/Manjaro:
just install-tools-archUbuntu/Debian:
just install-tools-ubuntujust setup # make Gradle wrapper executable and print Gradle info
just deps # download/refresh Gradle dependencies
just compile # compile Java sources
just lint # run Gradle checks
just build # build the mod jar
just run-client # run Minecraft client in the dev environment
just run-server # run a dev server
just jar # list built jar filesEquivalent Gradle commands:
./gradlew compileJava
./gradlew check
./gradlew build
./gradlew runClientThe built mod jar will be in:
build/libs/
-
Start the dev client:
just run-client
-
Create a Material Checklist using Create's Schematicannon and a Create Clipboard.
-
Place the written Clipboard in the world.
-
Connect it to a CC:Tweaked computer using a wired modem, or place the computer/modem so the Clipboard is visible as a peripheral.
-
In Lua, inspect available peripherals:
for _, name in ipairs(peripheral.getNames()) do print(name, peripheral.getType(name)) print(textutils.serialize(peripheral.getMethods(name))) end
-
Wrap the Clipboard peripheral and read missing items:
local cb = peripheral.wrap("right") -- replace with the real side or peripheral name print("Has content:", cb.hasClipboardContent()) print("Type:", cb.getClipboardType()) local missing = cb.getMissingItems() for _, item in ipairs(missing) do print(item.name .. " x" .. item.count) end
The peripheral is attached to placed Create Clipboards.
Returns true when the Clipboard has Create Clipboard content.
local hasContent = cb.hasClipboardContent()Returns the Create Clipboard type as a lowercase string, or "empty" if no content exists.
local type = cb.getClipboardType()Returns the number of pages on the Clipboard.
local pages = cb.getPageCount()Returns all Clipboard pages as nested Lua tables.
local pages = cb.getPages()
print(textutils.serialize(pages))Shape:
{
{
{
checked = false,
text = "Stone x128",
itemAmount = 128,
item = {
name = "minecraft:stone",
displayName = "Stone",
count = 1,
maxCount = 64,
},
},
},
}Returns all entries from all pages in one flat list.
Each entry includes page and index.
local entries = cb.getEntries()Returns only entries that have an item icon.
This includes completed rows too, but for completed Material Checklist rows, itemAmount may be 0 because Create stores the missing amount there.
local items = cb.getItemEntries()Returns a compact grouped list of unfinished Material Checklist item rows.
local missing = cb.getMissingItems()
for _, item in ipairs(missing) do
print(item.name, item.count)
endShape:
{
{
name = "minecraft:stone",
displayName = "Stone",
count = 128,
},
{
name = "create:shaft",
displayName = "Shaft",
count = 32,
},
}This addon is designed for a Clipboard placed in the world as a block entity. It does not make normal CC:Tweaked inventory methods expose raw item data components.
Create's printed Material Checklist stores unfinished rows with an item icon and a positive itemAmount. Completed rows are usually checked and may have itemAmount = 0.
So getMissingItems() is reliable for answering:
What materials are still missing?
It is not meant to reconstruct the original full required / gathered / missing state after the checklist has already been completed.
CC:Tweaked exposes only an opaque hash for item data in inventory APIs. This addon avoids that by reading Create's Clipboard data directly on the Java side.
src/main/java/com/syrnnik/ccmcp/
CCCreateMaterialChecklistPeripheral.java # main mod class, registers the generic peripheral
ClipboardChecklistPeripheral.java # Lua API for placed Create Clipboards
src/main/templates/META-INF/neoforge.mods.toml
Mod metadata and dependencies
src/main/resources/assets/ccmcp/lang/en_us.json
English mod display name
build.gradle
NeoForge, Create, and CC:Tweaked dependencies
gradle.properties
Version constants and mod metadata
justfile
Convenience commands for setup, build, run, and checks
Install Java 21 and set JAVA_HOME correctly.
On macOS with Homebrew:
export PATH="$(brew --prefix openjdk@21)/bin:$PATH"
export JAVA_HOME="$(/usr/libexec/java_home -v 21)"Check that:
- the Clipboard is placed in the world;
- it is connected through a CC:Tweaked wired modem or adjacent peripheral connection;
- the modem is activated;
- the mod is installed on both client and server in multiplayer;
- Create and CC:Tweaked versions match the target versions.
Possible reasons:
- the Clipboard is empty;
- the Clipboard is not a printed Material Checklist;
- all checklist rows are completed;
- the checklist stores visible text but no item icons.
Use this for debugging:
print(textutils.serialize(cb.getPages()))