From bb139b4afd3aad1fa881afeb99c8e89b5cecd37d Mon Sep 17 00:00:00 2001 From: MayaTheShy Date: Sun, 22 Mar 2026 18:40:03 -0400 Subject: [PATCH] fix: override dofile to preserve Opus env (require was nil in sub-modules) CC:Tweaked dofile loads files with _G as environment, but Opus injects require into the program's sandbox _ENV. All dofile'd modules (especially display.lua) could not see require. Also add dropperController to apps.db. --- etc/apps.db | 5 +++++ inventoryClient.lua | 9 +++++++++ inventoryManager.lua | 9 +++++++++ 3 files changed, 23 insertions(+) diff --git a/etc/apps.db b/etc/apps.db index 6f9a637..bbf4144 100644 --- a/etc/apps.db +++ b/etc/apps.db @@ -20,4 +20,9 @@ category = "Inventory", run = "inventoryWebBridge.lua", }, + [ "im_dropper" ] = { + title = "Dropper Ctrl", + category = "Inventory", + run = "dropperController.lua", + }, } diff --git a/inventoryClient.lua b/inventoryClient.lua index 9375b58..bdcaf9d 100644 --- a/inventoryClient.lua +++ b/inventoryClient.lua @@ -27,6 +27,15 @@ local DROPPER_ANNOUNCE_INTERVAL = 30 -- seconds between dropper announcements local _baseDir = fs.getDir(shell.getRunningProgram()) local function _path(rel) return fs.combine(_baseDir, rel) end +-- Override dofile to load modules into our _ENV so they inherit +-- Opus's require/package (CC:Tweaked dofile uses _G instead). +local _ccDofile = dofile +local function dofile(path) -- luacheck: ignore + local fn, err = loadfile(path, nil, _ENV) + if fn then return fn() + else error(err, 2) end +end + local CLIENT_CONFIG_FILE = _path(".client_config") ------------------------------------------------- diff --git a/inventoryManager.lua b/inventoryManager.lua index 9e03920..f199da9 100644 --- a/inventoryManager.lua +++ b/inventoryManager.lua @@ -15,6 +15,15 @@ local _baseDir = fs.getDir(shell.getRunningProgram()) local function _path(rel) return fs.combine(_baseDir, rel) end +-- Override dofile to load modules into our _ENV so they inherit +-- Opus's require/package (CC:Tweaked dofile uses _G instead). +local _ccDofile = dofile +local function dofile(path) -- luacheck: ignore + local fn, err = loadfile(path, nil, _ENV) + if fn then return fn() + else error(err, 2) end +end + ------------------------------------------------- -- Structured logging & shared UI helpers -------------------------------------------------