mirror of
https://git.minetest.land/VoxeLibre/VoxeLibre.git
synced 2024-11-06 00:01:05 +01:00
64 lines
2 KiB
Lua
64 lines
2 KiB
Lua
local modname = minetest.get_current_modname()
|
|
local modpath = minetest.get_modpath(modname)
|
|
local mod = mcl_minecarts
|
|
local S = minetest.get_translator(modname)
|
|
|
|
function table_metadata(table)
|
|
return {
|
|
table = table,
|
|
set_string = function(self, key, value)
|
|
--print("set_string("..tostring(key)..", "..tostring(value)..")")
|
|
self.table[key] = tostring(value)
|
|
end,
|
|
get_string = function(self, key)
|
|
if self.table[key] then
|
|
return tostring(self.table[key])
|
|
end
|
|
end
|
|
}
|
|
end
|
|
|
|
-- Minecart with Command Block
|
|
mod.register_minecart({
|
|
itemstring = "mcl_minecarts:command_block_minecart",
|
|
entity_id = "mcl_minecarts:command_block_minecart",
|
|
description = S("Minecart with Command Block"),
|
|
tt_help = nil,
|
|
loncdesc = nil,
|
|
usagehelp = nil,
|
|
initial_properties = {
|
|
mesh = "mcl_minecarts_minecart_block.b3d",
|
|
textures = {
|
|
"jeija_commandblock_off.png^[verticalframe:2:0",
|
|
"jeija_commandblock_off.png^[verticalframe:2:0",
|
|
"jeija_commandblock_off.png^[verticalframe:2:0",
|
|
"jeija_commandblock_off.png^[verticalframe:2:0",
|
|
"jeija_commandblock_off.png^[verticalframe:2:0",
|
|
"jeija_commandblock_off.png^[verticalframe:2:0",
|
|
"mcl_minecarts_minecart.png",
|
|
},
|
|
},
|
|
icon = "mcl_minecarts_minecart_command_block.png",
|
|
drop = {"mcl_minecarts:minecart"},
|
|
on_rightclick = function(self, clicker)
|
|
self._staticdata.meta = self._staticdata.meta or {}
|
|
local meta = table_metadata(self._staticdata.meta)
|
|
|
|
mesecon.commandblock.handle_rightclick(meta, clicker)
|
|
end,
|
|
_mcl_minecarts_on_place = function(self, placer)
|
|
-- Create a fake metadata object that stores into the cart's staticdata
|
|
self._staticdata.meta = self._staticdata.meta or {}
|
|
local meta = table_metadata(self._staticdata.meta)
|
|
|
|
mesecon.commandblock.initialize(meta)
|
|
mesecon.commandblock.place(meta, placer)
|
|
end,
|
|
on_activate_by_rail = function(self, timer)
|
|
self._staticdata.meta = self._staticdata.meta or {}
|
|
local meta = table_metadata(self._staticdata.meta)
|
|
|
|
mesecon.commandblock.action_on(meta, self.object:get_pos())
|
|
end,
|
|
creative = true
|
|
})
|