diff options
Diffstat (limited to 'extranodes')
28 files changed, 720 insertions, 0 deletions
diff --git a/extranodes/aspirin.lua b/extranodes/aspirin.lua new file mode 100644 index 0000000..a9ddad8 --- /dev/null +++ b/extranodes/aspirin.lua @@ -0,0 +1,41 @@ +-- aspirin + +-- makes any sence only when there is hunger as a separate status of the player +-- also it uses willow twigs - ethereal dependency +-- A bottle of aspirin pills heals the player immediately. + +local S = rawget(_G, "intllib") and intllib.Getter() or function(s) return s end + +if minetest.get_modpath("hunger") and minetest.get_modpath("ethereal") then + + minetest.register_craftitem(":technic:aspirin_pill", { + description = S("Aspirin pill"), + inventory_image = "technic_aspirin_pill.png", + on_use = function(itemstack, user, pointed_thing) + user:set_hp(user:get_hp() + 2) + itemstack:take_item() + return itemstack + end + }) + + minetest.register_craftitem(":technic:aspirin_bottle", { + description = S("Aspirin pills"), + inventory_image = "technic_aspirin_bottle.png", + on_use = function(itemstack, user, pointed_thing) + user:set_hp(20) + itemstack:take_item() + return itemstack + end + }) + + minetest.register_craft({ + type = "shapeless", + output = "technic:aspirin_bottle", + recipe = {"technic:aspirin_pill", "technic:aspirin_pill", + "technic:aspirin_pill", "technic:aspirin_pill", + "technic:aspirin_pill", "technic:aspirin_pill", + "technic:aspirin_pill", "vessels:glass_bottle"} + }) + +end + diff --git a/extranodes/depends.txt b/extranodes/depends.txt index 15b9ef5..fa27879 100644 --- a/extranodes/depends.txt +++ b/extranodes/depends.txt @@ -1,4 +1,7 @@ default +technic? +pipeworks? +mesecons? technic_worldgen concrete unifieddyes? diff --git a/extranodes/extramesecons.lua b/extranodes/extramesecons.lua new file mode 100644 index 0000000..05581c5 --- /dev/null +++ b/extranodes/extramesecons.lua @@ -0,0 +1,63 @@ +local S = rawget(_G, "intllib") and intllib.Getter() or function(s) return s end + +if minetest.get_modpath("mesecons") then + + mesecon.register_node("extranodes:mesecon_switch_protected", { + paramtype2="facedir", + description="Switch (protected)", + is_ground_content = false, + sounds = default.node_sound_stone_defaults(), + after_place_node = function(pos, placer, itemstack, pointed_thing) + local meta = minetest.get_meta(pos) + meta:set_string("owner", placer:get_player_name() or "") + end, + on_rightclick = function (pos, node, player) + local meta = minetest.get_meta(pos) + local owner = meta:get_string("owner") + local pname = player:get_player_name(); + if owner ~= pname then + minetest.chat_send_player(pname, "This switch can only be used by " .. owner) + return + end + if(mesecon.flipstate(pos, node) == "on") then + mesecon.receptor_on(pos) + else + mesecon.receptor_off(pos) + end + minetest.sound_play("mesecons_switch", {pos=pos}) + end + },{ + groups = {dig_immediate=2}, + tiles = { "mesecons_switch_side.png", + "mesecons_switch_side.png", + "mesecons_switch_side.png^default_key.png^[transformR180", + "mesecons_switch_side.png^default_key.png^[transformR180FX", + "mesecons_switch_side.png", + "mesecons_switch_off.png^mesecons_switch_locked_frame.png"}, + mesecons = {receptor = { state = mesecon.state.off }} + },{ + groups = {dig_immediate=2, not_in_creative_inventory=1}, + tiles = { "mesecons_switch_side.png", + "mesecons_switch_side.png", + "mesecons_switch_side.png^default_key.png^[transformR180", + "mesecons_switch_side.png^default_key.png^[transformR180FX", + "mesecons_switch_side.png", + "mesecons_switch_on.png^mesecons_switch_locked_frame.png"}, + mesecons = {receptor = { state = mesecon.state.on }} + }) + + minetest.register_craft({ + output = "extranodes:mesecon_switch_protected_off 2", + recipe = { + {"default:steel_ingot", "default:cobble", "default:steel_ingot"}, + {"group:mesecon_conductor_craftable","default:skeleton_key", "group:mesecon_conductor_craftable"}, + } + }) + + minetest.register_craft({ + output = "extranodes:mesecon_switch_protected_off", + type = "shapeless", + recipe = {"default:skeleton_key", "mesecons_switch:mesecon_switch_off"} + }) + +end
\ No newline at end of file diff --git a/extranodes/extratubes.lua b/extranodes/extratubes.lua new file mode 100644 index 0000000..e624c87 --- /dev/null +++ b/extranodes/extratubes.lua @@ -0,0 +1,241 @@ +-- EXTRATUBES +-- This files add some new tube types, to widen the pipeworks mod assortment of +-- available parts in order to better meet the needs of expansive automation +local S = rawget(_G, "intllib") and intllib.Getter() or function(s) return s end + +if minetest.get_modpath("pipeworks") then + + --------------------------------------------------------------------- + -- straight-only pipe + -- does not connect side-wise, allows items in both directions + -- a counterpart to straight-only pipe, and a cheap alternative + -- to one-way tube for long segments of parallel pipes + --------------------------------------------------------------------- + + minetest.register_node(":pipeworks:straight_tube", { + description = S("Straight-only Tube"), + tiles = {"pipeworks_straight_tube_side.png", + "pipeworks_straight_tube_side.png", + "pipeworks_straight_tube_output.png", + "pipeworks_straight_tube_input.png", + "pipeworks_straight_tube_side.png", + "pipeworks_straight_tube_side.png"}, + paramtype2 = "facedir", + drawtype = "nodebox", + paramtype = "light", + node_box = {type = "fixed", + fixed = {{-1/2, -9/64, -9/64, 1/2, 9/64, 9/64}}}, + groups = {snappy = 2, choppy = 2, oddly_breakable_by_hand = 2, tubedevice = 1}, + sounds = default.node_sound_wood_defaults(), + tube = { + connect_sides = {left = 1, right = 1}, + can_go = function(pos, node, velocity, stack) + return {velocity} + end, + can_insert = function(pos, node, stack, direction) + local dir = pipeworks.facedir_to_right_dir(node.param2) + local opdir = vector.multiply(dir, -1) + return vector.equals(dir, direction) or vector.equals(opdir, direction) + end, + priority = 60 -- Higher than normal tubes, but lower than one-way tubes + }, + after_place_node = pipeworks.after_place, + after_dig_node = pipeworks.after_dig, + }) + + minetest.register_craft({ + output = "pipeworks:straight_tube 3", + recipe = { + { "pipeworks:tube_1", "pipeworks:tube_1", "pipeworks:tube_1" }, + }, + }) + + + --------------------------------------------------------------------- + -- conducting one-way tube - to stop making those ugly shunting wires + --------------------------------------------------------------------- + + + if pipeworks.enable_one_way_tube and pipeworks.enable_conductor_tube then + minetest.register_node(":pipeworks:conductor_one_way_tube_on", { + description = S("One-way Conducting Tube"), + tiles = {"pipeworks_conductor_one_way_tube_top_on.png", + "pipeworks_conductor_one_way_tube_top_on.png", + "pipeworks_conductor_one_way_tube_output_on.png", + "pipeworks_conductor_one_way_tube_input_on.png", + "pipeworks_conductor_one_way_tube_side_on.png", + "pipeworks_conductor_one_way_tube_top_on.png"}, + paramtype2 = "facedir", + drawtype = "nodebox", + paramtype = "light", + node_box = {type = "fixed", + fixed = {{-1/2, -9/64, -9/64, 1/2, 9/64, 9/64}}}, + groups = {snappy = 2, choppy = 2, oddly_breakable_by_hand = 2, tubedevice = 1, mesecon = 2, not_in_creative_inventory = 1}, + sounds = default.node_sound_wood_defaults(), + tube = { + connect_sides = {left = 1, right = 1}, + can_go = function(pos, node, velocity, stack) + return {velocity} + end, + can_insert = function(pos, node, stack, direction) + local dir = pipeworks.facedir_to_right_dir(node.param2) + return vector.equals(dir, direction) + end, + priority = 75 -- Higher than normal tubes, but lower than receivers + }, + after_place_node = pipeworks.after_place, + after_dig_node = pipeworks.after_dig, + mesecons = { + conductor = {state = mesecon.state.on, + rules = pipeworks.mesecons_rules, + onstate = "pipeworks:conductor_one_way_tube_on", + offstate = "pipeworks:conductor_one_way_tube_off" + } + }, + drop = "pipeworks:conductor_one_way_tube_off", + }) + + minetest.register_node(":pipeworks:conductor_one_way_tube_off", { + description = S("One-way Conducting Tube"), + tiles = {"pipeworks_conductor_one_way_tube_top_off.png", + "pipeworks_conductor_one_way_tube_top_off.png", + "pipeworks_conductor_one_way_tube_output_off.png", + "pipeworks_conductor_one_way_tube_input_off.png", + "pipeworks_conductor_one_way_tube_side_off.png", + "pipeworks_conductor_one_way_tube_top_off.png"}, + paramtype2 = "facedir", + drawtype = "nodebox", + paramtype = "light", + node_box = {type = "fixed", + fixed = {{-1/2, -9/64, -9/64, 1/2, 9/64, 9/64}}}, + groups = {snappy = 2, choppy = 2, oddly_breakable_by_hand = 2, tubedevice = 1, mesecon = 2}, + sounds = default.node_sound_wood_defaults(), + tube = { + connect_sides = {left = 1, right = 1}, + can_go = function(pos, node, velocity, stack) + return {velocity} + end, + can_insert = function(pos, node, stack, direction) + local dir = pipeworks.facedir_to_right_dir(node.param2) + return vector.equals(dir, direction) + end, + priority = 75 -- Higher than normal tubes, but lower than receivers + }, + after_place_node = pipeworks.after_place, + after_dig_node = pipeworks.after_dig, + mesecons = { + conductor = {state = mesecon.state.off, + rules = pipeworks.mesecons_rules, + onstate = "pipeworks:conductor_one_way_tube_on", + offstate = "pipeworks:conductor_one_way_tube_off" + } + }, + drop = "pipeworks:conductor_one_way_tube_off", + }) + + minetest.register_craft({ + output = "pipeworks:conductor_one_way_tube_off", + recipe = { + { "pipeworks:one_way_tube", "mesecons:wire_00000000_off"} + }, + }) + end + + --------------------------------------------------------------------- + -- mesecon-controlled valve (bidirectional) + --------------------------------------------------------------------- + + minetest.register_node(":pipeworks:tube_valve_on", { + description = S("Tube Valve"), + tiles = {"pipeworks_tube_valve_side_on.png", + "pipeworks_tube_valve_side_on.png", + "pipeworks_straight_tube_output.png", + "pipeworks_straight_tube_input.png", + "pipeworks_tube_valve_side_on.png", + "pipeworks_tube_valve_side_on.png"}, + paramtype2 = "facedir", + drawtype = "nodebox", + paramtype = "light", + node_box = {type = "fixed", + fixed = {{-1/2, -9/64, -9/64, 1/2, 9/64, 9/64}}}, + groups = {snappy = 2, choppy = 2, oddly_breakable_by_hand = 2, tubedevice = 1, mesecon = 2, not_in_creative_inventory = 1}, + sounds = default.node_sound_wood_defaults(), + tube = { + connect_sides = {left = 1, right = 1}, + can_go = function(pos, node, velocity, stack) + return {velocity} + end, + can_insert = function(pos, node, stack, direction) + local dir = pipeworks.facedir_to_right_dir(node.param2) + local opdir = vector.multiply(dir, -1) + return vector.equals(dir, direction) or vector.equals(opdir, direction) + end, + priority = 50 -- regular tube + }, + after_place_node = pipeworks.after_place, + after_dig_node = pipeworks.after_dig, + mesecons = { + effector = { + rules = pipeworks.mesecons_rules, + action_on = function (pos, node) + minetest.swap_node(pos, {name = "pipeworks:tube_valve_on", param2 = node.param2 }) + end, + action_off = function (pos, node) + minetest.swap_node(pos, {name = "pipeworks:tube_valve_off", param2 = node.param2 }) + end, + } + }, + drop = "pipeworks:tube_valve_off", + }) + + minetest.register_node(":pipeworks:tube_valve_off", { + description = S("Tube Valve"), + tiles = {"pipeworks_tube_valve_side_off.png", + "pipeworks_tube_valve_side_off.png", + "pipeworks_straight_tube_output.png", + "pipeworks_straight_tube_input.png", + "pipeworks_tube_valve_side_off.png", + "pipeworks_tube_valve_side_off.png"}, + paramtype2 = "facedir", + drawtype = "nodebox", + paramtype = "light", + node_box = {type = "fixed", + fixed = {{-1/2, -9/64, -9/64, 1/2, 9/64, 9/64}}}, + groups = {snappy = 2, choppy = 2, oddly_breakable_by_hand = 2, tubedevice = 1, mesecon = 2}, + sounds = default.node_sound_wood_defaults(), + tube = { + connect_sides = {left = 1, right = 1}, + can_go = function(pos, node, velocity, stack) + return {velocity} + end, + can_insert = function(pos, node, stack, direction) + return false + end, + priority = 50 -- regular tube + }, + after_place_node = pipeworks.after_place, + after_dig_node = pipeworks.after_dig, + mesecons = { + effector = { + rules = pipeworks.mesecons_rules, + action_on = function (pos, node) + minetest.swap_node(pos, {name = "pipeworks:tube_valve_on", param2 = node.param2 }) + end, + action_off = function (pos, node) + minetest.swap_node(pos, {name = "pipeworks:tube_valve_off", param2 = node.param2 }) + end, + } + }, + drop = "pipeworks:tube_valve_off", + }) + + minetest.register_craft({ + output = "pipeworks:tube_valve_off 2", + recipe = { + { "pipeworks:tube_1", "homedecor:plastic_sheeting", "pipeworks:tube_1"}, + { "", "mesecons:wire_00000000_off", ""} + }, + }) + + +end
\ No newline at end of file diff --git a/extranodes/init.lua b/extranodes/init.lua index eb54067..69cb820 100644 --- a/extranodes/init.lua +++ b/extranodes/init.lua @@ -3,6 +3,23 @@ -- Boilerplate to support localized strings if intllib mod is installed. local S = rawget(_G, "intllib") and intllib.Getter() or function(s) return s end +-- some extras to the extras +local path = string.gsub(technic.modpath, "technic/technic", "technic/extranodes") +dofile(path.."/aspirin.lua") +dofile(path.."/trampoline.lua") +dofile(path.."/extratubes.lua") +dofile(path.."/extramesecons.lua") +dofile(path.."/lox.lua") + +if minetest.get_modpath("bakedclay") then + -- bring back them sticks + minetest.register_craft( { + type = "shapeless", + output = "default:stick", + recipe = {"default:dry_shrub"} + }) +end + if minetest.get_modpath("moreblocks") then -- register stairsplus/circular_saw nodes @@ -107,6 +124,7 @@ local iclip_def = { drawtype = "mesh", mesh = "technic_insulator_clip.obj", tiles = {"technic_insulator_clip.png"}, + paramtype2 = "facedir", is_ground_content = false, groups = {choppy=1, snappy=1, oddly_breakable_by_hand=1 }, sounds = default.node_sound_stone_defaults(), @@ -185,3 +203,69 @@ minetest.register_craft({ { "technic:raw_latex", "default:fence_wood", "technic:raw_latex"}, } }) + +-- Artificial diamonds + +minetest.register_craftitem(":technic:diamond_seed", { + description = S("Diamond Seed"), + inventory_image = "technic_diamond_seed.png", +}) + +minetest.register_craft({ + type = "cooking", + output = "technic:diamond_seed", + recipe = "technic:graphite" +}) + +-- Cotton seed oil: fuel and fertilizer + +if minetest.get_modpath("farming") then + if minetest.get_modpath("bonemeal") then + minetest.register_craftitem(":technic:cottonseed_oil", { + description = S("Cottonseed Oil"), + inventory_image = "technic_cottonseed_oil.png", + on_use = function(itemstack, user, pointed_thing) + if pointed_thing.type ~= "node" then + return + end + if minetest.is_protected(pointed_thing.under, user:get_player_name()) then + return + end + if not is_creative(user:get_player_name()) then + itemstack:take_item() + end + bonemeal:on_use(pointed_thing.under, 4) + return itemstack + end, + }) + else + minetest.register_craftitem(":technic:cottonseed_oil", { + description = S("Cottonseed Oil"), + inventory_image = "technic_cottonseed_oil.png", + }) + end + + minetest.register_craft({ + type = "fuel", + recipe = "technic:cottonseed_oil", + burntime = 20, + }) + +end + + +-- -- Additional recipe for straw blocks out of straw mat from cottages (if present) +-- -- not to let the centifuge output go to waste, since farming:straw can be used with a saw... +-- +-- if minetest.get_modpath("cottages") and minetest.get_modpath("farming") then +-- minetest.register_craft({ +-- output = "farming:straw 2", +-- recipe = { +-- { "cottages:straw_mat", "cottages:straw_mat", "cottages:straw_mat" }, +-- { "cottages:straw_mat", "cottages:straw_mat", "cottages:straw_mat" }, +-- { "cottages:straw_mat", "cottages:straw_mat", "cottages:straw_mat" }, +-- } +-- }) +-- end + + diff --git a/extranodes/lox.lua b/extranodes/lox.lua new file mode 100644 index 0000000..3aaadee --- /dev/null +++ b/extranodes/lox.lua @@ -0,0 +1,194 @@ +-- An small arsenal of tools to battle the lava craters + + +local S = rawget(_G, "intllib") and intllib.Getter() or function(s) return s end + +local freezing_rules = { + ["default:water_source"] = "default:ice", + ["default:water_flowing"] = "default:snowblock", + ["default:river_water_source"] = "default:ice", + ["default:river_water_flowing"] = "default:snowblock", + ["default:lava_source"] = "default:obsidian", + ["default:lava_flowing"] = "default:stone", + ["fire:basic_flame"] = "air", + ["default:dirt"] = "default:dirt_with_snow", + ["ethereal:fiery_dirt"] = "default:dirt_with_snow", + ["ethereal:mushroom_dirt"] = "default:dirt_with_snow", +} + +local function freeze(user, pos, radius) + + -- if the function is used by a node: user is a string + -- if it's called by an item, user is a PlayerRef + + if type(user) == 'string' then + if minetest.is_protected(pos, user) then + minetest.record_protection_violation(pos, user) + return + end + else + if minetest.is_protected(pos, user:get_player_name()) then + minetest.record_protection_violation(pos, user:get_player_name()) + return + end + end + + local loc = {} + local wrk = false + -- R = 2, d = 3 + -- R = 10, d = 5 + local depth = math.floor(0.25*radius+2.5) + + for y = 0,depth,1 do + for x = -radius,radius,1 do + for z = -radius,radius,1 do + loc = {x = pos.x - x, y = pos.y - y, z = pos.z - z} + if freezing_rules[minetest.get_node(loc).name] then + wrk = true + minetest.swap_node(loc, {name = freezing_rules[minetest.get_node(loc).name]}) + end + if math.random(1,5) == 5 then + if minetest.get_node({x = loc.x, y = loc.y+1, z = loc.z}).name == "air" + and minetest.get_node(loc).name ~= "air" + and minetest.get_node(loc).name ~= "stairs:slab_snowblock" then + minetest.set_node({x = loc.x, y = loc.y+1, z = loc.z}, {name = "stairs:slab_snowblock"}) + end + end + end + end + end + + if wrk then + minetest.sound_play("default_cool_lava", {gain = 1, pos = pos}) + end + + return true + +end + +minetest.register_craftitem(":technic:lox", { + description = S("Liquid Oxygen"), + tiles = {"technic_lox.png"}, + inventory_image = "technic_lox.png", + wield_image = "technic_lox.png", + paramtype = "light", + is_ground_content = false, + walkable = false, + liquids_pointable = true, + selection_box = { + type = "fixed", + fixed = {-0.25, -0.5, -0.25, 0.25, 0.3, 0.25} + }, + groups = {vessel = 1, dig_immediate = 3, attached_node = 1}, + sounds = default.node_sound_defaults(), + on_use = function(itemstack, user, pointed_thing) + if pointed_thing.type ~= "node" then + return itemstack + end + + itemstack:take_item() + + freeze(user, pointed_thing.under, 2) + + local uinv = user:get_inventory() + if uinv:room_for_item("main", "vessels:steel_bottle 1") then + uinv:add_item("main", "vessels:steel_bottle 1") + else + minetest.item_drop(ItemStack("vessels:steel_bottle 1"), user, user:getpos()) + end + + user:set_hp(user:get_hp() - 1) + + return itemstack + end +}) + +minetest.register_node(":technic:fbomb", { + description = S("F-Bomb"), + tiles = {"technic_fbomb.png"}, + paramtype = "light", + is_ground_content = false, + walkable = false, + selection_box = { + type = "fixed", + fixed = {-0.25, -0.5, -0.25, 0.25, 0.3, 0.25} + }, + groups = {dig_immediate = 2, falling_node = 1}, + sounds = default.node_sound_defaults(), + on_punch = function(pos, node, player, pointed_thing) + minetest.remove_node(pos) + minetest.place_node(pos, {name="technic:fbombact"}) + local nm = minetest.get_meta(pos) + nm:set_string("player", player:get_player_name()) + end +}) + +minetest.register_node(":technic:fbombact", { + description = S("F-Bomb Active"), + tiles = {"technic_fbombact.png"}, + paramtype = "light", + is_ground_content = false, + walkable = false, + light_source = 3, + selection_box = { + type = "fixed", + fixed = {-0.25, -0.5, -0.25, 0.25, 0.3, 0.25} + }, + groups = {falling_node = 1, cracky = 1, not_in_creative_inventory = 1}, + sounds = default.node_sound_defaults(), + on_construct = function(pos) + local nm = minetest.get_meta(pos) + local id = minetest.add_particlespawner({ + amount = 30, + time = 0, + minpos = pos, + maxpos = pos, + minvel = {x=-2, y=0, z=-2}, + maxvel = {x=2, y=0, z=2}, + minacc = {x=0, y=0, z=0}, + maxacc = {x=0.5, y=0, z=0.5}, + minexptime = 1, + maxexptime = 5, + minsize = 1, + maxsize = 4, + collisiondetection = false, + vertical = false, + texture = "technic_snowflake.png", + glow = 2 + }) + nm:set_int("id", id) + local tm = minetest.get_node_timer(pos) + tm:start(5) + end, + on_timer = function(pos, elapsed) + local nm = minetest.get_meta(pos) + local pn = nm:get_string("player") + freeze(pn, pos, 10) + minetest.remove_node(pos) + return false + end, + on_destruct = function(pos) + local nm = minetest.get_meta(pos) + if (nm:get_int("id")) then + minetest.delete_particlespawner(nm:get_int("id")) + end + end, + drop = "technic:fbomb" + +}) + +minetest.register_craft({ + output = "technic:fbomb 3", + recipe = { + { "technic:lox", "tnt:tnt", "technic:lox"}, + { "tnt:tnt", "technic:lox", "tnt:tnt"}, + { "technic:lox", "tnt:tnt", "technic:lox"} + }, + }) + +-- since there will be a significant surplus of snow slabs, a recipe for recycling is in order +minetest.register_craft({ + output = "default:snowblock", + type = "shapeless", + recipe = { "stairs:slab_snowblock", "stairs:slab_snowblock" }, + })
\ No newline at end of file diff --git a/extranodes/textures/mesecons_switch_locked_frame.png b/extranodes/textures/mesecons_switch_locked_frame.png Binary files differnew file mode 100644 index 0000000..239f97e --- /dev/null +++ b/extranodes/textures/mesecons_switch_locked_frame.png diff --git a/extranodes/textures/pipeworks_conductor_one_way_tube_input_off.png b/extranodes/textures/pipeworks_conductor_one_way_tube_input_off.png Binary files differnew file mode 100644 index 0000000..8f77487 --- /dev/null +++ b/extranodes/textures/pipeworks_conductor_one_way_tube_input_off.png diff --git a/extranodes/textures/pipeworks_conductor_one_way_tube_input_on.png b/extranodes/textures/pipeworks_conductor_one_way_tube_input_on.png Binary files differnew file mode 100644 index 0000000..85b20aa --- /dev/null +++ b/extranodes/textures/pipeworks_conductor_one_way_tube_input_on.png diff --git a/extranodes/textures/pipeworks_conductor_one_way_tube_output_off.png b/extranodes/textures/pipeworks_conductor_one_way_tube_output_off.png Binary files differnew file mode 100644 index 0000000..8f77487 --- /dev/null +++ b/extranodes/textures/pipeworks_conductor_one_way_tube_output_off.png diff --git a/extranodes/textures/pipeworks_conductor_one_way_tube_output_on.png b/extranodes/textures/pipeworks_conductor_one_way_tube_output_on.png Binary files differnew file mode 100644 index 0000000..85b20aa --- /dev/null +++ b/extranodes/textures/pipeworks_conductor_one_way_tube_output_on.png diff --git a/extranodes/textures/pipeworks_conductor_one_way_tube_side_off.png b/extranodes/textures/pipeworks_conductor_one_way_tube_side_off.png Binary files differnew file mode 100644 index 0000000..beab600 --- /dev/null +++ b/extranodes/textures/pipeworks_conductor_one_way_tube_side_off.png diff --git a/extranodes/textures/pipeworks_conductor_one_way_tube_side_on.png b/extranodes/textures/pipeworks_conductor_one_way_tube_side_on.png Binary files differnew file mode 100644 index 0000000..c0150e2 --- /dev/null +++ b/extranodes/textures/pipeworks_conductor_one_way_tube_side_on.png diff --git a/extranodes/textures/pipeworks_conductor_one_way_tube_top_off.png b/extranodes/textures/pipeworks_conductor_one_way_tube_top_off.png Binary files differnew file mode 100644 index 0000000..36c7684 --- /dev/null +++ b/extranodes/textures/pipeworks_conductor_one_way_tube_top_off.png diff --git a/extranodes/textures/pipeworks_conductor_one_way_tube_top_on.png b/extranodes/textures/pipeworks_conductor_one_way_tube_top_on.png Binary files differnew file mode 100644 index 0000000..080c09c --- /dev/null +++ b/extranodes/textures/pipeworks_conductor_one_way_tube_top_on.png diff --git a/extranodes/textures/pipeworks_straight_tube_input.png b/extranodes/textures/pipeworks_straight_tube_input.png Binary files differnew file mode 100644 index 0000000..8490858 --- /dev/null +++ b/extranodes/textures/pipeworks_straight_tube_input.png diff --git a/extranodes/textures/pipeworks_straight_tube_output.png b/extranodes/textures/pipeworks_straight_tube_output.png Binary files differnew file mode 100644 index 0000000..8490858 --- /dev/null +++ b/extranodes/textures/pipeworks_straight_tube_output.png diff --git a/extranodes/textures/pipeworks_straight_tube_side.png b/extranodes/textures/pipeworks_straight_tube_side.png Binary files differnew file mode 100644 index 0000000..4e03b3d --- /dev/null +++ b/extranodes/textures/pipeworks_straight_tube_side.png diff --git a/extranodes/textures/pipeworks_tube_valve_side_off.png b/extranodes/textures/pipeworks_tube_valve_side_off.png Binary files differnew file mode 100644 index 0000000..56186e6 --- /dev/null +++ b/extranodes/textures/pipeworks_tube_valve_side_off.png diff --git a/extranodes/textures/pipeworks_tube_valve_side_on.png b/extranodes/textures/pipeworks_tube_valve_side_on.png Binary files differnew file mode 100644 index 0000000..f25ad9c --- /dev/null +++ b/extranodes/textures/pipeworks_tube_valve_side_on.png diff --git a/extranodes/textures/technic_aspirin_bottle.png b/extranodes/textures/technic_aspirin_bottle.png Binary files differnew file mode 100644 index 0000000..64c2b03 --- /dev/null +++ b/extranodes/textures/technic_aspirin_bottle.png diff --git a/extranodes/textures/technic_aspirin_pill.png b/extranodes/textures/technic_aspirin_pill.png Binary files differnew file mode 100644 index 0000000..f7fccb8 --- /dev/null +++ b/extranodes/textures/technic_aspirin_pill.png diff --git a/extranodes/textures/technic_cottonseed_oil.png b/extranodes/textures/technic_cottonseed_oil.png Binary files differnew file mode 100644 index 0000000..be4550e --- /dev/null +++ b/extranodes/textures/technic_cottonseed_oil.png diff --git a/extranodes/textures/technic_fbomb.png b/extranodes/textures/technic_fbomb.png Binary files differnew file mode 100644 index 0000000..edae1a1 --- /dev/null +++ b/extranodes/textures/technic_fbomb.png diff --git a/extranodes/textures/technic_fbombact.png b/extranodes/textures/technic_fbombact.png Binary files differnew file mode 100644 index 0000000..061f23f --- /dev/null +++ b/extranodes/textures/technic_fbombact.png diff --git a/extranodes/textures/technic_lox.png b/extranodes/textures/technic_lox.png Binary files differnew file mode 100644 index 0000000..341cba3 --- /dev/null +++ b/extranodes/textures/technic_lox.png diff --git a/extranodes/textures/technic_snowflake.png b/extranodes/textures/technic_snowflake.png Binary files differnew file mode 100644 index 0000000..1e039af --- /dev/null +++ b/extranodes/textures/technic_snowflake.png diff --git a/extranodes/trampoline.lua b/extranodes/trampoline.lua new file mode 100644 index 0000000..d36e356 --- /dev/null +++ b/extranodes/trampoline.lua @@ -0,0 +1,94 @@ +-- bouncy-bouncy +-- this adds two useful kinds of nodes. Two fall damage dampeners (50% and 100%) +-- and a trampoline. Unlike on the mushroom spores from ethereal, players can +-- freely jump on the dampeners. +-- The latex foam adds use to sulphur, and may be employed for something else later. + +local S = rawget(_G, "intllib") and intllib.Getter() or function(s) return s end + + +minetest.register_craftitem(":technic:latex_foam", { + description = S("Latex Foam"), + inventory_image = "technic_latex_foam.png", +}) + +minetest.register_node(":technic:fall_dampener_50", { + description = S("Fall Dampener 50%"), + drawtype = "nodebox", + node_box = { + type = "fixed", + fixed = {-0.5,-0.5,-0.5,0.5,0,0.5} + }, + collision_box = { + type = "fixed", + fixed = {-0.5,-0.5,-0.5,0.5,0,0.5} + }, + selection_box = { + type = "fixed", + fixed = {-0.5,-0.5,-0.5,0.5,0,0.5} + }, + tiles = { "technic_fall_dampener_top.png", + "technic_fall_dampener_bottom.png", + "technic_fall_dampener_side.png", + "technic_fall_dampener_side.png", + "technic_fall_dampener_side.png", + "technic_fall_dampener_side.png"}, + groups = {crumbly = 3, fall_damage_add_percent = -50}, + sounds = default.node_sound_dirt_defaults(), +}) + +minetest.register_node(":technic:fall_dampener_100", { + description = S("Fall Dampener 100%"), + drawtype = "normal", + tiles = {"technic_fall_dampener_top.png", + "technic_fall_dampener_bottom.png", + "technic_fall_dampener_side.png", + "technic_fall_dampener_side.png", + "technic_fall_dampener_side.png", + "technic_fall_dampener_side.png"}, + groups = {crumbly = 3, fall_damage_add_percent = -100}, + sounds = default.node_sound_dirt_defaults(), +}) + +minetest.register_node(":technic:trampoline", { + description = S("Trampoline"), + drawtype = "normal", + tiles = {"technic_trampoline_top.png", + "technic_fall_dampener_bottom.png", -- cost cuts + "technic_trampoline_side.png", + "technic_trampoline_side.png", + "technic_trampoline_side.png", + "technic_trampoline_side.png"}, + groups = {crumbly = 3, bouncy = 100, fall_damage_add_percent = -100}, + sounds = {footstep = {name = "trampoline_boing", gain = 1.0}} +}) + + +minetest.register_craft({ + output = "technic:fall_dampener_50", + recipe = { + { "", "", ""}, + { "technic:raw_latex", "technic:raw_latex", "technic:raw_latex"}, + { "technic:latex_foam", "technic:latex_foam", "technic:latex_foam"}, + } +}) + +minetest.register_craft({ + output = "technic:fall_dampener_100", + recipe = { + { "technic:raw_latex", "technic:raw_latex", "technic:raw_latex"}, + { "technic:latex_foam", "technic:latex_foam", "technic:latex_foam"}, + { "technic:latex_foam", "technic:latex_foam", "technic:latex_foam"}, + } +}) + +minetest.register_craft({ + output = "technic:trampoline", + recipe = { + { "dye:green", "dye:green", "dye:green"}, + { "technic:rubber", "technic:rubber", "technic:rubber"}, + { "technic:rubber", "technic:rubber", "technic:rubber"}, + } +}) + + |