diff --git a/mods/ITEMS/mcl_ocean/init.lua b/mods/ITEMS/mcl_ocean/init.lua index 90626cfa9..7b3438775 100644 --- a/mods/ITEMS/mcl_ocean/init.lua +++ b/mods/ITEMS/mcl_ocean/init.lua @@ -115,3 +115,171 @@ minetest.register_craft({ } }) +local corals = { + { "tube", S("Tube Coral Block"), S("Dead Tube Coral Block"), S("Tube Coral"), S("Dead Tube Coral"), S("Tube Coral Fan"), S("Dead Tube Coral Fan") }, + { "brain", S("Brain Coral Block"), S("Dead Brain Coral Block"), S("Brain Coral"), S("Dead Brain Coral"), S("Brain Coral Fan"), S("Dead Brain Coral Fan") }, + { "bubble", S("Bubble Coral Block"), S("Dead Bubble Coral Block"), S("Bubble Coral"), S("Dead Bubble Coral"), S("Bubble Coral Fan"), S("Dead Bubble Coral Fan")}, + { "fire", S("Fire Coral Block"), S("Dead Fire Coral Block"), S("Fire Coral"), S("Dead Fire Coral"), S("Fire Coral Fan"), S("Dead Fire Coral Fan") }, + { "horn", S("Horn Coral Block"), S("Dead Horn Coral Block"), S("Horn Coral"), S("Dead Horn Coral"), S("Horn Coral Fan"), S("Dead Horn Coral Fan") }, +} + +local function coral_on_place(itemstack, placer, pointed_thing) + if pointed_thing.type ~= "node" or not placer then + return itemstack + end + + local player_name = placer:get_player_name() + local pos_under = pointed_thing.under + local pos_above = pointed_thing.above + local node_under = minetest.get_node(pos_under) + local def_under = minetest.registered_nodes[node_under.name] + + if def_under and def_under.on_rightclick and not placer:get_player_control().sneak then + return def_under.on_rightclick(pos_under, node_under.name, + placer, itemstack, pointed_thing) or itemstack + end + + local g_block = minetest.get_item_group(node_under.name, "coral_block") + local g_coral = minetest.get_item_group(itemstack:get_name(), "coral") + local g_species_block = minetest.get_item_group(node_under.name, "coral_species") + local g_species_plant = minetest.get_item_group(itemstack:get_name(), "coral_species") + + -- Placement rules: + -- Coral plant can only be placed on top of a matching coral block inside a water source. + -- Note: It's intentional only for normal water (not river water) + if g_block == 0 or (g_coral ~= g_block) or (g_species_block ~= g_species_plant) or + minetest.get_node(pos_above).name ~= "mcl_core:water_source" then + return itemstack + end + + if minetest.is_protected(pos_under, player_name) or + minetest.is_protected(pos_above, player_name) then + minetest.log("action", player_name + .. " tried to place " .. itemstack:get_name() + .. " at protected position " + .. minetest.pos_to_string(pos_under)) + minetest.record_protection_violation(pos_under, player_name) + return itemstack + end + + node_under.name = itemstack:get_name() + node_under.param2 = minetest.registered_items[itemstack:get_name()].place_param2 + if node_under.param2 < 8 and math.random(1,2) == 1 then + -- Random horizontal displacement + node_under.param2 = node_under.param2 + 8 + end + minetest.set_node(pos_under, node_under) + if not (minetest.settings:get_bool("creative_mode")) then + itemstack:take_item() + end + + return itemstack +end + +for c=1, #corals do + local id = corals[c][1] + -- Coral Block + minetest.register_node("mcl_ocean:"..id.."_coral_block", { + description = corals[c][2], + tiles = { "mcl_ocean_"..id.."_coral_block.png" }, + groups = { pickaxey = 1, building_block = 1, coral=1, coral_block=1, coral_species=c, }, + sounds = mcl_sounds.node_sound_dirt_defaults(), + drop = "mcl_ocean:dead_"..id.."_coral_block", + _mcl_hardness = 1.5, + _mcl_blast_resistance = 30, + }) + minetest.register_node("mcl_ocean:dead_"..id.."_coral_block", { + description = corals[c][3], + tiles = { "mcl_ocean_dead_"..id.."_coral_block.png" }, + groups = { pickaxey = 1, building_block = 1, coral=2, coral_block=2, coral_species=c, }, + sounds = mcl_sounds.node_sound_dirt_defaults(), + _mcl_hardness = 1.5, + _mcl_blast_resistance = 30, + }) + + -- Coral + minetest.register_node("mcl_ocean:"..id.."_coral", { + description = corals[c][4], + drawtype = "plantlike_rooted", + paramtype = "light", + paramtype2 = "meshoptions", + place_param2 = 1, + tiles = { "mcl_ocean_"..id.."_coral_block.png" }, + special_tiles = { { name = "mcl_ocean_"..id.."_coral.png" } }, + inventory_image = "mcl_ocean_"..id.."_coral.png", + groups = { dig_immediate = 3, deco_block = 1, coral=1, coral_plant=1, coral_species=c, }, + sounds = mcl_sounds.node_sound_leaves_defaults(), + drop = "mcl_ocean:dead_"..id.."_coral", + node_placement_prediction = "", + node_dig_prediction = "mcl_ocean:"..id.."_coral_block", + on_place = coral_on_place, + after_destruct = function(pos) + minetest.set_node(pos, {name="mcl_ocean:"..id.."_coral_block"}) + end, + _mcl_hardness = 0, + _mcl_blast_resistance = 0, + }) + minetest.register_node("mcl_ocean:dead_"..id.."_coral", { + description = corals[c][5], + drawtype = "plantlike_rooted", + paramtype = "light", + paramtype2 = "meshoptions", + place_param2 = 1, + tiles = { "mcl_ocean_dead_"..id.."_coral_block.png" }, + special_tiles = { { name = "mcl_ocean_dead_"..id.."_coral.png" } }, + inventory_image = "mcl_ocean_dead_"..id.."_coral.png", + groups = { dig_immediate = 3, deco_block = 1, coral=2, coral_plant=2, coral_species=c, }, + sounds = mcl_sounds.node_sound_leaves_defaults(), + node_placement_prediction = "", + node_dig_prediction = "mcl_ocean:dead_"..id.."_coral_block", + on_place = coral_on_place, + after_destruct = function(pos) + minetest.set_node(pos, {name="mcl_ocean:dead_"..id.."_coral_block"}) + end, + _mcl_hardness = 0, + _mcl_blast_resistance = 0, + }) + + -- Coral Fan + minetest.register_node("mcl_ocean:"..id.."_coral_fan", { + description = corals[c][6], + drawtype = "plantlike_rooted", + paramtype = "light", + paramtype2 = "meshoptions", + place_param2 = 4, + tiles = { "mcl_ocean_"..id.."_coral_block.png" }, + special_tiles = { { name = "mcl_ocean_"..id.."_coral_fan.png" } }, + inventory_image = "mcl_ocean_"..id.."_coral_fan.png", + groups = { dig_immediate = 3, deco_block = 1, coral=1, coral_fan=1, coral_species=c, }, + sounds = mcl_sounds.node_sound_leaves_defaults(), + drop = "mcl_ocean:dead_"..id.."_coral_fan", + node_placement_prediction = "", + node_dig_prediction = "mcl_ocean:"..id.."_coral_block", + on_place = coral_on_place, + after_destruct = function(pos) + minetest.set_node(pos, {name="mcl_ocean:"..id.."_coral_block"}) + end, + _mcl_hardness = 0, + _mcl_blast_resistance = 0, + }) + minetest.register_node("mcl_ocean:dead_"..id.."_coral_fan", { + description = corals[c][7], + drawtype = "plantlike_rooted", + paramtype = "light", + paramtype2 = "meshoptions", + place_param2 = 4, + tiles = { "mcl_ocean_dead_"..id.."_coral_block.png" }, + special_tiles = { { name = "mcl_ocean_dead_"..id.."_coral_fan.png" } }, + inventory_image = "mcl_ocean_dead_"..id.."_coral_fan.png", + groups = { dig_immediate = 3, deco_block = 1, coral=2, coral_fan=2, coral_species=c, }, + sounds = mcl_sounds.node_sound_leaves_defaults(), + node_placement_prediction = "", + node_dig_prediction = "mcl_ocean:dead_"..id.."_coral_block", + on_place = coral_on_place, + after_destruct = function(pos) + minetest.set_node(pos, {name="mcl_ocean:dead_"..id.."_coral_block"}) + end, + _mcl_hardness = 0, + _mcl_blast_resistance = 0, + }) +end diff --git a/mods/ITEMS/mcl_ocean/textures/mcl_ocean_brain_coral.png b/mods/ITEMS/mcl_ocean/textures/mcl_ocean_brain_coral.png new file mode 100644 index 000000000..60a4c53da Binary files /dev/null and b/mods/ITEMS/mcl_ocean/textures/mcl_ocean_brain_coral.png differ diff --git a/mods/ITEMS/mcl_ocean/textures/mcl_ocean_brain_coral_block.png b/mods/ITEMS/mcl_ocean/textures/mcl_ocean_brain_coral_block.png new file mode 100644 index 000000000..a9a508be8 Binary files /dev/null and b/mods/ITEMS/mcl_ocean/textures/mcl_ocean_brain_coral_block.png differ diff --git a/mods/ITEMS/mcl_ocean/textures/mcl_ocean_brain_coral_fan.png b/mods/ITEMS/mcl_ocean/textures/mcl_ocean_brain_coral_fan.png new file mode 100644 index 000000000..0ffe520e0 Binary files /dev/null and b/mods/ITEMS/mcl_ocean/textures/mcl_ocean_brain_coral_fan.png differ diff --git a/mods/ITEMS/mcl_ocean/textures/mcl_ocean_bubble_coral.png b/mods/ITEMS/mcl_ocean/textures/mcl_ocean_bubble_coral.png new file mode 100644 index 000000000..905ba2f7c Binary files /dev/null and b/mods/ITEMS/mcl_ocean/textures/mcl_ocean_bubble_coral.png differ diff --git a/mods/ITEMS/mcl_ocean/textures/mcl_ocean_bubble_coral_block.png b/mods/ITEMS/mcl_ocean/textures/mcl_ocean_bubble_coral_block.png new file mode 100644 index 000000000..551975513 Binary files /dev/null and b/mods/ITEMS/mcl_ocean/textures/mcl_ocean_bubble_coral_block.png differ diff --git a/mods/ITEMS/mcl_ocean/textures/mcl_ocean_bubble_coral_fan.png b/mods/ITEMS/mcl_ocean/textures/mcl_ocean_bubble_coral_fan.png new file mode 100644 index 000000000..c9a49f45f Binary files /dev/null and b/mods/ITEMS/mcl_ocean/textures/mcl_ocean_bubble_coral_fan.png differ diff --git a/mods/ITEMS/mcl_ocean/textures/mcl_ocean_dead_brain_coral.png b/mods/ITEMS/mcl_ocean/textures/mcl_ocean_dead_brain_coral.png new file mode 100644 index 000000000..8d8068200 Binary files /dev/null and b/mods/ITEMS/mcl_ocean/textures/mcl_ocean_dead_brain_coral.png differ diff --git a/mods/ITEMS/mcl_ocean/textures/mcl_ocean_dead_brain_coral_block.png b/mods/ITEMS/mcl_ocean/textures/mcl_ocean_dead_brain_coral_block.png new file mode 100644 index 000000000..2938880ef Binary files /dev/null and b/mods/ITEMS/mcl_ocean/textures/mcl_ocean_dead_brain_coral_block.png differ diff --git a/mods/ITEMS/mcl_ocean/textures/mcl_ocean_dead_brain_coral_fan.png b/mods/ITEMS/mcl_ocean/textures/mcl_ocean_dead_brain_coral_fan.png new file mode 100644 index 000000000..b297894e8 Binary files /dev/null and b/mods/ITEMS/mcl_ocean/textures/mcl_ocean_dead_brain_coral_fan.png differ diff --git a/mods/ITEMS/mcl_ocean/textures/mcl_ocean_dead_bubble_coral.png b/mods/ITEMS/mcl_ocean/textures/mcl_ocean_dead_bubble_coral.png new file mode 100644 index 000000000..0d69e128c Binary files /dev/null and b/mods/ITEMS/mcl_ocean/textures/mcl_ocean_dead_bubble_coral.png differ diff --git a/mods/ITEMS/mcl_ocean/textures/mcl_ocean_dead_bubble_coral_block.png b/mods/ITEMS/mcl_ocean/textures/mcl_ocean_dead_bubble_coral_block.png new file mode 100644 index 000000000..86333fb47 Binary files /dev/null and b/mods/ITEMS/mcl_ocean/textures/mcl_ocean_dead_bubble_coral_block.png differ diff --git a/mods/ITEMS/mcl_ocean/textures/mcl_ocean_dead_bubble_coral_fan.png b/mods/ITEMS/mcl_ocean/textures/mcl_ocean_dead_bubble_coral_fan.png new file mode 100644 index 000000000..0b11adc31 Binary files /dev/null and b/mods/ITEMS/mcl_ocean/textures/mcl_ocean_dead_bubble_coral_fan.png differ diff --git a/mods/ITEMS/mcl_ocean/textures/mcl_ocean_dead_fire_coral.png b/mods/ITEMS/mcl_ocean/textures/mcl_ocean_dead_fire_coral.png new file mode 100644 index 000000000..c050ecfea Binary files /dev/null and b/mods/ITEMS/mcl_ocean/textures/mcl_ocean_dead_fire_coral.png differ diff --git a/mods/ITEMS/mcl_ocean/textures/mcl_ocean_dead_fire_coral_block.png b/mods/ITEMS/mcl_ocean/textures/mcl_ocean_dead_fire_coral_block.png new file mode 100644 index 000000000..836ab2a7f Binary files /dev/null and b/mods/ITEMS/mcl_ocean/textures/mcl_ocean_dead_fire_coral_block.png differ diff --git a/mods/ITEMS/mcl_ocean/textures/mcl_ocean_dead_fire_coral_fan.png b/mods/ITEMS/mcl_ocean/textures/mcl_ocean_dead_fire_coral_fan.png new file mode 100644 index 000000000..63c0806b9 Binary files /dev/null and b/mods/ITEMS/mcl_ocean/textures/mcl_ocean_dead_fire_coral_fan.png differ diff --git a/mods/ITEMS/mcl_ocean/textures/mcl_ocean_dead_horn_coral.png b/mods/ITEMS/mcl_ocean/textures/mcl_ocean_dead_horn_coral.png new file mode 100644 index 000000000..c0ede515d Binary files /dev/null and b/mods/ITEMS/mcl_ocean/textures/mcl_ocean_dead_horn_coral.png differ diff --git a/mods/ITEMS/mcl_ocean/textures/mcl_ocean_dead_horn_coral_block.png b/mods/ITEMS/mcl_ocean/textures/mcl_ocean_dead_horn_coral_block.png new file mode 100644 index 000000000..8f37cd1e3 Binary files /dev/null and b/mods/ITEMS/mcl_ocean/textures/mcl_ocean_dead_horn_coral_block.png differ diff --git a/mods/ITEMS/mcl_ocean/textures/mcl_ocean_dead_horn_coral_fan.png b/mods/ITEMS/mcl_ocean/textures/mcl_ocean_dead_horn_coral_fan.png new file mode 100644 index 000000000..161c0ec7b Binary files /dev/null and b/mods/ITEMS/mcl_ocean/textures/mcl_ocean_dead_horn_coral_fan.png differ diff --git a/mods/ITEMS/mcl_ocean/textures/mcl_ocean_dead_tube_coral.png b/mods/ITEMS/mcl_ocean/textures/mcl_ocean_dead_tube_coral.png new file mode 100644 index 000000000..d1bef3abd Binary files /dev/null and b/mods/ITEMS/mcl_ocean/textures/mcl_ocean_dead_tube_coral.png differ diff --git a/mods/ITEMS/mcl_ocean/textures/mcl_ocean_dead_tube_coral_block.png b/mods/ITEMS/mcl_ocean/textures/mcl_ocean_dead_tube_coral_block.png new file mode 100644 index 000000000..eb0e0da61 Binary files /dev/null and b/mods/ITEMS/mcl_ocean/textures/mcl_ocean_dead_tube_coral_block.png differ diff --git a/mods/ITEMS/mcl_ocean/textures/mcl_ocean_dead_tube_coral_fan.png b/mods/ITEMS/mcl_ocean/textures/mcl_ocean_dead_tube_coral_fan.png new file mode 100644 index 000000000..5d0500d18 Binary files /dev/null and b/mods/ITEMS/mcl_ocean/textures/mcl_ocean_dead_tube_coral_fan.png differ diff --git a/mods/ITEMS/mcl_ocean/textures/mcl_ocean_fire_coral.png b/mods/ITEMS/mcl_ocean/textures/mcl_ocean_fire_coral.png new file mode 100644 index 000000000..e7958d50c Binary files /dev/null and b/mods/ITEMS/mcl_ocean/textures/mcl_ocean_fire_coral.png differ diff --git a/mods/ITEMS/mcl_ocean/textures/mcl_ocean_fire_coral_block.png b/mods/ITEMS/mcl_ocean/textures/mcl_ocean_fire_coral_block.png new file mode 100644 index 000000000..e562b024e Binary files /dev/null and b/mods/ITEMS/mcl_ocean/textures/mcl_ocean_fire_coral_block.png differ diff --git a/mods/ITEMS/mcl_ocean/textures/mcl_ocean_fire_coral_fan.png b/mods/ITEMS/mcl_ocean/textures/mcl_ocean_fire_coral_fan.png new file mode 100644 index 000000000..412e97f8e Binary files /dev/null and b/mods/ITEMS/mcl_ocean/textures/mcl_ocean_fire_coral_fan.png differ diff --git a/mods/ITEMS/mcl_ocean/textures/mcl_ocean_horn_coral.png b/mods/ITEMS/mcl_ocean/textures/mcl_ocean_horn_coral.png new file mode 100644 index 000000000..8f3227618 Binary files /dev/null and b/mods/ITEMS/mcl_ocean/textures/mcl_ocean_horn_coral.png differ diff --git a/mods/ITEMS/mcl_ocean/textures/mcl_ocean_horn_coral_block.png b/mods/ITEMS/mcl_ocean/textures/mcl_ocean_horn_coral_block.png new file mode 100644 index 000000000..c56a1344e Binary files /dev/null and b/mods/ITEMS/mcl_ocean/textures/mcl_ocean_horn_coral_block.png differ diff --git a/mods/ITEMS/mcl_ocean/textures/mcl_ocean_horn_coral_fan.png b/mods/ITEMS/mcl_ocean/textures/mcl_ocean_horn_coral_fan.png new file mode 100644 index 000000000..63e7d12ea Binary files /dev/null and b/mods/ITEMS/mcl_ocean/textures/mcl_ocean_horn_coral_fan.png differ diff --git a/mods/ITEMS/mcl_ocean/textures/mcl_ocean_tube_coral.png b/mods/ITEMS/mcl_ocean/textures/mcl_ocean_tube_coral.png new file mode 100644 index 000000000..63cf864c7 Binary files /dev/null and b/mods/ITEMS/mcl_ocean/textures/mcl_ocean_tube_coral.png differ diff --git a/mods/ITEMS/mcl_ocean/textures/mcl_ocean_tube_coral_block.png b/mods/ITEMS/mcl_ocean/textures/mcl_ocean_tube_coral_block.png new file mode 100644 index 000000000..016888db3 Binary files /dev/null and b/mods/ITEMS/mcl_ocean/textures/mcl_ocean_tube_coral_block.png differ diff --git a/mods/ITEMS/mcl_ocean/textures/mcl_ocean_tube_coral_fan.png b/mods/ITEMS/mcl_ocean/textures/mcl_ocean_tube_coral_fan.png new file mode 100644 index 000000000..7d055a7bd Binary files /dev/null and b/mods/ITEMS/mcl_ocean/textures/mcl_ocean_tube_coral_fan.png differ