Page MenuHome1F616EMO Bugtracker

init.lua
No OneTemporary

Size
2 KB
Referenced Files
None
Subscribers
None

init.lua

-- twi_mods/rightclick_fix/init.lua
-- Fix node interaction on on_place tols
-- Copyright (C) 2025 1F616EMO
-- SPDX-License-Identifier: LGPL-2.1-or-later
local fix_tools = {
-- Screwdrivers
"screwdriver:screwdriver",
"technic:sonic_screwdriver",
-- Advtrains tools
"advtrains:trackworker",
"advtrains:copytool",
"advtrains_interlocking:tool",
"advtrains_luaautomation:pcnaming",
-- Advtrains track placers
"advtrains:dtrack_atc_placer",
"advtrains:dtrack_bumper_placer",
"advtrains:dtrack_detector_off_placer",
"advtrains:dtrack_load_placer",
"advtrains:dtrack_placer",
"advtrains:dtrack_s3_placer",
"advtrains:dtrack_slopeplacer",
"advtrains:dtrack_sy_placer",
"advtrains:dtrack_unload_placer",
"advtrains:dtrack_xing90plusx_placer",
"advtrains:dtrack_xing_placer",
"advtrains:dtrack_xingdiag_placer",
"advtrains_interlocking:dtrack_npr_placer",
"advtrains_line_automation:dtrack_stop_placer",
"advtrains_luaautomation:dtrack_placer",
}
local function is_function_node(pos)
-- 1. Formspec meta check
local meta = core.get_meta(pos)
if meta:get("formspec") ~= nil then
return true
end
-- 2. Check on_rightclick
local node = core.get_node(pos)
local ndef = core.registered_nodes[node.name]
return ndef and ndef.on_rightclick and true or false
end
local function on_place(itemstack, placer, pointed_thing, old_on_place)
local pos = pointed_thing.under
if is_function_node(pos) then
local control = placer:get_player_control()
if not control.sneak then
-- Do node function instead
local node = core.get_node(pos)
local ndef = core.registered_nodes[node.name]
if ndef.on_rightclick then
return ndef.on_rightclick(pos, node, placer, itemstack, pointed_thing)
end
return itemstack
end
end
return old_on_place(itemstack, placer, pointed_thing)
end
-- on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
for _, name in ipairs(fix_tools) do
local def = core.registered_items[name]
local old_on_place = def.on_place
if old_on_place then
core.override_item(name, {
on_place = function(itemstack, placer, pointed_thing)
return on_place(itemstack, placer, pointed_thing, old_on_place)
end,
})
end
end

File Metadata

Mime Type
text/plain
Expires
Mon, Feb 16, 5:16 AM (2 w, 2 d ago)
Storage Engine
local-disk
Storage Format
Raw Data
Storage Handle
c4/e8/61e58f960b8e760309f796bfc8f1
Default Alt Text
init.lua (2 KB)

Event Timeline