diff --git a/mods/ITEMS/modpack.conf b/mods/ITEMS/modpack.conf
index 82f56a9..106e08c 100644
--- a/mods/ITEMS/modpack.conf
+++ b/mods/ITEMS/modpack.conf
@@ -1,2 +1,3 @@
name = ITEMS
-description = Meta-modpack containing the items-related mods for Voxelis
\ No newline at end of file
+description = Meta-modpack containing the items-related mods for Voxelis
+depends = vox_colors
\ No newline at end of file
diff --git a/mods/ITEMS/vox_armor/mod.conf b/mods/ITEMS/vox_armor/mod.conf
index 84b024b..8d41d9f 100644
--- a/mods/ITEMS/vox_armor/mod.conf
+++ b/mods/ITEMS/vox_armor/mod.conf
@@ -1,2 +1,3 @@
name = vox_armor
-description = Voxelis - armor: Adds armor to the game.
\ No newline at end of file
+description = Voxelis - armor: Adds armor to the game.
+depends = vox_colors
\ No newline at end of file
diff --git a/mods/ITEMS/vox_coloring/README.md b/mods/ITEMS/vox_coloring/README.md
index 3a462b6..34c7380 100644
--- a/mods/ITEMS/vox_coloring/README.md
+++ b/mods/ITEMS/vox_coloring/README.md
@@ -34,11 +34,6 @@ To register a dyeable item or block, call the `register_dyeable` function in you
```lua
-- List of dyeable things
local dyeable_blocks = {"sand", "terracotta", "marble", "cobblestone", "sandstone"}
-
--- Register base things their dyeable variants
-for _, base_block in ipairs(dyeable_blocks) do
- vox_coloring.register_dyeable("vox_worldblocks", base_block)
-end
```
Parameters:
diff --git a/mods/ITEMS/vox_coloring/init.lua b/mods/ITEMS/vox_coloring/init.lua
index b2e088f..a046ae6 100644
--- a/mods/ITEMS/vox_coloring/init.lua
+++ b/mods/ITEMS/vox_coloring/init.lua
@@ -1,4 +1,10 @@
--- Vox Coloring System
+---------------------------------------------------------------------------
+-- Voxelis - Vox Coloring
+-- Adds dynamic dyes, registers dyeable blocks/items, and supports customization
+---------------------------------------------------------------------------
+
+-- Initialize the global table for this mod
+vox_coloring = {}
-- Register dyes dynamically based on vox_colors
for color_name, color_hex in pairs(vox_colors) do
@@ -172,8 +178,8 @@ minetest.register_craftitem("vox_coloring:cleaning_solvent", {
minetest.register_craft({
output = "vox_coloring:cleaning_solvent",
recipe = {
- {"vox_mats:soap", "bucket:water_bucket", "vox_mats:salt"},
- {"vox_mats:ash", "", ""},
+ {"vox_main:soap", "bucket:water_bucket", "vox_main:salt"},
+ {"vox_main:ash", "", ""},
},
replacements = {{"bucket:water_bucket", "bucket:bucket"}},
})
diff --git a/mods/ITEMS/vox_coloring/mod.conf b/mods/ITEMS/vox_coloring/mod.conf
index 4d1a64a..f19d9de 100644
--- a/mods/ITEMS/vox_coloring/mod.conf
+++ b/mods/ITEMS/vox_coloring/mod.conf
@@ -1,2 +1,3 @@
name = vox_coloring
-description = Voxelis - coloring. Adds dynamic dyes, dynamically adds dyed (fill in the blanks) from mods that call upon the function, adds other things that are helpful.
\ No newline at end of file
+description = Voxelis - coloring. Adds dynamic dyes, dynamically adds dyed (fill in the blanks) from mods that call upon the function, adds other things that are helpful.
+depends = vox_colors
diff --git a/mods/ITEMS/vox_fabric/fabric_dying_bench.lua b/mods/ITEMS/vox_fabric/fabric_dying_bench.lua
new file mode 100644
index 0000000..1ab50fe
--- /dev/null
+++ b/mods/ITEMS/vox_fabric/fabric_dying_bench.lua
@@ -0,0 +1,35 @@
+-- Fabric Dying Bench
+
+minetest.register_node("vox_fabric:fabric_dying_bench", {
+ description = "Fabric Dying Bench",
+ tiles = {"fabric_dying_bench_top.png", "fabric_dying_bench_side.png"},
+ groups = {cracky = 2},
+ on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
+ -- Show the UI for pattern creation
+ local formspec = "size[8,9]" ..
+ "label[0.5,0.5;Fabric Dying Bench]" ..
+ "dropdown[1,1;3;grid_size;16x16,32x32,64x64;2]" ..
+ "button[4,1;2,1;save;Save Pattern]"
+ minetest.show_formspec(clicker:get_player_name(), "vox_fabric:dying_bench", formspec)
+ end,
+})
+
+minetest.register_on_player_receive_fields(function(player, formname, fields)
+ if formname == "vox_fabric:dying_bench" then
+ if fields.save then
+ -- Save the pattern
+ local player_name = player:get_player_name()
+ local pattern_id = player_name .. "_pattern_" .. os.time()
+ local pattern_file = minetest.get_worldpath() .. "/vox_fabric_generated/" .. pattern_id .. ".json"
+
+ local pattern_data = {
+ size = fields.grid_size,
+ colors = {}, -- This would be populated based on the player's interactions
+ }
+
+ minetest.safe_file_write(pattern_file, minetest.serialize(pattern_data))
+ player:get_inventory():add_item("main", "vox_fabric:pattern_template")
+ minetest.chat_send_player(player_name, "Pattern saved as: " .. pattern_id)
+ end
+ end
+end)
diff --git a/mods/ITEMS/vox_fabric/fabric_patterns.lua b/mods/ITEMS/vox_fabric/fabric_patterns.lua
new file mode 100644
index 0000000..ab2a18e
--- /dev/null
+++ b/mods/ITEMS/vox_fabric/fabric_patterns.lua
@@ -0,0 +1,39 @@
+-- Fabric Patterns Management
+
+local modpath = minetest.get_modpath("vox_fabric")
+local patterns_file = modpath .. "/textures/patterns.json"
+local patterns = {}
+
+-- Load predefined patterns
+local file = io.open(patterns_file, "r")
+if file then
+ local content = file:read("*a")
+ file:close()
+ patterns = minetest.parse_json(content) or {}
+end
+
+-- Register predefined patterns as Pattern Template items
+for _, pattern in ipairs(patterns.patterns or {}) do
+ minetest.register_craftitem("vox_fabric:pattern_" .. pattern.id, {
+ description = "Pattern: " .. (pattern.title or pattern.id),
+ inventory_image = "patterns/" .. pattern.id .. ".png",
+ groups = {pattern = 1},
+ })
+end
+
+-- Pattern Template Item
+minetest.register_craftitem("vox_fabric:pattern_template", {
+ description = "Pattern Template",
+ inventory_image = "pattern_template.png",
+ groups = {template = 1},
+ on_use = function(itemstack, user, pointed_thing)
+ -- Interaction with Pattern Template
+ local meta = itemstack:get_meta()
+ local pattern_id = meta:get_string("pattern_id")
+ if pattern_id and pattern_id ~= "" then
+ minetest.chat_send_player(user:get_player_name(), "Pattern ID: " .. pattern_id)
+ else
+ minetest.chat_send_player(user:get_player_name(), "This template has no pattern.")
+ end
+ end,
+})
diff --git a/mods/ITEMS/vox_fabric/init.lua b/mods/ITEMS/vox_fabric/init.lua
index e69de29..7683ecc 100644
--- a/mods/ITEMS/vox_fabric/init.lua
+++ b/mods/ITEMS/vox_fabric/init.lua
@@ -0,0 +1,37 @@
+-- Voxelis: vox_fabric
+-- Dynamic fabric and pattern system for Minetest
+
+-- Initialize the global table for the mod
+vox_fabric = {}
+
+-- Dependencies
+local modpath = minetest.get_modpath("vox_fabric")
+dofile(modpath .. "/fabric_dying_bench.lua")
+dofile(modpath .. "/fabric_patterns.lua")
+
+-- Fabric Registry
+local fabric_registry = {}
+
+-- Register a fabric application
+function vox_fabric.register_application(modname, base_item, description, base_texture)
+ fabric_registry[modname] = fabric_registry[modname] or {}
+ table.insert(fabric_registry[modname], base_item)
+
+ minetest.register_node(modname .. ":" .. base_item, {
+ description = description,
+ tiles = {base_texture},
+ groups = {fabric = 1},
+ on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
+ -- Interaction logic for applying patterns
+ local meta = itemstack:get_meta()
+ local pattern_id = meta:get_string("pattern_id")
+ if pattern_id and pattern_id ~= "" then
+ local new_texture = "generated_patterns/" .. pattern_id .. ".png"
+ minetest.swap_node(pos, {name = modname .. ":" .. base_item, tiles = {new_texture}})
+ minetest.chat_send_player(clicker:get_player_name(), "Applied pattern: " .. pattern_id)
+ else
+ minetest.chat_send_player(clicker:get_player_name(), "No pattern found on the template.")
+ end
+ end,
+ })
+end
diff --git a/mods/ITEMS/vox_fabric/mod.conf b/mods/ITEMS/vox_fabric/mod.conf
index 544a2e4..b130f12 100644
--- a/mods/ITEMS/vox_fabric/mod.conf
+++ b/mods/ITEMS/vox_fabric/mod.conf
@@ -1,2 +1,3 @@
name = vox_fabric
-description = Voxelis - Fabric. Allow players to use premade patterns (which can be dyed with vox_coloring), or allow them to make their own.
\ No newline at end of file
+description = Voxelis - Fabric. Allow players to use premade patterns (which can be dyed with vox_coloring), or allow them to make their own.
+depends = vox_colors
\ No newline at end of file
diff --git a/mods/ITEMS/vox_fabric/textures/patterns/patterns.json b/mods/ITEMS/vox_fabric/textures/patterns/patterns.json
new file mode 100644
index 0000000..ae4e944
--- /dev/null
+++ b/mods/ITEMS/vox_fabric/textures/patterns/patterns.json
@@ -0,0 +1,6 @@
+{
+ "patterns": [
+ {"id": "pattern_1", "title": "Floral Design"},
+ {"id": "pattern_2", "title": "Geometric Shapes"}
+ ]
+}
diff --git a/mods/ITEMS/vox_main/gems.lua b/mods/ITEMS/vox_main/gems.lua
new file mode 100644
index 0000000..24f0fa4
--- /dev/null
+++ b/mods/ITEMS/vox_main/gems.lua
@@ -0,0 +1,232 @@
+-- Gems: Diamond, Emerald, Ruby, Sapphire, Topaz, Amethyst, Opal, Onyx, Garnet, Peridot, Aquamarine, Citrine, Tourmaline, Zircon, Tanzanite, Spinel, Lapis Lazuli, Malachite, Azurite, Turquoise, Amber, Moonstone, Sunstone, Bloodstone, Agate, Jasper, Chalcedony, Chrysoprase, Carnelian, Sardonyx, Heliotrope, Alexandrite, Tiger's Eye, Serpentine, Rhodonite
+core.register_node("vox_main:diamond_ore", {
+ description = "Diamond Ore",
+ tiles = {"vox_diamond_ore.png"},
+ groups = {cracky = 2}
+})
+core.register_alias("diamond_ore", "vox_main:diamond_ore")
+core.register_alias("default:stone_with_diamond", "vox_main:diamond_ore")
+
+core.register_node("vox_main:emerald_ore", {
+ description = "Emerald Ore",
+ tiles = {"vox_emerald_ore.png"},
+ groups = {cracky = 2}
+})
+core.register_alias("emerald_ore", "vox_main:emerald_ore")
+core.register_alias("default:stone_with_emerald", "vox_main:emerald_ore")
+
+core.register_node("vox_main:ruby_ore", {
+ description = "Ruby Ore",
+ tiles = {"vox_ruby_ore.png"},
+ groups = {cracky = 2}
+})
+core.register_alias("ruby_ore", "vox_main:ruby_ore")
+core.register_alias("default:stone_with_ruby", "vox_main:ruby_ore")
+
+core.register_node("vox_main:sapphire_ore", {
+ description = "Sapphire Ore",
+ tiles = {"vox_sapphire_ore.png"},
+ groups = {cracky = 2}
+})
+core.register_alias("sapphire_ore", "vox_main:sapphire_ore")
+core.register_alias("default:stone_with_sapphire", "vox_main:sapphire_ore")
+
+core.register_node("vox_main:topaz_ore", {
+ description = "Topaz Ore",
+ tiles = {"vox_topaz_ore.png"},
+ groups = {cracky = 2}
+})
+core.register_alias("topaz_ore", "vox_main:topaz_ore")
+core.register_alias("default:stone_with_topaz", "vox_main:topaz_ore")
+
+core.register_node("vox_main:amethyst_ore", {
+ description = "Amethyst Ore",
+ tiles = {"vox_amethyst_ore.png"},
+ groups = {cracky = 2}
+})
+core.register_alias("amethyst_ore", "vox_main:amethyst_ore")
+core.register_alias("default:stone_with_amethyst", "vox_main:amethyst_ore")
+
+core.register_node("vox_main:opal_ore", {
+ description = "Opal Ore",
+ tiles = {"vox_opal_ore.png"},
+ groups = {cracky = 2}
+})
+core.register_alias("opal_ore", "vox_main:opal_ore")
+core.register_alias("default:stone_with_opal", "vox_main:opal_ore")
+
+core.register_node("vox_main:onyx_ore", {
+ description = "Onyx Ore",
+ tiles = {"vox_onyx_ore.png"},
+ groups = {cracky = 2}
+})
+core.register_alias("onyx_ore", "vox_main:onyx_ore")
+core.register_alias("default:stone_with_onyx", "vox_main:onyx_ore")
+
+core.register_node("vox_main:garnet_ore", {
+ description = "Garnet Ore",
+ tiles = {"vox_garnet_ore.png"},
+ groups = {cracky = 2}
+})
+core.register_alias("garnet_ore", "vox_main:garnet_ore")
+core.register_alias("default:stone_with_garnet", "vox_main:garnet_ore")
+
+core.register_node("vox_main:peridot_ore", {
+ description = "Peridot Ore",
+ tiles = {"vox_peridot_ore.png"},
+ groups = {cracky = 2}
+})
+core.register_alias("peridot_ore", "vox_main:peridot_ore")
+core.register_alias("default:stone_with_peridot", "vox_main:peridot_ore")
+
+core.register_node("vox_main:aquamarine_ore", {
+ description = "Aquamarine Ore",
+ tiles = {"vox_aquamarine_ore.png"},
+ groups = {cracky = 2}
+})
+core.register_alias("aquamarine_ore", "vox_main:aquamarine_ore")
+core.register_alias("default:stone_with_aquamarine", "vox_main:aquamarine_ore")
+
+core.register_node("vox_main:citrine_ore", {
+ description = "Citrine Ore",
+ tiles = {"vox_citrine_ore.png"},
+ groups = {cracky = 2}
+})
+core.register_alias("citrine_ore", "vox_main:citrine_ore")
+core.register_alias("default:stone_with_citrine", "vox_main:citrine_ore")
+
+core.register_node("vox_main:tourmaline_ore", {
+ description = "Tourmaline Ore",
+ tiles = {"vox_tourmaline_ore.png"},
+ groups = {cracky = 2}
+})
+core.register_alias("tourmaline_ore", "vox_main:tourmaline_ore")
+core.register_alias("default:stone_with_tourmaline", "vox_main:tourmaline_ore")
+
+core.register_node("vox_main:zircon_ore", {
+ description = "Zircon Ore",
+ tiles = {"vox_zircon_ore.png"},
+ groups = {cracky = 2}
+})
+core.register_alias("zircon_ore", "vox_main:zircon_ore")
+core.register_alias("default:stone_with_zircon", "vox_main:zircon_ore")
+
+core.register_node("vox_main:tanzanite_ore", {
+ description = "Tanzanite Ore",
+ tiles = {"vox_tanzanite_ore.png"},
+ groups = {cracky = 2}
+})
+core.register_alias("tanzanite_ore", "vox_main:tanzanite_ore")
+core.register_alias("default:stone_with_tanzanite", "vox_main:tanzanite_ore")
+
+core.register_node("vox_main:spinel_ore", {
+ description = "Spinel Ore",
+ tiles = {"vox_spinel_ore.png"},
+ groups = {cracky = 2}
+})
+core.register_alias("spinel_ore", "vox_main:spinel_ore")
+core.register_alias("default:stone_with_spinel", "vox_main:spinel_ore")
+
+core.register_node("vox_main:lapis_lazuli_ore", {
+ description = "Lapis Lazuli Ore",
+ tiles = {"vox_lapis_lazuli_ore.png"},
+ groups = {cracky = 2}
+})
+core.register_alias("lapis_lazuli_ore", "vox_main:lapis_lazuli_ore")
+core.register_alias("default:stone_with_lapis_lazuli", "vox_main:lapis_lazuli_ore")
+
+core.register_node("vox_main:malachite_ore", {
+ description = "Malachite Ore",
+ tiles = {"vox_malachite_ore.png"},
+ groups = {cracky = 2}
+})
+core.register_alias("malachite_ore", "vox_main:malachite_ore")
+core.register_alias("default:stone_with_malachite", "vox_main:malachite_ore")
+
+core.register_node("vox_main:azurite_ore", {
+ description = "Azurite Ore",
+ tiles = {"vox_azurite_ore.png"},
+ groups = {cracky = 2}
+})
+core.register_alias("azurite_ore", "vox_main:azurite_ore")
+core.register_alias("default:stone_with_azurite", "vox_main:azurite_ore")
+
+core.register_node("vox_main:turquoise_ore", {
+ description = "Turquoise Ore",
+ tiles = {"vox_turquoise_ore.png"},
+ groups = {cracky = 2}
+})
+core.register_alias("turquoise_ore", "vox_main:turquoise_ore")
+core.register_alias("default:stone_with_turquoise", "vox_main:turquoise_ore")
+
+core.register_node("vox_main:amber_ore", {
+ description = "Amber Ore",
+ tiles = {"vox_amber_ore.png"},
+ groups = {cracky = 2}
+})
+core.register_alias("amber_ore", "vox_main:amber_ore")
+core.register_alias("default:stone_with_amber", "vox_main:amber_ore")
+
+core.register_node("vox_main:moonstone_ore", {
+ description = "Moonstone Ore",
+ tiles = {"vox_moonstone_ore.png"},
+ groups = {cracky = 2}
+})
+core.register_alias("moonstone_ore", "vox_main:moonstone_ore")
+core.register_alias("default:stone_with_moonstone", "vox_main:moonstone_ore")
+
+core.register_node("vox_main:sunstone_ore", {
+ description = "Sunstone Ore",
+ tiles = {"vox_sunstone_ore.png"},
+ groups = {cracky = 2}
+})
+core.register_alias("sunstone_ore", "vox_main:sunstone_ore")
+core.register_alias("default:stone_with_sunstone", "vox_main:sunstone_ore")
+
+core.register_node("vox_main:bloodstone_ore", {
+ description = "Bloodstone Ore",
+ tiles = {"vox_bloodstone_ore.png"},
+ groups = {cracky = 2}
+})
+core.register_alias("bloodstone_ore", "vox_main:bloodstone_ore")
+core.register_alias("default:stone_with_bloodstone", "vox_main:bloodstone_ore")
+
+core.register_node("vox_main:agate_ore", {
+ description = "Agate Ore",
+ tiles = {"vox_agate_ore.png"},
+ groups = {cracky = 2}
+})
+core.register_alias("agate_ore", "vox_main:agate_ore")
+core.register_alias("default:stone_with_agate", "vox_main:agate_ore")
+
+core.register_node("vox_main:jasper_ore", {
+ description = "Jasper Ore",
+ tiles = {"vox_jasper_ore.png"},
+ groups = {cracky = 2}
+})
+core.register_alias("jasper_ore", "vox_main:jasper_ore")
+core.register_alias("default:stone_with_jasper", "vox_main:jasper_ore")
+
+core.register_node("vox_main:chalcedony_ore", {
+ description = "Chalcedony Ore",
+ tiles = {"vox_chalcedony_ore.png"},
+ groups = {cracky = 2}
+})
+core.register_alias("chalcedony_ore", "vox_main:chalcedony_ore")
+core.register_alias("default:stone_with_chalcedony", "vox_main:chalcedony_ore")
+
+core.register_node("vox_main:chrysoprase_ore", {
+ description = "Chrysoprase Ore",
+ tiles = {"vox_chrysoprase_ore.png"},
+ groups = {cracky = 2}
+})
+core.register_alias("chrysoprase_ore", "vox_main:chrysoprase_ore")
+core.register_alias("default:stone_with_chrysoprase", "vox_main:chrysoprase_ore")
+
+core.register_node("vox_main:carnelian_ore", {
+ description = "Carnelian Ore",
+ tiles = {"vox_carnelian_ore.png"},
+ groups = {cracky = 2}
+})
+core.register_alias("carnelian_ore", "vox_main:carnelian_ore")
+core.register_alias("default:stone_with_carnelian", "vox_main:carnelian_ore")
\ No newline at end of file
diff --git a/mods/ITEMS/vox_main/init.lua b/mods/ITEMS/vox_main/init.lua
new file mode 100644
index 0000000..cb65ca3
--- /dev/null
+++ b/mods/ITEMS/vox_main/init.lua
@@ -0,0 +1,45 @@
+---------------------------------------------------------------------------
+-- Voxelis - Voxel survival sandbox for Luanti
+-- Copyright (C) 2024 Mad Star Studio LLC
+--
+-- This program is free software; you can redistribute it and/or modify
+-- it under the terms of the GNU General Public License as published by
+-- the Free Software Foundation; either version 3 of the License, or
+-- (at your option) any later version.
+--
+-- You should have received a copy of the GNU General Public License along
+-- with this program; if not, see .
+---------------------------------------------------------------------------
+
+-- Load from minerals.lua
+dofile(core.get_modpath("vox_main").."/minerals.lua")
+-- Load from ores.lua
+dofile(core.get_modpath("vox_main").."/ores.lua")
+-- Load from gems.lua
+dofile(core.get_modpath("vox_main").."/gems.lua")
+-- Load from liquids.lua
+dofile(core.get_modpath("vox_main").."/liquids.lua")
+-- Load from ocean.lua
+dofile(core.get_modpath("vox_main").."/ocean.lua")
+-- Load from sky_island.lua
+dofile(core.get_modpath("vox_main").."/sky_island.lua")
+
+-- Load from mobdrops.lua
+dofile(minetest.get_modpath("vox_main").."/mobdrops.lua")
+-- Load from mats.lua
+dofile(minetest.get_modpath("vox_main").."/mats.lua")
+
+
+-- Glowing Moss
+core.register_node("vox_main:glowing_moss", {
+ description = "Glowing Moss",
+ tiles = {"vox_glowing_moss.png"},
+ light_source = 8,
+ groups = {crumbly = 1}
+})
+core.register_alias("glowing_moss", "vox_main:glowing_moss")
+
+
+-- ---------------------------- Dyeable Nodes -------------------------- --
+-- List of dyeable things
+local dyeable_blocks = {"sand", "terracotta", "marble", "cobblestone", "sandstone"}
\ No newline at end of file
diff --git a/mods/ITEMS/vox_main/liquids.lua b/mods/ITEMS/vox_main/liquids.lua
new file mode 100644
index 0000000..3f9b105
--- /dev/null
+++ b/mods/ITEMS/vox_main/liquids.lua
@@ -0,0 +1,370 @@
+-- -------------------------------------------------------------------------- --
+-- Liquids --
+-- -------------------------------------------------------------------------- --
+
+-- Water
+core.register_node("vox_main:water_source", {
+ description = "Water Source",
+ drawtype = "liquid",
+ tiles = {
+ {
+ name = "vox_water.png",
+ animation = {
+ type = "vertical_frames",
+ aspect_w = 16,
+ aspect_h = 16,
+ length = 2.0
+ }
+ }
+ },
+ alpha = 128,
+ paramtype = "light",
+ walkable = false,
+ pointable = false,
+ diggable = false,
+ buildable_to = true,
+ liquidtype = "source",
+ liquid_alternative_flowing = "vox_main:water_flowing",
+ liquid_alternative_source = "vox_main:water_source",
+ liquid_viscosity = 1,
+ post_effect_color = {a = 103, r = 30, g = 60, b = 90}
+})
+core.register_alias("water_source", "vox_main:water_source")
+core.register_alias("default:river_water", "vox_main:water_source")
+core.register_alias("mapgen_water_source", "vox_main:water_source")
+
+core.register_node("vox_main:water_flowing", {
+ description = "Flowing Water",
+ drawtype = "flowingliquid",
+ tiles = {"vox_water.png"},
+ special_tiles = {
+ {
+ name = "vox_water.png",
+ backface_culling = false,
+ animation = {
+ type = "vertical_frames",
+ aspect_w = 16,
+ aspect_h = 16,
+ length = 0.8
+ }
+ }
+ },
+ alpha = 160,
+ paramtype = "light",
+ walkable = false,
+ pointable = false,
+ diggable = false,
+ buildable_to = true,
+ liquidtype = "flowing",
+ liquid_alternative_flowing = "vox_main:water_flowing",
+ liquid_alternative_source = "vox_main:water_source",
+ liquid_viscosity = 1,
+ post_effect_color = {a = 103, r = 30, g = 60, b = 90}
+})
+core.register_alias("water_flowing", "vox_main:water_flowing")
+core.register_alias("default:river_water_flowing", "vox_main:water_flowing")
+core.register_alias("mapgen_water_flowing", "vox_main:water_flowing")
+
+-- River Water
+core.register_node("vox_main:river_water_source", {
+ description = "River Water Source",
+ drawtype = "liquid",
+ tiles = {
+ {
+ name = "vox_river_water.png",
+ animation = {
+ type = "vertical_frames",
+ aspect_w = 16,
+ aspect_h = 16,
+ length = 2.0
+ }
+ }
+ },
+ alpha = 128,
+ paramtype = "light",
+ walkable = false,
+ pointable = false,
+ diggable = false,
+ buildable_to = true,
+ liquidtype = "source",
+ liquid_alternative_flowing = "vox_main:river_water_flowing",
+ liquid_alternative_source = "vox_main:river_water_source",
+ liquid_viscosity = 1,
+ post_effect_color = {a = 103, r = 30, g = 60, b = 90}
+})
+core.register_alias("river_water_source", "vox_main:river_water_source")
+core.register_alias("mapgen_river_water_source", "vox_main:river_water_source")
+core.register_alias("default:river_water_source", "vox_main:river_water_source")
+
+core.register_node("vox_main:river_water_flowing", {
+ description = "Flowing River Water",
+ drawtype = "flowingliquid",
+ tiles = {"vox_river_water.png"},
+ special_tiles = {
+ {
+ name = "vox_river_water.png",
+ backface_culling = false,
+ animation = {
+ type = "vertical_frames",
+ aspect_w = 16,
+ aspect_h = 16,
+ length = 0.8
+ }
+ }
+ },
+ alpha = 160,
+ paramtype = "light",
+ walkable = false,
+ pointable = false,
+ diggable = false,
+ buildable_to = true,
+ liquidtype = "flowing",
+ liquid_alternative_flowing = "vox_main:river_water_flowing",
+ liquid_alternative_source = "vox_main:river_water_source",
+ liquid_viscosity = 1,
+ post_effect_color = {a = 103, r = 30, g = 60, b = 90}
+})
+
+-- Hotspring Water
+core.register_node("vox_main:hotspring_water_source", {
+ description = "Hotspring Water Source",
+ drawtype = "liquid",
+ tiles = {
+ {
+ name = "vox_hotspring_water.png",
+ animation = {
+ type = "vertical_frames",
+ aspect_w = 16,
+ aspect_h = 16,
+ length = 2.0
+ }
+ }
+ },
+ alpha = 128,
+ paramtype = "light",
+ walkable = false,
+ pointable = false,
+ diggable = false,
+ buildable_to = true,
+ liquidtype = "source",
+ liquid_alternative_flowing = "vox_main:hotspring_water_flowing",
+ liquid_alternative_source = "vox_main:hotspring_water_source",
+ liquid_viscosity = 1,
+ post_effect_color = {a = 103, r = 30, g = 60, b = 90}
+})
+core.register_alias("hotspring_water_source", "vox_main:hotspring_water_source")
+core.register_alias("mapgen_hotspring_water_source", "vox_main:hotspring_water_source")
+
+core.register_node("vox_main:hotspring_water_flowing", {
+ description = "Flowing Hotspring Water",
+ drawtype = "flowingliquid",
+ tiles = {"vox_hotspring_water.png"},
+ special_tiles = {
+ {
+ name = "vox_hotspring_water.png",
+ backface_culling = false,
+ animation = {
+ type = "vertical_frames",
+ aspect_w = 16,
+ aspect_h = 16,
+ length = 0.8
+ }
+ }
+ },
+ alpha = 160,
+ paramtype = "light",
+ walkable = false,
+ pointable = false,
+ diggable = false,
+ buildable_to = true,
+ liquidtype = "flowing",
+ liquid_alternative_flowing = "vox_main:hotspring_water_flowing",
+ liquid_alternative_source = "vox_main:hotspring_water_source",
+ liquid_viscosity = 1,
+ post_effect_color = {a = 103, r = 30, g = 60, b = 90}
+})
+core.register_alias("hotspring_water_flowing", "vox_main:hotspring_water_flowing")
+core.register_alias("mapgen_hotspring_water_flowing", "vox_main:hotspring_water_flowing")
+
+-- Lava
+core.register_node("vox_main:lava_source", {
+ description = "Lava Source",
+ drawtype = "liquid",
+ tiles = {
+ {
+ name = "vox_lava.png",
+ animation = {
+ type = "vertical_frames",
+ aspect_w = 16,
+ aspect_h = 16,
+ length = 2.0
+ }
+ }
+ },
+ alpha = 255,
+ paramtype = "light",
+ walkable = false,
+ pointable = false,
+ diggable = false,
+ buildable_to = true,
+ liquidtype = "source",
+ liquid_alternative_flowing = "vox_main:lava_flowing",
+ liquid_alternative_source = "vox_main:lava_source",
+ liquid_viscosity = 7,
+ post_effect_color = {a = 255, r = 255, g = 0, b = 0}
+})
+core.register_alias("lava_source", "vox_main:lava_source")
+core.register_alias("default:lava_source", "vox_main:lava_source")
+core.register_alias("mapgen_lava_source", "vox_main:lava_source")
+
+core.register_node("vox_main:lava_flowing", {
+ description = "Flowing Lava",
+ drawtype = "flowingliquid",
+ tiles = {"vox_lava.png"},
+ special_tiles = {
+ {
+ name = "vox_lava.png",
+ backface_culling = false,
+ animation = {
+ type = "vertical_frames",
+ aspect_w = 16,
+ aspect_h = 16,
+ length = 2.0
+ }
+ }
+ },
+ alpha = 255,
+ paramtype = "light",
+ walkable = false,
+ pointable = false,
+ diggable = false,
+ buildable_to = true,
+ liquidtype = "flowing",
+ liquid_alternative_flowing = "vox_main:lava_flowing",
+ liquid_alternative_source = "vox_main:lava_source",
+ liquid_viscosity = 7,
+ post_effect_color = {a = 255, r = 255, g = 0, b = 0}
+})
+core.register_alias("lava_flowing", "vox_main:lava_flowing")
+core.register_alias("default:lava_flowing", "vox_main:lava_flowing")
+core.register_alias("mapgen_lava_flowing", "vox_main:lava_flowing")
+
+-- Oil
+core.register_node("vox_main:oil_source", {
+ description = "Oil Source",
+ drawtype = "liquid",
+ tiles = {
+ {
+ name = "vox_oil.png",
+ animation = {
+ type = "vertical_frames",
+ aspect_w = 16,
+ aspect_h = 16,
+ length = 2.0
+ }
+ }
+ },
+ alpha = 255,
+ paramtype = "light",
+ walkable = false,
+ pointable = false,
+ diggable = false,
+ buildable_to = true,
+ liquidtype = "source",
+ liquid_alternative_flowing = "vox_main:oil_flowing",
+ liquid_alternative_source = "vox_main:oil_source",
+ liquid_viscosity = 1,
+ post_effect_color = {a = 255, r = 0, g = 0, b = 0}
+})
+core.register_alias("oil_source", "vox_main:oil_source")
+core.register_alias("mapgen_oil_source", "vox_main:oil_source")
+
+core.register_node("vox_main:oil_flowing", {
+ description = "Flowing Oil",
+ drawtype = "flowingliquid",
+ tiles = {"vox_oil.png"},
+ special_tiles = {
+ {
+ name = "vox_oil.png",
+ backface_culling = false,
+ animation = {
+ type = "vertical_frames",
+ aspect_w = 16,
+ aspect_h = 16,
+ length = 2.0
+ }
+ }
+ },
+ alpha = 255,
+ paramtype = "light",
+ walkable = false,
+ pointable = false,
+ diggable = false,
+ buildable_to = true,
+ liquidtype = "flowing",
+ liquid_alternative_flowing = "vox_main:oil_flowing",
+ liquid_alternative_source = "vox_main:oil_source",
+ liquid_viscosity = 1,
+ post_effect_color = {a = 255, r = 0, g = 0, b = 0}
+})
+core.register_alias("oil_flowing", "vox_main:oil_flowing")
+core.register_alias("mapgen_oil_flowing", "vox_main:oil_flowing")
+
+-- Acid
+core.register_node("vox_main:acid_source", {
+ description = "Acid Source",
+ drawtype = "liquid",
+ tiles = {
+ {
+ name = "vox_acid.png",
+ animation = {
+ type = "vertical_frames",
+ aspect_w = 16,
+ aspect_h = 16,
+ length = 2.0
+ }
+ }
+ },
+ alpha = 255,
+ paramtype = "light",
+ walkable = false,
+ pointable = false,
+ diggable = false,
+ buildable_to = true,
+ liquidtype = "source",
+ liquid_alternative_flowing = "vox_main:acid_flowing",
+ liquid_alternative_source = "vox_main:acid_source",
+ liquid_viscosity = 1,
+ post_effect_color = {a = 255, r = 0, g = 255, b = 0}
+})
+core.register_alias("acid_source", "vox_main:acid_source")
+core.register_alias("mapgen_acid_source", "vox_main:acid_source")
+
+core.register_node("vox_main:acid_flowing", {
+ description = "Flowing Acid",
+ drawtype = "flowingliquid",
+ tiles = {"vox_acid.png"},
+ special_tiles = {
+ {
+ name = "vox_acid.png",
+ backface_culling = false,
+ animation = {
+ type = "vertical_frames",
+ aspect_w = 16,
+ aspect_h = 16,
+ length = 2.0
+ }
+ }
+ },
+ alpha = 255,
+ paramtype = "light",
+ walkable = false,
+ pointable = false,
+ diggable = false,
+ buildable_to = true,
+ liquidtype = "flowing",
+ liquid_alternative_flowing = "vox_main:acid_flowing",
+ liquid_alternative_source = "vox_main:acid_source",
+ liquid_viscosity = 1,
+ post_effect_color = {a = 255, r = 0, g = 255, b = 0}
+})
\ No newline at end of file
diff --git a/mods/ITEMS/vox_mats/init.lua b/mods/ITEMS/vox_main/mats.lua
similarity index 57%
rename from mods/ITEMS/vox_mats/init.lua
rename to mods/ITEMS/vox_main/mats.lua
index 4f8ef19..cef8010 100644
--- a/mods/ITEMS/vox_mats/init.lua
+++ b/mods/ITEMS/vox_main/mats.lua
@@ -1,37 +1,37 @@
-- Ash
-minetest.register_craftitem("vox_mats:ash", {
+minetest.register_craftitem("vox_main:ash", {
description = "Ash",
inventory_image = "ash.png",
groups = {crumbly = 3},
})
-- Salt
-minetest.register_craftitem("vox_mats:salt", {
+minetest.register_craftitem("vox_main:salt", {
description = "Salt",
inventory_image = "salt.png",
})
-- Lye
-minetest.register_craftitem("vox_mats:lye", {
+minetest.register_craftitem("vox_main:lye", {
description = "Lye",
inventory_image = "lye.png",
})
minetest.register_craft({
- output = "vox_mats:lye",
+ output = "vox_main:lye",
recipe = {
- {"vox_mats:ash", "bucket:water_bucket"},
+ {"vox_main:ash", "bucket:water_bucket"},
},
replacements = {{"bucket:water_bucket", "bucket:bucket"}},
})
-- Soap
-minetest.register_craftitem("vox_mats:soap", {
+minetest.register_craftitem("vox_main:soap", {
description = "Soap",
inventory_image = "soap.png",
})
minetest.register_craft({
- output = "vox_mats:soap",
+ output = "vox_main:soap",
recipe = {
- {"vox_mobdrops:fat", "vox_mats:lye", "vox_mats:salt"},
+ {"vox_mobdrops:fat", "vox_main:lye", "vox_main:salt"},
},
})
diff --git a/mods/ITEMS/vox_main/minerals.lua b/mods/ITEMS/vox_main/minerals.lua
new file mode 100644
index 0000000..9e87ca5
--- /dev/null
+++ b/mods/ITEMS/vox_main/minerals.lua
@@ -0,0 +1,265 @@
+
+-- Bedrock
+core.register_node("vox_main:bedrock", {
+ description = "Bedrock",
+ tiles = {"vox_bedrock.png"},
+ groups = {cracky = 1}
+})
+core.register_alias("bedrock", "vox_main:bedrock")
+core.register_alias("default:bedrock", "vox_main:bedrock")
+
+-- Dirt
+core.register_node("vox_main:dirt", {
+ description = "Dirt",
+ tiles = {"vox_dirt.png"},
+ groups = {crumbly = 3}
+})
+core.register_alias("dirt", "vox_main:dirt")
+core.register_alias("default:dirt", "vox_main:dirt")
+
+-- Grass
+core.register_node("vox_main:grass_block", {
+ description = "Grass Block",
+ tiles = {"vox_grass_block.png"},
+ groups = {cracky = 3}
+})
+core.register_alias("grass_block", "vox_main:grass_block")
+core.register_alias("default:dirt_with_grass_block" , "vox_main:grass_block")
+
+-- Snow
+core.register_node("vox_main:snow", {
+ description = "Snow",
+ tiles = {"vox_snow.png"},
+ groups = {crumbly = 3}
+})
+core.register_alias("snow", "vox_main:snow")
+core.register_alias("default:snow", "vox_main:snow")
+
+-- Packed Snow
+core.register_node("vox_main:packed_snow", {
+ description = "Packed Snow",
+ tiles = {"vox_packed_snow.png"},
+ groups = {crumbly = 2}
+})
+core.register_alias("packed_snow", "vox_main:packed_snow")
+
+-- Ice
+core.register_node("vox_main:ice", {
+ description = "Ice",
+ tiles = {"vox_ice.png"},
+ groups = {crumbly = 3}
+})
+core.register_alias("ice", "vox_main:ice")
+core.register_alias("default:ice", "vox_main:ice")
+
+-- Dirt With Snow
+core.register_node("vox_main:dirt_with_snow", {
+ description = "Dirt With Snow",
+ tiles = {"vox_dirt_with_snow.png"},
+ groups = {crumbly = 3}
+})
+core.register_alias("dirt_with_snow", "vox_main:dirt_with_snow")
+
+-- Permafrost
+core.register_node("vox_main:permafrost", {
+ description = "Permafrost",
+ tiles = {"vox_permafrost.png"},
+ groups = {crumbly = 3}
+})
+core.register_alias("permafrost", "vox_main:permafrost")
+
+-- Bluestone
+core.register_node("vox_main:bluestone", {
+ description = "Bluestone",
+ tiles = {"vox_bluestone.png"},
+ groups = {cracky = 2}
+})
+core.register_alias("bluestone", "vox_main:bluestone")
+
+-- Stone
+core.register_node("vox_main:stone", {
+ description = "Stone",
+ tiles = {"vox_stone.png"},
+ groups = {cracky = 2}
+})
+core.register_alias("stone", "vox_main:stone")
+core.register_alias("mapgen_stone", "vox_main:stone")
+-- core.register_alias("default:stone", "vox_main:stone")
+
+-- Cobblestone
+core.register_node("vox_main:cobblestone", {
+ description = "Cobblestone",
+ tiles = {"vox_cobblestone.png"},
+ groups = {cracky = 2}
+})
+core.register_alias("cobblestone", "vox_main:cobblestone")
+core.register_alias("default:cobble", "vox_main:cobblestone")
+
+-- Mossy Cobblestone
+core.register_node("vox_main:mossycobble", {
+ description = "Mossy Cobblestone",
+ tiles = {"vox_mossycobble.png"},
+ groups = {cracky = 2}
+})
+core.register_alias("mossycobble", "vox_main:mossycobble")
+core.register_alias("default:mossycobble", "vox_main:mossycobble")
+
+-- Sand
+-- (I don't like sand. It's coarse and rough and irritating and it gets everywhere.)
+core.register_node("vox_main:sand", {
+ description = "Sand",
+ tiles = {"vox_sand.png"},
+ groups = {crumbly = 3}
+})
+core.register_alias("sand", "vox_main:sand")
+core.register_alias("default:sand", "vox_main:sand")
+
+-- Sulfur Crust
+core.register_node("vox_main:sulfur_crust", {
+ description = "Sulfur Crust",
+ tiles = {"vox_sulfur_crust.png"},
+ groups = {crumbly = 3}
+})
+core.register_alias("sulfur_crust", "vox_main:sulfur_crust")
+
+-- Ash
+minetest.register_node("vox_main:ash_block", {
+ description = "Ash Block",
+ tiles = {"vox_ash_block.png"},
+ groups = {crumbly = 3},
+ drop = "vox_mats:ash", -- Drops ash when broken
+})
+
+-- Gravel
+core.register_node("vox_main:gravel", {
+ description = "Gravel",
+ tiles = {"vox_gravel.png"},
+ groups = {crumbly = 2}
+})
+core.register_alias("gravel", "vox_main:gravel")
+core.register_alias("default:gravel", "vox_main:gravel")
+
+-- Sandstone
+core.register_node("vox_main:sandstone", {
+ description = "Sandstone",
+ tiles = {"vox_sandstone.png"},
+ groups = {cracky = 2}
+})
+core.register_alias("sandstone", "vox_main:sandstone")
+core.register_alias("default:sandstone", "vox_main:sandstone")
+
+-- Clay
+core.register_node("vox_main:clay", {
+ description = "Clay",
+ tiles = {"vox_clay.png"},
+ groups = {crumbly = 3}
+})
+core.register_alias("clay", "vox_main:clay")
+core.register_alias("default:clay", "vox_main:clay")
+
+-- Hardened Clay
+core.register_node("vox_main:hardened_clay", {
+ description = "Hardened Clay",
+ tiles = {"vox_hardened_clay.png"},
+ groups = {cracky = 2}
+})
+core.register_alias("hardened_clay", "vox_main:hardened_clay")
+core.register_alias("default:hardened_clay", "vox_main:hardened_clay")
+
+-- Mud
+core.register_node("vox_main:mud", {
+ description = "Mud",
+ tiles = {"vox_mud.png"},
+ groups = {crumbly = 3}
+})
+core.register_alias("mud", "vox_main:mud")
+
+-- Salt Crystal
+core.register_node("vox_main:salt_crystal", {
+ description = "Salt Crystal",
+ tiles = {"vox_salt_crystal.png"},
+ groups = {cracky = 2}
+})
+core.register_alias("salt_crystal", "vox_main:salt_crystal")
+
+-- Volcanic Rock
+core.register_node("vox_main:volcanic_rock", {
+ description = "Volcanic Rock",
+ tiles = {"vox_volcanic_rock.png"},
+ groups = {cracky = 3}
+})
+core.register_alias("volcanic_rock", "vox_main:volcanic_rock")
+
+-- EVEN MORE ROCKS!!!
+
+-- Granite
+core.register_node("vox_main:granite", {
+ description = "Granite",
+ tiles = {"vox_granite.png"},
+ groups = {cracky = 2}
+})
+core.register_alias("granite", "vox_main:granite")
+core.register_alias("default:granite", "vox_main:granite")
+
+-- Diorite
+core.register_node("vox_main:diorite", {
+ description = "Diorite",
+ tiles = {"vox_diorite.png"},
+ groups = {cracky = 2}
+})
+core.register_alias("diorite", "vox_main:diorite")
+core.register_alias("default:diorite", "vox_main:diorite")
+
+-- Andesite
+core.register_node("vox_main:andesite", {
+ description = "Andesite",
+ tiles = {"vox_andesite.png"},
+ groups = {cracky = 2}
+})
+core.register_alias("andesite", "vox_main:andesite")
+core.register_alias("default:andesite", "vox_main:andesite")
+
+-- Basalt
+core.register_node("vox_main:basalt", {
+ description = "Basalt",
+ tiles = {"vox_basalt.png"},
+ groups = {cracky = 2}
+})
+core.register_alias("basalt", "vox_main:basalt")
+core.register_alias("default:basalt", "vox_main:basalt")
+
+-- Obsidian
+core.register_node("vox_main:obsidian", {
+ description = "Obsidian",
+ tiles = {"vox_obsidian.png"},
+ groups = {cracky = 2}
+})
+core.register_alias("obsidian", "vox_main:obsidian")
+core.register_alias("default:obsidian", "vox_main:obsidian")
+
+-- Marble
+core.register_node("vox_main:marble", {
+ description = "Marble",
+ tiles = {"vox_marble.png"},
+ groups = {cracky = 2}
+})
+core.register_alias("marble", "vox_main:marble")
+core.register_alias("default:marble", "vox_main:marble")
+
+-- Chalk
+core.register_node("vox_main:chalk", {
+ description = "Chalk",
+ tiles = {"vox_chalk.png"},
+ groups = {cracky = 2}
+})
+core.register_alias("chalk", "vox_main:chalk")
+core.register_alias("default:chalk", "vox_main:chalk")
+
+-- Limestone
+core.register_node("vox_main:limestone", {
+ description = "Limestone",
+ tiles = {"vox_limestone.png"},
+ groups = {cracky = 2}
+})
+core.register_alias("limestone", "vox_main:limestone")
+core.register_alias("default:limestone", "vox_main:limestone")
\ No newline at end of file
diff --git a/mods/ITEMS/vox_main/mobdrops.lua b/mods/ITEMS/vox_main/mobdrops.lua
new file mode 100644
index 0000000..a2a3d81
--- /dev/null
+++ b/mods/ITEMS/vox_main/mobdrops.lua
@@ -0,0 +1,13 @@
+-- We'll register drops from mobs here, but what mobs drop elsewhere.
+
+-- Fat
+minetest.register_craftitem("vox_main:fat", {
+ description = "Fat",
+ inventory_image = "fat.png",
+})
+
+-- Leather
+minetest.register_craftitem("vox_main:leather", {
+ description = "Leather",
+ inventory_image = "leather.png",
+})
diff --git a/mods/ITEMS/vox_main/mod.conf b/mods/ITEMS/vox_main/mod.conf
new file mode 100644
index 0000000..1457c75
--- /dev/null
+++ b/mods/ITEMS/vox_main/mod.conf
@@ -0,0 +1,3 @@
+name = vox_main
+description = Voxelis - Main : Core content
+depends = vox_colors
\ No newline at end of file
diff --git a/mods/ITEMS/vox_main/ocean.lua b/mods/ITEMS/vox_main/ocean.lua
new file mode 100644
index 0000000..e5b3346
--- /dev/null
+++ b/mods/ITEMS/vox_main/ocean.lua
@@ -0,0 +1,7 @@
+
+core.register_node("vox_main:coral_red", {
+ description = "Red Coral",
+ tiles = {"vox_coral_red.png"},
+ groups = {crumbly = 1}
+})
+core.register_alias("coral_red", "vox_main:coral_red")
diff --git a/mods/ITEMS/vox_main/ores.lua b/mods/ITEMS/vox_main/ores.lua
new file mode 100644
index 0000000..9464ab0
--- /dev/null
+++ b/mods/ITEMS/vox_main/ores.lua
@@ -0,0 +1,153 @@
+-- -------------------------------------------------------------------------- --
+-- Ores --
+-- -------------------------------------------------------------------------- --
+
+
+-- Fuel: Coal, Uranium, Peat
+core.register_node("vox_main:coal_ore", {
+ description = "Coal Ore",
+ tiles = {"vox_coal_ore.png"},
+ groups = {cracky = 2}
+})
+core.register_alias("coal_ore", "vox_main:coal_ore")
+core.register_alias("default:stone_with_coal", "vox_main:coal_ore")
+
+core.register_node("vox_main:uranium_ore", {
+ description = "Uranium Ore",
+ tiles = {"vox_uranium_ore.png"},
+ groups = {cracky = 2}
+})
+core.register_alias("uranium_ore", "vox_main:uranium_ore")
+core.register_alias("default:stone_with_uranium", "vox_main:uranium_ore")
+
+core.register_node("vox_main:peat", {
+ description = "Peat",
+ tiles = {"vox_peat.png"},
+ groups = {crumbly = 2, flammable = 1}
+})
+core.register_alias("peat", "vox_main:peat")
+
+-- Bone
+core.register_node("vox_main:bone_ore", {
+ description = "Bone Ore",
+ tiles = {"vox_bone_ore.png"},
+ groups = {cracky = 2}
+})
+core.register_alias("bone_ore", "vox_main:bone_ore")
+core.register_alias("default:stone_with_bone", "vox_main:bone_ore")
+
+-- Sulfur
+core.register_node("vox_main:sulfur_ore", {
+ description = "Sulfur Ore",
+ tiles = {"vox_sulfur_ore.png"},
+ groups = {cracky = 2}
+})
+core.register_alias("sulfur_ore", "vox_main:sulfur_ore")
+core.register_alias("default:stone_with_sulfur", "vox_main:sulfur_ore")
+
+-- Salt
+core.register_node("vox_main:salt_ore", {
+ description = "Salt Ore",
+ tiles = {"vox_salt_ore.png"},
+ groups = {crumbly = 2},
+ drop = "vox_mats:salt"
+})
+core.register_alias("salt_ore", "vox_main:salt_ore")
+core.register_alias("default:stone_with_salt", "vox_main:salt_ore")
+
+-- Metals: Copper, Tin, Iron, Gold, Silver, Platinum, Lead, Zinc, Nickel, Cobalt, Titanium, Tungsten
+core.register_node("vox_main:copper_ore", {
+ description = "Copper Ore",
+ tiles = {"vox_copper_ore.png"},
+ groups = {cracky = 2}
+})
+core.register_alias("copper_ore", "vox_main:copper_ore")
+core.register_alias("default:stone_with_copper", "vox_main:copper_ore")
+
+core.register_node("vox_main:tin_ore", {
+ description = "Tin Ore",
+ tiles = {"vox_tin_ore.png"},
+ groups = {cracky = 2}
+})
+core.register_alias("tin_ore", "vox_main:tin_ore")
+core.register_alias("default:stone_with_tin", "vox_main:tin_ore")
+
+core.register_node("vox_main:iron_ore", {
+ description = "Iron Ore",
+ tiles = {"vox_iron_ore.png"},
+ groups = {cracky = 2}
+})
+core.register_alias("iron_ore", "vox_main:iron_ore")
+core.register_alias("default:stone_with_iron", "vox_main:iron_ore")
+
+core.register_node("vox_main:gold_ore", {
+ description = "Gold Ore",
+ tiles = {"vox_gold_ore.png"},
+ groups = {cracky = 2}
+})
+core.register_alias("gold_ore", "vox_main:gold_ore")
+core.register_alias("default:stone_with_gold", "vox_main:gold_ore")
+
+core.register_node("vox_main:silver_ore", {
+ description = "Silver Ore",
+ tiles = {"vox_silver_ore.png"},
+ groups = {cracky = 2}
+})
+core.register_alias("silver_ore", "vox_main:silver_ore")
+core.register_alias("default:stone_with_silver", "vox_main:silver_ore")
+
+core.register_node("vox_main:platinum_ore", {
+ description = "Platinum Ore",
+ tiles = {"vox_platinum_ore.png"},
+ groups = {cracky = 2}
+})
+core.register_alias("platinum_ore", "vox_main:platinum_ore")
+core.register_alias("default:stone_with_platinum", "vox_main:platinum_ore")
+
+core.register_node("vox_main:lead_ore", {
+ description = "Lead Ore",
+ tiles = {"vox_lead_ore.png"},
+ groups = {cracky = 2}
+})
+core.register_alias("lead_ore", "vox_main:lead_ore")
+core.register_alias("default:stone_with_lead", "vox_main:lead_ore")
+
+core.register_node("vox_main:zinc_ore", {
+ description = "Zinc Ore",
+ tiles = {"vox_zinc_ore.png"},
+ groups = {cracky = 2}
+})
+core.register_alias("zinc_ore", "vox_main:zinc_ore")
+core.register_alias("default:stone_with_zinc", "vox_main:zinc_ore")
+
+core.register_node("vox_main:nickel_ore", {
+ description = "Nickel Ore",
+ tiles = {"vox_nickel_ore.png"},
+ groups = {cracky = 2}
+})
+core.register_alias("nickel_ore", "vox_main:nickel_ore")
+core.register_alias("default:stone_with_nickel", "vox_main:nickel_ore")
+
+core.register_node("vox_main:cobalt_ore", {
+ description = "Cobalt Ore",
+ tiles = {"vox_cobalt_ore.png"},
+ groups = {cracky = 2}
+})
+core.register_alias("cobalt_ore", "vox_main:cobalt_ore")
+core.register_alias("default:stone_with_cobalt", "vox_main:cobalt_ore")
+
+core.register_node("vox_main:titanium_ore", {
+ description = "Titanium Ore",
+ tiles = {"vox_titanium_ore.png"},
+ groups = {cracky = 2}
+})
+core.register_alias("titanium_ore", "vox_main:titanium_ore")
+core.register_alias("default:stone_with_titanium", "vox_main:titanium_ore")
+
+core.register_node("vox_main:tungsten_ore", {
+ description = "Tungsten Ore",
+ tiles = {"vox_tungsten_ore.png"},
+ groups = {cracky = 2}
+})
+core.register_alias("tungsten_ore", "vox_main:tungsten_ore")
+core.register_alias("default:stone_with_tungsten", "vox_main:tungsten_ore")
\ No newline at end of file
diff --git a/mods/ITEMS/vox_main/sky_island.lua b/mods/ITEMS/vox_main/sky_island.lua
new file mode 100644
index 0000000..90fc822
--- /dev/null
+++ b/mods/ITEMS/vox_main/sky_island.lua
@@ -0,0 +1,10 @@
+-- ------------------------------ Sky Island ------------------------- --
+-- Cloud Block - Only pegasus can walk on it :)
+-- Players may stand on it, but sink partway through. If multiple blocks are
+-- stacked, you fall to the lowest block and still don't fall through.
+core.register_node("vox_main:cloud", {
+ description = "Cloud",
+ tiles = {"vox_cloud.png"},
+ groups = {crumbly = 1}
+})
+core.register_alias("cloud", "vox_main:cloud")
\ No newline at end of file
diff --git a/mods/ITEMS/vox_main/textiles.lua b/mods/ITEMS/vox_main/textiles.lua
new file mode 100644
index 0000000..1f8ab10
--- /dev/null
+++ b/mods/ITEMS/vox_main/textiles.lua
@@ -0,0 +1,29 @@
+
+-- ---------------------------- Dyeable Nodes -------------------------- --
+-- List of dyeable things
+local dyeable_craftitem = {"wool, carpet"}
+
+-- ---------------------------- Basics -------------------------- --
+-- "We've got wool and wool accessories.
+-- String
+minetest.register_craftitem("vox_main:string", {
+ description = "String",
+ inventory_image = "vox_main_string.png"
+})
+
+-- Wool
+minetest.register_node("vox_main:wool", {
+ description = "Wool",
+ tiles = {"vox_textiles_wool.png"},
+ groups = {snappy=2, choppy=2, oddly_breakable_by_hand=3},
+ sounds = default.node_sound_defaults(),
+})
+
+-- Carpet
+-- These are made from wool and can be dyed
+minetest.register_node("vox_main:carpet", {
+ description = "Carpet",
+ tiles = {"vox_textiles_carpet.png"},
+ groups = {snappy=2, choppy=2, oddly_breakable_by_hand=3},
+ sounds = default.node_sound_defaults(),
+})
\ No newline at end of file
diff --git a/mods/ITEMS/vox_worldblocks/textures/vox_cobblestone.png b/mods/ITEMS/vox_main/textures/vox_cobblestone.png
similarity index 100%
rename from mods/ITEMS/vox_worldblocks/textures/vox_cobblestone.png
rename to mods/ITEMS/vox_main/textures/vox_cobblestone.png
diff --git a/mods/ITEMS/vox_worldblocks/textures/vox_dirt.png b/mods/ITEMS/vox_main/textures/vox_dirt.png
similarity index 100%
rename from mods/ITEMS/vox_worldblocks/textures/vox_dirt.png
rename to mods/ITEMS/vox_main/textures/vox_dirt.png
diff --git a/mods/ITEMS/vox_worldblocks/textures/vox_grass.png b/mods/ITEMS/vox_main/textures/vox_grass.png
similarity index 100%
rename from mods/ITEMS/vox_worldblocks/textures/vox_grass.png
rename to mods/ITEMS/vox_main/textures/vox_grass.png
diff --git a/mods/ITEMS/vox_worldblocks/textures/vox_gravel.png b/mods/ITEMS/vox_main/textures/vox_gravel.png
similarity index 100%
rename from mods/ITEMS/vox_worldblocks/textures/vox_gravel.png
rename to mods/ITEMS/vox_main/textures/vox_gravel.png
diff --git a/mods/ITEMS/vox_worldblocks/textures/vox_sand.png b/mods/ITEMS/vox_main/textures/vox_sand.png
similarity index 100%
rename from mods/ITEMS/vox_worldblocks/textures/vox_sand.png
rename to mods/ITEMS/vox_main/textures/vox_sand.png
diff --git a/mods/ITEMS/vox_worldblocks/textures/vox_stone.png b/mods/ITEMS/vox_main/textures/vox_stone.png
similarity index 100%
rename from mods/ITEMS/vox_worldblocks/textures/vox_stone.png
rename to mods/ITEMS/vox_main/textures/vox_stone.png
diff --git a/mods/ITEMS/vox_worldblocks/textures/vox_water.png b/mods/ITEMS/vox_main/textures/vox_water.png
similarity index 100%
rename from mods/ITEMS/vox_worldblocks/textures/vox_water.png
rename to mods/ITEMS/vox_main/textures/vox_water.png
diff --git a/mods/ITEMS/vox_materials/init.lua b/mods/ITEMS/vox_materials/init.lua
deleted file mode 100644
index 272baab..0000000
--- a/mods/ITEMS/vox_materials/init.lua
+++ /dev/null
@@ -1,14 +0,0 @@
----------------------------------------------------------------------------
--- Voxelis - Voxel survival sandbox for Luanti
--- Copyright (C) 2024 Mad Star Studio LLC
---
--- This program is free software; you can redistribute it and/or modify
--- it under the terms of the GNU General Public License as published by
--- the Free Software Foundation; either version 3 of the License, or
--- (at your option) any later version.
---
--- You should have received a copy of the GNU General Public License along
--- with this program; if not, see .
----------------------------------------------------------------------------
-
-vox_materials = { }
\ No newline at end of file
diff --git a/mods/ITEMS/vox_materials/mod.conf b/mods/ITEMS/vox_materials/mod.conf
deleted file mode 100644
index 5acffe5..0000000
--- a/mods/ITEMS/vox_materials/mod.conf
+++ /dev/null
@@ -1,2 +0,0 @@
-name = vox_materials
-description = Voxelis - materials: Adds materials to the game.
\ No newline at end of file
diff --git a/mods/ITEMS/vox_mats/mod.conf b/mods/ITEMS/vox_mats/mod.conf
deleted file mode 100644
index bf13ad9..0000000
--- a/mods/ITEMS/vox_mats/mod.conf
+++ /dev/null
@@ -1,2 +0,0 @@
-name = vox_mats
-description = Voxelis - mats. in general maps that dont need to be categorized (yet)
\ No newline at end of file
diff --git a/mods/ITEMS/vox_mobdrops/init.lua b/mods/ITEMS/vox_mobdrops/init.lua
deleted file mode 100644
index d80e24b..0000000
--- a/mods/ITEMS/vox_mobdrops/init.lua
+++ /dev/null
@@ -1,15 +0,0 @@
--- Fat
-minetest.register_craftitem("vox_mobdrops:fat", {
- description = "Fat",
- inventory_image = "fat.png",
-})
--- Add fat drops from mobs
-minetest.register_on_dieplayer(function(player)
- local inventory = player:get_inventory()
- if math.random(1, 5) == 1 then
- inventory:add_item("main", "vox_mobdrops:fat")
- end
-end)
-
-
--- Leather
diff --git a/mods/ITEMS/vox_mobdrops/mod.conf b/mods/ITEMS/vox_mobdrops/mod.conf
deleted file mode 100644
index bba007f..0000000
--- a/mods/ITEMS/vox_mobdrops/mod.conf
+++ /dev/null
@@ -1,2 +0,0 @@
-name = vox_mobdrops
-description = Voxelis - mob drops
\ No newline at end of file
diff --git a/mods/ITEMS/vox_structural/init.lua b/mods/ITEMS/vox_structural/init.lua
index f0c46c5..ce13ad8 100644
--- a/mods/ITEMS/vox_structural/init.lua
+++ b/mods/ITEMS/vox_structural/init.lua
@@ -1,4 +1,5 @@
-- Vox Structural System
+vox_structural = {} -- Initialize the global table for the mod
local structural_shapes = {}
@@ -14,10 +15,16 @@ function vox_structural.register_block_with_shapes(modname, base_block, options)
local shape_node_name = modname .. ":" .. base_block .. "_" .. shape_name
-- Create the new node definition
- local new_node_def = table.copy(minetest.registered_nodes[base_node_name])
- new_node_def.description = new_node_def.description .. " (" .. shape_name:gsub("_", " ") .. ")"
- new_node_def.tiles = shape_def.tiles or new_node_def.tiles
- new_node_def.groups = table.copy(new_node_def.groups or {})
+ local base_def = minetest.registered_nodes[base_node_name]
+ if not base_def then
+ minetest.log("error", "[vox_structural] Base node not found: " .. base_node_name)
+ return
+ end
+
+ local new_node_def = table.copy(base_def)
+ new_node_def.description = base_def.description .. " (" .. shape_name:gsub("_", " ") .. ")"
+ new_node_def.tiles = shape_def.tiles or base_def.tiles
+ new_node_def.groups = table.copy(base_def.groups or {})
new_node_def.groups.shape = 1 -- Add a "shape" group
-- Apply shape-specific overrides
@@ -75,13 +82,7 @@ vox_structural.register_shape("pressure_plate", {
},
})
--- Button
-
--- Post
-
-
--- ------------------
--- Register door shapes with variants
+-- ---------------------------- Doors and Variants -------------------------- --
vox_structural.register_shape("door_flush", {
override = {
drawtype = "mesh",
diff --git a/mods/ITEMS/vox_structural/mod.conf b/mods/ITEMS/vox_structural/mod.conf
index c062024..6f9148c 100644
--- a/mods/ITEMS/vox_structural/mod.conf
+++ b/mods/ITEMS/vox_structural/mod.conf
@@ -1,2 +1,3 @@
name = vox_structural
-description = Voxelis - structural. Adds dynamic structure pieces and assign textures to them.
\ No newline at end of file
+description = Voxelis - structural. Adds dynamic structure pieces and assign textures to them.
+depends = vox_colors
\ No newline at end of file
diff --git a/mods/ITEMS/vox_textiles/init.lua b/mods/ITEMS/vox_textiles/init.lua
deleted file mode 100644
index c72db5d..0000000
--- a/mods/ITEMS/vox_textiles/init.lua
+++ /dev/null
@@ -1,20 +0,0 @@
--- ---------------------------- Dyeable Nodes -------------------------- --
--- List of dyeable things
-local dyeable_blocks = {"wool, carpet"}
-
--- Register base things their dyeable variants
-for _, base_block in ipairs(dyeable_blocks) do
- vox_coloring.register_dyeable("vox_worldblocks", base_block)
-end
-
--- ---------------------------- Basics -------------------------- --
--- "We've got wool and wool accessories.
-
--- String
-
-
--- Wool
-
-
--- Carpet
--- These are made from wool or from fabric
diff --git a/mods/ITEMS/vox_worldblocks/init.lua b/mods/ITEMS/vox_worldblocks/init.lua
deleted file mode 100644
index 67d4b10..0000000
--- a/mods/ITEMS/vox_worldblocks/init.lua
+++ /dev/null
@@ -1,905 +0,0 @@
----------------------------------------------------------------------------
--- Voxelis - Voxel survival sandbox for Luanti
--- Copyright (C) 2024 Mad Star Studio LLC
---
--- This program is free software; you can redistribute it and/or modify
--- it under the terms of the GNU General Public License as published by
--- the Free Software Foundation; either version 3 of the License, or
--- (at your option) any later version.
---
--- You should have received a copy of the GNU General Public License along
--- with this program; if not, see .
----------------------------------------------------------------------------
-
--- -------------------------------------------------------------------------- --
--- Blocks --
--- -------------------------------------------------------------------------- --
-
--- ----------------------------- Terrain Surface ---------------------------- --
-
--- Grass
-core.register_node("vox_worldblocks:grass", {
- description = "Grass Block",
- tiles = {"vox_grass.png"},
- groups = {cracky = 3}
-})
-core.register_alias("grass", "vox_worldblocks:grass")
-core.register_alias("default:dirt_with_grass" , "vox_worldblocks:grass")
-
--- Dirt
-core.register_node("vox_worldblocks:dirt", {
- description = "Dirt",
- tiles = {"vox_dirt.png"},
- groups = {crumbly = 3}
-})
-core.register_alias("dirt", "vox_worldblocks:dirt")
-core.register_alias("default:dirt", "vox_worldblocks:dirt")
-
--- Sand
--- (I don't like sand. It's coarse and rough and irritating and it gets everywhere.)
-core.register_node("vox_worldblocks:sand", {
- description = "Sand",
- tiles = {"vox_sand.png"},
- groups = {crumbly = 3}
-})
-core.register_alias("sand", "vox_worldblocks:sand")
-core.register_alias("default:sand", "vox_worldblocks:sand")
-
--- Snow
-core.register_node("vox_worldblocks:snow", {
- description = "Snow",
- tiles = {"vox_snow.png"},
- groups = {crumbly = 3}
-})
-core.register_alias("snow", "vox_worldblocks:snow")
-core.register_alias("default:snow", "vox_worldblocks:snow")
-
--- Packed Snow
-core.register_node("vox_worldblocks:packed_snow", {
- description = "Packed Snow",
- tiles = {"vox_packed_snow.png"},
- groups = {crumbly = 2}
-})
-core.register_alias("packed_snow", "vox_worldblocks:packed_snow")
-
--- Ice
-core.register_node("vox_worldblocks:ice", {
- description = "Ice",
- tiles = {"vox_ice.png"},
- groups = {crumbly = 3}
-})
-core.register_alias("ice", "vox_worldblocks:ice")
-core.register_alias("default:ice", "vox_worldblocks:ice")
-
--- Sulfur Crust
-core.register_node("vox_worldblocks:sulfur_crust", {
- description = "Sulfur Crust",
- tiles = {"vox_sulfur_crust.png"},
- groups = {crumbly = 3}
-})
-core.register_alias("sulfur_crust", "vox_worldblocks:sulfur_crust")
-
--- ---------------------------- Terrain Subsurface --------------------------- --
-
--- Bedrock
-core.register_node("vox_worldblocks:bedrock", {
- description = "Bedrock",
- tiles = {"vox_bedrock.png"},
- groups = {cracky = 1}
-})
-core.register_alias("bedrock", "vox_worldblocks:bedrock")
-core.register_alias("default:bedrock", "vox_worldblocks:bedrock")
-
--- Ash
-minetest.register_node("vox_worldblocks:ash_block", {
- description = "Ash Block",
- tiles = {"vox_ash_block.png"},
- groups = {crumbly = 3},
- drop = "vox_mats:ash", -- Drops ash when broken
-})
-
--- Gravel
-core.register_node("vox_worldblocks:gravel", {
- description = "Gravel",
- tiles = {"vox_gravel.png"},
- groups = {crumbly = 2}
-})
-core.register_alias("gravel", "vox_worldblocks:gravel")
-core.register_alias("default:gravel", "vox_worldblocks:gravel")
-
--- Stone
-core.register_node("vox_worldblocks:stone", {
- description = "Stone",
- tiles = {"vox_stone.png"},
- groups = {cracky = 2}
-})
-core.register_alias("stone", "vox_worldblocks:stone")
-core.register_alias("mapgen_stone", "vox_worldblocks:stone")
--- core.register_alias("default:stone", "vox_worldblocks:stone")
-
--- Cobblestone
-core.register_node("vox_worldblocks:cobblestone", {
- description = "Cobblestone",
- tiles = {"vox_cobblestone.png"},
- groups = {cracky = 2}
-})
-core.register_alias("cobblestone", "vox_worldblocks:cobblestone")
-core.register_alias("default:cobble", "vox_worldblocks:cobblestone")
-
--- Sandstone
-core.register_node("vox_worldblocks:sandstone", {
- description = "Sandstone",
- tiles = {"vox_sandstone.png"},
- groups = {cracky = 2}
-})
-core.register_alias("sandstone", "vox_worldblocks:sandstone")
-core.register_alias("default:sandstone", "vox_worldblocks:sandstone")
-
--- Clay
-core.register_node("vox_worldblocks:clay", {
- description = "Clay",
- tiles = {"vox_clay.png"},
- groups = {crumbly = 3}
-})
-core.register_alias("clay", "vox_worldblocks:clay")
-core.register_alias("default:clay", "vox_worldblocks:clay")
-
--- Hardened Clay
-core.register_node("vox_worldblocks:hardened_clay", {
- description = "Hardened Clay",
- tiles = {"vox_hardened_clay.png"},
- groups = {cracky = 2}
-})
-core.register_alias("hardened_clay", "vox_worldblocks:hardened_clay")
-core.register_alias("default:hardened_clay", "vox_worldblocks:hardened_clay")
-
--- Mud
-core.register_node("vox_worldblocks:mud", {
- description = "Mud",
- tiles = {"vox_mud.png"},
- groups = {crumbly = 3}
-})
-core.register_alias("mud", "vox_worldblocks:mud")
-
--- Granite
-core.register_node("vox_worldblocks:granite", {
- description = "Granite",
- tiles = {"vox_granite.png"},
- groups = {cracky = 2}
-})
-core.register_alias("granite", "vox_worldblocks:granite")
-core.register_alias("default:granite", "vox_worldblocks:granite")
-
--- Diorite
-core.register_node("vox_worldblocks:diorite", {
- description = "Diorite",
- tiles = {"vox_diorite.png"},
- groups = {cracky = 2}
-})
-core.register_alias("diorite", "vox_worldblocks:diorite")
-core.register_alias("default:diorite", "vox_worldblocks:diorite")
-
--- Andesite
-core.register_node("vox_worldblocks:andesite", {
- description = "Andesite",
- tiles = {"vox_andesite.png"},
- groups = {cracky = 2}
-})
-core.register_alias("andesite", "vox_worldblocks:andesite")
-core.register_alias("default:andesite", "vox_worldblocks:andesite")
-
--- Basalt
-core.register_node("vox_worldblocks:basalt", {
- description = "Basalt",
- tiles = {"vox_basalt.png"},
- groups = {cracky = 2}
-})
-core.register_alias("basalt", "vox_worldblocks:basalt")
-core.register_alias("default:basalt", "vox_worldblocks:basalt")
-
--- Obsidian
-core.register_node("vox_worldblocks:obsidian", {
- description = "Obsidian",
- tiles = {"vox_obsidian.png"},
- groups = {cracky = 2}
-})
-core.register_alias("obsidian", "vox_worldblocks:obsidian")
-core.register_alias("default:obsidian", "vox_worldblocks:obsidian")
-
--- Marble
-core.register_node("vox_worldblocks:marble", {
- description = "Marble",
- tiles = {"vox_marble.png"},
- groups = {cracky = 2}
-})
-core.register_alias("marble", "vox_worldblocks:marble")
-core.register_alias("default:marble", "vox_worldblocks:marble")
-
--- Chalk
-core.register_node("vox_worldblocks:chalk", {
- description = "Chalk",
- tiles = {"vox_chalk.png"},
- groups = {cracky = 2}
-})
-core.register_alias("chalk", "vox_worldblocks:chalk")
-core.register_alias("default:chalk", "vox_worldblocks:chalk")
-
--- Limestone
-core.register_node("vox_worldblocks:limestone", {
- description = "Limestone",
- tiles = {"vox_limestone.png"},
- groups = {cracky = 2}
-})
-core.register_alias("limestone", "vox_worldblocks:limestone")
-core.register_alias("default:limestone", "vox_worldblocks:limestone")
-
--- Glowing Moss
-core.register_node("vox_worldblocks:glowing_moss", {
- description = "Glowing Moss",
- tiles = {"vox_glowing_moss.png"},
- light_source = 8,
- groups = {crumbly = 1}
-})
-core.register_alias("glowing_moss", "vox_worldblocks:glowing_moss")
-
-core.register_node("vox_worldblocks:salt_crystal", {
- description = "Salt Crystal",
- tiles = {"vox_salt_crystal.png"},
- groups = {cracky = 2}
-})
-core.register_alias("salt_crystal", "vox_worldblocks:salt_crystal")
-
-core.register_node("vox_worldblocks:volcanic_rock", {
- description = "Volcanic Rock",
- tiles = {"vox_volcanic_rock.png"},
- groups = {cracky = 3}
-})
-core.register_alias("volcanic_rock", "vox_worldblocks:volcanic_rock")
-
-core.register_node("vox_worldblocks:hot_spring_stone", {
- description = "Hot Spring Stone",
- tiles = {"vox_hot_spring_stone.png"},
- groups = {cracky = 2}
-})
-core.register_alias("hot_spring_stone", "vox_worldblocks:hot_spring_stone")
-
--- ------------------------------ Ocean ------------------------- --
---
-core.register_node("vox_worldblocks:coral_red", {
- description = "Red Coral",
- tiles = {"vox_coral_red.png"},
- groups = {crumbly = 1}
-})
-core.register_alias("coral_red", "vox_worldblocks:coral_red")
-
-
--- ------------------------------ Sky Island ------------------------- --
--- Cloud Block - Only pegasus can walk on it :)
--- Players may stand on it, but sink partway through. If multiple blocks are
--- stacked, you fall to the lowest block and still don't fall through.
-core.register_node("vox_worldblocks:cloud", {
- description = "Cloud",
- tiles = {"vox_cloud.png"},
- groups = {crumbly = 1}
-})
-core.register_alias("cloud", "vox_worldblocks:cloud")
-
--- -------------------------------------------------------------------------- --
--- Liquids --
--- -------------------------------------------------------------------------- --
-
-
--- Water
-core.register_node("vox_worldblocks:water_source", {
- description = "Water Source",
- drawtype = "liquid",
- tiles = {
- {
- name = "vox_water.png",
- animation = {
- type = "vertical_frames",
- aspect_w = 16,
- aspect_h = 16,
- length = 2.0
- }
- }
- },
- alpha = 128,
- paramtype = "light",
- walkable = false,
- pointable = false,
- diggable = false,
- buildable_to = true,
- liquidtype = "source",
- liquid_alternative_flowing = "vox_worldblocks:water_flowing",
- liquid_alternative_source = "vox_worldblocks:water_source",
- liquid_viscosity = 1,
- post_effect_color = {a = 103, r = 30, g = 60, b = 90}
-})
-core.register_alias("water_source", "vox_worldblocks:water_source")
-core.register_alias("default:river_water", "vox_worldblocks:water_source")
-core.register_alias("mapgen_water_source", "vox_worldblocks:water_source")
-
-core.register_node("vox_worldblocks:water_flowing", {
- description = "Flowing Water",
- drawtype = "flowingliquid",
- tiles = {"vox_water.png"},
- special_tiles = {
- {
- name = "vox_water.png",
- backface_culling = false,
- animation = {
- type = "vertical_frames",
- aspect_w = 16,
- aspect_h = 16,
- length = 0.8
- }
- }
- },
- alpha = 160,
- paramtype = "light",
- walkable = false,
- pointable = false,
- diggable = false,
- buildable_to = true,
- liquidtype = "flowing",
- liquid_alternative_flowing = "vox_worldblocks:water_flowing",
- liquid_alternative_source = "vox_worldblocks:water_source",
- liquid_viscosity = 1,
- post_effect_color = {a = 103, r = 30, g = 60, b = 90}
-})
-core.register_alias("water_flowing", "vox_worldblocks:water_flowing")
-core.register_alias("default:river_water_flowing", "vox_worldblocks:water_flowing")
-core.register_alias("mapgen_water_flowing", "vox_worldblocks:water_flowing")
-
--- Hotspring Water
-core.register_node("vox_worldblocks:hotspring_water_source", {
- description = "Hotspring Water Source",
- drawtype = "liquid",
- tiles = {
- {
- name = "vox_hotspring_water.png",
- animation = {
- type = "vertical_frames",
- aspect_w = 16,
- aspect_h = 16,
- length = 2.0
- }
- }
- },
- alpha = 128,
- paramtype = "light",
- walkable = false,
- pointable = false,
- diggable = false,
- buildable_to = true,
- liquidtype = "source",
- liquid_alternative_flowing = "vox_worldblocks:hotspring_water_flowing",
- liquid_alternative_source = "vox_worldblocks:hotspring_water_source",
- liquid_viscosity = 1,
- post_effect_color = {a = 103, r = 30, g = 60, b = 90}
-})
-core.register_alias("hotspring_water_source", "vox_worldblocks:hotspring_water_source")
-core.register_alias("mapgen_hotspring_water_source", "vox_worldblocks:hotspring_water_source")
-
-core.register_node("vox_worldblocks:hotspring_water_flowing", {
- description = "Flowing Hotspring Water",
- drawtype = "flowingliquid",
- tiles = {"vox_hotspring_water.png"},
- special_tiles = {
- {
- name = "vox_hotspring_water.png",
- backface_culling = false,
- animation = {
- type = "vertical_frames",
- aspect_w = 16,
- aspect_h = 16,
- length = 0.8
- }
- }
- },
- alpha = 160,
- paramtype = "light",
- walkable = false,
- pointable = false,
- diggable = false,
- buildable_to = true,
- liquidtype = "flowing",
- liquid_alternative_flowing = "vox_worldblocks:hotspring_water_flowing",
- liquid_alternative_source = "vox_worldblocks:hotspring_water_source",
- liquid_viscosity = 1,
- post_effect_color = {a = 103, r = 30, g = 60, b = 90}
-})
-core.register_alias("hotspring_water_flowing", "vox_worldblocks:hotspring_water_flowing")
-core.register_alias("mapgen_hotspring_water_flowing", "vox_worldblocks:hotspring_water_flowing")
-
--- Lava
-core.register_node("vox_worldblocks:lava_source", {
- description = "Lava Source",
- drawtype = "liquid",
- tiles = {
- {
- name = "vox_lava.png",
- animation = {
- type = "vertical_frames",
- aspect_w = 16,
- aspect_h = 16,
- length = 2.0
- }
- }
- },
- alpha = 255,
- paramtype = "light",
- walkable = false,
- pointable = false,
- diggable = false,
- buildable_to = true,
- liquidtype = "source",
- liquid_alternative_flowing = "vox_worldblocks:lava_flowing",
- liquid_alternative_source = "vox_worldblocks:lava_source",
- liquid_viscosity = 7,
- post_effect_color = {a = 255, r = 255, g = 0, b = 0}
-})
-core.register_alias("lava_source", "vox_worldblocks:lava_source")
-core.register_alias("default:lava_source", "vox_worldblocks:lava_source")
-core.register_alias("mapgen_lava_source", "vox_worldblocks:lava_source")
-
-core.register_node("vox_worldblocks:lava_flowing", {
- description = "Flowing Lava",
- drawtype = "flowingliquid",
- tiles = {"vox_lava.png"},
- special_tiles = {
- {
- name = "vox_lava.png",
- backface_culling = false,
- animation = {
- type = "vertical_frames",
- aspect_w = 16,
- aspect_h = 16,
- length = 2.0
- }
- }
- },
- alpha = 255,
- paramtype = "light",
- walkable = false,
- pointable = false,
- diggable = false,
- buildable_to = true,
- liquidtype = "flowing",
- liquid_alternative_flowing = "vox_worldblocks:lava_flowing",
- liquid_alternative_source = "vox_worldblocks:lava_source",
- liquid_viscosity = 7,
- post_effect_color = {a = 255, r = 255, g = 0, b = 0}
-})
-core.register_alias("lava_flowing", "vox_worldblocks:lava_flowing")
-core.register_alias("default:lava_flowing", "vox_worldblocks:lava_flowing")
-core.register_alias("mapgen_lava_flowing", "vox_worldblocks:lava_flowing")
-
--- -------------------------------------------------------------------------- --
--- Ores --
--- -------------------------------------------------------------------------- --
-
-
--- Fuel: Coal, Uranium, Peat
-core.register_node("vox_worldblocks:coal_ore", {
- description = "Coal Ore",
- tiles = {"vox_coal_ore.png"},
- groups = {cracky = 2}
-})
-core.register_alias("coal_ore", "vox_worldblocks:coal_ore")
-core.register_alias("default:stone_with_coal", "vox_worldblocks:coal_ore")
-
-core.register_node("vox_worldblocks:uranium_ore", {
- description = "Uranium Ore",
- tiles = {"vox_uranium_ore.png"},
- groups = {cracky = 2}
-})
-core.register_alias("uranium_ore", "vox_worldblocks:uranium_ore")
-core.register_alias("default:stone_with_uranium", "vox_worldblocks:uranium_ore")
-
-core.register_node("vox_worldblocks:peat", {
- description = "Peat",
- tiles = {"vox_peat.png"},
- groups = {crumbly = 2, flammable = 1}
-})
-core.register_alias("peat", "vox_worldblocks:peat")
-
--- Bone
-core.register_node("vox_worldblocks:bone_ore", {
- description = "Bone Ore",
- tiles = {"vox_bone_ore.png"},
- groups = {cracky = 2}
-})
-core.register_alias("bone_ore", "vox_worldblocks:bone_ore")
-core.register_alias("default:stone_with_bone", "vox_worldblocks:bone_ore")
-
--- Sulfur
-core.register_node("vox_worldblocks:sulfur_ore", {
- description = "Sulfur Ore",
- tiles = {"vox_sulfur_ore.png"},
- groups = {cracky = 2}
-})
-core.register_alias("sulfur_ore", "vox_worldblocks:sulfur_ore")
-core.register_alias("default:stone_with_sulfur", "vox_worldblocks:sulfur_ore")
-
--- Salt
-core.register_node("vox_worldblocks:salt_ore", {
- description = "Salt Ore",
- tiles = {"vox_salt_ore.png"},
- groups = {crumbly = 2},
- drop = "vox_mats:salt"
-})
-core.register_alias("salt_ore", "vox_worldblocks:salt_ore")
-core.register_alias("default:stone_with_salt", "vox_worldblocks:salt_ore")
-
--- Metals: Copper, Tin, Iron, Gold, Silver, Platinum, Lead, Zinc, Nickel, Cobalt, Titanium, Tungsten
-core.register_node("vox_worldblocks:copper_ore", {
- description = "Copper Ore",
- tiles = {"vox_copper_ore.png"},
- groups = {cracky = 2}
-})
-core.register_alias("copper_ore", "vox_worldblocks:copper_ore")
-core.register_alias("default:stone_with_copper", "vox_worldblocks:copper_ore")
-
-core.register_node("vox_worldblocks:tin_ore", {
- description = "Tin Ore",
- tiles = {"vox_tin_ore.png"},
- groups = {cracky = 2}
-})
-core.register_alias("tin_ore", "vox_worldblocks:tin_ore")
-core.register_alias("default:stone_with_tin", "vox_worldblocks:tin_ore")
-
-core.register_node("vox_worldblocks:iron_ore", {
- description = "Iron Ore",
- tiles = {"vox_iron_ore.png"},
- groups = {cracky = 2}
-})
-core.register_alias("iron_ore", "vox_worldblocks:iron_ore")
-core.register_alias("default:stone_with_iron", "vox_worldblocks:iron_ore")
-
-core.register_node("vox_worldblocks:gold_ore", {
- description = "Gold Ore",
- tiles = {"vox_gold_ore.png"},
- groups = {cracky = 2}
-})
-core.register_alias("gold_ore", "vox_worldblocks:gold_ore")
-core.register_alias("default:stone_with_gold", "vox_worldblocks:gold_ore")
-
-core.register_node("vox_worldblocks:silver_ore", {
- description = "Silver Ore",
- tiles = {"vox_silver_ore.png"},
- groups = {cracky = 2}
-})
-core.register_alias("silver_ore", "vox_worldblocks:silver_ore")
-core.register_alias("default:stone_with_silver", "vox_worldblocks:silver_ore")
-
-core.register_node("vox_worldblocks:platinum_ore", {
- description = "Platinum Ore",
- tiles = {"vox_platinum_ore.png"},
- groups = {cracky = 2}
-})
-core.register_alias("platinum_ore", "vox_worldblocks:platinum_ore")
-core.register_alias("default:stone_with_platinum", "vox_worldblocks:platinum_ore")
-
-core.register_node("vox_worldblocks:lead_ore", {
- description = "Lead Ore",
- tiles = {"vox_lead_ore.png"},
- groups = {cracky = 2}
-})
-core.register_alias("lead_ore", "vox_worldblocks:lead_ore")
-core.register_alias("default:stone_with_lead", "vox_worldblocks:lead_ore")
-
-core.register_node("vox_worldblocks:zinc_ore", {
- description = "Zinc Ore",
- tiles = {"vox_zinc_ore.png"},
- groups = {cracky = 2}
-})
-core.register_alias("zinc_ore", "vox_worldblocks:zinc_ore")
-core.register_alias("default:stone_with_zinc", "vox_worldblocks:zinc_ore")
-
-core.register_node("vox_worldblocks:nickel_ore", {
- description = "Nickel Ore",
- tiles = {"vox_nickel_ore.png"},
- groups = {cracky = 2}
-})
-core.register_alias("nickel_ore", "vox_worldblocks:nickel_ore")
-core.register_alias("default:stone_with_nickel", "vox_worldblocks:nickel_ore")
-
-core.register_node("vox_worldblocks:cobalt_ore", {
- description = "Cobalt Ore",
- tiles = {"vox_cobalt_ore.png"},
- groups = {cracky = 2}
-})
-core.register_alias("cobalt_ore", "vox_worldblocks:cobalt_ore")
-core.register_alias("default:stone_with_cobalt", "vox_worldblocks:cobalt_ore")
-
-core.register_node("vox_worldblocks:titanium_ore", {
- description = "Titanium Ore",
- tiles = {"vox_titanium_ore.png"},
- groups = {cracky = 2}
-})
-core.register_alias("titanium_ore", "vox_worldblocks:titanium_ore")
-core.register_alias("default:stone_with_titanium", "vox_worldblocks:titanium_ore")
-
-core.register_node("vox_worldblocks:tungsten_ore", {
- description = "Tungsten Ore",
- tiles = {"vox_tungsten_ore.png"},
- groups = {cracky = 2}
-})
-core.register_alias("tungsten_ore", "vox_worldblocks:tungsten_ore")
-core.register_alias("default:stone_with_tungsten", "vox_worldblocks:tungsten_ore")
-
-
--- Gems: Diamond, Emerald, Ruby, Sapphire, Topaz, Amethyst, Opal, Onyx, Garnet, Peridot, Aquamarine, Citrine, Tourmaline, Zircon, Tanzanite, Spinel, Lapis Lazuli, Malachite, Azurite, Turquoise, Amber, Moonstone, Sunstone, Bloodstone, Agate, Jasper, Chalcedony, Chrysoprase, Carnelian, Sardonyx, Heliotrope, Alexandrite, Tiger's Eye, Serpentine, Rhodonite
-core.register_node("vox_worldblocks:diamond_ore", {
- description = "Diamond Ore",
- tiles = {"vox_diamond_ore.png"},
- groups = {cracky = 2}
-})
-core.register_alias("diamond_ore", "vox_worldblocks:diamond_ore")
-core.register_alias("default:stone_with_diamond", "vox_worldblocks:diamond_ore")
-
-core.register_node("vox_worldblocks:emerald_ore", {
- description = "Emerald Ore",
- tiles = {"vox_emerald_ore.png"},
- groups = {cracky = 2}
-})
-core.register_alias("emerald_ore", "vox_worldblocks:emerald_ore")
-core.register_alias("default:stone_with_emerald", "vox_worldblocks:emerald_ore")
-
-core.register_node("vox_worldblocks:ruby_ore", {
- description = "Ruby Ore",
- tiles = {"vox_ruby_ore.png"},
- groups = {cracky = 2}
-})
-core.register_alias("ruby_ore", "vox_worldblocks:ruby_ore")
-core.register_alias("default:stone_with_ruby", "vox_worldblocks:ruby_ore")
-
-core.register_node("vox_worldblocks:sapphire_ore", {
- description = "Sapphire Ore",
- tiles = {"vox_sapphire_ore.png"},
- groups = {cracky = 2}
-})
-core.register_alias("sapphire_ore", "vox_worldblocks:sapphire_ore")
-core.register_alias("default:stone_with_sapphire", "vox_worldblocks:sapphire_ore")
-
-core.register_node("vox_worldblocks:topaz_ore", {
- description = "Topaz Ore",
- tiles = {"vox_topaz_ore.png"},
- groups = {cracky = 2}
-})
-core.register_alias("topaz_ore", "vox_worldblocks:topaz_ore")
-core.register_alias("default:stone_with_topaz", "vox_worldblocks:topaz_ore")
-
-core.register_node("vox_worldblocks:amethyst_ore", {
- description = "Amethyst Ore",
- tiles = {"vox_amethyst_ore.png"},
- groups = {cracky = 2}
-})
-core.register_alias("amethyst_ore", "vox_worldblocks:amethyst_ore")
-core.register_alias("default:stone_with_amethyst", "vox_worldblocks:amethyst_ore")
-
-core.register_node("vox_worldblocks:opal_ore", {
- description = "Opal Ore",
- tiles = {"vox_opal_ore.png"},
- groups = {cracky = 2}
-})
-core.register_alias("opal_ore", "vox_worldblocks:opal_ore")
-core.register_alias("default:stone_with_opal", "vox_worldblocks:opal_ore")
-
-core.register_node("vox_worldblocks:onyx_ore", {
- description = "Onyx Ore",
- tiles = {"vox_onyx_ore.png"},
- groups = {cracky = 2}
-})
-core.register_alias("onyx_ore", "vox_worldblocks:onyx_ore")
-core.register_alias("default:stone_with_onyx", "vox_worldblocks:onyx_ore")
-
-core.register_node("vox_worldblocks:garnet_ore", {
- description = "Garnet Ore",
- tiles = {"vox_garnet_ore.png"},
- groups = {cracky = 2}
-})
-core.register_alias("garnet_ore", "vox_worldblocks:garnet_ore")
-core.register_alias("default:stone_with_garnet", "vox_worldblocks:garnet_ore")
-
-core.register_node("vox_worldblocks:peridot_ore", {
- description = "Peridot Ore",
- tiles = {"vox_peridot_ore.png"},
- groups = {cracky = 2}
-})
-core.register_alias("peridot_ore", "vox_worldblocks:peridot_ore")
-core.register_alias("default:stone_with_peridot", "vox_worldblocks:peridot_ore")
-
-core.register_node("vox_worldblocks:aquamarine_ore", {
- description = "Aquamarine Ore",
- tiles = {"vox_aquamarine_ore.png"},
- groups = {cracky = 2}
-})
-core.register_alias("aquamarine_ore", "vox_worldblocks:aquamarine_ore")
-core.register_alias("default:stone_with_aquamarine", "vox_worldblocks:aquamarine_ore")
-
-core.register_node("vox_worldblocks:citrine_ore", {
- description = "Citrine Ore",
- tiles = {"vox_citrine_ore.png"},
- groups = {cracky = 2}
-})
-core.register_alias("citrine_ore", "vox_worldblocks:citrine_ore")
-core.register_alias("default:stone_with_citrine", "vox_worldblocks:citrine_ore")
-
-core.register_node("vox_worldblocks:tourmaline_ore", {
- description = "Tourmaline Ore",
- tiles = {"vox_tourmaline_ore.png"},
- groups = {cracky = 2}
-})
-core.register_alias("tourmaline_ore", "vox_worldblocks:tourmaline_ore")
-core.register_alias("default:stone_with_tourmaline", "vox_worldblocks:tourmaline_ore")
-
-core.register_node("vox_worldblocks:zircon_ore", {
- description = "Zircon Ore",
- tiles = {"vox_zircon_ore.png"},
- groups = {cracky = 2}
-})
-core.register_alias("zircon_ore", "vox_worldblocks:zircon_ore")
-core.register_alias("default:stone_with_zircon", "vox_worldblocks:zircon_ore")
-
-core.register_node("vox_worldblocks:tanzanite_ore", {
- description = "Tanzanite Ore",
- tiles = {"vox_tanzanite_ore.png"},
- groups = {cracky = 2}
-})
-core.register_alias("tanzanite_ore", "vox_worldblocks:tanzanite_ore")
-core.register_alias("default:stone_with_tanzanite", "vox_worldblocks:tanzanite_ore")
-
-core.register_node("vox_worldblocks:spinel_ore", {
- description = "Spinel Ore",
- tiles = {"vox_spinel_ore.png"},
- groups = {cracky = 2}
-})
-core.register_alias("spinel_ore", "vox_worldblocks:spinel_ore")
-core.register_alias("default:stone_with_spinel", "vox_worldblocks:spinel_ore")
-
-core.register_node("vox_worldblocks:lapis_lazuli_ore", {
- description = "Lapis Lazuli Ore",
- tiles = {"vox_lapis_lazuli_ore.png"},
- groups = {cracky = 2}
-})
-core.register_alias("lapis_lazuli_ore", "vox_worldblocks:lapis_lazuli_ore")
-core.register_alias("default:stone_with_lapis_lazuli", "vox_worldblocks:lapis_lazuli_ore")
-
-core.register_node("vox_worldblocks:malachite_ore", {
- description = "Malachite Ore",
- tiles = {"vox_malachite_ore.png"},
- groups = {cracky = 2}
-})
-core.register_alias("malachite_ore", "vox_worldblocks:malachite_ore")
-core.register_alias("default:stone_with_malachite", "vox_worldblocks:malachite_ore")
-
-core.register_node("vox_worldblocks:azurite_ore", {
- description = "Azurite Ore",
- tiles = {"vox_azurite_ore.png"},
- groups = {cracky = 2}
-})
-core.register_alias("azurite_ore", "vox_worldblocks:azurite_ore")
-core.register_alias("default:stone_with_azurite", "vox_worldblocks:azurite_ore")
-
-core.register_node("vox_worldblocks:turquoise_ore", {
- description = "Turquoise Ore",
- tiles = {"vox_turquoise_ore.png"},
- groups = {cracky = 2}
-})
-core.register_alias("turquoise_ore", "vox_worldblocks:turquoise_ore")
-core.register_alias("default:stone_with_turquoise", "vox_worldblocks:turquoise_ore")
-
-core.register_node("vox_worldblocks:amber_ore", {
- description = "Amber Ore",
- tiles = {"vox_amber_ore.png"},
- groups = {cracky = 2}
-})
-core.register_alias("amber_ore", "vox_worldblocks:amber_ore")
-core.register_alias("default:stone_with_amber", "vox_worldblocks:amber_ore")
-
-core.register_node("vox_worldblocks:moonstone_ore", {
- description = "Moonstone Ore",
- tiles = {"vox_moonstone_ore.png"},
- groups = {cracky = 2}
-})
-core.register_alias("moonstone_ore", "vox_worldblocks:moonstone_ore")
-core.register_alias("default:stone_with_moonstone", "vox_worldblocks:moonstone_ore")
-
-core.register_node("vox_worldblocks:sunstone_ore", {
- description = "Sunstone Ore",
- tiles = {"vox_sunstone_ore.png"},
- groups = {cracky = 2}
-})
-core.register_alias("sunstone_ore", "vox_worldblocks:sunstone_ore")
-core.register_alias("default:stone_with_sunstone", "vox_worldblocks:sunstone_ore")
-
-core.register_node("vox_worldblocks:bloodstone_ore", {
- description = "Bloodstone Ore",
- tiles = {"vox_bloodstone_ore.png"},
- groups = {cracky = 2}
-})
-core.register_alias("bloodstone_ore", "vox_worldblocks:bloodstone_ore")
-core.register_alias("default:stone_with_bloodstone", "vox_worldblocks:bloodstone_ore")
-
-core.register_node("vox_worldblocks:agate_ore", {
- description = "Agate Ore",
- tiles = {"vox_agate_ore.png"},
- groups = {cracky = 2}
-})
-core.register_alias("agate_ore", "vox_worldblocks:agate_ore")
-core.register_alias("default:stone_with_agate", "vox_worldblocks:agate_ore")
-
-core.register_node("vox_worldblocks:jasper_ore", {
- description = "Jasper Ore",
- tiles = {"vox_jasper_ore.png"},
- groups = {cracky = 2}
-})
-core.register_alias("jasper_ore", "vox_worldblocks:jasper_ore")
-core.register_alias("default:stone_with_jasper", "vox_worldblocks:jasper_ore")
-
-core.register_node("vox_worldblocks:chalcedony_ore", {
- description = "Chalcedony Ore",
- tiles = {"vox_chalcedony_ore.png"},
- groups = {cracky = 2}
-})
-core.register_alias("chalcedony_ore", "vox_worldblocks:chalcedony_ore")
-core.register_alias("default:stone_with_chalcedony", "vox_worldblocks:chalcedony_ore")
-
-core.register_node("vox_worldblocks:chrysoprase_ore", {
- description = "Chrysoprase Ore",
- tiles = {"vox_chrysoprase_ore.png"},
- groups = {cracky = 2}
-})
-core.register_alias("chrysoprase_ore", "vox_worldblocks:chrysoprase_ore")
-core.register_alias("default:stone_with_chrysoprase", "vox_worldblocks:chrysoprase_ore")
-
-core.register_node("vox_worldblocks:carnelian_ore", {
- description = "Carnelian Ore",
- tiles = {"vox_carnelian_ore.png"},
- groups = {cracky = 2}
-})
-core.register_alias("carnelian_ore", "vox_worldblocks:carnelian_ore")
-core.register_alias("default:stone_with_carnelian", "vox_worldblocks:carnelian_ore")
-
-
--- ---------------------------- Blocks with Multiple Colors -------------------------- --
--- Register colored (fill in the blank) dynamically
-for color_name, color_hex in pairs(vox_colors) do
- -- Skip any non-color functions or keys
- if type(color_hex) == "string" and vox_colors.validate(color_hex) then
- -- Register Colored Stone variant
- core.register_node("vox_worldblocks:stone_" .. color_name:lower(), {
- description = color_name .. " Stone",
- tiles = {"vox_stone_colorize.png^[multiply:" .. color_hex},
- groups = {cracky = 2},
- })
- core.register_alias("stone_" .. color_name:lower(), "vox_worldblocks:stone_" .. color_name:lower())
-
- -- Register Terracotta variant
- core.register_node("vox_worldblocks:terracotta_" .. color_name:lower(), {
- description = color_name .. " Terracotta",
- tiles = {"vox_terracotta_colorize.png^[multiply:" .. color_hex},
- groups = {cracky = 2},
- })
- core.register_alias("terracotta_" .. color_name:lower(), "vox_worldblocks:terracotta_" .. color_name:lower())
- end
-end
-
--- ---------------------------- Dyeable Nodes -------------------------- --
--- List of dyeable things
-local dyeable_blocks = {"sand", "terracotta", "marble", "cobblestone", "sandstone"}
-
--- Debug: Check if dyeable_blocks is defined correctly
-assert(type(dyeable_blocks) == "table", "[vox_worldblocks] 'dyeable_blocks' must be a table!")
-
--- Register base things and their dyeable variants
-for _, base_block in pairs(dyeable_blocks) do
- if type(base_block) == "string" then
- vox_coloring.register_dyeable("vox_worldblocks", base_block)
- else
- minetest.log("error", "[vox_worldblocks] Invalid block name in dyeable_blocks: " .. tostring(base_block))
- end
-end
diff --git a/mods/ITEMS/vox_worldblocks/mod.conf b/mods/ITEMS/vox_worldblocks/mod.conf
deleted file mode 100644
index 7665977..0000000
--- a/mods/ITEMS/vox_worldblocks/mod.conf
+++ /dev/null
@@ -1,2 +0,0 @@
-name = vox_worldblocks
-description = Voxelis - worldblocks: General Overworld blocks
\ No newline at end of file
diff --git a/mods/MAPGEN/vox_mapgen_core/init.lua b/mods/MAPGEN/vox_mapgen_core/init.lua
deleted file mode 100644
index 600c52e..0000000
--- a/mods/MAPGEN/vox_mapgen_core/init.lua
+++ /dev/null
@@ -1,155 +0,0 @@
----------------------------------------------------------------------------
--- Voxelis - Voxel survival sandbox for Luanti
--- Copyright (C) 2024 Mad Star Studio LLC
---
--- This program is free software; you can redistribute it and/or modify
--- it under the terms of the GNU General Public License as published by
--- the Free Software Foundation; either version 3 of the License, or
--- (at your option) any later version.
---
--- You should have received a copy of the GNU General Public License along
--- with this program; if not, see .
----------------------------------------------------------------------------
-
-vox_mapgen_core = {}
-
--- -------------------------------------------------------------- --
--- Configuration: Noise Parameters
--- -------------------------------------------------------------- --
-local noise_heat = {
- offset = 50,
- scale = 50,
- spread = {x = 1000, y = 1000, z = 1000},
- seed = 1234,
- octaves = 3,
- persistence = 0.5,
- lacunarity = 2.0,
-}
-
-local noise_humidity = {
- offset = 50,
- scale = 50,
- spread = {x = 1000, y = 1000, z = 1000},
- seed = 5678,
- octaves = 3,
- persistence = 0.5,
- lacunarity = 2.0,
-}
-
-local noise_altitude = {
- offset = 50,
- scale = 50,
- spread = {x = 1000, y = 1000, z = 1000},
- seed = 91011,
- octaves = 3,
- persistence = 0.5,
- lacunarity = 2.0,
-}
-
-local biome_size_noise = {
- offset = 0,
- scale = 10,
- spread = {x = 2000, y = 2000, z = 2000},
- seed = 78910,
- octaves = 2,
- persistence = 0.4,
- lacunarity = 2.0,
-}
-
--- Apply noise parameters to the map generator
-minetest.register_on_mapgen_init(function(mapgen_params)
- minetest.set_mapgen_setting_noiseparams("heat", noise_heat, true)
- minetest.set_mapgen_setting_noiseparams("humidity", noise_humidity, true)
- minetest.set_mapgen_setting_noiseparams("altitude", noise_altitude, true)
-end)
-
--- -------------------------------------------------------------- --
--- Biome Assignment Logic
--- -------------------------------------------------------------- --
-local function get_biome(heat, humidity, altitude)
- if heat > 70 and humidity < 30 then
- return "desert"
- elseif heat > 70 and humidity > 50 then
- if altitude > 100 then
- return "volcanic_fields"
- end
- return "savannah"
- elseif heat > 50 and humidity > 70 then
- return "tropical_rainforest"
- elseif heat < 30 and humidity > 60 then
- return "boreal_forest"
- elseif heat < 10 and humidity > 40 then
- return "frozen_tundra"
- elseif altitude > 256 then
- return "jade_cliffs"
- else
- return "grassland" -- Default biome
- end
-end
-
-local function blend_biomes(current_biome, neighbor_biome, distance)
- if distance < 10 and math.random() < 0.5 then
- return neighbor_biome
- end
- return current_biome
-end
-
--- -------------------------------------------------------------- --
--- Map Generation Logic
--- -------------------------------------------------------------- --
-
-minetest.register_on_generated(function(minp, maxp, seed)
- local vm, emin, emax = minetest.get_mapgen_object("voxelmanip")
- local area = VoxelArea:new{MinEdge = emin, MaxEdge = emax}
- local data = vm:get_data()
-
- -- Generate noise maps
- local heat_map = minetest.get_perlin_map(noise_heat, {x = maxp.x - minp.x + 1, y = maxp.z - minp.z + 1})
- local humidity_map = minetest.get_perlin_map(noise_humidity, {x = maxp.x - minp.x + 1, y = maxp.z - minp.z + 1})
- local altitude_map = minetest.get_perlin_map(noise_altitude, {x = maxp.x - minp.x + 1, y = maxp.z - minp.z + 1})
- local biome_size_map = minetest.get_perlin_map(biome_size_noise, {x = maxp.x - minp.x + 1, y = maxp.z - minp.z + 1})
-
- local heat = heat_map:get_2d_map_flat({x = minp.x, y = minp.z})
- local humidity = humidity_map:get_2d_map_flat({x = minp.x, y = minp.z})
- local altitude = altitude_map:get_2d_map_flat({x = minp.x, y = minp.z})
- local biome_sizes = biome_size_map:get_2d_map_flat({x = minp.x, y = minp.z})
-
- for z = minp.z, maxp.z do
- for x = minp.x, maxp.x do
- local index2d = (z - minp.z) * (maxp.x - minp.x + 1) + (x - minp.x + 1)
- local h = heat[index2d]
- local hum = humidity[index2d]
- local alt = altitude[index2d]
- local biome_size = biome_sizes[index2d]
-
- local current_biome = get_biome(h, hum, alt)
- local neighbor_biome = get_biome(h + 5, hum + 5, alt)
- current_biome = blend_biomes(current_biome, neighbor_biome, biome_size)
-
- -- Fetch biome properties
- local node_top = core.get_biome_top_node(current_biome) or "vox_worldblocks:grass"
- local node_filler = core.get_biome_filler_node(current_biome) or "vox_worldblocks:dirt"
- local depth_top = core.get_biome_depth_top(current_biome) or 1
- local depth_filler = core.get_biome_depth_filler(current_biome) or 3
-
- for y = minp.y, maxp.y do
- local vi = area:index(x, y, z)
-
- if y == minp.y then
- data[vi] = minetest.get_content_id("vox_worldblocks:bedrock")
- elseif y < -10001 then
- data[vi] = minetest.get_content_id("air")
- elseif y <= minp.y + depth_top then
- data[vi] = minetest.get_content_id(node_top)
- elseif y <= minp.y + depth_top + depth_filler then
- data[vi] = minetest.get_content_id(node_filler)
- else
- data[vi] = minetest.get_content_id("air")
- end
- end
- end
- end
-
- vm:set_data(data)
- vm:write_to_map()
-end)
diff --git a/mods/MAPGEN/vox_mapgen_core/mod.conf b/mods/MAPGEN/vox_mapgen_core/mod.conf
deleted file mode 100644
index 0d87de4..0000000
--- a/mods/MAPGEN/vox_mapgen_core/mod.conf
+++ /dev/null
@@ -1,2 +0,0 @@
-name = vox_mapgen_core
-description = Voxelis - MapGen Core
\ No newline at end of file
diff --git a/mods/MAPGEN/vox_mapgen_core/ores.lua b/mods/MAPGEN/vox_mapgen_core/ores.lua
deleted file mode 100644
index a8271db..0000000
--- a/mods/MAPGEN/vox_mapgen_core/ores.lua
+++ /dev/null
@@ -1,7 +0,0 @@
-
-
--- Clay
-minetest.register_ore({
- ore_type = "blob",
- ore = "vox"
-})
\ No newline at end of file
diff --git a/mods/MAPGEN/vox_overworld/init.lua b/mods/MAPGEN/vox_overworld/init.lua
index 8611555..13e1300 100644
--- a/mods/MAPGEN/vox_overworld/init.lua
+++ b/mods/MAPGEN/vox_overworld/init.lua
@@ -13,7 +13,4 @@
vox_overworld = {}
-dofile(core.get_modpath(core.get_current_modname()) .. "/registry.lua")
-
--- Ensure vox_mapgen_core is loaded
---local mapgen_core = assert(vox_mapgen_core, "vox_mapgen_core must be loaded before vox_overworld")
+--dofile(core.get_modpath(core.get_current_modname()) .. "/registry.lua")
diff --git a/mods/MAPGEN/vox_overworld/registry.lua b/mods/MAPGEN/vox_overworld/registry.lua
index 1627d3c..aacb945 100644
--- a/mods/MAPGEN/vox_overworld/registry.lua
+++ b/mods/MAPGEN/vox_overworld/registry.lua
@@ -10,182 +10,88 @@
-- BIOMES
-- -------------------------------------------------------------- --
--- Helper Function: Register Default Biome Properties
-local function register_biome(params)
- -- Set defaults for biome parameters
- params.node_river_water = params.node_river_water or "vox_worldblocks:water_source"
- params.depth_riverbed = params.depth_riverbed or 2
- params.height_min = params.height_min or 1
- params.height_max = params.height_max or 256
- params.node_stone = params.node_stone or "vox_worldblocks:stone"
-
- core.register_biome(params)
-end
-
--- Grasslands
-register_biome({
+-- Grassland
+-- Typical Blocks: Grass Block, Dirt, Stone
+core.register_biome({
name = "grassland",
- node_top = "vox_worldblocks:grass",
+
+ --node_dust = "vox_main:dirt",
+ -- Node dropped onto upper surface after all else is generated
+
+ node_top = "vox_main:grass_block",
depth_top = 1,
- node_filler = "vox_worldblocks:dirt",
+ -- Node forming surface layer of biome and thickness of this layer
+
+ node_filler = "vox_main:dirt",
depth_filler = 3,
- heat_point = 35,
- humidity_point = 50,
-})
+ -- Node forming lower layer of biome and thickness of this layer
--- Desert
-register_biome({
- name = "desert",
- node_top = "vox_worldblocks:sand",
- depth_top = 2,
- node_filler = "vox_worldblocks:sandstone",
- depth_filler = 5,
- heat_point = 80,
- humidity_point = 20,
-})
+ node_stone = "vox_main:stone",
+ -- Node that replaces all stone nodes between roughly y_min and y_max.
--- Boreal Forest
-register_biome({
- name = "boreal_forest",
- node_top = "vox_worldblocks:grass",
- depth_top = 1,
- node_filler = "vox_worldblocks:dirt",
- depth_filler = 4,
- heat_point = 20,
- humidity_point = 60,
-})
+ node_water_top = "vox_main:sand",
+ depth_water_top = 10,
+ -- Node forming a surface layer in seawater with the defined thickness
--- Frozen Tundra
-register_biome({
- name = "frozen_tundra",
- node_top = "vox_worldblocks:snow",
- depth_top = 1,
- node_filler = "vox_worldblocks:packed_snow",
- depth_filler = 3,
- node_riverbed = "vox_worldblocks:ice",
- heat_point = 5,
- humidity_point = 40,
- height_max = 150,
-})
+ node_water = "",
+ -- Node that replaces all seawater nodes not in the surface layer
+
+ node_river_water = "vox_main:sand",
+ -- Node that replaces river water in mapgens that use
+ -- vox_main:river_water
+
+ node_riverbed = "vox_main:gravel",
+ depth_riverbed = 2,
+ -- Node placed under river water and thickness of this layer
+
+ node_cave_liquid = "vox_main:lava_source",
+ node_cave_liquid = {"vox_main:water_source", "vox_main:lava_source"},
+ -- Nodes placed inside 50% of the medium size caves.
+ -- Multiple nodes can be specified, each cave will use a randomly
+ -- chosen node from the list.
+ -- If this field is left out or 'nil', cave liquids fall back to
+ -- classic behavior of lava and water distributed using 3D noise.
+ -- For no cave liquid, specify "air".
+
+ node_dungeon = "vox_main:cobblestone",
+ -- Node used for primary dungeon structure.
+ -- If absent, dungeon nodes fall back to the 'mapgen_cobble' mapgen
+ -- alias, if that is also absent, dungeon nodes fall back to the biome
+ -- 'node_stone'.
+ -- If present, the following two nodes are also used.
+
+ node_dungeon_alt = "vox_main:mossycobble",
+ -- Node used for randomly-distributed alternative structure nodes.
+ -- If alternative structure nodes are not wanted leave this absent.
+
+ node_dungeon_stair = "vox_structural:cobblestone_stairs",
+ -- Node used for dungeon stairs.
+ -- If absent, stairs fall back to 'node_dungeon'.
+
+ y_max = 31000,
+ y_min = 1,
+ -- Upper and lower limits for biome.
+ -- Alternatively you can use xyz limits as shown below.
+
+ max_pos = {x = 31000, y = 128, z = 31000},
+ min_pos = {x = -31000, y = 9, z = -31000},
+ -- xyz limits for biome, an alternative to using 'y_min' and 'y_max'.
+ -- Biome is limited to a cuboid defined by these positions.
+ -- Any x, y or z field left undefined defaults to -31000 in 'min_pos' or
+ -- 31000 in 'max_pos'.
+
+ vertical_blend = 8,
--- Rocky Badlands
-register_biome({
- name = "rocky_badlands",
- node_top = "vox_worldblocks:stone",
- depth_top = 2,
- node_filler = "vox_worldblocks:gravel",
- depth_filler = 4,
heat_point = 50,
- humidity_point = 30,
- height_min = 50,
- height_max = 180,
-})
-
--- Savannah
-register_biome({
- name = "savannah",
- node_top = "vox_worldblocks:grass",
- depth_top = 1,
- node_filler = "vox_worldblocks:dirt",
- depth_filler = 3,
- heat_point = 70,
- humidity_point = 30,
- height_max = 512,
-})
-
--- Mangrove Forest
-register_biome({
- name = "mangrove_forest",
- node_top = "vox_worldblocks:grass",
- depth_top = 1,
- node_filler = "vox_worldblocks:mud",
- depth_filler = 3,
- node_riverbed = "vox_worldblocks:mud",
- heat_point = 75,
- humidity_point = 80,
- height_min = -5,
- height_max = 100,
-})
-
--- Volcanic Fields
-register_biome({
- name = "volcanic_fields",
- node_top = "vox_worldblocks:volcanic_rock",
- depth_top = 1,
- node_filler = "vox_worldblocks:basalt",
- depth_filler = 5,
- node_riverbed = "vox_worldblocks:lava_source",
- node_river_water = "vox_worldblocks:lava_source",
- heat_point = 90,
- humidity_point = 10,
- height_min = 50,
- height_max = 512,
-})
-
--- Salt Flats
-register_biome({
- name = "salt_flats",
- node_top = "vox_worldblocks:salt_crystal",
- depth_top = 2,
- node_filler = "vox_worldblocks:sand",
- depth_filler = 3,
- heat_point = 80,
- humidity_point = 20,
- height_max = 100,
-})
-
--- Jade Cliffs
-register_biome({
- name = "jade_cliffs",
- node_top = "vox_worldblocks:grass",
- depth_top = 1,
- node_filler = "vox_worldblocks:stone",
- depth_filler = 5,
- node_stone = "vox_worldblocks:granite",
- node_riverbed = "vox_worldblocks:gravel",
- heat_point = 55,
- humidity_point = 65,
- height_min = 128,
- height_max = 1024,
-})
-
--- Painted Canyons
-register_biome({
- name = "painted_canyons",
- node_top = "vox_worldblocks:terracotta_red",
- depth_top = 1,
- node_filler = "vox_worldblocks:terracotta_orange",
- depth_filler = 4,
- node_riverbed = "vox_worldblocks:terracotta_yellow",
- heat_point = 65,
- humidity_point = 25,
- height_min = 10,
- height_max = 256,
-})
-
--- Iceberg Fields
-register_biome({
- name = "iceberg_fields",
- node_top = "vox_worldblocks:ice",
- depth_top = 1,
- node_filler = "vox_worldblocks:snow",
- depth_filler = 3,
- node_riverbed = "vox_worldblocks:ice",
- heat_point = -10,
humidity_point = 50,
- height_min = -100,
- height_max = 100,
-})
+ -- Characteristic temperature and humidity for the biome.
+ -- These values create 'biome points' on a voronoi diagram with heat and
+ -- humidity as axes. The resulting voronoi cells determine the
+ -- distribution of the biomes.
+ -- Heat and humidity have average values of 50, vary mostly between
+ -- 0 and 100 but can exceed these values.
--- Black Sand Beach
-register_biome({
- name = "black_sand_beach",
- node_top = "vox_worldblocks:basalt",
- depth_top = 2,
- node_filler = "vox_worldblocks:sand",
- depth_filler = 3,
- heat_point = 65,
- humidity_point = 80,
- height_min = -5,
- height_max = 5,
-})
+ weight = 1.0,
+ -- Relative weight of the biome in the Voronoi diagram.
+ -- A value of 0 (or less) is ignored and equivalent to 1.0.
+});
\ No newline at end of file
diff --git a/mods/MAPGEN/vox_terrain_features/init.lua b/mods/MAPGEN/vox_terrain_features/init.lua
deleted file mode 100644
index 8ff0487..0000000
--- a/mods/MAPGEN/vox_terrain_features/init.lua
+++ /dev/null
@@ -1,14 +0,0 @@
----------------------------------------------------------------------------
--- Voxelis - Voxel survival sandbox for Luanti
--- Copyright (C) 2024 Mad Star Studio LLC
---
--- This program is free software; you can redistribute it and/or modify
--- it under the terms of the GNU General Public License as published by
--- the Free Software Foundation; either version 3 of the License, or
--- (at your option) any later version.
---
--- You should have received a copy of the GNU General Public License along
--- with this program; if not, see .
----------------------------------------------------------------------------
-
-vox_terrain_features = { }
\ No newline at end of file
diff --git a/mods/MAPGEN/vox_terrain_features/mod.conf b/mods/MAPGEN/vox_terrain_features/mod.conf
deleted file mode 100644
index fa2419f..0000000
--- a/mods/MAPGEN/vox_terrain_features/mod.conf
+++ /dev/null
@@ -1,2 +0,0 @@
-name = vox_terrain_features
-description = Voxelis - Terrain Features
\ No newline at end of file