mirror of
https://github.com/D00Med/scifi_nodes.git
synced 2025-09-10 01:15:23 +02:00
Compare commits
120 Commits
github-act
...
fb1fdcf69e
Author | SHA1 | Date | |
---|---|---|---|
fb1fdcf69e | |||
|
b682b2123d | ||
|
c615237114 | ||
|
cb95483a12 | ||
|
e52a890883 | ||
|
6fb3ded8ad | ||
|
373f06cd7c | ||
|
d531ad4eda | ||
|
62037ad60a | ||
|
36b0c5cc05 | ||
|
fbd56e67c9 | ||
|
08c83f52ce | ||
|
364211ebf1 | ||
|
93bdcda2dd | ||
|
1159a02f76 | ||
|
e519d3c6e0 | ||
f79e84b92d | |||
|
8967e0ea04 | ||
|
6bb8d294f3 | ||
|
d4ec06f888 | ||
|
4bbe29fcd3 | ||
|
49703e7386 | ||
|
014ca0179f | ||
|
f3354f52da | ||
|
e29c8467af | ||
|
2822954737 | ||
|
f1c0d74503 | ||
|
89876b23e7 | ||
|
3c3ad75e6d | ||
|
ba7a8eea46 | ||
cc5f1bea5a | |||
|
772aef2118 | ||
|
83a5d401cc | ||
|
211dcff770 | ||
|
5102ad7a39 | ||
|
9177b875d9 | ||
|
531a0ff257 | ||
|
63f4bd529e | ||
|
44d108fff8 | ||
|
fcd5ae671e | ||
|
f9bfaf0988 | ||
|
5b9e18f278 | ||
|
fd4a03dd8d | ||
|
8cd08c1852 | ||
e7864a4a86 | |||
|
89f825d4e6 | ||
|
c5c587d01a | ||
|
f94b900fbe | ||
|
3d7910f2fd | ||
|
10d818b2e1 | ||
|
ab81d74f33 | ||
|
72471b7c3b | ||
c649c290ab | |||
|
c44ced1362 | ||
4f2d2a304f | |||
|
9947c41ce7 | ||
|
32f46ebf23 | ||
8816db8ecf | |||
|
1558b4c146 | ||
|
cb515e60f1 | ||
5b903a6e78 | |||
|
4fc833bb00 | ||
|
5788062fac | ||
|
1c8024401f | ||
|
1273b627c2 | ||
eb231d7ca7 | |||
|
3d7e7a82a5 | ||
|
e40f9747b0 | ||
2fd4de11c0 | |||
|
85aa74e98b | ||
|
5b9431ea18 | ||
b88b7349a5 | |||
|
53d9659051 | ||
c30ae4b3bd | |||
|
79ba8cabc3 | ||
6cf45fcd43 | |||
1d42e59ada | |||
1ded358e04 | |||
ecfaa4714a | |||
c341cb8a20 | |||
|
aecd323b93 | ||
|
317fdd6df6 | ||
d66e04f9b1 | |||
|
2e035f37e9 | ||
d3d6a7bf79 | |||
|
178fd9c48b | ||
e34fdde795 | |||
|
d2dd770635 | ||
1993068ed1 | |||
|
eed0d601be | ||
436f51ab0d | |||
|
16ff4dcdb8 | ||
749d59a530 | |||
|
b54333d56b | ||
bd58dbc48b | |||
|
6492d311c8 | ||
4eaba4f6e1 | |||
|
03d097abf8 | ||
|
9ad9ba33c8 | ||
|
40bcb29c6d | ||
|
37aef1ce17 | ||
|
8a8e566d27 | ||
|
a3b8ec1522 | ||
|
ce0501bef3 | ||
|
6d6432940f | ||
|
242dbde0e6 | ||
|
973f14fbd2 | ||
|
0c19943f05 | ||
|
3659705c7d | ||
|
14a123c7b5 | ||
|
f341f26905 | ||
|
1b564e0a43 | ||
|
d50c645648 | ||
|
992ec19360 | ||
|
f452274b9c | ||
|
6010bad2e9 | ||
|
d48c185f34 | ||
|
d1f0a8f1cd | ||
|
8e226561a1 | ||
|
44fccd50c6 |
19
.github/workflows/luacheck.yml
vendored
19
.github/workflows/luacheck.yml
vendored
@@ -1,17 +1,10 @@
|
|||||||
name: luacheck
|
name: luacheck
|
||||||
|
on: [push, pull_request]
|
||||||
on: [push]
|
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
build:
|
luacheck:
|
||||||
|
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v1
|
- name: Checkout
|
||||||
- name: apt
|
uses: actions/checkout@main
|
||||||
run: sudo apt-get install -y luarocks
|
- name: Luacheck
|
||||||
- name: luacheck install
|
uses: lunarmodules/luacheck@master
|
||||||
run: luarocks install --local luacheck
|
|
||||||
- name: luacheck run
|
|
||||||
run: $HOME/.luarocks/bin/luacheck ./
|
|
12
.github/workflows/test.yml
vendored
Normal file
12
.github/workflows/test.yml
vendored
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
name: test
|
||||||
|
on: [push, pull_request]
|
||||||
|
jobs:
|
||||||
|
test:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v2
|
||||||
|
- uses: buckaroobanzay/mtt@main
|
||||||
|
with:
|
||||||
|
modname: scifi_nodes
|
||||||
|
enable_coverage: "true"
|
||||||
|
- uses: coverallsapp/github-action@v1
|
20
.luacheckrc
20
.luacheckrc
@@ -1,3 +1,5 @@
|
|||||||
|
std = "min+minetest"
|
||||||
|
|
||||||
unused_args = false
|
unused_args = false
|
||||||
|
|
||||||
globals = {
|
globals = {
|
||||||
@@ -5,20 +7,18 @@ globals = {
|
|||||||
}
|
}
|
||||||
|
|
||||||
read_globals = {
|
read_globals = {
|
||||||
-- Stdlib
|
|
||||||
string = {fields = {"split"}},
|
|
||||||
table = {fields = {"copy", "getn"}},
|
|
||||||
|
|
||||||
-- Minetest
|
|
||||||
"vector", "ItemStack",
|
|
||||||
"dump",
|
|
||||||
|
|
||||||
-- optional deps
|
-- optional deps
|
||||||
|
"advtrains",
|
||||||
"default",
|
"default",
|
||||||
"stairsplus",
|
"stairsplus",
|
||||||
"xpanes",
|
"xpanes",
|
||||||
"screwdriver",
|
"screwdriver",
|
||||||
"minetest",
|
"minetest",
|
||||||
"mesecon"
|
"mesecon",
|
||||||
|
"unifieddyes",
|
||||||
|
"letters",
|
||||||
|
"signs_api",
|
||||||
|
"stealthnode",
|
||||||
|
"slats",
|
||||||
|
"mtt"
|
||||||
}
|
}
|
||||||
|
34
README.md
34
README.md
@@ -2,10 +2,18 @@
|
|||||||
|
|
||||||
# scifi_nodes
|
# scifi_nodes
|
||||||
|
|
||||||
|

|
||||||
|

|
||||||
|
[](https://coveralls.io/github/D00Med/scifi_nodes?branch=master)
|
||||||
|
[](https://content.minetest.net/packages/D00Med/scifi_nodes/)
|
||||||
|
|
||||||
Minetest mod that adds scifi themed blocks, doors, materials, plants and other assets.
|
Minetest mod that adds scifi themed blocks, doors, materials, plants and other assets.
|
||||||
|
|
||||||
# Changes log
|
Lua api: see [api.md](./api.md)
|
||||||
|
|
||||||
|
# Changelog
|
||||||
|
|
||||||
|
* Added support for unifieddyes
|
||||||
* 14/08/2019 : retrocompatibility fixed (aliases in doors.lua)
|
* 14/08/2019 : retrocompatibility fixed (aliases in doors.lua)
|
||||||
* 13/08/2019 :
|
* 13/08/2019 :
|
||||||
* added mod option doors_open_with_mesecon_only (default = false)
|
* added mod option doors_open_with_mesecon_only (default = false)
|
||||||
@@ -27,19 +35,35 @@ Minetest mod that adds scifi themed blocks, doors, materials, plants and other a
|
|||||||
|
|
||||||
# Attributions
|
# Attributions
|
||||||
|
|
||||||
CC BY-NC 3.0
|
CC BY 3.0
|
||||||
* scifi_nodes_door_normal.ogg tlwmdbt https://freesound.org/people/tlwmdbt/sounds/165862/
|
* scifi_nodes_door_normal.ogg tlwmdbt https://freesound.org/people/tlwmdbt/sounds/165862/
|
||||||
* scifi_nodes_door_mechanic.ogg primeval_polypod https://freesound.org/people/primeval_polypod/sounds/156507/
|
|
||||||
* scifi_nodes_digicode.ogg https://freesound.org/people/Robinhood76/sounds/94933/
|
|
||||||
* scifi_nodes_switch.ogg http://soundbible.com/1950-Button-Push.html
|
* scifi_nodes_switch.ogg http://soundbible.com/1950-Button-Push.html
|
||||||
* scifi_nodes_palm_scanner.ogg https://freesound.org/people/THE_bizniss/sounds/39313/
|
* scifi_nodes_palm_scanner.ogg https://freesound.org/people/THE_bizniss/sounds/39313/
|
||||||
* scifi_nodes_access_granted https://freesound.org/people/TheBuilder15/sounds/415762/
|
* scifi_nodes_access_granted https://freesound.org/people/TheBuilder15/sounds/415762/
|
||||||
* scifi_nodes_access_refused https://freesound.org/people/RICHERlandTV/sounds/216090/
|
* scifi_nodes_access_refused https://freesound.org/people/RICHERlandTV/sounds/216090/
|
||||||
|
* scifi_nodes_forcefield.png https://github.com/minetest-mods/technic/
|
||||||
|
* scifi_nodes_dirt.png https://github.com/minetest/minetest_game
|
||||||
|
* scifi_nodes_grass_top.png https://github.com/minetest/minetest_game
|
||||||
|
* scifi_nodes_grass_side.png https://github.com/minetest/minetest_game
|
||||||
|
* scifi_nodes_wood.png https://github.com/minetest/minetest_game
|
||||||
|
|
||||||
|
CC0
|
||||||
|
* scifi_nodes_digicode.ogg https://freesound.org/people/benjaminharveydesign/sounds/315921/
|
||||||
|
* scifi_nodes_ambience_fan.ogg https://freesound.org/people/itinerantmonk108/sounds/554430/
|
||||||
|
* scifi_nodes_ambience_vent.ogg https://freesound.org/people/kentspublicdomain/sounds/324665/
|
||||||
|
* scifi_nodes_ambience_engine.ogg https://freesound.org/people/firestorm185/sounds/423221/
|
||||||
|
|
||||||
|
|
||||||
# Contributors:
|
# Contributors:
|
||||||
|
|
||||||
|
* D00Med https://github.com/D00Med (creator)
|
||||||
* tanmayameher https://github.com/tanmayameher
|
* tanmayameher https://github.com/tanmayameher
|
||||||
* naturefreshmilk https://github.com/naturefreshmilk
|
* BuckarooBanzay https://github.com/BuckarooBanzay
|
||||||
* acmgit https://github.com/acmgit
|
* acmgit https://github.com/acmgit
|
||||||
* catz85 https://github.com/catz85
|
* catz85 https://github.com/catz85
|
||||||
* coil0 https://github.com/coil0
|
* coil0 https://github.com/coil0
|
||||||
|
* Grossam https://github.com/Grossam
|
||||||
|
* OgelGames https://github.com/OgelGames
|
||||||
|
* leftshift https://github.com/leftshift
|
||||||
|
* fluxionary https://github.com/fluxionary
|
||||||
|
* Niles Corder https://github.com/ncorder
|
||||||
|
259
access_card.lua
Normal file
259
access_card.lua
Normal file
@@ -0,0 +1,259 @@
|
|||||||
|
local FORMSPEC_NAME = "scifi_nodes:access_card_configure"
|
||||||
|
|
||||||
|
local function create_id()
|
||||||
|
local template = "xxxxxx"
|
||||||
|
return string.gsub(template, '[x]', function ()
|
||||||
|
return string.format('%x', math.random(0, 0xf))
|
||||||
|
end)
|
||||||
|
end
|
||||||
|
|
||||||
|
local function get_door_access_table(meta)
|
||||||
|
local str = meta:get_string("access")
|
||||||
|
if str == "" then
|
||||||
|
-- no config
|
||||||
|
return {}
|
||||||
|
else
|
||||||
|
return minetest.deserialize(str) or {}
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
local function set_door_access_table(meta, at)
|
||||||
|
if next(at) then
|
||||||
|
meta:set_string("access", minetest.serialize(at))
|
||||||
|
else
|
||||||
|
meta:set_string("access", "")
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function scifi_nodes.door_check_access_card(node_pos, itemstack, player)
|
||||||
|
local node_meta = minetest.get_meta(node_pos)
|
||||||
|
local access_table = get_door_access_table(node_meta)
|
||||||
|
if not next(access_table) then
|
||||||
|
-- access not restricted
|
||||||
|
return true
|
||||||
|
end
|
||||||
|
|
||||||
|
if not minetest.is_player(player) then
|
||||||
|
-- not a player, restrict access
|
||||||
|
return false
|
||||||
|
end
|
||||||
|
|
||||||
|
local playername = player:get_player_name()
|
||||||
|
|
||||||
|
if itemstack:get_name() ~= "scifi_nodes:access_card" then
|
||||||
|
minetest.chat_send_player(playername, minetest.colorize("#ff0000", "Access denied: no access card detected!"))
|
||||||
|
minetest.sound_play("scifi_nodes_scanner_refused", { pos = node_pos, max_hear_distance = 10 })
|
||||||
|
return false
|
||||||
|
end
|
||||||
|
|
||||||
|
local item_meta = itemstack:get_meta()
|
||||||
|
local id = item_meta:get_string("id")
|
||||||
|
if id == "" then
|
||||||
|
minetest.chat_send_player(playername, minetest.colorize("#ff0000", "Access denied: unconfigured access card"))
|
||||||
|
minetest.sound_play("scifi_nodes_scanner_refused", { pos = node_pos, max_hear_distance = 10 })
|
||||||
|
return false
|
||||||
|
end
|
||||||
|
|
||||||
|
if not access_table[id] then
|
||||||
|
minetest.chat_send_player(playername, minetest.colorize("#ff0000", "Access denied: invalid access card"))
|
||||||
|
minetest.sound_play("scifi_nodes_scanner_refused", { pos = node_pos, max_hear_distance = 10 })
|
||||||
|
return false
|
||||||
|
end
|
||||||
|
|
||||||
|
minetest.sound_play("scifi_nodes_scanner_granted", { pos = node_pos, max_hear_distance = 10 })
|
||||||
|
return true
|
||||||
|
end
|
||||||
|
|
||||||
|
-- using a card against a door toggles the access to it
|
||||||
|
local function on_use(itemstack, player, pointed_thing)
|
||||||
|
local playername = player:get_player_name()
|
||||||
|
local pos = pointed_thing.under
|
||||||
|
|
||||||
|
if not pos then
|
||||||
|
-- nothing selected
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
if minetest.is_protected(pos, playername) then
|
||||||
|
-- protected
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
local node = minetest.get_node(pos)
|
||||||
|
local node_def = minetest.registered_nodes[node.name]
|
||||||
|
if not node_def.groups or not node_def.groups.scifi_nodes_door then
|
||||||
|
-- incompatible node
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
local item_meta = itemstack:get_meta()
|
||||||
|
local card_id = item_meta:get_string("id")
|
||||||
|
if card_id == "" then
|
||||||
|
minetest.chat_send_player(playername, "Access card is unconfigured")
|
||||||
|
return
|
||||||
|
end
|
||||||
|
local card_name = item_meta:get_string("name")
|
||||||
|
|
||||||
|
local node_meta = minetest.get_meta(pos)
|
||||||
|
local access_table = get_door_access_table(node_meta)
|
||||||
|
|
||||||
|
if access_table[card_id] then
|
||||||
|
-- remove access
|
||||||
|
access_table[card_id] = nil
|
||||||
|
minetest.chat_send_player(playername, "Revoked access to card-id '" .. card_id .. "'")
|
||||||
|
minetest.sound_play("scifi_nodes_scanner_refused", { pos = pos, max_hear_distance = 10 })
|
||||||
|
else
|
||||||
|
-- grant access
|
||||||
|
access_table[card_id] = card_name
|
||||||
|
minetest.chat_send_player(playername, "Granted access to card-id '" .. card_id .. "'")
|
||||||
|
minetest.sound_play("scifi_nodes_scanner_granted", { pos = pos, max_hear_distance = 10 })
|
||||||
|
end
|
||||||
|
|
||||||
|
local msg = ""
|
||||||
|
if next(access_table) then
|
||||||
|
msg = msg .. "Current registered cards: "
|
||||||
|
for id, name in pairs(access_table) do
|
||||||
|
msg = msg .. "Name: '" .. name .. "' ID: '" .. id .. "' / "
|
||||||
|
end
|
||||||
|
else
|
||||||
|
-- access table is empty
|
||||||
|
msg = "No access-card left in access-table, door is free to use"
|
||||||
|
end
|
||||||
|
minetest.chat_send_player(playername, msg)
|
||||||
|
|
||||||
|
-- set new access table
|
||||||
|
set_door_access_table(node_meta, access_table)
|
||||||
|
end
|
||||||
|
|
||||||
|
local function configure_access_card(meta, name)
|
||||||
|
local id = meta:get_string("id")
|
||||||
|
if id == "" then
|
||||||
|
-- set new id
|
||||||
|
id = create_id()
|
||||||
|
meta:set_string("id", id)
|
||||||
|
end
|
||||||
|
|
||||||
|
meta:set_string("name", name)
|
||||||
|
meta:set_string("description", "Access card '" .. name .. "' (id: '" .. id .. "')")
|
||||||
|
end
|
||||||
|
|
||||||
|
-- right-click with a card for rename/configuration
|
||||||
|
local function on_secondary_use(itemstack, player, pointed_thing)
|
||||||
|
local meta = itemstack:get_meta()
|
||||||
|
if meta:get_string("id") == "" then
|
||||||
|
-- initial configuration
|
||||||
|
configure_access_card(meta, "")
|
||||||
|
end
|
||||||
|
local name = meta:get_string("name")
|
||||||
|
|
||||||
|
minetest.show_formspec(player:get_player_name(), FORMSPEC_NAME, [[
|
||||||
|
size[10,1.4]
|
||||||
|
real_coordinates[true]
|
||||||
|
field[0.1,0.4;7,0.8;name;Name;]] .. minetest.formspec_escape(name) .. [[]
|
||||||
|
button_exit[7.3,0.4;2.5,0.8;save;Save]
|
||||||
|
]])
|
||||||
|
|
||||||
|
return itemstack
|
||||||
|
end
|
||||||
|
|
||||||
|
minetest.register_on_player_receive_fields(function(player, formname, fields)
|
||||||
|
if formname ~= FORMSPEC_NAME then
|
||||||
|
-- wrong formspec
|
||||||
|
return false
|
||||||
|
end
|
||||||
|
|
||||||
|
if not fields.save and not fields.key_enter_field then
|
||||||
|
-- quit
|
||||||
|
return true
|
||||||
|
end
|
||||||
|
|
||||||
|
local itemstack = player:get_wielded_item()
|
||||||
|
if itemstack:get_name() ~= "scifi_nodes:access_card" then
|
||||||
|
-- invalid item
|
||||||
|
return true
|
||||||
|
end
|
||||||
|
|
||||||
|
local meta = itemstack:get_meta()
|
||||||
|
configure_access_card(meta, fields.name or "")
|
||||||
|
player:set_wielded_item(itemstack)
|
||||||
|
end)
|
||||||
|
|
||||||
|
minetest.register_craftitem("scifi_nodes:access_card", {
|
||||||
|
description = "Access card (unconfigured)",
|
||||||
|
inventory_image = "scifi_nodes_access_card.png",
|
||||||
|
palette = "unifieddyes_palette_extended.png",
|
||||||
|
stack_max = 1,
|
||||||
|
paramtype2 = "color",
|
||||||
|
on_use = on_use,
|
||||||
|
on_secondary_use = on_secondary_use,
|
||||||
|
groups = {
|
||||||
|
ud_param2_colorable = 1
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
-- initial recipe
|
||||||
|
minetest.register_craft({
|
||||||
|
output = "scifi_nodes:access_card",
|
||||||
|
recipe = {
|
||||||
|
{"scifi_nodes:white2", "", ""},
|
||||||
|
{"scifi_nodes:white_pad", "", ""},
|
||||||
|
{"scifi_nodes:white2", "", ""}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
-- copy recipe
|
||||||
|
minetest.register_craft({
|
||||||
|
output = "scifi_nodes:access_card",
|
||||||
|
recipe = {
|
||||||
|
{"scifi_nodes:access_card", "scifi_nodes:white_pad", ""},
|
||||||
|
{"", "", ""},
|
||||||
|
{"", "", ""}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
minetest.register_on_craft(function(itemstack, player, old_craft_grid, craft_inv)
|
||||||
|
if itemstack:get_name() ~= "scifi_nodes:access_card" then
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
local original
|
||||||
|
local index
|
||||||
|
for i = 1, #old_craft_grid do
|
||||||
|
if old_craft_grid[i]:get_name() == "scifi_nodes:access_card" then
|
||||||
|
original = old_craft_grid[i]
|
||||||
|
index = i
|
||||||
|
break
|
||||||
|
end
|
||||||
|
end
|
||||||
|
if not original then
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
-- copy metadata
|
||||||
|
local src_meta = original:get_meta()
|
||||||
|
local dst_meta = itemstack:get_meta()
|
||||||
|
local copy_fields = {"id", "name", "description"}
|
||||||
|
for _, fieldname in ipairs(copy_fields) do
|
||||||
|
dst_meta:set_string(fieldname, src_meta:get_string(fieldname))
|
||||||
|
end
|
||||||
|
|
||||||
|
if old_craft_grid[2]:get_name() == "scifi_nodes:white_pad" then
|
||||||
|
-- keep original item if the copy-recipe is used
|
||||||
|
craft_inv:set_stack("craft", index, original)
|
||||||
|
end
|
||||||
|
end)
|
||||||
|
|
||||||
|
if minetest.get_modpath("unifieddyes") then
|
||||||
|
-- add colored crafts
|
||||||
|
unifieddyes.register_color_craft({
|
||||||
|
output = "scifi_nodes:access_card",
|
||||||
|
palette = "extended",
|
||||||
|
neutral_node = "scifi_nodes:access_card",
|
||||||
|
recipe = {
|
||||||
|
"NEUTRAL_NODE",
|
||||||
|
"MAIN_DYE"
|
||||||
|
},
|
||||||
|
type = "shapeless"
|
||||||
|
})
|
||||||
|
|
||||||
|
end
|
73
ambience.lua
Normal file
73
ambience.lua
Normal file
@@ -0,0 +1,73 @@
|
|||||||
|
|
||||||
|
-- currently playing sounds per mapblock
|
||||||
|
-- mapblock_pos[number]
|
||||||
|
local currently_playing = {}
|
||||||
|
|
||||||
|
-- clear the currently playing tracker every few seconds
|
||||||
|
local function clear_currently_playing()
|
||||||
|
currently_playing = {}
|
||||||
|
minetest.after(5, clear_currently_playing)
|
||||||
|
end
|
||||||
|
minetest.after(5, clear_currently_playing)
|
||||||
|
|
||||||
|
-- mapblock resolution
|
||||||
|
local function get_key(pos)
|
||||||
|
return minetest.pos_to_string(vector.round(vector.divide(pos, 16)))
|
||||||
|
end
|
||||||
|
|
||||||
|
local function add_currently_playing(pos, value)
|
||||||
|
local key = get_key(pos)
|
||||||
|
local count = currently_playing[key]
|
||||||
|
if not count then
|
||||||
|
-- new entry
|
||||||
|
count = value
|
||||||
|
else
|
||||||
|
-- update entry
|
||||||
|
count = count + value
|
||||||
|
end
|
||||||
|
currently_playing[key] = count
|
||||||
|
end
|
||||||
|
|
||||||
|
-- limit plaing sounds per mapblock
|
||||||
|
local function can_play(pos)
|
||||||
|
local count = currently_playing[get_key(pos)]
|
||||||
|
return not count or count < 25
|
||||||
|
end
|
||||||
|
|
||||||
|
-- register ambience sounds with node-timer
|
||||||
|
function scifi_nodes.register_ambience(nodename, soundname, opts)
|
||||||
|
assert(opts)
|
||||||
|
opts.interval = opts.interval or 60
|
||||||
|
|
||||||
|
local function play(pos)
|
||||||
|
minetest.sound_play(soundname ,{
|
||||||
|
max_hear_distance = opts.max_hear_distance or 16,
|
||||||
|
pos = pos,
|
||||||
|
gain = opts.gain or 0.7
|
||||||
|
})
|
||||||
|
end
|
||||||
|
|
||||||
|
minetest.override_item(nodename, {
|
||||||
|
on_timer = function(pos)
|
||||||
|
local timer = minetest.get_node_timer(pos)
|
||||||
|
|
||||||
|
if not can_play(pos) then
|
||||||
|
-- too many sounds playing, recheck again soon
|
||||||
|
timer:start(1)
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
-- increment usage count
|
||||||
|
add_currently_playing(pos, 1)
|
||||||
|
play(pos)
|
||||||
|
|
||||||
|
-- restart timer
|
||||||
|
timer:start(opts.interval)
|
||||||
|
end,
|
||||||
|
on_construct = function(pos)
|
||||||
|
play(pos)
|
||||||
|
local timer = minetest.get_node_timer(pos)
|
||||||
|
timer:start(opts.interval)
|
||||||
|
end
|
||||||
|
})
|
||||||
|
end
|
12
api.md
Normal file
12
api.md
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
|
||||||
|
scifi_nodes api
|
||||||
|
|
||||||
|
# Doors
|
||||||
|
|
||||||
|
Open scifi_nodes door at given position
|
||||||
|
|
||||||
|
```lua
|
||||||
|
scifi_nodes.open_door(pos)
|
||||||
|
```
|
||||||
|
|
||||||
|
returns `true` on success, `false` otherwise
|
@@ -105,5 +105,7 @@ minetest.register_node("scifi_nodes:builder", {
|
|||||||
end,
|
end,
|
||||||
paramtype = "light",
|
paramtype = "light",
|
||||||
paramtype2 = "facedir",
|
paramtype2 = "facedir",
|
||||||
groups = {cracky=1, oddly_breakable_by_hand=1}
|
groups = {cracky=1, oddly_breakable_by_hand=1},
|
||||||
|
is_ground_content = false,
|
||||||
|
sounds = scifi_nodes.node_sound_metal_defaults(),
|
||||||
})
|
})
|
||||||
|
83
chest.lua
83
chest.lua
@@ -1,24 +1,21 @@
|
|||||||
|
local has_default = minetest.get_modpath("default")
|
||||||
|
|
||||||
--chest code from default(Copyright (C) 2012 celeron55, Perttu Ahola <celeron55@gmail.com>)
|
--chest code from default(Copyright (C) 2012 celeron55, Perttu Ahola <celeron55@gmail.com>)
|
||||||
|
|
||||||
local chest_formspec =
|
local chest_formspec =
|
||||||
"size[8,9]" ..
|
"size[8,9]" ..
|
||||||
default.gui_bg ..
|
(has_default and default.gui_bg or "") ..
|
||||||
default.gui_bg_img ..
|
(has_default and default.gui_bg_img or "") ..
|
||||||
default.gui_slots ..
|
(has_default and default.gui_slots or "") ..
|
||||||
"list[current_name;main;0,0.3;8,4;]" ..
|
"list[current_name;main;0,0.3;8,4;]" ..
|
||||||
"list[current_player;main;0,4.85;8,1;]" ..
|
"list[current_player;main;0,4.85;8,1;]" ..
|
||||||
"list[current_player;main;0,6.08;8,3;8]" ..
|
"list[current_player;main;0,6.08;8,3;8]" ..
|
||||||
"listring[current_name;main]" ..
|
"listring[current_name;main]" ..
|
||||||
"listring[current_player;main]" ..
|
"listring[current_player;main]" ..
|
||||||
default.get_hotbar_bg(0,4.85)
|
(has_default and default.get_hotbar_bg(0,4.85) or "")
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
-- Helper functions
|
-- Helper functions
|
||||||
|
|
||||||
local function drop_chest_stuff()
|
local function drop_chest_stuff()
|
||||||
return function(pos, oldnode, oldmetadata, digger)
|
return function(pos, _, oldmetadata)
|
||||||
local meta = minetest.get_meta(pos)
|
local meta = minetest.get_meta(pos)
|
||||||
meta:from_table(oldmetadata)
|
meta:from_table(oldmetadata)
|
||||||
local inv = meta:get_inventory()
|
local inv = meta:get_inventory()
|
||||||
@@ -35,21 +32,20 @@ local function drop_chest_stuff()
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
--chest code Copyright (C) 2011-2012 celeron55, Perttu Ahola <celeron55@gmail.com>
|
local function register_chest(name, custom_def)
|
||||||
minetest.register_node("scifi_nodes:crate", {
|
assert(custom_def.description)
|
||||||
description = "Crate",
|
assert(custom_def.tiles)
|
||||||
tiles = {"scifi_nodes_crate.png"},
|
|
||||||
|
local def = {
|
||||||
paramtype2 = "facedir",
|
paramtype2 = "facedir",
|
||||||
groups = {cracky = 1, oddly_breakable_by_hand = 2, fuel = 8},
|
|
||||||
legacy_facedir_simple = true,
|
legacy_facedir_simple = true,
|
||||||
is_ground_content = false,
|
is_ground_content = false,
|
||||||
sounds = default.node_sound_wood_defaults(),
|
sounds = scifi_nodes.node_sound_wood_defaults(),
|
||||||
|
|
||||||
after_dig_node = drop_chest_stuff(),
|
after_dig_node = drop_chest_stuff(),
|
||||||
on_construct = function(pos)
|
on_construct = function(pos)
|
||||||
local meta = minetest.get_meta(pos)
|
local meta = minetest.get_meta(pos)
|
||||||
meta:set_string("formspec", chest_formspec)
|
meta:set_string("formspec", chest_formspec)
|
||||||
meta:set_string("infotext", "Crate")
|
meta:set_string("infotext", custom_def.description)
|
||||||
local inv = meta:get_inventory()
|
local inv = meta:get_inventory()
|
||||||
inv:set_size("main", 8 * 4)
|
inv:set_size("main", 8 * 4)
|
||||||
end,
|
end,
|
||||||
@@ -65,10 +61,28 @@ minetest.register_node("scifi_nodes:crate", {
|
|||||||
on_metadata_inventory_take = function(pos, listname, index, stack, player)
|
on_metadata_inventory_take = function(pos, listname, index, stack, player)
|
||||||
minetest.log("action", player:get_player_name() ..
|
minetest.log("action", player:get_player_name() ..
|
||||||
" takes stuff from chest at " .. minetest.pos_to_string(pos))
|
" takes stuff from chest at " .. minetest.pos_to_string(pos))
|
||||||
end,
|
end
|
||||||
|
}
|
||||||
|
|
||||||
|
for k, v in pairs(custom_def) do
|
||||||
|
def[k] = v
|
||||||
|
end
|
||||||
|
|
||||||
|
minetest.register_node(name, def)
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
register_chest("scifi_nodes:crate", {
|
||||||
|
description = "Crate",
|
||||||
|
tiles = {"scifi_nodes_crate.png"},
|
||||||
|
groups = {
|
||||||
|
cracky = 1,
|
||||||
|
oddly_breakable_by_hand = 2,
|
||||||
|
fuel = 8
|
||||||
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
minetest.register_node("scifi_nodes:box", {
|
register_chest("scifi_nodes:box", {
|
||||||
description = "Storage box",
|
description = "Storage box",
|
||||||
tiles = {
|
tiles = {
|
||||||
"scifi_nodes_box_top.png",
|
"scifi_nodes_box_top.png",
|
||||||
@@ -78,32 +92,7 @@ minetest.register_node("scifi_nodes:box", {
|
|||||||
"scifi_nodes_box.png",
|
"scifi_nodes_box.png",
|
||||||
"scifi_nodes_box.png"
|
"scifi_nodes_box.png"
|
||||||
},
|
},
|
||||||
paramtype2 = "facedir",
|
groups = {
|
||||||
groups = {cracky = 1},
|
cracky = 1
|
||||||
legacy_facedir_simple = true,
|
}
|
||||||
is_ground_content = false,
|
|
||||||
sounds = default.node_sound_metal_defaults(),
|
|
||||||
|
|
||||||
after_dig_node = drop_chest_stuff(),
|
|
||||||
on_construct = function(pos)
|
|
||||||
local meta = minetest.get_meta(pos)
|
|
||||||
meta:set_string("formspec", chest_formspec)
|
|
||||||
meta:set_string("infotext", "Box")
|
|
||||||
local inv = meta:get_inventory()
|
|
||||||
inv:set_size("main", 8 * 4)
|
|
||||||
end,
|
|
||||||
on_metadata_inventory_move = function(pos, from_list, from_index,
|
|
||||||
to_list, to_index, count, player)
|
|
||||||
minetest.log("action", player:get_player_name() ..
|
|
||||||
" moves stuff in chest at " .. minetest.pos_to_string(pos))
|
|
||||||
end,
|
|
||||||
on_metadata_inventory_put = function(pos, listname, index, stack, player)
|
|
||||||
minetest.log("action", player:get_player_name() ..
|
|
||||||
" moves stuff to chest at " .. minetest.pos_to_string(pos))
|
|
||||||
end,
|
|
||||||
on_metadata_inventory_take = function(pos, listname, index, stack, player)
|
|
||||||
minetest.log("action", player:get_player_name() ..
|
|
||||||
" takes stuff from chest at " .. minetest.pos_to_string(pos))
|
|
||||||
end,
|
|
||||||
})
|
})
|
||||||
--end of chest code
|
|
24
common.lua
24
common.lua
@@ -1,7 +1,5 @@
|
|||||||
|
|
||||||
|
function scifi_nodes.get_switch_rules(param2)
|
||||||
scifi_nodes.get_switch_rules = function(param2)
|
|
||||||
|
|
||||||
-- param2 = 2
|
-- param2 = 2
|
||||||
local rules = {
|
local rules = {
|
||||||
{x=1, y=-1, z=-1},
|
{x=1, y=-1, z=-1},
|
||||||
@@ -20,3 +18,23 @@ scifi_nodes.get_switch_rules = function(param2)
|
|||||||
end
|
end
|
||||||
return rules
|
return rules
|
||||||
end
|
end
|
||||||
|
|
||||||
|
scifi_nodes.slope_box = {
|
||||||
|
type = "fixed",
|
||||||
|
fixed = {
|
||||||
|
{-0.5, -0.5, -0.5, 0.5, -0.25, 0.5},
|
||||||
|
{-0.5, -0.25, -0.25, 0.5, 0, 0.5},
|
||||||
|
{-0.5, 0, 0, 0.5, 0.25, 0.5},
|
||||||
|
{-0.5, 0.25, 0.25, 0.5, 0.5, 0.5}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
scifi_nodes.slope_box_simple = {
|
||||||
|
type = "fixed",
|
||||||
|
fixed = {
|
||||||
|
{-0.5, -0.5, -0.5, 0.5, -0.25, -0.25},
|
||||||
|
{-0.5, -0.25, -0.25, 0.5, 0, 0},
|
||||||
|
{-0.5, 0, 0, 0.5, 0.25, 0.25},
|
||||||
|
{-0.5, 0.25, 0.25, 0.5, 0.5, 0.5}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
201
crafts.lua
201
crafts.lua
@@ -1,5 +1,6 @@
|
|||||||
-- CRAFTING RECIPES FOR SCIFI NODES
|
-- CRAFTING RECIPES FOR SCIFI NODES
|
||||||
|
|
||||||
|
if minetest.get_modpath("basic_materials") then
|
||||||
-- 6 basic plastic from 9 homedecor plastic sheet
|
-- 6 basic plastic from 9 homedecor plastic sheet
|
||||||
minetest.register_craft({
|
minetest.register_craft({
|
||||||
output = "scifi_nodes:white2 6",
|
output = "scifi_nodes:white2 6",
|
||||||
@@ -10,6 +11,29 @@ minetest.register_craft({
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
|
if minetest.settings:get_bool("scifi_nodes.teleporter_enable_crafting", false) then
|
||||||
|
-- enable the teleporter pad crafting recipe only if the setting is enabled
|
||||||
|
minetest.register_craft({
|
||||||
|
output = "scifi_nodes:pad",
|
||||||
|
recipe = {
|
||||||
|
{"homedecor:plastic_sheeting", "quartz:block", "homedecor:plastic_sheeting"},
|
||||||
|
{"default:mese_crystal", "quartz:block", "default:mese_crystal"},
|
||||||
|
{"homedecor:plastic_sheeting", "quartz:block", "homedecor:plastic_sheeting"}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
if not minetest.get_modpath("default") or not minetest.get_modpath("dye") then
|
||||||
|
-- the default and dye mod are required for most of the recipes
|
||||||
|
-- if either of them is missing (because we are not in the default game)
|
||||||
|
-- then just skip the recipes entirely
|
||||||
|
-- TODO: potentially switch recipes depending on current game
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
minetest.register_craft({
|
minetest.register_craft({
|
||||||
output = "scifi_nodes:super_white",
|
output = "scifi_nodes:super_white",
|
||||||
recipe = {
|
recipe = {
|
||||||
@@ -210,7 +234,7 @@ minetest.register_craft({
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
-- 4 electronic screen from 4 plastic, 1 trap glow glass, 2 cyan dye, 2
|
-- 4 electronic screen from 4 plastic, 1 lightbar, 2 cyan dye, 2
|
||||||
-- microcontroller
|
-- microcontroller
|
||||||
minetest.register_craft({
|
minetest.register_craft({
|
||||||
output = "scifi_nodes:screen 4",
|
output = "scifi_nodes:screen 4",
|
||||||
@@ -221,7 +245,7 @@ minetest.register_craft({
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
-- 4 electronic screen2 from 4 plastic, 1 trap glow glass, 2 green dye, 2
|
-- 4 electronic screen2 from 4 plastic, 1 lightbar, 2 green dye, 2
|
||||||
-- microcontroller
|
-- microcontroller
|
||||||
minetest.register_craft({
|
minetest.register_craft({
|
||||||
output = "scifi_nodes:screen2 4",
|
output = "scifi_nodes:screen2 4",
|
||||||
@@ -232,6 +256,18 @@ minetest.register_craft({
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
||||||
|
-- 4 electronic screen3 from 4 plastic, 1 lightbar, 2 black dye, 2
|
||||||
|
-- microcontroller
|
||||||
|
minetest.register_craft({
|
||||||
|
output = "scifi_nodes:screen3 4",
|
||||||
|
recipe = {
|
||||||
|
{"scifi_nodes:white2", "mesecons_microcontroller:microcontroller0000", "scifi_nodes:white2"},
|
||||||
|
{"dye:black", "scifi_nodes:lightbar", "dye:black"},
|
||||||
|
{"scifi_nodes:white2", "mesecons_microcontroller:microcontroller0000", "scifi_nodes:white2"}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
-- 4 black wall screen from 4 black meshes and 1 electronic screen2
|
-- 4 black wall screen from 4 black meshes and 1 electronic screen2
|
||||||
minetest.register_craft({
|
minetest.register_craft({
|
||||||
output = "scifi_nodes:black_screen 4",
|
output = "scifi_nodes:black_screen 4",
|
||||||
@@ -307,6 +343,16 @@ minetest.register_craft({
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
|
-- 6 black vnt from 6 black wall block and 6 stripes
|
||||||
|
minetest.register_craft({
|
||||||
|
output = "scifi_nodes:blackvnt 6",
|
||||||
|
recipe = {
|
||||||
|
{"scifi_nodes:black", "scifi_nodes:black", "scifi_nodes:black"},
|
||||||
|
{"scifi_nodes:stripes", "scifi_nodes:stripes", "scifi_nodes:stripes"},
|
||||||
|
{"", "", ""}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
-- 6 black vent from 6 black wall
|
-- 6 black vent from 6 black wall
|
||||||
minetest.register_craft({
|
minetest.register_craft({
|
||||||
output = "scifi_nodes:blackvent 6",
|
output = "scifi_nodes:blackvent 6",
|
||||||
@@ -451,6 +497,15 @@ minetest.register_craft({
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
|
minetest.register_craft({
|
||||||
|
output = "scifi_nodes:crate",
|
||||||
|
recipe = {
|
||||||
|
{"scifi_nodes:grey", "scifi_nodes:grey", "scifi_nodes:grey"},
|
||||||
|
{"scifi_nodes:grey", "", "scifi_nodes:grey"},
|
||||||
|
{"scifi_nodes:grey", "scifi_nodes:grey", "scifi_nodes:grey"}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
-- 6 blue metal from 6 plastic, 2 blue dye, 1 dented metal block
|
-- 6 blue metal from 6 plastic, 2 blue dye, 1 dented metal block
|
||||||
minetest.register_craft({
|
minetest.register_craft({
|
||||||
output = "scifi_nodes:bluemetal 6",
|
output = "scifi_nodes:bluemetal 6",
|
||||||
@@ -700,6 +755,16 @@ minetest.register_craft({
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
|
-- 6 black pipe from 6 lighttop and 1 vent
|
||||||
|
minetest.register_craft({
|
||||||
|
output = "scifi_nodes:blackpipe 6",
|
||||||
|
recipe = {
|
||||||
|
{"scifi_nodes:lighttop", "", "scifi_nodes:lighttop"},
|
||||||
|
{"scifi_nodes:lighttop", "scifi_nodes:vent2", "scifi_nodes:lighttop"},
|
||||||
|
{"scifi_nodes:lighttop", "", "scifi_nodes:lighttop"}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
-- 1 broken green pipe from 1 green pipe
|
-- 1 broken green pipe from 1 green pipe
|
||||||
minetest.register_craft({
|
minetest.register_craft({
|
||||||
output = "scifi_nodes:grnpipe2",
|
output = "scifi_nodes:grnpipe2",
|
||||||
@@ -767,6 +832,16 @@ minetest.register_craft({
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
|
-- 4 green light bar from 4 green metal, 2 green dye, 1 lightbar
|
||||||
|
minetest.register_craft({
|
||||||
|
output = "scifi_nodes:greenbar_animated 4",
|
||||||
|
recipe = {
|
||||||
|
{"scifi_nodes:greenbar", "", "scifi_nodes:greenbar"},
|
||||||
|
{"", "mesecons:wire_00000000_off", ""},
|
||||||
|
{"scifi_nodes:greenbar", "", "scifi_nodes:greenbar"}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
-- 4 green metal block from 4 green metal
|
-- 4 green metal block from 4 green metal
|
||||||
minetest.register_craft({
|
minetest.register_craft({
|
||||||
output = "scifi_nodes:green_square 4",
|
output = "scifi_nodes:green_square 4",
|
||||||
@@ -853,6 +928,16 @@ minetest.register_craft({
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
|
-- 4 holes from 4 grey and 1 black dye and 1 white dye and 1 metal mesh
|
||||||
|
minetest.register_craft({
|
||||||
|
output = "scifi_nodes:holes 4",
|
||||||
|
recipe = {
|
||||||
|
{"scifi_nodes:grey", "dye:black", "scifi_nodes:grey"},
|
||||||
|
{"", "scifi_nodes:mesh", ""},
|
||||||
|
{"scifi_nodes:grey", "dye:white", "scifi_nodes:grey"}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
-- 4 metal table from 2 grey and 2 dented metal block
|
-- 4 metal table from 2 grey and 2 dented metal block
|
||||||
minetest.register_craft({
|
minetest.register_craft({
|
||||||
output = "scifi_nodes:table 4",
|
output = "scifi_nodes:table 4",
|
||||||
@@ -902,6 +987,15 @@ minetest.register_craft({
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
|
minetest.register_craft({
|
||||||
|
output = "scifi_nodes:octwht 4",
|
||||||
|
recipe = {
|
||||||
|
{"dye:white", "scifi_nodes:glass", ""},
|
||||||
|
{"scifi_nodes:glass", "scifi_nodes:lightbar", "scifi_nodes:glass"},
|
||||||
|
{"", "scifi_nodes:glass", "dye:white"}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
-- 1 purple node from 1 plastic, 1 blue dye and 1 red dye
|
-- 1 purple node from 1 plastic, 1 blue dye and 1 red dye
|
||||||
minetest.register_craft({
|
minetest.register_craft({
|
||||||
output = "scifi_nodes:purple",
|
output = "scifi_nodes:purple",
|
||||||
@@ -1089,6 +1183,22 @@ minetest.register_craft({
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
|
-- wet metal plant pot from dry metal plant pot
|
||||||
|
minetest.register_craft({
|
||||||
|
output = "scifi_nodes:pot2",
|
||||||
|
recipe = {
|
||||||
|
{"scifi_nodes:pot", "bucket:bucket_water"}
|
||||||
|
},
|
||||||
|
replacements = {{"bucket:bucket_water", "bucket:bucket_empty"}}
|
||||||
|
})
|
||||||
|
|
||||||
|
-- dry metal plant pot from wet metal plant pot
|
||||||
|
minetest.register_craft({
|
||||||
|
type = "cooking",
|
||||||
|
output = "scifi_nodes:pot",
|
||||||
|
recipe = "scifi_nodes:pot2",
|
||||||
|
})
|
||||||
|
|
||||||
-- 6 itemholder from 2 dented metal block and 1 plastic
|
-- 6 itemholder from 2 dented metal block and 1 plastic
|
||||||
minetest.register_craft({
|
minetest.register_craft({
|
||||||
output = "scifi_nodes:itemholder 6",
|
output = "scifi_nodes:itemholder 6",
|
||||||
@@ -1282,10 +1392,13 @@ minetest.register_craft({
|
|||||||
})
|
})
|
||||||
|
|
||||||
-- https://forum.minetest.net/viewtopic.php?f=10&t=13125&p=261481#p261481
|
-- https://forum.minetest.net/viewtopic.php?f=10&t=13125&p=261481#p261481
|
||||||
|
-- with modified recipe
|
||||||
minetest.register_craft({
|
minetest.register_craft({
|
||||||
output = 'scifi_nodes:windowpanel 4',
|
output = 'scifi_nodes:windowpanel',
|
||||||
recipe = {
|
recipe = {
|
||||||
{"scifi_nodes:glass","",""}
|
{"scifi_nodes:glass_pane","scifi_nodes:glass_pane",""},
|
||||||
|
{"scifi_nodes:glass_pane","scifi_nodes:glass_pane",""},
|
||||||
|
{"","",""}
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@@ -1433,9 +1546,9 @@ minetest.register_craft({
|
|||||||
minetest.register_craft({
|
minetest.register_craft({
|
||||||
output = "scifi_nodes:plant8",
|
output = "scifi_nodes:plant8",
|
||||||
recipe = {
|
recipe = {
|
||||||
{"flowers:viola","default:junglegrass"},
|
{"flowers:viola","default:junglegrass", "default:grass_1"},
|
||||||
{"default:dirt",""},
|
{"default:dirt","",""},
|
||||||
{"scifi_nodes:greybolts",""}
|
{"scifi_nodes:greybolts","",""}
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@@ -1564,6 +1677,25 @@ minetest.register_craft({
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
|
minetest.register_craft({
|
||||||
|
output = 'scifi_nodes:green2 6',
|
||||||
|
recipe = {
|
||||||
|
{"scifi_nodes:white","dye:dark_green","scifi_nodes:white"},
|
||||||
|
{"scifi_nodes:black","dye:dark_green","scifi_nodes:black"},
|
||||||
|
{"scifi_nodes:white","dye:green","scifi_nodes:white"}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
|
minetest.register_craft({
|
||||||
|
output = 'scifi_nodes:doomwall4 6',
|
||||||
|
recipe = {
|
||||||
|
{"scifi_nodes:white","dye:dark_green","scifi_nodes:white"},
|
||||||
|
{"scifi_nodes:black","dye:dark_green","scifi_nodes:black"},
|
||||||
|
{"scifi_nodes:white","dye:dark_green","scifi_nodes:white"}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
minetest.register_craft({
|
minetest.register_craft({
|
||||||
output = 'scifi_nodes:doomwall41 6',
|
output = 'scifi_nodes:doomwall41 6',
|
||||||
recipe = {
|
recipe = {
|
||||||
@@ -1582,15 +1714,6 @@ minetest.register_craft({
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
minetest.register_craft({
|
|
||||||
output = 'scifi_nodes:doomwall43 6',
|
|
||||||
recipe = {
|
|
||||||
{"scifi_nodes:white","dye:black","scifi_nodes:white"},
|
|
||||||
{"scifi_nodes:black","dye:dark_green","scifi_nodes:black"},
|
|
||||||
{"scifi_nodes:white","dye:yellow","scifi_nodes:white"}
|
|
||||||
}
|
|
||||||
})
|
|
||||||
|
|
||||||
minetest.register_craft({
|
minetest.register_craft({
|
||||||
output = 'scifi_nodes:doomwall43 6',
|
output = 'scifi_nodes:doomwall43 6',
|
||||||
recipe = {
|
recipe = {
|
||||||
@@ -1680,7 +1803,7 @@ minetest.register_craft({
|
|||||||
minetest.register_craft({
|
minetest.register_craft({
|
||||||
output = 'scifi_nodes:stripes2top 3',
|
output = 'scifi_nodes:stripes2top 3',
|
||||||
recipe = {
|
recipe = {
|
||||||
{"scifi_nodes:black","scifi_noedes:black","scifi_nodes:black"},
|
{"scifi_nodes:black","scifi_nodes:black","scifi_nodes:black"},
|
||||||
{"default:silver_sand","default:silver_sand","default:silver_sand"}
|
{"default:silver_sand","default:silver_sand","default:silver_sand"}
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
@@ -1693,3 +1816,47 @@ minetest.register_craft({
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
|
minetest.register_craft({
|
||||||
|
output = "scifi_nodes:fan",
|
||||||
|
recipe = {
|
||||||
|
{"scifi_nodes:grey", "", "scifi_nodes:grey"},
|
||||||
|
{"", "scifi_nodes:vent2", ""},
|
||||||
|
{"scifi_nodes:grey", "", "scifi_nodes:grey"}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
minetest.register_craft({
|
||||||
|
output = "scifi_nodes:engine",
|
||||||
|
recipe = {
|
||||||
|
{"scifi_nodes:bluwllight", "", "scifi_nodes:bluwllight"},
|
||||||
|
{"scifi_nodes:screen", "scifi_nodes:fan", "scifi_nodes:screen3"},
|
||||||
|
{"scifi_nodes:bluwllight", "", "scifi_nodes:bluwllight"}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
minetest.register_craft({
|
||||||
|
output = "scifi_nodes:forcefield 4",
|
||||||
|
recipe = {
|
||||||
|
{"scifi_nodes:octbl", "", "scifi_nodes:octbl"},
|
||||||
|
{"", "scifi_nodes:engine", ""},
|
||||||
|
{"scifi_nodes:octbl", "", "scifi_nodes:octbl"}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
minetest.register_craft({
|
||||||
|
output = "scifi_nodes:vent3 4",
|
||||||
|
recipe = {
|
||||||
|
{"scifi_nodes:vent2", "", "scifi_nodes:vent2"},
|
||||||
|
{"", "scifi_nodes:glass", ""},
|
||||||
|
{"scifi_nodes:vent2", "", "scifi_nodes:vent2"}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
minetest.register_craft({
|
||||||
|
output = "scifi_nodes:mesh3 4",
|
||||||
|
recipe = {
|
||||||
|
{"scifi_nodes:mesh2", "", "scifi_nodes:mesh2"},
|
||||||
|
{"", "scifi_nodes:glass", ""},
|
||||||
|
{"scifi_nodes:mesh2", "", "scifi_nodes:mesh2"}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
10
depends.txt
10
depends.txt
@@ -1,10 +0,0 @@
|
|||||||
default
|
|
||||||
basic_materials
|
|
||||||
mesecons
|
|
||||||
xpanes?
|
|
||||||
moreblocks?
|
|
||||||
mesecons_microcontroller?
|
|
||||||
mesecons_button?
|
|
||||||
mesecons_torch?
|
|
||||||
mesecons_receiver?
|
|
||||||
dye?
|
|
12
digicode.lua
12
digicode.lua
@@ -11,7 +11,7 @@ local digicode_context = {}
|
|||||||
|
|
||||||
-- after_place_node, use by digicode and palm_scanner
|
-- after_place_node, use by digicode and palm_scanner
|
||||||
-- placer is a player object
|
-- placer is a player object
|
||||||
local function set_owner(pos, placer, itemstack, pointed_thing)
|
local function set_owner(pos, placer)
|
||||||
local meta = minetest.get_meta(pos)
|
local meta = minetest.get_meta(pos)
|
||||||
meta:set_string("owner", placer:get_player_name())
|
meta:set_string("owner", placer:get_player_name())
|
||||||
meta:set_string("code", secret_code)
|
meta:set_string("code", secret_code)
|
||||||
@@ -48,7 +48,7 @@ local function update_code(pos, code)
|
|||||||
meta:set_string("code", code)
|
meta:set_string("code", code)
|
||||||
end
|
end
|
||||||
|
|
||||||
local function show_digicode_formspec(pos, node, player, itemstack, pointed_thing)
|
local function show_digicode_formspec(pos, _, player)
|
||||||
local meta = minetest.get_meta(pos)
|
local meta = minetest.get_meta(pos)
|
||||||
local owner = meta:get_string("owner")
|
local owner = meta:get_string("owner")
|
||||||
local current_code = meta:get_string("code")
|
local current_code = meta:get_string("code")
|
||||||
@@ -122,14 +122,15 @@ minetest.register_node("scifi_nodes:digicode_on", {
|
|||||||
paramtype2 = "wallmounted",
|
paramtype2 = "wallmounted",
|
||||||
light_source = 5,
|
light_source = 5,
|
||||||
groups = {cracky=1, oddly_breakable_by_hand=1, not_in_creative_inventory=1, mesecon_needs_receiver = 1},
|
groups = {cracky=1, oddly_breakable_by_hand=1, not_in_creative_inventory=1, mesecon_needs_receiver = 1},
|
||||||
drop = {items = {"scifi_nodes:digicode_off"}},
|
is_ground_content = false,
|
||||||
|
drop = "scifi_nodes:digicode_off",
|
||||||
mesecons = {
|
mesecons = {
|
||||||
receptor = {
|
receptor = {
|
||||||
state = (has_mesecons and mesecon.state.on)
|
state = (has_mesecons and mesecon.state.on)
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
on_timer = toggle_digicode,
|
on_timer = toggle_digicode,
|
||||||
sounds = default.node_sound_glass_defaults(),
|
sounds = scifi_nodes.node_sound_metal_defaults(),
|
||||||
})
|
})
|
||||||
|
|
||||||
minetest.register_node("scifi_nodes:digicode_off", {
|
minetest.register_node("scifi_nodes:digicode_off", {
|
||||||
@@ -145,6 +146,7 @@ minetest.register_node("scifi_nodes:digicode_off", {
|
|||||||
paramtype = "light",
|
paramtype = "light",
|
||||||
paramtype2 = "wallmounted",
|
paramtype2 = "wallmounted",
|
||||||
groups = {cracky=1, oddly_breakable_by_hand=1, mesecon_needs_receiver = 1},
|
groups = {cracky=1, oddly_breakable_by_hand=1, mesecon_needs_receiver = 1},
|
||||||
|
is_ground_content = false,
|
||||||
mesecons = {
|
mesecons = {
|
||||||
receptor = {
|
receptor = {
|
||||||
state = (has_mesecons and mesecon.state.off)
|
state = (has_mesecons and mesecon.state.off)
|
||||||
@@ -152,7 +154,7 @@ minetest.register_node("scifi_nodes:digicode_off", {
|
|||||||
},
|
},
|
||||||
after_place_node = set_owner,
|
after_place_node = set_owner,
|
||||||
on_rightclick = show_digicode_formspec,
|
on_rightclick = show_digicode_formspec,
|
||||||
sounds = default.node_sound_glass_defaults(),
|
sounds = scifi_nodes.node_sound_metal_defaults(),
|
||||||
})
|
})
|
||||||
|
|
||||||
minetest.register_craft({
|
minetest.register_craft({
|
||||||
|
191
doors.lua
191
doors.lua
@@ -40,10 +40,10 @@ minetest.register_alias("scifi_nodes:door4d","scifi_nodes:green_door_opened_top"
|
|||||||
|
|
||||||
-- This table now uses named parameters and more convenient variables names
|
-- This table now uses named parameters and more convenient variables names
|
||||||
local doors = {
|
local doors = {
|
||||||
{base_name = "Doom", base_ingredient = "doors:door_obsidian_glass", sound = "scifi_nodes_door_mechanic"},
|
{base_name = "Doom", base_ingredient = "doors:door_obsidian_glass", sound = "scifi_nodes_door_normal"},
|
||||||
{base_name = "black", base_ingredient = "doors:door_steel", sound = "scifi_nodes_door_mechanic"},
|
{base_name = "black", base_ingredient = "doors:door_steel", sound = "scifi_nodes_door_normal"},
|
||||||
{base_name = "white", base_ingredient = "doors:door_glass", sound = "scifi_nodes_door_normal"},
|
{base_name = "white", base_ingredient = "doors:door_glass", sound = "scifi_nodes_door_normal"},
|
||||||
{base_name = "green", base_ingredient = "doors:door_wood", sound = "scifi_nodes_door_mechanic"},
|
{base_name = "green", base_ingredient = "doors:door_wood", sound = "scifi_nodes_door_normal"},
|
||||||
{base_name = "blue", base_ingredient = "default:steelblock", sound = "scifi_nodes_door_normal"}
|
{base_name = "blue", base_ingredient = "default:steelblock", sound = "scifi_nodes_door_normal"}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -120,11 +120,46 @@ for _, current_door in ipairs(doors) do
|
|||||||
return itemstack;
|
return itemstack;
|
||||||
end
|
end
|
||||||
|
|
||||||
local function afterdestruct(pos, oldnode)
|
local function afterdestruct(pos)
|
||||||
minetest.set_node({x=pos.x,y=pos.y+1,z=pos.z},{name="air"})
|
minetest.set_node({x=pos.x,y=pos.y+1,z=pos.z},{name="air"})
|
||||||
end
|
end
|
||||||
|
|
||||||
local function open_door(pos, node, player, itemstack, pointed_thing)
|
local function change_adjacent(target, pos, node)
|
||||||
|
local target_opposite, target_top
|
||||||
|
if target == opened then
|
||||||
|
target_top = opened_top
|
||||||
|
target_opposite = closed
|
||||||
|
else
|
||||||
|
target_top = closed_top
|
||||||
|
target_opposite = opened
|
||||||
|
end
|
||||||
|
|
||||||
|
for offset = -1,1,2 do
|
||||||
|
local x = pos.x
|
||||||
|
local y = pos.y
|
||||||
|
local z = pos.z
|
||||||
|
|
||||||
|
-- match param2=0 or param2=2
|
||||||
|
if node.param2 % 2 == 0 then
|
||||||
|
x = x + offset
|
||||||
|
else
|
||||||
|
z = z + offset
|
||||||
|
end
|
||||||
|
|
||||||
|
local adjacent = minetest.get_node({x=x, y=y, z=z})
|
||||||
|
if adjacent.name == target_opposite then
|
||||||
|
minetest.swap_node({x=x, y=y, z=z}, {name=target, param2 = adjacent.param2})
|
||||||
|
minetest.swap_node({x=x, y=y+1, z=z}, {name=target_top, param2 = adjacent.param2})
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
local function open_door(pos, node, player, itemstack)
|
||||||
|
if not scifi_nodes.door_check_access_card(pos, itemstack, player) then
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
-- play sound
|
-- play sound
|
||||||
minetest.sound_play(sound,{
|
minetest.sound_play(sound,{
|
||||||
max_hear_distance = 16,
|
max_hear_distance = 16,
|
||||||
@@ -133,60 +168,21 @@ for _, current_door in ipairs(doors) do
|
|||||||
})
|
})
|
||||||
|
|
||||||
local timer = minetest.get_node_timer(pos)
|
local timer = minetest.get_node_timer(pos)
|
||||||
local a = minetest.get_node({x=pos.x, y=pos.y, z=pos.z-1})
|
|
||||||
local b = minetest.get_node({x=pos.x, y=pos.y, z=pos.z+1})
|
|
||||||
local c = minetest.get_node({x=pos.x+1, y=pos.y, z=pos.z})
|
|
||||||
local d = minetest.get_node({x=pos.x-1, y=pos.y, z=pos.z})
|
|
||||||
local e = minetest.get_node({x=pos.x+1, y=pos.y, z=pos.z-1})
|
|
||||||
local f = minetest.get_node({x=pos.x-1, y=pos.y, z=pos.z-1})
|
|
||||||
local g = minetest.get_node({x=pos.x+1, y=pos.y, z=pos.z+1})
|
|
||||||
local h = minetest.get_node({x=pos.x-1, y=pos.y, z=pos.z+1})
|
|
||||||
|
|
||||||
|
minetest.swap_node(pos, {name=opened, param2=node.param2})
|
||||||
|
minetest.swap_node({x=pos.x,y=pos.y+1,z=pos.z}, {name=opened_top, param2=node.param2})
|
||||||
|
|
||||||
minetest.set_node(pos, {name=opened, param2=node.param2})
|
change_adjacent(opened, pos, node)
|
||||||
minetest.set_node({x=pos.x,y=pos.y+1,z=pos.z}, {name=opened_top, param2=node.param2})
|
|
||||||
|
|
||||||
if a.name == closed then
|
|
||||||
minetest.set_node({x=pos.x, y=pos.y, z=pos.z-1}, {name=opened, param2=a.param2})
|
|
||||||
minetest.set_node({x=pos.x,y=pos.y+1,z=pos.z-1}, {name=opened_top, param2=a.param2})
|
|
||||||
end
|
|
||||||
if b.name == closed then
|
|
||||||
minetest.set_node({x=pos.x, y=pos.y, z=pos.z+1}, {name=opened, param2=b.param2})
|
|
||||||
minetest.set_node({x=pos.x,y=pos.y+1,z=pos.z+1}, {name=opened_top, param2=b.param2})
|
|
||||||
end
|
|
||||||
if c.name == closed then
|
|
||||||
minetest.set_node({x=pos.x+1, y=pos.y, z=pos.z}, {name=opened, param2=c.param2})
|
|
||||||
minetest.set_node({x=pos.x+1,y=pos.y+1,z=pos.z}, {name=opened_top, param2=c.param2})
|
|
||||||
end
|
|
||||||
if d.name == closed then
|
|
||||||
minetest.set_node({x=pos.x-1, y=pos.y, z=pos.z}, {name=opened, param2=d.param2})
|
|
||||||
minetest.set_node({x=pos.x-1,y=pos.y+1,z=pos.z}, {name=opened_top, param2=d.param2})
|
|
||||||
end
|
|
||||||
if e.name == closed then
|
|
||||||
minetest.set_node({x=pos.x+1, y=pos.y, z=pos.z-1}, {name=opened, param2=e.param2})
|
|
||||||
minetest.set_node({x=pos.x+1, y=pos.y+1, z=pos.z-1}, {name=opened_top, param2=e.param2})
|
|
||||||
end
|
|
||||||
if f.name == closed then
|
|
||||||
minetest.set_node({x=pos.x-1, y=pos.y, z=pos.z-1}, {name=opened, param2=f.param2})
|
|
||||||
minetest.set_node({x=pos.x-1, y=pos.y+1, z=pos.z-1}, {name=opened_top, param2=f.param2})
|
|
||||||
end
|
|
||||||
if g.name == closed then
|
|
||||||
minetest.set_node({x=pos.x+1, y=pos.y, z=pos.z+1}, {name=opened, param2=g.param2})
|
|
||||||
minetest.set_node({x=pos.x+1, y=pos.y+1, z=pos.z+1}, {name=opened_top, param2=g.param2})
|
|
||||||
end
|
|
||||||
if h.name == closed then
|
|
||||||
minetest.set_node({x=pos.x-1, y=pos.y, z=pos.z+1}, {name=opened, param2=h.param2})
|
|
||||||
minetest.set_node({x=pos.x-1, y=pos.y+1, z=pos.z+1}, {name=opened_top, param2=h.param2})
|
|
||||||
end
|
|
||||||
timer:start(3)
|
timer:start(3)
|
||||||
end
|
end
|
||||||
|
|
||||||
local function afterplace(pos, placer, itemstack, pointed_thing)
|
local function afterplace(pos)
|
||||||
local node = minetest.get_node(pos)
|
local node = minetest.get_node(pos)
|
||||||
minetest.set_node({x=pos.x,y=pos.y+1,z=pos.z},{name=opened_top,param2=node.param2})
|
minetest.set_node({x=pos.x,y=pos.y+1,z=pos.z},{name=opened_top,param2=node.param2})
|
||||||
end
|
end
|
||||||
|
|
||||||
local function ontimer(pos, elapsed)
|
local function ontimer(pos)
|
||||||
-- play sound
|
-- play sound
|
||||||
minetest.sound_play(sound,{
|
minetest.sound_play(sound,{
|
||||||
max_hear_distance = 16,
|
max_hear_distance = 16,
|
||||||
@@ -195,50 +191,11 @@ for _, current_door in ipairs(doors) do
|
|||||||
})
|
})
|
||||||
|
|
||||||
local node = minetest.get_node(pos)
|
local node = minetest.get_node(pos)
|
||||||
local a = minetest.get_node({x=pos.x, y=pos.y, z=pos.z-1})
|
|
||||||
local b = minetest.get_node({x=pos.x, y=pos.y, z=pos.z+1})
|
|
||||||
local c = minetest.get_node({x=pos.x+1, y=pos.y, z=pos.z})
|
|
||||||
local d = minetest.get_node({x=pos.x-1, y=pos.y, z=pos.z})
|
|
||||||
local e = minetest.get_node({x=pos.x+1, y=pos.y, z=pos.z-1})
|
|
||||||
local f = minetest.get_node({x=pos.x-1, y=pos.y, z=pos.z-1})
|
|
||||||
local g = minetest.get_node({x=pos.x+1, y=pos.y, z=pos.z+1})
|
|
||||||
local h = minetest.get_node({x=pos.x-1, y=pos.y, z=pos.z+1})
|
|
||||||
|
|
||||||
minetest.set_node(pos, {name=closed, param2=node.param2})
|
minetest.swap_node(pos, {name=closed, param2=node.param2})
|
||||||
minetest.set_node({x=pos.x,y=pos.y+1,z=pos.z}, {name=closed_top, param2=node.param2})
|
minetest.swap_node({x=pos.x,y=pos.y+1,z=pos.z}, {name=closed_top, param2=node.param2})
|
||||||
|
|
||||||
if a.name == opened then
|
change_adjacent(closed, pos, node)
|
||||||
minetest.set_node({x=pos.x, y=pos.y, z=pos.z-1}, {name=closed, param2=a.param2})
|
|
||||||
minetest.set_node({x=pos.x,y=pos.y+1,z=pos.z-1}, {name=closed_top, param2=a.param2})
|
|
||||||
end
|
|
||||||
if b.name == opened then
|
|
||||||
minetest.set_node({x=pos.x, y=pos.y, z=pos.z+1}, {name=closed, param2=b.param2})
|
|
||||||
minetest.set_node({x=pos.x,y=pos.y+1,z=pos.z+1}, {name=closed_top, param2=b.param2})
|
|
||||||
end
|
|
||||||
if c.name == opened then
|
|
||||||
minetest.set_node({x=pos.x+1, y=pos.y, z=pos.z}, {name=closed, param2=c.param2})
|
|
||||||
minetest.set_node({x=pos.x+1,y=pos.y+1,z=pos.z}, {name=closed_top, param2=c.param2})
|
|
||||||
end
|
|
||||||
if d.name == opened then
|
|
||||||
minetest.set_node({x=pos.x-1, y=pos.y, z=pos.z}, {name=closed, param2=d.param2})
|
|
||||||
minetest.set_node({x=pos.x-1,y=pos.y+1,z=pos.z}, {name=closed_top, param2=d.param2})
|
|
||||||
end
|
|
||||||
if e.name == opened then
|
|
||||||
minetest.set_node({x=pos.x+1, y=pos.y, z=pos.z-1}, {name=closed, param2=e.param2})
|
|
||||||
minetest.set_node({x=pos.x+1, y=pos.y+1, z=pos.z-1}, {name=closed_top, param2=e.param2})
|
|
||||||
end
|
|
||||||
if f.name == opened then
|
|
||||||
minetest.set_node({x=pos.x-1, y=pos.y, z=pos.z-1}, {name=closed, param2=f.param2})
|
|
||||||
minetest.set_node({x=pos.x-1, y=pos.y+1, z=pos.z-1}, {name=closed_top, param2=f.param2})
|
|
||||||
end
|
|
||||||
if g.name == opened then
|
|
||||||
minetest.set_node({x=pos.x+1, y=pos.y, z=pos.z+1}, {name=closed, param2=g.param2})
|
|
||||||
minetest.set_node({x=pos.x+1, y=pos.y+1, z=pos.z+1}, {name=closed_top, param2=g.param2})
|
|
||||||
end
|
|
||||||
if h.name == opened then
|
|
||||||
minetest.set_node({x=pos.x-1, y=pos.y, z=pos.z+1}, {name=closed, param2=h.param2})
|
|
||||||
minetest.set_node({x=pos.x-1, y=pos.y+1, z=pos.z+1}, {name=closed_top, param2=h.param2})
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
|
|
||||||
local mesecons_doors_rules = {
|
local mesecons_doors_rules = {
|
||||||
@@ -265,6 +222,10 @@ for _, current_door in ipairs(doors) do
|
|||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
local function nodig()
|
||||||
|
return false
|
||||||
|
end
|
||||||
|
|
||||||
local doors_rightclick = nil -- Crashes serv if empty table !
|
local doors_rightclick = nil -- Crashes serv if empty table !
|
||||||
if not scifi_nodes.doors_open_with_mesecon_only then doors_rightclick = open_door end
|
if not scifi_nodes.doors_open_with_mesecon_only then doors_rightclick = open_door end
|
||||||
|
|
||||||
@@ -283,7 +244,13 @@ for _, current_door in ipairs(doors) do
|
|||||||
drawtype = "nodebox",
|
drawtype = "nodebox",
|
||||||
paramtype = "light",
|
paramtype = "light",
|
||||||
paramtype2 = "facedir",
|
paramtype2 = "facedir",
|
||||||
groups = {cracky = 3, oddly_breakable_by_hand = 1},
|
groups = {
|
||||||
|
cracky = 3,
|
||||||
|
dig_generic = 3,
|
||||||
|
scifi_nodes_door = 1,
|
||||||
|
door = 1
|
||||||
|
},
|
||||||
|
is_ground_content = false,
|
||||||
node_box = {
|
node_box = {
|
||||||
type = "fixed",
|
type = "fixed",
|
||||||
fixed = {
|
fixed = {
|
||||||
@@ -296,10 +263,12 @@ for _, current_door in ipairs(doors) do
|
|||||||
{-0.5, -0.5, -0.0625, 0.5, 1.5, 0.0625}
|
{-0.5, -0.5, -0.0625, 0.5, 1.5, 0.0625}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
_open = open_door,
|
||||||
mesecons = mesecons_doors_def,
|
mesecons = mesecons_doors_def,
|
||||||
on_place = onplace,
|
on_place = onplace,
|
||||||
after_destruct = afterdestruct,
|
after_destruct = afterdestruct,
|
||||||
on_rightclick = doors_rightclick,
|
on_rightclick = doors_rightclick,
|
||||||
|
sounds = scifi_nodes.node_sound_metal_defaults(),
|
||||||
})
|
})
|
||||||
|
|
||||||
minetest.register_node(closed_top, {
|
minetest.register_node(closed_top, {
|
||||||
@@ -314,7 +283,8 @@ for _, current_door in ipairs(doors) do
|
|||||||
drawtype = "nodebox",
|
drawtype = "nodebox",
|
||||||
paramtype = "light",
|
paramtype = "light",
|
||||||
paramtype2 = "facedir",
|
paramtype2 = "facedir",
|
||||||
groups = {cracky = 1},
|
groups = {cracky = 1, dig_generic = 3, door = 1},
|
||||||
|
is_ground_content = false,
|
||||||
node_box = {
|
node_box = {
|
||||||
type = "fixed",
|
type = "fixed",
|
||||||
fixed = {
|
fixed = {
|
||||||
@@ -327,6 +297,8 @@ for _, current_door in ipairs(doors) do
|
|||||||
{0, 0, 0, 0, 0, 0},
|
{0, 0, 0, 0, 0, 0},
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
can_dig = nodig,
|
||||||
|
sounds = scifi_nodes.node_sound_metal_defaults(),
|
||||||
})
|
})
|
||||||
|
|
||||||
minetest.register_node(opened, {
|
minetest.register_node(opened, {
|
||||||
@@ -342,7 +314,8 @@ for _, current_door in ipairs(doors) do
|
|||||||
paramtype = "light",
|
paramtype = "light",
|
||||||
paramtype2 = "facedir",
|
paramtype2 = "facedir",
|
||||||
drop = closed,
|
drop = closed,
|
||||||
groups = {cracky = 1},
|
groups = {cracky = 1, dig_generic = 3, door = 2},
|
||||||
|
is_ground_content = false,
|
||||||
node_box = {
|
node_box = {
|
||||||
type = "fixed",
|
type = "fixed",
|
||||||
fixed = {
|
fixed = {
|
||||||
@@ -358,6 +331,7 @@ for _, current_door in ipairs(doors) do
|
|||||||
after_place_node = afterplace,
|
after_place_node = afterplace,
|
||||||
after_destruct = afterdestruct,
|
after_destruct = afterdestruct,
|
||||||
on_timer = ontimer,
|
on_timer = ontimer,
|
||||||
|
sounds = scifi_nodes.node_sound_metal_defaults(),
|
||||||
})
|
})
|
||||||
|
|
||||||
minetest.register_node(opened_top, {
|
minetest.register_node(opened_top, {
|
||||||
@@ -372,7 +346,8 @@ for _, current_door in ipairs(doors) do
|
|||||||
drawtype = "nodebox",
|
drawtype = "nodebox",
|
||||||
paramtype = "light",
|
paramtype = "light",
|
||||||
paramtype2 = "facedir",
|
paramtype2 = "facedir",
|
||||||
groups = {cracky = 1},
|
groups = {cracky = 1, dig_generic = 3, door = 2},
|
||||||
|
is_ground_content = false,
|
||||||
node_box = {
|
node_box = {
|
||||||
type = "fixed",
|
type = "fixed",
|
||||||
fixed = {
|
fixed = {
|
||||||
@@ -385,5 +360,31 @@ for _, current_door in ipairs(doors) do
|
|||||||
{0, 0, 0, 0, 0, 0},
|
{0, 0, 0, 0, 0, 0},
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
can_dig = nodig,
|
||||||
|
sounds = scifi_nodes.node_sound_metal_defaults(),
|
||||||
})
|
})
|
||||||
end -- end of doors table browsing
|
end -- end of doors table browsing
|
||||||
|
|
||||||
|
-- opens the scifi-door at the given position
|
||||||
|
function scifi_nodes.open_door(pos)
|
||||||
|
local node = minetest.get_node_or_nil(pos)
|
||||||
|
if not node then
|
||||||
|
-- area not loaded
|
||||||
|
return false
|
||||||
|
end
|
||||||
|
|
||||||
|
local def = minetest.registered_nodes[node.name]
|
||||||
|
if type(def._open) ~= "function" then
|
||||||
|
-- open function not found
|
||||||
|
return false
|
||||||
|
end
|
||||||
|
|
||||||
|
if not def.groups or not def.groups.scifi_nodes_door then
|
||||||
|
-- not a scifi_nodes door
|
||||||
|
return false
|
||||||
|
end
|
||||||
|
|
||||||
|
-- call open function
|
||||||
|
def._open(pos, node)
|
||||||
|
return true
|
||||||
|
end
|
||||||
|
22
forcefield.lua
Normal file
22
forcefield.lua
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
minetest.register_node("scifi_nodes:forcefield", {
|
||||||
|
description = "Forcefield",
|
||||||
|
sunlight_propagates = true,
|
||||||
|
drawtype = "glasslike",
|
||||||
|
groups = {
|
||||||
|
cracky = 1,
|
||||||
|
level = 3
|
||||||
|
},
|
||||||
|
is_ground_content = false,
|
||||||
|
sounds = scifi_nodes.node_sound_glass_defaults(),
|
||||||
|
paramtype = "light",
|
||||||
|
light_source = minetest.LIGHT_MAX,
|
||||||
|
tiles = {{
|
||||||
|
name = "scifi_nodes_forcefield.png",
|
||||||
|
animation = {
|
||||||
|
type = "vertical_frames",
|
||||||
|
aspect_w = 16,
|
||||||
|
aspect_h = 16,
|
||||||
|
length = 1.0,
|
||||||
|
}
|
||||||
|
}}
|
||||||
|
})
|
35
init.lua
35
init.lua
@@ -4,19 +4,50 @@ scifi_nodes = {}
|
|||||||
|
|
||||||
local MP = minetest.get_modpath("scifi_nodes")
|
local MP = minetest.get_modpath("scifi_nodes")
|
||||||
|
|
||||||
|
|
||||||
|
dofile(MP.."/sounds.lua")
|
||||||
|
|
||||||
if minetest.get_modpath("xpanes") then
|
if minetest.get_modpath("xpanes") then
|
||||||
dofile(MP.."/panes.lua")
|
dofile(MP.."/panes.lua")
|
||||||
end
|
end
|
||||||
|
|
||||||
dofile(MP.."/common.lua")
|
dofile(MP.."/common.lua")
|
||||||
|
|
||||||
|
if minetest.get_modpath("default") then
|
||||||
|
-- only load builder if the default mod is available
|
||||||
|
-- the formspecs depend on it
|
||||||
dofile(MP.."/builder.lua")
|
dofile(MP.."/builder.lua")
|
||||||
|
end
|
||||||
|
|
||||||
|
dofile(MP.."/ambience.lua")
|
||||||
dofile(MP.."/chest.lua")
|
dofile(MP.."/chest.lua")
|
||||||
dofile(MP.."/plants.lua")
|
dofile(MP.."/plants.lua")
|
||||||
|
dofile(MP.."/models.lua")
|
||||||
dofile(MP.."/nodes.lua")
|
dofile(MP.."/nodes.lua")
|
||||||
|
dofile(MP.."/access_card.lua")
|
||||||
dofile(MP.."/doors.lua")
|
dofile(MP.."/doors.lua")
|
||||||
dofile(MP.."/switches.lua")
|
dofile(MP.."/switch.lua")
|
||||||
|
dofile(MP.."/protected_switch.lua")
|
||||||
dofile(MP.."/nodeboxes.lua")
|
dofile(MP.."/nodeboxes.lua")
|
||||||
dofile(MP.."/palm_scanner.lua")
|
dofile(MP.."/palm_scanner.lua")
|
||||||
dofile(MP.."/digicode.lua")
|
dofile(MP.."/digicode.lua")
|
||||||
dofile(MP.."/models.lua")
|
dofile(MP.."/octagon_panes.lua")
|
||||||
|
dofile(MP.."/octagon_glass.lua")
|
||||||
|
dofile(MP.."/forcefield.lua")
|
||||||
dofile(MP.."/crafts.lua")
|
dofile(MP.."/crafts.lua")
|
||||||
|
|
||||||
|
if minetest.get_modpath("letters") then
|
||||||
|
-- register letter nodes
|
||||||
|
dofile(MP.."/letters.lua")
|
||||||
|
end
|
||||||
|
|
||||||
|
if minetest.get_modpath("mesecons_stealthnode") then
|
||||||
|
-- register stealthnodes
|
||||||
|
dofile(MP.."/stealthnodes.lua")
|
||||||
|
end
|
||||||
|
|
||||||
|
if minetest.get_modpath("mtt") and mtt.enabled then
|
||||||
|
dofile(MP .. "/mtt.lua")
|
||||||
|
end
|
||||||
|
|
||||||
|
minetest.log("action", "[scifi_nodes] loaded.")
|
||||||
|
11
letters.lua
Normal file
11
letters.lua
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
letters.register_letters("scifi_nodes", "white2", "scifi_nodes:white2", "Plastic", "scifi_nodes_white2.png", {
|
||||||
|
paramtype2 = "colorwallmounted",
|
||||||
|
palette = "unifieddyes_palette_colorwallmounted.png",
|
||||||
|
groups = {
|
||||||
|
ud_param2_colorable = 1,
|
||||||
|
not_in_creative_inventory = 1,
|
||||||
|
not_in_craft_guide = 1,
|
||||||
|
oddly_breakable_by_hand = 1,
|
||||||
|
attached_node = 1
|
||||||
|
}
|
||||||
|
})
|
21
mod.conf
21
mod.conf
@@ -1,4 +1,21 @@
|
|||||||
name = scifi_nodes
|
name = scifi_nodes
|
||||||
description = Minetest mod that adds scifi themed blocks, doors, materials, plants and other assets.
|
description = Minetest mod that adds scifi themed blocks, doors, materials, plants and other assets.
|
||||||
depends = default,dye
|
optional_depends = """
|
||||||
optional_depends = xpanes,mesecons,moreblocks,mesecons_microcontroller,mesecons_button,mesecons_torch,mesecons_receiver,basic_materials
|
advtrains,
|
||||||
|
default,
|
||||||
|
xpanes,
|
||||||
|
mesecons,
|
||||||
|
moreblocks,
|
||||||
|
mesecons_microcontroller,
|
||||||
|
mesecons_button,
|
||||||
|
mesecons_torch,
|
||||||
|
mesecons_receiver,
|
||||||
|
basic_materials,
|
||||||
|
dye,
|
||||||
|
unifieddyes,
|
||||||
|
letters,
|
||||||
|
mesecons_stealthnode,
|
||||||
|
mtt,
|
||||||
|
slats,
|
||||||
|
signs_api
|
||||||
|
"""
|
||||||
|
154
models.lua
154
models.lua
@@ -2,43 +2,37 @@
|
|||||||
--Copyright (c) 2011-2015 Calinou and contributors.
|
--Copyright (c) 2011-2015 Calinou and contributors.
|
||||||
--Licensed under the zlib license.
|
--Licensed under the zlib license.
|
||||||
|
|
||||||
function scifi_nodes.register_slope(name, desc, texture, light)
|
function scifi_nodes.register_slope(name, desc, texture, light, soundtype)
|
||||||
|
local sounds
|
||||||
|
if soundtype == "stone" then
|
||||||
|
sounds = scifi_nodes.node_sound_stone_defaults()
|
||||||
|
else
|
||||||
|
sounds = scifi_nodes.node_sound_metal_defaults()
|
||||||
|
end
|
||||||
|
|
||||||
minetest.register_node("scifi_nodes:slope_"..name, {
|
minetest.register_node("scifi_nodes:slope_"..name, {
|
||||||
description = desc.." Slope",
|
description = desc.." Slope",
|
||||||
sunlight_propagates = false,
|
sunlight_propagates = false,
|
||||||
drawtype = "mesh",
|
drawtype = "mesh",
|
||||||
mesh = "scifi_nodes_slope.obj",
|
mesh = "scifi_nodes_slope.obj",
|
||||||
tiles = texture,
|
tiles = texture,
|
||||||
selection_box = {
|
selection_box = scifi_nodes.slope_box,
|
||||||
type = "fixed",
|
collision_box = scifi_nodes.slope_box,
|
||||||
fixed = {
|
|
||||||
{-0.5, -0.5, -0.5, 0.5, -0.25, 0.5},
|
|
||||||
{-0.5, -0.25, -0.25, 0.5, 0, 0.5},
|
|
||||||
{-0.5, 0, 0, 0.5, 0.25, 0.5},
|
|
||||||
{-0.5, 0.25, 0.25, 0.5, 0.5, 0.5}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
collision_box = {
|
|
||||||
type = "fixed",
|
|
||||||
fixed = {
|
|
||||||
{-0.5, -0.5, -0.5, 0.5, -0.25, 0.5},
|
|
||||||
{-0.5, -0.25, -0.25, 0.5, 0, 0.5},
|
|
||||||
{-0.5, 0, 0, 0.5, 0.25, 0.5},
|
|
||||||
{-0.5, 0.25, 0.25, 0.5, 0.5, 0.5}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
paramtype = "light",
|
paramtype = "light",
|
||||||
paramtype2 = "facedir",
|
paramtype2 = "facedir",
|
||||||
|
use_texture_alpha = "clip",
|
||||||
light_source = light,
|
light_source = light,
|
||||||
groups = {cracky=1},
|
groups = {cracky=1, dig_generic = 3},
|
||||||
on_place = minetest.rotate_node
|
is_ground_content = false,
|
||||||
|
on_place = minetest.rotate_node,
|
||||||
|
sounds = sounds,
|
||||||
})
|
})
|
||||||
end
|
end
|
||||||
|
|
||||||
-- register some blocks in stairsplus if available (part of moreblocks)
|
-- register some blocks in stairsplus if available (part of moreblocks)
|
||||||
scifi_nodes.register_slope("white2", "Plastic", {"scifi_nodes_white2.png",}, 0)
|
scifi_nodes.register_slope("white2", "Plastic", {"scifi_nodes_white2.png",}, 0, "stone")
|
||||||
scifi_nodes.register_slope("super_white", "Super Plastic", {"scifi_nodes_super_white.png",}, 11)
|
scifi_nodes.register_slope("super_white", "Super Plastic", {"scifi_nodes_white2.png",}, 11, "stone")
|
||||||
scifi_nodes.register_slope("ultra_white", "Super Plastic", {"scifi_nodes_ultra_white.png",}, default.LIGHT_MAX)
|
scifi_nodes.register_slope("ultra_white", "Super Plastic", {"scifi_nodes_white2.png",},minetest.LIGHT_MAX, "stone")
|
||||||
scifi_nodes.register_slope("black", "Black", {"scifi_nodes_black.png",}, 0)
|
scifi_nodes.register_slope("black", "Black", {"scifi_nodes_black.png",}, 0)
|
||||||
scifi_nodes.register_slope("white", "White", {"scifi_nodes_white.png",}, 0)
|
scifi_nodes.register_slope("white", "White", {"scifi_nodes_white.png",}, 0)
|
||||||
scifi_nodes.register_slope("grey", "Grey", {"scifi_nodes_grey.png",}, 0)
|
scifi_nodes.register_slope("grey", "Grey", {"scifi_nodes_grey.png",}, 0)
|
||||||
@@ -53,8 +47,8 @@ scifi_nodes.register_slope("holes", "Holes", {"scifi_nodes_holes.png",}, 0)
|
|||||||
scifi_nodes.register_slope("pipe", "Pipe", {"scifi_nodes_pipe.png",}, 0)
|
scifi_nodes.register_slope("pipe", "Pipe", {"scifi_nodes_pipe.png",}, 0)
|
||||||
scifi_nodes.register_slope("stripes", "Stripes", {"scifi_nodes_stripes.png",}, 0)
|
scifi_nodes.register_slope("stripes", "Stripes", {"scifi_nodes_stripes.png",}, 0)
|
||||||
scifi_nodes.register_slope("screen", "Screen", {"scifi_nodes_screen3.png",}, 5)
|
scifi_nodes.register_slope("screen", "Screen", {"scifi_nodes_screen3.png",}, 5)
|
||||||
scifi_nodes.register_slope("lightstripe", "Lightstripe", {"scifi_nodes_lightstripe.png",}, default.LIGHT_MAX)
|
scifi_nodes.register_slope("lightstripe", "Lightstripe", {"scifi_nodes_lightstripe.png",}, minetest.LIGHT_MAX)
|
||||||
scifi_nodes.register_slope("blight2", "Blue Light 2", {"scifi_nodes_capsule3.png",}, default.LIGHT_MAX)
|
scifi_nodes.register_slope("blight2", "Blue Light 2", {"scifi_nodes_capsule3.png",}, minetest.LIGHT_MAX)
|
||||||
scifi_nodes.register_slope("wallpipe", "Alien Pipe", {"scifi_nodes_wallpipe.png",}, 0)
|
scifi_nodes.register_slope("wallpipe", "Alien Pipe", {"scifi_nodes_wallpipe.png",}, 0)
|
||||||
scifi_nodes.register_slope("alien", "Alien Wall", {"scifi_nodes_alnslp.png",}, 0)
|
scifi_nodes.register_slope("alien", "Alien Wall", {"scifi_nodes_alnslp.png",}, 0)
|
||||||
scifi_nodes.register_slope("purple", "Purple", {"scifi_nodes_purple.png",}, 0)
|
scifi_nodes.register_slope("purple", "Purple", {"scifi_nodes_purple.png",}, 0)
|
||||||
@@ -64,111 +58,3 @@ scifi_nodes.register_slope("bluemetal", "Blue metal", {"scifi_nodes_bluemetal.pn
|
|||||||
scifi_nodes.register_slope("wall", "Metal wall", {"scifi_nodes_wall.png",}, 0)
|
scifi_nodes.register_slope("wall", "Metal wall", {"scifi_nodes_wall.png",}, 0)
|
||||||
scifi_nodes.register_slope("rough", "Rough metal", {"scifi_nodes_rough.png",}, 0)
|
scifi_nodes.register_slope("rough", "Rough metal", {"scifi_nodes_rough.png",}, 0)
|
||||||
scifi_nodes.register_slope("blklt2", "Black stripe light", {"scifi_nodes_black_light2.png",}, 10)
|
scifi_nodes.register_slope("blklt2", "Black stripe light", {"scifi_nodes_black_light2.png",}, 10)
|
||||||
|
|
||||||
-- Register Nodes for Stairsplus
|
|
||||||
local node = {}
|
|
||||||
|
|
||||||
node.types = {
|
|
||||||
{"blue", "blue lines", "blue"},
|
|
||||||
{"holes", "metal with holes","holes"},
|
|
||||||
{"white2", "plastic", "white2"},
|
|
||||||
{"super_white", "Super Plastic", "super_white", 11},
|
|
||||||
{"ultra_white", "Ultra Plastic", "ultra_white", default.LIGHT_MAX},
|
|
||||||
-- {"engine", "engine", "engine"},
|
|
||||||
{"wall", "metal wall", "wall"},
|
|
||||||
{"white", "plastic wall", "white"},
|
|
||||||
{"stripes2top", "dirty metal block","metal2"},
|
|
||||||
{"rough", "rough metal", "rough"},
|
|
||||||
{"lighttop", "metal block", "metal"},
|
|
||||||
{"red", "red lines", "red"},
|
|
||||||
{"green", "green lines", "green"},
|
|
||||||
{"vent2", "vent", "vent"},
|
|
||||||
{"stripes", "hazard stripes", "stripes"},
|
|
||||||
{"rust", "rusty metal", "rust"},
|
|
||||||
{"mesh", "metal mesh", "mesh"},
|
|
||||||
{"black", "black wall", "black"},
|
|
||||||
{"blackoct", "black octagon", "blackoct"},
|
|
||||||
{"blackpipe", "black pipe", "blackpipe"},
|
|
||||||
{"blacktile", "black tile", "blktl"},
|
|
||||||
{"blacktile2", "black tile 2", "blktl2"},
|
|
||||||
{"blackvent", "black vent", "blkvnt"},
|
|
||||||
{"bluebars", "blue bars", "bluebars"},
|
|
||||||
{"bluemetal", "blue metal", "blumtl"},
|
|
||||||
{"bluetile", "blue tile", "blutl"},
|
|
||||||
{"greytile", "grey tile", "grytl"},
|
|
||||||
{"mesh2", "metal floormesh", "mesh2"},
|
|
||||||
{"white", "plastic wall", "white"},
|
|
||||||
{"pipe", "wall pipe", "pipe2"},
|
|
||||||
{"pipeside", "side pipe", "pipe3"},
|
|
||||||
{"tile", "white tile", "tile"},
|
|
||||||
{"whiteoct", "white octagon", "whiteoct"},
|
|
||||||
{"whitetile", "white tile2", "whttl"},
|
|
||||||
{"black_detail", "black detail", "blckdtl"},
|
|
||||||
{"green_square", "green metal block", "grnblck"},
|
|
||||||
{"red_square", "red metal block", "redblck"},
|
|
||||||
{"grey_square", "grey metal block", "greyblck"},
|
|
||||||
{"blue_square", "blue metal block", "blublck"},
|
|
||||||
{"black_mesh", "black vent block", "blckmsh"},
|
|
||||||
{"dent", "dented metal block", "dent"},
|
|
||||||
{"greenmetal", "green metal wall", "grnmetl"},
|
|
||||||
{"greenmetal2", "green metal wall2", "grnmetl2"},
|
|
||||||
{"greenlights", "green wall lights", "grnlt", 10},
|
|
||||||
{"greenlights2", "green wall lights2", "grnlt2", 10},
|
|
||||||
{"greenbar", "green light bar", "grnlghtbr", 10},
|
|
||||||
{"green2", "green wall panel", "grn2"},
|
|
||||||
{"greentubes", "green pipes", "grntubes"},
|
|
||||||
{"grey", "grey wall", "gry"},
|
|
||||||
{"greybolts", "grey wall bolts", "gryblts"},
|
|
||||||
{"greybars", "grey bars", "grybrs"},
|
|
||||||
{"greydots", "grey wall dots", "grydts"},
|
|
||||||
{"greygreenbar", "gray power pipe", "grygrnbr", 10},
|
|
||||||
{"octofloor", "Doom floor", "octofloor"},
|
|
||||||
{"octofloor2", "Brown Doom floor", "octofloor2"},
|
|
||||||
{"doomwall1", "Doom wall 1", "doomwall1"},
|
|
||||||
{"doomwall2", "Doom wall 2", "doomwall2"},
|
|
||||||
{"doomwall3", "Doom wall 3", "doomwall3"},
|
|
||||||
{"doomwall4", "Doom wall 4", "doomwall4"},
|
|
||||||
{"doomwall41", "Doom wall 4.1", "doomwall4.1"},
|
|
||||||
{"doomwall42", "Doom wall 4.2", "doomwall4.2"},
|
|
||||||
{"doomwall43", "Doom wall 4.3", "doomwall4.3"},
|
|
||||||
{"doomwall431", "Doom wall 4.3.1", "doomwall4.3.1"},
|
|
||||||
{"doomwall44", "Doom wall 4.4", "doomwall4.4"},
|
|
||||||
{"blackdmg", "Damaged black wall", "blckdmg"},
|
|
||||||
{"blackdmgstripe", "Damaged black wall(stripes)", "blckdmgstripe"},
|
|
||||||
{"doomengine", "Doom engine wall", "doomengine"},
|
|
||||||
-- {"monitorwall", "Wall monitors", "monitorwall"},
|
|
||||||
{"screen3", "Wall monitor", "screen3"},
|
|
||||||
{"doomlight", "Doom light", "doomlight", 12},
|
|
||||||
{"bluwllight", "Blue wall light", "capsule3", default.LIGHT_MAX},
|
|
||||||
{"bluegrid", "Blue Grid", "bluegrid", 5},
|
|
||||||
{"fan", "Fan", "fan"},
|
|
||||||
{"ppllght", "Purple wall light", "", default.LIGHT_MAX},
|
|
||||||
{"pplwll", "Purple wall", "", 0},
|
|
||||||
{"pplwll2", "Purple wall2", "", 0},
|
|
||||||
{"pplwll3", "Purple wall3", "", 0},
|
|
||||||
{"pplwll4", "Purple wall4", "", 0},
|
|
||||||
{"pplblk", "Purple tile", "", 0},
|
|
||||||
{"purple", "Purple node", "", 0},
|
|
||||||
{"rock", "Moonstone", "", 0},
|
|
||||||
{"rock2", "Moonstone2", "", 0},
|
|
||||||
{"blackvnt", "Black vent", "", 0},
|
|
||||||
{"blackplate", "Black plate", "", 0},
|
|
||||||
}
|
|
||||||
|
|
||||||
if minetest.global_exists("stairsplus") then
|
|
||||||
|
|
||||||
for _, row in ipairs(node.types) do
|
|
||||||
local name = row[1]
|
|
||||||
local desc = row[2]
|
|
||||||
local light = row[4]
|
|
||||||
-- Node Definition
|
|
||||||
stairsplus:register_all("scifi_nodes", row[1], "scifi_nodes:"..name, {
|
|
||||||
description = desc,
|
|
||||||
tiles = {"scifi_nodes_"..name..".png"},
|
|
||||||
groups = {cracky=1},
|
|
||||||
paramtype = "light",
|
|
||||||
paramtype2 = "facedir",
|
|
||||||
light_source = light,
|
|
||||||
})
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
12
models/scifi_nodes_slope_simple.obj
Normal file
12
models/scifi_nodes_slope_simple.obj
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
g top
|
||||||
|
v 0.500000 0.500000 0.500000
|
||||||
|
v -0.500000 0.500000 0.500000
|
||||||
|
v -0.500000 -0.500000 -0.500000
|
||||||
|
v 0.500000 -0.500000 -0.500000
|
||||||
|
vt 1.0000 1.0000
|
||||||
|
vt 0.0000 1.0000
|
||||||
|
vt 0.0000 0.0000
|
||||||
|
vt 1.0000 0.0000
|
||||||
|
vn 0.0000 0.7071 -0.7071
|
||||||
|
s off
|
||||||
|
f 2/1/1 1/2/1 4/3/1 3/4/1
|
2
mtt.lua
Normal file
2
mtt.lua
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
|
||||||
|
mtt.validate_nodenames(minetest.get_modpath("scifi_nodes") .. "/nodenames.txt")
|
359
nodeboxes.lua
359
nodeboxes.lua
@@ -18,7 +18,8 @@ minetest.register_node("scifi_nodes:alienslope", {
|
|||||||
drawtype = "nodebox",
|
drawtype = "nodebox",
|
||||||
paramtype = "light",
|
paramtype = "light",
|
||||||
paramtype2 = "facedir",
|
paramtype2 = "facedir",
|
||||||
groups = {cracky=1},
|
groups = {cracky=1, dig_generic = 3},
|
||||||
|
is_ground_content = false,
|
||||||
node_box = {
|
node_box = {
|
||||||
type = "fixed",
|
type = "fixed",
|
||||||
fixed = {
|
fixed = {
|
||||||
@@ -32,7 +33,7 @@ minetest.register_node("scifi_nodes:alienslope", {
|
|||||||
{-0.125, 0.375, -0.5, 0.5, 0.5, 0.5}, -- NodeBox17
|
{-0.125, 0.375, -0.5, 0.5, 0.5, 0.5}, -- NodeBox17
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
sounds = default.node_sound_wood_defaults(),
|
sounds = scifi_nodes.node_sound_wood_defaults(),
|
||||||
on_place = minetest.rotate_node
|
on_place = minetest.rotate_node
|
||||||
})
|
})
|
||||||
|
|
||||||
@@ -49,7 +50,8 @@ minetest.register_node("scifi_nodes:wallpipe", {
|
|||||||
drawtype = "nodebox",
|
drawtype = "nodebox",
|
||||||
paramtype = "light",
|
paramtype = "light",
|
||||||
paramtype2 = "facedir",
|
paramtype2 = "facedir",
|
||||||
groups = {cracky=1},
|
groups = {cracky=1, dig_generic = 3},
|
||||||
|
is_ground_content = false,
|
||||||
node_box = {
|
node_box = {
|
||||||
type = "fixed",
|
type = "fixed",
|
||||||
fixed = {
|
fixed = {
|
||||||
@@ -62,7 +64,7 @@ minetest.register_node("scifi_nodes:wallpipe", {
|
|||||||
{-0.5, -0.125, 0, 0.5, 0, 0.0625}, -- NodeBox24
|
{-0.5, -0.125, 0, 0.5, 0, 0.0625}, -- NodeBox24
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
sounds = default.node_sound_wood_defaults()
|
sounds = scifi_nodes.node_sound_wood_defaults()
|
||||||
})
|
})
|
||||||
|
|
||||||
minetest.register_node("scifi_nodes:plant_trap", {
|
minetest.register_node("scifi_nodes:plant_trap", {
|
||||||
@@ -82,6 +84,7 @@ minetest.register_node("scifi_nodes:plant_trap", {
|
|||||||
walkable = false,
|
walkable = false,
|
||||||
sunlight_propagates = false,
|
sunlight_propagates = false,
|
||||||
groups = {snappy=1, oddly_breakable_by_hand=1},
|
groups = {snappy=1, oddly_breakable_by_hand=1},
|
||||||
|
is_ground_content = false,
|
||||||
node_box = {
|
node_box = {
|
||||||
type = "fixed",
|
type = "fixed",
|
||||||
fixed = {
|
fixed = {
|
||||||
@@ -91,7 +94,7 @@ minetest.register_node("scifi_nodes:plant_trap", {
|
|||||||
{-0.0625, -0.5, 0.3125, 0, 0.5, 0.375}, -- NodeBox28
|
{-0.0625, -0.5, 0.3125, 0, 0.5, 0.375}, -- NodeBox28
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
sounds = default.node_sound_wood_defaults(),
|
sounds = scifi_nodes.node_sound_wood_defaults(),
|
||||||
})
|
})
|
||||||
|
|
||||||
minetest.register_node("scifi_nodes:egg", {
|
minetest.register_node("scifi_nodes:egg", {
|
||||||
@@ -107,7 +110,8 @@ minetest.register_node("scifi_nodes:egg", {
|
|||||||
sunlight_propagates = false,
|
sunlight_propagates = false,
|
||||||
drawtype = "nodebox",
|
drawtype = "nodebox",
|
||||||
paramtype = "light",
|
paramtype = "light",
|
||||||
groups = {cracky=1, oddly_breakable_by_hand=1, dig_immediate=2, falling_node=1},
|
groups = {cracky=1, oddly_breakable_by_hand=1, dig_immediate=2, falling_node=1, dig_generic = 3},
|
||||||
|
is_ground_content = false,
|
||||||
light_source = 5,
|
light_source = 5,
|
||||||
node_box = {
|
node_box = {
|
||||||
type = "fixed",
|
type = "fixed",
|
||||||
@@ -122,8 +126,8 @@ minetest.register_node("scifi_nodes:egg", {
|
|||||||
{-0.125, 0.75, -0.125, 0.125, 0.8125, 0.125}, -- NodeBox8
|
{-0.125, 0.75, -0.125, 0.125, 0.8125, 0.125}, -- NodeBox8
|
||||||
{-0.375, -0.3125, -0.4375, 0.375, 0.3125, 0.4375}, -- NodeBox9
|
{-0.375, -0.3125, -0.4375, 0.375, 0.3125, 0.4375}, -- NodeBox9
|
||||||
},
|
},
|
||||||
sounds = default.node_sound_wood_defaults()
|
},
|
||||||
}
|
sounds = scifi_nodes.node_sound_wood_defaults(),
|
||||||
})
|
})
|
||||||
|
|
||||||
if minetest.get_modpath("scifi_mobs") then
|
if minetest.get_modpath("scifi_mobs") then
|
||||||
@@ -131,8 +135,8 @@ minetest.register_abm({
|
|||||||
nodenames = {"scifi_nodes:egg"},
|
nodenames = {"scifi_nodes:egg"},
|
||||||
interval = 30, chance = 10,
|
interval = 30, chance = 10,
|
||||||
action = function(pos, node, _, _)
|
action = function(pos, node, _, _)
|
||||||
minetest.env:add_entity(pos, "scifi_mobs:xenomorph")
|
minetest.add_entity(pos, "scifi_mobs:xenomorph")
|
||||||
minetest.env:remove_node(pos)
|
minetest.remove_node(pos)
|
||||||
end
|
end
|
||||||
})
|
})
|
||||||
end
|
end
|
||||||
@@ -150,8 +154,10 @@ minetest.register_node("scifi_nodes:pad", {
|
|||||||
drawtype = "nodebox",
|
drawtype = "nodebox",
|
||||||
paramtype = "light",
|
paramtype = "light",
|
||||||
groups = {cracky=1, oddly_breakable_by_hand=1},
|
groups = {cracky=1, oddly_breakable_by_hand=1},
|
||||||
|
is_ground_content = false,
|
||||||
light_source = 5,
|
light_source = 5,
|
||||||
on_construct = function(pos, node, placer)
|
after_place_node = function(pos, placer, itemstack, pointed_thing)
|
||||||
|
local placer_name = placer:get_player_name()
|
||||||
local meta = minetest.get_meta(pos)
|
local meta = minetest.get_meta(pos)
|
||||||
if position1 == nil then
|
if position1 == nil then
|
||||||
position1 = pos
|
position1 = pos
|
||||||
@@ -160,10 +166,11 @@ minetest.register_node("scifi_nodes:pad", {
|
|||||||
position2 = pos
|
position2 = pos
|
||||||
meta:set_int("type", 2)
|
meta:set_int("type", 2)
|
||||||
else
|
else
|
||||||
minetest.chat_send_all("There can only be two teleportation pads at a time!")
|
minetest.chat_send_player(placer_name, "There can only be two teleportation pads at a time!")
|
||||||
end
|
end
|
||||||
end,
|
end,
|
||||||
on_rightclick = function(pos, node, clicker)
|
on_rightclick = function(pos, node, clicker)
|
||||||
|
local clicker_name = clicker:get_player_name()
|
||||||
local meta = minetest.get_meta(pos)
|
local meta = minetest.get_meta(pos)
|
||||||
if meta:get_int("type") == 1 and position2 ~= nil and position1 ~= nil then
|
if meta:get_int("type") == 1 and position2 ~= nil and position1 ~= nil then
|
||||||
minetest.add_particlespawner(
|
minetest.add_particlespawner(
|
||||||
@@ -187,12 +194,12 @@ minetest.register_node("scifi_nodes:pad", {
|
|||||||
if minetest.get_node({x=ppos.x, y=ppos.y, z=ppos.z}).name == "scifi_nodes:pad" then
|
if minetest.get_node({x=ppos.x, y=ppos.y, z=ppos.z}).name == "scifi_nodes:pad" then
|
||||||
clicker:setpos(position2)
|
clicker:setpos(position2)
|
||||||
end
|
end
|
||||||
local objs = minetest.env:get_objects_inside_radius(pos, 3)
|
local objs = minetest.get_objects_inside_radius(pos, 3)
|
||||||
for _, obj in pairs(objs) do
|
for _, obj in pairs(objs) do
|
||||||
if obj:get_luaentity() and not obj:is_player() then
|
if obj:get_luaentity() and not obj:is_player() then
|
||||||
if obj:get_luaentity().name == "__builtin:item" then
|
if obj:get_luaentity().name == "__builtin:item" then
|
||||||
local item1 = obj:get_luaentity().itemstring
|
local item1 = obj:get_luaentity().itemstring
|
||||||
local obj2 = minetest.env:add_entity(position2, "__builtin:item")
|
local obj2 = minetest.add_entity(position2, "__builtin:item")
|
||||||
obj2:get_luaentity():set_item(item1)
|
obj2:get_luaentity():set_item(item1)
|
||||||
obj:remove()
|
obj:remove()
|
||||||
end
|
end
|
||||||
@@ -221,12 +228,12 @@ minetest.register_node("scifi_nodes:pad", {
|
|||||||
if minetest.get_node({x=ppos.x, y=ppos.y, z=ppos.z}).name == "scifi_nodes:pad" then
|
if minetest.get_node({x=ppos.x, y=ppos.y, z=ppos.z}).name == "scifi_nodes:pad" then
|
||||||
clicker:setpos(position1)
|
clicker:setpos(position1)
|
||||||
end
|
end
|
||||||
local objs = minetest.env:get_objects_inside_radius(pos, 3)
|
local objs = minetest.get_objects_inside_radius(pos, 3)
|
||||||
for _, obj in pairs(objs) do
|
for _, obj in pairs(objs) do
|
||||||
if obj:get_luaentity() and not obj:is_player() then
|
if obj:get_luaentity() and not obj:is_player() then
|
||||||
if obj:get_luaentity().name == "__builtin:item" then
|
if obj:get_luaentity().name == "__builtin:item" then
|
||||||
local item1 = obj:get_luaentity().itemstring
|
local item1 = obj:get_luaentity().itemstring
|
||||||
local obj2 = minetest.env:add_entity(position1, "__builtin:item")
|
local obj2 = minetest.add_entity(position1, "__builtin:item")
|
||||||
obj2:get_luaentity():set_item(item1)
|
obj2:get_luaentity():set_item(item1)
|
||||||
obj:remove()
|
obj:remove()
|
||||||
end
|
end
|
||||||
@@ -236,12 +243,13 @@ minetest.register_node("scifi_nodes:pad", {
|
|||||||
elseif position1 == nil and meta:get_int("type") ~= 2 then
|
elseif position1 == nil and meta:get_int("type") ~= 2 then
|
||||||
position1 = pos
|
position1 = pos
|
||||||
meta:set_int("type", 1)
|
meta:set_int("type", 1)
|
||||||
minetest.chat_send_all("Teleporter 1 connected at "..minetest.pos_to_string(pos))
|
minetest.chat_send_player(clicker_name, "Teleporter 1 connected at "..minetest.pos_to_string(pos))
|
||||||
elseif position2 == nil and meta:get_int("type") ~= 1 then
|
elseif position2 == nil and meta:get_int("type") ~= 1 then
|
||||||
position2 = pos
|
position2 = pos
|
||||||
meta:set_int("type", 2)
|
meta:set_int("type", 2)
|
||||||
minetest.chat_send_all("Teleporter 2 connected at "..minetest.pos_to_string(pos))
|
minetest.chat_send_player(clicker_name, "Teleporter 2 connected at "..minetest.pos_to_string(pos))
|
||||||
else minetest.chat_send_all("Teleporter error!")
|
else
|
||||||
|
minetest.chat_send_player(clicker_name, "Teleporter error!")
|
||||||
end
|
end
|
||||||
end,
|
end,
|
||||||
on_destruct = function(pos, oldnode, placer)
|
on_destruct = function(pos, oldnode, placer)
|
||||||
@@ -262,8 +270,8 @@ minetest.register_node("scifi_nodes:pad", {
|
|||||||
{-0.875, -0.5, -0.8125, 0.8125, -0.375, 0.8125}, -- NodeBox3
|
{-0.875, -0.5, -0.8125, 0.8125, -0.375, 0.8125}, -- NodeBox3
|
||||||
{-0.8125, -0.5, -0.75, 0.75, -0.3125, 0.75}, -- NodeBox4
|
{-0.8125, -0.5, -0.75, 0.75, -0.3125, 0.75}, -- NodeBox4
|
||||||
},
|
},
|
||||||
sounds = default.node_sound_wood_defaults()
|
},
|
||||||
}
|
sounds = scifi_nodes.node_sound_metal_defaults(),
|
||||||
})
|
})
|
||||||
|
|
||||||
minetest.register_node("scifi_nodes:pplwndw", {
|
minetest.register_node("scifi_nodes:pplwndw", {
|
||||||
@@ -279,9 +287,10 @@ minetest.register_node("scifi_nodes:pplwndw", {
|
|||||||
drawtype = "nodebox",
|
drawtype = "nodebox",
|
||||||
paramtype = "light",
|
paramtype = "light",
|
||||||
paramtype2 = "facedir",
|
paramtype2 = "facedir",
|
||||||
use_texture_alpha = true,
|
use_texture_alpha = "blend",
|
||||||
groups = {cracky=3},
|
groups = {cracky=3, dig_generic = 4},
|
||||||
sounds = default.node_sound_glass_defaults(),
|
sounds = scifi_nodes.node_sound_glass_defaults(),
|
||||||
|
is_ground_content = false,
|
||||||
node_box = {
|
node_box = {
|
||||||
type = "fixed",
|
type = "fixed",
|
||||||
fixed = {
|
fixed = {
|
||||||
@@ -302,12 +311,13 @@ minetest.register_node("scifi_nodes:gloshroom", {
|
|||||||
},
|
},
|
||||||
drawtype = "nodebox",
|
drawtype = "nodebox",
|
||||||
paramtype = "light",
|
paramtype = "light",
|
||||||
light_source = default.LIGHT_MAX,
|
light_source = minetest.LIGHT_MAX,
|
||||||
walkable = false,
|
walkable = false,
|
||||||
buildable_to = true,
|
buildable_to = true,
|
||||||
sunlight_propagates = false,
|
sunlight_propagates = false,
|
||||||
use_texture_alpha = true,
|
use_texture_alpha = "blend",
|
||||||
groups = {fleshy=1, oddly_breakable_by_hand=1, dig_immediate=3},
|
groups = {fleshy=1, oddly_breakable_by_hand=1, dig_immediate=3},
|
||||||
|
is_ground_content = false,
|
||||||
node_box = {
|
node_box = {
|
||||||
type = "fixed",
|
type = "fixed",
|
||||||
fixed = {
|
fixed = {
|
||||||
@@ -318,54 +328,70 @@ minetest.register_node("scifi_nodes:gloshroom", {
|
|||||||
{-0.1875, 0.125, -0.1875, 0.1875, 0.1875, 0.1875}, -- NodeBox5
|
{-0.1875, 0.125, -0.1875, 0.1875, 0.1875, 0.1875}, -- NodeBox5
|
||||||
{-0.375, -0.0625, -0.4375, 0.375, 0, 0.4375}, -- NodeBox6
|
{-0.375, -0.0625, -0.4375, 0.375, 0, 0.4375}, -- NodeBox6
|
||||||
}
|
}
|
||||||
}
|
},
|
||||||
|
sounds = scifi_nodes.node_sound_plant_defaults(),
|
||||||
})
|
})
|
||||||
|
|
||||||
minetest.register_node("scifi_nodes:pot_lid", {
|
minetest.register_node("scifi_nodes:pot_lid", {
|
||||||
description = "plant pot lid(place above plant)",
|
description = "Plant Pot Lid",
|
||||||
tiles = {
|
tiles = {
|
||||||
"scifi_nodes_glass2.png",
|
|
||||||
"scifi_nodes_glass2.png",
|
|
||||||
"scifi_nodes_glass2.png",
|
|
||||||
"scifi_nodes_glass2.png",
|
|
||||||
"scifi_nodes_glass2.png",
|
|
||||||
"scifi_nodes_glass2.png"
|
"scifi_nodes_glass2.png"
|
||||||
},
|
},
|
||||||
inventory_image = "scifi_nodes_pod_inv.png",
|
inventory_image = "scifi_nodes_pod_inv.png",
|
||||||
wield_image = "scifi_nodes_pod_inv.png",
|
wield_image = "scifi_nodes_pod_inv.png",
|
||||||
use_texture_alpha = true,
|
use_texture_alpha = "blend",
|
||||||
drawtype = "nodebox",
|
drawtype = "nodebox",
|
||||||
paramtype = "light",
|
paramtype = "light",
|
||||||
groups = {cracky=1, not_in_creative_inventory=1},
|
groups = {not_in_creative_inventory = 1},
|
||||||
|
is_ground_content = false,
|
||||||
sunlight_propagates = true,
|
sunlight_propagates = true,
|
||||||
|
diggable = false,
|
||||||
|
drop = "",
|
||||||
selection_box = {
|
selection_box = {
|
||||||
type = "fixed",
|
type = "fixed",
|
||||||
fixed = {0, 0, 0, 0, 0, 0}
|
fixed = {-0.5, -1.5, -0.5, 0.5, -0.25, 0.5}
|
||||||
},
|
|
||||||
collision_box = {
|
|
||||||
type = "fixed",
|
|
||||||
fixed = {-0.5, -1.5, -0.5, 0.5, -0.5, 0.5}
|
|
||||||
},
|
},
|
||||||
node_box = {
|
node_box = {
|
||||||
type = "fixed",
|
type = "fixed",
|
||||||
fixed = {
|
fixed = {
|
||||||
{-0.1875, -0.5625, -0.1875, 0.1875, -0.5, 0.1875}, -- NodeBox13
|
{-0.4375, -1.5, -0.4375, 0.4375, -0.5, -0.375},
|
||||||
{-0.25, -0.625, -0.25, 0.25, -0.5625, 0.25}, -- NodeBox14
|
{-0.4375, -1.5, 0.375, 0.4375, -0.5, 0.4375},
|
||||||
{-0.3125, -0.6875, -0.3125, 0.3125, -0.625, 0.3125}, -- NodeBox15
|
{-0.4375, -1.5, -0.375, -0.375, -0.5, 0.375},
|
||||||
{-0.375, -0.75, -0.375, 0.375, -0.6875, 0.375}, -- NodeBox16
|
{0.375, -1.5, -0.375, 0.4375, -0.5, 0.375},
|
||||||
{-0.4375, -0.75, 0.375, 0.4375, -1.5, 0.4375}, -- NodeBox17
|
{-0.375, -0.5, -0.375, 0.375, -0.4375, 0.375},
|
||||||
{-0.4375, -0.75, -0.4375, 0.4375, -1.5, -0.375}, -- NodeBox18
|
{-0.3125, -0.4375, -0.3125, 0.3125, -0.375, 0.3125},
|
||||||
{0.375, -0.75, -0.4375, 0.4375, -1.5, 0.4375}, -- NodeBox19
|
{-0.25, -0.375, -0.25, 0.25, -0.3125, 0.25},
|
||||||
{-0.4375, -0.75, -0.4375, -0.375, -1.5, 0.4375}, -- NodeBox20
|
{-0.1875, -0.3125, -0.1875, 0.1875, -0.25, 0.1875}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
sounds = default.node_sound_glass_defaults()
|
sounds = scifi_nodes.node_sound_glass_defaults()
|
||||||
})
|
})
|
||||||
|
|
||||||
|
local function toggle_lid(pos, node, player, itemstack)
|
||||||
|
if not player or minetest.is_protected(pos, player:get_player_name()) then
|
||||||
|
return
|
||||||
|
end
|
||||||
|
local lid_pos = {x = pos.x, y = pos.y+2 , z = pos.z}
|
||||||
|
local lid_node = minetest.get_node(lid_pos)
|
||||||
|
if lid_node.name == "scifi_nodes:pot_lid" then
|
||||||
|
minetest.set_node(lid_pos, {name = "air"})
|
||||||
|
elseif lid_node.name == "air" then
|
||||||
|
minetest.set_node(lid_pos, {name = "scifi_nodes:pot_lid"})
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
local function remove_lid(pos)
|
||||||
|
local lid_pos = {x = pos.x, y = pos.y+2 , z = pos.z}
|
||||||
|
local lid_node = minetest.get_node(lid_pos)
|
||||||
|
if lid_node.name == "scifi_nodes:pot_lid" then
|
||||||
|
minetest.set_node(lid_pos, {name = "air"})
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
minetest.register_node("scifi_nodes:pot", {
|
minetest.register_node("scifi_nodes:pot", {
|
||||||
description = "metal plant pot (right click for lid, shift+rightclick to plant)",
|
description = "Metal Plant Pot (right-click for lid, sneak + right-click to plant)",
|
||||||
tiles = {
|
tiles = {
|
||||||
"scifi_nodes_pot.png",
|
"scifi_nodes_dirt.png^scifi_nodes_pot.png",
|
||||||
"scifi_nodes_greybolts.png",
|
"scifi_nodes_greybolts.png",
|
||||||
"scifi_nodes_greybolts.png",
|
"scifi_nodes_greybolts.png",
|
||||||
"scifi_nodes_greybolts.png",
|
"scifi_nodes_greybolts.png",
|
||||||
@@ -374,34 +400,33 @@ minetest.register_node("scifi_nodes:pot", {
|
|||||||
},
|
},
|
||||||
drawtype = "nodebox",
|
drawtype = "nodebox",
|
||||||
paramtype = "light",
|
paramtype = "light",
|
||||||
groups = {cracky=1, soil=1, sand=1},
|
groups = {cracky = 1, soil = 1, sand = 1, dig_generic = 3},
|
||||||
|
is_ground_content = false,
|
||||||
|
selection_box = {
|
||||||
|
type = "fixed",
|
||||||
|
fixed = {-0.5, -0.5, -0.5, 0.5, 0.5, 0.5}
|
||||||
|
},
|
||||||
node_box = {
|
node_box = {
|
||||||
type = "fixed",
|
type = "fixed",
|
||||||
fixed = {
|
fixed = {
|
||||||
{-0.5, -0.25, -0.5, 0.5, 0.5, 0.5}, -- NodeBox1
|
{-0.5, -0.25, -0.5, 0.5, 0.5, 0.5},
|
||||||
{0.1875, -0.5, 0.1875, 0.5, -0.25, 0.5}, -- NodeBox2
|
{0.1875, -0.5, 0.1875, 0.5, -0.25, 0.5},
|
||||||
{-0.5, -0.5, -0.5, -0.1875, -0.25, -0.1875}, -- NodeBox3
|
{-0.5, -0.5, -0.5, -0.1875, -0.25, -0.1875},
|
||||||
{-0.5, -0.5, 0.1875, -0.1875, -0.25, 0.5}, -- NodeBox4
|
{-0.5, -0.5, 0.1875, -0.1875, -0.25, 0.5},
|
||||||
{0.1875, -0.5, -0.5, 0.5, -0.25, -0.1875}, -- NodeBox5
|
{0.1875, -0.5, -0.5, 0.5, -0.25, -0.1875}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
on_rightclick = function(pos, node, clicker, item, _)
|
on_rightclick = toggle_lid,
|
||||||
local lid_node = minetest.get_node({x=pos.x, y=pos.y+2, z=pos.z})
|
on_destruct = remove_lid,
|
||||||
if lid_node.name == "scifi_nodes:pot_lid" then
|
sounds = scifi_nodes.node_sound_metal_defaults({
|
||||||
minetest.set_node({x=pos.x, y=pos.y+2, z=pos.z}, {name="air", param2=lid_node.param2})
|
footstep = scifi_nodes.node_sound_dirt_defaults().footstep,
|
||||||
elseif lid_node.name ~= "scifi_nodes:pot_lid" and node.name == "air" then
|
}),
|
||||||
minetest.set_node({x=pos.x, y=pos.y+2, z=pos.z}, {name="scifi_nodes:pot_lid", param2=lid_node.param2})
|
|
||||||
end
|
|
||||||
end,
|
|
||||||
on_destruct = function(pos, node, _)
|
|
||||||
minetest.remove_node({x=pos.x, y=pos.y+2, z=pos.z})
|
|
||||||
end
|
|
||||||
})
|
})
|
||||||
|
|
||||||
minetest.register_node("scifi_nodes:pot2", {
|
minetest.register_node("scifi_nodes:pot2", {
|
||||||
description = "metal wet plant pot(right click for lid, shift+rightclick to plant)",
|
description = "Metal Plant Pot Wet (right-click for lid, sneak + right-click to plant)",
|
||||||
tiles = {
|
tiles = {
|
||||||
"scifi_nodes_pot.png^[colorize:black:100",
|
"scifi_nodes_dirt.png^scifi_nodes_pot2.png",
|
||||||
"scifi_nodes_greybolts.png",
|
"scifi_nodes_greybolts.png",
|
||||||
"scifi_nodes_greybolts.png",
|
"scifi_nodes_greybolts.png",
|
||||||
"scifi_nodes_greybolts.png",
|
"scifi_nodes_greybolts.png",
|
||||||
@@ -410,28 +435,27 @@ minetest.register_node("scifi_nodes:pot2", {
|
|||||||
},
|
},
|
||||||
drawtype = "nodebox",
|
drawtype = "nodebox",
|
||||||
paramtype = "light",
|
paramtype = "light",
|
||||||
groups = {cracky=1, soil=3, wet=1},
|
groups = {cracky = 1, soil = 3, wet = 1, dig_generic = 3},
|
||||||
|
is_ground_content = false,
|
||||||
|
selection_box = {
|
||||||
|
type = "fixed",
|
||||||
|
fixed = {-0.5, -0.5, -0.5, 0.5, 0.5, 0.5}
|
||||||
|
},
|
||||||
node_box = {
|
node_box = {
|
||||||
type = "fixed",
|
type = "fixed",
|
||||||
fixed = {
|
fixed = {
|
||||||
{-0.5, -0.25, -0.5, 0.5, 0.5, 0.5}, -- NodeBox1
|
{-0.5, -0.25, -0.5, 0.5, 0.5, 0.5},
|
||||||
{0.1875, -0.5, 0.1875, 0.5, -0.25, 0.5}, -- NodeBox2
|
{0.1875, -0.5, 0.1875, 0.5, -0.25, 0.5},
|
||||||
{-0.5, -0.5, -0.5, -0.1875, -0.25, -0.1875}, -- NodeBox3
|
{-0.5, -0.5, -0.5, -0.1875, -0.25, -0.1875},
|
||||||
{-0.5, -0.5, 0.1875, -0.1875, -0.25, 0.5}, -- NodeBox4
|
{-0.5, -0.5, 0.1875, -0.1875, -0.25, 0.5},
|
||||||
{0.1875, -0.5, -0.5, 0.5, -0.25, -0.1875}, -- NodeBox5
|
{0.1875, -0.5, -0.5, 0.5, -0.25, -0.1875}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
on_rightclick = function(pos, node, clicker, item, _)
|
on_rightclick = toggle_lid,
|
||||||
local lid_node = minetest.get_node({x=pos.x, y=pos.y+2, z=pos.z})
|
on_destruct = remove_lid,
|
||||||
if lid_node.name == "scifi_nodes:pot_lid" then
|
sounds = scifi_nodes.node_sound_metal_defaults({
|
||||||
minetest.set_node({x=pos.x, y=pos.y+2, z=pos.z}, {name="air", param2=lid_node.param2})
|
footstep = scifi_nodes.node_sound_dirt_defaults().footstep,
|
||||||
elseif lid_node.name ~= "scifi_nodes:pot_lid" and node.name == "air" then
|
}),
|
||||||
minetest.set_node({x=pos.x, y=pos.y+2, z=pos.z}, {name="scifi_nodes:pot_lid", param2=lid_node.param2})
|
|
||||||
end
|
|
||||||
end,
|
|
||||||
on_destruct = function(pos, node, _)
|
|
||||||
minetest.remove_node({x=pos.x, y=pos.y+2, z=pos.z})
|
|
||||||
end
|
|
||||||
})
|
})
|
||||||
|
|
||||||
minetest.register_node("scifi_nodes:lightbar", {
|
minetest.register_node("scifi_nodes:lightbar", {
|
||||||
@@ -443,7 +467,7 @@ minetest.register_node("scifi_nodes:lightbar", {
|
|||||||
paramtype = "light",
|
paramtype = "light",
|
||||||
paramtype2 = "wallmounted",
|
paramtype2 = "wallmounted",
|
||||||
sunlight_propagates = true,
|
sunlight_propagates = true,
|
||||||
light_source = default.LIGHT_MAX,
|
light_source = minetest.LIGHT_MAX,
|
||||||
node_box = {
|
node_box = {
|
||||||
type = "fixed",
|
type = "fixed",
|
||||||
fixed = {
|
fixed = {
|
||||||
@@ -456,8 +480,9 @@ minetest.register_node("scifi_nodes:lightbar", {
|
|||||||
{-0.125, -0.5, -0.5, 0.125, -0.375, 0.5}, -- NodeBox1
|
{-0.125, -0.5, -0.5, 0.125, -0.375, 0.5}, -- NodeBox1
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
groups = {cracky=1},
|
groups = {cracky=1, dig_generic = 3},
|
||||||
sounds = default.node_sound_glass_defaults()
|
is_ground_content = false,
|
||||||
|
sounds = scifi_nodes.node_sound_glass_defaults()
|
||||||
})
|
})
|
||||||
|
|
||||||
minetest.register_node("scifi_nodes:light_dynamic", {
|
minetest.register_node("scifi_nodes:light_dynamic", {
|
||||||
@@ -473,10 +498,17 @@ minetest.register_node("scifi_nodes:light_dynamic", {
|
|||||||
type = "wallmounted",
|
type = "wallmounted",
|
||||||
fixed = {-0.5, -0.5, -0.5, -0.45, 0.5, 0.5}
|
fixed = {-0.5, -0.5, -0.5, -0.45, 0.5, 0.5}
|
||||||
},
|
},
|
||||||
|
node_box = {
|
||||||
|
type = "fixed",
|
||||||
|
fixed = {
|
||||||
|
fixed = {-0.5, -0.5, -0.5, -0.45, 0.5, 0.5}
|
||||||
|
}
|
||||||
|
},
|
||||||
paramtype2 = "wallmounted",
|
paramtype2 = "wallmounted",
|
||||||
light_source = default.LIGHT_MAX,
|
light_source = minetest.LIGHT_MAX,
|
||||||
groups = {cracky=1, oddly_breakable_by_hand=1},
|
groups = {cracky=1, oddly_breakable_by_hand=1},
|
||||||
sounds = default.node_sound_glass_defaults()
|
is_ground_content = false,
|
||||||
|
sounds = scifi_nodes.node_sound_glass_defaults()
|
||||||
})
|
})
|
||||||
|
|
||||||
minetest.register_node("scifi_nodes:ladder", {
|
minetest.register_node("scifi_nodes:ladder", {
|
||||||
@@ -506,12 +538,13 @@ minetest.register_node("scifi_nodes:ladder", {
|
|||||||
{0.3125, -0.5, 0.0625, 0.4375, -0.375, 0.1875}, -- NodeBox25
|
{0.3125, -0.5, 0.0625, 0.4375, -0.375, 0.1875}, -- NodeBox25
|
||||||
{0.3125, -0.5, -0.1875, 0.4375, -0.375, -0.0625}, -- NodeBox26
|
{0.3125, -0.5, -0.1875, 0.4375, -0.375, -0.0625}, -- NodeBox26
|
||||||
},
|
},
|
||||||
sounds = default.node_sound_metal_defaults()
|
|
||||||
},
|
},
|
||||||
|
sounds = scifi_nodes.node_sound_metal_defaults(),
|
||||||
paramtype2 = "wallmounted",
|
paramtype2 = "wallmounted",
|
||||||
walkable = false,
|
walkable = false,
|
||||||
climbable = true,
|
climbable = true,
|
||||||
groups = {cracky=1, oddly_breakable_by_hand=1},
|
groups = {cracky=1, oddly_breakable_by_hand=1},
|
||||||
|
is_ground_content = false,
|
||||||
})
|
})
|
||||||
|
|
||||||
minetest.register_node("scifi_nodes:lightbars", {
|
minetest.register_node("scifi_nodes:lightbars", {
|
||||||
@@ -521,8 +554,9 @@ minetest.register_node("scifi_nodes:lightbars", {
|
|||||||
},
|
},
|
||||||
drawtype = "nodebox",
|
drawtype = "nodebox",
|
||||||
paramtype = "light",
|
paramtype = "light",
|
||||||
use_texture_alpha = true,
|
paramtype2 = "facedir",
|
||||||
light_source = default.LIGHT_MAX,
|
use_texture_alpha = "blend",
|
||||||
|
light_source = minetest.LIGHT_MAX,
|
||||||
node_box = {
|
node_box = {
|
||||||
type = "fixed",
|
type = "fixed",
|
||||||
fixed = {
|
fixed = {
|
||||||
@@ -532,8 +566,9 @@ minetest.register_node("scifi_nodes:lightbars", {
|
|||||||
{0.125, -0.5, -0.375, 0.375, 0.5, -0.125}, -- NodeBox4
|
{0.125, -0.5, -0.375, 0.375, 0.5, -0.125}, -- NodeBox4
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
groups = {cracky=1},
|
groups = {cracky=1, dig_generic = 3},
|
||||||
sounds = default.node_sound_glass_defaults()
|
is_ground_content = false,
|
||||||
|
sounds = scifi_nodes.node_sound_glass_defaults()
|
||||||
})
|
})
|
||||||
|
|
||||||
minetest.register_node("scifi_nodes:liquid_pipe", {
|
minetest.register_node("scifi_nodes:liquid_pipe", {
|
||||||
@@ -542,19 +577,21 @@ tiles = {{
|
|||||||
name = "scifi_nodes_liquid.png",
|
name = "scifi_nodes_liquid.png",
|
||||||
animation = {type = "vertical_frames", aspect_w = 16, aspect_h = 16, length = 1.00},
|
animation = {type = "vertical_frames", aspect_w = 16, aspect_h = 16, length = 1.00},
|
||||||
}},
|
}},
|
||||||
use_texture_alpha = true,
|
use_texture_alpha = "blend",
|
||||||
light_source = default.LIGHT_MAX,
|
light_source = minetest.LIGHT_MAX,
|
||||||
drawtype = "nodebox",
|
drawtype = "nodebox",
|
||||||
sunlight_propagates = true,
|
sunlight_propagates = true,
|
||||||
paramtype = "light",
|
paramtype = "light",
|
||||||
|
paramtype2 = "facedir",
|
||||||
node_box = {
|
node_box = {
|
||||||
type = "fixed",
|
type = "fixed",
|
||||||
fixed = {
|
fixed = {
|
||||||
{-0.375, -0.5, -0.375, 0.375, 0.5, 0.375}, -- NodeBox1
|
{-0.375, -0.5, -0.375, 0.375, 0.5, 0.375}, -- NodeBox1
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
groups = {cracky=1, oddly_breakable_by_hand=1},
|
groups = {cracky=1, oddly_breakable_by_hand=1, dig_generic = 3},
|
||||||
sounds = default.node_sound_glass_defaults()
|
is_ground_content = false,
|
||||||
|
sounds = scifi_nodes.node_sound_glass_defaults()
|
||||||
})
|
})
|
||||||
|
|
||||||
minetest.register_node("scifi_nodes:liquid_pipe2", {
|
minetest.register_node("scifi_nodes:liquid_pipe2", {
|
||||||
@@ -562,11 +599,12 @@ minetest.register_node("scifi_nodes:liquid_pipe2", {
|
|||||||
tiles = {
|
tiles = {
|
||||||
"scifi_nodes_orange.png",
|
"scifi_nodes_orange.png",
|
||||||
},
|
},
|
||||||
use_texture_alpha = true,
|
use_texture_alpha = "blend",
|
||||||
light_source = default.LIGHT_MAX,
|
light_source = minetest.LIGHT_MAX,
|
||||||
drawtype = "nodebox",
|
drawtype = "nodebox",
|
||||||
sunlight_propagates = true,
|
sunlight_propagates = true,
|
||||||
paramtype = "light",
|
paramtype = "light",
|
||||||
|
paramtype2 = "facedir",
|
||||||
node_box = {
|
node_box = {
|
||||||
type = "fixed",
|
type = "fixed",
|
||||||
fixed = {
|
fixed = {
|
||||||
@@ -574,7 +612,8 @@ tiles = {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
groups = {cracky=1, oddly_breakable_by_hand=1},
|
groups = {cracky=1, oddly_breakable_by_hand=1},
|
||||||
sounds = default.node_sound_glass_defaults()
|
is_ground_content = false,
|
||||||
|
sounds = scifi_nodes.node_sound_glass_defaults()
|
||||||
})
|
})
|
||||||
|
|
||||||
minetest.register_node("scifi_nodes:powered_stand", {
|
minetest.register_node("scifi_nodes:powered_stand", {
|
||||||
@@ -604,6 +643,7 @@ minetest.register_node("scifi_nodes:powered_stand", {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
groups = {cracky=1, oddly_breakable_by_hand=1},
|
groups = {cracky=1, oddly_breakable_by_hand=1},
|
||||||
|
is_ground_content = false,
|
||||||
on_rightclick = function(pos, node, clicker, item, _)
|
on_rightclick = function(pos, node, clicker, item, _)
|
||||||
local wield_item_stack = clicker:get_wielded_item()
|
local wield_item_stack = clicker:get_wielded_item()
|
||||||
local wield_item = wield_item_stack:get_name()
|
local wield_item = wield_item_stack:get_name()
|
||||||
@@ -619,6 +659,7 @@ minetest.register_node("scifi_nodes:powered_stand", {
|
|||||||
return item
|
return item
|
||||||
end
|
end
|
||||||
end,
|
end,
|
||||||
|
sounds = scifi_nodes.node_sound_wood_defaults()
|
||||||
})
|
})
|
||||||
|
|
||||||
minetest.register_node("scifi_nodes:cover", {
|
minetest.register_node("scifi_nodes:cover", {
|
||||||
@@ -633,6 +674,8 @@ minetest.register_node("scifi_nodes:cover", {
|
|||||||
},
|
},
|
||||||
drawtype = "nodebox",
|
drawtype = "nodebox",
|
||||||
paramtype = "light",
|
paramtype = "light",
|
||||||
|
paramtype2 = "facedir",
|
||||||
|
sunlight_propagates = true,
|
||||||
node_box = {
|
node_box = {
|
||||||
type = "fixed",
|
type = "fixed",
|
||||||
fixed = {
|
fixed = {
|
||||||
@@ -641,8 +684,9 @@ minetest.register_node("scifi_nodes:cover", {
|
|||||||
{-0.3125, -0.375, -0.3125, 0.3125, -0.3125, 0.3125}, -- NodeBox6
|
{-0.3125, -0.375, -0.3125, 0.3125, -0.3125, 0.3125}, -- NodeBox6
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
sounds = default.node_sound_wood_defaults(),
|
sounds = scifi_nodes.node_sound_metal_defaults(),
|
||||||
groups = {cracky=1, oddly_breakable_by_hand=1}
|
groups = {cracky=1, oddly_breakable_by_hand=1},
|
||||||
|
is_ground_content = false,
|
||||||
})
|
})
|
||||||
|
|
||||||
minetest.register_node("scifi_nodes:computer", {
|
minetest.register_node("scifi_nodes:computer", {
|
||||||
@@ -665,7 +709,9 @@ minetest.register_node("scifi_nodes:computer", {
|
|||||||
{-0.4375, -0.5, -0.5, 0.0625, 0.5, 0.5}, -- NodeBox1
|
{-0.4375, -0.5, -0.5, 0.0625, 0.5, 0.5}, -- NodeBox1
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
groups = {cracky=1, oddly_breakable_by_hand=1}
|
groups = {cracky=1, oddly_breakable_by_hand=1},
|
||||||
|
is_ground_content = false,
|
||||||
|
sounds = scifi_nodes.node_sound_metal_defaults(),
|
||||||
})
|
})
|
||||||
|
|
||||||
minetest.register_node("scifi_nodes:keysmonitor", {
|
minetest.register_node("scifi_nodes:keysmonitor", {
|
||||||
@@ -691,7 +737,9 @@ minetest.register_node("scifi_nodes:keysmonitor", {
|
|||||||
{-0.5, -0.3125, 0.25, 0.5, 0.5, 0.375}, -- NodeBox4
|
{-0.5, -0.3125, 0.25, 0.5, 0.5, 0.375}, -- NodeBox4
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
groups = {cracky=1, oddly_breakable_by_hand=1}
|
groups = {cracky=1, oddly_breakable_by_hand=1},
|
||||||
|
is_ground_content = false,
|
||||||
|
sounds = scifi_nodes.node_sound_defaults(),
|
||||||
})
|
})
|
||||||
|
|
||||||
minetest.register_node("scifi_nodes:microscope", {
|
minetest.register_node("scifi_nodes:microscope", {
|
||||||
@@ -718,7 +766,9 @@ minetest.register_node("scifi_nodes:microscope", {
|
|||||||
{-0.125, -0.25, -0.125, 0.125, -0.1875, 0.1875}, -- NodeBox5
|
{-0.125, -0.25, -0.125, 0.125, -0.1875, 0.1875}, -- NodeBox5
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
groups = {cracky=1, oddly_breakable_by_hand=1}
|
groups = {cracky=1, oddly_breakable_by_hand=1},
|
||||||
|
is_ground_content = false,
|
||||||
|
sounds = scifi_nodes.node_sound_defaults(),
|
||||||
})
|
})
|
||||||
|
|
||||||
minetest.register_node("scifi_nodes:table", {
|
minetest.register_node("scifi_nodes:table", {
|
||||||
@@ -746,8 +796,9 @@ minetest.register_node("scifi_nodes:table", {
|
|||||||
{-0.0625, 0.25, -0.125, 0.0625, 0.4375, -0.0625}, -- NodeBox7
|
{-0.0625, 0.25, -0.125, 0.0625, 0.4375, -0.0625}, -- NodeBox7
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
sounds = default.node_sound_metal_defaults(),
|
sounds = scifi_nodes.node_sound_metal_defaults(),
|
||||||
groups = {cracky=1}
|
groups = {cracky=1, dig_generic = 3},
|
||||||
|
is_ground_content = false,
|
||||||
})
|
})
|
||||||
|
|
||||||
minetest.register_node("scifi_nodes:laptop_open", {
|
minetest.register_node("scifi_nodes:laptop_open", {
|
||||||
@@ -772,9 +823,11 @@ minetest.register_node("scifi_nodes:laptop_open", {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
groups = {cracky=1, oddly_breakable_by_hand=1, not_in_creative_inventory=1},
|
groups = {cracky=1, oddly_breakable_by_hand=1, not_in_creative_inventory=1},
|
||||||
|
is_ground_content = false,
|
||||||
on_rightclick = function(pos, node, clicker, item, _)
|
on_rightclick = function(pos, node, clicker, item, _)
|
||||||
minetest.set_node(pos, {name="scifi_nodes:laptop_closed", param2=node.param2})
|
minetest.set_node(pos, {name="scifi_nodes:laptop_closed", param2=node.param2})
|
||||||
end,
|
end,
|
||||||
|
sounds = scifi_nodes.node_sound_metal_defaults(),
|
||||||
})
|
})
|
||||||
|
|
||||||
minetest.register_node("scifi_nodes:laptop_closed", {
|
minetest.register_node("scifi_nodes:laptop_closed", {
|
||||||
@@ -798,9 +851,11 @@ minetest.register_node("scifi_nodes:laptop_closed", {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
groups = {cracky=1, oddly_breakable_by_hand=1},
|
groups = {cracky=1, oddly_breakable_by_hand=1},
|
||||||
|
is_ground_content = false,
|
||||||
on_rightclick = function(pos, node, clicker, item, _)
|
on_rightclick = function(pos, node, clicker, item, _)
|
||||||
minetest.set_node(pos, {name="scifi_nodes:laptop_open", param2=node.param2})
|
minetest.set_node(pos, {name="scifi_nodes:laptop_open", param2=node.param2})
|
||||||
end,
|
end,
|
||||||
|
sounds = scifi_nodes.node_sound_metal_defaults(),
|
||||||
})
|
})
|
||||||
|
|
||||||
minetest.register_node("scifi_nodes:pipen", {
|
minetest.register_node("scifi_nodes:pipen", {
|
||||||
@@ -830,8 +885,10 @@ minetest.register_node("scifi_nodes:pipen", {
|
|||||||
{-0.5, -0.4375, -0.5, 0.5, -0.375, 0.5}, -- NodeBox9
|
{-0.5, -0.4375, -0.5, 0.5, -0.375, 0.5}, -- NodeBox9
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
groups = {cracky=1},
|
groups = {cracky=1, dig_generic = 3},
|
||||||
on_place = minetest.rotate_node
|
is_ground_content = false,
|
||||||
|
on_place = minetest.rotate_node,
|
||||||
|
sounds = scifi_nodes.node_sound_metal_defaults(),
|
||||||
})
|
})
|
||||||
|
|
||||||
minetest.register_node("scifi_nodes:windowcorner", {
|
minetest.register_node("scifi_nodes:windowcorner", {
|
||||||
@@ -846,7 +903,7 @@ minetest.register_node("scifi_nodes:windowcorner", {
|
|||||||
},
|
},
|
||||||
drawtype = "nodebox",
|
drawtype = "nodebox",
|
||||||
paramtype = "light",
|
paramtype = "light",
|
||||||
use_texture_alpha = true,
|
use_texture_alpha = "blend",
|
||||||
sunlight_propagates = true,
|
sunlight_propagates = true,
|
||||||
paramtype2 = "facedir",
|
paramtype2 = "facedir",
|
||||||
node_box = {
|
node_box = {
|
||||||
@@ -860,9 +917,10 @@ minetest.register_node("scifi_nodes:windowcorner", {
|
|||||||
{-0.0625, -0.5, -0.5, 0.0625, 0.5, 0.5}, -- NodeBox11
|
{-0.0625, -0.5, -0.5, 0.0625, 0.5, 0.5}, -- NodeBox11
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
groups = {cracky=1},
|
groups = {cracky=1, dig_generic = 3},
|
||||||
|
is_ground_content = false,
|
||||||
on_place = minetest.rotate_node,
|
on_place = minetest.rotate_node,
|
||||||
sounds = default.node_sound_glass_defaults(),
|
sounds = scifi_nodes.node_sound_glass_defaults(),
|
||||||
})
|
})
|
||||||
|
|
||||||
minetest.register_node("scifi_nodes:windowstraight", {
|
minetest.register_node("scifi_nodes:windowstraight", {
|
||||||
@@ -877,7 +935,7 @@ minetest.register_node("scifi_nodes:windowstraight", {
|
|||||||
},
|
},
|
||||||
drawtype = "nodebox",
|
drawtype = "nodebox",
|
||||||
paramtype = "light",
|
paramtype = "light",
|
||||||
use_texture_alpha = true,
|
use_texture_alpha = "blend",
|
||||||
sunlight_propagates = true,
|
sunlight_propagates = true,
|
||||||
paramtype2 = "facedir",
|
paramtype2 = "facedir",
|
||||||
node_box = {
|
node_box = {
|
||||||
@@ -887,9 +945,10 @@ minetest.register_node("scifi_nodes:windowstraight", {
|
|||||||
{-0.0625, -0.5, -0.5, 0.0625, 0.5, 0.5}, -- NodeBox11
|
{-0.0625, -0.5, -0.5, 0.0625, 0.5, 0.5}, -- NodeBox11
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
groups = {cracky=1},
|
groups = {cracky=1, dig_generic = 3},
|
||||||
|
is_ground_content = false,
|
||||||
on_place = minetest.rotate_node,
|
on_place = minetest.rotate_node,
|
||||||
sounds = default.node_sound_glass_defaults(),
|
sounds = scifi_nodes.node_sound_glass_defaults(),
|
||||||
})
|
})
|
||||||
|
|
||||||
minetest.register_node("scifi_nodes:windowcorner2", {
|
minetest.register_node("scifi_nodes:windowcorner2", {
|
||||||
@@ -904,7 +963,7 @@ minetest.register_node("scifi_nodes:windowcorner2", {
|
|||||||
},
|
},
|
||||||
drawtype = "nodebox",
|
drawtype = "nodebox",
|
||||||
paramtype = "light",
|
paramtype = "light",
|
||||||
use_texture_alpha = true,
|
use_texture_alpha = "blend",
|
||||||
sunlight_propagates = true,
|
sunlight_propagates = true,
|
||||||
paramtype2 = "facedir",
|
paramtype2 = "facedir",
|
||||||
node_box = {
|
node_box = {
|
||||||
@@ -918,9 +977,10 @@ minetest.register_node("scifi_nodes:windowcorner2", {
|
|||||||
{-0.0625, -0.5, -0.5, 0.0625, 0.5, 0.5}, -- NodeBox11
|
{-0.0625, -0.5, -0.5, 0.0625, 0.5, 0.5}, -- NodeBox11
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
groups = {cracky=1},
|
groups = {cracky=1, dig_generic = 3},
|
||||||
|
is_ground_content = false,
|
||||||
on_place = minetest.rotate_node,
|
on_place = minetest.rotate_node,
|
||||||
sounds = default.node_sound_glass_defaults(),
|
sounds = scifi_nodes.node_sound_glass_defaults(),
|
||||||
})
|
})
|
||||||
|
|
||||||
minetest.register_node("scifi_nodes:windowstraight2", {
|
minetest.register_node("scifi_nodes:windowstraight2", {
|
||||||
@@ -935,7 +995,7 @@ minetest.register_node("scifi_nodes:windowstraight2", {
|
|||||||
},
|
},
|
||||||
drawtype = "nodebox",
|
drawtype = "nodebox",
|
||||||
paramtype = "light",
|
paramtype = "light",
|
||||||
use_texture_alpha = true,
|
use_texture_alpha = "blend",
|
||||||
sunlight_propagates = true,
|
sunlight_propagates = true,
|
||||||
paramtype2 = "facedir",
|
paramtype2 = "facedir",
|
||||||
node_box = {
|
node_box = {
|
||||||
@@ -945,9 +1005,10 @@ minetest.register_node("scifi_nodes:windowstraight2", {
|
|||||||
{-0.0625, -0.5, -0.5, 0.0625, 0.5, 0.5}, -- NodeBox11
|
{-0.0625, -0.5, -0.5, 0.0625, 0.5, 0.5}, -- NodeBox11
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
groups = {cracky=1},
|
groups = {cracky=1, dig_generic = 3},
|
||||||
|
is_ground_content = false,
|
||||||
on_place = minetest.rotate_node,
|
on_place = minetest.rotate_node,
|
||||||
sounds = default.node_sound_glass_defaults(),
|
sounds = scifi_nodes.node_sound_glass_defaults(),
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
||||||
@@ -962,7 +1023,7 @@ minetest.register_node("scifi_nodes:capsule", {
|
|||||||
"scifi_nodes_capsule.png",
|
"scifi_nodes_capsule.png",
|
||||||
"scifi_nodes_capsule.png"
|
"scifi_nodes_capsule.png"
|
||||||
},
|
},
|
||||||
use_texture_alpha = true,
|
use_texture_alpha = "blend",
|
||||||
drawtype = "nodebox",
|
drawtype = "nodebox",
|
||||||
paramtype = "light",
|
paramtype = "light",
|
||||||
paramtype2 = "facedir",
|
paramtype2 = "facedir",
|
||||||
@@ -975,8 +1036,9 @@ minetest.register_node("scifi_nodes:capsule", {
|
|||||||
{-0.3125, -0.4375, -0.1875, 0.3125, -0.0625, 0.1875}, -- NodeBox3
|
{-0.3125, -0.4375, -0.1875, 0.3125, -0.0625, 0.1875}, -- NodeBox3
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
groups = {cracky=1, oddly_breakable_by_hand=1},
|
groups = {cracky=1, oddly_breakable_by_hand=1, dig_generic = 3},
|
||||||
sounds = default.node_sound_glass_defaults(),
|
is_ground_content = false,
|
||||||
|
sounds = scifi_nodes.node_sound_glass_defaults(),
|
||||||
on_rightclick = function(pos, node, clicker, item, _)
|
on_rightclick = function(pos, node, clicker, item, _)
|
||||||
minetest.set_node(pos, {name="scifi_nodes:capsule2", param2=node.param2})
|
minetest.set_node(pos, {name="scifi_nodes:capsule2", param2=node.param2})
|
||||||
end,
|
end,
|
||||||
@@ -992,7 +1054,7 @@ minetest.register_node("scifi_nodes:capsule3", {
|
|||||||
"scifi_nodes_capsule3.png",
|
"scifi_nodes_capsule3.png",
|
||||||
"scifi_nodes_capsule3.png"
|
"scifi_nodes_capsule3.png"
|
||||||
},
|
},
|
||||||
use_texture_alpha = true,
|
use_texture_alpha = "blend",
|
||||||
drawtype = "nodebox",
|
drawtype = "nodebox",
|
||||||
paramtype = "light",
|
paramtype = "light",
|
||||||
paramtype2 = "facedir",
|
paramtype2 = "facedir",
|
||||||
@@ -1006,7 +1068,8 @@ minetest.register_node("scifi_nodes:capsule3", {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
groups = {cracky=1, oddly_breakable_by_hand=1, not_in_creative_inventory=1},
|
groups = {cracky=1, oddly_breakable_by_hand=1, not_in_creative_inventory=1},
|
||||||
sounds = default.node_sound_glass_defaults(),
|
is_ground_content = false,
|
||||||
|
sounds = scifi_nodes.node_sound_glass_defaults(),
|
||||||
on_rightclick = function(pos, node, clicker, item, _)
|
on_rightclick = function(pos, node, clicker, item, _)
|
||||||
minetest.set_node(pos, {name="scifi_nodes:capsule", param2=node.param2})
|
minetest.set_node(pos, {name="scifi_nodes:capsule", param2=node.param2})
|
||||||
end,
|
end,
|
||||||
@@ -1022,7 +1085,7 @@ minetest.register_node("scifi_nodes:capsule2", {
|
|||||||
"scifi_nodes_capsule2.png",
|
"scifi_nodes_capsule2.png",
|
||||||
"scifi_nodes_capsule2.png"
|
"scifi_nodes_capsule2.png"
|
||||||
},
|
},
|
||||||
use_texture_alpha = true,
|
use_texture_alpha = "blend",
|
||||||
drawtype = "nodebox",
|
drawtype = "nodebox",
|
||||||
paramtype = "light",
|
paramtype = "light",
|
||||||
paramtype2 = "facedir",
|
paramtype2 = "facedir",
|
||||||
@@ -1036,7 +1099,8 @@ minetest.register_node("scifi_nodes:capsule2", {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
groups = {cracky=1, oddly_breakable_by_hand=1, not_in_creative_inventory=1},
|
groups = {cracky=1, oddly_breakable_by_hand=1, not_in_creative_inventory=1},
|
||||||
sounds = default.node_sound_glass_defaults(),
|
is_ground_content = false,
|
||||||
|
sounds = scifi_nodes.node_sound_glass_defaults(),
|
||||||
on_rightclick = function(pos, node, clicker, item, _)
|
on_rightclick = function(pos, node, clicker, item, _)
|
||||||
minetest.set_node(pos, {name="scifi_nodes:capsule3", param2=node.param2})
|
minetest.set_node(pos, {name="scifi_nodes:capsule3", param2=node.param2})
|
||||||
end,
|
end,
|
||||||
@@ -1065,8 +1129,9 @@ minetest.register_node("scifi_nodes:itemholder", {
|
|||||||
{-0.25, -0.5, -0.0625, -0.1875, -0.0625, 0.0625}, -- NodeBox5
|
{-0.25, -0.5, -0.0625, -0.1875, -0.0625, 0.0625}, -- NodeBox5
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
groups = {cracky=1},
|
groups = {cracky=1, dig_generic = 3},
|
||||||
on_rotate = screwdriver.disallow,
|
is_ground_content = false,
|
||||||
|
on_rotate = minetest.get_modpath("screwdriver") and screwdriver.disallow,
|
||||||
after_place_node = function(pos, placer, itemstack)
|
after_place_node = function(pos, placer, itemstack)
|
||||||
local meta = minetest.get_meta(pos)
|
local meta = minetest.get_meta(pos)
|
||||||
meta:set_string("owner",placer:get_player_name())
|
meta:set_string("owner",placer:get_player_name())
|
||||||
@@ -1078,10 +1143,9 @@ minetest.register_node("scifi_nodes:itemholder", {
|
|||||||
local meta = minetest.get_meta(pos)
|
local meta = minetest.get_meta(pos)
|
||||||
if name == meta:get_string("owner") or
|
if name == meta:get_string("owner") or
|
||||||
minetest.check_player_privs(name, "protection_bypass") then
|
minetest.check_player_privs(name, "protection_bypass") then
|
||||||
local wield_item = clicker:get_wielded_item():get_name()
|
|
||||||
local taken = item:take_item()
|
local taken = item:take_item()
|
||||||
if taken and not taken:is_empty() then
|
if taken and not taken:is_empty() then
|
||||||
minetest.add_item(pos, wield_item)
|
minetest.add_item(pos, taken:to_string())
|
||||||
return item
|
return item
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@@ -1099,6 +1163,7 @@ minetest.register_node("scifi_nodes:itemholder", {
|
|||||||
minetest.add_item(pos, meta:get_string("item"))
|
minetest.add_item(pos, meta:get_string("item"))
|
||||||
end
|
end
|
||||||
end,
|
end,
|
||||||
|
sounds = scifi_nodes.node_sound_metal_defaults(),
|
||||||
})
|
})
|
||||||
|
|
||||||
minetest.register_node("scifi_nodes:glassscreen", {
|
minetest.register_node("scifi_nodes:glassscreen", {
|
||||||
@@ -1111,11 +1176,11 @@ minetest.register_node("scifi_nodes:glassscreen", {
|
|||||||
"scifi_nodes_glscrn.png",
|
"scifi_nodes_glscrn.png",
|
||||||
"scifi_nodes_glscrn.png"
|
"scifi_nodes_glscrn.png"
|
||||||
},
|
},
|
||||||
use_texture_alpha = true,
|
use_texture_alpha = "blend",
|
||||||
drawtype = "nodebox",
|
drawtype = "nodebox",
|
||||||
paramtype = "light",
|
paramtype = "light",
|
||||||
paramtype2 = "facedir",
|
paramtype2 = "facedir",
|
||||||
light_source = default.LIGHT_MAX,
|
light_source = minetest.LIGHT_MAX,
|
||||||
sunlight_propagates = true,
|
sunlight_propagates = true,
|
||||||
node_box = {
|
node_box = {
|
||||||
type = "fixed",
|
type = "fixed",
|
||||||
@@ -1125,7 +1190,8 @@ minetest.register_node("scifi_nodes:glassscreen", {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
groups = {cracky=1, oddly_breakable_by_hand=1},
|
groups = {cracky=1, oddly_breakable_by_hand=1},
|
||||||
sounds = default.node_sound_glass_defaults(),
|
is_ground_content = false,
|
||||||
|
sounds = scifi_nodes.node_sound_glass_defaults(),
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
||||||
@@ -1156,7 +1222,9 @@ minetest.register_node("scifi_nodes:widescreen", {
|
|||||||
{-0.5, 0.25, 0.375, 0.5, 0.3125, 0.5}, -- NodeBox7
|
{-0.5, 0.25, 0.375, 0.5, 0.3125, 0.5}, -- NodeBox7
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
groups = {cracky=1, oddly_breakable_by_hand=1}
|
groups = {cracky=1, oddly_breakable_by_hand=1},
|
||||||
|
is_ground_content = false,
|
||||||
|
sounds = scifi_nodes.node_sound_defaults(),
|
||||||
})
|
})
|
||||||
|
|
||||||
minetest.register_node("scifi_nodes:tallscreen", {
|
minetest.register_node("scifi_nodes:tallscreen", {
|
||||||
@@ -1186,7 +1254,9 @@ minetest.register_node("scifi_nodes:tallscreen", {
|
|||||||
{0.25, -0.5, 0.375, 0.3125, 0.5, 0.5}, -- NodeBox7
|
{0.25, -0.5, 0.375, 0.3125, 0.5, 0.5}, -- NodeBox7
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
groups = {cracky=1, oddly_breakable_by_hand=1}
|
groups = {cracky=1, oddly_breakable_by_hand=1},
|
||||||
|
is_ground_content = false,
|
||||||
|
sounds = scifi_nodes.node_sound_defaults(),
|
||||||
})
|
})
|
||||||
|
|
||||||
-- https://forum.minetest.net/viewtopic.php?f=10&t=13125&p=261481#p261481
|
-- https://forum.minetest.net/viewtopic.php?f=10&t=13125&p=261481#p261481
|
||||||
@@ -1197,7 +1267,7 @@ minetest.register_node("scifi_nodes:windowpanel", {
|
|||||||
},
|
},
|
||||||
drawtype = "nodebox",
|
drawtype = "nodebox",
|
||||||
paramtype = "light",
|
paramtype = "light",
|
||||||
use_texture_alpha = true,
|
use_texture_alpha = "blend",
|
||||||
sunlight_propagates = true,
|
sunlight_propagates = true,
|
||||||
paramtype2 = "facedir",
|
paramtype2 = "facedir",
|
||||||
node_box = {
|
node_box = {
|
||||||
@@ -1206,7 +1276,8 @@ minetest.register_node("scifi_nodes:windowpanel", {
|
|||||||
{-0.0625, -0.5, -0.5, 0.0625, 0.5, 0.5}, -- NodeBox11
|
{-0.0625, -0.5, -0.5, 0.0625, 0.5, 0.5}, -- NodeBox11
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
groups = {cracky=1},
|
groups = {cracky=1, dig_generic = 3},
|
||||||
|
is_ground_content = false,
|
||||||
on_place = minetest.rotate_node,
|
on_place = minetest.rotate_node,
|
||||||
sounds = default.node_sound_glass_defaults(),
|
sounds = scifi_nodes.node_sound_glass_defaults(),
|
||||||
})
|
})
|
||||||
|
246
nodenames.txt
Normal file
246
nodenames.txt
Normal file
@@ -0,0 +1,246 @@
|
|||||||
|
scifi_nodes:liquid_pipe
|
||||||
|
scifi_nodes:light
|
||||||
|
scifi_nodes:blackdmg
|
||||||
|
scifi_nodes:bluemetal
|
||||||
|
scifi_nodes:blackpipe
|
||||||
|
scifi_nodes:white_pad
|
||||||
|
scifi_nodes:green_light
|
||||||
|
scifi_nodes:glass
|
||||||
|
scifi_nodes:pad
|
||||||
|
scifi_nodes:rough
|
||||||
|
scifi_nodes:protected_switch_on
|
||||||
|
scifi_nodes:rock
|
||||||
|
scifi_nodes:greentubes
|
||||||
|
scifi_nodes:slope_gblock
|
||||||
|
scifi_nodes:greytile
|
||||||
|
scifi_nodes:dent
|
||||||
|
scifi_nodes:screen2
|
||||||
|
scifi_nodes:octbl_pane_offset
|
||||||
|
scifi_nodes:octppl_pane_offset
|
||||||
|
scifi_nodes:grnpipe
|
||||||
|
scifi_nodes:doomengine
|
||||||
|
scifi_nodes:egg
|
||||||
|
scifi_nodes:ultra_white
|
||||||
|
scifi_nodes:octppl_pane_double
|
||||||
|
scifi_nodes:cover
|
||||||
|
scifi_nodes:laptop_closed
|
||||||
|
scifi_nodes:discs
|
||||||
|
scifi_nodes:switch_on
|
||||||
|
scifi_nodes:Doom_door_closed
|
||||||
|
scifi_nodes:glass_pane
|
||||||
|
scifi_nodes:disc
|
||||||
|
scifi_nodes:whtlightbnd
|
||||||
|
scifi_nodes:light_dynamic
|
||||||
|
scifi_nodes:slope_wallpipe
|
||||||
|
scifi_nodes:greenbar
|
||||||
|
scifi_nodes:blue_square
|
||||||
|
scifi_nodes:blumetlight
|
||||||
|
scifi_nodes:white_door_opened
|
||||||
|
scifi_nodes:blue_door_closed
|
||||||
|
scifi_nodes:pipeside
|
||||||
|
scifi_nodes:keysmonitor
|
||||||
|
scifi_nodes:slope_pipe
|
||||||
|
scifi_nodes:grass
|
||||||
|
scifi_nodes:slope_alien
|
||||||
|
scifi_nodes:doomwall3
|
||||||
|
scifi_nodes:blumetstr
|
||||||
|
scifi_nodes:doomwall42
|
||||||
|
scifi_nodes:blue
|
||||||
|
scifi_nodes:greenlights2
|
||||||
|
scifi_nodes:slope_black
|
||||||
|
scifi_nodes:plant10
|
||||||
|
scifi_nodes:plant2
|
||||||
|
scifi_nodes:blklt2
|
||||||
|
scifi_nodes:plant9
|
||||||
|
scifi_nodes:screen
|
||||||
|
scifi_nodes:purple
|
||||||
|
scifi_nodes:white_door_closed
|
||||||
|
scifi_nodes:lightstp
|
||||||
|
scifi_nodes:slope_stripes
|
||||||
|
scifi_nodes:pplwndw
|
||||||
|
scifi_nodes:crate
|
||||||
|
scifi_nodes:octrng_pane_double
|
||||||
|
scifi_nodes:widescreen
|
||||||
|
scifi_nodes:blue_door_closed_top
|
||||||
|
scifi_nodes:slope_white2
|
||||||
|
scifi_nodes:table
|
||||||
|
scifi_nodes:green_door_opened
|
||||||
|
scifi_nodes:flower1
|
||||||
|
scifi_nodes:grnpipe2
|
||||||
|
scifi_nodes:slope_mesh
|
||||||
|
scifi_nodes:rock2
|
||||||
|
scifi_nodes:blackdmgstripe
|
||||||
|
scifi_nodes:ppllght
|
||||||
|
scifi_nodes:grey_square
|
||||||
|
scifi_nodes:plant6
|
||||||
|
scifi_nodes:powered_stand
|
||||||
|
scifi_nodes:pot
|
||||||
|
scifi_nodes:wall
|
||||||
|
scifi_nodes:greygreenbar
|
||||||
|
scifi_nodes:greenmetal
|
||||||
|
scifi_nodes:blacktile2
|
||||||
|
scifi_nodes:blackoct
|
||||||
|
scifi_nodes:black
|
||||||
|
scifi_nodes:slope_ultra_white
|
||||||
|
scifi_nodes:lighttop
|
||||||
|
scifi_nodes:blackplate
|
||||||
|
scifi_nodes:doomwall43
|
||||||
|
scifi_nodes:green_square
|
||||||
|
scifi_nodes:Doom_door_closed_top
|
||||||
|
scifi_nodes:box
|
||||||
|
scifi_nodes:green
|
||||||
|
scifi_nodes:plant8
|
||||||
|
scifi_nodes:whiteoct
|
||||||
|
scifi_nodes:wallpipe
|
||||||
|
scifi_nodes:flower4
|
||||||
|
scifi_nodes:slope_bluebars
|
||||||
|
scifi_nodes:engine
|
||||||
|
scifi_nodes:glass_pane_double
|
||||||
|
scifi_nodes:blacktile
|
||||||
|
scifi_nodes:glassscreen
|
||||||
|
scifi_nodes:octrng
|
||||||
|
scifi_nodes:plant1
|
||||||
|
scifi_nodes:computer
|
||||||
|
scifi_nodes:grassblk
|
||||||
|
scifi_nodes:tower
|
||||||
|
scifi_nodes:builder
|
||||||
|
scifi_nodes:pplwll2
|
||||||
|
scifi_nodes:doomwall431
|
||||||
|
scifi_nodes:black_screen
|
||||||
|
scifi_nodes:doomwall44
|
||||||
|
scifi_nodes:windowstraight2
|
||||||
|
scifi_nodes:gblock3
|
||||||
|
scifi_nodes:octgrn_pane_offset
|
||||||
|
scifi_nodes:glass_pane_offset
|
||||||
|
scifi_nodes:octppl_pane
|
||||||
|
scifi_nodes:octbl_pane_double
|
||||||
|
scifi_nodes:octgrn_pane_double
|
||||||
|
scifi_nodes:octgrn_pane
|
||||||
|
scifi_nodes:octrng_pane_offset
|
||||||
|
scifi_nodes:octrng_pane
|
||||||
|
scifi_nodes:digicode_off
|
||||||
|
scifi_nodes:octppl
|
||||||
|
scifi_nodes:digicode_on
|
||||||
|
scifi_nodes:palm_scanner_checking
|
||||||
|
scifi_nodes:palm_scanner_off
|
||||||
|
scifi_nodes:windowpanel
|
||||||
|
scifi_nodes:slope_vent
|
||||||
|
scifi_nodes:tallscreen
|
||||||
|
scifi_nodes:itemholder
|
||||||
|
scifi_nodes:capsule2
|
||||||
|
scifi_nodes:capsule3
|
||||||
|
scifi_nodes:slope_wall
|
||||||
|
scifi_nodes:slope_blklt2
|
||||||
|
scifi_nodes:plant5
|
||||||
|
scifi_nodes:slope_screen
|
||||||
|
scifi_nodes:windowcorner2
|
||||||
|
scifi_nodes:windowstraight
|
||||||
|
scifi_nodes:windowcorner
|
||||||
|
scifi_nodes:pipen
|
||||||
|
scifi_nodes:laptop_open
|
||||||
|
scifi_nodes:mesh2
|
||||||
|
scifi_nodes:microscope
|
||||||
|
scifi_nodes:liquid_pipe2
|
||||||
|
scifi_nodes:lightbars
|
||||||
|
scifi_nodes:doomwall4
|
||||||
|
scifi_nodes:lightbar
|
||||||
|
scifi_nodes:plant_trap
|
||||||
|
scifi_nodes:slope_purple
|
||||||
|
scifi_nodes:gloshroom
|
||||||
|
scifi_nodes:blue_door_opened_top
|
||||||
|
scifi_nodes:greenbar_animated
|
||||||
|
scifi_nodes:blue_door_opened
|
||||||
|
scifi_nodes:tile
|
||||||
|
scifi_nodes:flower3
|
||||||
|
scifi_nodes:green_door_opened_top
|
||||||
|
scifi_nodes:green_door_closed_top
|
||||||
|
scifi_nodes:blackvent
|
||||||
|
scifi_nodes:white_door_opened_top
|
||||||
|
scifi_nodes:white_door_closed_top
|
||||||
|
scifi_nodes:black_door_opened_top
|
||||||
|
scifi_nodes:black_door_opened
|
||||||
|
scifi_nodes:white_base
|
||||||
|
scifi_nodes:black_door_closed_top
|
||||||
|
scifi_nodes:black_door_closed
|
||||||
|
scifi_nodes:Doom_door_opened_top
|
||||||
|
scifi_nodes:stripes
|
||||||
|
scifi_nodes:Doom_door_opened
|
||||||
|
scifi_nodes:bluebars
|
||||||
|
scifi_nodes:doomwall41
|
||||||
|
scifi_nodes:green2
|
||||||
|
scifi_nodes:whitetile
|
||||||
|
scifi_nodes:rust
|
||||||
|
scifi_nodes:slope_glight
|
||||||
|
scifi_nodes:fan
|
||||||
|
scifi_nodes:red_square
|
||||||
|
scifi_nodes:greydots
|
||||||
|
scifi_nodes:green_door_closed
|
||||||
|
scifi_nodes:greenlights
|
||||||
|
scifi_nodes:mesh
|
||||||
|
scifi_nodes:black_mesh
|
||||||
|
scifi_nodes:gblock2
|
||||||
|
scifi_nodes:stripes2top
|
||||||
|
scifi_nodes:greybolts
|
||||||
|
scifi_nodes:octofloor
|
||||||
|
scifi_nodes:pplwll3
|
||||||
|
scifi_nodes:red
|
||||||
|
scifi_nodes:greenmetal2
|
||||||
|
scifi_nodes:junk
|
||||||
|
scifi_nodes:red_light
|
||||||
|
scifi_nodes:pplblk
|
||||||
|
scifi_nodes:super_white
|
||||||
|
scifi_nodes:bluwllight
|
||||||
|
scifi_nodes:blackvnt
|
||||||
|
scifi_nodes:pplwll4
|
||||||
|
scifi_nodes:slope_holes
|
||||||
|
scifi_nodes:vent2
|
||||||
|
scifi_nodes:bluetile
|
||||||
|
scifi_nodes:eyetree
|
||||||
|
scifi_nodes:octgrn
|
||||||
|
scifi_nodes:capsule
|
||||||
|
scifi_nodes:slope_bluemetal
|
||||||
|
scifi_nodes:slope_super_white
|
||||||
|
scifi_nodes:switch_off
|
||||||
|
scifi_nodes:octbl
|
||||||
|
scifi_nodes:doomlight
|
||||||
|
scifi_nodes:white2
|
||||||
|
scifi_nodes:forcefield
|
||||||
|
scifi_nodes:alienslope
|
||||||
|
scifi_nodes:slope_white
|
||||||
|
scifi_nodes:plant3
|
||||||
|
scifi_nodes:slope_mesh2
|
||||||
|
scifi_nodes:screen3
|
||||||
|
scifi_nodes:pipe
|
||||||
|
scifi_nodes:black_detail
|
||||||
|
scifi_nodes:slope_lightstripe
|
||||||
|
scifi_nodes:slope_blight
|
||||||
|
scifi_nodes:ladder
|
||||||
|
scifi_nodes:protected_switch_off
|
||||||
|
scifi_nodes:rfloor
|
||||||
|
scifi_nodes:white
|
||||||
|
scifi_nodes:gblock
|
||||||
|
scifi_nodes:octofloor2
|
||||||
|
scifi_nodes:slope_rough
|
||||||
|
scifi_nodes:octbl_pane
|
||||||
|
scifi_nodes:bluegrid
|
||||||
|
scifi_nodes:pot_lid
|
||||||
|
scifi_nodes:slope_rlight
|
||||||
|
scifi_nodes:bfloor
|
||||||
|
scifi_nodes:plant4
|
||||||
|
scifi_nodes:pot2
|
||||||
|
scifi_nodes:greybars
|
||||||
|
scifi_nodes:doomwall1
|
||||||
|
scifi_nodes:holes
|
||||||
|
scifi_nodes:black_lights
|
||||||
|
scifi_nodes:palm_scanner_on
|
||||||
|
scifi_nodes:plant7
|
||||||
|
scifi_nodes:flower2
|
||||||
|
scifi_nodes:slope_greenmetal
|
||||||
|
scifi_nodes:blink
|
||||||
|
scifi_nodes:slope_grey
|
||||||
|
scifi_nodes:grey
|
||||||
|
scifi_nodes:pplwll
|
||||||
|
scifi_nodes:stripes2
|
||||||
|
scifi_nodes:slope_blight2
|
||||||
|
scifi_nodes:monitorwall
|
||||||
|
scifi_nodes:doomwall2
|
325
nodes.json
Normal file
325
nodes.json
Normal file
@@ -0,0 +1,325 @@
|
|||||||
|
{
|
||||||
|
"blue": {
|
||||||
|
"description": "Blue lines"
|
||||||
|
},
|
||||||
|
"holes": {
|
||||||
|
"description": "Metal with holes"
|
||||||
|
},
|
||||||
|
"white2": {
|
||||||
|
"description": "plastic",
|
||||||
|
"colorable": true,
|
||||||
|
"sounds": "stone",
|
||||||
|
"signs_banner": true,
|
||||||
|
"signs_banner_color": "#000"
|
||||||
|
},
|
||||||
|
"super_white": {
|
||||||
|
"description": "Super Plastic",
|
||||||
|
"light": 11,
|
||||||
|
"sounds": "stone",
|
||||||
|
"texture_name": "white2"
|
||||||
|
},
|
||||||
|
"ultra_white": {
|
||||||
|
"description": "Ultra Plastic",
|
||||||
|
"light": 14,
|
||||||
|
"sounds": "stone",
|
||||||
|
"texture_name": "white2"
|
||||||
|
},
|
||||||
|
"engine": {
|
||||||
|
"description": "Engine",
|
||||||
|
"ambience": {
|
||||||
|
"scifi_nodes_ambience_engine": {
|
||||||
|
"interval": 16.1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"wall": {
|
||||||
|
"description": "metal wall"
|
||||||
|
},
|
||||||
|
"white": {
|
||||||
|
"description": "plastic wall",
|
||||||
|
"colorable": true,
|
||||||
|
"sounds": "stone"
|
||||||
|
},
|
||||||
|
"stripes2top": {
|
||||||
|
"description": "Dirty metal block"
|
||||||
|
},
|
||||||
|
"rough": {
|
||||||
|
"description": "rough metal"
|
||||||
|
},
|
||||||
|
"lighttop": {
|
||||||
|
"description": "metal block",
|
||||||
|
"slat": true
|
||||||
|
},
|
||||||
|
"red": {
|
||||||
|
"description": "red lines"
|
||||||
|
},
|
||||||
|
"green": {
|
||||||
|
"description": "green lines"
|
||||||
|
},
|
||||||
|
"vent2": {
|
||||||
|
"description": "vent"
|
||||||
|
},
|
||||||
|
"vent3": {
|
||||||
|
"description": "transparent vent",
|
||||||
|
"texture_name": "vent2",
|
||||||
|
"texture_modifier": "^[makealpha:33,33,33",
|
||||||
|
"drawtype": "glasslike",
|
||||||
|
"ambience": {
|
||||||
|
"scifi_nodes_ambience_vent": {
|
||||||
|
"interval": 4.2
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"stripes": {
|
||||||
|
"description": "hazard stripes",
|
||||||
|
"slat": true,
|
||||||
|
"advtrains_platform": true
|
||||||
|
},
|
||||||
|
"rust": {
|
||||||
|
"description": "rusty metal"
|
||||||
|
},
|
||||||
|
"mesh": {
|
||||||
|
"description": "metal mesh"
|
||||||
|
},
|
||||||
|
"black": {
|
||||||
|
"description": "black wall",
|
||||||
|
"signs_banner": true
|
||||||
|
},
|
||||||
|
"blackoct": {
|
||||||
|
"description": "black octagon"
|
||||||
|
},
|
||||||
|
"blackpipe": {
|
||||||
|
"description": "black pipe"
|
||||||
|
},
|
||||||
|
"blacktile": {
|
||||||
|
"description": "black tile"
|
||||||
|
},
|
||||||
|
"blacktile2": {
|
||||||
|
"description": "black tile 2",
|
||||||
|
"paramtype2": "none"
|
||||||
|
},
|
||||||
|
"blackvent": {
|
||||||
|
"description": "black vent"
|
||||||
|
},
|
||||||
|
"bluebars": {
|
||||||
|
"description": "blue bars"
|
||||||
|
},
|
||||||
|
"bluemetal": {
|
||||||
|
"description": "blue metal",
|
||||||
|
"signs_banner": true
|
||||||
|
},
|
||||||
|
"bluetile": {
|
||||||
|
"description": "blue tile",
|
||||||
|
"slat": true
|
||||||
|
},
|
||||||
|
"greytile": {
|
||||||
|
"description": "grey tile"
|
||||||
|
},
|
||||||
|
"mesh2": {
|
||||||
|
"description": "metal floormesh"
|
||||||
|
},
|
||||||
|
"mesh3": {
|
||||||
|
"description": "transparent metal floormesh",
|
||||||
|
"texture_name": "mesh",
|
||||||
|
"texture_modifier": "^[contrast:10:-50^[makealpha:0,0,0",
|
||||||
|
"drawtype": "glasslike"
|
||||||
|
},
|
||||||
|
"pipe": {
|
||||||
|
"description": "wall pipe"
|
||||||
|
},
|
||||||
|
"pipeside": {
|
||||||
|
"description": "side pipe"
|
||||||
|
},
|
||||||
|
"tile": {
|
||||||
|
"description": "white tile"
|
||||||
|
},
|
||||||
|
"whiteoct": {
|
||||||
|
"description": "white octagon",
|
||||||
|
"colorable": true
|
||||||
|
},
|
||||||
|
"whitetile": {
|
||||||
|
"description": "white tile 2",
|
||||||
|
"colorable": true,
|
||||||
|
"slat": true
|
||||||
|
},
|
||||||
|
"black_detail": {
|
||||||
|
"description": "black detail"
|
||||||
|
},
|
||||||
|
"green_square": {
|
||||||
|
"description": "green metal block"
|
||||||
|
},
|
||||||
|
"red_square": {
|
||||||
|
"description": "red metal block"
|
||||||
|
},
|
||||||
|
"grey_square": {
|
||||||
|
"description": "grey metal block",
|
||||||
|
"paramtype2": "none"
|
||||||
|
},
|
||||||
|
"blue_square": {
|
||||||
|
"description": "blue metal block"
|
||||||
|
},
|
||||||
|
"black_mesh": {
|
||||||
|
"description": "black vent block"
|
||||||
|
},
|
||||||
|
"dent": {
|
||||||
|
"description": "dented metal block",
|
||||||
|
"colorable": true
|
||||||
|
},
|
||||||
|
"greenmetal": {
|
||||||
|
"description": "green metal wall",
|
||||||
|
"signs_banner": true
|
||||||
|
},
|
||||||
|
"greenmetal2": {
|
||||||
|
"description": "green metal wall2"
|
||||||
|
},
|
||||||
|
"greenlights": {
|
||||||
|
"description": "green wall lights",
|
||||||
|
"light": 10
|
||||||
|
},
|
||||||
|
"greenlights2": {
|
||||||
|
"description": "green wall lights2",
|
||||||
|
"light": 10
|
||||||
|
},
|
||||||
|
"greenbar": {
|
||||||
|
"description": "green light bar",
|
||||||
|
"light": 10
|
||||||
|
},
|
||||||
|
"green2": {
|
||||||
|
"description": "green wall panel"
|
||||||
|
},
|
||||||
|
"greentubes": {
|
||||||
|
"description": "green pipes"
|
||||||
|
},
|
||||||
|
"grey": {
|
||||||
|
"description": "grey wall",
|
||||||
|
"signs_banner": true
|
||||||
|
},
|
||||||
|
"greybolts": {
|
||||||
|
"description": "grey wall bolts"
|
||||||
|
},
|
||||||
|
"greybars": {
|
||||||
|
"description": "grey bars"
|
||||||
|
},
|
||||||
|
"greydots": {
|
||||||
|
"description": "grey wall dots"
|
||||||
|
},
|
||||||
|
"greygreenbar": {
|
||||||
|
"description": "gray power pipe",
|
||||||
|
"light": 10
|
||||||
|
},
|
||||||
|
"octofloor": {
|
||||||
|
"description": "Doom floor",
|
||||||
|
"sounds": "stone",
|
||||||
|
"paramtype2": "none"
|
||||||
|
},
|
||||||
|
"octofloor2": {
|
||||||
|
"description": "Brown Doom floor",
|
||||||
|
"sounds": "stone",
|
||||||
|
"paramtype2": "none"
|
||||||
|
},
|
||||||
|
"doomwall1": {
|
||||||
|
"description": "Doom wall 1"
|
||||||
|
},
|
||||||
|
"doomwall2": {
|
||||||
|
"description": "Doom wall 2"
|
||||||
|
},
|
||||||
|
"doomwall3": {
|
||||||
|
"description": "Doom wall 3"
|
||||||
|
},
|
||||||
|
"doomwall4": {
|
||||||
|
"description": "Doom wall 4"
|
||||||
|
},
|
||||||
|
"doomwall41": {
|
||||||
|
"description": "Doom wall 4.1"
|
||||||
|
},
|
||||||
|
"doomwall42": {
|
||||||
|
"description": "Doom wall 4.2"
|
||||||
|
},
|
||||||
|
"doomwall43": {
|
||||||
|
"description": "Doom wall 4.3"
|
||||||
|
},
|
||||||
|
"doomwall431": {
|
||||||
|
"description": "Doom wall 4.3.1"
|
||||||
|
},
|
||||||
|
"doomwall44": {
|
||||||
|
"description": "Doom wall 4.4"
|
||||||
|
},
|
||||||
|
"blackdmg": {
|
||||||
|
"description": "Damaged black wall",
|
||||||
|
"slat": true,
|
||||||
|
"paramtype2": "none"
|
||||||
|
},
|
||||||
|
"blackdmgstripe": {
|
||||||
|
"description": "Damaged black wall(stripes)"
|
||||||
|
},
|
||||||
|
"doomengine": {
|
||||||
|
"description": "Doom engine wall"
|
||||||
|
},
|
||||||
|
"monitorwall": {
|
||||||
|
"description": "Wall monitors"
|
||||||
|
},
|
||||||
|
"screen3": {
|
||||||
|
"description": "Wall monitor"
|
||||||
|
},
|
||||||
|
"doomlight": {
|
||||||
|
"description": "Doom light",
|
||||||
|
"light": 12
|
||||||
|
},
|
||||||
|
"bluwllight": {
|
||||||
|
"description": "Blue wall light",
|
||||||
|
"light": 14
|
||||||
|
},
|
||||||
|
"bluegrid": {
|
||||||
|
"description": "Blue Grid",
|
||||||
|
"light": 5
|
||||||
|
},
|
||||||
|
"fan": {
|
||||||
|
"description": "Fan",
|
||||||
|
"ambience": {
|
||||||
|
"scifi_nodes_ambience_fan": {
|
||||||
|
"interval": 7
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"ppllght": {
|
||||||
|
"description": "Purple wall light",
|
||||||
|
"light": 14
|
||||||
|
},
|
||||||
|
"pplwll": {
|
||||||
|
"description": "Purple wall"
|
||||||
|
},
|
||||||
|
"pplwll2": {
|
||||||
|
"description": "Purple wall 2"
|
||||||
|
},
|
||||||
|
"pplwll3": {
|
||||||
|
"description": "Purple wall 3"
|
||||||
|
},
|
||||||
|
"pplwll4": {
|
||||||
|
"description": "Purple wall 4"
|
||||||
|
},
|
||||||
|
"pplblk": {
|
||||||
|
"description": "Purple tile",
|
||||||
|
"slat": true
|
||||||
|
},
|
||||||
|
"purple": {
|
||||||
|
"description": "Purple node",
|
||||||
|
"signs_banner": true
|
||||||
|
},
|
||||||
|
"rock": {
|
||||||
|
"description": "Moonstone",
|
||||||
|
"sounds": "stone",
|
||||||
|
"colorable": true
|
||||||
|
},
|
||||||
|
"rock2": {
|
||||||
|
"description": "Moonstone 2",
|
||||||
|
"sounds": "stone",
|
||||||
|
"colorable": true
|
||||||
|
},
|
||||||
|
"blackvnt": {
|
||||||
|
"description": "Black vent"
|
||||||
|
},
|
||||||
|
"blackplate": {
|
||||||
|
"description": "Black plate",
|
||||||
|
"paramtype2": "none"
|
||||||
|
}
|
||||||
|
}
|
455
nodes.lua
455
nodes.lua
@@ -1,13 +1,22 @@
|
|||||||
|
local has_unifieddyes_mod = minetest.get_modpath("unifieddyes")
|
||||||
|
local has_moreblocks_mod = minetest.get_modpath("moreblocks")
|
||||||
|
local has_slats_mod = minetest.get_modpath("slats")
|
||||||
|
local has_advtrains_mod = minetest.get_modpath("advtrains")
|
||||||
|
local has_signs_api_mod = minetest.get_modpath("signs_api")
|
||||||
|
|
||||||
--nodes
|
--nodes
|
||||||
|
|
||||||
minetest.register_node("scifi_nodes:grassblk", {
|
minetest.register_node("scifi_nodes:grassblk", {
|
||||||
description = "Dirt With Alien Grass",
|
description = "Dirt With Alien Grass",
|
||||||
tiles = {"default_grass.png^[colorize:cyan:80", "default_dirt.png",
|
tiles = {"scifi_nodes_grass_top.png^[colorize:cyan:80", "scifi_nodes_dirt.png",
|
||||||
{name = "default_dirt.png^(default_grass_side.png^[colorize:cyan:80)",
|
{name = "scifi_nodes_dirt.png^(scifi_nodes_grass_side.png^[colorize:cyan:80)",
|
||||||
tileable_vertical = false}},
|
tileable_vertical = false}},
|
||||||
light_source = 2,
|
light_source = 2,
|
||||||
groups = {crumbly=1, oddly_breakable_by_hand=1, soil=1}
|
groups = {crumbly=1, oddly_breakable_by_hand=1, soil=1},
|
||||||
|
is_ground_content = false,
|
||||||
|
sounds = scifi_nodes.node_sound_dirt_defaults({
|
||||||
|
footstep = scifi_nodes.node_sound_plant_defaults().footstep,
|
||||||
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
minetest.register_node("scifi_nodes:light", {
|
minetest.register_node("scifi_nodes:light", {
|
||||||
@@ -23,7 +32,9 @@ minetest.register_node("scifi_nodes:light", {
|
|||||||
},
|
},
|
||||||
light_source = 10,
|
light_source = 10,
|
||||||
paramtype = "light",
|
paramtype = "light",
|
||||||
groups = {cracky=1}
|
groups = {cracky=1, dig_generic = 3},
|
||||||
|
is_ground_content = false,
|
||||||
|
sounds = scifi_nodes.node_sound_metal_defaults(),
|
||||||
})
|
})
|
||||||
|
|
||||||
minetest.register_node("scifi_nodes:rfloor", {
|
minetest.register_node("scifi_nodes:rfloor", {
|
||||||
@@ -34,8 +45,9 @@ minetest.register_node("scifi_nodes:rfloor", {
|
|||||||
paramtype = "light",
|
paramtype = "light",
|
||||||
paramtype2 = "facedir",
|
paramtype2 = "facedir",
|
||||||
light_source = 10,
|
light_source = 10,
|
||||||
groups = {cracky=1},
|
groups = {cracky=1, dig_generic = 3},
|
||||||
sounds = default.node_sound_metal_defaults()
|
is_ground_content = false,
|
||||||
|
sounds = scifi_nodes.node_sound_metal_defaults()
|
||||||
})
|
})
|
||||||
|
|
||||||
minetest.register_node("scifi_nodes:bfloor", {
|
minetest.register_node("scifi_nodes:bfloor", {
|
||||||
@@ -46,8 +58,9 @@ minetest.register_node("scifi_nodes:bfloor", {
|
|||||||
paramtype = "light",
|
paramtype = "light",
|
||||||
paramtype2 = "facedir",
|
paramtype2 = "facedir",
|
||||||
light_source = 10,
|
light_source = 10,
|
||||||
groups = {cracky=1},
|
groups = {cracky=1, dig_generic = 3},
|
||||||
sounds = default.node_sound_metal_defaults()
|
is_ground_content = false,
|
||||||
|
sounds = scifi_nodes.node_sound_metal_defaults()
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
||||||
@@ -63,8 +76,9 @@ minetest.register_node("scifi_nodes:stripes2", {
|
|||||||
"scifi_nodes_stripes2.png"
|
"scifi_nodes_stripes2.png"
|
||||||
},
|
},
|
||||||
paramtype = "light",
|
paramtype = "light",
|
||||||
groups = {cracky=1},
|
groups = {cracky=1, dig_generic = 3},
|
||||||
sounds = default.node_sound_metal_defaults()
|
is_ground_content = false,
|
||||||
|
sounds = scifi_nodes.node_sound_metal_defaults()
|
||||||
})
|
})
|
||||||
|
|
||||||
minetest.register_node("scifi_nodes:gblock", {
|
minetest.register_node("scifi_nodes:gblock", {
|
||||||
@@ -79,8 +93,9 @@ minetest.register_node("scifi_nodes:gblock", {
|
|||||||
"scifi_nodes_gblock.png"
|
"scifi_nodes_gblock.png"
|
||||||
},
|
},
|
||||||
paramtype = "light",
|
paramtype = "light",
|
||||||
groups = {cracky=1};
|
groups = {cracky=1, dig_generic = 3},
|
||||||
sounds = default.node_sound_metal_defaults()
|
is_ground_content = false,
|
||||||
|
sounds = scifi_nodes.node_sound_metal_defaults()
|
||||||
})
|
})
|
||||||
|
|
||||||
minetest.register_node("scifi_nodes:gblock2", {
|
minetest.register_node("scifi_nodes:gblock2", {
|
||||||
@@ -96,8 +111,9 @@ minetest.register_node("scifi_nodes:gblock2", {
|
|||||||
},
|
},
|
||||||
paramtype = "light",
|
paramtype = "light",
|
||||||
paramtype2 = "facedir",
|
paramtype2 = "facedir",
|
||||||
groups = {cracky=1},
|
groups = {cracky=1, dig_generic = 3},
|
||||||
sounds = default.node_sound_metal_defaults()
|
is_ground_content = false,
|
||||||
|
sounds = scifi_nodes.node_sound_metal_defaults()
|
||||||
})
|
})
|
||||||
|
|
||||||
minetest.register_node("scifi_nodes:gblock3", {
|
minetest.register_node("scifi_nodes:gblock3", {
|
||||||
@@ -113,8 +129,9 @@ minetest.register_node("scifi_nodes:gblock3", {
|
|||||||
},
|
},
|
||||||
paramtype = "light",
|
paramtype = "light",
|
||||||
paramtype2 = "facedir",
|
paramtype2 = "facedir",
|
||||||
groups = {cracky=1},
|
groups = {cracky=1, dig_generic = 3},
|
||||||
sounds = default.node_sound_metal_defaults()
|
is_ground_content = false,
|
||||||
|
sounds = scifi_nodes.node_sound_metal_defaults()
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
||||||
@@ -132,8 +149,9 @@ minetest.register_node("scifi_nodes:green_light", {
|
|||||||
},
|
},
|
||||||
light_source = 10,
|
light_source = 10,
|
||||||
paramtype = "light",
|
paramtype = "light",
|
||||||
groups = {cracky=1},
|
groups = {cracky=1, dig_generic = 3},
|
||||||
sounds = default.node_sound_glass_defaults()
|
is_ground_content = false,
|
||||||
|
sounds = scifi_nodes.node_sound_glass_defaults()
|
||||||
})
|
})
|
||||||
|
|
||||||
minetest.register_node("scifi_nodes:red_light", {
|
minetest.register_node("scifi_nodes:red_light", {
|
||||||
@@ -149,8 +167,9 @@ minetest.register_node("scifi_nodes:red_light", {
|
|||||||
},
|
},
|
||||||
light_source = 10,
|
light_source = 10,
|
||||||
paramtype = "light",
|
paramtype = "light",
|
||||||
groups = {cracky=1},
|
groups = {cracky=1, dig_generic = 3},
|
||||||
sounds = default.node_sound_glass_defaults()
|
is_ground_content = false,
|
||||||
|
sounds = scifi_nodes.node_sound_glass_defaults()
|
||||||
})
|
})
|
||||||
|
|
||||||
minetest.register_node("scifi_nodes:discs", {
|
minetest.register_node("scifi_nodes:discs", {
|
||||||
@@ -165,8 +184,9 @@ minetest.register_node("scifi_nodes:discs", {
|
|||||||
"scifi_nodes_discs.png"
|
"scifi_nodes_discs.png"
|
||||||
},
|
},
|
||||||
paramtype = "light",
|
paramtype = "light",
|
||||||
groups = {cracky=1},
|
groups = {cracky=1, dig_generic = 3},
|
||||||
sounds = default.node_sound_glass_defaults()
|
is_ground_content = false,
|
||||||
|
sounds = scifi_nodes.node_sound_metal_defaults()
|
||||||
})
|
})
|
||||||
|
|
||||||
minetest.register_node("scifi_nodes:disc", {
|
minetest.register_node("scifi_nodes:disc", {
|
||||||
@@ -179,9 +199,29 @@ minetest.register_node("scifi_nodes:disc", {
|
|||||||
inventory_image = "scifi_nodes_disc.png",
|
inventory_image = "scifi_nodes_disc.png",
|
||||||
wield_image = "scifi_nodes_disc.png",
|
wield_image = "scifi_nodes_disc.png",
|
||||||
paramtype = "light",
|
paramtype = "light",
|
||||||
groups = {cracky=1}
|
groups = {cracky=1, dig_generic = 3},
|
||||||
|
is_ground_content = false,
|
||||||
|
sounds = scifi_nodes.node_sound_defaults(),
|
||||||
})
|
})
|
||||||
|
|
||||||
|
minetest.register_node("scifi_nodes:greenbar_animated", {
|
||||||
|
description = "animated green light bar",
|
||||||
|
sunlight_propagates = false,
|
||||||
|
tiles = {
|
||||||
|
"scifi_nodes_greenbar.png",
|
||||||
|
"scifi_nodes_greenbar.png", {
|
||||||
|
name="scifi_nodes_greenbar_animated.png",
|
||||||
|
animation={type="vertical_frames", aspect_w=16, aspect_h=16, length=1.00},
|
||||||
|
}
|
||||||
|
},
|
||||||
|
paramtype = "light",
|
||||||
|
paramtype2 = "facedir",
|
||||||
|
groups = {cracky=1, dig_generic = 3},
|
||||||
|
is_ground_content = false,
|
||||||
|
light_source = 10,
|
||||||
|
sounds = scifi_nodes.node_sound_glass_defaults(),
|
||||||
|
on_place = minetest.rotate_node
|
||||||
|
})
|
||||||
|
|
||||||
minetest.register_node("scifi_nodes:blink", {
|
minetest.register_node("scifi_nodes:blink", {
|
||||||
description = "blinking light",
|
description = "blinking light",
|
||||||
@@ -191,9 +231,10 @@ minetest.register_node("scifi_nodes:blink", {
|
|||||||
animation={type="vertical_frames", aspect_w=16, aspect_h=16, length=2.00},
|
animation={type="vertical_frames", aspect_w=16, aspect_h=16, length=2.00},
|
||||||
}},
|
}},
|
||||||
paramtype = "light",
|
paramtype = "light",
|
||||||
groups = {cracky=1},
|
groups = {cracky=1, dig_generic = 3},
|
||||||
|
is_ground_content = false,
|
||||||
light_source = 5,
|
light_source = 5,
|
||||||
sounds = default.node_sound_glass_defaults()
|
sounds = scifi_nodes.node_sound_glass_defaults()
|
||||||
})
|
})
|
||||||
|
|
||||||
minetest.register_node("scifi_nodes:black_lights", {
|
minetest.register_node("scifi_nodes:black_lights", {
|
||||||
@@ -204,8 +245,9 @@ minetest.register_node("scifi_nodes:black_lights", {
|
|||||||
animation={type="vertical_frames", aspect_w=16, aspect_h=16, length=0.50},
|
animation={type="vertical_frames", aspect_w=16, aspect_h=16, length=0.50},
|
||||||
}},
|
}},
|
||||||
paramtype = "light",
|
paramtype = "light",
|
||||||
groups = {cracky=1},
|
groups = {cracky=1, dig_generic = 3},
|
||||||
sounds = default.node_sound_glass_defaults()
|
is_ground_content = false,
|
||||||
|
sounds = scifi_nodes.node_sound_metal_defaults()
|
||||||
})
|
})
|
||||||
|
|
||||||
minetest.register_node("scifi_nodes:black_screen", {
|
minetest.register_node("scifi_nodes:black_screen", {
|
||||||
@@ -216,9 +258,10 @@ minetest.register_node("scifi_nodes:black_screen", {
|
|||||||
animation={type="vertical_frames", aspect_w=16, aspect_h=16, length=2.00},
|
animation={type="vertical_frames", aspect_w=16, aspect_h=16, length=2.00},
|
||||||
}},
|
}},
|
||||||
paramtype = "light",
|
paramtype = "light",
|
||||||
groups = {cracky=1},
|
groups = {cracky=1, dig_generic = 3},
|
||||||
|
is_ground_content = false,
|
||||||
light_source = 1,
|
light_source = 1,
|
||||||
sounds = default.node_sound_stone_defaults()
|
sounds = scifi_nodes.node_sound_metal_defaults()
|
||||||
})
|
})
|
||||||
|
|
||||||
minetest.register_node("scifi_nodes:screen", {
|
minetest.register_node("scifi_nodes:screen", {
|
||||||
@@ -229,9 +272,10 @@ minetest.register_node("scifi_nodes:screen", {
|
|||||||
animation={type="vertical_frames", aspect_w=16, aspect_h=16, length=0.50},
|
animation={type="vertical_frames", aspect_w=16, aspect_h=16, length=0.50},
|
||||||
}},
|
}},
|
||||||
paramtype = "light",
|
paramtype = "light",
|
||||||
groups = {cracky=1},
|
groups = {cracky=1, dig_generic = 3},
|
||||||
|
is_ground_content = false,
|
||||||
light_source = 5,
|
light_source = 5,
|
||||||
sounds = default.node_sound_glass_defaults()
|
sounds = scifi_nodes.node_sound_glass_defaults()
|
||||||
})
|
})
|
||||||
|
|
||||||
minetest.register_node("scifi_nodes:screen2", {
|
minetest.register_node("scifi_nodes:screen2", {
|
||||||
@@ -242,9 +286,10 @@ minetest.register_node("scifi_nodes:screen2", {
|
|||||||
animation={type="vertical_frames", aspect_w=16, aspect_h=16, length=0.50},
|
animation={type="vertical_frames", aspect_w=16, aspect_h=16, length=0.50},
|
||||||
}},
|
}},
|
||||||
paramtype = "light",
|
paramtype = "light",
|
||||||
groups = {cracky=1},
|
groups = {cracky=1, dig_generic = 3},
|
||||||
|
is_ground_content = false,
|
||||||
light_source = 5,
|
light_source = 5,
|
||||||
sounds = default.node_sound_glass_defaults()
|
sounds = scifi_nodes.node_sound_glass_defaults()
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
||||||
@@ -262,8 +307,9 @@ minetest.register_node("scifi_nodes:white_pad", {
|
|||||||
},
|
},
|
||||||
paramtype = "light",
|
paramtype = "light",
|
||||||
paramtype2 = "facedir",
|
paramtype2 = "facedir",
|
||||||
groups = {cracky=1},
|
groups = {cracky=1, dig_generic = 3},
|
||||||
sounds = default.node_sound_glass_defaults()
|
is_ground_content = false,
|
||||||
|
sounds = scifi_nodes.node_sound_metal_defaults()
|
||||||
})
|
})
|
||||||
|
|
||||||
minetest.register_node("scifi_nodes:white_base", {
|
minetest.register_node("scifi_nodes:white_base", {
|
||||||
@@ -279,8 +325,9 @@ minetest.register_node("scifi_nodes:white_base", {
|
|||||||
},
|
},
|
||||||
paramtype = "light",
|
paramtype = "light",
|
||||||
paramtype2 = "facedir",
|
paramtype2 = "facedir",
|
||||||
groups = {cracky=1},
|
groups = {cracky=1, dig_generic = 3},
|
||||||
sounds = default.node_sound_glass_defaults()
|
is_ground_content = false,
|
||||||
|
sounds = scifi_nodes.node_sound_glass_defaults()
|
||||||
})
|
})
|
||||||
|
|
||||||
minetest.register_node("scifi_nodes:grnpipe", {
|
minetest.register_node("scifi_nodes:grnpipe", {
|
||||||
@@ -296,8 +343,9 @@ minetest.register_node("scifi_nodes:grnpipe", {
|
|||||||
},
|
},
|
||||||
paramtype = "light",
|
paramtype = "light",
|
||||||
paramtype2 = "facedir",
|
paramtype2 = "facedir",
|
||||||
groups = {cracky=1},
|
groups = {cracky=1, dig_generic = 3},
|
||||||
sounds = default.node_sound_metal_defaults(),
|
is_ground_content = false,
|
||||||
|
sounds = scifi_nodes.node_sound_metal_defaults(),
|
||||||
on_place = minetest.rotate_node
|
on_place = minetest.rotate_node
|
||||||
})
|
})
|
||||||
|
|
||||||
@@ -315,71 +363,12 @@ minetest.register_node("scifi_nodes:grnpipe2", {
|
|||||||
},
|
},
|
||||||
paramtype = "light",
|
paramtype = "light",
|
||||||
paramtype2 = "facedir",
|
paramtype2 = "facedir",
|
||||||
groups = {cracky=1},
|
groups = {cracky=1, dig_generic = 3},
|
||||||
sounds = default.node_sound_metal_defaults(),
|
is_ground_content = false,
|
||||||
|
sounds = scifi_nodes.node_sound_metal_defaults(),
|
||||||
on_place = minetest.rotate_node
|
on_place = minetest.rotate_node
|
||||||
})
|
})
|
||||||
|
|
||||||
minetest.register_node("scifi_nodes:octrng", {
|
|
||||||
description = "Orange Octagon Glass",
|
|
||||||
sunlight_propagates = false,
|
|
||||||
drawtype = "glasslike",
|
|
||||||
tiles = {
|
|
||||||
"scifi_nodes_octrng.png",
|
|
||||||
},
|
|
||||||
paramtype = "light",
|
|
||||||
paramtype2 = "facedir",
|
|
||||||
use_texture_alpha = true,
|
|
||||||
light_source = 10,
|
|
||||||
groups = {cracky=2},
|
|
||||||
sounds = default.node_sound_glass_defaults(),
|
|
||||||
})
|
|
||||||
|
|
||||||
minetest.register_node("scifi_nodes:octgrn", {
|
|
||||||
description = "Green Octagon Glass",
|
|
||||||
sunlight_propagates = false,
|
|
||||||
drawtype = "glasslike",
|
|
||||||
tiles = {
|
|
||||||
"scifi_nodes_octgrn.png",
|
|
||||||
},
|
|
||||||
paramtype = "light",
|
|
||||||
paramtype2 = "facedir",
|
|
||||||
use_texture_alpha = true,
|
|
||||||
light_source = 10,
|
|
||||||
groups = {cracky=2},
|
|
||||||
sounds = default.node_sound_glass_defaults(),
|
|
||||||
})
|
|
||||||
|
|
||||||
minetest.register_node("scifi_nodes:octbl", {
|
|
||||||
description = "Blue Octagon Glass",
|
|
||||||
sunlight_propagates = false,
|
|
||||||
drawtype = "glasslike",
|
|
||||||
tiles = {
|
|
||||||
"scifi_nodes_octbl.png",
|
|
||||||
},
|
|
||||||
paramtype = "light",
|
|
||||||
paramtype2 = "facedir",
|
|
||||||
use_texture_alpha = true,
|
|
||||||
light_source = 10,
|
|
||||||
groups = {cracky=2},
|
|
||||||
sounds = default.node_sound_glass_defaults(),
|
|
||||||
})
|
|
||||||
|
|
||||||
minetest.register_node("scifi_nodes:octppl", {
|
|
||||||
description = "Purple Octagon Glass",
|
|
||||||
sunlight_propagates = false,
|
|
||||||
drawtype = "glasslike",
|
|
||||||
tiles = {
|
|
||||||
"scifi_nodes_octppl.png",
|
|
||||||
},
|
|
||||||
paramtype = "light",
|
|
||||||
paramtype2 = "facedir",
|
|
||||||
use_texture_alpha = true,
|
|
||||||
light_source = 10,
|
|
||||||
groups = {cracky=2},
|
|
||||||
sounds = default.node_sound_glass_defaults(),
|
|
||||||
})
|
|
||||||
|
|
||||||
minetest.register_node("scifi_nodes:tower", {
|
minetest.register_node("scifi_nodes:tower", {
|
||||||
description = "Wind tower",
|
description = "Wind tower",
|
||||||
sunlight_propagates = false,
|
sunlight_propagates = false,
|
||||||
@@ -391,8 +380,9 @@ minetest.register_node("scifi_nodes:tower", {
|
|||||||
visual_scale = 2,
|
visual_scale = 2,
|
||||||
inventory_image = "scifi_nodes_tower.png",
|
inventory_image = "scifi_nodes_tower.png",
|
||||||
paramtype = "light",
|
paramtype = "light",
|
||||||
groups = {cracky=2},
|
groups = {cracky=2, dig_generic = 3},
|
||||||
sounds = default.node_sound_metal_defaults()
|
is_ground_content = false,
|
||||||
|
sounds = scifi_nodes.node_sound_metal_defaults()
|
||||||
})
|
})
|
||||||
|
|
||||||
minetest.register_node("scifi_nodes:junk", {
|
minetest.register_node("scifi_nodes:junk", {
|
||||||
@@ -409,7 +399,8 @@ minetest.register_node("scifi_nodes:junk", {
|
|||||||
tiles = {
|
tiles = {
|
||||||
"scifi_nodes_junk.png"
|
"scifi_nodes_junk.png"
|
||||||
},
|
},
|
||||||
groups = {snappy=1, oddly_breakable_by_hand=1, liquid=3, dig_immediate=1}
|
groups = {snappy=1, oddly_breakable_by_hand=1, liquid=3, dig_immediate=1},
|
||||||
|
is_ground_content = false,
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
||||||
@@ -426,8 +417,9 @@ minetest.register_node("scifi_nodes:blumetlight", {
|
|||||||
},
|
},
|
||||||
light_source = 10,
|
light_source = 10,
|
||||||
paramtype = "light",
|
paramtype = "light",
|
||||||
groups = {cracky=1},
|
groups = {cracky=1, dig_generic = 3},
|
||||||
sounds = default.node_sound_glass_defaults()
|
is_ground_content = false,
|
||||||
|
sounds = scifi_nodes.node_sound_glass_defaults()
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
||||||
@@ -437,10 +429,11 @@ minetest.register_node("scifi_nodes:lightstp", {
|
|||||||
tiles = {
|
tiles = {
|
||||||
"scifi_nodes_lightstripe.png"
|
"scifi_nodes_lightstripe.png"
|
||||||
},
|
},
|
||||||
light_source = default.LIGHT_MAX,
|
light_source = minetest.LIGHT_MAX,
|
||||||
paramtype = "light",
|
paramtype = "light",
|
||||||
groups = {cracky=1},
|
groups = {cracky=1, dig_generic = 3},
|
||||||
sounds = default.node_sound_glass_defaults()
|
is_ground_content = false,
|
||||||
|
sounds = scifi_nodes.node_sound_glass_defaults()
|
||||||
})
|
})
|
||||||
|
|
||||||
minetest.register_node("scifi_nodes:blklt2", {
|
minetest.register_node("scifi_nodes:blklt2", {
|
||||||
@@ -451,8 +444,9 @@ minetest.register_node("scifi_nodes:blklt2", {
|
|||||||
},
|
},
|
||||||
light_source = 10,
|
light_source = 10,
|
||||||
paramtype = "light",
|
paramtype = "light",
|
||||||
groups = {cracky=1},
|
groups = {cracky=1, dig_generic = 3},
|
||||||
sounds = default.node_sound_glass_defaults()
|
is_ground_content = false,
|
||||||
|
sounds = scifi_nodes.node_sound_metal_defaults()
|
||||||
})
|
})
|
||||||
|
|
||||||
minetest.register_node("scifi_nodes:blumetstr", {
|
minetest.register_node("scifi_nodes:blumetstr", {
|
||||||
@@ -463,8 +457,9 @@ minetest.register_node("scifi_nodes:blumetstr", {
|
|||||||
},
|
},
|
||||||
light_source = 10,
|
light_source = 10,
|
||||||
paramtype = "light",
|
paramtype = "light",
|
||||||
groups = {cracky=1},
|
groups = {cracky=1, dig_generic = 3},
|
||||||
sounds = default.node_sound_glass_defaults()
|
is_ground_content = false,
|
||||||
|
sounds = scifi_nodes.node_sound_metal_defaults()
|
||||||
})
|
})
|
||||||
|
|
||||||
minetest.register_node("scifi_nodes:glass", {
|
minetest.register_node("scifi_nodes:glass", {
|
||||||
@@ -474,10 +469,11 @@ minetest.register_node("scifi_nodes:glass", {
|
|||||||
tiles = {
|
tiles = {
|
||||||
"scifi_nodes_glass.png"
|
"scifi_nodes_glass.png"
|
||||||
},
|
},
|
||||||
use_texture_alpha = true,
|
use_texture_alpha = "blend",
|
||||||
paramtype = "light",
|
paramtype = "light",
|
||||||
groups = {cracky=1},
|
groups = {cracky=1, dig_generic = 3},
|
||||||
sounds = default.node_sound_glass_defaults()
|
is_ground_content = false,
|
||||||
|
sounds = scifi_nodes.node_sound_glass_defaults()
|
||||||
})
|
})
|
||||||
|
|
||||||
minetest.register_node("scifi_nodes:whtlightbnd", {
|
minetest.register_node("scifi_nodes:whtlightbnd", {
|
||||||
@@ -488,116 +484,135 @@ minetest.register_node("scifi_nodes:whtlightbnd", {
|
|||||||
},
|
},
|
||||||
light_source = 10,
|
light_source = 10,
|
||||||
paramtype = "light",
|
paramtype = "light",
|
||||||
groups = {cracky=1},
|
groups = {cracky=1, dig_generic = 3},
|
||||||
sounds = default.node_sound_glass_defaults()
|
is_ground_content = false,
|
||||||
|
sounds = scifi_nodes.node_sound_metal_defaults()
|
||||||
})
|
})
|
||||||
|
|
||||||
--edited wool code (Copyright (C) 2012 celeron55, Perttu Ahola <celeron55@gmail.com>)
|
-- read "nodes.json"
|
||||||
|
local f = assert(io.open(minetest.get_modpath("scifi_nodes") .. "/nodes.json", "rb"))
|
||||||
|
local nodes = assert(minetest.parse_json(f:read("*all")))
|
||||||
|
f:close()
|
||||||
|
|
||||||
|
-- register all nodes
|
||||||
|
for name, def in pairs(nodes) do
|
||||||
|
|
||||||
-- This uses a trick: you can first define the recipes using all of the base
|
-- default to "metal" sounds if not specified
|
||||||
-- colors, and then some recipes using more specific colors for a few non-base
|
local sounds
|
||||||
-- colors available. When crafting, the last recipes will be checked first.
|
if def.sounds == "stone" then
|
||||||
--add new block using texture name(without "scifi_nodes_" prefix) then the description, and then the name of the block
|
sounds = scifi_nodes.node_sound_stone_defaults()
|
||||||
local nodetypes = {
|
else
|
||||||
{"blue", "blue lines", "blue"},
|
sounds = scifi_nodes.node_sound_metal_defaults()
|
||||||
{"holes", "metal with holes","holes"},
|
end
|
||||||
{"white2", "plastic", "white2"},
|
|
||||||
{"super_white", "Super Plastic", "super_white", 11},
|
-- tiles (default to nodename as texture-name)
|
||||||
{"ultra_white", "Ultra Plastic", "ultra_white", default.LIGHT_MAX},
|
local tiles = {"scifi_nodes_" .. name .. ".png"}
|
||||||
{"engine", "engine", "engine"},
|
if def.texture_name then
|
||||||
{"wall", "metal wall", "wall"},
|
tiles = {"scifi_nodes_" .. def.texture_name .. ".png"}
|
||||||
{"white", "plastic wall", "white"},
|
end
|
||||||
{"stripes2top", "dirty metal block","metal2"},
|
|
||||||
{"rough", "rough metal", "rough"},
|
-- optional texture modifier
|
||||||
{"lighttop", "metal block", "metal"},
|
if def.texture_modifier then
|
||||||
{"red", "red lines", "red"},
|
tiles[1] = tiles[1] .. def.texture_modifier
|
||||||
{"green", "green lines", "green"},
|
end
|
||||||
{"vent2", "vent", "vent"},
|
|
||||||
{"stripes", "hazard stripes", "stripes"},
|
-- Node Definition
|
||||||
{"rust", "rusty metal", "rust"},
|
local node_def = {
|
||||||
{"mesh", "metal mesh", "mesh"},
|
description = def.description,
|
||||||
{"black", "black wall", "black"},
|
drawtype = def.drawtype or "normal",
|
||||||
{"blackoct", "black octagon", "blackoct"},
|
tiles = tiles,
|
||||||
{"blackpipe", "black pipe", "blackpipe"},
|
groups = {cracky=1, dig_generic = 3},
|
||||||
{"blacktile", "black tile", "blktl"},
|
is_ground_content = false,
|
||||||
{"blacktile2", "black tile 2", "blktl2"},
|
paramtype = "light",
|
||||||
{"blackvent", "black vent", "blkvnt"},
|
paramtype2 = def.paramtype2 or "facedir",
|
||||||
{"bluebars", "blue bars", "bluebars"},
|
light_source = def.light,
|
||||||
{"bluemetal", "blue metal", "blumtl"},
|
sounds = sounds,
|
||||||
{"bluetile", "blue tile", "blutl"},
|
|
||||||
{"greytile", "grey tile", "grytl"},
|
|
||||||
{"mesh2", "metal floormesh", "mesh2"},
|
|
||||||
{"white", "plastic wall", "white"},
|
|
||||||
{"pipe", "wall pipe", "pipe2"},
|
|
||||||
{"pipeside", "side pipe", "pipe3"},
|
|
||||||
{"tile", "white tile", "tile"},
|
|
||||||
{"whiteoct", "white octagon", "whiteoct"},
|
|
||||||
{"whitetile", "white tile2", "whttl"},
|
|
||||||
{"black_detail", "black detail", "blckdtl"},
|
|
||||||
{"green_square", "green metal block", "grnblck"},
|
|
||||||
{"red_square", "red metal block", "redblck"},
|
|
||||||
{"grey_square", "grey metal block", "greyblck"},
|
|
||||||
{"blue_square", "blue metal block", "blublck"},
|
|
||||||
{"black_mesh", "black vent block", "blckmsh"},
|
|
||||||
{"dent", "dented metal block", "dent"},
|
|
||||||
{"greenmetal", "green metal wall", "grnmetl"},
|
|
||||||
{"greenmetal2", "green metal wall2", "grnmetl2"},
|
|
||||||
{"greenlights", "green wall lights", "grnlt", 10},
|
|
||||||
{"greenlights2", "green wall lights2", "grnlt2", 10},
|
|
||||||
{"greenbar", "green light bar", "grnlghtbr", 10},
|
|
||||||
{"green2", "green wall panel", "grn2"},
|
|
||||||
{"greentubes", "green pipes", "grntubes"},
|
|
||||||
{"grey", "grey wall", "gry"},
|
|
||||||
{"greybolts", "grey wall bolts", "gryblts"},
|
|
||||||
{"greybars", "grey bars", "grybrs"},
|
|
||||||
{"greydots", "grey wall dots", "grydts"},
|
|
||||||
{"greygreenbar", "gray power pipe", "grygrnbr", 10},
|
|
||||||
{"octofloor", "Doom floor", "octofloor"},
|
|
||||||
{"octofloor2", "Brown Doom floor", "octofloor2"},
|
|
||||||
{"doomwall1", "Doom wall 1", "doomwall1"},
|
|
||||||
{"doomwall2", "Doom wall 2", "doomwall2"},
|
|
||||||
{"doomwall3", "Doom wall 3", "doomwall3"},
|
|
||||||
{"doomwall4", "Doom wall 4", "doomwall4"},
|
|
||||||
{"doomwall41", "Doom wall 4.1", "doomwall4.1"},
|
|
||||||
{"doomwall42", "Doom wall 4.2", "doomwall4.2"},
|
|
||||||
{"doomwall43", "Doom wall 4.3", "doomwall4.3"},
|
|
||||||
{"doomwall431", "Doom wall 4.3.1", "doomwall4.3.1"},
|
|
||||||
{"doomwall44", "Doom wall 4.4", "doomwall4.4"},
|
|
||||||
{"blackdmg", "Damaged black wall", "blckdmg"},
|
|
||||||
{"blackdmgstripe", "Damaged black wall(stripes)", "blckdmgstripe"},
|
|
||||||
{"doomengine", "Doom engine wall", "doomengine"},
|
|
||||||
{"monitorwall", "Wall monitors", "monitorwall"},
|
|
||||||
{"screen3", "Wall monitor", "screen3"},
|
|
||||||
{"doomlight", "Doom light", "doomlight", 12},
|
|
||||||
{"bluwllight", "Blue wall light", "capsule3", default.LIGHT_MAX},
|
|
||||||
{"bluegrid", "Blue Grid", "bluegrid", 5},
|
|
||||||
{"fan", "Fan", "fan"},
|
|
||||||
{"ppllght", "Purple wall light", "", default.LIGHT_MAX},
|
|
||||||
{"pplwll", "Purple wall", "", 0},
|
|
||||||
{"pplwll2", "Purple wall2", "", 0},
|
|
||||||
{"pplwll3", "Purple wall3", "", 0},
|
|
||||||
{"pplwll4", "Purple wall4", "", 0},
|
|
||||||
{"pplblk", "Purple tile", "", 0},
|
|
||||||
{"purple", "Purple node", "", 0},
|
|
||||||
{"rock", "Moonstone", "", 0},
|
|
||||||
{"rock2", "Moonstone2", "", 0},
|
|
||||||
{"blackvnt", "Black vent", "", 0},
|
|
||||||
{"blackplate", "Black plate", "", 0},
|
|
||||||
}
|
}
|
||||||
|
|
||||||
for _, row in ipairs(nodetypes) do
|
if def.colorable and has_unifieddyes_mod then
|
||||||
local name = row[1]
|
-- overwrite attributes on the "uncolored" node
|
||||||
local desc = row[2]
|
node_def.palette = "unifieddyes_palette_extended.png"
|
||||||
local light = row[4]
|
node_def.groups.ud_param2_colorable = 1
|
||||||
-- Node Definition
|
node_def.airbrush_replacement_node = "scifi_nodes:"..name.."_colored"
|
||||||
minetest.register_node("scifi_nodes:"..name, {
|
end
|
||||||
description = desc,
|
|
||||||
tiles = {"scifi_nodes_"..name..".png"},
|
-- register node
|
||||||
groups = {cracky=1},
|
local nodename = "scifi_nodes:" .. name
|
||||||
|
minetest.register_node(nodename , node_def)
|
||||||
|
|
||||||
|
-- unified dyes registration
|
||||||
|
if def.colorable and has_unifieddyes_mod then
|
||||||
|
minetest.register_node("scifi_nodes:"..name.."_colored", {
|
||||||
|
description = def.description,
|
||||||
|
tiles = tiles,
|
||||||
|
groups = {
|
||||||
|
cracky = 1,
|
||||||
|
ud_param2_colorable = 1,
|
||||||
|
not_in_creative_inventory = 1
|
||||||
|
},
|
||||||
|
is_ground_content = false,
|
||||||
|
palette = "unifieddyes_palette_extended.png",
|
||||||
paramtype = "light",
|
paramtype = "light",
|
||||||
paramtype2 = "facedir",
|
paramtype2 = "color",
|
||||||
light_source = light,
|
light_source = def.light,
|
||||||
sounds = default.node_sound_glass_defaults()
|
sounds = scifi_nodes.node_sound_glass_defaults(),
|
||||||
|
on_construct = unifieddyes.on_construct,
|
||||||
|
on_dig = unifieddyes.on_dig
|
||||||
})
|
})
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- moreblocks registration (default to register all except if "false" encountered)
|
||||||
|
if has_moreblocks_mod and def.moreblocks ~= false then
|
||||||
|
stairsplus:register_all("scifi_nodes", name, "scifi_nodes:"..name, {
|
||||||
|
description = def.description,
|
||||||
|
tiles = tiles,
|
||||||
|
use_texture_alpha = "clip",
|
||||||
|
groups = {cracky=1, dig_generic = 3},
|
||||||
|
paramtype = "light",
|
||||||
|
paramtype2 = "facedir",
|
||||||
|
light_source = def.light,
|
||||||
|
sounds = sounds,
|
||||||
|
})
|
||||||
|
end
|
||||||
|
|
||||||
|
if def.ambience then
|
||||||
|
for soundname, opts in pairs(def.ambience) do
|
||||||
|
scifi_nodes.register_ambience(nodename, soundname, opts)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
-- advtrains platform registration
|
||||||
|
if has_advtrains_mod and def.advtrains_platform then
|
||||||
|
advtrains.register_platform("scifi_nodes", "scifi_nodes:" .. name)
|
||||||
|
end
|
||||||
|
|
||||||
|
if has_signs_api_mod and def.signs_banner then
|
||||||
|
signs_api.register_sign("scifi_nodes", name .. "_banner", {
|
||||||
|
depth = 1/16,
|
||||||
|
width = 5,
|
||||||
|
height = 1,
|
||||||
|
entity_fields = {
|
||||||
|
maxlines = 1,
|
||||||
|
color = def.signs_banner_color or "#fff",
|
||||||
|
},
|
||||||
|
node_fields = {
|
||||||
|
visual_scale = 1,
|
||||||
|
description = name .. " banner",
|
||||||
|
tiles = tiles,
|
||||||
|
inventory_image = "scifi_nodes_" .. name .. ".png",
|
||||||
|
use_texture_alpha = "clip",
|
||||||
|
},
|
||||||
|
})
|
||||||
|
end
|
||||||
|
|
||||||
|
if has_slats_mod and def.slat then
|
||||||
|
slats.register_slat(
|
||||||
|
name,
|
||||||
|
"scifi_nodes:" .. name,
|
||||||
|
table.copy(node_def.groups),
|
||||||
|
"scifi_nodes_" .. name .. ".png^slats_slat_overlay.png^[makealpha:255,126,126",
|
||||||
|
def.description .. " Slat",
|
||||||
|
sounds
|
||||||
|
)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
53
octagon_glass.lua
Normal file
53
octagon_glass.lua
Normal file
@@ -0,0 +1,53 @@
|
|||||||
|
local has_unifieddyes_mod = minetest.get_modpath("unifieddyes")
|
||||||
|
|
||||||
|
local function register_glass(key, name)
|
||||||
|
local tiles = {"scifi_nodes_" .. key .. ".png"}
|
||||||
|
|
||||||
|
minetest.register_node("scifi_nodes:" .. key, {
|
||||||
|
description = name .. " Octagon Glass",
|
||||||
|
sunlight_propagates = true,
|
||||||
|
drawtype = "glasslike",
|
||||||
|
tiles = tiles,
|
||||||
|
paramtype = "light",
|
||||||
|
paramtype2 = "facedir",
|
||||||
|
use_texture_alpha = "blend",
|
||||||
|
light_source = 10,
|
||||||
|
groups = {
|
||||||
|
cracky = 2,
|
||||||
|
dig_generic = 3
|
||||||
|
},
|
||||||
|
is_ground_content = false,
|
||||||
|
sounds = scifi_nodes.node_sound_glass_defaults(),
|
||||||
|
})
|
||||||
|
end
|
||||||
|
|
||||||
|
register_glass("octppl", "Purple")
|
||||||
|
register_glass("octbl", "Blue")
|
||||||
|
register_glass("octgrn", "Green")
|
||||||
|
register_glass("octrng", "Orange")
|
||||||
|
register_glass("octwht", "White")
|
||||||
|
|
||||||
|
if has_unifieddyes_mod then
|
||||||
|
minetest.register_node("scifi_nodes:octwht", {
|
||||||
|
description = "Octagon Glass",
|
||||||
|
sunlight_propagates = true,
|
||||||
|
drawtype = "glasslike",
|
||||||
|
tiles = {
|
||||||
|
"scifi_nodes_octwht.png",
|
||||||
|
},
|
||||||
|
palette = "unifieddyes_palette_extended.png",
|
||||||
|
paramtype = "light",
|
||||||
|
paramtype2 = "color",
|
||||||
|
use_texture_alpha = "blend",
|
||||||
|
light_source = 10,
|
||||||
|
groups = {
|
||||||
|
cracky = 2,
|
||||||
|
dig_generic = 3,
|
||||||
|
ud_param2_colorable = 1
|
||||||
|
},
|
||||||
|
is_ground_content = false,
|
||||||
|
sounds = scifi_nodes.node_sound_glass_defaults(),
|
||||||
|
on_construct = unifieddyes.on_construct,
|
||||||
|
on_dig = unifieddyes.on_dig
|
||||||
|
})
|
||||||
|
end
|
155
octagon_panes.lua
Normal file
155
octagon_panes.lua
Normal file
@@ -0,0 +1,155 @@
|
|||||||
|
|
||||||
|
local function register(basename, color, texture)
|
||||||
|
local nodename_single = "scifi_nodes:" .. basename .. "_pane"
|
||||||
|
local nodename_double = "scifi_nodes:" .. basename .. "_pane_double"
|
||||||
|
local nodename_offset = "scifi_nodes:" .. basename .. "_pane_offset"
|
||||||
|
local nodename_slope = "scifi_nodes:" .. basename .. "_slope"
|
||||||
|
local recipe_ingredient = "scifi_nodes:" .. basename
|
||||||
|
local base_decription = color .. " octagon glass"
|
||||||
|
|
||||||
|
-- single height
|
||||||
|
minetest.register_node(nodename_single, {
|
||||||
|
description = base_decription .. " pane",
|
||||||
|
drawtype = "nodebox",
|
||||||
|
tiles = {
|
||||||
|
texture
|
||||||
|
},
|
||||||
|
wield_image = texture,
|
||||||
|
paramtype = "light",
|
||||||
|
paramtype2 = "facedir",
|
||||||
|
sunlight_propagates = true,
|
||||||
|
is_ground_content = false,
|
||||||
|
node_box = {
|
||||||
|
type = "fixed",
|
||||||
|
fixed = {{-0.5, -0.5, -0.03125, 0.5, 0.5, 0.03125}},
|
||||||
|
},
|
||||||
|
selection_box = {
|
||||||
|
type = "fixed",
|
||||||
|
fixed = {{-0.5, -0.5, -0.25, 0.5, 0.5, 0.25}},
|
||||||
|
},
|
||||||
|
groups = {
|
||||||
|
cracky = 3,
|
||||||
|
oddly_breakable_by_hand = 3
|
||||||
|
},
|
||||||
|
use_texture_alpha = "blend",
|
||||||
|
sounds = scifi_nodes.node_sound_glass_defaults()
|
||||||
|
})
|
||||||
|
|
||||||
|
-- double height
|
||||||
|
minetest.register_node(nodename_double, {
|
||||||
|
description = base_decription .. " pane (double)",
|
||||||
|
drawtype = "nodebox",
|
||||||
|
tiles = {
|
||||||
|
texture
|
||||||
|
},
|
||||||
|
wield_image = texture,
|
||||||
|
paramtype = "light",
|
||||||
|
paramtype2 = "facedir",
|
||||||
|
sunlight_propagates = true,
|
||||||
|
is_ground_content = false,
|
||||||
|
node_box = {
|
||||||
|
type = "fixed",
|
||||||
|
fixed = {{-0.5, -0.5, -0.03125, 0.5, 1.5, 0.03125}},
|
||||||
|
},
|
||||||
|
selection_box = {
|
||||||
|
type = "fixed",
|
||||||
|
fixed = {{-0.5, -0.5, -0.25, 0.5, 1.5, 0.25}},
|
||||||
|
},
|
||||||
|
groups = {
|
||||||
|
cracky = 3,
|
||||||
|
oddly_breakable_by_hand = 3
|
||||||
|
},
|
||||||
|
use_texture_alpha = "blend",
|
||||||
|
sounds = scifi_nodes.node_sound_glass_defaults()
|
||||||
|
})
|
||||||
|
|
||||||
|
-- single height with offset
|
||||||
|
minetest.register_node(nodename_offset, {
|
||||||
|
description = base_decription .. " pane (offset)",
|
||||||
|
drawtype = "nodebox",
|
||||||
|
tiles = {
|
||||||
|
texture
|
||||||
|
},
|
||||||
|
wield_image = texture,
|
||||||
|
paramtype = "light",
|
||||||
|
paramtype2 = "facedir",
|
||||||
|
sunlight_propagates = true,
|
||||||
|
is_ground_content = false,
|
||||||
|
node_box = {
|
||||||
|
type = "fixed",
|
||||||
|
fixed = {{-0.5, -0.5, 0.96875, 0.5, 0.5, 1.03125}},
|
||||||
|
},
|
||||||
|
selection_box = {
|
||||||
|
type = "fixed",
|
||||||
|
fixed = {{-0.5, -0.5, 0.75, 0.5, 0.5, 1.25}},
|
||||||
|
},
|
||||||
|
groups = {
|
||||||
|
cracky = 3,
|
||||||
|
oddly_breakable_by_hand = 3,
|
||||||
|
not_blocking_trains = 1
|
||||||
|
},
|
||||||
|
use_texture_alpha = "blend",
|
||||||
|
sounds = scifi_nodes.node_sound_glass_defaults()
|
||||||
|
})
|
||||||
|
|
||||||
|
-- slope pane
|
||||||
|
minetest.register_node(nodename_slope, {
|
||||||
|
description = base_decription .. " pane (slope)",
|
||||||
|
sunlight_propagates = true,
|
||||||
|
drawtype = "mesh",
|
||||||
|
mesh = "scifi_nodes_slope_simple.obj",
|
||||||
|
tiles = {
|
||||||
|
texture
|
||||||
|
},
|
||||||
|
paramtype = "light",
|
||||||
|
paramtype2 = "facedir",
|
||||||
|
use_texture_alpha = "blend",
|
||||||
|
light_source = 10,
|
||||||
|
groups = {
|
||||||
|
cracky = 2,
|
||||||
|
dig_generic = 3
|
||||||
|
},
|
||||||
|
selection_box = scifi_nodes.slope_box_simple,
|
||||||
|
collision_box = scifi_nodes.slope_box_simple,
|
||||||
|
is_ground_content = false,
|
||||||
|
sounds = scifi_nodes.node_sound_glass_defaults()
|
||||||
|
})
|
||||||
|
-- register recipes
|
||||||
|
|
||||||
|
minetest.register_craft({
|
||||||
|
output = nodename_single .. " 16",
|
||||||
|
recipe = {
|
||||||
|
{recipe_ingredient}
|
||||||
|
},
|
||||||
|
})
|
||||||
|
|
||||||
|
minetest.register_craft({
|
||||||
|
output = nodename_slope .. " 16",
|
||||||
|
recipe = {
|
||||||
|
{"", "", recipe_ingredient},
|
||||||
|
{"", recipe_ingredient, ""},
|
||||||
|
{recipe_ingredient, "", ""}
|
||||||
|
},
|
||||||
|
})
|
||||||
|
|
||||||
|
minetest.register_craft({
|
||||||
|
output = nodename_double .. " 16",
|
||||||
|
recipe = {
|
||||||
|
{recipe_ingredient},
|
||||||
|
{recipe_ingredient}
|
||||||
|
},
|
||||||
|
})
|
||||||
|
|
||||||
|
minetest.register_craft({
|
||||||
|
output = nodename_offset,
|
||||||
|
type = "shapeless",
|
||||||
|
recipe = {nodename_single},
|
||||||
|
})
|
||||||
|
end
|
||||||
|
|
||||||
|
register("octrng", "Orange", "scifi_nodes_octrng.png")
|
||||||
|
register("octgrn", "Green", "scifi_nodes_octgrn.png")
|
||||||
|
register("octbl", "Blue", "scifi_nodes_octbl.png")
|
||||||
|
register("octppl", "Purple", "scifi_nodes_octppl.png")
|
||||||
|
register("octwht", "White", "scifi_nodes_octwht.png")
|
||||||
|
register("glass", "Dark Glass pane", "scifi_nodes_glass.png")
|
@@ -22,6 +22,8 @@ local function activate_palm_scanner(pos, node, player)
|
|||||||
|
|
||||||
-- check protection
|
-- check protection
|
||||||
minetest.after(2, function()
|
minetest.after(2, function()
|
||||||
|
if minetest.get_node(pos).name ~= node.name then return end
|
||||||
|
|
||||||
if minetest.is_protected(pos, name or "") then
|
if minetest.is_protected(pos, name or "") then
|
||||||
-- clicker has no access to area
|
-- clicker has no access to area
|
||||||
minetest.chat_send_player(name, "Access denied !")
|
minetest.chat_send_player(name, "Access denied !")
|
||||||
@@ -36,6 +38,7 @@ local function activate_palm_scanner(pos, node, player)
|
|||||||
|
|
||||||
-- reset state
|
-- reset state
|
||||||
minetest.after(1, function()
|
minetest.after(1, function()
|
||||||
|
if minetest.get_node(pos).name ~= node.name then return end
|
||||||
node.name = "scifi_nodes:palm_scanner_off"
|
node.name = "scifi_nodes:palm_scanner_off"
|
||||||
minetest.swap_node(pos, node)
|
minetest.swap_node(pos, node)
|
||||||
mesecon.receptor_off(pos, scifi_nodes.get_switch_rules(node.param2))
|
mesecon.receptor_off(pos, scifi_nodes.get_switch_rules(node.param2))
|
||||||
@@ -56,13 +59,14 @@ minetest.register_node("scifi_nodes:palm_scanner_off", {
|
|||||||
paramtype = "light",
|
paramtype = "light",
|
||||||
paramtype2 = "wallmounted",
|
paramtype2 = "wallmounted",
|
||||||
groups = {cracky=1, oddly_breakable_by_hand=1, mesecon_needs_receiver = 1},
|
groups = {cracky=1, oddly_breakable_by_hand=1, mesecon_needs_receiver = 1},
|
||||||
|
is_ground_content = false,
|
||||||
mesecons = {
|
mesecons = {
|
||||||
receptor = {
|
receptor = {
|
||||||
state = (has_mesecons and mesecon.state.off)
|
state = (has_mesecons and mesecon.state.off)
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
on_rightclick = (has_mesecons and activate_palm_scanner),
|
on_rightclick = (has_mesecons and activate_palm_scanner),
|
||||||
sounds = default.node_sound_glass_defaults(),
|
sounds = scifi_nodes.node_sound_metal_defaults(),
|
||||||
})
|
})
|
||||||
|
|
||||||
minetest.register_node("scifi_nodes:palm_scanner_checking", {
|
minetest.register_node("scifi_nodes:palm_scanner_checking", {
|
||||||
@@ -79,8 +83,9 @@ minetest.register_node("scifi_nodes:palm_scanner_checking", {
|
|||||||
paramtype = "light",
|
paramtype = "light",
|
||||||
paramtype2 = "wallmounted",
|
paramtype2 = "wallmounted",
|
||||||
groups = {cracky=1, oddly_breakable_by_hand=1, not_in_creative_inventory=1, mesecon_needs_receiver = 1},
|
groups = {cracky=1, oddly_breakable_by_hand=1, not_in_creative_inventory=1, mesecon_needs_receiver = 1},
|
||||||
|
is_ground_content = false,
|
||||||
drop = "scifi_nodes:palm_scanner_off",
|
drop = "scifi_nodes:palm_scanner_off",
|
||||||
sounds = default.node_sound_glass_defaults()
|
sounds = scifi_nodes.node_sound_metal_defaults()
|
||||||
})
|
})
|
||||||
|
|
||||||
minetest.register_node("scifi_nodes:palm_scanner_on", {
|
minetest.register_node("scifi_nodes:palm_scanner_on", {
|
||||||
@@ -97,13 +102,14 @@ minetest.register_node("scifi_nodes:palm_scanner_on", {
|
|||||||
paramtype2 = "wallmounted",
|
paramtype2 = "wallmounted",
|
||||||
light_source = 5,
|
light_source = 5,
|
||||||
groups = {cracky=1, oddly_breakable_by_hand=1, not_in_creative_inventory=1, mesecon_needs_receiver = 1},
|
groups = {cracky=1, oddly_breakable_by_hand=1, not_in_creative_inventory=1, mesecon_needs_receiver = 1},
|
||||||
|
is_ground_content = false,
|
||||||
drop = "scifi_nodes:palm_scanner_off",
|
drop = "scifi_nodes:palm_scanner_off",
|
||||||
mesecons = {
|
mesecons = {
|
||||||
receptor = {
|
receptor = {
|
||||||
state = (has_mesecons and mesecon.state.on)
|
state = (has_mesecons and mesecon.state.on)
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
sounds = default.node_sound_glass_defaults(),
|
sounds = scifi_nodes.node_sound_metal_defaults(),
|
||||||
})
|
})
|
||||||
|
|
||||||
minetest.register_craft({
|
minetest.register_craft({
|
||||||
|
@@ -10,7 +10,7 @@ xpanes.register_pane("doompane", {
|
|||||||
diggable = false,
|
diggable = false,
|
||||||
buildable_to = true,
|
buildable_to = true,
|
||||||
air_equivalent = true,
|
air_equivalent = true,
|
||||||
textures = {"scifi_nodes_doompane.png","scifi_nodes_doompane.png","default_wood.png"},
|
textures = {"scifi_nodes_doompane.png","scifi_nodes_doompane.png","scifi_nodes_wood.png"},
|
||||||
inventory_image = "scifi_nodes_doompane.png",
|
inventory_image = "scifi_nodes_doompane.png",
|
||||||
wield_image = "scifi_nodes_doompane.png",
|
wield_image = "scifi_nodes_doompane.png",
|
||||||
groups = {cracky=1, pane=1},
|
groups = {cracky=1, pane=1},
|
||||||
|
@@ -1,11 +1,11 @@
|
|||||||
|
|
||||||
local plants = {
|
local plants = {
|
||||||
{"flower1", "Glow Flower", 1,0, default.LIGHT_MAX},
|
{"flower1", "Glow Flower", 1,0, minetest.LIGHT_MAX},
|
||||||
{"flower2", "Pink Flower", 1.5,0, 10},
|
{"flower2", "Pink Flower", 1.5,0, 10},
|
||||||
{"flower3", "Triffid", 2,5, 0},
|
{"flower3", "Triffid", 2,5, 0},
|
||||||
{"flower4", "Weeping flower", 1.5,0, 0},
|
{"flower4", "Weeping flower", 1.5,0, 0},
|
||||||
{"plant1", "Bulb Plant", 1,0, 0},
|
{"plant1", "Bulb Plant", 1,0, 0},
|
||||||
{"plant2", "Trap Plant", 1.5,0, default.LIGHT_MAX},
|
{"plant2", "Trap Plant", 1.5,0, minetest.LIGHT_MAX},
|
||||||
{"plant3", "Blue Jelly Plant", 1.2,0, 10},
|
{"plant3", "Blue Jelly Plant", 1.2,0, 10},
|
||||||
{"plant4", "Green Jelly Plant", 1.2,0, 10},
|
{"plant4", "Green Jelly Plant", 1.2,0, 10},
|
||||||
{"plant5", "Fern Plant", 1.7,0, 0},
|
{"plant5", "Fern Plant", 1.7,0, 0},
|
||||||
@@ -29,11 +29,10 @@ for _, row in ipairs(plants) do
|
|||||||
description = desc,
|
description = desc,
|
||||||
tiles = {"scifi_nodes_"..name..".png"},
|
tiles = {"scifi_nodes_"..name..".png"},
|
||||||
drawtype = "plantlike",
|
drawtype = "plantlike",
|
||||||
inventory_image = {"scifi_nodes_"..name..".png"},
|
inventory_image = "scifi_nodes_"..name..".png",
|
||||||
groups = {snappy=1, oddly_breakable_by_hand=1, dig_immediate=3, flora=1},
|
groups = {snappy=1, oddly_breakable_by_hand=1, dig_immediate=3, flora=1},
|
||||||
paramtype = "light",
|
paramtype = "light",
|
||||||
visual_scale = size,
|
visual_scale = size,
|
||||||
buildable_to = true,
|
|
||||||
walkable = false,
|
walkable = false,
|
||||||
damage_per_second = dmg,
|
damage_per_second = dmg,
|
||||||
selection_box = {
|
selection_box = {
|
||||||
@@ -44,5 +43,6 @@ for _, row in ipairs(plants) do
|
|||||||
},
|
},
|
||||||
is_ground_content = false,
|
is_ground_content = false,
|
||||||
light_source = light,
|
light_source = light,
|
||||||
|
sounds = scifi_nodes.node_sound_plant_defaults(),
|
||||||
})
|
})
|
||||||
end
|
end
|
||||||
|
91
protected_switch.lua
Normal file
91
protected_switch.lua
Normal file
@@ -0,0 +1,91 @@
|
|||||||
|
|
||||||
|
--------------
|
||||||
|
-- Switches --
|
||||||
|
--------------
|
||||||
|
|
||||||
|
local has_mesecons = minetest.get_modpath("mesecons")
|
||||||
|
|
||||||
|
local function toggle_switch(pos, _, player)
|
||||||
|
local node = minetest.get_node(pos)
|
||||||
|
local name = node.name
|
||||||
|
if name == "scifi_nodes:protected_switch_on" then
|
||||||
|
-- toggle off
|
||||||
|
minetest.sound_play("scifi_nodes_switch", {max_hear_distance = 8, pos = pos})
|
||||||
|
minetest.set_node(pos, {name = "scifi_nodes:protected_switch_off", param2 = node.param2})
|
||||||
|
mesecon.receptor_off(pos, scifi_nodes.get_switch_rules(node.param2))
|
||||||
|
elseif name == "scifi_nodes:protected_switch_off" then
|
||||||
|
-- toggle on, check protection first
|
||||||
|
if player and minetest.is_protected(pos, player:get_player_name()) then
|
||||||
|
-- position is protected, abort
|
||||||
|
minetest.sound_play("scifi_nodes_scanner_refused", {max_hear_distance = 8, pos = pos})
|
||||||
|
return
|
||||||
|
end
|
||||||
|
minetest.sound_play("scifi_nodes_switch", {max_hear_distance = 8, pos = pos})
|
||||||
|
minetest.set_node(pos, {name = "scifi_nodes:protected_switch_on", param2 = node.param2})
|
||||||
|
mesecon.receptor_on(pos, scifi_nodes.get_switch_rules(node.param2))
|
||||||
|
minetest.get_node_timer(pos):start(2)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
minetest.register_node("scifi_nodes:protected_switch_on", {
|
||||||
|
description = "Protected wall switch",
|
||||||
|
sunlight_propagates = true,
|
||||||
|
buildable_to = false,
|
||||||
|
tiles = {"scifi_nodes_switch_on.png",},
|
||||||
|
inventory_image = "scifi_nodes_switch_on.png",
|
||||||
|
wield_image = "scifi_nodes_switch_on.png",
|
||||||
|
drawtype = "signlike",
|
||||||
|
node_box = {type = "wallmounted",},
|
||||||
|
selection_box = {type = "wallmounted",},
|
||||||
|
paramtype = "light",
|
||||||
|
paramtype2 = "wallmounted",
|
||||||
|
light_source = 5,
|
||||||
|
groups = {
|
||||||
|
cracky=1,
|
||||||
|
oddly_breakable_by_hand = 1,
|
||||||
|
not_in_creative_inventory = 1,
|
||||||
|
mesecon_needs_receiver = 1
|
||||||
|
},
|
||||||
|
is_ground_content = false,
|
||||||
|
mesecons = {
|
||||||
|
receptor = {
|
||||||
|
state = (has_mesecons and mesecon.state.on)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
sounds = scifi_nodes.node_sound_metal_defaults(),
|
||||||
|
on_rightclick = (has_mesecons and toggle_switch),
|
||||||
|
on_timer = (has_mesecons and toggle_switch)
|
||||||
|
})
|
||||||
|
|
||||||
|
minetest.register_node("scifi_nodes:protected_switch_off", {
|
||||||
|
description = "Protected wall switch",
|
||||||
|
tiles = {"scifi_nodes_switch_off.png",},
|
||||||
|
inventory_image = "scifi_nodes_switch_on.png",
|
||||||
|
wield_image = "scifi_nodes_switch_on.png",
|
||||||
|
drawtype = "signlike",
|
||||||
|
sunlight_propagates = true,
|
||||||
|
buildable_to = false,
|
||||||
|
node_box = {type = "wallmounted",},
|
||||||
|
selection_box = {type = "wallmounted",},
|
||||||
|
paramtype = "light",
|
||||||
|
paramtype2 = "wallmounted",
|
||||||
|
groups = {
|
||||||
|
cracky = 1,
|
||||||
|
oddly_breakable_by_hand = 1,
|
||||||
|
mesecon_needs_receiver = 1
|
||||||
|
},
|
||||||
|
is_ground_content = false,
|
||||||
|
mesecons = {
|
||||||
|
receptor = {
|
||||||
|
state = (has_mesecons and mesecon.state.off)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
sounds = scifi_nodes.node_sound_metal_defaults(),
|
||||||
|
on_rightclick = (has_mesecons and toggle_switch)
|
||||||
|
})
|
||||||
|
|
||||||
|
minetest.register_craft({
|
||||||
|
output = "scifi_nodes:protected_switch_off 2",
|
||||||
|
type = "shapeless",
|
||||||
|
recipe = {"scifi_nodes:switch_off", "default:steel_ingot"}
|
||||||
|
})
|
@@ -1,2 +1,5 @@
|
|||||||
# Doors can only be opened by mesecon signal
|
# Doors can only be opened by mesecon signal
|
||||||
scifi_nodes.doors_open_with_mesecon_only (disables right click on doors) bool true
|
scifi_nodes.doors_open_with_mesecon_only (disables right click on doors) bool false
|
||||||
|
|
||||||
|
# Teleporter recipe flag
|
||||||
|
scifi_nodes.teleporter_enable_crafting (enables the teleporter recipe) bool false
|
||||||
|
57
sounds.lua
Normal file
57
sounds.lua
Normal file
@@ -0,0 +1,57 @@
|
|||||||
|
-- sound definitions with fallback to empty sound-table
|
||||||
|
|
||||||
|
function scifi_nodes.node_sound_defaults(param)
|
||||||
|
if minetest.get_modpath("default") then
|
||||||
|
-- default game
|
||||||
|
return default.node_sound_defaults(param)
|
||||||
|
end
|
||||||
|
return {}
|
||||||
|
end
|
||||||
|
|
||||||
|
function scifi_nodes.node_sound_wood_defaults(param)
|
||||||
|
if minetest.get_modpath("default") then
|
||||||
|
-- default game
|
||||||
|
return default.node_sound_wood_defaults(param)
|
||||||
|
end
|
||||||
|
return {}
|
||||||
|
end
|
||||||
|
|
||||||
|
function scifi_nodes.node_sound_glass_defaults(param)
|
||||||
|
if minetest.get_modpath("default") then
|
||||||
|
-- default game
|
||||||
|
return default.node_sound_glass_defaults(param)
|
||||||
|
end
|
||||||
|
return {}
|
||||||
|
end
|
||||||
|
|
||||||
|
function scifi_nodes.node_sound_metal_defaults(param)
|
||||||
|
if minetest.get_modpath("default") then
|
||||||
|
-- default game
|
||||||
|
return default.node_sound_metal_defaults(param)
|
||||||
|
end
|
||||||
|
return {}
|
||||||
|
end
|
||||||
|
|
||||||
|
function scifi_nodes.node_sound_stone_defaults(param)
|
||||||
|
if minetest.get_modpath("default") then
|
||||||
|
-- default game
|
||||||
|
return default.node_sound_stone_defaults(param)
|
||||||
|
end
|
||||||
|
return {}
|
||||||
|
end
|
||||||
|
|
||||||
|
function scifi_nodes.node_sound_dirt_defaults(param)
|
||||||
|
if minetest.get_modpath("default") then
|
||||||
|
-- default game
|
||||||
|
return default.node_sound_dirt_defaults(param)
|
||||||
|
end
|
||||||
|
return {}
|
||||||
|
end
|
||||||
|
|
||||||
|
function scifi_nodes.node_sound_plant_defaults(param)
|
||||||
|
if minetest.get_modpath("default") then
|
||||||
|
-- default game
|
||||||
|
return default.node_sound_leaves_defaults(param)
|
||||||
|
end
|
||||||
|
return {}
|
||||||
|
end
|
BIN
sounds/scifi_nodes_ambience_engine.ogg
Normal file
BIN
sounds/scifi_nodes_ambience_engine.ogg
Normal file
Binary file not shown.
BIN
sounds/scifi_nodes_ambience_fan.ogg
Normal file
BIN
sounds/scifi_nodes_ambience_fan.ogg
Normal file
Binary file not shown.
BIN
sounds/scifi_nodes_ambience_vent.ogg
Normal file
BIN
sounds/scifi_nodes_ambience_vent.ogg
Normal file
Binary file not shown.
Binary file not shown.
3
stealthnodes.lua
Normal file
3
stealthnodes.lua
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
|
||||||
|
stealthnode.register_stealthnode("scifi_nodes", "forcefield")
|
||||||
|
stealthnode.register_stealthnode("scifi_nodes", "wall")
|
@@ -33,13 +33,19 @@ minetest.register_node("scifi_nodes:switch_on", {
|
|||||||
paramtype = "light",
|
paramtype = "light",
|
||||||
paramtype2 = "wallmounted",
|
paramtype2 = "wallmounted",
|
||||||
light_source = 5,
|
light_source = 5,
|
||||||
groups = {cracky=1, oddly_breakable_by_hand=1, not_in_creative_inventory=1, mesecon_needs_receiver = 1},
|
groups = {
|
||||||
|
cracky=1,
|
||||||
|
oddly_breakable_by_hand = 1,
|
||||||
|
not_in_creative_inventory = 1,
|
||||||
|
mesecon_needs_receiver = 1
|
||||||
|
},
|
||||||
|
is_ground_content = false,
|
||||||
mesecons = {
|
mesecons = {
|
||||||
receptor = {
|
receptor = {
|
||||||
state = (has_mesecons and mesecon.state.on)
|
state = (has_mesecons and mesecon.state.on)
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
sounds = default.node_sound_glass_defaults(),
|
sounds = scifi_nodes.node_sound_metal_defaults(),
|
||||||
on_rightclick = (has_mesecons and toggle_switch),
|
on_rightclick = (has_mesecons and toggle_switch),
|
||||||
on_timer = (has_mesecons and toggle_switch)
|
on_timer = (has_mesecons and toggle_switch)
|
||||||
})
|
})
|
||||||
@@ -56,13 +62,18 @@ minetest.register_node("scifi_nodes:switch_off", {
|
|||||||
selection_box = {type = "wallmounted",},
|
selection_box = {type = "wallmounted",},
|
||||||
paramtype = "light",
|
paramtype = "light",
|
||||||
paramtype2 = "wallmounted",
|
paramtype2 = "wallmounted",
|
||||||
groups = {cracky=1, oddly_breakable_by_hand=1, mesecon_needs_receiver = 1},
|
groups = {
|
||||||
|
cracky = 1,
|
||||||
|
oddly_breakable_by_hand = 1,
|
||||||
|
mesecon_needs_receiver = 1
|
||||||
|
},
|
||||||
|
is_ground_content = false,
|
||||||
mesecons = {
|
mesecons = {
|
||||||
receptor = {
|
receptor = {
|
||||||
state = (has_mesecons and mesecon.state.off)
|
state = (has_mesecons and mesecon.state.off)
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
sounds = default.node_sound_glass_defaults(),
|
sounds = scifi_nodes.node_sound_metal_defaults(),
|
||||||
on_rightclick = (has_mesecons and toggle_switch)
|
on_rightclick = (has_mesecons and toggle_switch)
|
||||||
})
|
})
|
||||||
|
|
BIN
textures/scifi_nodes_access_card.png
Normal file
BIN
textures/scifi_nodes_access_card.png
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
textures/scifi_nodes_dirt.png
Normal file
BIN
textures/scifi_nodes_dirt.png
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user