summaryrefslogtreecommitdiff
path: root/steel
diff options
context:
space:
mode:
authorVanessa Ezekowitz <vanessaezekowitz@gmail.com>2016-04-01 20:02:19 -0400
committerVanessa Ezekowitz <vanessaezekowitz@gmail.com>2016-04-01 21:09:33 -0400
commitda66780a569712c23ae4f2996cfb4608a9f9d69d (patch)
tree217556029a78bc23ad4564720afc86de97228a04 /steel
parent615b22df4d423aded3613db7716943a2f389b047 (diff)
downloaddreambuilder_modpack-da66780a569712c23ae4f2996cfb4608a9f9d69d.tar
dreambuilder_modpack-da66780a569712c23ae4f2996cfb4608a9f9d69d.tar.gz
dreambuilder_modpack-da66780a569712c23ae4f2996cfb4608a9f9d69d.tar.bz2
dreambuilder_modpack-da66780a569712c23ae4f2996cfb4608a9f9d69d.tar.xz
dreambuilder_modpack-da66780a569712c23ae4f2996cfb4608a9f9d69d.zip
copy all standard Dreambuilder mods in from the old subgame
(exactly as last supplied there, updates to these mods will follow later)
Diffstat (limited to 'steel')
-rw-r--r--steel/README.txt13
-rw-r--r--steel/modpack.txt0
-rw-r--r--steel/steel/depends.txt5
-rw-r--r--steel/steel/init.lua322
-rw-r--r--steel/steel/recipes.pngbin0 -> 167430 bytes
-rw-r--r--steel/steel/rust.lua15
-rw-r--r--steel/steel/textures/corrugated_steel.pngbin0 -> 398 bytes
-rw-r--r--steel/steel/textures/gratehard.pngbin0 -> 761 bytes
-rw-r--r--steel/steel/textures/gratesoft.pngbin0 -> 696 bytes
-rw-r--r--steel/steel/textures/scrap.pngbin0 -> 509 bytes
-rw-r--r--steel/steel/textures/steel_rusted.pngbin0 -> 785 bytes
-rw-r--r--steel/steel/textures/steelplatehard.pngbin0 -> 3398 bytes
-rw-r--r--steel/steel/textures/steelplatesoft.pngbin0 -> 3114 bytes
-rw-r--r--steel/steel/textures/strut.pngbin0 -> 374 bytes
-rw-r--r--steel/steel/textures/worldgratehard.pngbin0 -> 911 bytes
-rw-r--r--steel/steel/textures/worldgratesoft.pngbin0 -> 745 bytes
16 files changed, 355 insertions, 0 deletions
diff --git a/steel/README.txt b/steel/README.txt
new file mode 100644
index 0000000..795b256
--- /dev/null
+++ b/steel/README.txt
@@ -0,0 +1,13 @@
+minetest-steel
+==============
+
+This mod adds a range of steel materials that are recyclable to minetest.
+To recycle, simply craft anything into scrap, and turn the scrap into an iron lump.
+Registered items: plate_hard, plate_soft, plate_rusted, grate_hard, grate_soft, strut, roofing.
+
+Optional dependencies:
+* Homedecor for better roofing.
+* Compatible with streets mod (no duplicates).
+
+License: GPL v2 for code, CC-BY-SA for textures.
+Original mod by minetesting (João Matos), changes by Zeg9.
diff --git a/steel/modpack.txt b/steel/modpack.txt
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/steel/modpack.txt
diff --git a/steel/steel/depends.txt b/steel/steel/depends.txt
new file mode 100644
index 0000000..5643dca
--- /dev/null
+++ b/steel/steel/depends.txt
@@ -0,0 +1,5 @@
+default
+streets?
+homedecor?
+protector?
+node_ownership?
diff --git a/steel/steel/init.lua b/steel/steel/init.lua
new file mode 100644
index 0000000..0b1ef0c
--- /dev/null
+++ b/steel/steel/init.lua
@@ -0,0 +1,322 @@
+dofile(minetest.get_modpath("steel").."/rust.lua")
+
+if minetest.setting_getbool("creative_mode") and not minetest.get_modpath("unified_inventory") then
+ steel_expect_infinite_stacks = true
+else
+ steel_expect_infinite_stacks = false
+end
+
+function steel_node_is_owned(pos, placer)
+ local ownername = false
+ if type(IsPlayerNodeOwner) == "function" then -- node_ownership mod
+ if HasOwner(pos, placer) then -- returns true if the node is owned
+ if not IsPlayerNodeOwner(pos, placer:get_player_name()) then
+ if type(getLastOwner) == "function" then -- ...is an old version
+ ownername = getLastOwner(pos)
+ elseif type(GetNodeOwnerName) == "function" then -- ...is a recent version
+ ownername = GetNodeOwnerName(pos)
+ else
+ ownername = "someone"
+ end
+ end
+ end
+
+ elseif type(isprotect)=="function" then -- glomie's protection mod
+ if not isprotect(5, pos, placer) then
+ ownername = "someone"
+ end
+ elseif type(protector)=="table" and type(protector.can_dig)=="function" then -- Zeg9's protection mod
+ if not protector.can_dig(5, pos, placer) then
+ ownername = "someone"
+ end
+ end
+
+ if ownername ~= false then
+ minetest.chat_send_player( placer:get_player_name(), ("Sorry, %s owns that spot."):format(ownername) )
+ return true
+ else
+ return false
+ end
+end
+
+function steel_rotate_and_place(itemstack, placer, pointed_thing)
+
+ local node = minetest.get_node(pointed_thing.under)
+ if not minetest.registered_nodes[node.name] or not minetest.registered_nodes[node.name].on_rightclick then
+ if steel_node_is_owned(pointed_thing.above, placer) then
+ return itemstack
+ end
+ local above = pointed_thing.above
+ local under = pointed_thing.under
+ local pitch = placer:get_look_pitch()
+ local node = minetest.get_node(above)
+ local fdir = minetest.dir_to_facedir(placer:get_look_dir())
+ local wield_name = itemstack:get_name()
+
+ if node.name ~= "air" then return end
+
+ local iswall = (above.x ~= under.x) or (above.z ~= under.z)
+ local isceiling = (above.x == under.x) and (above.z == under.z) and (pitch > 0)
+
+ if iswall then
+ local dirs = { 2, 3, 0, 1 }
+ minetest.add_node(above, {name = wield_name.."_wall", param2 = dirs[fdir+1] }) -- place wall variant
+ elseif isceiling then
+ minetest.add_node(above, {name = wield_name.."_wall", param2 = 19 }) -- place wall variant on ceiling
+ else
+ minetest.add_node(above, {name = wield_name }) -- place regular variant
+ end
+
+ if not steel_expect_infinite_stacks then
+ itemstack:take_item()
+ return itemstack
+ end
+ else
+ minetest.registered_nodes[node.name].on_rightclick(pointed_thing.under, node, placer, itemstack)
+ end
+end
+
+minetest.register_node("steel:plate_soft", {
+ description = "Soft steel plate",
+ tiles = {"steelplatesoft.png"},
+ is_ground_content = true,
+ groups = {cracky=2},
+ sounds = default.node_sound_stone_defaults(),
+})
+
+minetest.register_node("steel:plate_hard", {
+ description = "Hardened steel plate",
+ tiles = {"steelplatehard.png"},
+ is_ground_content = true,
+ groups = {cracky=1},
+ sounds = default.node_sound_stone_defaults(),
+})
+
+minetest.register_node("steel:plate_rusted", {
+ description = "Rusted steel plate",
+ tiles = {"steel_rusted.png"},
+ is_ground_content = true,
+ groups = {cracky=1,choppy=1},
+ sounds = default.node_sound_stone_defaults(),
+})
+
+if minetest.registered_nodes["streets:steel_support"] then
+ minetest.register_alias("steel:strut","streets:steel_support")
+else
+ minetest.register_node("steel:strut", {
+ drawtype = "glasslike",
+ description = "Strut",
+ tiles = {"strut.png"},
+ is_ground_content = true,
+ paramtype= "light",
+ groups = {choppy=1,cracky=1},
+ sounds = default.node_sound_stone_defaults(),
+ })
+ minetest.register_alias("streets:steel_support","steel:strut")
+end
+minetest.register_node("steel:grate_soft", {
+ description = "Soft Steel Grate",
+ drawtype = "fencelike",
+ tiles = {"worldgratesoft.png"},
+ inventory_image = "gratesoft.png",
+ wield_image = "gratesoft.png",
+ paramtype = "light",
+ is_ground_content = true,
+ selection_box = {
+ type = "fixed",
+ fixed = {-1/7, -1/2, -1/7, 1/7, 1/2, 1/7},
+ },
+ groups = {cracky=2,choppy=2},
+ sounds = default.node_sound_wood_defaults(),
+})
+
+minetest.register_node("steel:grate_hard", {
+ description = "Hardened Steel Grate",
+ drawtype = "fencelike",
+ tiles = {"worldgratehard.png"},
+ inventory_image = "gratehard.png",
+ wield_image = "gratehard.png",
+ paramtype = "light",
+ is_ground_content = true,
+ selection_box = {
+ type = "fixed",
+ fixed = {-1/7, -1/2, -1/7, 1/7, 1/2, 1/7},
+ },
+ groups = {cracky=1,choppy=1},
+ sounds = default.node_sound_wood_defaults(),
+})
+
+minetest.register_node("steel:roofing", {
+ description = "Corrugated steel roofing",
+ drawtype = "raillike",
+ tiles = {"corrugated_steel.png"},
+ inventory_image = "corrugated_steel.png",
+ wield_image = "corrugated_steel.png",
+ paramtype = "light",
+ is_ground_content = true,
+ walkable = true,
+ selection_box = {
+ type = "fixed",
+ -- but how to specify the dimensions for curved and sideways rails?
+ fixed = {-1/2, -1/2, -1/2, 1/2, -1/2+1/16, 1/2},
+ },
+ groups = {bendy=2,snappy=1,dig_immediate=2},
+ on_place = function(itemstack, placer, pointed_thing)
+ steel_rotate_and_place(itemstack, placer, pointed_thing)
+ return itemstack
+ end
+})
+
+minetest.register_node("steel:roofing_wall", {
+ description = "Corrugated steel wall",
+ drawtype = "nodebox",
+ tiles = {"corrugated_steel.png"},
+ inventory_image = "corrugated_steel.png",
+ wield_image = "corrugated_steel.png",
+ paramtype = "light",
+ paramtype2 = "facedir",
+ is_ground_content = true,
+ walkable = true,
+ groups = {bendy=2,snappy=1,dig_immediate=2, not_in_creative_inventory=1},
+ drop = "steel:roofing",
+ on_place = function(itemstack, placer, pointed_thing)
+ steel_rotate_and_place(itemstack, placer, pointed_thing)
+ return itemstack
+ end,
+ node_box = {
+ type = "fixed",
+ fixed = { -0.5, -0.5, -0.48, 0.5, 0.5, -0.48 }
+ },
+ selection_box = {
+ type = "fixed",
+ fixed = { -0.5, -0.5, -0.5, 0.5, 0.5, -0.4 }
+ },
+})
+
+if homedecor_register_slope and homedecor_register_roof then
+ homedecor_register_slope("steel", "roofing",
+ "steel:roofing",
+ {bendy=2,snappy=1,dig_immediate=2},
+ {"corrugated_steel.png"},
+ "Corrugated steel roofing"
+ )
+ homedecor_register_roof("steel", "roofing",
+ {bendy=2,snappy=1,dig_immediate=2},
+ {"corrugated_steel.png"},
+ "Corrugated steel roofing"
+ )
+end
+
+ --steel scrap are only used to recover ingots
+
+minetest.register_craftitem("steel:scrap", {
+ description = "Steel scraps",
+ inventory_image = "scrap.png",
+})
+
+ --recipes
+
+minetest.register_craft({
+ output = 'steel:plate_soft 2',
+ recipe = {
+ {'default:steel_ingot', 'default:steel_ingot'},
+ {'default:steel_ingot', 'default:steel_ingot'},
+ }
+})
+
+
+
+minetest.register_craft({
+ type = "cooking",
+ output = "steel:plate_hard",
+ recipe = "steel:plate_soft",
+})
+
+
+minetest.register_craft({
+ output = 'steel:grate_soft 3',
+ recipe = {
+ {'default:steel_ingot', '', 'default:steel_ingot'},
+ {'default:steel_ingot', '', 'default:steel_ingot'},
+ }
+})
+
+
+minetest.register_craft({
+ type = "cooking",
+ output = "steel:grate_hard",
+ recipe = "steel:grate_soft",
+})
+
+-- only register this craft if streets is not loaded
+if not minetest.registered_nodes["streets:steel_support"] then
+ minetest.register_craft({
+ output = 'steel:strut 5',
+ recipe = {
+ {'default:steel_ingot', '', 'default:steel_ingot'},
+ {'', 'default:steel_ingot', ''},
+ {'default:steel_ingot', '', 'default:steel_ingot'},
+ }
+ })
+end
+
+minetest.register_craft({
+ output = 'steel:roofing 6',
+ recipe = {
+ {'default:steel_ingot', 'default:steel_ingot', 'default:steel_ingot'},
+ }
+})
+ --remelting recipes
+
+minetest.register_craft({
+ output = 'steel:scrap 2',
+ recipe = {
+ {'steel:strut'},
+ }
+})
+
+minetest.register_craft({
+ output = 'steel:scrap 2',
+ recipe = {
+ {'steel:grate_soft'},
+ }
+})
+
+minetest.register_craft({
+ output = 'steel:scrap 2',
+ recipe = {
+ {'steel:grate_hard'},
+ }
+})
+
+minetest.register_craft({
+ output = 'steel:scrap',
+ recipe = {
+ {'steel:roofing'},
+ }
+})
+
+minetest.register_craft({
+ output = 'steel:scrap 4',
+ recipe = {
+ {'steel:plate_soft'},
+ }
+})
+
+minetest.register_craft({
+ output = 'steel:scrap 4',
+ recipe = {
+ {'steel:plate_hard'},
+ }
+})
+
+minetest.register_craft({
+ output = 'default:iron_lump',
+ recipe = {
+ {'steel:scrap', 'steel:scrap'},
+ }
+})
+
+
+
+
diff --git a/steel/steel/recipes.png b/steel/steel/recipes.png
new file mode 100644
index 0000000..7b10124
--- /dev/null
+++ b/steel/steel/recipes.png
Binary files differ
diff --git a/steel/steel/rust.lua b/steel/steel/rust.lua
new file mode 100644
index 0000000..9eea7ca
--- /dev/null
+++ b/steel/steel/rust.lua
@@ -0,0 +1,15 @@
+local function moss(input, output)
+ minetest.register_abm({
+ nodenames = {input},
+ neighbors = {"group:water"},
+ interval = 50,
+ chance = 20,
+ action = function(pos)
+ if not minetest.find_node_near(pos, 3, output) then
+ minetest.add_node(pos, {name=output})
+ end
+ end,
+ })
+end
+
+moss("steel:plate_soft", "steel:plate_rusted")
diff --git a/steel/steel/textures/corrugated_steel.png b/steel/steel/textures/corrugated_steel.png
new file mode 100644
index 0000000..a704a85
--- /dev/null
+++ b/steel/steel/textures/corrugated_steel.png
Binary files differ
diff --git a/steel/steel/textures/gratehard.png b/steel/steel/textures/gratehard.png
new file mode 100644
index 0000000..71b0921
--- /dev/null
+++ b/steel/steel/textures/gratehard.png
Binary files differ
diff --git a/steel/steel/textures/gratesoft.png b/steel/steel/textures/gratesoft.png
new file mode 100644
index 0000000..0ac6a52
--- /dev/null
+++ b/steel/steel/textures/gratesoft.png
Binary files differ
diff --git a/steel/steel/textures/scrap.png b/steel/steel/textures/scrap.png
new file mode 100644
index 0000000..043292a
--- /dev/null
+++ b/steel/steel/textures/scrap.png
Binary files differ
diff --git a/steel/steel/textures/steel_rusted.png b/steel/steel/textures/steel_rusted.png
new file mode 100644
index 0000000..4d7e598
--- /dev/null
+++ b/steel/steel/textures/steel_rusted.png
Binary files differ
diff --git a/steel/steel/textures/steelplatehard.png b/steel/steel/textures/steelplatehard.png
new file mode 100644
index 0000000..75e3bf0
--- /dev/null
+++ b/steel/steel/textures/steelplatehard.png
Binary files differ
diff --git a/steel/steel/textures/steelplatesoft.png b/steel/steel/textures/steelplatesoft.png
new file mode 100644
index 0000000..5891a8b
--- /dev/null
+++ b/steel/steel/textures/steelplatesoft.png
Binary files differ
diff --git a/steel/steel/textures/strut.png b/steel/steel/textures/strut.png
new file mode 100644
index 0000000..faa6b94
--- /dev/null
+++ b/steel/steel/textures/strut.png
Binary files differ
diff --git a/steel/steel/textures/worldgratehard.png b/steel/steel/textures/worldgratehard.png
new file mode 100644
index 0000000..2e53ae7
--- /dev/null
+++ b/steel/steel/textures/worldgratehard.png
Binary files differ
diff --git a/steel/steel/textures/worldgratesoft.png b/steel/steel/textures/worldgratesoft.png
new file mode 100644
index 0000000..b8bf99f
--- /dev/null
+++ b/steel/steel/textures/worldgratesoft.png
Binary files differ