mirror of
https://github.com/joe7575/techpack.git
synced 2024-11-25 16:43:50 +01:00
New mod tubelib_stairway added,
further bug fixes and improvements
This commit is contained in:
parent
c5f8e29f10
commit
667739acfe
18
README.md
18
README.md
@ -5,19 +5,9 @@
|
|||||||
**For your world use the stable release ![v1.16](https://github.com/joe7575/techpack/releases/tag/v1.16)**
|
**For your world use the stable release ![v1.16](https://github.com/joe7575/techpack/releases/tag/v1.16)**
|
||||||
|
|
||||||
|
|
||||||
## Planned for v2
|
## Current v2 state
|
||||||
- switch to library tubelib2
|
|
||||||
- introduce a new machine state model
|
|
||||||
- add new machine state "defect"
|
|
||||||
- add a tubelib Repair Kit for defect blocks
|
|
||||||
- Forceload block as part of tubelib
|
|
||||||
- support for intllib
|
|
||||||
- optionally disable the cobble/ore generation
|
|
||||||
|
|
||||||
|
|
||||||
## Current state
|
|
||||||
- Switch to tubelib2 is done (not fully tested).
|
- Switch to tubelib2 is done (not fully tested).
|
||||||
- Pusher, Distributor, and Grinder already support the new state 'defect'.
|
- Almost all machines already support the new state 'defect'.
|
||||||
- The Repair Kit is available and can be used to repair defect machines.
|
- The Repair Kit is available and can be used to repair defect machines.
|
||||||
- The mod 'basic_materials' is now needed for some new recipes.
|
- The mod 'basic_materials' is now needed for some new recipes.
|
||||||
- Due to server crashes I can happen that all loaded nodes loose their timers. Therefore, all "timed" nodes got an "on_node_load" function, which is used to restart the timer.
|
- Due to server crashes I can happen that all loaded nodes loose their timers. Therefore, all "timed" nodes got an "on_node_load" function, which is used to restart the timer.
|
||||||
@ -26,12 +16,12 @@
|
|||||||
The cobble generation produces Basalt Stone which can be crafted to Basalt Stone Blocks and Basalt Stone Bricks
|
The cobble generation produces Basalt Stone which can be crafted to Basalt Stone Blocks and Basalt Stone Bricks
|
||||||
- Quarry now uses LVM techniques to go down up to 100 meter
|
- Quarry now uses LVM techniques to go down up to 100 meter
|
||||||
- settingtypes introduced with the following settings: tubelib_max_num_forceload_blocks, tubelib_basalt_stone_enabled, tubelib_machine_aging_value
|
- settingtypes introduced with the following settings: tubelib_max_num_forceload_blocks, tubelib_basalt_stone_enabled, tubelib_machine_aging_value
|
||||||
|
- Ladders, stairways, and bridges (tubelib_stairway)
|
||||||
|
|
||||||
|
|
||||||
## To Do
|
## To Do
|
||||||
- adapt API.md
|
- adapt API.md
|
||||||
- revise Wiki
|
- revise Wiki
|
||||||
- expand controllers by the state defect
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -53,7 +43,7 @@ TechPack is a collection of following Mods:
|
|||||||
* safer_lua, a subset of the language Lua for safe and secure Lua sandboxes
|
* safer_lua, a subset of the language Lua for safe and secure Lua sandboxes
|
||||||
* SaferLua Controller - a controller to be programmed in LUA
|
* SaferLua Controller - a controller to be programmed in LUA
|
||||||
* lcdlib - a display lib used by smartline
|
* lcdlib - a display lib used by smartline
|
||||||
|
* tubelib_stairway - Ladders, stairways, and bridges for machines
|
||||||
|
|
||||||
**A TechPack Tutorial is available as ![Wiki](https://github.com/joe7575/techpack/wiki)**
|
**A TechPack Tutorial is available as ![Wiki](https://github.com/joe7575/techpack/wiki)**
|
||||||
|
|
||||||
|
@ -53,8 +53,8 @@ local PROBABILITY_FACTOR = 3
|
|||||||
local AGING_LEVEL1 = nil
|
local AGING_LEVEL1 = nil
|
||||||
local AGING_LEVEL2 = nil
|
local AGING_LEVEL2 = nil
|
||||||
if minetest.get_modpath("tubelib") and tubelib ~= nil then
|
if minetest.get_modpath("tubelib") and tubelib ~= nil then
|
||||||
AGING_LEVEL1 = 1 * tubelib.machine_aging_value
|
AGING_LEVEL1 = 10 * tubelib.machine_aging_value
|
||||||
AGING_LEVEL2 = 3 * tubelib.machine_aging_value
|
AGING_LEVEL2 = 30 * tubelib.machine_aging_value
|
||||||
end
|
end
|
||||||
|
|
||||||
-- Ore probability table (1/n)
|
-- Ore probability table (1/n)
|
||||||
|
@ -256,7 +256,7 @@ smartline.register_condition("pusher", {
|
|||||||
type = "textlist",
|
type = "textlist",
|
||||||
name = "value",
|
name = "value",
|
||||||
label = "is",
|
label = "is",
|
||||||
choices = "stopped,running,standby,blocked,fault,false",
|
choices = "stopped,running,standby,blocked,fault,defect,false",
|
||||||
default = 1,
|
default = 1,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -163,7 +163,7 @@ smartline.icta_register_condition("state", {
|
|||||||
type = "textlist",
|
type = "textlist",
|
||||||
name = "value",
|
name = "value",
|
||||||
label = "",
|
label = "",
|
||||||
choices = "stopped,running,standby,blocked,fault",
|
choices = "stopped,running,standby,blocked,defect,fault,never",
|
||||||
default = "stopped",
|
default = "stopped",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -446,9 +446,9 @@ minetest.register_node("tubelib:distributor_defect", {
|
|||||||
meta:set_string("item_counter", minetest.serialize({red=0, green=0, blue=0, yellow=0}))
|
meta:set_string("item_counter", minetest.serialize({red=0, green=0, blue=0, yellow=0}))
|
||||||
State:defect(pos, meta)
|
State:defect(pos, meta)
|
||||||
end,
|
end,
|
||||||
|
|
||||||
on_receive_fields = on_receive_fields,
|
on_receive_fields = on_receive_fields,
|
||||||
|
|
||||||
allow_metadata_inventory_put = allow_metadata_inventory_put,
|
allow_metadata_inventory_put = allow_metadata_inventory_put,
|
||||||
allow_metadata_inventory_take = allow_metadata_inventory_take,
|
allow_metadata_inventory_take = allow_metadata_inventory_take,
|
||||||
allow_metadata_inventory_move = allow_metadata_inventory_move,
|
allow_metadata_inventory_move = allow_metadata_inventory_move,
|
||||||
|
@ -138,7 +138,7 @@ minetest.register_node("tubelib_addons1:liquidsampler", {
|
|||||||
},
|
},
|
||||||
|
|
||||||
after_place_node = function(pos, placer)
|
after_place_node = function(pos, placer)
|
||||||
local number = tubelib.add_node(pos, "tubelib_addons1:grinder")
|
local number = tubelib.add_node(pos, "ttubelib_addons1:liquidsampler")
|
||||||
State:node_init(pos, number)
|
State:node_init(pos, number)
|
||||||
local meta = M(pos)
|
local meta = M(pos)
|
||||||
local node = minetest.get_node(pos)
|
local node = minetest.get_node(pos)
|
||||||
|
@ -46,16 +46,16 @@ local State = tubelib.NodeStates:new({
|
|||||||
cycle_time = CYCLE_TIME,
|
cycle_time = CYCLE_TIME,
|
||||||
standby_ticks = STANDBY_TICKS,
|
standby_ticks = STANDBY_TICKS,
|
||||||
has_item_meter = true,
|
has_item_meter = true,
|
||||||
aging_factor = 10,
|
aging_factor = 30,
|
||||||
})
|
})
|
||||||
|
|
||||||
local function pushing(pos, meta)
|
local function pushing(pos, meta)
|
||||||
local player_name = meta:get_string("player_name")
|
local player_name = meta:get_string("player_name")
|
||||||
local items = tubelib.pull_items(pos, "L", player_name) -- <<=== tubelib
|
local items = tubelib.pull_items(pos, "L", player_name)
|
||||||
if items ~= nil then
|
if items ~= nil then
|
||||||
if tubelib.push_items(pos, "R", items, player_name) == false then -- <<=== tubelib
|
if tubelib.push_items(pos, "R", items, player_name) == false then
|
||||||
-- place item back
|
-- place item back
|
||||||
tubelib.unpull_items(pos, "L", items, player_name) -- <<=== tubelib
|
tubelib.unpull_items(pos, "L", items, player_name)
|
||||||
State:blocked(pos, meta)
|
State:blocked(pos, meta)
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
@ -86,7 +86,7 @@ minetest.register_node("tubelib_addons1:pusher_fast", {
|
|||||||
after_place_node = function(pos, placer)
|
after_place_node = function(pos, placer)
|
||||||
local meta = minetest.get_meta(pos)
|
local meta = minetest.get_meta(pos)
|
||||||
meta:set_string("player_name", placer:get_player_name())
|
meta:set_string("player_name", placer:get_player_name())
|
||||||
local number = tubelib.add_node(pos, "tubelib_addons1:pusher_fast") -- <<=== tubelib
|
local number = tubelib.add_node(pos, "tubelib_addons1:pusher_fast")
|
||||||
State:node_init(pos, number)
|
State:node_init(pos, number)
|
||||||
end,
|
end,
|
||||||
|
|
||||||
@ -97,7 +97,7 @@ minetest.register_node("tubelib_addons1:pusher_fast", {
|
|||||||
end,
|
end,
|
||||||
|
|
||||||
after_dig_node = function(pos, oldnode, oldmetadata, digger)
|
after_dig_node = function(pos, oldnode, oldmetadata, digger)
|
||||||
tubelib.remove_node(pos) -- <<=== tubelib
|
tubelib.remove_node(pos)
|
||||||
State:after_dig_node(pos, oldnode, oldmetadata, digger)
|
State:after_dig_node(pos, oldnode, oldmetadata, digger)
|
||||||
end,
|
end,
|
||||||
|
|
||||||
@ -194,13 +194,13 @@ minetest.register_node("tubelib_addons1:pusher_fast_defect", {
|
|||||||
after_place_node = function(pos, placer)
|
after_place_node = function(pos, placer)
|
||||||
local meta = minetest.get_meta(pos)
|
local meta = minetest.get_meta(pos)
|
||||||
meta:set_string("player_name", placer:get_player_name())
|
meta:set_string("player_name", placer:get_player_name())
|
||||||
local number = tubelib.add_node(pos, "tubelib_addons1:pusher") -- <<=== tubelib
|
local number = tubelib.add_node(pos, "tubelib_addons1:pusher_fast")
|
||||||
State:node_init(pos, number)
|
State:node_init(pos, number)
|
||||||
State:defect(pos, meta)
|
State:defect(pos, meta)
|
||||||
end,
|
end,
|
||||||
|
|
||||||
after_dig_node = function(pos)
|
after_dig_node = function(pos)
|
||||||
tubelib.remove_node(pos) -- <<=== tubelib
|
tubelib.remove_node(pos)
|
||||||
end,
|
end,
|
||||||
|
|
||||||
on_timer = keep_running,
|
on_timer = keep_running,
|
||||||
@ -224,7 +224,6 @@ minetest.register_craft({
|
|||||||
},
|
},
|
||||||
})
|
})
|
||||||
|
|
||||||
--------------------------------------------------------------- tubelib
|
|
||||||
tubelib.register_node("tubelib_addons1:pusher_fast",
|
tubelib.register_node("tubelib_addons1:pusher_fast",
|
||||||
{"tubelib_addons1:pusher_fast_active", "tubelib_addons1:pusher_fast_defect"}, {
|
{"tubelib_addons1:pusher_fast_active", "tubelib_addons1:pusher_fast_defect"}, {
|
||||||
on_pull_item = nil, -- pusher has no inventory
|
on_pull_item = nil, -- pusher has no inventory
|
||||||
@ -247,4 +246,3 @@ tubelib.register_node("tubelib_addons1:pusher_fast",
|
|||||||
return State:on_node_repair(pos)
|
return State:on_node_repair(pos)
|
||||||
end,
|
end,
|
||||||
})
|
})
|
||||||
--------------------------------------------------------------- tubelib
|
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
Tubelib Addons 3
|
Tubelib Addons 3
|
||||||
================
|
================
|
||||||
|
|
||||||
Copyright (C) 2018 Joachim Stolberg
|
Copyright (C) 2018-2019 Joachim Stolberg
|
||||||
|
|
||||||
LGPLv2.1+
|
LGPLv2.1+
|
||||||
See LICENSE.txt for more information
|
See LICENSE.txt for more information
|
||||||
@ -111,6 +111,38 @@ local function random_list_elem(list)
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
local Side2Color = {B="red", L="green", F="blue", R="yellow"}
|
||||||
|
local SlotColors = {"red", "green", "blue", "yellow"}
|
||||||
|
local Num2Ascii = {"B", "L", "F", "R"}
|
||||||
|
local FilterCache = {} -- local cache for filter settings
|
||||||
|
|
||||||
|
local function filter_settings(pos)
|
||||||
|
local hash = minetest.hash_node_position(pos)
|
||||||
|
local meta = M(pos)
|
||||||
|
local inv = meta:get_inventory()
|
||||||
|
local filter = minetest.deserialize(meta:get_string("filter")) or {false,false,false,false}
|
||||||
|
local kvFilterItemNames = {} -- {<item:name> = side,...}
|
||||||
|
local OpenPorts = {} -- {side, ...}
|
||||||
|
|
||||||
|
-- collect all filter settings
|
||||||
|
for idx,slot in ipairs(SlotColors) do
|
||||||
|
local side = Num2Ascii[idx]
|
||||||
|
if filter[idx] == true then
|
||||||
|
local list = inv:get_list(slot)
|
||||||
|
local filter = invlist_entries_as_list(list)
|
||||||
|
AddToTbl(kvFilterItemNames, filter, side)
|
||||||
|
if not next(filter) then
|
||||||
|
OpenPorts[#OpenPorts + 1] = side
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
FilterCache[hash] = {
|
||||||
|
kvFilterItemNames = kvFilterItemNames,
|
||||||
|
OpenPorts = OpenPorts,
|
||||||
|
}
|
||||||
|
end
|
||||||
|
|
||||||
local function allow_metadata_inventory_put(pos, listname, index, stack, player)
|
local function allow_metadata_inventory_put(pos, listname, index, stack, player)
|
||||||
local meta = M(pos)
|
local meta = M(pos)
|
||||||
local inv = meta:get_inventory()
|
local inv = meta:get_inventory()
|
||||||
@ -146,38 +178,6 @@ local function allow_metadata_inventory_move(pos, from_list, from_index, to_list
|
|||||||
return allow_metadata_inventory_put(pos, to_list, to_index, stack, player)
|
return allow_metadata_inventory_put(pos, to_list, to_index, stack, player)
|
||||||
end
|
end
|
||||||
|
|
||||||
local Side2Color = {B="red", L="green", F="blue", R="yellow"}
|
|
||||||
local SlotColors = {"red", "green", "blue", "yellow"}
|
|
||||||
local Num2Ascii = {"B", "L", "F", "R"}
|
|
||||||
local FilterCache = {} -- local cache for filter settings
|
|
||||||
|
|
||||||
local function filter_settings(pos)
|
|
||||||
local hash = minetest.hash_node_position(pos)
|
|
||||||
local meta = M(pos)
|
|
||||||
local inv = meta:get_inventory()
|
|
||||||
local filter = minetest.deserialize(meta:get_string("filter")) or {false,false,false,false}
|
|
||||||
local kvFilterItemNames = {} -- {<item:name> = side,...}
|
|
||||||
local OpenPorts = {} -- {side, ...}
|
|
||||||
|
|
||||||
-- collect all filter settings
|
|
||||||
for idx,slot in ipairs(SlotColors) do
|
|
||||||
local side = Num2Ascii[idx]
|
|
||||||
if filter[idx] == true then
|
|
||||||
local list = inv:get_list(slot)
|
|
||||||
local filter = invlist_entries_as_list(list)
|
|
||||||
AddToTbl(kvFilterItemNames, filter, side)
|
|
||||||
if not next(filter) then
|
|
||||||
OpenPorts[#OpenPorts + 1] = side
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
FilterCache[hash] = {
|
|
||||||
kvFilterItemNames = kvFilterItemNames,
|
|
||||||
OpenPorts = OpenPorts,
|
|
||||||
}
|
|
||||||
end
|
|
||||||
|
|
||||||
-- move items to the output slots
|
-- move items to the output slots
|
||||||
local function distributing(pos, meta)
|
local function distributing(pos, meta)
|
||||||
local player_name = meta:get_string("player_name")
|
local player_name = meta:get_string("player_name")
|
||||||
@ -438,7 +438,7 @@ minetest.register_node("tubelib_addons3:distributor_defect", {
|
|||||||
allow_metadata_inventory_move = allow_metadata_inventory_move,
|
allow_metadata_inventory_move = allow_metadata_inventory_move,
|
||||||
|
|
||||||
on_rotate = screwdriver.disallow,
|
on_rotate = screwdriver.disallow,
|
||||||
|
|
||||||
paramtype = "light",
|
paramtype = "light",
|
||||||
sunlight_propagates = true,
|
sunlight_propagates = true,
|
||||||
paramtype2 = "facedir",
|
paramtype2 = "facedir",
|
||||||
|
@ -31,7 +31,7 @@ local State = tubelib.NodeStates:new({
|
|||||||
cycle_time = CYCLE_TIME,
|
cycle_time = CYCLE_TIME,
|
||||||
standby_ticks = STANDBY_TICKS,
|
standby_ticks = STANDBY_TICKS,
|
||||||
has_item_meter = true,
|
has_item_meter = true,
|
||||||
aging_factor = 10,
|
aging_factor = 60,
|
||||||
})
|
})
|
||||||
|
|
||||||
local function pushing(pos, meta)
|
local function pushing(pos, meta)
|
||||||
|
2
tubelib_stairway/depends.txt
Normal file
2
tubelib_stairway/depends.txt
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
default
|
||||||
|
|
2
tubelib_stairway/description.txt
Normal file
2
tubelib_stairway/description.txt
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
Simple stairways and bridges for your machines.
|
||||||
|
|
283
tubelib_stairway/init.lua
Normal file
283
tubelib_stairway/init.lua
Normal file
@ -0,0 +1,283 @@
|
|||||||
|
minetest.register_node("tubelib_stairway:bridge1", {
|
||||||
|
description = "Tubelib Bridge 1",
|
||||||
|
tiles = {
|
||||||
|
'tubelib_stairway_bottom.png',
|
||||||
|
'tubelib_stairway_bottom.png',
|
||||||
|
'tubelib_stairway_side.png',
|
||||||
|
},
|
||||||
|
drawtype = "nodebox",
|
||||||
|
node_box = {
|
||||||
|
type = "fixed",
|
||||||
|
fixed = {
|
||||||
|
{ 15/32, -17/32, -17/32, 17/32, 17/32, 17/32},
|
||||||
|
{-17/32, -17/32, -17/32, -15/32, 17/32, 17/32},
|
||||||
|
{-17/32, -17/32, -17/32, 17/32, -14/32, 17/32}
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
|
selection_box = {
|
||||||
|
type = "fixed",
|
||||||
|
fixed = {
|
||||||
|
{-16/32, -16/32, -16/32, 16/32, -14/32, 16/32},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
|
--climbable = true,
|
||||||
|
paramtype2 = "facedir",
|
||||||
|
paramtype = "light",
|
||||||
|
sunlight_propagates = true,
|
||||||
|
use_texture_alpha = true,
|
||||||
|
is_ground_content = false,
|
||||||
|
groups = {cracky = 2},
|
||||||
|
sounds = default.node_sound_metal_defaults(),
|
||||||
|
})
|
||||||
|
|
||||||
|
minetest.register_node("tubelib_stairway:bridge2", {
|
||||||
|
description = "Tubelib Bridge 2",
|
||||||
|
tiles = {
|
||||||
|
'tubelib_stairway_bottom.png',
|
||||||
|
'tubelib_stairway_bottom.png',
|
||||||
|
'tubelib_stairway_side.png',
|
||||||
|
},
|
||||||
|
drawtype = "nodebox",
|
||||||
|
node_box = {
|
||||||
|
type = "fixed",
|
||||||
|
fixed = {
|
||||||
|
{-17/32, -17/32, -17/32, -15/32, 17/32, 17/32},
|
||||||
|
{-17/32, -17/32, -17/32, 17/32, -14/32, 17/32}
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
|
selection_box = {
|
||||||
|
type = "fixed",
|
||||||
|
fixed = {
|
||||||
|
{-16/32, -16/32, -16/32, 16/32, -14/32, 16/32},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
|
--climbable = true,
|
||||||
|
paramtype2 = "facedir",
|
||||||
|
paramtype = "light",
|
||||||
|
sunlight_propagates = true,
|
||||||
|
is_ground_content = false,
|
||||||
|
groups = {cracky = 2},
|
||||||
|
sounds = default.node_sound_metal_defaults(),
|
||||||
|
})
|
||||||
|
|
||||||
|
minetest.register_node("tubelib_stairway:bridge3", {
|
||||||
|
description = "Tubelib Bridge 3",
|
||||||
|
tiles = {
|
||||||
|
'tubelib_stairway_bottom.png',
|
||||||
|
'tubelib_stairway_bottom.png',
|
||||||
|
'tubelib_stairway_side.png',
|
||||||
|
},
|
||||||
|
drawtype = "nodebox",
|
||||||
|
node_box = {
|
||||||
|
type = "fixed",
|
||||||
|
fixed = {
|
||||||
|
{-17/32, -17/32, 15/32, 17/32, 17/32, 17/32},
|
||||||
|
{ 15/32, -17/32, -17/32, 17/32, 17/32, 17/32},
|
||||||
|
{-17/32, -17/32, -17/32, -15/32, 17/32, 17/32},
|
||||||
|
{-17/32, -17/32, -17/32, 17/32, -14/32, 17/32}
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
|
selection_box = {
|
||||||
|
type = "fixed",
|
||||||
|
fixed = {
|
||||||
|
{-16/32, -16/32, -16/32, 16/32, -14/32, 16/32},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
|
--climbable = true,
|
||||||
|
paramtype2 = "facedir",
|
||||||
|
paramtype = "light",
|
||||||
|
sunlight_propagates = true,
|
||||||
|
is_ground_content = false,
|
||||||
|
groups = {cracky = 2},
|
||||||
|
sounds = default.node_sound_metal_defaults(),
|
||||||
|
})
|
||||||
|
|
||||||
|
minetest.register_node("tubelib_stairway:bridge4", {
|
||||||
|
description = "Tubelib Bridge 4",
|
||||||
|
tiles = {
|
||||||
|
'tubelib_stairway_bottom.png',
|
||||||
|
'tubelib_stairway_bottom.png',
|
||||||
|
'tubelib_stairway_side.png',
|
||||||
|
},
|
||||||
|
drawtype = "nodebox",
|
||||||
|
node_box = {
|
||||||
|
type = "fixed",
|
||||||
|
fixed = {
|
||||||
|
{-17/32, -17/32, 15/32, 17/32, 17/32, 17/32},
|
||||||
|
{-17/32, -17/32, -17/32, -15/32, 17/32, 17/32},
|
||||||
|
{-17/32, -17/32, -17/32, 17/32, -14/32, 17/32}
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
|
selection_box = {
|
||||||
|
type = "fixed",
|
||||||
|
fixed = {
|
||||||
|
{-16/32, -16/32, -16/32, 16/32, -14/32, 16/32},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
|
--climbable = true,
|
||||||
|
paramtype2 = "facedir",
|
||||||
|
paramtype = "light",
|
||||||
|
sunlight_propagates = true,
|
||||||
|
is_ground_content = false,
|
||||||
|
groups = {cracky = 2},
|
||||||
|
sounds = default.node_sound_metal_defaults(),
|
||||||
|
})
|
||||||
|
minetest.register_node("tubelib_stairway:stairway", {
|
||||||
|
description = "Tubelib Stairway",
|
||||||
|
tiles = {
|
||||||
|
'tubelib_stairway_steps.png',
|
||||||
|
'tubelib_stairway_steps.png',
|
||||||
|
'tubelib_stairway_side.png',
|
||||||
|
},
|
||||||
|
drawtype = "nodebox",
|
||||||
|
node_box = {
|
||||||
|
type = "fixed",
|
||||||
|
fixed = {
|
||||||
|
{ 15/32, -1/32, -1/32, 17/32, 49/32, 17/32},
|
||||||
|
{-17/32, -1/32, -1/32, -15/32, 49/32, 17/32},
|
||||||
|
{-17/32, -1/32, -1/32, 17/32, 1/32, 17/32},
|
||||||
|
|
||||||
|
{ 15/32, -17/32, -17/32, 17/32, 33/32, 1/32},
|
||||||
|
{-17/32, -17/32, -17/32, -15/32, 33/32, 1/32},
|
||||||
|
{-17/32, -17/32, -17/32, 17/32, -15/32, 1/32},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
|
selection_box = {
|
||||||
|
type = "fixed",
|
||||||
|
fixed = {
|
||||||
|
{-17/32, -1/32, -1/32, 17/32, 1/32, 17/32},
|
||||||
|
{-17/32, -17/32, -17/32, 17/32, -15/32, 1/32},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
|
--climbable = true,
|
||||||
|
paramtype2 = "facedir",
|
||||||
|
paramtype = "light",
|
||||||
|
sunlight_propagates = true,
|
||||||
|
is_ground_content = false,
|
||||||
|
groups = {cracky = 2},
|
||||||
|
sounds = default.node_sound_metal_defaults(),
|
||||||
|
})
|
||||||
|
|
||||||
|
minetest.register_node("tubelib_stairway:ladder1", {
|
||||||
|
description = "Tubelib Ladder 1",
|
||||||
|
tiles = {
|
||||||
|
'tubelib_stairway_steps.png',
|
||||||
|
'tubelib_stairway_steps.png',
|
||||||
|
'tubelib_stairway_ladder.png',
|
||||||
|
},
|
||||||
|
drawtype = "nodebox",
|
||||||
|
node_box = {
|
||||||
|
type = "fixed",
|
||||||
|
fixed = {
|
||||||
|
{-17/32, -17/32, 15/32, 17/32, 17/32, 17/32},
|
||||||
|
{-17/32, -17/32, -17/32, -15/32, 17/32, 17/32},
|
||||||
|
{-17/32, -17/32, -17/32, 17/32, 17/32, -15/32},
|
||||||
|
{ 15/32, -17/32, -17/32, 17/32, 17/32, 17/32},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
selection_box = {
|
||||||
|
type = "fixed",
|
||||||
|
fixed = {-8/16, -8/16, -8/16, 8/16, 8/16, 8/16},
|
||||||
|
},
|
||||||
|
|
||||||
|
climbable = true,
|
||||||
|
paramtype2 = "facedir",
|
||||||
|
paramtype = "light",
|
||||||
|
sunlight_propagates = true,
|
||||||
|
is_ground_content = false,
|
||||||
|
groups = {cracky = 2},
|
||||||
|
sounds = default.node_sound_metal_defaults(),
|
||||||
|
})
|
||||||
|
|
||||||
|
minetest.register_node("tubelib_stairway:ladder2", {
|
||||||
|
description = "Tubelib Ladder 2",
|
||||||
|
tiles = {
|
||||||
|
'tubelib_stairway_steps.png',
|
||||||
|
'tubelib_stairway_steps.png',
|
||||||
|
'tubelib_stairway_ladder.png',
|
||||||
|
},
|
||||||
|
drawtype = "nodebox",
|
||||||
|
node_box = {
|
||||||
|
type = "fixed",
|
||||||
|
fixed = {
|
||||||
|
{-17/32, -17/32, 15/32, 17/32, 17/32, 17/32},
|
||||||
|
{-17/32, -17/32, -17/32, -15/32, 17/32, 17/32},
|
||||||
|
--{-17/32, -17/32, -17/32, 17/32, 17/32, -15/32},
|
||||||
|
{ 15/32, -17/32, -17/32, 17/32, 17/32, 17/32},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
|
selection_box = {
|
||||||
|
type = "fixed",
|
||||||
|
fixed = {-8/16, -8/16, -8/16, 8/16, 8/16, 8/16},
|
||||||
|
},
|
||||||
|
|
||||||
|
climbable = true,
|
||||||
|
paramtype2 = "facedir",
|
||||||
|
paramtype = "light",
|
||||||
|
sunlight_propagates = true,
|
||||||
|
is_ground_content = false,
|
||||||
|
groups = {cracky = 2},
|
||||||
|
sounds = default.node_sound_metal_defaults(),
|
||||||
|
})
|
||||||
|
|
||||||
|
minetest.register_craft({
|
||||||
|
output = "tubelib_stairway:bridge1",
|
||||||
|
recipe = {
|
||||||
|
{"", "", ""},
|
||||||
|
{"dye:dark_grey", "", "default:coal_lump"},
|
||||||
|
{"default:steel_ingot", "default:tin_ingot", "default:steel_ingot"},
|
||||||
|
},
|
||||||
|
})
|
||||||
|
|
||||||
|
minetest.register_craft({
|
||||||
|
output = "tubelib_stairway:bridge3",
|
||||||
|
recipe = {
|
||||||
|
{"", "", ""},
|
||||||
|
{"default:coal_lump", "", "dye:dark_grey"},
|
||||||
|
{"default:steel_ingot", "default:tin_ingot", "default:steel_ingot"},
|
||||||
|
},
|
||||||
|
})
|
||||||
|
|
||||||
|
minetest.register_craft({
|
||||||
|
output = "tubelib_stairway:stairway",
|
||||||
|
recipe = {
|
||||||
|
{"", "", "default:steel_ingot"},
|
||||||
|
{"dye:dark_grey", "default:tin_ingot", "default:coal_lump"},
|
||||||
|
{"default:steel_ingot", "", ""},
|
||||||
|
},
|
||||||
|
})
|
||||||
|
|
||||||
|
minetest.register_craft({
|
||||||
|
output = "tubelib_stairway:ladder1",
|
||||||
|
recipe = {
|
||||||
|
{"", "default:steel_ingot", ""},
|
||||||
|
{"dye:dark_grey", "default:tin_ingot", "default:coal_lump"},
|
||||||
|
{"", "default:steel_ingot", ""},
|
||||||
|
},
|
||||||
|
})
|
||||||
|
|
||||||
|
minetest.register_craft({
|
||||||
|
output = "tubelib_stairway:ladder2",
|
||||||
|
recipe = {{"tubelib_stairway:ladder1"}},
|
||||||
|
})
|
||||||
|
|
||||||
|
minetest.register_craft({
|
||||||
|
output = "tubelib_stairway:bridge2",
|
||||||
|
recipe = {{"tubelib_stairway:bridge1"}},
|
||||||
|
})
|
||||||
|
|
||||||
|
minetest.register_craft({
|
||||||
|
output = "tubelib_stairway:bridge4",
|
||||||
|
recipe = {{"tubelib_stairway:bridge3"}},
|
||||||
|
})
|
2
tubelib_stairway/mod.conf
Normal file
2
tubelib_stairway/mod.conf
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
name=tubelib_stairway
|
||||||
|
|
BIN
tubelib_stairway/textures/tubelib_stairway_bottom.png
Normal file
BIN
tubelib_stairway/textures/tubelib_stairway_bottom.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 311 B |
BIN
tubelib_stairway/textures/tubelib_stairway_grating.png
Normal file
BIN
tubelib_stairway/textures/tubelib_stairway_grating.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 628 B |
BIN
tubelib_stairway/textures/tubelib_stairway_ladder.png
Normal file
BIN
tubelib_stairway/textures/tubelib_stairway_ladder.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 334 B |
BIN
tubelib_stairway/textures/tubelib_stairway_steps.png
Normal file
BIN
tubelib_stairway/textures/tubelib_stairway_steps.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 319 B |
Loading…
Reference in New Issue
Block a user