diff --git a/jeija/VERSION b/jeija/VERSION deleted file mode 100644 index 75b9e03..0000000 --- a/jeija/VERSION +++ /dev/null @@ -1 +0,0 @@ -0.41 DEV diff --git a/jeija/alias.lua b/jeija/alias.lua deleted file mode 100644 index 8d091cc..0000000 --- a/jeija/alias.lua +++ /dev/null @@ -1,21 +0,0 @@ --- This file registers aliases for the /give /giveme commands. - -minetest.register_alias("jeija:meselamp", "jeija:meselamp_off") -minetest.register_alias("jeija:mesecon", "jeija:mesecon_off") -minetest.register_alias("jeija:object_detector", "jeija:object_detector_off") -minetest.register_alias("jeija:wireless_inverter", "jeija:wireless_inverter_on") -minetest.register_alias("jeija:wireless_receiver", "jeija:wireless_receiver_off") -minetest.register_alias("jeija:wireless_transmitter", "jeija:wireless_transmitter_off") -minetest.register_alias("jeija:switch", "jeija:mesecon_switch_off") -minetest.register_alias("jeija:wall_button", "jeija:wall_button_off") -minetest.register_alias("jeija:piston", "jeija:piston_normal") -minetest.register_alias("jeija:blinky_plant", "jeija:blinky_plant_off") -minetest.register_alias("jeija:mesecon_torch", "jeija:mesecon_torch_on") -minetest.register_alias("jeija:hydro_turbine", "jeija:hydro_turbine_off") -minetest.register_alias("jeija:pressure_plate_stone", "jeija:pressure_plate_stone_off") -minetest.register_alias("jeija:pressure_plate_wood", "jeija:pressure_plate_wood_off") - -if ENABLE_TEMPEREST==1 then - minetest.register_alias("jeija:mesecon_socket", "jeija:mesecon_socket_off") - minetest.register_alias("jeija:mesecon_inverter", "jeija:mesecon_inverter_on") -end \ No newline at end of file diff --git a/jeija/button.lua b/jeija/button.lua deleted file mode 100644 index 13d2426..0000000 --- a/jeija/button.lua +++ /dev/null @@ -1,89 +0,0 @@ --- WALL BUTTON -minetest.register_node("jeija:wall_button_off", { - drawtype = "signlike", - tile_images = {"jeija_wall_button_off.png"}, - inventory_image = "jeija_wall_button_off.png", - wield_image = "jeija_wall_button_off.png", - paramtype = "light", - paramtype2 = "wallmounted", - legacy_wallmounted = true, - walkable = false, - selection_box = { - type = "wallmounted", - }, - material = minetest.digprop_constanttime(0.3), - description="Button", -}) -minetest.register_node("jeija:wall_button_on", { - drawtype = "signlike", - tile_images = {"jeija_wall_button_on.png"}, - inventory_image = "jeija_wall_button_on.png", - paramtype = "light", - paramtype2 = "wallmounted", - legacy_wallmounted = true, - walkable = false, - selection_box = { - type = "wallmounted", - }, - material = minetest.digprop_constanttime(0.3), - drop = '"jeija:wall_button_off" 1', - description="Button", -}) - -minetest.register_on_dignode( - function(pos, oldnode, digger) - if oldnode.name == "jeija:wall_button_on" then - mesecon:receptor_off(pos) - end - end -) -minetest.register_on_punchnode(function(pos, node, puncher) - if node.name == "jeija:wall_button_off" then - minetest.env:add_node(pos, {name="jeija:wall_button_on",param2=node.param2}) - local rules_string="" - if node.param2 == 5 then - rules_string="button_z+" - end - if node.param2 == 3 then - rules_string="button_x+" - end - if node.param2 == 4 then - rules_string="button_z-" - end - if node.param2 == 2 then - rules_string="button_x-" - end - mesecon:receptor_on(pos, rules_string) - end -end) -minetest.register_abm({ - nodenames = {"jeija:wall_button_on"}, - interval = 0.1, - chance = 1, - action = function(pos, node, active_object_count, active_object_count_wider) - minetest.env:add_node(pos, {name="jeija:wall_button_off",param2=node.param2}) - - local rules_string="" - if node.param2 == 5 then - rules_string="button_z+" - end - if node.param2 == 3 then - rules_string="button_x+" - end - if node.param2 == 4 then - rules_string="button_z-" - end - if node.param2 == 2 then - rules_string="button_x-" - end - mesecon:receptor_off(pos, rules_string) - end -}) -minetest.register_craft({ - output = '"jeija:wall_button_off" 2', - recipe = { - {'"jeija:mesecon_off"','"default:stone"'}, - } -}) -mesecon:add_receptor_node("jeija:wall_button") -mesecon:add_receptor_node_off("jeija:wall_button_off") diff --git a/jeija/depends.txt b/jeija/depends.txt deleted file mode 100644 index 4d77aa1..0000000 --- a/jeija/depends.txt +++ /dev/null @@ -1,2 +0,0 @@ -default -experimental diff --git a/jeija/detector.lua b/jeija/detector.lua deleted file mode 100644 index e62e89c..0000000 --- a/jeija/detector.lua +++ /dev/null @@ -1,85 +0,0 @@ ---SHORT RANGE DETECTORS -minetest.register_node("jeija:object_detector_off", { - tile_images = {"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"}, - paramtype = "light", - walkable = true, - material = minetest.digprop_stonelike(4), - description="Player Detector", -}) - -minetest.register_node("jeija:object_detector_on", { - tile_images = {"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"}, - paramtype = "light", - walkable = true, - material = minetest.digprop_stonelike(4), - drop = '"jeija:object_detector_off" 1', - description="Player Detector", -}) - -minetest.register_craft({ - output = '"jeija:object_detector_off" 1', - recipe = { - {"default:steelblock", '', "default:steelblock"}, - {"default:steelblock", "jeija:ic", "default:steelblock"}, - {"default:steelblock", "jeija:mesecon_off", "default:steelblock"}, - } -}) - -minetest.register_abm( - {nodenames = {"jeija:object_detector_off"}, - interval = 1.0, - chance = 1, - action = function(pos, node, active_object_count, active_object_count_wider) - local objs = minetest.env:get_objects_inside_radius(pos, 6) - for k, obj in pairs(objs) do - if obj:get_entity_name()~="jeija:piston_pusher_sticky" and obj:get_entity_name()~="jeija:piston_pusher_normal" and obj:get_player_name()~=nil then -- Detected object is not piston pusher - will be changed if every entity has a type (like entity_type=mob) - if minetest.env:get_node({x=pos.x, y=pos.y-1, z=pos.z}).name=="default:sign_wall" then - if obj:get_player_name()~=minetest.env:get_meta({x=pos.x, y=pos.y-1, z=pos.z}):get_text() then - return - end - end - local objpos=obj:getpos() - minetest.env:add_node(pos, {name="jeija:object_detector_on"}) - mesecon:receptor_on(pos, "pressureplate") - end - end - end, -}) - -minetest.register_abm( - {nodenames = {"jeija:object_detector_on"}, - interval = 1.0, - chance = 1, - action = function(pos, node, active_object_count, active_object_count_wider) - local objs = minetest.env:get_objects_inside_radius(pos, 6) - local objectfound=0 - for k, obj in pairs(objs) do - if obj:get_entity_name()~="jeija:piston_pusher_sticky" and obj:get_entity_name()~="jeija:piston_pusher_normal" and obj~=nil - and obj:get_player_name()~=nil then - if minetest.env:get_node({x=pos.x, y=pos.y-1, z=pos.z}).name=="default:sign_wall" then - if minetest.env:get_meta({x=pos.x, y=pos.y-1, z=pos.z}):get_text() == obj:get_player_name() then - objectfound=objectfound+1 - end - else --- Detected object is not piston pusher - will be changed if every entity has a type (like entity_type=mob) - objectfound=objectfound + 1 - end - end - end - if objectfound==0 then - minetest.env:add_node(pos, {name="jeija:object_detector_off"}) - mesecon:receptor_off(pos, "pressureplate") - end - end, -}) - -minetest.register_on_dignode( - function(pos, oldnode, digger) - if oldnode.name == "jeija:object_detector_on" then - mesecon:receptor_off(pos, "pressureplate") - end - end -) - -mesecon:add_receptor_node("jeija:object_detector_on") -mesecon:add_receptor_node_off("jeija:object_detector_off") diff --git a/jeija/init.lua b/jeija/init.lua deleted file mode 100644 index 81311b7..0000000 --- a/jeija/init.lua +++ /dev/null @@ -1,904 +0,0 @@ --- |\ /| ____ ____ ____ _____ ____ _____ --- | \ / | | | | | | | |\ | | --- | \/ | |___ ____ |___ | | | | \ | |____ --- | | | | | | | | | \ | | --- | | |___ ____| |___ |____ |____| | \| ____| --- by Jeija and Minerd247 --- --- --- --- This mod adds mesecons[=minecraft redstone] and different receptors/effectors to minetest. --- --- See the documentation on the forum for additional information, especially about crafting --- ---Quick Developer documentation for the mesecon API ---================================================= --- ---RECEPTORS --- ---A receptor is a node that emits power, e.g. a solar panel, a switch or a power plant. ---Usually you create two blocks per receptor that have to be switched when switching the on/off state: --- # An off-state node (e.g. jeija:mesecon_switch_off" --- # An on-state node (e.g. jeija:mesecon_switch_on" ---The on-state and off-state nodes should be registered in the mesecon api, ---so that the Mesecon circuit can be recalculated. This can be done using --- ---mesecon:add_receptor_node(nodename) -- for on-state node ---mesecon:add_receptor_node_off(nodename) -- for off-state node ---example: mesecon:add_receptor_node("jeija:mesecon_switch_on") --- ---Turning receptors on and off ---Usually the receptor has to turn on and off. For this, you have to --- # Remove the node and replace it with the node in the other state (e.g. replace on by off) --- # Send the event to the mesecon circuit by using the api functions --- mesecon:receptor_on (pos, rules) } These functions take the position of your receptor --- mesecon:receptor_off(pos, rules) } as their parameter. --- ---You can specify the rules using the rules parameter. If you don't want special rules, just leave it out --- ---!! If a receptor node is removed, the circuit should be recalculated. This means you have to ---send an mesecon:receptor_off signal to the api when the function in minetest.register_on_dignode ---is called. --- ---EFFECTORS --- ---A receptor is a node that uses power and transfers the signal to a mechanical, optical whatever ---event. e.g. the meselamp, the movestone or the removestone. --- ---There are two callback functions for receptors. --- # function mesecon:register_on_signal_on (action) --- # function mesecon:register_on_signal_off(action) --- ---These functions will be called for each block next to a mesecon conductor. --- ---Example: The removestone ---The removestone only uses one callback: The mesecon:register_on_signal_on function --- ---mesecon:register_on_signal_on(function(pos, node) -- As the action prameter you have to use a function --- if node.name=="jeija:removestone" then -- Check if it really is removestone. If you wouldn't use this, every node next to mesecons would be removed --- minetest.env:remove_node(pos) -- The action: The removestone is removed --- end -- end of if ---end) -- end of the function, )=end of the parameters of mesecon:register_on_signal_on - --- SETTINGS -ENABLE_TEMPEREST=0 -ENABLE_PISTON_ANIMATION=0 -BLINKY_PLANT_INTERVAL=3 -OLD_PISTON_DIRECTION=0 - --- PUBLIC VARIABLES -mesecon={} -- contains all functions and all global variables -mesecon.actions_on={} -- Saves registered function callbacks for mesecon on -mesecon.actions_off={} -- Saves registered function callbacks for mesecon off -mesecon.pwr_srcs={} -- this is public for now -mesecon.pwr_srcs_off={} -- this is public for now -mesecon.wireless_receivers={} -mesecon.mvps_stoppers={} - - --- MESECONS - -minetest.register_node("jeija:mesecon_off", { - drawtype = "raillike", - tile_images = {"jeija_mesecon_off.png", "jeija_mesecon_curved_off.png", "jeija_mesecon_t_junction_off.png", "jeija_mesecon_crossing_off.png"}, - inventory_image = "jeija_mesecon_off.png", - wield_image = "jeija_mesecon_off.png", - paramtype = "light", - is_ground_content = true, - walkable = false, - selection_box = { - type = "fixed", - }, - material = minetest.digprop_constanttime(0.1), - description="Mesecons", -}) - -minetest.register_node("jeija:mesecon_on", { - drawtype = "raillike", - tile_images = {"jeija_mesecon_on.png", "jeija_mesecon_curved_on.png", "jeija_mesecon_t_junction_on.png", "jeija_mesecon_crossing_on.png"}, - paramtype = "light", - is_ground_content = true, - walkable = false, - selection_box = { - type = "fixed", - }, - material = minetest.digprop_constanttime(0.1), - drop = '"jeija:mesecon_off" 1', - light_source = LIGHT_MAX-11, -}) - -minetest.register_craft({ - output = '"jeija:mesecon_off" 16', - recipe = { - {'"default:mese"'}, - } -}) - -function mesecon:is_power_on(p, x, y, z) - local lpos = {} - lpos.x=p.x+x - lpos.y=p.y+y - lpos.z=p.z+z - local node = minetest.env:get_node(lpos) - if node.name == "jeija:mesecon_on" or mesecon:is_receptor_node(node.name) then - return 1 - end - return 0 -end - -function mesecon:is_power_off(p, x, y, z) - local lpos = {} - lpos.x=p.x+x - lpos.y=p.y+y - lpos.z=p.z+z - local node = minetest.env:get_node(lpos) - if node.name == "jeija:mesecon_off" or mesecon:is_receptor_node_off(node.name) then - return 1 - end - return 0 -end - -function mesecon:turnon(p, x, y, z, firstcall, rules) - if rules==nil then - rules="default" - end - local lpos = {} - lpos.x=p.x+x - lpos.y=p.y+y - lpos.z=p.z+z - - mesecon:activate(lpos) - - local node = minetest.env:get_node(lpos) - if node.name == "jeija:mesecon_off" then - --minetest.env:remove_node(lpos) - minetest.env:add_node(lpos, {name="jeija:mesecon_on"}) - nodeupdate(lpos) - end - if node.name == "jeija:mesecon_off" or firstcall then - local rules=mesecon:get_rules(rules) - local i=1 - while rules[i]~=nil do - mesecon:turnon(lpos, rules[i].x, rules[i].y, rules[i].z, false, "default") - i=i+1 - end - end -end - -function mesecon:turnoff(pos, x, y, z, firstcall, rules) - if rules==nil then - rules="default" - end - local lpos = {} - lpos.x=pos.x+x - lpos.y=pos.y+y - lpos.z=pos.z+z - - local node = minetest.env:get_node(lpos) - local connected = 0 - local checked = {} - - if not mesecon:check_if_turnon(lpos) then - mesecon:deactivate(lpos) - end - - if not(firstcall) and connected==0 then - connected=mesecon:connected_to_pw_src(lpos, 0, 0, 0, checked) - end - - if connected == 0 and node.name == "jeija:mesecon_on" then - --minetest.env:remove_node(lpos) - minetest.env:add_node(lpos, {name="jeija:mesecon_off"}) - nodeupdate(lpos) - end - - - if node.name == "jeija:mesecon_on" or firstcall then - if connected == 0 then - local rules=mesecon:get_rules(rules) - local i=1 - while rules[i]~=nil do - mesecon:turnoff(lpos, rules[i].x, rules[i].y, rules[i].z, false, "default") - i=i+1 - end - end - end -end - - -function mesecon:connected_to_pw_src(pos, x, y, z, checked, firstcall) - local i=1 - local lpos = {} - - lpos.x=pos.x+x - lpos.y=pos.y+y - lpos.z=pos.z+z - - - local node = minetest.env:get_node_or_nil(lpos) - - if not(node==nil) then - repeat - i=i+1 - if checked[i]==nil then checked[i]={} break end - if checked[i].x==lpos.x and checked[i].y==lpos.y and checked[i].z==lpos.z then - return 0 - end - until false - - checked[i].x=lpos.x - checked[i].y=lpos.y - checked[i].z=lpos.z - - if mesecon:is_receptor_node(node.name) == true then -- receptor nodes (power sources) can be added using mesecon:add_receptor_node - return 1 - end - - if node.name=="jeija:mesecon_on" or firstcall then -- add other conductors here - local pw_source_found=0 - local rules=mesecon:get_rules("default") - local i=1 - while rules[i]~=nil do - pw_source_found=pw_source_found+mesecon:connected_to_pw_src(lpos, rules[i].x, rules[i].y, rules[i].z, checked, false) - i=i+1 - end - if pw_source_found > 0 then - return 1 - end - end - end - return 0 -end - -function mesecon:check_if_turnon(pos) - local getactivated=0 - local rules=mesecon:get_rules("default") - local i=1 - while rules[i]~=nil do - getactivated=getactivated+mesecon:is_power_on(pos, rules[i].x, rules[i].y, rules[i].z) - i=i+1 - end - if getactivated > 0 then - return true - end - return false -end - -minetest.register_on_placenode(function(pos, newnode, placer) - if mesecon:check_if_turnon(pos) then - if newnode.name == "jeija:mesecon_off" then - mesecon:turnon(pos, 0, 0, 0) - else - mesecon:activate(pos) - end - end -end) - -minetest.register_on_dignode( - function(pos, oldnode, digger) - if oldnode.name == "jeija:mesecon_on" then - mesecon:turnoff(pos, 0, 0, 0, true) - end - end -) - --- API API API API API API API API API API API API API API API API API API - -function mesecon:add_receptor_node(nodename) - local i=1 - repeat - i=i+1 - if mesecon.pwr_srcs[i]==nil then break end - until false - mesecon.pwr_srcs[i]=nodename -end - -function mesecon:add_receptor_node_off(nodename) - local i=1 - repeat - i=i+1 - if mesecon.pwr_srcs_off[i]==nil then break end - until false - mesecon.pwr_srcs_off[i]=nodename -end - -function mesecon:receptor_on(pos, rules) - mesecon:turnon(pos, 0, 0, 0, true, rules) -end - -function mesecon:receptor_off(pos, rules) - mesecon:turnoff(pos, 0, 0, 0, true, rules) -end - -function mesecon:register_on_signal_on(action) - local i = 1 - repeat - i=i+1 - if mesecon.actions_on[i]==nil then break end - until false - mesecon.actions_on[i]=action -end - -function mesecon:register_on_signal_off(action) - local i = 1 - repeat - i=i+1 - if mesecon.actions_off[i]==nil then break end - until false - mesecon.actions_off[i]=action -end - - - --- INTERNAL API - - -function mesecon:is_receptor_node(nodename) - local i=1 - repeat - i=i+1 - if mesecon.pwr_srcs[i]==nodename then return true end - until mesecon.pwr_srcs[i]==nil - return false -end - -function mesecon:is_receptor_node_off(nodename) - local i=1 - repeat - i=i+1 - if mesecon.pwr_srcs_off[i]==nodename then return true end - until mesecon.pwr_srcs_off[i]==nil - return false -end - - -function mesecon:activate(pos) - local node = minetest.env:get_node(pos) - local i = 1 - repeat - i=i+1 - if mesecon.actions_on[i]~=nil then mesecon.actions_on[i](pos, node) - else break - end - until false -end - -function mesecon:deactivate(pos) - local node = minetest.env:get_node(pos) - local i = 1 - local checked={} - repeat - i=i+1 - if mesecon.actions_off[i]~=nil then mesecon.actions_off[i](pos, node) - else break - end - until false -end - - -mesecon:register_on_signal_on(function(pos, node) - if node.name=="jeija:meselamp_off" then - --minetest.env:remove_node(pos) - minetest.env:add_node(pos, {name="jeija:meselamp_on"}) - nodeupdate(pos) - end -end) - -mesecon:register_on_signal_off(function(pos, node) - if node.name=="jeija:meselamp_on" then - --minetest.env:remove_node(pos) - minetest.env:add_node(pos, {name="jeija:meselamp_off"}) - nodeupdate(pos) - end -end) - --- mesecon rules -function mesecon:get_rules(name) - local rules={} - rules[0]="dummy" - if name=="default" then - table.insert(rules, {x=0, y=0, z=-1}) - table.insert(rules, {x=1, y=0, z=0}) - table.insert(rules, {x=-1, y=0, z=0}) - table.insert(rules, {x=0, y=0, z=1}) - table.insert(rules, {x=1, y=1, z=0}) - table.insert(rules, {x=1, y=-1, z=0}) - table.insert(rules, {x=-1, y=1, z=0}) - table.insert(rules, {x=-1, y=-1, z=0}) - table.insert(rules, {x=0, y=1, z=1}) - table.insert(rules, {x=0, y=-1, z=1}) - table.insert(rules, {x=0, y=1, z=-1}) - table.insert(rules, {x=0, y=-1, z=-1}) - end - if name=="movestone" then - table.insert(rules, {x=0, y=1, z=-1}) - table.insert(rules, {x=0, y=0, z=-1}) - table.insert(rules, {x=0, y=-1, z=-1}) - table.insert(rules, {x=0, y=1, z=1}) - table.insert(rules, {x=0, y=-1, z=1}) - table.insert(rules, {x=0, y=0, z=1}) - table.insert(rules, {x=1, y=0, z=0}) - table.insert(rules, {x=1, y=1, z=0}) - table.insert(rules, {x=1, y=-1, z=0}) - table.insert(rules, {x=-1, y=1, z=0}) - table.insert(rules, {x=-1, y=-1, z=0}) - table.insert(rules, {x=-1, y=0, z=0}) - end - if name=="piston" then - table.insert(rules, {x=0, y=1, z=0}) - table.insert(rules, {x=0, y=-1, z=0}) - table.insert(rules, {x=0, y=1, z=-1}) - table.insert(rules, {x=0, y=0, z=-1}) - table.insert(rules, {x=0, y=-1, z=-1}) - table.insert(rules, {x=0, y=1, z=1}) - table.insert(rules, {x=0, y=-1, z=1}) - table.insert(rules, {x=0, y=0, z=1}) - table.insert(rules, {x=1, y=0, z=0}) - table.insert(rules, {x=1, y=1, z=0}) - table.insert(rules, {x=1, y=-1, z=0}) - table.insert(rules, {x=-1, y=1, z=0}) - table.insert(rules, {x=-1, y=-1, z=0}) - table.insert(rules, {x=-1, y=0, z=0}) - end - if name=="pressureplate" then - table.insert(rules, {x=0, y=1, z=-1}) - table.insert(rules, {x=0, y=0, z=-1}) - table.insert(rules, {x=0, y=-1, z=-1}) - table.insert(rules, {x=0, y=1, z=1}) - table.insert(rules, {x=0, y=-1, z=1}) - table.insert(rules, {x=0, y=0, z=1}) - table.insert(rules, {x=1, y=0, z=0}) - table.insert(rules, {x=1, y=1, z=0}) - table.insert(rules, {x=1, y=-1, z=0}) - table.insert(rules, {x=-1, y=1, z=0}) - table.insert(rules, {x=-1, y=-1, z=0}) - table.insert(rules, {x=-1, y=0, z=0}) - table.insert(rules, {x=0, y=-1, z=0}) - table.insert(rules, {x=0, y=1, z=0}) - end - if name=="mesecontorch_x-" then - table.insert(rules, {x=1, y=0, z=0}) - table.insert(rules, {x=0, y=0, z=1}) - table.insert(rules, {x=0, y=0, z=-1}) - end - if name=="mesecontorch_x+" then - table.insert(rules, {x=-1, y=0, z=0}) - table.insert(rules, {x=0, y=0, z=1}) - table.insert(rules, {x=0, y=0, z=-1}) - end - if name=="mesecontorch_z-" then - table.insert(rules, {x=0, y=0, z=1}) - table.insert(rules, {x=1, y=0, z=0}) - table.insert(rules, {x=-1, y=0, z=0}) - end - if name=="mesecontorch_z+" then - table.insert(rules, {x=0, y=0, z=-1}) - table.insert(rules, {x=1, y=0, z=0}) - table.insert(rules, {x=-1, y=0, z=0}) - end - if name=="mesecontorch_y-" then - table.insert(rules, {x=0, y=1, z=0}) - table.insert(rules, {x=1, y=1, z=0}) - table.insert(rules, {x=-1, y=1, z=0}) - table.insert(rules, {x=0, y=1, z=1}) - table.insert(rules, {x=0, y=1, z=-1}) - end - if name=="mesecontorch_y+" then - table.insert(rules, {x=0, y=-1, z=0}) - table.insert(rules, {x=1, y=-1, z=0}) - table.insert(rules, {x=-1, y=-1, z=0}) - table.insert(rules, {x=0, y=-1, z=1}) - table.insert(rules, {x=0, y=-1, z=-1}) - end - - if name=="button_x+" or name=="button_x-" - or name=="button_z-" or name=="button_z+" then --Is any button -table.insert(rules, {x=0, y=0, z=-1}) - table.insert(rules, {x=1, y=0, z=0}) - table.insert(rules, {x=-1, y=0, z=0}) - table.insert(rules, {x=0, y=0, z=1}) - table.insert(rules, {x=1, y=1, z=0}) - table.insert(rules, {x=1, y=-1, z=0}) - table.insert(rules, {x=-1, y=1, z=0}) - table.insert(rules, {x=-1, y=-1, z=0}) - table.insert(rules, {x=0, y=1, z=1}) - table.insert(rules, {x=0, y=-1, z=1}) - table.insert(rules, {x=0, y=1, z=-1}) - table.insert(rules, {x=0, y=-1, z=-1}) - table.insert(rules, {x=0, y=-1, z=0}) - end - if name=="button_x+" then - table.insert(rules, {x=-2, y=0, z=0}) - end - if name=="button_x-" then - table.insert(rules, {x=2, y=0, z=0}) - end - if name=="button_z+" then - table.insert(rules, {x=0, y=0, z=-2}) - end - if name=="button_z-" then - table.insert(rules, {x=0, y=0, z=2}) - end - return rules -end - - - - - - --- The POWER_PLANT - -minetest.register_node("jeija:power_plant", { - drawtype = "plantlike", - visual_scale = 1, - tile_images = {"jeija_power_plant.png"}, - inventory_image = "jeija_power_plant.png", - paramtype = "light", - walkable = false, - material = minetest.digprop_leaveslike(0.2), - light_source = LIGHT_MAX-9, - description="Power Plant", -}) - -minetest.register_craft({ - output = '"jeija:power_plant" 1', - recipe = { - {'"jeija:mesecon_off"'}, - {'"jeija:mesecon_off"'}, - {'"default:junglegrass"'}, - } -}) - -minetest.register_on_placenode(function(pos, newnode, placer) - if newnode.name == "jeija:power_plant" then - mesecon:receptor_on(pos) - end -end) - -minetest.register_on_dignode( - function(pos, oldnode, digger) - if oldnode.name == "jeija:power_plant" then - mesecon:receptor_off(pos) - end - end -) - -mesecon:add_receptor_node("jeija:power_plant") - - --- The BLINKY_PLANT - -minetest.register_node("jeija:blinky_plant_off", { - drawtype = "plantlike", - visual_scale = 1, - tile_images = {"jeija_blinky_plant_off.png"}, - inventory_image = "jeija_blinky_plant_off.png", - paramtype = "light", - walkable = false, - material = minetest.digprop_leaveslike(0.2), - description="Blinky Plant", -}) - -minetest.register_node("jeija:blinky_plant_on", { - drawtype = "plantlike", - visual_scale = 1, - tile_images = {"jeija_blinky_plant_on.png"}, - inventory_image = "jeija_blinky_plant_off.png", - paramtype = "light", - walkable = false, - material = minetest.digprop_leaveslike(0.2), - drop='"jeija:blinky_plant_off" 1', - light_source = LIGHT_MAX-7, - description="Blinky Plant", -}) - -minetest.register_craft({ - output = '"jeija:blinky_plant_off" 1', - recipe = { - {'','"jeija:mesecon_off"',''}, - {'','"jeija:mesecon_off"',''}, - {'"default:junglegrass"','"default:junglegrass"','"default:junglegrass"'}, - } -}) - -minetest.register_abm( - {nodenames = {"jeija:blinky_plant_off"}, - interval = BLINKY_PLANT_INTERVAL, - chance = 1, - action = function(pos, node, active_object_count, active_object_count_wider) - --minetest.env:remove_node(pos) - minetest.env:add_node(pos, {name="jeija:blinky_plant_on"}) - nodeupdate(pos) - mesecon:receptor_on(pos) - end, -}) - -minetest.register_abm({ - nodenames = {"jeija:blinky_plant_on"}, - interval = BLINKY_PLANT_INTERVAL, - chance = 1, - action = function(pos, node, active_object_count, active_object_count_wider) - --minetest.env:remove_node(pos) - minetest.env:add_node(pos, {name="jeija:blinky_plant_off"}) - nodeupdate(pos) - mesecon:receptor_off(pos) - end, -}) - -mesecon:add_receptor_node("jeija:blinky_plant_on") -mesecon:add_receptor_node_off("jeija:blinky_plant_off") - -minetest.register_on_dignode( - function(pos, oldnode, digger) - if oldnode.name == "jeija:blinky_plant_on" then - mesecon:receptor_off(pos) - end - end -) - --- Silicon -minetest.register_craftitem("jeija:silicon", { - image = "jeija_silicon.png", - on_place_on_ground = minetest.craftitem_place_item, - description="Silicon", -}) - --- IC -minetest.register_craftitem("jeija:ic", { - image = "jeija_ic.png", - on_place_on_ground = minetest.craftitem_place_item, - description="IC", -}) - -minetest.register_craft({ - output = 'craft "jeija:ic" 2', - recipe = { - {'jeija:silicon', 'jeija:silicon', 'jeija:mesecon_off'}, - {'jeija:silicon', 'jeija:silicon', 'jeija:mesecon_off'}, - {'jeija:mesecon_off', 'jeija:mesecon_off', ''}, - } -}) - --- Solar Panel -minetest.register_node("jeija:solar_panel", { - drawtype = "raillike", - tile_images = {"jeija_solar_panel.png"}, - inventory_image = "jeija_solar_panel.png", - wield_image = "jeija_solar_panel.png", - paramtype = "light", - walkable = false, - is_ground_content = true, - selection_box = { - type = "fixed", - }, - furnace_burntime = 5, - material = minetest.digprop_dirtlike(0.1), - description="Solar Panel", -}) - -minetest.register_craft({ - output = '"jeija:silicon" 4', - recipe = { - {'"default:sand"', '"default:sand"'}, - {'"default:sand"', '"default:steel_ingot"'}, - } -}) - -minetest.register_craft({ - output = '"jeija:solar_panel" 1', - recipe = { - {'"jeija:silicon"', '"jeija:silicon"'}, - {'"jeija:silicon"', '"jeija:silicon"'}, - } -}) - -minetest.register_abm( - {nodenames = {"jeija:solar_panel"}, - interval = 0.1, - chance = 1, - action = function(pos, node, active_object_count, active_object_count_wider) - local light = minetest.env:get_node_light(pos, nil) - if light == nil then light = 0 end - if light >= 12 then - mesecon:receptor_on(pos) - else - mesecon:receptor_off(pos) - end - end, -}) - - --- MESELAMPS -minetest.register_node("jeija:meselamp_on", { - drawtype = "torchlike", - tile_images = {"jeija_meselamp_on_ceiling_on.png", "jeija_meselamp_on_floor_on.png", "jeija_meselamp_on.png"}, - inventory_image = "jeija_meselamp_on_floor_on.png", - paramtype = "light", - sunlight_propagates = true, - walkable = false, - legacy_wallmounted = true, - paramtype2 = "wallmounted", - light_source = LIGHT_MAX, - selection_box = { - --type = "wallmounted", - --type = "fixed", - fixed = {-0.38, -0.5, -0.1, 0.38, -0.2, 0.1}, - }, - material = minetest.digprop_constanttime(0.1), - drop='"jeija:meselamp_off" 1', - description="Meselamp", -}) - -minetest.register_node("jeija:meselamp_off", { - drawtype = "torchlike", - tile_images = {"jeija_meselamp_on_ceiling_off.png", "jeija_meselamp_on_floor_off.png", "jeija_meselamp_off.png"}, - inventory_image = "jeija_meselamp_on_floor_off.png", - wield_image = "jeija_meselamp_on_ceiling_off.png", - paramtype = "light", - sunlight_propagates = true, - walkable = false, - wall_mounted = false, - selection_box = { - --type = "fixed", - fixed = {-0.38, -0.5, -0.1, 0.38, -0.2, 0.1}, - }, - material = minetest.digprop_constanttime(0.1), - description="Meselamp", -}) - -minetest.register_craft({ - output = '"jeija:meselamp_off" 1', - recipe = { - {'', '"default:glass"', ''}, - {'"jeija:mesecon_off"', '"default:steel_ingot"', '"jeija:mesecon_off"'}, - {'', '"default:glass"', ''}, - } -}) - ---GLUE -minetest.register_craftitem("jeija:glue", { - image = "jeija_glue.png", - on_place_on_ground = minetest.craftitem_place_item, - description="Glue", -}) - -minetest.register_craft({ - output = '"jeija:glue" 2', - recipe = { - {'"default:junglegrass"', '"default:junglegrass"'}, - {'"default:junglegrass"', '"default:junglegrass"'}, - } -}) - - --- HYDRO_TURBINE - -minetest.register_node("jeija:hydro_turbine_off", { - tile_images = {"jeija_hydro_turbine_off.png", "jeija_hydro_turbine_off.png", "jeija_hydro_turbine_off.png", "jeija_hydro_turbine_off.png", "jeija_hydro_turbine_off.png", "jeija_hydro_turbine_off.png"}, - material = minetest.digprop_constanttime(0.5), - description="Water Turbine", -}) - -minetest.register_node("jeija:hydro_turbine_on", { - tile_images = {"jeija_hydro_turbine_on.png", "jeija_hydro_turbine_on.png", "jeija_hydro_turbine_on.png", "jeija_hydro_turbine_on.png", "jeija_hydro_turbine_on.png", "jeija_hydro_turbine_on.png"}, - drop = '"jeija:hydro_turbine_off" 1', - material = minetest.digprop_constanttime(0.5), - description="Water Turbine", -}) - - -minetest.register_abm({ -nodenames = {"jeija:hydro_turbine_off"}, - interval = 1, - chance = 1, - action = function(pos, node, active_object_count, active_object_count_wider) - local waterpos={x=pos.x, y=pos.y+1, z=pos.z} - if minetest.env:get_node(waterpos).name=="default:water_flowing" then - --minetest.env:remove_node(pos) - minetest.env:add_node(pos, {name="jeija:hydro_turbine_on"}) - nodeupdate(pos) - mesecon:receptor_on(pos) - end - end, -}) - -minetest.register_abm({ -nodenames = {"jeija:hydro_turbine_on"}, - interval = 1, - chance = 1, - action = function(pos, node, active_object_count, active_object_count_wider) - local waterpos={x=pos.x, y=pos.y+1, z=pos.z} - if minetest.env:get_node(waterpos).name~="default:water_flowing" then - --minetest.env:remove_node(pos) - minetest.env:add_node(pos, {name="jeija:hydro_turbine_off"}) - nodeupdate(pos) - mesecon:receptor_off(pos) - end - end, -}) - -mesecon:add_receptor_node("jeija:hydro_turbine_on") -mesecon:add_receptor_node_off("jeija:hydro_turbine_off") - -minetest.register_craft({ - output = '"jeija:hydro_turbine_off" 2', - recipe = { - {'','"default:stick"', ''}, - {'"default:stick"', '"default:steel_ingot"', '"default:stick"'}, - {'','"default:stick"', ''}, - } -}) - ---Launch TNT - -mesecon:register_on_signal_on(function(pos, node) - if node.name=="experimental:tnt" then - minetest.env:remove_node(pos) - minetest.env:add_entity(pos, "experimental:tnt") - nodeupdate(pos) - end -end) - --- REMOVE_STONE - -minetest.register_node("jeija:removestone", { - tile_images = {"jeija_removestone.png"}, - inventory_image = minetest.inventorycube("jeija_removestone_inv.png"), - material = minetest.digprop_stonelike(1.0), - description="Removestone", -}) - -minetest.register_craft({ - output = '"jeija:removestone" 4', - recipe = { - {'', '"default:cobble"',''}, - {'"default:cobble"', '"jeija:mesecon_off"', '"default:cobble"'}, - {'', '"default:cobble"',''}, - } -}) - -mesecon:register_on_signal_on(function(pos, node) - if node.name=="jeija:removestone" then - minetest.env:remove_node(pos) - end -end) - - --- Include other files -dofile(minetest.get_modpath("jeija").."/movestone.lua") -dofile(minetest.get_modpath("jeija").."/button.lua") -dofile(minetest.get_modpath("jeija").."/torches.lua") -dofile(minetest.get_modpath("jeija").."/detector.lua") -dofile(minetest.get_modpath("jeija").."/pressureplates.lua") -dofile(minetest.get_modpath("jeija").."/wireless.lua") -dofile(minetest.get_modpath("jeija").."/alias.lua") -dofile(minetest.get_modpath("jeija").."/switch.lua") -dofile(minetest.get_modpath("jeija").."/pistons.lua") -dofile(minetest.get_modpath("jeija").."/lightstone.lua") -dofile(minetest.get_modpath("jeija").."/lever.lua") -dofile(minetest.get_modpath("jeija").."/temperest.lua") - ---INIT -mesecon:read_wlre_from_file() ---register stoppers for movestones/pistons -mesecon:register_mvps_stopper("default:chest") -mesecon:register_mvps_stopper("default:chest_locked") -mesecon:register_mvps_stopper("default:furnace") - -print("[MESEcons] Loaded!") - ---minetest.register_on_newplayer(function(player) - --local i=1 - --while mesecon.wireless_receivers[i]~=nil do - -- pos=mesecon.wireless_receivers[i].pos - -- request=mesecon.wireless_receivers[i].requested_state - -- inverting=mesecon.wireless_receivers[i].inverting - -- if request==inverting then - -- mesecon:receptor_off(pos) - -- end - -- if request~=inverting then - -- mesecon:receptor_on(pos) - -- end - --end ---end) diff --git a/jeija/lever.lua b/jeija/lever.lua deleted file mode 100644 index 6f20fec..0000000 --- a/jeija/lever.lua +++ /dev/null @@ -1,86 +0,0 @@ --- WALL LEVER -minetest.register_node("jeija:wall_lever_off", { - drawtype = "signlike", - tile_images = {"jeija_wall_lever_off.png"}, - inventory_image = "jeija_wall_lever_off.png", - wield_image = "jeija_wall_lever_off.png", - paramtype = "light", - paramtype2 = "wallmounted", - legacy_wallmounted = true, - walkable = false, - selection_box = { - type = "wallmounted", - }, - material = minetest.digprop_constanttime(0.3), - description="Lever", -}) -minetest.register_node("jeija:wall_lever_on", { - drawtype = "signlike", - tile_images = {"jeija_wall_lever_on.png"}, - inventory_image = "jeija_wall_lever_on.png", - paramtype = "light", - paramtype2 = "wallmounted", - legacy_wallmounted = true, - walkable = false, - selection_box = { - type = "wallmounted", - }, - material = minetest.digprop_constanttime(0.3), - drop = '"jeija:wall_lever_off" 1', - description="Lever", -}) - -minetest.register_on_dignode( - function(pos, oldnode, digger) - if oldnode.name == "jeija:wall_lever_on" then - mesecon:receptor_off(pos) - end - end -) -minetest.register_on_punchnode(function(pos, node, puncher) - if node.name == "jeija:wall_lever_off" then - minetest.env:add_node(pos, {name="jeija:wall_lever_on",param2=node.param2}) - local rules_string=nil - if node.param2 == 5 then - rules_string="button_z+" - end - if node.param2 == 3 then - rules_string="button_x+" - end - if node.param2 == 4 then - rules_string="button_z-" - end - if node.param2 == 2 then - rules_string="button_x-" - end - mesecon:receptor_on(pos, rules_string) - end - if node.name == "jeija:wall_lever_on" then - minetest.env:add_node(pos, {name="jeija:wall_lever_off",param2=node.param2}) - local rules_string=nil - if node.param2 == 5 then - rules_string="button_z+" - end - if node.param2 == 3 then - rules_string="button_x+" - end - if node.param2 == 4 then - rules_string="button_z-" - end - if node.param2 == 2 then - rules_string="button_x-" - end - mesecon:receptor_off(pos, rules_string) - end -end) - -minetest.register_craft({ - output = '"jeija:wall_lever_off" 2', - recipe = { - {'"jeija:mesecon_off"'}, - {'"default:stone"'}, - {'"default:stick"'}, - } -}) -mesecon:add_receptor_node("jeija:wall_lever") -mesecon:add_receptor_node_off("jeija:wall_lever_off") diff --git a/jeija/lightstone.lua b/jeija/lightstone.lua deleted file mode 100644 index d53d12c..0000000 --- a/jeija/lightstone.lua +++ /dev/null @@ -1,41 +0,0 @@ -function mesecon:lightstone_add(name, base_item, texture_off, texture_on) - minetest.register_node("jeija:lightstone_" .. name .. "_off", { - tile_images = {texture_off}, - inventory_image = minetest.inventorycube(texture_off), - material = minetest.digprop_stonelike(0.5), - description=name.." Lightstone", - }) - minetest.register_node("jeija:lightstone_" .. name .. "_on", { - tile_images = {texture_on}, - inventory_image = minetest.inventorycube(texture_on), - material = minetest.digprop_stonelike(0.5), - drop = "node jeija:lightstone_" .. name .. "_off 1", - light_source = LIGHT_MAX-2, - description=name.." Lightstone", - }) - assert(loadstring('mesecon:register_on_signal_on(function(pos, node) \n \ - if node.name == "jeija:lightstone_' .. name .. '_off" then \n \ - minetest.env:add_node(pos, {name="jeija:lightstone_' .. name .. '_on"}) \n \ - nodeupdate(pos) \n \ - end \n \ - end)'))() - assert(loadstring('mesecon:register_on_signal_off(function(pos, node) \n \ - if node.name == "jeija:lightstone_' .. name .. '_on" then \n \ - minetest.env:add_node(pos, {name="jeija:lightstone_' .. name .. '_off"}) \n \ - nodeupdate(pos) \n \ - end \n \ - end)'))() - minetest.register_craft({ - output = "node jeija:lightstone_" .. name .. "_off 1", - recipe = { - {'',base_item,''}, - {base_item,'node default:torch 1',base_item}, - {'','node jeija:mesecon_off 1',''}, - } - }) -end - -mesecon:lightstone_add("red", "craft default:clay_brick 1", "jeija_lightstone_red_off.png", "jeija_lightstone_red_on.png") -mesecon:lightstone_add("green", "node default:cactus 1", "jeija_lightstone_green_off.png", "jeija_lightstone_green_on.png") -mesecon:lightstone_add("gray", "node default:cobble 1", "jeija_lightstone_gray_off.png", "jeija_lightstone_gray_on.png") -mesecon:lightstone_add("darkgray", "node default:gravel 1", "jeija_lightstone_darkgray_off.png", "jeija_lightstone_darkgray_on.png") diff --git a/jeija/movestone.lua b/jeija/movestone.lua deleted file mode 100644 index 6831979..0000000 --- a/jeija/movestone.lua +++ /dev/null @@ -1,288 +0,0 @@ --- MOVESTONE - -function mesecon:is_mvps_stopper(nodename) - local i=1 - repeat - i=i+1 - if mesecon.mvps_stoppers[i]==nodename then return true end - until mesecon.mvps_stoppers[i]==nil - return false -end - -function mesecon:register_mvps_stopper(nodename) - local i=1 - repeat - i=i+1 - if mesecon.mvps_stoppers[i]==nil then break end - until false - mesecon.mvps_stoppers[i]=nodename -end - -function jeija_get_movestone_direction(pos) - getactivated=0 - local direction = {x=0, y=0, z=0} - local lpos={x=pos.x, y=pos.y, z=pos.z} - - local getactivated=0 - local rules=mesecon:get_rules("movestone") - - lpos.x=pos.x+0.499 - - for k=1, 3 do - getactivated=getactivated+mesecon:is_power_on(lpos, rules[k].x, rules[k].y, rules[k].z) - end - if getactivated>0 then direction.x=-1 return direction end - lpos=pos - lpos.x=pos.x-0.499 - - for n=4, 6 do - getactivated=getactivated+mesecon:is_power_on(lpos, rules[n].x, rules[n].y, rules[n].z) - end - - if getactivated>0 then direction.x=1 return direction end - lpos=pos - lpos.z=pos.z+0.499 - - for j=7, 9 do - getactivated=getactivated+mesecon:is_power_on(lpos, rules[j].x, rules[j].y, rules[j].z) - end - - if getactivated>0 then direction.z=-1 return direction end - lpos=pos - lpos.z=pos.z-0.499 - - for l=10, 12 do - getactivated=getactivated+mesecon:is_power_on(lpos, rules[l].x, rules[l].y, rules[l].z) - end - if getactivated>0 then direction.z=1 return direction end - return direction -end - -minetest.register_node("jeija:movestone", { - tile_images = {"jeija_movestone_side.png", "jeija_movestone_side.png", "jeija_movestone_side.png", "jeija_movestone_side.png", "jeija_movestone_arrows.png", "jeija_movestone_arrows.png"}, - paramtype2 = "facedir", - legacy_facedir_simple = true, - material = minetest.digprop_stonelike(0.8), - description="Movestone", -}) - -minetest.register_entity("jeija:movestone_entity", { - physical = false, - visual = "sprite", - textures = {"jeija_movestone_side.png", "jeija_movestone_side.png", "jeija_movestone_side.png", "jeija_movestone_side.png", "jeija_movestone_arrows.png", "jeija_movestone_arrows.png"}, - collisionbox = {-0.5,-0.5,-0.5, 0.5,0.5,0.5}, - visual = "cube", - --on_activate = function(self, staticdata) - --self.object:setsprite({x=0,y=0}, 1, 0, true) - --self.object:setvelocity({x=-3, y=0, z=0}) - --end, - - on_punch = function(self, hitter) - self.object:remove() - hitter:get_inventory():add_item("main", "jeija:movestone") - end, - - on_step = function(self, dtime) - local pos = self.object:getpos() - local colp = pos - local velocity={} - local direction=jeija_get_movestone_direction(colp) - - --colp.x=colp.x-(direction.x/2.01) - --colp.y=colp.y-direction.y - --colp.z=colp.z-(direction.z/2.01) - - if (direction.x==0 and direction.y==0 and direction.z==0) - or (minetest.env:get_node_or_nil(pos).name ~="air" - and minetest.env:get_node_or_nil(pos).name ~= nil) then - minetest.env:add_node(pos, {name="jeija:movestone"}) - self.object:remove() - return - end - --if not mesecon:check_if_turnon(colp) then - -- minetest.env:add_node(pos, {name="jeija:movestone"}) - -- self.object:remove() - -- return - --end - - velocity.x=direction.x*3 - velocity.y=direction.y*3 - velocity.z=direction.z*3 - - self.object:setvelocity(velocity) - - local np = {x=pos.x+direction.x, y=pos.y+direction.y, z=pos.z+direction.z} - local coln = minetest.env:get_node(np) - if coln.name ~= "air" and coln.name ~="water" then - local thisp= {x=pos.x, y=pos.y, z=pos.z} - local thisnode=minetest.env:get_node(thisp) - local nextnode={} - minetest.env:remove_node(thisp) - repeat - thisp.x=thisp.x+direction.x - thisp.y=thisp.y+direction.y - thisp.z=thisp.z+direction.z - nextnode=minetest.env:get_node(thisp) - minetest.env:add_node(thisp, {name=thisnode.name}) - nodeupdate(thisp) - thisnode=nextnode - until thisnode.name=="air" or thisnode.name=="ignore" or thisnode.name=="default:water" or thisnode.name=="default:water_flowing" - end - end -}) - -minetest.register_craft({ - output = '"jeija:movestone" 2', - recipe = { - {'"default:stone"', '"default:stone"', '"default:stone"'}, - {'"jeija:mesecon_off"', '"jeija:mesecon_off"', '"jeija:mesecon_off"'}, - {'"default:stone"', '"default:stone"', '"default:stone"'}, - } -}) - - -mesecon:register_on_signal_on(function (pos, node) - if node.name=="jeija:movestone" then - local direction=jeija_get_movestone_direction({x=pos.x, y=pos.y, z=pos.z}) - local checknode={} - local collpos={x=pos.x, y=pos.y, z=pos.z} - repeat -- Check if it collides with a stopper - collpos={x=collpos.x+direction.x, y=collpos.y+direction.y, z=collpos.z+direction.z} - checknode=minetest.env:get_node(collpos) - if mesecon:is_mvps_stopper(checknode.name) then - return - end - until checknode.name=="air" - or checknode.name=="ignore" - or checknode.name=="default:water" - or checknode.name=="default:water_flowing" - minetest.env:remove_node(pos) - nodeupdate(pos) - minetest.env:add_entity(pos, "jeija:movestone_entity") - end -end) - - - --- STICKY_MOVESTONE - -minetest.register_node("jeija:sticky_movestone", { - tile_images = {"jeija_movestone_side.png", "jeija_movestone_side.png", "jeija_movestone_side.png", "jeija_movestone_side.png", "jeija_sticky_movestone.png", "jeija_sticky_movestone.png"}, - inventory_image = minetest.inventorycube("jeija_sticky_movestone.png", "jeija_movestone_side.png", "jeija_movestone_side.png"), - paramtype2 = "facedir", - legacy_facedir_simple = true, - material = minetest.digprop_stonelike(0.8), - description="Sticky Movestone", -}) - -minetest.register_craft({ - output = '"jeija:sticky_movestone" 2', - recipe = { - {'"jeija:glue"', '"jeija:movestone"', '"jeija:glue"'}, - } -}) - -minetest.register_entity("jeija:sticky_movestone_entity", { - physical = false, - visual = "sprite", - textures = {"jeija_movestone_side.png", "jeija_movestone_side.png", "jeija_movestone_side.png", "jeija_movestone_side.png", "jeija_sticky_movestone.png", "jeija_sticky_movestone.png"}, - collisionbox = {-0.5,-0.5,-0.5, 0.5,0.5,0.5}, - visual = "cube", - - on_punch = function(self, hitter) - self.object:remove() - hitter:get_inventory():add_item("main", 'jeija:sticky_movestone') - end, - - on_step = function(self, dtime) - local pos = self.object:getpos() - local colp = pos - local direction=jeija_get_movestone_direction(colp) - local velocity={x=direction.x*3, y=direction.y*3, z=direction.z*3} - - self.object:setvelocity(velocity) - - local np = {x=pos.x+direction.x, y=pos.y+direction.y, z=pos.z+direction.z} - local coln = minetest.env:get_node(np) - if coln.name ~= "air" and coln.name ~="water" then - local thisp= {x=pos.x, y=pos.y, z=pos.z} - local thisnode=minetest.env:get_node(thisp) - local nextnode={} - minetest.env:remove_node(thisp) - repeat - thisp.x=thisp.x+direction.x - thisp.y=thisp.y+direction.y - thisp.z=thisp.z+direction.z - nextnode=minetest.env:get_node(thisp) - minetest.env:add_node(thisp, {name=thisnode.name}) - nodeupdate(thisp) - thisnode=nextnode - until thisnode.name=="air" or thisnode.name=="ignore" or thisnode.name=="default:water" or thisnode.name=="default:water_flowing" - end - - --STICKY: - local np1 = {x=pos.x-direction.x*0.5, y=pos.y-direction.y*0.5, z=pos.z-direction.z*0.5} -- 1 away - local coln1 = minetest.env:get_node(np1) - local np2 = {x=pos.x-direction.x*1.5, y=pos.y-direction.y*1.5, z=pos.z-direction.z*1.5} -- 2 away - local coln2 = minetest.env:get_node(np2) - - if (coln1.name == "air" or coln1.name =="water") and (coln2.name~="air" and coln2.name ~= water) then - thisp= np2 - local newpos={} - local oldpos={} - repeat - newpos.x=thisp.x+direction.x - newpos.y=thisp.y+direction.y - newpos.z=thisp.z+direction.z - minetest.env:add_node(newpos, {name=minetest.env:get_node(thisp).name}) - nodeupdate(newpos) - oldpos={x=thisp.x, y=thisp.y, z=thisp.z} - thisp.x=thisp.x-direction.x - thisp.y=thisp.y-direction.y - thisp.z=thisp.z-direction.z - until minetest.env:get_node(thisp).name=="air" or minetest.env:get_node(thisp).name=="ignore" or minetest.env:get_node(thisp).name=="default:water" or minetest.env:get_node(thisp).name=="default:water_flowing" - minetest.env:remove_node(oldpos) - end - - if (direction.x==0 and direction.y==0 and direction.z==0) then - --or (minetest.env:get_node_or_nil(pos).name ~="air" - --and minetest.env:get_node_or_nil(pos).name ~= nil) then - minetest.env:add_node(pos, {name="jeija:sticky_movestone"}) - self.object:remove() - return - end - end -}) - -mesecon:register_on_signal_on(function (pos, node) - if node.name=="jeija:sticky_movestone" then - local direction=jeija_get_movestone_direction({x=pos.x, y=pos.y, z=pos.z}) - local checknode={} - local collpos={x=pos.x, y=pos.y, z=pos.z} - repeat -- Check if it collides with a stopper - collpos={x=collpos.x+direction.x, y=collpos.y+direction.y, z=collpos.z+direction.z} - checknode=minetest.env:get_node(collpos) - if mesecon:is_mvps_stopper(checknode.name) then - return - end - until checknode.name=="air" - or checknode.name=="ignore" - or checknode.name=="default:water" - or checknode.name=="default:water_flowing" - repeat -- Check if it collides with a stopper (pull direction) - collpos={x=collpos.x-direction.x, y=collpos.y-direction.y, z=collpos.z-direction.z} - checknode=minetest.env:get_node(collpos) - if mesecon:is_mvps_stopper(checknode.name) then - return - end - until checknode.name=="air" - or checknode.name=="ignore" - or checknode.name=="default:water" - or checknode.name=="default:water_flowing" - - minetest.env:remove_node(pos) - nodeupdate(pos) - minetest.env:add_entity(pos, "jeija:sticky_movestone_entity") - end -end) - diff --git a/jeija/pistons.lua b/jeija/pistons.lua deleted file mode 100644 index 3ad7aac..0000000 --- a/jeija/pistons.lua +++ /dev/null @@ -1,268 +0,0 @@ ---PISTONS ---registration normal one: -minetest.register_node("jeija:piston_normal", { - tile_images = {"jeija_piston_tb.png", "jeija_piston_tb.png", "jeija_piston_tb.png", "jeija_piston_tb.png", "jeija_piston_tb.png", "jeija_piston_side.png"}, - material = minetest.digprop_stonelike(0.5), - paramtype2="facedir", - description="Piston", -}) - -minetest.register_craft({ - output = '"jeija:piston_normal" 2', - recipe = { - {"default:wood", "default:wood", "default:wood"}, - {"default:cobble", "default:steel_ingot", "default:cobble"}, - {"default:cobble", "jeija:mesecon_off", "default:cobble"}, - } -}) - ---registration sticky one: -minetest.register_node("jeija:piston_sticky", { - tile_images = {"jeija_piston_tb.png", "jeija_piston_tb.png", "jeija_piston_tb.png", "jeija_piston_tb.png", "jeija_piston_tb.png", "jeija_piston_sticky_side.png"}, - material = minetest.digprop_stonelike(0.5), - paramtype2="facedir", - description="Sticky Piston", -}) - -minetest.register_craft({ - output = '"jeija:piston_sticky" 1', - recipe = { - {'"jeija:glue"'}, - {'"jeija:piston_normal"'}, - } -}) - --- get push direction normal -function mesecon:piston_get_direction(pos) - local direction = {x=0, y=0, z=0} - if OLD_PISTON_DIRECTION==1 then - getactivated=0 - local lpos={x=pos.x, y=pos.y, z=pos.z} - local getactivated=0 - local rules=mesecon:get_rules("piston") - - getactivated=getactivated+mesecon:is_power_on(pos, rules[1].x, rules[1].y, rules[1].z) - if getactivated>0 then direction.y=-1 return direction end - getactivated=getactivated+mesecon:is_power_on(pos, rules[2].x, rules[2].y, rules[2].z) - if getactivated>0 then direction.y=1 return direction end - for k=3, 5 do - getactivated=getactivated+mesecon:is_power_on(pos, rules[k].x, rules[k].y, rules[k].z) - end - if getactivated>0 then direction.z=1 return direction end - - for n=6, 8 do - getactivated=getactivated+mesecon:is_power_on(pos, rules[n].x, rules[n].y, rules[n].z) - end - - if getactivated>0 then direction.z=-1 return direction end - - for j=9, 11 do - getactivated=getactivated+mesecon:is_power_on(pos, rules[j].x, rules[j].y, rules[j].z) - end - - if getactivated>0 then direction.x=-1 return direction end - - for l=12, 14 do - getactivated=getactivated+mesecon:is_power_on(pos, rules[l].x, rules[l].y, rules[l].z) - end - if getactivated>0 then direction.x=1 return direction end - else - local node=minetest.env:get_node(pos) - if node.param2==3 then - return {x=1, y=0, z=0} - end - if node.param2==2 then - return {x=0, y=0, z=1} - end - if node.param2==1 then - return {x=-1, y=0, z=0} - end - if node.param2==0 then - return {x=0, y=0, z=-1} - end - end - return direction -end - --- get pull/push direction sticky -function mesecon:sticky_piston_get_direction(pos) - if OLD_PISTON_DIRECTION==1 then - getactivated=0 - local direction = {x=0, y=0, z=0} - local lpos={x=pos.x, y=pos.y, z=pos.z} - local getactivated=0 - local rules=mesecon:get_rules("piston") - - getactivated=getactivated+mesecon:is_power_off(pos, rules[1].x, rules[1].y, rules[1].z) - if getactivated>0 then direction.y=-1 return direction end - getactivated=getactivated+mesecon:is_power_off(pos, rules[2].x, rules[2].y, rules[2].z) - if getactivated>0 then direction.y=1 return direction end - - for k=3, 5 do - getactivated=getactivated+mesecon:is_power_off(pos, rules[k].x, rules[k].y, rules[k].z) - end - if getactivated>0 then direction.z=1 return direction end - - for n=6, 8 do - getactivated=getactivated+mesecon:is_power_off(pos, rules[n].x, rules[n].y, rules[n].z) - end - - if getactivated>0 then direction.z=-1 return direction end - - for j=9, 11 do - getactivated=getactivated+mesecon:is_power_off(pos, rules[j].x, rules[j].y, rules[j].z) - end - - if getactivated>0 then direction.x=-1 return direction end - - for l=12, 14 do - getactivated=getactivated+mesecon:is_power_off(pos, rules[l].x, rules[l].y, rules[l].z) - end - if getactivated>0 then direction.x=1 return direction end - else - local node=minetest.env:get_node(pos) - if node.param2==3 then - return {x=1, y=0, z=0} - end - if node.param2==2 then - return {x=0, y=0, z=1} - end - if node.param2==1 then - return {x=-1, y=0, z=0} - end - if node.param2==0 then - return {x=0, y=0, z=-1} - end - end - return direction -end - --- Push action -mesecon:register_on_signal_on(function (pos, node) - if (node.name=="jeija:piston_normal" or node.name=="jeija:piston_sticky") then - local direction=mesecon:piston_get_direction(pos) - - local checknode={} - local checkpos={x=pos.x, y=pos.y, z=pos.z} - repeat -- Check if it collides with a stopper - checkpos={x=checkpos.x+direction.x, y=checkpos.y+direction.y, z=checkpos.z+direction.z} - checknode=minetest.env:get_node(checkpos) - if mesecon:is_mvps_stopper(checknode.name) then - return - end - until checknode.name=="air" - or checknode.name=="ignore" - or checknode.name=="default:water" - or checknode.name=="default:water_flowing" - - local obj={} - if node.name=="jeija:piston_normal" then - obj=minetest.env:add_entity(pos, "jeija:piston_pusher_normal") - elseif node.name=="jeija:piston_sticky" then - obj=minetest.env:add_entity(pos, "jeija:piston_pusher_sticky") - end - - if ENABLE_PISTON_ANIMATION==1 then - obj:setvelocity({x=direction.x*4, y=direction.y*4, z=direction.z*4}) - else - obj:moveto({x=pos.x+direction.x, y=pos.y+direction.y, z=pos.z+direction.z}, false) - end - - local np = {x=pos.x+direction.x, y=pos.y+direction.y, z=pos.z+direction.z} - local coln = minetest.env:get_node(np) - - or checknode.name=="ignore" - or checknode.name=="default:water" - or checknode.name=="default:water_flowing" - - if coln.name ~= "air" and coln.name ~="water" then - local thisp= {x=np.x, y=np.y, z=np.z} - local thisnode=minetest.env:get_node(thisp) - local nextnode={} - minetest.env:remove_node(thisp) - repeat - thisp.x=thisp.x+direction.x - thisp.y=thisp.y+direction.y - thisp.z=thisp.z+direction.z - nextnode=minetest.env:get_node(thisp) - minetest.env:add_node(thisp, {name=thisnode.name}) - nodeupdate(thisp) - thisnode=nextnode - until thisnode.name=="air" - or thisnode.name=="ignore" - or thisnode.name=="default:water" - or thisnode.name=="default:water_flowing" - end - end -end) - ---Pull action (sticky only) -mesecon:register_on_signal_off(function (pos, node) - if node.name=="jeija:piston_sticky" or node.name=="jeija:piston_normal" then - local objs = minetest.env:get_objects_inside_radius(pos, 2) - for k, obj in pairs(objs) do - obj:remove() - end - - if node.name=="jeija:piston_sticky" then - local direction=mesecon:sticky_piston_get_direction(pos) - local np = {x=pos.x+direction.x, y=pos.y+direction.y, z=pos.z+direction.z} - local coln = minetest.env:get_node(np) - if coln.name == "air" or coln.name =="water" then - local thisp= {x=np.x+direction.x, y=np.y+direction.y, z=np.z+direction.z} - local thisnode=minetest.env:get_node(thisp) - if thisnode.name~="air" and thisnode.name~="water" and not mesecon:is_mvps_stopper(thisnode.name) then - local newpos={} - local oldpos={} - minetest.env:add_node(np, {name=thisnode.name}) - minetest.env:remove_node(thisp) - end - end - end - end -end) - ---Piston Animation -local PISTON_PUSHER_NORMAL={ - physical = false, - visual = "sprite", - textures = {"default_wood.png", "default_wood.png", "jeija_piston_pusher_normal.png", "jeija_piston_pusher_normal.png", "jeija_piston_pusher_normal.png", "jeija_piston_pusher_normal.png"}, - collisionbox = {-0.5,-0.5,-0.5, 0.5,0.5,0.5}, - visual = "cube", - timer=0, -} - -function PISTON_PUSHER_NORMAL:on_step(dtime) - self.timer=self.timer+dtime - if self.timer>=0.24 then - self.object:setvelocity({x=0, y=0, z=0}) - end -end - -local PISTON_PUSHER_STICKY={ - physical = false, - visual = "sprite", - textures = {"default_wood.png", "default_wood.png", "jeija_piston_pusher_sticky.png", "jeija_piston_pusher_sticky.png", "jeija_piston_pusher_sticky.png", "jeija_piston_pusher_sticky.png"}, - collisionbox = {-0.5,-0.5,-0.5, 0.5,0.5,0.5}, - visual = "cube", - timer=0, -} - -function PISTON_PUSHER_STICKY:on_step(dtime) - self.timer=self.timer+dtime - if self.timer>=0.24 then - self.object:setvelocity({x=0, y=0, z=0}) - end -end - -minetest.register_entity("jeija:piston_pusher_normal", PISTON_PUSHER_NORMAL) -minetest.register_entity("jeija:piston_pusher_sticky", PISTON_PUSHER_STICKY) - -minetest.register_on_dignode(function(pos, node) - if node.name=="jeija:piston_normal" or node.name=="jeija:piston_sticky" then - local objs = minetest.env:get_objects_inside_radius(pos, 2) - for k, obj in pairs(objs) do - obj:remove() - end - end -end) diff --git a/jeija/pressureplates.lua b/jeija/pressureplates.lua deleted file mode 100644 index edc96c0..0000000 --- a/jeija/pressureplates.lua +++ /dev/null @@ -1,153 +0,0 @@ --- PRESSURE PLATE WOOD - -minetest.register_node("jeija:pressure_plate_wood_off", { - drawtype = "raillike", - tile_images = {"jeija_pressure_plate_wood_off.png"}, - inventory_image = "jeija_pressure_plate_wood_off.png", - wield_image = "jeija_pressure_plate_wood_off.png", - paramtype = "light", - is_ground_content = true, - walkable = false, - selection_box = { - type = "fixed", - }, - material = minetest.digprop_constanttime(0.3), - description="Wood Pressure Plate", -}) - -minetest.register_node("jeija:pressure_plate_wood_on", { - drawtype = "raillike", - tile_images = {"jeija_pressure_plate_wood_on.png"}, - paramtype = "light", - is_ground_content = true, - walkable = false, - selection_box = { - type = "fixed", - }, - material = minetest.digprop_constanttime(0.3), - drop='"jeija:pressure_plate_wood_off" 1', -}) - -minetest.register_craft({ - output = '"jeija:pressure_plate_wood_off" 1', - recipe = { - {'"default:wood"', '"default:wood"'}, - } -}) - -minetest.register_abm( - {nodenames = {"jeija:pressure_plate_wood_off"}, - interval = 1.0, - chance = 1, - action = function(pos, node, active_object_count, active_object_count_wider) - local objs = minetest.env:get_objects_inside_radius(pos, 1) - for k, obj in pairs(objs) do - local objpos=obj:getpos() - if objpos.y>pos.y-1 and objpos.ypos.y-1 and objpos.y