summaryrefslogtreecommitdiff
path: root/display_blocks/init.lua
diff options
context:
space:
mode:
Diffstat (limited to 'display_blocks/init.lua')
-rw-r--r--display_blocks/init.lua267
1 files changed, 267 insertions, 0 deletions
diff --git a/display_blocks/init.lua b/display_blocks/init.lua
new file mode 100644
index 0000000..28b5d60
--- /dev/null
+++ b/display_blocks/init.lua
@@ -0,0 +1,267 @@
+local PATH = minetest.get_modpath("display_blocks")
+
+dofile(PATH.."/config.lua")
+dofile(PATH.."/technic.lua")
+
+if enable_display_uranium == true then
+ dofile(minetest.get_modpath("display_blocks").."/uranium.lua")
+end
+
+local Scale = 0.9
+
+function disp(base, name, light, rec, rp)
+ minetest.register_node( "display_blocks:"..base.."_base", {
+ description = name.."Display Base",
+ tiles = { "display_blocks_"..base.."_block.png" },
+ is_ground_content = true,
+ groups = {cracky=3,},
+ light_source = light,
+ sunlight_propagates = true,
+ paramtype = "light",
+ drawtype = "glasslike",
+ })
+
+ minetest.register_node( "display_blocks:"..base.."_crystal", {
+ drawtype = "plantlike",
+ description = name.." Display Crystal",
+ tiles = { "display_blocks_"..base.."_crystal.png" },
+ is_ground_content = true,
+ paramtype = "light",
+ visual_scale = Scale,
+ groups = {immortal=1, not_in_creative_inventory=1},
+ selection_box = {
+ type = "fixed",
+ fixed = { -0.15, -0.5, -0.15, 0.15, 0.2, 0.15 },
+ },
+ walkable = false,
+ })
+
+ minetest.register_abm({
+ nodenames = {"display_blocks:"..base.."_base"},
+ interval = 2.0,
+ chance = 1.0,
+ action = function(pos, node, active_object_count, active_object_count_wider)
+ pos.y = pos.y + 1
+ local n = minetest.get_node(pos)
+ if n and n.name == "air" then
+ minetest.add_node(pos, {name="display_blocks:"..base.."_crystal"})
+ end
+ end
+ })
+
+ function remove_crystal(pos, node, active_object_count, active_object_count_wider)
+ if node.name == "display_blocks:"..base.."_base" then
+ pos.y = pos.y + 1
+ local n = minetest.get_node(pos)
+ if n and n.name == "display_blocks:"..base.."_crystal" then
+ minetest.remove_node(pos)
+ end
+ end
+ end
+ minetest.register_on_dignode(remove_crystal)
+
+ minetest.register_craft({
+ output = 'display_blocks:'..base..'_base 5',
+ recipe = {
+ {'', 'default:mese_crystal_fragment', ''},
+ {rec, 'display_blocks:empty_display', rec},
+ {'', rec, ''},
+ },
+ replacements = {{rec, rp}, {rec, rp},{rec, rp}},
+ })
+end
+
+-- disp(base, name, rec, rp)
+disp("mese", "Mese", 0, "default:mese_block", "")
+disp("glass", "Glass", 0, "default:sand", "")
+disp("fire", "Fire", 12, "bucket:bucket_lava" ,"bucket:bucket_empty")
+disp("air", "Air", 5, "bucket:bucket_empty", "bucket:bucket_empty")
+disp("water", "Water", 0, "bucket:bucket_water", "bucket:bucket_empty")
+disp("uranium", "Uranium", 10, "display_blocks:uranium_block", "")
+disp("earth", "Earth", 0, "display_blocks:compressed_earth", "")
+disp("metal", "Metal", 2, "default:steelblock", "")
+
+
+if minetest.get_modpath("titanium") then
+ disp("titanium", "Titanium", 0, "titanium:block", "")
+end
+
+--
+-- Universia Display
+--
+
+minetest.register_node( "display_blocks:universia_base", {
+ description = "Universia Display Base",
+ tiles = {"display_blocks_universia_block.png"},
+ is_ground_content = true,
+ groups = {cracky=3,},
+ light_source = 15,
+ sunlight_propagates = true,
+ paramtype = "light",
+ drawtype = "glasslike",
+})
+
+minetest.register_node( "display_blocks:universia_crystal", {
+ description = "Universia Display Crystal",
+ drawtype = "plantlike",
+ tiles = {"display_blocks_universia_crystal.png"},
+ selection_box = {
+ type = "fixed",
+ fixed = { -0.15, -0.5, -0.15, 0.15, 0.2, 0.15 },
+ },
+ walkable = false,
+ is_ground_content = true,
+ paramtype = "light",
+ visual_scale = Scale,
+ groups = {immortal=1, not_in_creative_inventory=1},
+})
+
+minetest.register_abm({
+ nodenames = {"display_blocks:universia_base"},
+ interval = 1.0,
+ chance = 1.0,
+ action = function(pos, node, active_object_count, active_object_count_wider)
+ pos.y = pos.y + 1
+ minetest.add_node(pos, {name="display_blocks:universia_crystal"})
+ end
+})
+
+function remove_crystal(pos, node, active_object_count, active_object_count_wider)
+ if
+ node.name == "display_blocks:universia_base"
+ then
+ pos.y = pos.y + 1
+ minetest.remove_node(pos, {name="display_blocks:universia_crystal"})
+ end
+end
+minetest.register_on_dignode(remove_crystal)
+
+minetest.register_craft({
+ output = "display_blocks:universia_base",
+ recipe = {
+ {'default:mese_crystal', 'default:mese_crystal', 'default:mese_crystal'},
+ {'display_blocks:natura_cube', 'default:mese_block', 'display_blocks:industria_cube'},
+ {'default:obsidian', 'default:obsidian', 'default:obsidian'},
+ },
+})
+
+--
+-- Other Blocks
+--
+
+minetest.register_node("display_blocks:compressed_earth", {
+ description = "Compressed Earth",
+ tiles = {"display_blocks_compressed_earth.png"},
+ groups = {crumbly=3,soil=1},
+ sounds = default.node_sound_dirt_defaults({
+ footstep = {name="default_grass_footstep", gain=0.25},
+ }),
+})
+
+minetest.register_node("display_blocks:empty_display", {
+ description = "Empty Display",
+ tiles = {"display_blocks_empty_display.png"},
+ groups = {cracky=3,oddly_breakable_by_hand=3},
+ sounds = default.node_sound_glass_defaults(),
+ sunlight_propagates = true,
+ paramtype = "light",
+ drawtype = "glasslike",
+ is_ground_content = true,
+})
+
+minetest.register_node("display_blocks:industria_cube", {
+ description = "Industria Cube",
+ tiles = {"display_blocks_industria_cube.png"},
+ groups = {cracky=3,oddly_breakable_by_hand=3},
+ sounds = default.node_sound_glass_defaults(),
+ sunlight_propagates = true,
+ paramtype = "light",
+ drawtype = "glasslike",
+ is_ground_content = true,
+})
+
+minetest.register_node("display_blocks:natura_cube", {
+ description = "Natura Cube",
+ tiles = {"display_blocks_natura_cube.png"},
+ groups = {cracky=3,oddly_breakable_by_hand=3},
+ sounds = default.node_sound_glass_defaults(),
+ sunlight_propagates = true,
+ paramtype = "light",
+ drawtype = "glasslike",
+ is_ground_content = true,
+})
+
+minetest.register_craft({
+ output= "display_blocks:compressed_earth",
+ recipe = {
+ {'default:gravel', 'default:dirt', 'default:gravel'},
+ {'default:dirt', 'default:gravel', 'default:dirt'},
+ {'default:gravel', 'default:dirt', 'default:gravel'},
+ }
+})
+
+minetest.register_craft({
+ output = "display_blocks:empty_display",
+ recipe = {
+ {'default:desert_sand', 'default:glass', 'default:sand'},
+ {'default:glass', '', 'default:glass'},
+ {'default:sand', 'default:glass', 'default:desert_sand'},
+ },
+})
+
+minetest.register_craft({
+ output = "display_blocks:natura_cube",
+ recipe = {
+ {'', 'display_blocks:air_base', ''},
+ {'display_blocks:fire_base', '', 'display_blocks:water_base'},
+ {'', 'display_blocks:earth_base', ''},
+ },
+})
+
+minetest.register_craft({
+ output = "display_blocks:industria_cube",
+ recipe = {
+ {'', 'display_blocks:mese_base', ''},
+ {'display_blocks:metal_base', '', 'display_blocks:glass_base'},
+ {'', 'display_blocks:uranium_base', ''},
+ },
+})
+
+--
+-- Compressed Earth Ore Gen
+--
+
+minetest.register_ore({
+ ore_type = "scatter",
+ ore = "display_blocks:compressed_earth",
+ wherein = "default:dirt",
+ clust_scarcity = 25*25*25,
+ clust_num_ores = 20,
+ clust_size = 5,
+ y_max = -5,
+ y_min = -15,
+})
+
+minetest.register_ore({
+ ore_type = "scatter",
+ ore = "display_blocks:compressed_earth",
+ wherein = "default:dirt",
+ clust_scarcity = 20*20*20,
+ clust_num_ores = 50,
+ clust_size = 5,
+ y_max = -16,
+ y_min = -29,
+})
+
+minetest.register_ore({
+ ore_type = "scatter",
+ ore = "display_blocks:compressed_earth",
+ wherein = "default:dirt",
+ clust_scarcity = 15*15*15,
+ clust_num_ores = 80,
+ clust_size = 5,
+ y_max = -30,
+ y_min = -100,
+})
+
+print("[Display Blocks] Loaded! by jojoa1997 :-)")