forked from minetest-mods/mesecons
Merge remote-tracking branch 'upstream/master'
This commit is contained in:
commit
e4d7c07962
|
@ -1,6 +1,12 @@
|
|||
The LGPLv3 applies to all code in this project.
|
||||
The CC-BY-SA-3.0 license applies to textures and any other content in this project which is not source code.
|
||||
|
||||
The file mesecons_detector/textures/mesecons_detector_side.png is an unmodified copy of
|
||||
"default_steel_block.png" by Jean-Patrick Guerrero <https://github.com/kilbith>, which can be found at
|
||||
<https://github.com/minetest/minetest_game/blob/9528c0f8b93d6934930e99c3c116df275fb0e4bc/mods/default/textures/default_steel_block.png>.
|
||||
"default_steel_block.png" is licensed under a CC BY-SA 3.0 license. This license can be found later in this document, and can also be found at
|
||||
<https://creativecommons.org/licenses/by-sa/3.0/>. The artwork is reportedly copyright (C) 2010-2018 kilbith.
|
||||
|
||||
=================================================================
|
||||
|
||||
GNU LESSER GENERAL PUBLIC LICENSE
|
||||
|
|
|
@ -46,7 +46,8 @@
|
|||
-- mesecon.rotate_rules_down(rules)
|
||||
-- These functions return rules that have been rotated in the specific direction
|
||||
|
||||
local fifo_queue = dofile(minetest.get_modpath("mesecons").."/fifo_queue.lua")
|
||||
-- See fifo_queue.lua for documentation.
|
||||
mesecon.fifo_queue = dofile(minetest.get_modpath("mesecons").."/fifo_queue.lua")
|
||||
|
||||
-- General
|
||||
function mesecon.get_effector(nodename)
|
||||
|
@ -421,7 +422,7 @@ end
|
|||
function mesecon.turnon(pos, link)
|
||||
find_light_update_conductors()
|
||||
|
||||
local frontiers = fifo_queue.new()
|
||||
local frontiers = mesecon.fifo_queue.new()
|
||||
frontiers:add({pos = pos, link = link})
|
||||
local pos_can_be_skipped = {}
|
||||
|
||||
|
@ -484,7 +485,7 @@ end
|
|||
function mesecon.turnoff(pos, link)
|
||||
find_light_update_conductors()
|
||||
|
||||
local frontiers = fifo_queue.new()
|
||||
local frontiers = mesecon.fifo_queue.new()
|
||||
frontiers:add({pos = pos, link = link})
|
||||
local signals = {}
|
||||
local pos_can_be_skipped = {}
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
|
||||
mesecon.on_placenode = function(pos, node)
|
||||
mesecon.execute_autoconnect_hooks_now(pos, node)
|
||||
node = minetest.get_node(pos) -- Update the node in case it was just changed.
|
||||
|
||||
-- Receptors: Send on signal when active
|
||||
if mesecon.is_receptor_on(node.name) then
|
||||
|
@ -11,18 +12,20 @@ mesecon.on_placenode = function(pos, node)
|
|||
-- Conductors: Send turnon signal when powered or replace by respective offstate conductor
|
||||
-- if placed conductor is an onstate one
|
||||
if mesecon.is_conductor(node.name) then
|
||||
local conductor = mesecon.get_conductor(node.name)
|
||||
if conductor.state ~= mesecon.state.off then
|
||||
-- Turn the conductor off.
|
||||
node.name = conductor.offstate or conductor.states[1]
|
||||
minetest.swap_node(pos, node)
|
||||
end
|
||||
local sources = mesecon.is_powered(pos)
|
||||
if sources then
|
||||
-- also call receptor_on if itself is powered already, so that neighboring
|
||||
-- conductors will be activated (when pushing an on-conductor with a piston)
|
||||
mesecon.vm_begin()
|
||||
for _, s in ipairs(sources) do
|
||||
local rule = vector.subtract(s, pos)
|
||||
mesecon.turnon(pos, rule)
|
||||
end
|
||||
--mesecon.receptor_on (pos, mesecon.conductor_get_rules(node))
|
||||
elseif mesecon.is_conductor_on(node) then
|
||||
node.name = mesecon.get_conductor_off(node)
|
||||
minetest.swap_node(pos, node)
|
||||
mesecon.vm_commit()
|
||||
end
|
||||
end
|
||||
|
||||
|
|
|
@ -6,6 +6,24 @@ function mesecon.move_node(pos, newpos)
|
|||
minetest.get_meta(pos):from_table(meta)
|
||||
end
|
||||
|
||||
-- An on_rotate callback for mesecons components.
|
||||
function mesecon.on_rotate(pos, node, _, _, new_param2)
|
||||
local new_node = {name = node.name, param1 = node.param1, param2 = new_param2}
|
||||
minetest.swap_node(pos, new_node)
|
||||
mesecon.on_dignode(pos, node)
|
||||
mesecon.on_placenode(pos, new_node)
|
||||
minetest.check_for_falling(pos)
|
||||
return true
|
||||
end
|
||||
|
||||
-- An on_rotate callback for components which stay horizontal.
|
||||
function mesecon.on_rotate_horiz(pos, node, user, mode, new_param2)
|
||||
if not minetest.global_exists("screwdriver") or mode ~= screwdriver.ROTATE_FACE then
|
||||
return false
|
||||
end
|
||||
return mesecon.on_rotate(pos, node, user, mode, new_param2)
|
||||
end
|
||||
|
||||
-- Rules rotation Functions:
|
||||
function mesecon.rotate_rules_right(rules)
|
||||
local nr = {}
|
||||
|
@ -317,15 +335,14 @@ end
|
|||
--
|
||||
-- Contents of the table are:
|
||||
-- “vm” → the VoxelManipulator
|
||||
-- “va” → the VoxelArea
|
||||
-- “data” → the data array
|
||||
-- “param1” → the param1 array
|
||||
-- “param2” → the param2 array
|
||||
-- “dirty” → true if data has been modified
|
||||
--
|
||||
-- Nil if no VM-based transaction is in progress.
|
||||
local vm_cache = nil
|
||||
|
||||
-- Cache from node position hashes to nodes (represented as tables).
|
||||
local vm_node_cache = nil
|
||||
|
||||
-- Whether the current transaction will need a light update afterward.
|
||||
local vm_update_light = false
|
||||
|
||||
|
@ -337,6 +354,7 @@ local vm_update_light = false
|
|||
-- vm_abort.
|
||||
function mesecon.vm_begin()
|
||||
vm_cache = {}
|
||||
vm_node_cache = {}
|
||||
vm_update_light = false
|
||||
end
|
||||
|
||||
|
@ -346,18 +364,19 @@ function mesecon.vm_commit()
|
|||
for hash, tbl in pairs(vm_cache) do
|
||||
if tbl.dirty then
|
||||
local vm = tbl.vm
|
||||
vm:set_data(tbl.data)
|
||||
vm:write_to_map(vm_update_light)
|
||||
vm:update_map()
|
||||
end
|
||||
end
|
||||
vm_cache = nil
|
||||
vm_node_cache = nil
|
||||
end
|
||||
|
||||
-- Finishes a VoxelManipulator-based transaction, freeing the VMs and throwing
|
||||
-- away any modified areas.
|
||||
function mesecon.vm_abort()
|
||||
vm_cache = nil
|
||||
vm_node_cache = nil
|
||||
end
|
||||
|
||||
-- Gets the cache entry covering a position, populating it if necessary.
|
||||
|
@ -365,10 +384,7 @@ local function vm_get_or_create_entry(pos)
|
|||
local hash = hash_blockpos(pos)
|
||||
local tbl = vm_cache[hash]
|
||||
if not tbl then
|
||||
local vm = minetest.get_voxel_manip(pos, pos)
|
||||
local min_pos, max_pos = vm:get_emerged_area()
|
||||
local va = VoxelArea:new{MinEdge = min_pos, MaxEdge = max_pos}
|
||||
tbl = {vm = vm, va = va, data = vm:get_data(), param1 = vm:get_light_data(), param2 = vm:get_param2_data(), dirty = false}
|
||||
tbl = {vm = minetest.get_voxel_manip(pos, pos), dirty = false}
|
||||
vm_cache[hash] = tbl
|
||||
end
|
||||
return tbl
|
||||
|
@ -377,16 +393,13 @@ end
|
|||
-- Gets the node at a given position during a VoxelManipulator-based
|
||||
-- transaction.
|
||||
function mesecon.vm_get_node(pos)
|
||||
local tbl = vm_get_or_create_entry(pos)
|
||||
local index = tbl.va:indexp(pos)
|
||||
local node_value = tbl.data[index]
|
||||
if node_value == minetest.CONTENT_IGNORE then
|
||||
return nil
|
||||
else
|
||||
local node_param1 = tbl.param1[index]
|
||||
local node_param2 = tbl.param2[index]
|
||||
return {name = minetest.get_name_from_content_id(node_value), param1 = node_param1, param2 = node_param2}
|
||||
local hash = minetest.hash_node_position(pos)
|
||||
local node = vm_node_cache[hash]
|
||||
if not node then
|
||||
node = vm_get_or_create_entry(pos).vm:get_node_at(pos)
|
||||
vm_node_cache[hash] = node
|
||||
end
|
||||
return node.name ~= "ignore" and {name = node.name, param1 = node.param1, param2 = node.param2} or nil
|
||||
end
|
||||
|
||||
-- Sets a node’s name during a VoxelManipulator-based transaction.
|
||||
|
@ -400,8 +413,14 @@ function mesecon.vm_swap_node(pos, name, update_light)
|
|||
vm_update_light = vm_update_light or update_light ~= false
|
||||
|
||||
local tbl = vm_get_or_create_entry(pos)
|
||||
local index = tbl.va:indexp(pos)
|
||||
tbl.data[index] = minetest.get_content_id(name)
|
||||
local hash = minetest.hash_node_position(pos)
|
||||
local node = vm_node_cache[hash]
|
||||
if not node then
|
||||
node = tbl.vm:get_node_at(pos)
|
||||
vm_node_cache[hash] = node
|
||||
end
|
||||
node.name = name
|
||||
tbl.vm:set_node_at(pos, node)
|
||||
tbl.dirty = true
|
||||
end
|
||||
|
||||
|
|
|
@ -26,7 +26,7 @@ mesecon.register_node("mesecons_blinkyplant:blinky_plant", {
|
|||
paramtype = "light",
|
||||
is_ground_content = false,
|
||||
walkable = false,
|
||||
sounds = default.node_sound_leaves_defaults(),
|
||||
sounds = mesecon.node_sound.leaves,
|
||||
selection_box = {
|
||||
type = "fixed",
|
||||
fixed = {-0.3, -0.5, -0.3, 0.3, -0.5+0.7, 0.3},
|
||||
|
|
|
@ -1,2 +1,2 @@
|
|||
name = mesecons_blinkyplant
|
||||
depends = default, mesecons
|
||||
depends = mesecons, mesecons_gamecompat
|
||||
|
|
|
@ -52,7 +52,7 @@ minetest.register_node("mesecons_button:button_off", {
|
|||
minetest.sound_play("mesecons_button_push", { pos = pos }, true)
|
||||
minetest.get_node_timer(pos):start(1)
|
||||
end,
|
||||
sounds = default.node_sound_stone_defaults(),
|
||||
sounds = mesecon.node_sound.stone,
|
||||
mesecons = {receptor = {
|
||||
state = mesecon.state.off,
|
||||
rules = mesecon.rules.buttonlike_get
|
||||
|
@ -93,7 +93,7 @@ minetest.register_node("mesecons_button:button_on", {
|
|||
groups = {dig_immediate=2, not_in_creative_inventory=1, mesecon_needs_receiver = 1},
|
||||
drop = 'mesecons_button:button_off',
|
||||
description = "Button",
|
||||
sounds = default.node_sound_stone_defaults(),
|
||||
sounds = mesecon.node_sound.stone,
|
||||
mesecons = {receptor = {
|
||||
state = mesecon.state.on,
|
||||
rules = mesecon.rules.buttonlike_get
|
||||
|
@ -105,6 +105,6 @@ minetest.register_node("mesecons_button:button_on", {
|
|||
minetest.register_craft({
|
||||
output = "mesecons_button:button_off 2",
|
||||
recipe = {
|
||||
{"group:mesecon_conductor_craftable","default:stone"},
|
||||
{"group:mesecon_conductor_craftable","mesecons_gamecompat:stone"},
|
||||
}
|
||||
})
|
||||
|
|
|
@ -1,2 +1,2 @@
|
|||
name = mesecons_button
|
||||
depends = default, mesecons, mesecons_receiver
|
||||
depends = mesecons, mesecons_gamecompat, mesecons_receiver
|
||||
|
|
|
@ -189,7 +189,7 @@ minetest.register_node("mesecons_commandblock:commandblock_off", {
|
|||
after_place_node = after_place,
|
||||
on_receive_fields = receive_fields,
|
||||
can_dig = can_dig,
|
||||
sounds = default.node_sound_stone_defaults(),
|
||||
sounds = mesecon.node_sound.stone,
|
||||
mesecons = {effector = {
|
||||
action_on = commandblock_action_on
|
||||
}},
|
||||
|
@ -206,7 +206,7 @@ minetest.register_node("mesecons_commandblock:commandblock_on", {
|
|||
after_place_node = after_place,
|
||||
on_receive_fields = receive_fields,
|
||||
can_dig = can_dig,
|
||||
sounds = default.node_sound_stone_defaults(),
|
||||
sounds = mesecon.node_sound.stone,
|
||||
mesecons = {effector = {
|
||||
action_off = commandblock_action_off
|
||||
}},
|
||||
|
|
|
@ -1,2 +1,2 @@
|
|||
name = mesecons_commandblock
|
||||
depends = default, mesecons
|
||||
depends = mesecons, mesecons_gamecompat
|
||||
|
|
|
@ -69,7 +69,7 @@ local def = {
|
|||
sunlight_propagates = true,
|
||||
is_ground_content = false,
|
||||
delayer_time = delaytime[i],
|
||||
sounds = default.node_sound_stone_defaults(),
|
||||
sounds = mesecon.node_sound.stone,
|
||||
on_blast = mesecon.on_blastnode,
|
||||
drop = "mesecons_delayer:delayer_off_1",
|
||||
}
|
||||
|
@ -169,6 +169,6 @@ minetest.register_craft({
|
|||
output = "mesecons_delayer:delayer_off_1",
|
||||
recipe = {
|
||||
{"mesecons_torch:mesecon_torch_on", "group:mesecon_conductor_craftable", "mesecons_torch:mesecon_torch_on"},
|
||||
{"default:cobble","default:cobble", "default:cobble"},
|
||||
{"mesecons_gamecompat:cobble","mesecons_gamecompat:cobble", "mesecons_gamecompat:cobble"},
|
||||
}
|
||||
})
|
||||
|
|
|
@ -1,2 +1,2 @@
|
|||
name = mesecons_delayer
|
||||
depends = default, mesecons
|
||||
depends = mesecons, mesecons_gamecompat
|
||||
|
|
|
@ -1,3 +1,5 @@
|
|||
local side_texture = mesecon.texture.steel_block or "mesecons_detector_side.png"
|
||||
|
||||
local GET_COMMAND = "GET"
|
||||
|
||||
-- Object detector
|
||||
|
@ -64,7 +66,7 @@ local object_detector_digiline = {
|
|||
}
|
||||
|
||||
minetest.register_node("mesecons_detector:object_detector_off", {
|
||||
tiles = {"default_steel_block.png", "default_steel_block.png", "jeija_object_detector_off.png", "jeija_object_detector_off.png", "jeija_object_detector_off.png", "jeija_object_detector_off.png"},
|
||||
tiles = {side_texture, side_texture, "jeija_object_detector_off.png", "jeija_object_detector_off.png", "jeija_object_detector_off.png", "jeija_object_detector_off.png"},
|
||||
paramtype = "light",
|
||||
is_ground_content = false,
|
||||
walkable = true,
|
||||
|
@ -76,13 +78,13 @@ minetest.register_node("mesecons_detector:object_detector_off", {
|
|||
}},
|
||||
on_construct = object_detector_make_formspec,
|
||||
on_receive_fields = object_detector_on_receive_fields,
|
||||
sounds = default.node_sound_stone_defaults(),
|
||||
sounds = mesecon.node_sound.stone,
|
||||
digiline = object_detector_digiline,
|
||||
on_blast = mesecon.on_blastnode,
|
||||
})
|
||||
|
||||
minetest.register_node("mesecons_detector:object_detector_on", {
|
||||
tiles = {"default_steel_block.png", "default_steel_block.png", "jeija_object_detector_on.png", "jeija_object_detector_on.png", "jeija_object_detector_on.png", "jeija_object_detector_on.png"},
|
||||
tiles = {side_texture, side_texture, "jeija_object_detector_on.png", "jeija_object_detector_on.png", "jeija_object_detector_on.png", "jeija_object_detector_on.png"},
|
||||
paramtype = "light",
|
||||
is_ground_content = false,
|
||||
walkable = true,
|
||||
|
@ -94,7 +96,7 @@ minetest.register_node("mesecons_detector:object_detector_on", {
|
|||
}},
|
||||
on_construct = object_detector_make_formspec,
|
||||
on_receive_fields = object_detector_on_receive_fields,
|
||||
sounds = default.node_sound_stone_defaults(),
|
||||
sounds = mesecon.node_sound.stone,
|
||||
digiline = object_detector_digiline,
|
||||
on_blast = mesecon.on_blastnode,
|
||||
})
|
||||
|
@ -102,18 +104,18 @@ minetest.register_node("mesecons_detector:object_detector_on", {
|
|||
minetest.register_craft({
|
||||
output = 'mesecons_detector:object_detector_off',
|
||||
recipe = {
|
||||
{"default:steel_ingot", "default:steel_ingot", "default:steel_ingot"},
|
||||
{"default:steel_ingot", "mesecons_luacontroller:luacontroller0000", "default:steel_ingot"},
|
||||
{"default:steel_ingot", "group:mesecon_conductor_craftable", "default:steel_ingot"},
|
||||
{"mesecons_gamecompat:steel_ingot", "mesecons_gamecompat:steel_ingot", "mesecons_gamecompat:steel_ingot"},
|
||||
{"mesecons_gamecompat:steel_ingot", "mesecons_luacontroller:luacontroller0000", "mesecons_gamecompat:steel_ingot"},
|
||||
{"mesecons_gamecompat:steel_ingot", "group:mesecon_conductor_craftable", "mesecons_gamecompat:steel_ingot"},
|
||||
}
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = 'mesecons_detector:object_detector_off',
|
||||
recipe = {
|
||||
{"default:steel_ingot", "default:steel_ingot", "default:steel_ingot"},
|
||||
{"default:steel_ingot", "mesecons_microcontroller:microcontroller0000", "default:steel_ingot"},
|
||||
{"default:steel_ingot", "group:mesecon_conductor_craftable", "default:steel_ingot"},
|
||||
{"mesecons_gamecompat:steel_ingot", "mesecons_gamecompat:steel_ingot", "mesecons_gamecompat:steel_ingot"},
|
||||
{"mesecons_gamecompat:steel_ingot", "mesecons_microcontroller:microcontroller0000", "mesecons_gamecompat:steel_ingot"},
|
||||
{"mesecons_gamecompat:steel_ingot", "group:mesecon_conductor_craftable", "mesecons_gamecompat:steel_ingot"},
|
||||
}
|
||||
})
|
||||
|
||||
|
@ -239,7 +241,7 @@ local node_detector_digiline = {
|
|||
}
|
||||
|
||||
minetest.register_node("mesecons_detector:node_detector_off", {
|
||||
tiles = {"default_steel_block.png", "default_steel_block.png", "default_steel_block.png", "default_steel_block.png", "default_steel_block.png", "jeija_node_detector_off.png"},
|
||||
tiles = {side_texture, side_texture, side_texture, side_texture, side_texture, "jeija_node_detector_off.png"},
|
||||
paramtype = "light",
|
||||
paramtype2 = "facedir",
|
||||
is_ground_content = false,
|
||||
|
@ -251,13 +253,13 @@ minetest.register_node("mesecons_detector:node_detector_off", {
|
|||
}},
|
||||
on_construct = node_detector_make_formspec,
|
||||
on_receive_fields = node_detector_on_receive_fields,
|
||||
sounds = default.node_sound_stone_defaults(),
|
||||
sounds = mesecon.node_sound.stone,
|
||||
digiline = node_detector_digiline,
|
||||
on_blast = mesecon.on_blastnode,
|
||||
})
|
||||
|
||||
minetest.register_node("mesecons_detector:node_detector_on", {
|
||||
tiles = {"default_steel_block.png", "default_steel_block.png", "default_steel_block.png", "default_steel_block.png", "default_steel_block.png", "jeija_node_detector_on.png"},
|
||||
tiles = {side_texture, side_texture, side_texture, side_texture, side_texture, "jeija_node_detector_on.png"},
|
||||
paramtype = "light",
|
||||
paramtype2 = "facedir",
|
||||
is_ground_content = false,
|
||||
|
@ -269,7 +271,7 @@ minetest.register_node("mesecons_detector:node_detector_on", {
|
|||
}},
|
||||
on_construct = node_detector_make_formspec,
|
||||
on_receive_fields = node_detector_on_receive_fields,
|
||||
sounds = default.node_sound_stone_defaults(),
|
||||
sounds = mesecon.node_sound.stone,
|
||||
digiline = node_detector_digiline,
|
||||
on_blast = mesecon.on_blastnode,
|
||||
})
|
||||
|
@ -277,18 +279,18 @@ minetest.register_node("mesecons_detector:node_detector_on", {
|
|||
minetest.register_craft({
|
||||
output = 'mesecons_detector:node_detector_off',
|
||||
recipe = {
|
||||
{"default:steel_ingot", "group:mesecon_conductor_craftable", "default:steel_ingot"},
|
||||
{"default:steel_ingot", "mesecons_luacontroller:luacontroller0000", "default:steel_ingot"},
|
||||
{"default:steel_ingot", "default:steel_ingot", "default:steel_ingot"},
|
||||
{"mesecons_gamecompat:steel_ingot", "group:mesecon_conductor_craftable", "mesecons_gamecompat:steel_ingot"},
|
||||
{"mesecons_gamecompat:steel_ingot", "mesecons_luacontroller:luacontroller0000", "mesecons_gamecompat:steel_ingot"},
|
||||
{"mesecons_gamecompat:steel_ingot", "mesecons_gamecompat:steel_ingot", "mesecons_gamecompat:steel_ingot"},
|
||||
}
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = 'mesecons_detector:node_detector_off',
|
||||
recipe = {
|
||||
{"default:steel_ingot", "group:mesecon_conductor_craftable", "default:steel_ingot"},
|
||||
{"default:steel_ingot", "mesecons_microcontroller:microcontroller0000", "default:steel_ingot"},
|
||||
{"default:steel_ingot", "default:steel_ingot", "default:steel_ingot"},
|
||||
{"mesecons_gamecompat:steel_ingot", "group:mesecon_conductor_craftable", "mesecons_gamecompat:steel_ingot"},
|
||||
{"mesecons_gamecompat:steel_ingot", "mesecons_microcontroller:microcontroller0000", "mesecons_gamecompat:steel_ingot"},
|
||||
{"mesecons_gamecompat:steel_ingot", "mesecons_gamecompat:steel_ingot", "mesecons_gamecompat:steel_ingot"},
|
||||
}
|
||||
})
|
||||
|
||||
|
|
|
@ -1,2 +1,2 @@
|
|||
name = mesecons_detector
|
||||
depends = default, mesecons, mesecons_materials
|
||||
depends = mesecons, mesecons_gamecompat, mesecons_materials
|
||||
|
|
BIN
mesecons_detector/textures/mesecons_detector_side.png
Normal file
BIN
mesecons_detector/textures/mesecons_detector_side.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 350 B |
|
@ -1,7 +1,7 @@
|
|||
-- Modified, from minetest_game/mods/doors/init.lua
|
||||
local function on_rightclick(pos, dir, check_name, replace, replace_dir, params)
|
||||
pos.y = pos.y + dir
|
||||
if not minetest.get_node(pos).name == check_name then
|
||||
if minetest.get_node(pos).name ~= check_name then
|
||||
return
|
||||
end
|
||||
local p2 = minetest.get_node(pos).param2
|
||||
|
@ -66,6 +66,10 @@ local function meseconify_door(name)
|
|||
}
|
||||
minetest.override_item(name .. "_a", override)
|
||||
minetest.override_item(name .. "_b", override)
|
||||
if minetest.registered_items[name .. "_c"] then
|
||||
minetest.override_item(name .. "_c", override)
|
||||
minetest.override_item(name .. "_d", override)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
|
|
|
@ -1,5 +1,3 @@
|
|||
local screwdriver_exists = minetest.global_exists("screwdriver")
|
||||
|
||||
local corner_selectionbox = {
|
||||
type = "fixed",
|
||||
fixed = { -16/32, -16/32, -16/32, 5/32, -12/32, 5/32 },
|
||||
|
@ -32,7 +30,7 @@ minetest.register_node("mesecons_extrawires:corner_on", {
|
|||
selection_box = corner_selectionbox,
|
||||
groups = {dig_immediate = 3, not_in_creative_inventory = 1},
|
||||
drop = "mesecons_extrawires:corner_off",
|
||||
sounds = default.node_sound_defaults(),
|
||||
sounds = mesecon.node_sound.default,
|
||||
mesecons = {conductor =
|
||||
{
|
||||
state = mesecon.state.on,
|
||||
|
@ -40,7 +38,7 @@ minetest.register_node("mesecons_extrawires:corner_on", {
|
|||
offstate = "mesecons_extrawires:corner_off"
|
||||
}},
|
||||
on_blast = mesecon.on_blastnode,
|
||||
on_rotate = screwdriver_exists and screwdriver.rotate_simple,
|
||||
on_rotate = mesecon.on_rotate_horiz,
|
||||
})
|
||||
|
||||
minetest.register_node("mesecons_extrawires:corner_off", {
|
||||
|
@ -58,7 +56,7 @@ minetest.register_node("mesecons_extrawires:corner_off", {
|
|||
sunlight_propagates = true,
|
||||
selection_box = corner_selectionbox,
|
||||
groups = {dig_immediate = 3},
|
||||
sounds = default.node_sound_defaults(),
|
||||
sounds = mesecon.node_sound.default,
|
||||
mesecons = {conductor =
|
||||
{
|
||||
state = mesecon.state.off,
|
||||
|
@ -66,7 +64,7 @@ minetest.register_node("mesecons_extrawires:corner_off", {
|
|||
onstate = "mesecons_extrawires:corner_on"
|
||||
}},
|
||||
on_blast = mesecon.on_blastnode,
|
||||
on_rotate = screwdriver_exists and screwdriver.rotate_simple,
|
||||
on_rotate = mesecon.on_rotate_horiz,
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
|
|
|
@ -32,7 +32,7 @@ minetest.register_node("mesecons_extrawires:crossover_off", {
|
|||
stack_max = 99,
|
||||
selection_box = {type="fixed", fixed={-16/32, -16/32, -16/32, 16/32, -5/32, 16/32}},
|
||||
groups = {dig_immediate=3, mesecon=3},
|
||||
sounds = default.node_sound_defaults(),
|
||||
sounds = mesecon.node_sound.default,
|
||||
mesecons = {
|
||||
conductor = {
|
||||
states = crossover_states,
|
||||
|
@ -59,7 +59,7 @@ minetest.register_node("mesecons_extrawires:crossover_01", {
|
|||
stack_max = 99,
|
||||
selection_box = {type="fixed", fixed={-16/32, -16/32, -16/32, 16/32, -5/32, 16/32}},
|
||||
groups = {dig_immediate=3, mesecon=3, not_in_creative_inventory=1},
|
||||
sounds = default.node_sound_defaults(),
|
||||
sounds = mesecon.node_sound.default,
|
||||
mesecons = {
|
||||
conductor = {
|
||||
states = crossover_states,
|
||||
|
@ -86,7 +86,7 @@ minetest.register_node("mesecons_extrawires:crossover_10", {
|
|||
stack_max = 99,
|
||||
selection_box = {type="fixed", fixed={-16/32, -16/32, -16/32, 16/32, -5/32, 16/32}},
|
||||
groups = {dig_immediate=3, mesecon=3, not_in_creative_inventory=1},
|
||||
sounds = default.node_sound_defaults(),
|
||||
sounds = mesecon.node_sound.default,
|
||||
mesecons = {
|
||||
conductor = {
|
||||
states = crossover_states,
|
||||
|
@ -113,7 +113,7 @@ minetest.register_node("mesecons_extrawires:crossover_on", {
|
|||
stack_max = 99,
|
||||
selection_box = {type="fixed", fixed={-16/32, -16/32, -16/32, 16/32, -5/32, 16/32}},
|
||||
groups = {dig_immediate=3, mesecon=3, not_in_creative_inventory=1},
|
||||
sounds = default.node_sound_defaults(),
|
||||
sounds = mesecon.node_sound.default,
|
||||
mesecons = {
|
||||
conductor = {
|
||||
states = crossover_states,
|
||||
|
|
|
@ -1,6 +1,3 @@
|
|||
local rotate
|
||||
if minetest.global_exists("screwdriver") then rotate = screwdriver.rotate_simple end
|
||||
|
||||
local doublecorner_selectionbox = {
|
||||
type = "fixed",
|
||||
fixed = { -8/16, -8/16, -8/16, 8/16, -6/16, 8/16 },
|
||||
|
@ -61,7 +58,7 @@ for k, state in ipairs(doublecorner_states) do
|
|||
selection_box = doublecorner_selectionbox,
|
||||
groups = groups,
|
||||
drop = doublecorner_states[1],
|
||||
sounds = default.node_sound_defaults(),
|
||||
sounds = mesecon.node_sound.default,
|
||||
mesecons = {
|
||||
conductor = {
|
||||
states = doublecorner_states,
|
||||
|
@ -69,7 +66,7 @@ for k, state in ipairs(doublecorner_states) do
|
|||
},
|
||||
},
|
||||
on_blast = mesecon.on_blastnode,
|
||||
on_rotate = rotate,
|
||||
on_rotate = mesecon.on_rotate_horiz,
|
||||
})
|
||||
end
|
||||
|
||||
|
|
|
@ -1,3 +1,20 @@
|
|||
local mese_nodename = minetest.registered_aliases["mesecons_gamecompat:mese"]
|
||||
if mese_nodename then
|
||||
-- Convert placeholders.
|
||||
minetest.register_alias("mesecons_extrawires:mese", mese_nodename)
|
||||
else
|
||||
-- Register placeholder.
|
||||
mese_nodename = "mesecons_extrawires:mese"
|
||||
minetest.register_node("mesecons_extrawires:mese", {
|
||||
description = "Mese Wire",
|
||||
tiles = {"mesecons_wire_off.png"},
|
||||
paramtype = "light",
|
||||
light_source = 3,
|
||||
groups = {cracky = 1},
|
||||
sounds = mesecon.node_sound.stone,
|
||||
})
|
||||
end
|
||||
|
||||
local mesewire_rules =
|
||||
{
|
||||
{x = 1, y = 0, z = 0},
|
||||
|
@ -8,7 +25,7 @@ local mesewire_rules =
|
|||
{x = 0, y = 0, z =-1},
|
||||
}
|
||||
|
||||
minetest.override_item("default:mese", {
|
||||
minetest.override_item(mese_nodename, {
|
||||
mesecons = {conductor = {
|
||||
state = mesecon.state.off,
|
||||
onstate = "mesecons_extrawires:mese_powered",
|
||||
|
@ -18,15 +35,17 @@ minetest.override_item("default:mese", {
|
|||
|
||||
-- Copy node definition of powered mese from normal mese
|
||||
-- and brighten texture tiles to indicate mese is powered
|
||||
local powered_def = mesecon.merge_tables(minetest.registered_nodes["default:mese"], {
|
||||
drop = "default:mese",
|
||||
light_source = 5,
|
||||
local unpowered_def = minetest.registered_nodes[mese_nodename]
|
||||
local powered_def = mesecon.merge_tables(unpowered_def, {
|
||||
drop = mese_nodename,
|
||||
paramtype = "light",
|
||||
light_source = math.min(unpowered_def.light_source + 2, minetest.LIGHT_MAX),
|
||||
mesecons = {conductor = {
|
||||
state = mesecon.state.on,
|
||||
offstate = "default:mese",
|
||||
offstate = mese_nodename,
|
||||
rules = mesewire_rules
|
||||
}},
|
||||
groups = {cracky = 1, not_in_creative_inventory = 1},
|
||||
groups = mesecon.merge_tables(unpowered_def.groups or {}, {not_in_creative_inventory = 1}),
|
||||
on_blast = mesecon.on_blastnode,
|
||||
})
|
||||
|
||||
|
|
|
@ -1,3 +1,2 @@
|
|||
name = mesecons_extrawires
|
||||
depends = default, mesecons
|
||||
optional_depends = screwdriver
|
||||
depends = mesecons, mesecons_gamecompat
|
||||
|
|
|
@ -1,5 +1,3 @@
|
|||
local screwdriver_exists = minetest.global_exists("screwdriver")
|
||||
|
||||
local tjunction_nodebox = {
|
||||
type = "fixed",
|
||||
-- ±0.001 is to prevent z-fighting
|
||||
|
@ -44,7 +42,7 @@ minetest.register_node("mesecons_extrawires:tjunction_on", {
|
|||
node_box = tjunction_nodebox,
|
||||
groups = {dig_immediate = 3, not_in_creative_inventory = 1},
|
||||
drop = "mesecons_extrawires:tjunction_off",
|
||||
sounds = default.node_sound_defaults(),
|
||||
sounds = mesecon.node_sound.default,
|
||||
mesecons = {conductor =
|
||||
{
|
||||
state = mesecon.state.on,
|
||||
|
@ -52,7 +50,7 @@ minetest.register_node("mesecons_extrawires:tjunction_on", {
|
|||
offstate = "mesecons_extrawires:tjunction_off"
|
||||
}},
|
||||
on_blast = mesecon.on_blastnode,
|
||||
on_rotate = screwdriver_exists and screwdriver.rotate_simple,
|
||||
on_rotate = mesecon.on_rotate_horiz,
|
||||
})
|
||||
|
||||
minetest.register_node("mesecons_extrawires:tjunction_off", {
|
||||
|
@ -74,7 +72,7 @@ minetest.register_node("mesecons_extrawires:tjunction_off", {
|
|||
selection_box = tjunction_selectionbox,
|
||||
node_box = tjunction_nodebox,
|
||||
groups = {dig_immediate = 3},
|
||||
sounds = default.node_sound_defaults(),
|
||||
sounds = mesecon.node_sound.default,
|
||||
mesecons = {conductor =
|
||||
{
|
||||
state = mesecon.state.off,
|
||||
|
@ -82,7 +80,7 @@ minetest.register_node("mesecons_extrawires:tjunction_off", {
|
|||
onstate = "mesecons_extrawires:tjunction_on"
|
||||
}},
|
||||
on_blast = mesecon.on_blastnode,
|
||||
on_rotate = screwdriver_exists and screwdriver.rotate_simple,
|
||||
on_rotate = mesecon.on_rotate_horiz,
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
|
|
|
@ -89,7 +89,7 @@ mesecon.register_node("mesecons_extrawires:vertical", {
|
|||
drop = "mesecons_extrawires:vertical_off",
|
||||
after_place_node = vertical_update,
|
||||
after_dig_node = vertical_update,
|
||||
sounds = default.node_sound_defaults(),
|
||||
sounds = mesecon.node_sound.default,
|
||||
},{
|
||||
tiles = {"mesecons_wire_off.png"},
|
||||
groups = {dig_immediate=3},
|
||||
|
@ -123,7 +123,7 @@ mesecon.register_node("mesecons_extrawires:vertical_top", {
|
|||
drop = "mesecons_extrawires:vertical_off",
|
||||
after_place_node = vertical_update,
|
||||
after_dig_node = vertical_update,
|
||||
sounds = default.node_sound_defaults(),
|
||||
sounds = mesecon.node_sound.default,
|
||||
},{
|
||||
tiles = {"mesecons_wire_off.png"},
|
||||
mesecons = {conductor = {
|
||||
|
@ -155,7 +155,7 @@ mesecon.register_node("mesecons_extrawires:vertical_bottom", {
|
|||
drop = "mesecons_extrawires:vertical_off",
|
||||
after_place_node = vertical_update,
|
||||
after_dig_node = vertical_update,
|
||||
sounds = default.node_sound_defaults(),
|
||||
sounds = mesecon.node_sound.default,
|
||||
},{
|
||||
tiles = {"mesecons_wire_off.png"},
|
||||
mesecons = {conductor = {
|
||||
|
|
|
@ -109,7 +109,7 @@ plg.register_nodes({
|
|||
local is = lcore.deserialize(meta:get_string("instr"))
|
||||
minetest.show_formspec(name, "mesecons:fpga", plg.to_formspec_string(is, nil))
|
||||
end,
|
||||
sounds = default.node_sound_stone_defaults(),
|
||||
sounds = mesecon.node_sound.stone,
|
||||
mesecons = {
|
||||
effector = {
|
||||
rules = {}, -- replaced later
|
||||
|
|
|
@ -1,3 +1,3 @@
|
|||
name = mesecons_fpga
|
||||
depends = default, mesecons
|
||||
depends = mesecons, mesecons_gamecompat
|
||||
optional_depends = screwdriver
|
||||
|
|
71
mesecons_gamecompat/compat_mtg.lua
Normal file
71
mesecons_gamecompat/compat_mtg.lua
Normal file
|
@ -0,0 +1,71 @@
|
|||
--Aliases
|
||||
|
||||
minetest.register_alias("mesecons_gamecompat:chest", "default:chest")
|
||||
minetest.register_alias("mesecons_gamecompat:chest_locked", "default:chest_locked")
|
||||
minetest.register_alias("mesecons_gamecompat:coalblock", "default:coalblock")
|
||||
minetest.register_alias("mesecons_gamecompat:cobble", "default:cobble")
|
||||
minetest.register_alias("mesecons_gamecompat:glass", "default:glass")
|
||||
minetest.register_alias("mesecons_gamecompat:lava_source", "default:lava_source")
|
||||
minetest.register_alias("mesecons_gamecompat:mese", "default:mese")
|
||||
minetest.register_alias("mesecons_gamecompat:mese_crystal", "default:mese_crystal")
|
||||
minetest.register_alias("mesecons_gamecompat:mese_crystal_fragment", "default:mese_crystal_fragment")
|
||||
minetest.register_alias("mesecons_gamecompat:obsidian_glass", "default:obsidian_glass")
|
||||
minetest.register_alias("mesecons_gamecompat:stone", "default:stone")
|
||||
minetest.register_alias("mesecons_gamecompat:steel_ingot", "default:steel_ingot")
|
||||
minetest.register_alias("mesecons_gamecompat:steelblock", "default:steelblock")
|
||||
minetest.register_alias("mesecons_gamecompat:torch", "default:torch")
|
||||
|
||||
if minetest.get_modpath("dye") then
|
||||
for _, color in ipairs(mesecon.dye_colors) do
|
||||
minetest.register_alias("mesecons_gamecompat:dye_" .. color, "dye:" .. color)
|
||||
end
|
||||
end
|
||||
|
||||
-- Sounds
|
||||
|
||||
mesecon.node_sound.default = default.node_sound_defaults()
|
||||
mesecon.node_sound.glass = default.node_sound_glass_defaults()
|
||||
mesecon.node_sound.leaves = default.node_sound_leaves_defaults()
|
||||
mesecon.node_sound.stone = default.node_sound_stone_defaults()
|
||||
mesecon.node_sound.wood = default.node_sound_wood_defaults()
|
||||
|
||||
if minetest.get_modpath("fire") then
|
||||
mesecon.sound_name.fire = "fire_fire"
|
||||
end
|
||||
|
||||
if minetest.get_modpath("tnt") then
|
||||
mesecon.sound_name.explode = "tnt_explode"
|
||||
end
|
||||
|
||||
-- Textures
|
||||
|
||||
mesecon.texture.steel_block = "default_steel_block.png"
|
||||
|
||||
-- MVPS stoppers
|
||||
|
||||
if minetest.get_modpath("mesecons_mvps") then
|
||||
-- All of the locked and internal nodes in Minetest Game
|
||||
for _, name in ipairs({
|
||||
"default:chest_locked",
|
||||
"default:chest_locked_open",
|
||||
"doors:door_steel_b_1", -- old style doors
|
||||
"doors:door_steel_b_2", --
|
||||
"doors:door_steel_t_1", --
|
||||
"doors:door_steel_t_2", --
|
||||
"doors:door_steel_a", -- new style doors
|
||||
"doors:door_steel_b", --
|
||||
"doors:door_steel_c", --
|
||||
"doors:door_steel_d", --
|
||||
"doors:hidden",
|
||||
"doors:trapdoor_steel",
|
||||
"doors:trapdoor_steel_open",
|
||||
"xpanes:door_steel_bar_a",
|
||||
"xpanes:door_steel_bar_b",
|
||||
"xpanes:door_steel_bar_c",
|
||||
"xpanes:door_steel_bar_d",
|
||||
"xpanes:trapdoor_steel_bar",
|
||||
"xpanes:trapdoor_steel_bar_open",
|
||||
}) do
|
||||
mesecon.register_mvps_stopper(name)
|
||||
end
|
||||
end
|
15
mesecons_gamecompat/init.lua
Normal file
15
mesecons_gamecompat/init.lua
Normal file
|
@ -0,0 +1,15 @@
|
|||
mesecon.node_sound = {}
|
||||
|
||||
mesecon.sound_name = {}
|
||||
|
||||
mesecon.texture = {}
|
||||
|
||||
mesecon.dye_colors = {
|
||||
"red", "green", "blue", "grey", "dark_grey", "yellow",
|
||||
"orange", "white", "pink", "magenta", "cyan", "violet",
|
||||
}
|
||||
|
||||
if minetest.get_modpath("default") then
|
||||
minetest.log("info", "Mesecons: detected Minetest Game for game compatibility")
|
||||
dofile(minetest.get_modpath("mesecons_gamecompat").."/compat_mtg.lua")
|
||||
end
|
3
mesecons_gamecompat/mod.conf
Normal file
3
mesecons_gamecompat/mod.conf
Normal file
|
@ -0,0 +1,3 @@
|
|||
name = mesecons_gamecompat
|
||||
depends = mesecons
|
||||
optional_depends = fire, default, dye, mesecons_mvps, tnt
|
|
@ -78,12 +78,13 @@ local function register_gate(name, inputnumber, assess, recipe, description)
|
|||
selection_box = selection_box,
|
||||
node_box = nodebox,
|
||||
walkable = true,
|
||||
sounds = default.node_sound_stone_defaults(),
|
||||
sounds = mesecon.node_sound.stone,
|
||||
assess = assess,
|
||||
onstate = basename.."_on",
|
||||
offstate = basename.."_off",
|
||||
inputnumber = inputnumber,
|
||||
after_dig_node = mesecon.do_cooldown,
|
||||
on_rotate = mesecon.on_rotate_horiz,
|
||||
},{
|
||||
tiles = {
|
||||
"jeija_microcontroller_bottom.png^".."jeija_gate_off.png^"..
|
||||
|
|
|
@ -1,2 +1,2 @@
|
|||
name = mesecons_gates
|
||||
depends = default, mesecons, mesecons_microcontroller, mesecons_delayer, mesecons_torch, mesecons_materials
|
||||
depends = mesecons, mesecons_gamecompat, mesecons_microcontroller, mesecons_delayer, mesecons_torch, mesecons_materials
|
||||
|
|
|
@ -23,7 +23,7 @@ minetest.register_node("mesecons_hydroturbine:hydro_turbine_off", {
|
|||
type = "fixed",
|
||||
fixed = { -0.5, -0.5, -0.5, 0.5, 1.5, 0.5 },
|
||||
},
|
||||
sounds = default.node_sound_metal_defaults(),
|
||||
sounds = mesecon.node_sound.metal,
|
||||
mesecons = {receptor = {
|
||||
state = mesecon.state.off
|
||||
}},
|
||||
|
@ -53,7 +53,7 @@ minetest.register_node("mesecons_hydroturbine:hydro_turbine_on", {
|
|||
type = "fixed",
|
||||
fixed = { -0.5, -0.5, -0.5, 0.5, 1.5, 0.5 },
|
||||
},
|
||||
sounds = default.node_sound_metal_defaults(),
|
||||
sounds = mesecon.node_sound.metal,
|
||||
mesecons = {receptor = {
|
||||
state = mesecon.state.on
|
||||
}},
|
||||
|
@ -97,9 +97,9 @@ nodenames = {"mesecons_hydroturbine:hydro_turbine_on"},
|
|||
minetest.register_craft({
|
||||
output = "mesecons_hydroturbine:hydro_turbine_off 2",
|
||||
recipe = {
|
||||
{"","default:stick", ""},
|
||||
{"default:stick", "default:steel_ingot", "default:stick"},
|
||||
{"","default:stick", ""},
|
||||
{"","grup:stick", ""},
|
||||
{"group:stick", "mesecons_gamecompat:steel_ingot", "group:stick"},
|
||||
{"","group:stick", ""},
|
||||
}
|
||||
})
|
||||
|
||||
|
|
|
@ -1,2 +1,2 @@
|
|||
name = mesecons_hydroturbine
|
||||
depends = default, mesecons
|
||||
depends = mesecons, mesecons_gamecompat
|
||||
|
|
|
@ -1,5 +1,3 @@
|
|||
local screwdriver_exists = minetest.global_exists("screwdriver")
|
||||
|
||||
local function insulated_wire_get_rules(node)
|
||||
local rules = {{x = 1, y = 0, z = 0},
|
||||
{x =-1, y = 0, z = 0}}
|
||||
|
@ -36,14 +34,14 @@ minetest.register_node("mesecons_insulated:insulated_on", {
|
|||
},
|
||||
groups = {dig_immediate = 3, not_in_creative_inventory = 1},
|
||||
drop = "mesecons_insulated:insulated_off",
|
||||
sounds = default.node_sound_defaults(),
|
||||
sounds = mesecon.node_sound.default,
|
||||
mesecons = {conductor = {
|
||||
state = mesecon.state.on,
|
||||
offstate = "mesecons_insulated:insulated_off",
|
||||
rules = insulated_wire_get_rules
|
||||
}},
|
||||
on_blast = mesecon.on_blastnode,
|
||||
on_rotate = screwdriver_exists and screwdriver.rotate_simple,
|
||||
on_rotate = mesecon.on_rotate_horiz,
|
||||
})
|
||||
|
||||
minetest.register_node("mesecons_insulated:insulated_off", {
|
||||
|
@ -72,14 +70,14 @@ minetest.register_node("mesecons_insulated:insulated_off", {
|
|||
fixed = { -16/32-0.001, -17/32, -3/32, 16/32+0.001, -13/32, 3/32 }
|
||||
},
|
||||
groups = {dig_immediate = 3},
|
||||
sounds = default.node_sound_defaults(),
|
||||
sounds = mesecon.node_sound.default,
|
||||
mesecons = {conductor = {
|
||||
state = mesecon.state.off,
|
||||
onstate = "mesecons_insulated:insulated_on",
|
||||
rules = insulated_wire_get_rules
|
||||
}},
|
||||
on_blast = mesecon.on_blastnode,
|
||||
on_rotate = screwdriver_exists and screwdriver.rotate_simple,
|
||||
on_rotate = mesecon.on_rotate_horiz,
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
|
|
|
@ -1,3 +1,2 @@
|
|||
name = mesecons_insulated
|
||||
depends = default, mesecons
|
||||
optional_depends = screwdriver
|
||||
depends = mesecons, mesecons_gamecompat
|
||||
|
|
|
@ -26,7 +26,7 @@ minetest.register_node("mesecons_lamp:lamp_on", {
|
|||
selection_box = mesecon_lamp_box,
|
||||
groups = {dig_immediate = 3,not_in_creative_inventory = 1, mesecon_effector_on = 1},
|
||||
drop = "mesecons_lamp:lamp_off 1",
|
||||
sounds = default.node_sound_glass_defaults(),
|
||||
sounds = mesecon.node_sound.glass,
|
||||
mesecons = {effector = {
|
||||
action_off = function (pos, node)
|
||||
minetest.swap_node(pos, {name = "mesecons_lamp:lamp_off", param2 = node.param2})
|
||||
|
@ -51,7 +51,7 @@ minetest.register_node("mesecons_lamp:lamp_off", {
|
|||
selection_box = mesecon_lamp_box,
|
||||
groups = {dig_immediate=3, mesecon_receptor_off = 1, mesecon_effector_off = 1},
|
||||
description = "Mesecon Lamp",
|
||||
sounds = default.node_sound_glass_defaults(),
|
||||
sounds = mesecon.node_sound.glass,
|
||||
mesecons = {effector = {
|
||||
action_on = function (pos, node)
|
||||
minetest.swap_node(pos, {name = "mesecons_lamp:lamp_on", param2 = node.param2})
|
||||
|
@ -64,8 +64,8 @@ minetest.register_node("mesecons_lamp:lamp_off", {
|
|||
minetest.register_craft({
|
||||
output = "mesecons_lamp:lamp_off 1",
|
||||
recipe = {
|
||||
{"", "default:glass", ""},
|
||||
{"group:mesecon_conductor_craftable", "default:steel_ingot", "group:mesecon_conductor_craftable"},
|
||||
{"", "default:glass", ""},
|
||||
{"", "mesecons_gamecompat:glass", ""},
|
||||
{"group:mesecon_conductor_craftable", "mesecons_gamecompat:steel_ingot", "group:mesecon_conductor_craftable"},
|
||||
{"", "mesecons_gamecompat:glass", ""},
|
||||
}
|
||||
})
|
||||
|
|
|
@ -1,2 +1,2 @@
|
|||
name = mesecons_lamp
|
||||
depends = default, mesecons
|
||||
depends = mesecons, mesecons_gamecompat
|
||||
|
|
|
@ -23,7 +23,7 @@ function mesecon.lightstone_add(name, base_item, texture_off, texture_on, desc)
|
|||
is_ground_content = false,
|
||||
groups = {cracky = 2, mesecon_effector_off = 1, mesecon = 2},
|
||||
description = desc,
|
||||
sounds = default.node_sound_stone_defaults(),
|
||||
sounds = mesecon.node_sound.stone,
|
||||
mesecons = {effector = {
|
||||
rules = lightstone_rules,
|
||||
action_on = function (pos, node)
|
||||
|
@ -38,7 +38,7 @@ function mesecon.lightstone_add(name, base_item, texture_off, texture_on, desc)
|
|||
groups = {cracky = 2, not_in_creative_inventory = 1, mesecon = 2},
|
||||
drop = "mesecons_lightstone:lightstone_" .. name .. "_off",
|
||||
light_source = minetest.LIGHT_MAX - 2,
|
||||
sounds = default.node_sound_stone_defaults(),
|
||||
sounds = mesecon.node_sound.stone,
|
||||
mesecons = {effector = {
|
||||
rules = lightstone_rules,
|
||||
action_off = function (pos, node)
|
||||
|
@ -52,22 +52,22 @@ function mesecon.lightstone_add(name, base_item, texture_off, texture_on, desc)
|
|||
output = "mesecons_lightstone:lightstone_" .. name .. "_off",
|
||||
recipe = {
|
||||
{"",base_item,""},
|
||||
{base_item,"default:torch",base_item},
|
||||
{base_item,"mesecons_gamecompat:torch",base_item},
|
||||
{"","group:mesecon_conductor_craftable",""}
|
||||
}
|
||||
})
|
||||
end
|
||||
|
||||
|
||||
mesecon.lightstone_add("red", "dye:red", "jeija_lightstone_red_off.png", "jeija_lightstone_red_on.png", "Red Lightstone")
|
||||
mesecon.lightstone_add("green", "dye:green", "jeija_lightstone_green_off.png", "jeija_lightstone_green_on.png", "Green Lightstone")
|
||||
mesecon.lightstone_add("blue", "dye:blue", "jeija_lightstone_blue_off.png", "jeija_lightstone_blue_on.png", "Blue Lightstone")
|
||||
mesecon.lightstone_add("gray", "dye:grey", "jeija_lightstone_gray_off.png", "jeija_lightstone_gray_on.png", "Grey Lightstone")
|
||||
mesecon.lightstone_add("darkgray", "dye:dark_grey", "jeija_lightstone_darkgray_off.png", "jeija_lightstone_darkgray_on.png", "Dark Grey Lightstone")
|
||||
mesecon.lightstone_add("yellow", "dye:yellow", "jeija_lightstone_yellow_off.png", "jeija_lightstone_yellow_on.png", "Yellow Lightstone")
|
||||
mesecon.lightstone_add("orange", "dye:orange", "jeija_lightstone_orange_off.png", "jeija_lightstone_orange_on.png", "Orange Lightstone")
|
||||
mesecon.lightstone_add("white", "dye:white", "jeija_lightstone_white_off.png", "jeija_lightstone_white_on.png", "White Lightstone")
|
||||
mesecon.lightstone_add("pink", "dye:pink", "jeija_lightstone_pink_off.png", "jeija_lightstone_pink_on.png", "Pink Lightstone")
|
||||
mesecon.lightstone_add("magenta", "dye:magenta", "jeija_lightstone_magenta_off.png", "jeija_lightstone_magenta_on.png", "Magenta Lightstone")
|
||||
mesecon.lightstone_add("cyan", "dye:cyan", "jeija_lightstone_cyan_off.png", "jeija_lightstone_cyan_on.png", "Cyan Lightstone")
|
||||
mesecon.lightstone_add("violet", "dye:violet", "jeija_lightstone_violet_off.png", "jeija_lightstone_violet_on.png", "Violet Lightstone")
|
||||
mesecon.lightstone_add("red", "mesecons_gamecompat:dye_red", "jeija_lightstone_red_off.png", "jeija_lightstone_red_on.png", "Red Lightstone")
|
||||
mesecon.lightstone_add("green", "mesecons_gamecompat:dye_green", "jeija_lightstone_green_off.png", "jeija_lightstone_green_on.png", "Green Lightstone")
|
||||
mesecon.lightstone_add("blue", "mesecons_gamecompat:dye_blue", "jeija_lightstone_blue_off.png", "jeija_lightstone_blue_on.png", "Blue Lightstone")
|
||||
mesecon.lightstone_add("gray", "mesecons_gamecompat:dye_grey", "jeija_lightstone_gray_off.png", "jeija_lightstone_gray_on.png", "Grey Lightstone")
|
||||
mesecon.lightstone_add("darkgray", "mesecons_gamecompat:dye_dark_grey", "jeija_lightstone_darkgray_off.png", "jeija_lightstone_darkgray_on.png", "Dark Grey Lightstone")
|
||||
mesecon.lightstone_add("yellow", "mesecons_gamecompat:dye_yellow", "jeija_lightstone_yellow_off.png", "jeija_lightstone_yellow_on.png", "Yellow Lightstone")
|
||||
mesecon.lightstone_add("orange", "mesecons_gamecompat:dye_orange", "jeija_lightstone_orange_off.png", "jeija_lightstone_orange_on.png", "Orange Lightstone")
|
||||
mesecon.lightstone_add("white", "mesecons_gamecompat:dye_white", "jeija_lightstone_white_off.png", "jeija_lightstone_white_on.png", "White Lightstone")
|
||||
mesecon.lightstone_add("pink", "mesecons_gamecompat:dye_pink", "jeija_lightstone_pink_off.png", "jeija_lightstone_pink_on.png", "Pink Lightstone")
|
||||
mesecon.lightstone_add("magenta", "mesecons_gamecompat:dye_magenta", "jeija_lightstone_magenta_off.png", "jeija_lightstone_magenta_on.png", "Magenta Lightstone")
|
||||
mesecon.lightstone_add("cyan", "mesecons_gamecompat:dye_cyan", "jeija_lightstone_cyan_off.png", "jeija_lightstone_cyan_on.png", "Cyan Lightstone")
|
||||
mesecon.lightstone_add("violet", "mesecons_gamecompat:dye_violet", "jeija_lightstone_violet_off.png", "jeija_lightstone_violet_on.png", "Violet Lightstone")
|
||||
|
|
|
@ -1,2 +1,2 @@
|
|||
name = mesecons_lightstone
|
||||
depends = default, mesecons, dye
|
||||
depends = mesecons, mesecons_gamecompat
|
||||
|
|
|
@ -865,7 +865,7 @@ for d = 0, 1 do
|
|||
node_box = node_box,
|
||||
on_construct = reset_meta,
|
||||
on_receive_fields = on_receive_fields,
|
||||
sounds = default.node_sound_stone_defaults(),
|
||||
sounds = mesecon.node_sound.stone,
|
||||
mesecons = mesecons,
|
||||
digiline = digiline,
|
||||
-- Virtual portstates are the ports that
|
||||
|
@ -914,7 +914,7 @@ minetest.register_node(BASENAME .. "_burnt", {
|
|||
node_box = node_box,
|
||||
on_construct = reset_meta,
|
||||
on_receive_fields = on_receive_fields,
|
||||
sounds = default.node_sound_stone_defaults(),
|
||||
sounds = mesecon.node_sound.stone,
|
||||
virtual_portstates = {a = false, b = false, c = false, d = false},
|
||||
mesecons = {
|
||||
effector = {
|
||||
|
|
|
@ -1,2 +1,2 @@
|
|||
name = mesecons_luacontroller
|
||||
depends = default, mesecons
|
||||
depends = mesecons, mesecons_gamecompat
|
||||
|
|
|
@ -36,6 +36,6 @@ minetest.register_craft({
|
|||
output = "mesecons_materials:silicon 4",
|
||||
recipe = {
|
||||
{"group:sand", "group:sand"},
|
||||
{"group:sand", "default:steel_ingot"},
|
||||
{"group:sand", "mesecons_gamecompat:steel_ingot"},
|
||||
}
|
||||
})
|
||||
|
|
|
@ -1,2 +1,2 @@
|
|||
name = mesecons_materials
|
||||
depends = default, mesecons
|
||||
depends = mesecons_gamecompat
|
||||
|
|
|
@ -140,7 +140,7 @@ minetest.register_node(nodename, {
|
|||
yc.reset (pos)
|
||||
yc.update(pos)
|
||||
end,
|
||||
sounds = default.node_sound_stone_defaults(),
|
||||
sounds = mesecon.node_sound.stone,
|
||||
mesecons = mesecons,
|
||||
after_dig_node = function (pos, node)
|
||||
rules = microc_rules[node.name]
|
||||
|
|
|
@ -1,2 +1,2 @@
|
|||
name = mesecons_microcontroller
|
||||
depends = default, mesecons
|
||||
depends = mesecons, mesecons_gamecompat
|
||||
|
|
|
@ -129,7 +129,7 @@ mesecon.register_movestone("mesecons_movestones:movestone", {
|
|||
},
|
||||
groups = {cracky = 3},
|
||||
description = "Movestone",
|
||||
sounds = default.node_sound_stone_defaults()
|
||||
sounds = mesecon.node_sound.stone
|
||||
}, false, false)
|
||||
|
||||
mesecon.register_movestone("mesecons_movestones:sticky_movestone", {
|
||||
|
@ -143,7 +143,7 @@ mesecon.register_movestone("mesecons_movestones:sticky_movestone", {
|
|||
},
|
||||
groups = {cracky = 3},
|
||||
description = "Sticky Movestone",
|
||||
sounds = default.node_sound_stone_defaults(),
|
||||
sounds = mesecon.node_sound.stone,
|
||||
}, true, false)
|
||||
|
||||
mesecon.register_movestone("mesecons_movestones:movestone_vertical", {
|
||||
|
@ -157,7 +157,7 @@ mesecon.register_movestone("mesecons_movestones:movestone_vertical", {
|
|||
},
|
||||
groups = {cracky = 3},
|
||||
description = "Vertical Movestone",
|
||||
sounds = default.node_sound_stone_defaults()
|
||||
sounds = mesecon.node_sound.stone
|
||||
}, false, true)
|
||||
|
||||
mesecon.register_movestone("mesecons_movestones:sticky_movestone_vertical", {
|
||||
|
@ -171,7 +171,7 @@ mesecon.register_movestone("mesecons_movestones:sticky_movestone_vertical", {
|
|||
},
|
||||
groups = {cracky = 3},
|
||||
description = "Vertical Sticky Movestone",
|
||||
sounds = default.node_sound_stone_defaults(),
|
||||
sounds = mesecon.node_sound.stone,
|
||||
}, true, true)
|
||||
|
||||
|
||||
|
@ -180,9 +180,9 @@ mesecon.register_movestone("mesecons_movestones:sticky_movestone_vertical", {
|
|||
minetest.register_craft({
|
||||
output = "mesecons_movestones:movestone 2",
|
||||
recipe = {
|
||||
{"default:stone", "default:stone", "default:stone"},
|
||||
{"mesecons_gamecompat:stone", "mesecons_gamecompat:stone", "mesecons_gamecompat:stone"},
|
||||
{"group:mesecon_conductor_craftable", "group:mesecon_conductor_craftable", "group:mesecon_conductor_craftable"},
|
||||
{"default:stone", "default:stone", "default:stone"},
|
||||
{"mesecons_gamecompat:stone", "mesecons_gamecompat:stone", "mesecons_gamecompat:stone"},
|
||||
}
|
||||
})
|
||||
|
||||
|
|
|
@ -1,2 +1,2 @@
|
|||
name = mesecons_movestones
|
||||
depends = default, mesecons, mesecons_materials, mesecons_mvps
|
||||
depends = mesecons, mesecons_gamecompat, mesecons_materials, mesecons_mvps
|
||||
|
|
|
@ -63,28 +63,31 @@ end
|
|||
function mesecon.mvps_get_stack(pos, dir, maximum, all_pull_sticky)
|
||||
-- determine the number of nodes to be pushed
|
||||
local nodes = {}
|
||||
local frontiers = {pos}
|
||||
local pos_set = {}
|
||||
local frontiers = mesecon.fifo_queue.new()
|
||||
frontiers:add(vector.new(pos))
|
||||
|
||||
while #frontiers > 0 do
|
||||
local np = frontiers[1]
|
||||
local nn = minetest.get_node(np)
|
||||
|
||||
if not node_replaceable(nn.name) then
|
||||
for np in frontiers:iter() do
|
||||
local np_hash = minetest.hash_node_position(np)
|
||||
local nn = not pos_set[np_hash] and minetest.get_node(np)
|
||||
if nn and not node_replaceable(nn.name) then
|
||||
pos_set[np_hash] = true
|
||||
table.insert(nodes, {node = nn, pos = np})
|
||||
if #nodes > maximum then return nil end
|
||||
|
||||
-- add connected nodes to frontiers, connected is a vector list
|
||||
-- the vectors must be absolute positions
|
||||
local connected = {}
|
||||
-- add connected nodes to frontiers
|
||||
if minetest.registered_nodes[nn.name]
|
||||
and minetest.registered_nodes[nn.name].mvps_sticky then
|
||||
connected = minetest.registered_nodes[nn.name].mvps_sticky(np, nn)
|
||||
local connected = minetest.registered_nodes[nn.name].mvps_sticky(np, nn)
|
||||
for _, cp in ipairs(connected) do
|
||||
frontiers:add(cp)
|
||||
end
|
||||
end
|
||||
|
||||
table.insert(connected, vector.add(np, dir))
|
||||
frontiers:add(vector.add(np, dir))
|
||||
|
||||
-- If adjacent node is sticky block and connects add that
|
||||
-- position to the connected table
|
||||
-- position
|
||||
for _, r in ipairs(mesecon.rules.alldirs) do
|
||||
local adjpos = vector.add(np, r)
|
||||
local adjnode = minetest.get_node(adjpos)
|
||||
|
@ -96,36 +99,16 @@ function mesecon.mvps_get_stack(pos, dir, maximum, all_pull_sticky)
|
|||
-- connects to this position?
|
||||
for _, link in ipairs(sticksto) do
|
||||
if vector.equals(link, np) then
|
||||
table.insert(connected, adjpos)
|
||||
frontiers:add(adjpos)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
if all_pull_sticky then
|
||||
table.insert(connected, vector.subtract(np, dir))
|
||||
end
|
||||
|
||||
-- Make sure there are no duplicates in frontiers / nodes before
|
||||
-- adding nodes in "connected" to frontiers
|
||||
for _, cp in ipairs(connected) do
|
||||
local duplicate = false
|
||||
for _, rp in ipairs(nodes) do
|
||||
if vector.equals(cp, rp.pos) then
|
||||
duplicate = true
|
||||
end
|
||||
end
|
||||
for _, fp in ipairs(frontiers) do
|
||||
if vector.equals(cp, fp) then
|
||||
duplicate = true
|
||||
end
|
||||
end
|
||||
if not duplicate then
|
||||
table.insert(frontiers, cp)
|
||||
end
|
||||
frontiers:add(vector.subtract(np, dir))
|
||||
end
|
||||
end
|
||||
table.remove(frontiers, 1)
|
||||
end
|
||||
|
||||
return nodes
|
||||
|
@ -237,6 +220,8 @@ function mesecon.mvps_push_or_pull(pos, stackdir, movedir, maximum, all_pull_sti
|
|||
minetest.remove_node(n.pos)
|
||||
end
|
||||
|
||||
local oldstack = mesecon.tablecopy(nodes)
|
||||
|
||||
-- update mesecons for removed nodes ( has to be done after all nodes have been removed )
|
||||
for _, n in ipairs(nodes) do
|
||||
mesecon.on_dignode(n.pos, n.node)
|
||||
|
@ -246,6 +231,12 @@ function mesecon.mvps_push_or_pull(pos, stackdir, movedir, maximum, all_pull_sti
|
|||
for _, n in ipairs(nodes) do
|
||||
local np = vector.add(n.pos, movedir)
|
||||
|
||||
-- Turn off conductors in transit
|
||||
local conductor = mesecon.get_conductor(n.node.name)
|
||||
if conductor and conductor.state ~= mesecon.state.off then
|
||||
n.node.name = conductor.offstate or conductor.states[1]
|
||||
end
|
||||
|
||||
minetest.set_node(np, n.node)
|
||||
minetest.get_meta(np):from_table(n.meta)
|
||||
if n.node_timer then
|
||||
|
@ -254,7 +245,6 @@ function mesecon.mvps_push_or_pull(pos, stackdir, movedir, maximum, all_pull_sti
|
|||
end
|
||||
|
||||
local moved_nodes = {}
|
||||
local oldstack = mesecon.tablecopy(nodes)
|
||||
for i in ipairs(nodes) do
|
||||
moved_nodes[i] = {}
|
||||
moved_nodes[i].oldpos = nodes[i].pos
|
||||
|
@ -328,31 +318,6 @@ end
|
|||
-- TODO: load blocks instead, as with wires.
|
||||
mesecon.register_mvps_stopper("ignore")
|
||||
|
||||
-- All of the locked and internal nodes in Minetest Game
|
||||
for _, name in ipairs({
|
||||
"default:chest_locked",
|
||||
"default:chest_locked_open",
|
||||
"doors:door_steel_b_1", -- old style doors
|
||||
"doors:door_steel_b_2", --
|
||||
"doors:door_steel_t_1", --
|
||||
"doors:door_steel_t_2", --
|
||||
"doors:door_steel_a", -- new style doors
|
||||
"doors:door_steel_b", --
|
||||
"doors:door_steel_c", --
|
||||
"doors:door_steel_d", --
|
||||
"doors:hidden",
|
||||
"doors:trapdoor_steel",
|
||||
"doors:trapdoor_steel_open",
|
||||
"xpanes:door_steel_bar_a",
|
||||
"xpanes:door_steel_bar_b",
|
||||
"xpanes:door_steel_bar_c",
|
||||
"xpanes:door_steel_bar_d",
|
||||
"xpanes:trapdoor_steel_bar",
|
||||
"xpanes:trapdoor_steel_bar_open",
|
||||
}) do
|
||||
mesecon.register_mvps_stopper(name)
|
||||
end
|
||||
|
||||
mesecon.register_on_mvps_move(mesecon.move_hot_nodes)
|
||||
mesecon.register_on_mvps_move(function(moved_nodes)
|
||||
for i = 1, #moved_nodes do
|
||||
|
|
|
@ -12,7 +12,7 @@ minetest.register_node("mesecons_noteblock:noteblock", {
|
|||
mesecon.noteblock_play(pos, node.param2)
|
||||
minetest.set_node(pos, node)
|
||||
end,
|
||||
sounds = default.node_sound_wood_defaults(),
|
||||
sounds = mesecon.node_sound.wood,
|
||||
mesecons = {effector = { -- play sound when activated
|
||||
action_on = function(pos, node)
|
||||
mesecon.noteblock_play(pos, node.param2)
|
||||
|
@ -25,7 +25,7 @@ minetest.register_craft({
|
|||
output = "mesecons_noteblock:noteblock 1",
|
||||
recipe = {
|
||||
{"group:wood", "group:wood", "group:wood"},
|
||||
{"group:mesecon_conductor_craftable", "default:steel_ingot", "group:mesecon_conductor_craftable"},
|
||||
{"group:mesecon_conductor_craftable", "mesecons_gamecompat:steel_ingot", "group:mesecon_conductor_craftable"},
|
||||
{"group:wood", "group:wood", "group:wood"},
|
||||
}
|
||||
})
|
||||
|
@ -46,14 +46,20 @@ local soundnames = {
|
|||
"mesecons_noteblock_c"
|
||||
}
|
||||
|
||||
local node_sounds = {
|
||||
["default:lava_source"] = "fire_fire",
|
||||
["default:chest"] = "mesecons_noteblock_snare",
|
||||
["default:chest_locked"] = "mesecons_noteblock_snare",
|
||||
["default:coalblock"] = "tnt_explode",
|
||||
["default:glass"] = "mesecons_noteblock_hihat",
|
||||
["default:obsidian_glass"] = "mesecons_noteblock_hihat",
|
||||
}
|
||||
local node_sounds = {}
|
||||
for alias, sound in pairs({
|
||||
["mesecons_gamecompat:lava_source"] = mesecon.sound_name.fire,
|
||||
["mesecons_gamecompat:chest"] = "mesecons_noteblock_snare",
|
||||
["mesecons_gamecompat:chest_locked"] = "mesecons_noteblock_snare",
|
||||
["mesecons_gamecompat:coalblock"] = mesecon.sound_name.explode,
|
||||
["mesecons_gamecompat:glass"] = "mesecons_noteblock_hihat",
|
||||
["mesecons_gamecompat:obsidian_glass"] = "mesecons_noteblock_hihat",
|
||||
}) do
|
||||
local nodename = minetest.registered_aliases[alias]
|
||||
if nodename then
|
||||
node_sounds[nodename] = sound
|
||||
end
|
||||
end
|
||||
|
||||
local node_sounds_group = {
|
||||
["stone"] = "mesecons_noteblock_kick",
|
||||
|
@ -61,6 +67,7 @@ local node_sounds_group = {
|
|||
["wood"] = "mesecons_noteblock_litecrash",
|
||||
}
|
||||
|
||||
local steelblock_nodename = minetest.registered_aliases["mesecons_gamecompat:steelblock"]
|
||||
mesecon.noteblock_play = function(pos, param2)
|
||||
pos.y = pos.y-1
|
||||
local nodeunder = minetest.get_node(pos).name
|
||||
|
@ -80,7 +87,7 @@ mesecon.noteblock_play = function(pos, param2)
|
|||
minetest.log("error", "[mesecons_noteblock] No soundname found, test param2")
|
||||
return
|
||||
end
|
||||
if nodeunder == "default:steelblock" then
|
||||
if nodeunder == steelblock_nodename then
|
||||
soundname = soundname.. 2
|
||||
end
|
||||
end
|
||||
|
|
|
@ -1,2 +1,2 @@
|
|||
name = mesecons_noteblock
|
||||
depends = default, mesecons
|
||||
depends = mesecons, mesecons_gamecompat
|
||||
|
|
|
@ -278,7 +278,7 @@ minetest.register_node("mesecons_pistons:piston_normal_off", {
|
|||
paramtype2 = "facedir",
|
||||
is_ground_content = false,
|
||||
after_place_node = piston_orientate,
|
||||
sounds = default.node_sound_wood_defaults(),
|
||||
sounds = mesecon.node_sound.wood,
|
||||
mesecons = {effector={
|
||||
action_on = piston_on,
|
||||
rules = piston_get_rules,
|
||||
|
@ -308,7 +308,7 @@ minetest.register_node("mesecons_pistons:piston_normal_on", {
|
|||
after_dig_node = piston_after_dig,
|
||||
node_box = piston_on_box,
|
||||
selection_box = piston_on_box,
|
||||
sounds = default.node_sound_wood_defaults(),
|
||||
sounds = mesecon.node_sound.wood,
|
||||
mesecons = {effector={
|
||||
action_off = piston_off,
|
||||
rules = piston_get_rules,
|
||||
|
@ -338,7 +338,7 @@ minetest.register_node("mesecons_pistons:piston_pusher_normal", {
|
|||
node_box = piston_pusher_box,
|
||||
on_rotate = piston_rotate_pusher,
|
||||
drop = "",
|
||||
sounds = default.node_sound_wood_defaults(),
|
||||
sounds = mesecon.node_sound.wood,
|
||||
})
|
||||
|
||||
-- Sticky ones
|
||||
|
@ -357,7 +357,7 @@ minetest.register_node("mesecons_pistons:piston_sticky_off", {
|
|||
paramtype2 = "facedir",
|
||||
is_ground_content = false,
|
||||
after_place_node = piston_orientate,
|
||||
sounds = default.node_sound_wood_defaults(),
|
||||
sounds = mesecon.node_sound.wood,
|
||||
mesecons = {effector={
|
||||
action_on = piston_on,
|
||||
rules = piston_get_rules,
|
||||
|
@ -387,7 +387,7 @@ minetest.register_node("mesecons_pistons:piston_sticky_on", {
|
|||
after_dig_node = piston_after_dig,
|
||||
node_box = piston_on_box,
|
||||
selection_box = piston_on_box,
|
||||
sounds = default.node_sound_wood_defaults(),
|
||||
sounds = mesecon.node_sound.wood,
|
||||
mesecons = {effector={
|
||||
action_off = piston_off,
|
||||
rules = piston_get_rules,
|
||||
|
@ -417,7 +417,7 @@ minetest.register_node("mesecons_pistons:piston_pusher_sticky", {
|
|||
node_box = piston_pusher_box,
|
||||
on_rotate = piston_rotate_pusher,
|
||||
drop = "",
|
||||
sounds = default.node_sound_wood_defaults(),
|
||||
sounds = mesecon.node_sound.wood,
|
||||
})
|
||||
|
||||
|
||||
|
@ -463,9 +463,9 @@ mesecon.register_mvps_stopper("mesecons_pistons:piston_sticky_on", piston_get_st
|
|||
minetest.register_craft({
|
||||
output = "mesecons_pistons:piston_normal_off 2",
|
||||
recipe = {
|
||||
{"group:wood", "group:wood", "group:wood"},
|
||||
{"default:cobble", "default:steel_ingot", "default:cobble"},
|
||||
{"default:cobble", "group:mesecon_conductor_craftable", "default:cobble"},
|
||||
{"group:wood", "group:wood", "group:wood"},
|
||||
{"mesecons_gamecompat:cobble", "mesecons_gamecompat:steel_ingot", "mesecons_gamecompat:cobble"},
|
||||
{"mesecons_gamecompat:cobble", "group:mesecon_conductor_craftable", "mesecons_gamecompat:cobble"},
|
||||
}
|
||||
})
|
||||
|
||||
|
|
|
@ -1,2 +1,2 @@
|
|||
name = mesecons_pistons
|
||||
depends = default, mesecons, mesecons_mvps
|
||||
depends = mesecons, mesecons_gamecompat, mesecons_mvps
|
||||
|
|
|
@ -16,7 +16,7 @@ minetest.register_node("mesecons_powerplant:power_plant", {
|
|||
type = "fixed",
|
||||
fixed = {-0.3, -0.5, -0.3, 0.3, -0.5+0.7, 0.3},
|
||||
},
|
||||
sounds = default.node_sound_leaves_defaults(),
|
||||
sounds = mesecon.node_sound.leaves,
|
||||
mesecons = {receptor = {
|
||||
state = mesecon.state.on
|
||||
}},
|
||||
|
|
|
@ -1,2 +1,2 @@
|
|||
name = mesecons_powerplant
|
||||
depends = default, mesecons
|
||||
depends = mesecons, mesecons_gamecompat
|
||||
|
|
|
@ -94,7 +94,7 @@ mesecon.register_pressure_plate(
|
|||
"jeija_pressure_plate_wood_inv.png",
|
||||
{{"group:wood", "group:wood"}},
|
||||
{ choppy = 3, oddly_breakable_by_hand = 3 },
|
||||
default.node_sound_wood_defaults())
|
||||
mesecon.node_sound.wood)
|
||||
|
||||
mesecon.register_pressure_plate(
|
||||
"mesecons_pressureplates:pressure_plate_stone",
|
||||
|
@ -103,6 +103,6 @@ mesecon.register_pressure_plate(
|
|||
{"jeija_pressure_plate_stone_on.png","jeija_pressure_plate_stone_on.png","jeija_pressure_plate_stone_on_edges.png"},
|
||||
"jeija_pressure_plate_stone_wield.png",
|
||||
"jeija_pressure_plate_stone_inv.png",
|
||||
{{"default:cobble", "default:cobble"}},
|
||||
{{"mesecons_gamecompat:cobble", "mesecons_gamecompat:cobble"}},
|
||||
{ cracky = 3, oddly_breakable_by_hand = 3 },
|
||||
default.node_sound_stone_defaults())
|
||||
mesecon.node_sound.stone)
|
||||
|
|
|
@ -1,2 +1,2 @@
|
|||
name = mesecons_pressureplates
|
||||
depends = default, mesecons
|
||||
depends = mesecons, mesecons_gamecompat
|
||||
|
|
|
@ -6,7 +6,7 @@ minetest.register_node("mesecons_random:removestone", {
|
|||
inventory_image = minetest.inventorycube("jeija_removestone_inv.png"),
|
||||
groups = {cracky=3},
|
||||
description="Removestone",
|
||||
sounds = default.node_sound_stone_defaults(),
|
||||
sounds = mesecon.node_sound.stone,
|
||||
mesecons = {effector = {
|
||||
action_on = function (pos, node)
|
||||
minetest.remove_node(pos)
|
||||
|
@ -20,9 +20,9 @@ minetest.register_node("mesecons_random:removestone", {
|
|||
minetest.register_craft({
|
||||
output = 'mesecons_random:removestone 4',
|
||||
recipe = {
|
||||
{"", "default:cobble", ""},
|
||||
{"default:cobble", "group:mesecon_conductor_craftable", "default:cobble"},
|
||||
{"", "default:cobble", ""},
|
||||
{"", "mesecons_gamecompat:cobble", ""},
|
||||
{"mesecons_gamecompat:cobble", "group:mesecon_conductor_craftable", "mesecons_gamecompat:cobble"},
|
||||
{"", "mesecons_gamecompat:cobble", ""},
|
||||
}
|
||||
})
|
||||
|
||||
|
@ -34,7 +34,7 @@ minetest.register_node("mesecons_random:ghoststone", {
|
|||
is_ground_content = false,
|
||||
inventory_image = minetest.inventorycube("jeija_ghoststone_inv.png"),
|
||||
groups = {cracky=3},
|
||||
sounds = default.node_sound_stone_defaults(),
|
||||
sounds = mesecon.node_sound.stone,
|
||||
mesecons = {conductor = {
|
||||
state = mesecon.state.off,
|
||||
rules = mesecon.rules.alldirs,
|
||||
|
@ -71,8 +71,8 @@ minetest.register_node("mesecons_random:ghoststone_active", {
|
|||
minetest.register_craft({
|
||||
output = 'mesecons_random:ghoststone 4',
|
||||
recipe = {
|
||||
{"default:steel_ingot", "default:cobble", "default:steel_ingot"},
|
||||
{"default:cobble", "group:mesecon_conductor_craftable", "default:cobble"},
|
||||
{"default:steel_ingot", "default:cobble", "default:steel_ingot"},
|
||||
{"mesecons_gamecompat:steel_ingot", "mesecons_gamecompat:cobble", "mesecons_gamecompat:steel_ingot"},
|
||||
{"mesecons_gamecompat:cobble", "group:mesecon_conductor_craftable", "mesecons_gamecompat:cobble"},
|
||||
{"mesecons_gamecompat:steel_ingot", "mesecons_gamecompat:cobble", "mesecons_gamecompat:steel_ingot"},
|
||||
}
|
||||
})
|
||||
|
|
|
@ -1,2 +1,2 @@
|
|||
name = mesecons_random
|
||||
depends = default, mesecons
|
||||
depends = mesecons, mesecons_gamecompat
|
||||
|
|
|
@ -56,7 +56,7 @@ mesecon.register_node("mesecons_receiver:receiver", {
|
|||
},
|
||||
groups = {dig_immediate = 3, not_in_creative_inventory = 1},
|
||||
drop = "mesecons:wire_00000000_off",
|
||||
sounds = default.node_sound_defaults(),
|
||||
sounds = mesecon.node_sound.default,
|
||||
}, {
|
||||
tiles = {
|
||||
"receiver_top_off.png",
|
||||
|
@ -105,7 +105,7 @@ mesecon.register_node("mesecons_receiver:receiver_up", {
|
|||
},
|
||||
groups = {dig_immediate = 3, not_in_creative_inventory = 1},
|
||||
drop = "mesecons:wire_00000000_off",
|
||||
sounds = default.node_sound_defaults(),
|
||||
sounds = mesecon.node_sound.default,
|
||||
}, {
|
||||
tiles = {"mesecons_wire_off.png"},
|
||||
mesecons = {conductor = {
|
||||
|
@ -150,7 +150,7 @@ mesecon.register_node("mesecons_receiver:receiver_down", {
|
|||
},
|
||||
groups = {dig_immediate = 3, not_in_creative_inventory = 1},
|
||||
drop = "mesecons:wire_00000000_off",
|
||||
sounds = default.node_sound_defaults(),
|
||||
sounds = mesecon.node_sound.default,
|
||||
}, {
|
||||
tiles = {"mesecons_wire_off.png"},
|
||||
mesecons = {conductor = {
|
||||
|
@ -209,8 +209,10 @@ function mesecon.receiver_place(rcpt_pos)
|
|||
local param2 = minetest.dir_to_facedir(minetest.facedir_to_dir(node.param2))
|
||||
|
||||
if string.find(nn.name, "mesecons:wire_") ~= nil then
|
||||
minetest.set_node(pos, {name = rcvtype, param2 = param2})
|
||||
mesecon.on_placenode(pos, nn)
|
||||
local rcv_node = {name = rcvtype, param2 = param2}
|
||||
minetest.set_node(pos, rcv_node)
|
||||
mesecon.on_dignode(pos, nn)
|
||||
mesecon.on_placenode(pos, rcv_node)
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -220,6 +222,7 @@ function mesecon.receiver_remove(rcpt_pos, dugnode)
|
|||
if string.find(nn.name, "mesecons_receiver:receiver_") ~= nil then
|
||||
local node = {name = "mesecons:wire_00000000_off"}
|
||||
minetest.set_node(pos, node)
|
||||
mesecon.on_dignode(pos, nn)
|
||||
mesecon.on_placenode(pos, node)
|
||||
end
|
||||
end
|
||||
|
@ -257,7 +260,13 @@ minetest.register_on_placenode(function (pos, node)
|
|||
end
|
||||
end)
|
||||
|
||||
function mesecon.buttonlike_onrotate(pos, node)
|
||||
minetest.after(0, mesecon.receiver_remove, pos, node)
|
||||
minetest.after(0, mesecon.receiver_place, pos)
|
||||
function mesecon.buttonlike_onrotate(pos, node, _, _, new_param2)
|
||||
local new_node = {name = node.name, param1 = node.param1, param2 = new_param2}
|
||||
minetest.swap_node(pos, new_node)
|
||||
mesecon.receiver_remove(pos, node)
|
||||
mesecon.on_dignode(pos, node)
|
||||
mesecon.on_placenode(pos, new_node)
|
||||
mesecon.receiver_place(pos)
|
||||
minetest.check_for_falling(pos)
|
||||
return true
|
||||
end
|
||||
|
|
|
@ -1,2 +1,2 @@
|
|||
name = mesecons_receiver
|
||||
depends = default, mesecons
|
||||
depends = mesecons, mesecons_gamecompat
|
||||
|
|
|
@ -15,7 +15,7 @@ mesecon.register_node("mesecons_solarpanel:solar_panel", {
|
|||
wall_top = {-7/16, 7/16, -7/16, 7/16, 8/16, 7/16},
|
||||
wall_side = {-8/16, -7/16, -7/16, -7/16, 7/16, 7/16},
|
||||
},
|
||||
sounds = default.node_sound_glass_defaults(),
|
||||
sounds = mesecon.node_sound.glass,
|
||||
on_blast = mesecon.on_blastnode,
|
||||
},{
|
||||
groups = {dig_immediate = 3},
|
||||
|
|
|
@ -1,2 +1,2 @@
|
|||
name = mesecons_solarpanel
|
||||
depends = default, mesecons, mesecons_materials
|
||||
depends = mesecons, mesecons_gamecompat, mesecons_materials
|
||||
|
|
|
@ -15,5 +15,5 @@ minetest.register_node("mesecons_stickyblocks:sticky_block_all", {
|
|||
end
|
||||
return connected
|
||||
end,
|
||||
sounds = default.node_sound_wood_defaults(),
|
||||
sounds = mesecon.node_sound.wood,
|
||||
})
|
||||
|
|
|
@ -1,2 +1,2 @@
|
|||
name = mesecons_stickyblocks
|
||||
depends = default, mesecons, mesecons_mvps
|
||||
depends = mesecons, mesecons_gamecompat, mesecons_mvps
|
||||
|
|
|
@ -4,7 +4,7 @@ mesecon.register_node("mesecons_switch:mesecon_switch", {
|
|||
paramtype2="facedir",
|
||||
description="Switch",
|
||||
is_ground_content = false,
|
||||
sounds = default.node_sound_stone_defaults(),
|
||||
sounds = mesecon.node_sound.stone,
|
||||
on_rightclick = function (pos, node)
|
||||
if(mesecon.flipstate(pos, node) == "on") then
|
||||
mesecon.receptor_on(pos)
|
||||
|
@ -30,7 +30,7 @@ mesecon.register_node("mesecons_switch:mesecon_switch", {
|
|||
minetest.register_craft({
|
||||
output = "mesecons_switch:mesecon_switch_off 2",
|
||||
recipe = {
|
||||
{"default:steel_ingot", "default:cobble", "default:steel_ingot"},
|
||||
{"mesecons_gamecompat:steel_ingot", "mesecons_gamecompat:cobble", "mesecons_gamecompat:steel_ingot"},
|
||||
{"group:mesecon_conductor_craftable","", "group:mesecon_conductor_craftable"},
|
||||
}
|
||||
})
|
||||
|
|
|
@ -1,2 +1,2 @@
|
|||
name = mesecons_switch
|
||||
depends = default, mesecons
|
||||
depends = mesecons, mesecons_gamecompat
|
||||
|
|
|
@ -42,7 +42,7 @@ minetest.register_craft({
|
|||
output = "mesecons_torch:mesecon_torch_on 4",
|
||||
recipe = {
|
||||
{"group:mesecon_conductor_craftable"},
|
||||
{"default:stick"},}
|
||||
{"group:stick"},}
|
||||
})
|
||||
|
||||
local torch_selectionbox =
|
||||
|
@ -64,7 +64,7 @@ minetest.register_node("mesecons_torch:mesecon_torch_off", {
|
|||
selection_box = torch_selectionbox,
|
||||
groups = {dig_immediate = 3, not_in_creative_inventory = 1},
|
||||
drop = "mesecons_torch:mesecon_torch_on",
|
||||
sounds = default.node_sound_defaults(),
|
||||
sounds = mesecon.node_sound.default,
|
||||
mesecons = {receptor = {
|
||||
state = mesecon.state.off,
|
||||
rules = torch_get_output_rules
|
||||
|
@ -86,7 +86,7 @@ minetest.register_node("mesecons_torch:mesecon_torch_on", {
|
|||
groups = {dig_immediate=3},
|
||||
light_source = minetest.LIGHT_MAX-5,
|
||||
description="Mesecon Torch",
|
||||
sounds = default.node_sound_defaults(),
|
||||
sounds = mesecon.node_sound.default,
|
||||
mesecons = {receptor = {
|
||||
state = mesecon.state.on,
|
||||
rules = torch_get_output_rules
|
||||
|
|
|
@ -1,2 +1,2 @@
|
|||
name = mesecons_torch
|
||||
depends = default, mesecons
|
||||
depends = mesecons, mesecons_gamecompat
|
||||
|
|
|
@ -15,7 +15,7 @@ mesecon.register_node("mesecons_walllever:wall_lever", {
|
|||
type = "fixed",
|
||||
fixed = { -8/16, -8/16, 3/16, 8/16, 8/16, 8/16 },
|
||||
},
|
||||
sounds = default.node_sound_wood_defaults(),
|
||||
sounds = mesecon.node_sound.wood,
|
||||
on_rightclick = function (pos, node)
|
||||
if(mesecon.flipstate(pos, node) == "on") then
|
||||
mesecon.receptor_on(pos, mesecon.rules.buttonlike_get(node))
|
||||
|
@ -58,7 +58,7 @@ minetest.register_craft({
|
|||
output = "mesecons_walllever:wall_lever_off 2",
|
||||
recipe = {
|
||||
{"group:mesecon_conductor_craftable"},
|
||||
{"default:stone"},
|
||||
{"default:stick"},
|
||||
{"mesecons_gamecompat:stone"},
|
||||
{"group:stick"},
|
||||
}
|
||||
})
|
||||
|
|
|
@ -1,2 +1,2 @@
|
|||
name = mesecons_walllever
|
||||
depends = default, mesecons, mesecons_receiver
|
||||
depends = mesecons, mesecons_gamecompat, mesecons_receiver
|
||||
|
|
|
@ -216,7 +216,7 @@ local function register_wires()
|
|||
walkable = false,
|
||||
drop = "mesecons:wire_00000000_off",
|
||||
mesecon_wire = true,
|
||||
sounds = default.node_sound_defaults(),
|
||||
sounds = mesecon.node_sound.default,
|
||||
on_rotate = false,
|
||||
}, {tiles = tiles_off, mesecons = meseconspec_off, groups = groups_off},
|
||||
{tiles = tiles_on, mesecons = meseconspec_on, groups = groups_on})
|
||||
|
@ -229,23 +229,31 @@ register_wires()
|
|||
-- ##############
|
||||
-- ## Crafting ##
|
||||
-- ##############
|
||||
minetest.register_craft({
|
||||
type = "cooking",
|
||||
output = "mesecons:wire_00000000_off 2",
|
||||
recipe = "default:mese_crystal_fragment",
|
||||
cooktime = 3,
|
||||
})
|
||||
-- (Resolve aliases to avoid bug with cooking/fuel recipes.)
|
||||
|
||||
minetest.register_craft({
|
||||
type = "cooking",
|
||||
output = "mesecons:wire_00000000_off 18",
|
||||
recipe = "default:mese_crystal",
|
||||
cooktime = 15,
|
||||
})
|
||||
if minetest.registered_aliases["mesecons_gamecompat:mese_crystal_fragment"] then
|
||||
minetest.register_craft({
|
||||
type = "cooking",
|
||||
output = "mesecons:wire_00000000_off 2",
|
||||
recipe = minetest.registered_aliases["mesecons_gamecompat:mese_crystal_fragment"],
|
||||
cooktime = 3,
|
||||
})
|
||||
end
|
||||
|
||||
minetest.register_craft({
|
||||
type = "cooking",
|
||||
output = "mesecons:wire_00000000_off 162",
|
||||
recipe = "default:mese",
|
||||
cooktime = 30,
|
||||
})
|
||||
if minetest.registered_aliases["mesecons_gamecompat:mese_crystal"] then
|
||||
minetest.register_craft({
|
||||
type = "cooking",
|
||||
output = "mesecons:wire_00000000_off 18",
|
||||
recipe = minetest.registered_aliases["mesecons_gamecompat:mese_crystal"],
|
||||
cooktime = 15,
|
||||
})
|
||||
end
|
||||
|
||||
if minetest.registered_aliases["mesecons_gamecompat:mese"] then
|
||||
minetest.register_craft({
|
||||
type = "cooking",
|
||||
output = "mesecons:wire_00000000_off 162",
|
||||
recipe = minetest.registered_aliases["mesecons_gamecompat:mese"],
|
||||
cooktime = 30,
|
||||
})
|
||||
end
|
||||
|
|
|
@ -1,2 +1,2 @@
|
|||
name = mesecons_wires
|
||||
depends = default, mesecons
|
||||
depends = mesecons, mesecons_gamecompat
|
||||
|
|
Loading…
Reference in New Issue
Block a user