Page Menu
Home
1F616EMO Bugtracker
Search
Configure Global Search
Log In
Files
F263222
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Flag For Later
Award Token
Size
2 KB
Referenced Files
None
Subscribers
None
View Options
diff --git a/rightclick_fix/init.lua b/rightclick_fix/init.lua
new file mode 100644
index 0000000..6602d57
--- /dev/null
+++ b/rightclick_fix/init.lua
@@ -0,0 +1,79 @@
+-- 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 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
diff --git a/rightclick_fix/mod.conf b/rightclick_fix/mod.conf
new file mode 100644
index 0000000..747b74a
--- /dev/null
+++ b/rightclick_fix/mod.conf
@@ -0,0 +1,2 @@
+name = rightclick_fix
+depends = screwdriver, technic, advtrains, advtrains_interlocking, advtrains_luaautomation, advtrains_train_track, advtrains_line_automation
\ No newline at end of file
File Metadata
Details
Attached
Mime Type
text/x-diff
Expires
Wed, Jun 10, 10:45 AM (3 w, 2 d ago)
Storage Engine
local-disk
Storage Format
Raw Data
Storage Handle
13/0c/c7b358074c19e16ab2079058c610
Default Alt Text
(2 KB)
Attached To
Mode
rTWIMODS Survival Server Custom Modifications
Attached
Detach File
Event Timeline
Log In to Comment