From 16d79996c0f9183e5c1d7a12402e99863576f249 Mon Sep 17 00:00:00 2001 From: debian044 <78425255+debian044@users.noreply.github.com> Date: Tue, 26 Apr 2022 22:13:11 +0200 Subject: [PATCH 01/18] Add blackstone via cp -r & git add * ^^ --- mods/ITEMS/mcl_blackstone/README.md | 13 + mods/ITEMS/mcl_blackstone/changelogs.md | 30 + mods/ITEMS/mcl_blackstone/depends.txt | 7 + mods/ITEMS/mcl_blackstone/init.lua | 886 ++++++++++++++++++ .../locale/mcl_blackstone.de.tr | 28 + mods/ITEMS/mcl_blackstone/locale/template.txt | 23 + mods/ITEMS/mcl_blackstone/mod.conf | 1 + .../models/mcl_torches_torch_floor.obj | 29 + .../models/mcl_torches_torch_wall.obj | 29 + .../ITEMS/mcl_blackstone/textures/lantern.png | Bin 0 -> 1328 bytes .../textures/lantern_bottom.png | Bin 0 -> 1209 bytes .../mcl_blackstone/textures/lantern_top.png | Bin 0 -> 1043 bytes .../textures/mcl_backstone_quartz_bricks.png | Bin 0 -> 1719 bytes .../textures/mcl_blackstone.png | Bin 0 -> 1656 bytes .../textures/mcl_blackstone_basalt_side.png | Bin 0 -> 1752 bytes .../mcl_blackstone_basalt_side_polished.png | Bin 0 -> 1506 bytes .../textures/mcl_blackstone_basalt_smooth.png | Bin 0 -> 1591 bytes .../textures/mcl_blackstone_basalt_top.png | Bin 0 -> 1950 bytes .../mcl_blackstone_basalt_top_polished.png | Bin 0 -> 1914 bytes .../textures/mcl_blackstone_chain.png | Bin 0 -> 1780 bytes .../mcl_blackstone_chiseled_polished.png | Bin 0 -> 1840 bytes .../textures/mcl_blackstone_gilded_side.png | Bin 0 -> 2199 bytes .../textures/mcl_blackstone_polished.png | Bin 0 -> 1760 bytes .../mcl_blackstone_polished_bricks.png | Bin 0 -> 1769 bytes .../textures/mcl_blackstone_soul_soil.png | Bin 0 -> 1748 bytes .../mcl_nether_nether_wart_block_blue.png | Bin 0 -> 1618 bytes .../textures/soul_fire_basic_flame.png | Bin 0 -> 1563 bytes .../soul_fire_basic_flame_animated.png | Bin 0 -> 7190 bytes ...soul_mcl_burning_entity_flame_animated.png | Bin 0 -> 7191 bytes .../soul_mcl_burning_hud_flame_animated.png | Bin 0 -> 7191 bytes .../textures/soul_torch_on_floor.png | Bin 0 -> 1190 bytes .../textures/soul_torch_on_floor_animated.png | Bin 0 -> 1808 bytes 32 files changed, 1046 insertions(+) create mode 100644 mods/ITEMS/mcl_blackstone/README.md create mode 100644 mods/ITEMS/mcl_blackstone/changelogs.md create mode 100644 mods/ITEMS/mcl_blackstone/depends.txt create mode 100644 mods/ITEMS/mcl_blackstone/init.lua create mode 100644 mods/ITEMS/mcl_blackstone/locale/mcl_blackstone.de.tr create mode 100644 mods/ITEMS/mcl_blackstone/locale/template.txt create mode 100644 mods/ITEMS/mcl_blackstone/mod.conf create mode 100644 mods/ITEMS/mcl_blackstone/models/mcl_torches_torch_floor.obj create mode 100644 mods/ITEMS/mcl_blackstone/models/mcl_torches_torch_wall.obj create mode 100644 mods/ITEMS/mcl_blackstone/textures/lantern.png create mode 100644 mods/ITEMS/mcl_blackstone/textures/lantern_bottom.png create mode 100644 mods/ITEMS/mcl_blackstone/textures/lantern_top.png create mode 100644 mods/ITEMS/mcl_blackstone/textures/mcl_backstone_quartz_bricks.png create mode 100644 mods/ITEMS/mcl_blackstone/textures/mcl_blackstone.png create mode 100644 mods/ITEMS/mcl_blackstone/textures/mcl_blackstone_basalt_side.png create mode 100644 mods/ITEMS/mcl_blackstone/textures/mcl_blackstone_basalt_side_polished.png create mode 100644 mods/ITEMS/mcl_blackstone/textures/mcl_blackstone_basalt_smooth.png create mode 100644 mods/ITEMS/mcl_blackstone/textures/mcl_blackstone_basalt_top.png create mode 100644 mods/ITEMS/mcl_blackstone/textures/mcl_blackstone_basalt_top_polished.png create mode 100644 mods/ITEMS/mcl_blackstone/textures/mcl_blackstone_chain.png create mode 100644 mods/ITEMS/mcl_blackstone/textures/mcl_blackstone_chiseled_polished.png create mode 100644 mods/ITEMS/mcl_blackstone/textures/mcl_blackstone_gilded_side.png create mode 100644 mods/ITEMS/mcl_blackstone/textures/mcl_blackstone_polished.png create mode 100644 mods/ITEMS/mcl_blackstone/textures/mcl_blackstone_polished_bricks.png create mode 100644 mods/ITEMS/mcl_blackstone/textures/mcl_blackstone_soul_soil.png create mode 100644 mods/ITEMS/mcl_blackstone/textures/mcl_nether_nether_wart_block_blue.png create mode 100644 mods/ITEMS/mcl_blackstone/textures/soul_fire_basic_flame.png create mode 100644 mods/ITEMS/mcl_blackstone/textures/soul_fire_basic_flame_animated.png create mode 100644 mods/ITEMS/mcl_blackstone/textures/soul_mcl_burning_entity_flame_animated.png create mode 100644 mods/ITEMS/mcl_blackstone/textures/soul_mcl_burning_hud_flame_animated.png create mode 100644 mods/ITEMS/mcl_blackstone/textures/soul_torch_on_floor.png create mode 100644 mods/ITEMS/mcl_blackstone/textures/soul_torch_on_floor_animated.png diff --git a/mods/ITEMS/mcl_blackstone/README.md b/mods/ITEMS/mcl_blackstone/README.md new file mode 100644 index 000000000..11acb450e --- /dev/null +++ b/mods/ITEMS/mcl_blackstone/README.md @@ -0,0 +1,13 @@ +# Blackstone Mod + +This mod is made for the Minetest Subgame Mineclone2. + +It adds new Blocks: Blackstone, Basalt, Soul Fire, Soul Torch etc. + +## Version: + +Its version 1.0.2 + +## License + +CC BY-SA 4.0 diff --git a/mods/ITEMS/mcl_blackstone/changelogs.md b/mods/ITEMS/mcl_blackstone/changelogs.md new file mode 100644 index 000000000..fc7a4ce11 --- /dev/null +++ b/mods/ITEMS/mcl_blackstone/changelogs.md @@ -0,0 +1,30 @@ +# Changelogs + + + + + +## Blocks + +I added the new Polished Basalt Block and salbs and strairs for every kind of Blackstone. + +Also new is the Blackstone Wall. + +New Soul soil, Soul Fire and Soul Fire Torches/Lanterns. + +Added Smooth Basalt. + +## Generating + +Basalt and Blackstone now generate in the Nether naturaly. + +Nether Gold Ore is gernerating in the Nether. + + + + +## Bugfixes + +I fixed a lot of Bugs. + + diff --git a/mods/ITEMS/mcl_blackstone/depends.txt b/mods/ITEMS/mcl_blackstone/depends.txt new file mode 100644 index 000000000..c1ada2d4e --- /dev/null +++ b/mods/ITEMS/mcl_blackstone/depends.txt @@ -0,0 +1,7 @@ +mcl_core +screwdriver +mcl_stairs +mclx_stairs +mcl_walls +mclx_fences +mcl_torches diff --git a/mods/ITEMS/mcl_blackstone/init.lua b/mods/ITEMS/mcl_blackstone/init.lua new file mode 100644 index 000000000..da0646bf8 --- /dev/null +++ b/mods/ITEMS/mcl_blackstone/init.lua @@ -0,0 +1,886 @@ +local S = minetest.get_translator("mcl_blackstone") +local N = function(s) return s end +local LIGHT_TORCH = 10 + +stairs = {} + +local fire_help, eternal_fire_help +if fire_enabled then + fire_help = S("Fire is a damaging and destructive but short-lived kind of block. It will destroy and spread towards near flammable blocks, but fire will disappear when there is nothing to burn left. It will be extinguished by nearby water and rain. Fire can be destroyed safely by punching it, but it is hurtful if you stand directly in it. If a fire is started above netherrack or a magma block, it will immediately turn into an eternal fire.") +else + fire_help = S("Fire is a damaging but non-destructive short-lived kind of block. It will disappear when there is no flammable block around. Fire does not destroy blocks, at least not in this world. It will be extinguished by nearby water and rain. Fire can be destroyed safely by punching it, but it is hurtful if you stand directly in it. If a fire is started above netherrack or a magma block, it will immediately turn into an eternal fire.") +end + +if fire_enabled then + eternal_fire_help = S("Eternal fire is a damaging block that might create more fire. It will create fire around it when flammable blocks are nearby. Eternal fire can be extinguished by punches and nearby water blocks. Other than (normal) fire, eternal fire does not get extinguished on its own and also continues to burn under rain. Punching eternal fire is safe, but it hurts if you stand inside.") +else + eternal_fire_help = S("Eternal fire is a damaging block. Eternal fire can be extinguished by punches and nearby water blocks. Other than (normal) fire, eternal fire does not get extinguished on its own and also continues to burn under rain. Punching eternal fire is safe, but it hurts if you stand inside.") +end + + +local fire_death_messages = { + N("@1 has been cooked crisp."), + N("@1 felt the burn."), + N("@1 died in the flames."), + N("@1 died in a fire."), +} + +--nodes + + + + + + +local mod_screwdriver = minetest.get_modpath("screwdriver") ~= nil +local on_rotate +if mod_screwdriver then + on_rotate = screwdriver.rotate_3way +end +local alldirs = {{x=0,y=0,z=1}, {x=1,y=0,z=0}, {x=0,y=0,z=-1}, {x=-1,y=0,z=0}, {x=0,y=-1,z=0}, {x=0,y=1,z=0}} + +--Blocks + +minetest.register_node("mcl_blackstone:blackstone", { + description = S("Blackstone"), + tiles = {"mcl_blackstone.png"}, + sounds = mcl_sounds.node_sound_stone_defaults(), + is_ground_content = false, + groups = {cracky = 3, pickaxey=2, material_stone=1}, + _mcl_blast_resistance = 2, + _mcl_hardness = 2, +}) + +minetest.register_node("mcl_blackstone:blackstone_gilded", { + description = S("Gilded Blackstone"), + tiles = {"mcl_blackstone.png^mcl_blackstone_gilded_side.png"}, + sounds = mcl_sounds.node_sound_stone_defaults(), + is_ground_content = false, + groups = {cracky = 3, pickaxey=2, material_stone=1, xp=1}, + drop = { + max_items = 1, + items = { + {items = {'mcl_core:gold_nugget 2'},rarity = 5}, + {items = {'mcl_core:gold_nugget 3'},rarity = 5}, + {items = {'mcl_core:gold_nugget 4'},rarity = 5}, + {items = {'mcl_core:gold_nugget 5'},rarity = 5}, + {items = {'mcl_blackstone:blackstone_gilded'}, rarity = 8}, + } + }, + _mcl_blast_resistance = 2, + _mcl_hardness = 2, + _mcl_silk_touch_drop = true, + _mcl_fortune_drop = mcl_core.fortune_drop_ore, +}) + +minetest.register_node("mcl_blackstone:nether_gold", { + description = S("Nether Gold Ore"), + tiles = {"mcl_nether_netherrack.png^mcl_blackstone_gilded_side.png"}, + sounds = mcl_sounds.node_sound_stone_defaults(), + is_ground_content = false, + groups = {cracky = 3, pickaxey=2, material_stone=1, xp=1}, + drop = { + max_items = 1, + items = { + {items = {'mcl_core:gold_nugget 2'},rarity = 5}, + {items = {'mcl_core:gold_nugget 3'},rarity = 5}, + {items = {'mcl_core:gold_nugget 4'},rarity = 5}, + {items = {'mcl_core:gold_nugget 5'},rarity = 5}, + {items = {'mcl_blackstone:nether_gold'}, rarity = 8}, + } + }, + _mcl_blast_resistance = 2, + _mcl_hardness = 2, + _mcl_silk_touch_drop = true, + _mcl_fortune_drop = mcl_core.fortune_drop_ore, +}) + +minetest.register_node("mcl_blackstone:basalt_polished", { + description = S("Polished Basalt"), + tiles = {"mcl_blackstone_basalt_top_polished.png", "mcl_blackstone_basalt_top_polished.png", "mcl_blackstone_basalt_side_polished.png"}, + sounds = mcl_sounds.node_sound_stone_defaults(), + paramtype2 = "facedir", + on_place = mcl_util.rotate_axis, + on_rotate = on_rotate, + is_ground_content = false, + groups = {cracky = 3, pickaxey=2, material_stone=1}, + _mcl_blast_resistance = 2, + _mcl_hardness = 2, +}) + + +minetest.register_node("mcl_blackstone:basalt", { + description = S("Basalt"), + tiles = {"mcl_blackstone_basalt_top.png", "mcl_blackstone_basalt_top.png", "mcl_blackstone_basalt_side.png"}, + sounds = mcl_sounds.node_sound_stone_defaults(), + paramtype2 = "facedir", + on_place = mcl_util.rotate_axis, + on_rotate = on_rotate, + is_ground_content = false, + groups = {cracky = 3, pickaxey=2, material_stone=1}, + _mcl_blast_resistance = 2, + _mcl_hardness = 2, +}) + + + +minetest.register_node("mcl_blackstone:blackstone_polished", { + description = S("Polished Blackstone"), + tiles = {"mcl_blackstone_polished.png"}, + sounds = mcl_sounds.node_sound_stone_defaults(), + is_ground_content = false, + groups = {cracky = 3, pickaxey=2, material_stone=1}, + _mcl_blast_resistance = 2, + _mcl_hardness = 2, +}) + + +minetest.register_node("mcl_blackstone:blackstone_chiseled_polished", { + description = S("Chiseled Polished Blackstone"), + tiles = {"mcl_blackstone_chiseled_polished.png"}, + sounds = mcl_sounds.node_sound_stone_defaults(), + is_ground_content = false, + groups = {cracky = 3, pickaxey=2, material_stone=1}, + _mcl_blast_resistance = 2, + _mcl_hardness = 2, +}) + + +minetest.register_node("mcl_blackstone:blackstone_brick_polished", { + description = S("Polished Blackstone Bricks"), + tiles = {"mcl_blackstone_polished_bricks.png"}, + sounds = mcl_sounds.node_sound_stone_defaults(), + is_ground_content = false, + groups = {cracky = 3, pickaxey=2, material_stone=1}, + _mcl_blast_resistance = 2, + _mcl_hardness = 2, +}) + +minetest.register_node("mcl_blackstone:quartz_brick", { + description = S("Quartz Bricks"), + tiles = {"mcl_backstone_quartz_bricks.png"}, + sounds = mcl_sounds.node_sound_stone_defaults(), + is_ground_content = false, + sounds = mcl_sounds.node_sound_stone_defaults(), + groups = {cracky = 3, pickaxey=2, material_stone=1}, + _mcl_blast_resistance = 2, + _mcl_hardness = 2, +}) + +minetest.register_node("mcl_blackstone:soul_soil", { + description = S("Soul Soil"), + tiles = {"mcl_blackstone_soul_soil.png"}, + is_ground_content = false, + sounds = mcl_sounds.node_sound_sand_defaults(), + groups = {cracky = 3, handy=1, shovely=1}, + _mcl_blast_resistance = 0.5, + _mcl_hardness = 0.5, +}) + + +minetest.register_node("mcl_blackstone:soul_fire", { + description = S("Eternal Soul Fire"), + _doc_items_longdesc = eternal_fire_help, + drawtype = "firelike", + tiles = { + { + name = "soul_fire_basic_flame_animated.png", + animation = { + type = "vertical_frames", + aspect_w = 16, + aspect_h = 16, + length = 1 + }, + }, + }, + inventory_image = "soul_fire_basic_flame.png", + paramtype = "light", + light_source = 10, + walkable = false, + buildable_to = true, + sunlight_propagates = true, + damage_per_second = 2, + _mcl_node_death_message = fire_death_messages, + groups = {fire = 1, dig_immediate = 3, not_in_creative_inventory = 1, dig_by_piston = 1, destroys_items = 1, set_on_fire=8}, + floodable = true, + on_flood = function(pos, oldnode, newnode) + if minetest.get_item_group(newnode.name, "water") ~= 0 then + minetest.sound_play("fire_extinguish_flame", {pos = pos, gain = 0.25, max_hear_distance = 16}, true) + end + end, +}) + + +--slabs/stairs + +mcl_stairs.register_stair_and_slab_simple("blackstone", "mcl_blackstone:blackstone", "Blackstone Stair", "Blackstone Slab", "Double Blackstone Slab") + + +mcl_stairs.register_stair_and_slab_simple("blackstone_polished", "mcl_blackstone:blackstone_polished", "Polished Blackstone Stair", "Polished Blackstone Slab", "Polished Double Blackstone Slab") + + +mcl_stairs.register_stair_and_slab_simple("blackstone_chiseled_polished", "mcl_blackstone:blackstone_chiseled_polished", "Polished Chiseled Blackstone Stair", "Chiseled Polished Blackstone Slab", "Double Polished Chiseled Blackstone Slab") + + +mcl_stairs.register_stair_and_slab_simple("blackstone_brick_polished", "mcl_blackstone:blackstone_brick_polished", "Polished Blackstone Brick Stair", "Polished Blackstone Brick Slab", "Double Polished Blackstone Brick Slab") + +--Wall + +mcl_walls.register_wall("mcl_blackstone:wall", S("Blackstone Wall"), "mcl_blackstone:blackstone") + + + +--lavacooling + + +minetest.register_abm({ + label = "Lava cooling (basalt)", + nodenames = {"group:lava"}, + neighbors = {"mcl_core:ice"}, + interval = 1, + chance = 1, + action = function(pos, node, active_object_count, active_object_count_wider) + local water = minetest.find_nodes_in_area({x=pos.x-1, y=pos.y-1, z=pos.z-1}, {x=pos.x+1, y=pos.y+1, z=pos.z+1}, "mcl_core:ice") + + local lavatype = minetest.registered_nodes[node.name].liquidtype + + for w=1, #water do + local waternode = minetest.get_node(water[w]) + local watertype = minetest.registered_nodes[waternode.name].liquidtype + if water[w].y < pos.y and water[w].x == pos.x and water[w].z == pos.z then + minetest.set_node(water[w], {name="mcl_blackstone:basalt"}) + elseif lavatype == "flowing" and water[w].y == pos.y and (water[w].x == pos.x or water[w].z == pos.z) then + minetest.set_node(pos, {name="mcl_blackstone:basalt"}) + elseif lavatype == "flowing" and water[w].y > pos.y and water[w].x == pos.x and water[w].z == pos.z then + minetest.set_node(pos, {name="mcl_blackstone:basalt"}) + end + end + end, +}) + + + + +minetest.register_abm({ + label = "Lava cooling (blackstone)", + nodenames = {"group:lava"}, + neighbors = {"mcl_core:packed_ice"}, + interval = 1, + chance = 1, + action = function(pos, node, active_object_count, active_object_count_wider) + local water = minetest.find_nodes_in_area({x=pos.x-1, y=pos.y-1, z=pos.z-1}, {x=pos.x+1, y=pos.y+1, z=pos.z+1}, "mcl_core:packed_ice") + + local lavatype = minetest.registered_nodes[node.name].liquidtype + + for w=1, #water do + local waternode = minetest.get_node(water[w]) + local watertype = minetest.registered_nodes[waternode.name].liquidtype + if water[w].y < pos.y and water[w].x == pos.x and water[w].z == pos.z then + minetest.set_node(water[w], {name="mcl_blackstone:blackstone"}) + elseif lavatype == "flowing" and water[w].y == pos.y and (water[w].x == pos.x or water[w].z == pos.z) then + minetest.set_node(pos, {name="mcl_blackstone:blackstone"}) + elseif lavatype == "flowing" and water[w].y > pos.y and water[w].x == pos.x and water[w].z == pos.z then + minetest.set_node(pos, {name="mcl_blackstone:blackstone"}) + end + end + end, +}) + +--crafting + + + +minetest.register_craft({ + output = 'mcl_blackstone:blackstone_polished 4', + recipe = { + {'mcl_blackstone:blackstone','mcl_blackstone:blackstone'}, + {'mcl_blackstone:blackstone','mcl_blackstone:blackstone'}, + } +}) + +minetest.register_craft({ + output = 'mcl_blackstone:basalt_polished 4', + recipe = { + {'mcl_blackstone:basalt','mcl_blackstone:basalt'}, + {'mcl_blackstone:basalt','mcl_blackstone:basalt'}, + } +}) + +minetest.register_craft({ + output = 'mcl_blackstone:blackstone_chiseled_polished 2', + recipe = { + {'mcl_blackstone:blackstone_polished'}, + {'mcl_blackstone:blackstone_polished'}, + } +}) +minetest.register_craft({ + output = 'mcl_blackstone:blackstone_brick_polished 4', + recipe = { + {'mcl_blackstone:blackstone_polished','mcl_blackstone:blackstone_polished'}, + {'mcl_blackstone:blackstone_polished','mcl_blackstone:blackstone_polished'}, + } +}) + + +minetest.register_craft({ + output = 'mcl_tools:pick_stone', + recipe = { + {'mcl_blackstone:blackstone', 'mcl_blackstone:blackstone', 'mcl_blackstone:blackstone'}, + {'', 'mcl_core:stick', ''}, + {'', 'mcl_core:stick', ''}, + } +}) + + +minetest.register_craft({ + output = 'mcl_tools:axe_stone', + recipe = { + {'mcl_blackstone:blackstone', 'mcl_blackstone:blackstone'}, + {'mcl_blackstone:blackstone', 'mcl_core:stick'}, + {'', 'mcl_core:stick'}, + } +}) + + +minetest.register_craft({ + output = 'mcl_tools:axe_stone', + recipe = { + {'mcl_blackstone:blackstone', 'mcl_blackstone:blackstone'}, + {'mcl_core:stick', 'mcl_blackstone:blackstone'}, + {'', 'mcl_core:stick'}, + } +}) + + +minetest.register_craft({ + output = 'mcl_tools:shovel_stone', + recipe = { + {'mcl_blackstone:blackstone'}, + {'mcl_core:stick'}, + {'mcl_core:stick'}, + } +}) + + +minetest.register_craft({ + output = 'mcl_tools:sword_stone', + recipe = { + {'mcl_blackstone:blackstone'}, + {'mcl_blackstone:blackstone'}, + {'mcl_core:stick'}, + } +}) + + +minetest.register_craft({ + output = "mcl_farming:hoe_stone", + recipe = { + {"mcl_blackstone:blackstone", "mcl_blackstone:blackstone"}, + {"", "mcl_core:stick"}, + {"", "mcl_core:stick"} + } +}) +minetest.register_craft({ + output = "mcl_farming:hoe_stone", + recipe = { + {"mcl_blackstone:blackstone", "mcl_blackstone:blackstone"}, + {"mcl_core:stick", ""}, + {"mcl_core:stick", ""} + } +}) + +minetest.register_craft({ + output = "mcl_furnaces:furnace", + recipe = { + {"mcl_blackstone:blackstone", "mcl_blackstone:blackstone", "mcl_blackstone:blackstone"}, + {"mcl_blackstone:blackstone", "", "mcl_blackstone:blackstone"}, + {"mcl_blackstone:blackstone", "mcl_blackstone:blackstone", "mcl_blackstone:blackstone"} + } +}) + + + + +minetest.register_craft({ + output = 'mcl_core:packed_ice', + recipe = { + {'mcl_core:ice','mcl_core:ice'}, + {'mcl_core:ice','mcl_core:ice'}, + } +}) + +minetest.register_craft({ + output = 'mcl_blackstone:quartz_brick 4', + recipe = { + {'mcl_nether:quartz_block','mcl_nether:quartz_block'}, + {'mcl_nether:quartz_block','mcl_nether:quartz_block'}, + } +}) + + +minetest.register_craft({ + type = "cooking", + output = 'mcl_core:gold_ingot', + recipe = 'mcl_blackstone:nether_gold', + cooktime = 10, +}) + +minetest.register_craft({ + type = "cooking", + output = 'mcl_core:gold_ingot', + recipe = 'mcl_blackstone:blackstone_gilded', + cooktime = 10, +}) + +minetest.register_craft({ + type = "cooking", + output = 'mcl_nether:quartz_smooth', + recipe = 'mcl_nether:quartz_block', + cooktime = 10, +}) + +--Generating + + +local specialstones = { "mcl_blackstone:blackstone", "mcl_blackstone:basalt", "mcl_blackstone:soul_soil" } +for s=1, #specialstones do + local node = specialstones[s] + minetest.register_ore({ + ore_type = "blob", + ore = node, + wherein = {"mcl_nether:netherrack"}, + clust_scarcity = 830, + clust_num_ores = 28, + clust_size = 3, + y_min = mcl_vars.mg_nether_min, + y_max = mcl_vars.mg_nether_max, + }) + minetest.register_ore({ + ore_type = "blob", + ore = node, + wherein = {"mcl_nether:netherrack"}, + clust_scarcity = 8*8*8, + clust_num_ores = 40, + clust_size = 5, + y_min = mcl_vars.mg_nether_min, + y_max = mcl_vars.mg_nether_max, + }) +end + + minetest.register_ore({ + ore_type = "scatter", + ore = "mcl_blackstone:blackstone_gilded", + wherein = "mcl_blackstone:blackstone", + clust_scarcity = 4775, + clust_num_ores = 2, + clust_size = 2, + y_min = mcl_vars.mg_nether_min, + y_max = mcl_vars.mg_nether_max, + }) + + minetest.register_ore({ + ore_type = "scatter", + ore = "mcl_blackstone:nether_gold", + wherein = "mcl_nether:netherrack", + clust_scarcity = 830, + clust_num_ores = 5, + clust_size = 3, + y_min = mcl_vars.mg_nether_min, + y_max = mcl_vars.mg_nether_max, + }) + minetest.register_ore({ + ore_type = "scatter", + ore = "mcl_blackstone:nether_gold", + wherein = "mcl_nether:netherrack", + clust_scarcity = 1660, + clust_num_ores = 4, + clust_size = 2, + y_min = mcl_vars.mg_nether_min, + y_max = mcl_vars.mg_nether_max, + }) + + + + + + + + + +--torches (parts are copied from mineclone2) +local spawn_flames_floor = function(pos) + -- Flames + mcl_particles.add_node_particlespawner(pos, { + amount = 8, + time = 0, + minpos = vector.add(pos, { x = -0.1, y = 0.05, z = -0.1 }), + maxpos = vector.add(pos, { x = 0.1, y = 0.15, z = 0.1 }), + minvel = { x = -0.01, y = 0, z = -0.01 }, + maxvel = { x = 0.01, y = 0.1, z = 0.01 }, + minexptime = 0.3, + maxexptime = 0.6, + minsize = 0.7, + maxsize = 2, + texture = "mcl_particles_flame.png", + glow = 10, + }, "low") + -- Smoke + mcl_particles.add_node_particlespawner(pos, { + amount = 0.5, + time = 0, + minpos = vector.add(pos, { x = -1/16, y = 0.04, z = -1/16 }), + maxpos = vector.add(pos, { x = -1/16, y = 0.06, z = -1/16 }), + minvel = { x = 0, y = 0.5, z = 0 }, + maxvel = { x = 0, y = 0.6, z = 0 }, + minexptime = 2.0, + maxexptime = 2.0, + minsize = 1.5, + maxsize = 1.5, + texture = "mcl_particles_smoke_anim.png", + animation = { + type = "vertical_frames", + aspect_w = 8, + aspect_h = 8, + length = 2.05, + }, + }, "medium") +end + +local spawn_flames_wall = function(pos, param2) + local minrelpos, maxrelpos + local dir = minetest.wallmounted_to_dir(param2) + if dir.x < 0 then + minrelpos = { x = -0.38, y = 0.04, z = -0.1 } + maxrelpos = { x = -0.2, y = 0.14, z = 0.1 } + elseif dir.x > 0 then + minrelpos = { x = 0.2, y = 0.04, z = -0.1 } + maxrelpos = { x = 0.38, y = 0.14, z = 0.1 } + elseif dir.z < 0 then + minrelpos = { x = -0.1, y = 0.04, z = -0.38 } + maxrelpos = { x = 0.1, y = 0.14, z = -0.2 } + elseif dir.z > 0 then + minrelpos = { x = -0.1, y = 0.04, z = 0.2 } + maxrelpos = { x = 0.1, y = 0.14, z = 0.38 } + else + return + end + -- Flames + mcl_particles.add_node_particlespawner(pos, { + amount = 8, + time = 0, + minpos = vector.add(pos, minrelpos), + maxpos = vector.add(pos, maxrelpos), + minvel = { x = -0.01, y = 0, z = -0.01 }, + maxvel = { x = 0.01, y = 0.1, z = 0.01 }, + minexptime = 0.3, + maxexptime = 0.6, + minsize = 0.7, + maxsize = 2, + texture = "mcl_particles_flame.png", + glow = 10, + }, "low") + -- Smoke + mcl_particles.add_node_particlespawner(pos, { + amount = 0.5, + time = 0, + minpos = vector.add(pos, minrelpos), + maxpos = vector.add(pos, maxrelpos), + minvel = { x = 0, y = 0.5, z = 0 }, + maxvel = { x = 0, y = 0.6, z = 0 }, + minexptime = 2.0, + maxexptime = 2.0, + minsize = 1.5, + maxsize = 1.5, + texture = "mcl_particles_smoke_anim.png", + animation = { + type = "vertical_frames", + aspect_w = 8, + aspect_h = 8, + length = 2.05, + }, + }, "medium") +end + +local remove_flames = function(pos) + mcl_particles.delete_node_particlespawners(pos) +end + +-- +-- 3d torch part +-- + +-- Check if placement at given node is allowed +local function check_placement_allowed(node, wdir) + -- Torch placement rules: Disallow placement on some nodes. General rule: Solid, opaque, full cube collision box nodes are allowed. + -- Special allowed nodes: + -- * soul sand + -- * mob spawner + -- * chorus flower + -- * glass, barrier, ice + -- * Fence, wall, end portal frame with ender eye: Only on top + -- * Slab, stairs: Only on top if upside down + + -- Special forbidden nodes: + -- * Piston, sticky piston + local def = minetest.registered_nodes[node.name] + if not def then + return false + -- No ceiling torches + elseif wdir == 0 then + return false + elseif not def.buildable_to then + if node.name ~= "mcl_core:ice" and node.name ~= "mcl_nether:soul_sand" and node.name ~= "mcl_mobspawners:spawner" and node.name ~= "mcl_core:barrier" and node.name ~= "mcl_end:chorus_flower" and node.name ~= "mcl_end:chorus_flower_dead" and (not def.groups.glass) and + ((not def.groups.solid) or (not def.groups.opaque)) then + -- Only allow top placement on these nodes + if node.name == "mcl_end:dragon_egg" or node.name == "mcl_portals:end_portal_frame_eye" or def.groups.fence == 1 or def.groups.wall or def.groups.slab_top == 1 or def.groups.anvil or def.groups.pane or (def.groups.stair == 1 and minetest.facedir_to_dir(node.param2).y ~= 0) then + if wdir ~= 1 then + return false + end + else + return false + end + elseif minetest.get_item_group(node.name, "piston") >= 1 then + return false + end + end + return true +end + +mcl_torches = {} + +mcl_torches.register_torch = function(substring, description, doc_items_longdesc, doc_items_usagehelp, icon, mesh_floor, mesh_wall, tiles, light, groups, sounds, moredef, moredef_floor, moredef_wall) + local itemstring = minetest.get_current_modname()..":"..substring + local itemstring_wall = minetest.get_current_modname()..":"..substring.."_wall" + + if light == nil then light = minetest.LIGHT_MAX end + if mesh_floor == nil then mesh_floor = "mcl_torches_torch_floor.obj" end + if mesh_wall == nil then mesh_wall = "mcl_torches_torch_wall.obj" end + if groups == nil then groups = {} end + + groups.attached_node = 1 + groups.torch = 1 + groups.dig_by_water = 1 + groups.destroy_by_lava_flow = 1 + groups.dig_by_piston = 1 + + local floordef = { + description = description, + _doc_items_longdesc = doc_items_longdesc, + _doc_items_usagehelp = doc_items_usagehelp, + drawtype = "mesh", + mesh = mesh_floor, + inventory_image = icon, + wield_image = icon, + tiles = tiles, + paramtype = "light", + paramtype2 = "wallmounted", + sunlight_propagates = true, + is_ground_content = false, + walkable = false, + liquids_pointable = false, + light_source = light, + groups = groups, + drop = itemstring, + selection_box = { + type = "wallmounted", + wall_top = {-1/16, -1/16, -1/16, 1/16, 0.5, 1/16}, + wall_bottom = {-1/16, -0.5, -1/16, 1/16, 1/16, 1/16}, + }, + sounds = sounds, + node_placement_prediction = "", + on_place = function(itemstack, placer, pointed_thing) + if pointed_thing.type ~= "node" then + -- no interaction possible with entities, for now. + return itemstack + end + + local under = pointed_thing.under + local node = minetest.get_node(under) + local def = minetest.registered_nodes[node.name] + if not def then return itemstack end + + -- Call on_rightclick if the pointed node defines it + if placer and not placer:get_player_control().sneak then + if minetest.registered_nodes[node.name] and minetest.registered_nodes[node.name].on_rightclick then + return minetest.registered_nodes[node.name].on_rightclick(under, node, placer, itemstack) or itemstack + end + end + + local above = pointed_thing.above + local wdir = minetest.dir_to_wallmounted({x = under.x - above.x, y = under.y - above.y, z = under.z - above.z}) + + if check_placement_allowed(node, wdir) == false then + return itemstack + end + + local itemstring = itemstack:get_name() + local fakestack = ItemStack(itemstack) + local idef = fakestack:get_definition() + local retval + + if wdir == 1 then + retval = fakestack:set_name(itemstring) + else + retval = fakestack:set_name(itemstring_wall) + end + if not retval then + return itemstack + end + + local success + itemstack, success = minetest.item_place(fakestack, placer, pointed_thing, wdir) + itemstack:set_name(itemstring) + + if success and idef.sounds and idef.sounds.place then + minetest.sound_play(idef.sounds.place, {pos=under, gain=1}, true) + end + return itemstack + end, + on_rotate = false, + } + if moredef ~= nil then + for k,v in pairs(moredef) do + floordef[k] = v + end + end + if moredef_floor ~= nil then + for k,v in pairs(moredef_floor) do + floordef[k] = v + end + end + minetest.register_node(itemstring, floordef) + + local groups_wall = table.copy(groups) + groups_wall.torch = 2 + + local walldef = { + drawtype = "mesh", + mesh = mesh_wall, + tiles = tiles, + paramtype = "light", + paramtype2 = "wallmounted", + sunlight_propagates = true, + is_ground_content = false, + walkable = false, + light_source = light, + groups = groups_wall, + drop = itemstring, + selection_box = { + type = "wallmounted", + wall_top = {-0.1, -0.1, -0.1, 0.1, 0.5, 0.1}, + wall_bottom = {-0.1, -0.5, -0.1, 0.1, 0.1, 0.1}, + wall_side = {-0.5, -0.5, -0.1, -0.2, 0.1, 0.1}, + }, + sounds = sounds, + on_rotate = false, + } + if moredef ~= nil then + for k,v in pairs(moredef) do + walldef[k] = v + end + end + if moredef_wall ~= nil then + for k,v in pairs(moredef_wall) do + walldef[k] = v + end + end + minetest.register_node(itemstring_wall, walldef) + + + -- Add entry alias for the Help + if minetest.get_modpath("doc") then + doc.add_entry_alias("nodes", itemstring, "nodes", itemstring_wall) + end + +end + +mcl_torches.register_torch("soul_torch", + S("Soul Torch"), + S("Torches are light sources which can be placed at the side or on the top of most blocks."), + nil, + "soul_torch_on_floor.png", + "mcl_torches_torch_floor.obj", "mcl_torches_torch_wall.obj", + {{ + name = "soul_torch_on_floor_animated.png", + animation = {type = "vertical_frames", aspect_w = 16, aspect_h = 16, length = 3.3} + }}, + LIGHT_TORCH, + {dig_immediate=3, torch=1, deco_block=1}, + mcl_sounds.node_sound_wood_defaults(), + {_doc_items_hidden = false, + on_destruct = function(pos) + remove_flames(pos) + end}, + {on_construct = function(pos) + spawn_flames_floor(pos) + end}, + {on_construct = function(pos) + local node = minetest.get_node(pos) + spawn_flames_wall(pos, node.param2) + end}) + +minetest.register_craft({ + output = "mcl_blackstone:soul_torch 4", + recipe = { + { "mcl_nether:soul_sand" }, + { "mcl_core:stick" }, + } +}) + +minetest.register_lbm({ + label = "Torch flame particles", + name = "mcl_blackstone:flames", + nodenames = {"mcl_blackstone:soul_torch", "mcl_blackstone:soul_torch_wall"}, + run_at_every_load = true, + action = function(pos, node) + if node.name == "mcl_blackstone:soul_torch" then + spawn_flames_floor(pos) + elseif node.name == "mcl_blackstone:soul_torch" then + spawn_flames_wall(pos, node.param2) + end + end, +}) + + +minetest.register_node("mcl_blackstone:soul_lantern", { + tiles = { + "lantern_top.png", + "lantern_bottom.png", + "lantern.png", + "lantern.png", + "lantern.png", + "lantern.png", + }, + groups = {pickaxey=3}, + inventory_image = "lantern.png", + light_source = 10, + description = S("Soul Lantern"), + drawtype = "nodebox", + paramtype = "light", + paramtype2 = "facedir", + _mcl_hardness = 1, + -- Node box by debiankaios + node_box = { + type = "fixed", + fixed = { + {-0.1875, -0.5000, -0.1875, 0.1875, -0.06250, 0.1875}, + {-0.1250, -0.06250, -0.1250, 0.1250, 0.06250, 0.1250}, + {-0.06250, 0.1250, -0.006250, 0.06250, 0.1875, 0.006250}, + {-0.06250, 0.06250, -0.006250, -0.03125, 0.1250, 0.006250}, + {0.03125, 0.06250, -0.006250, 0.06250, 0.1250, 0.006250}, + } + }, + stack_max = 64, +}) + + + +minetest.register_craft({ + type = "shaped", + output = "mcl_blackstone:soul_lantern", + recipe = { + {"mcl_core:iron_nugget", "mcl_core:iron_nugget","mcl_core:iron_nugget"}, + {"mcl_core:iron_nugget", "mcl_blackstone:soul_torch", "mcl_core:iron_nugget"}, + {"mcl_core:iron_nugget", "mcl_core:iron_nugget", "mcl_core:iron_nugget"} + } +}) diff --git a/mods/ITEMS/mcl_blackstone/locale/mcl_blackstone.de.tr b/mods/ITEMS/mcl_blackstone/locale/mcl_blackstone.de.tr new file mode 100644 index 000000000..dee9cd15e --- /dev/null +++ b/mods/ITEMS/mcl_blackstone/locale/mcl_blackstone.de.tr @@ -0,0 +1,28 @@ +# textdomain: mcl_blackstone +Blackstone=Schwarzstein +Polished Blackstone=Polierter Schwarzstein +Chieseled Polished Blackstone=Gemeißelter polierter Schwarzstein +Polished Blackstone Bricks=Polierter Schwarzsteinziegel +Basalt=Basalt +Polished Basalt=Polierter Basalt +Blackstone Slab=Schwarzstein Stufe +Polished Blackstone Slab=Polierte Schwarzstein Stufe +Chieseled Polished Blackstone Slab=Gemeißelte Polierte Schwarzstein Stufe +Polished Blackstone Brick Slab=Polierte Schwarzsteinziegel Stufe +Blackstone Stairs=Schwarzstein Treppe +Polished Blackstone Stairs=Polierte Schwarzstein Treppe +Chieseled Polished Blackstone Stairs=Gemeißelte Polierte Schwarzstein Treppe +Polished Blackstone Brick Stairs=Polierte Schwarzsteinziegel Treppe +Quartz Bricks=Quartz Ziegel +Soul Torch=Seelenfakel +Soul Lantern=Seelenlaterne +Soul Soil=Seelenerde +Eternal Soul Fire=Seelenfeuer +Gilded Blackstone=Vergoldeter Schwarzstein +Nether Gold Ore=Nethergolderz +Smooth Basalt=Glatter Basalt + +@1 has been cooked crisp.=@1 wurde knusprig gebraten. +@1 felt the burn.=@1 ist völlig verbrannt. +@1 died in the flames.=@1 starb in den Flammen. +@1 died in a fire.=@1 starb in einem Feuer. diff --git a/mods/ITEMS/mcl_blackstone/locale/template.txt b/mods/ITEMS/mcl_blackstone/locale/template.txt new file mode 100644 index 000000000..0af51d7d3 --- /dev/null +++ b/mods/ITEMS/mcl_blackstone/locale/template.txt @@ -0,0 +1,23 @@ +# textdomain: mcl_blackstone +Blackstone= +Polished Blackstone= +Chieseled Polished Blackstone= +Polished Blackstone Bricks= +Basalt= +Polished Basalt= +Blackstone Slab= +Polished Blackstone Slab= +Chieseled Polished Blackstone Slab= +Polished Blackstone Brick Slab= +Blackstone Stairs= +Polished Blackstone Stairs= +Chieseled Polished Blackstone Stairs= +Polished Blackstone Brick Stairs= +Quartz Bricks= +Soul Torch= +Soul Lantern= +Soul Soil= +Eternal Soul Fire= +Gilded Blackstone= +Nether Gold Ore= +Smooth Basalt= diff --git a/mods/ITEMS/mcl_blackstone/mod.conf b/mods/ITEMS/mcl_blackstone/mod.conf new file mode 100644 index 000000000..42c279a0c --- /dev/null +++ b/mods/ITEMS/mcl_blackstone/mod.conf @@ -0,0 +1 @@ +name = mcl_blackstone diff --git a/mods/ITEMS/mcl_blackstone/models/mcl_torches_torch_floor.obj b/mods/ITEMS/mcl_blackstone/models/mcl_torches_torch_floor.obj new file mode 100644 index 000000000..ac4234d3e --- /dev/null +++ b/mods/ITEMS/mcl_blackstone/models/mcl_torches_torch_floor.obj @@ -0,0 +1,29 @@ +# Blender v2.76 (sub 0) OBJ File: 'torch_on_floor_node.blend' +# www.blender.org +o torch_Cube_Cube.001_Cube_Cube.001_Material.001 +v 0.062500 0.062500 0.062500 +v 0.062500 0.062500 -0.062500 +v -0.062500 0.062500 -0.062500 +v -0.062500 0.062500 0.062500 +v -0.062500 -0.500000 0.062500 +v 0.062500 -0.500000 0.062500 +v 0.062500 -0.500000 -0.062500 +v -0.062500 -0.500000 -0.062500 +vt 0.562500 0.500000 +vt 0.562500 0.625000 +vt 0.437500 0.625000 +vt 0.437500 0.500000 +vt 0.437500 0.000000 +vt 0.562500 0.000000 +vt 0.562500 0.125000 +vt 0.437500 0.125000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 0.000000 -1.000000 +vn 1.000000 0.000000 0.000000 +s 1 +f 1/1/1 2/2/1 3/3/1 4/4/1 +f 5/5/1 6/6/1 7/7/1 8/8/1 +f 1/2/2 6/6/2 5/5/2 4/3/2 +f 2/3/3 1/2/3 6/6/3 7/5/3 +f 3/2/2 2/3/2 7/5/2 8/6/2 +f 4/3/3 5/5/3 8/6/3 3/2/3 diff --git a/mods/ITEMS/mcl_blackstone/models/mcl_torches_torch_wall.obj b/mods/ITEMS/mcl_blackstone/models/mcl_torches_torch_wall.obj new file mode 100644 index 000000000..824223e6d --- /dev/null +++ b/mods/ITEMS/mcl_blackstone/models/mcl_torches_torch_wall.obj @@ -0,0 +1,29 @@ +# Blender v2.76 (sub 0) OBJ File: 'torch_on_wall_node.blend' +# www.blender.org +o torch_wall_Cube_Cube.001_Cube_Cube.001_Material.001 +v 0.062469 -0.303502 0.086070 +v 0.062469 -0.195248 0.023570 +v -0.062531 -0.195248 0.023570 +v -0.062531 -0.303502 0.086070 +v -0.062531 -0.584752 -0.401070 +v 0.062469 -0.584752 -0.401070 +v 0.062469 -0.476498 -0.463570 +v -0.062531 -0.476498 -0.463570 +vt 0.562500 0.500000 +vt 0.562500 0.625000 +vt 0.437500 0.625000 +vt 0.437500 0.500000 +vt 0.437500 0.000000 +vt 0.562500 0.000000 +vt 0.562500 0.125000 +vt 0.437500 0.125000 +vn 0.000000 0.500000 0.866000 +vn 0.000000 0.866000 -0.500000 +vn 1.000000 -0.000000 0.000000 +s 1 +f 1/1/1 2/2/1 3/3/1 4/4/1 +f 5/5/1 6/6/1 7/7/1 8/8/1 +f 1/2/2 6/6/2 5/5/2 4/3/2 +f 2/3/3 1/2/3 6/6/3 7/5/3 +f 3/2/2 2/3/2 7/5/2 8/6/2 +f 4/3/3 5/5/3 8/6/3 3/2/3 diff --git a/mods/ITEMS/mcl_blackstone/textures/lantern.png b/mods/ITEMS/mcl_blackstone/textures/lantern.png new file mode 100644 index 0000000000000000000000000000000000000000..a0cec3cbfae5ae507ba783d8cb83bbb3563832b5 GIT binary patch literal 1328 zcmV-01<(44P) zaB^>EX>4U6ba`-PAZ2)IW&i+q+U-|amgFc5{O1&N1SAj=$H6S`%?;-G6D;NI%35A` zReiR}G*~H%AVMtZ`hWip_YW@i998y1RJ8-5AZr=zDY}CNP!U8Pv;ARtt_7s0{11grfKg+PX?c zF$}Rnu?96SlgZvhX%zX@L-eiK37uhXS!;6y%RaLk<-Q z5}k-7Q8CF$#VK zTpMA;AtMbPHu5O9YDd-As?n2jpQ}bkwW(NKe)>=iX4RJvG?x>Znn5v+1jThKfQ06$ znKz1&r*cy>pBa-v7^;y>aWLDV7!-`1SO(qNJ(T-YHz)CrbmNbdb5pvXP|i*1j&g5x zdq=fa){YXEKywyOPJI|y*x=Buu$8$deYtku4e&S6-#}juG-8+yE;UjVeC9zb_u0Z( zA^7zp_V%yT?hjrF&F{H%&0S_9@zgahNLbkF4-hmFeeBTt?!OQgyw$=H>M$a@P-c&# zz-Gqr_o%sR_bC-5yA>Z$Y(udJJDVK$Lus@Fea6Of{g$0gj{814Amh4LW^=KqMcRtr zEsxxCX$!$T^Bw#(Zz$PoE*nc%8ihABcVqh|H1|fReuV`_70?DwraOtPJrWF?-Xap) zUk)2wbsk#}|GlsT?YC0N z{r<|MSKGoiY}bUN$c-;b-trrc;bTK8fJ5DHMEJKbwEP}{?vFF?gT!;KohF-VJuFsREb zpooza2I}$(47Oqt3_rhpV_=Y1V0cbWH2(bdje(tu3vV=Hb-|Ax-x&6tJ;T6YY{J0s m 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 N002ovPDHLkV1ksBKyUy6 literal 0 HcmV?d00001 diff --git a/mods/ITEMS/mcl_blackstone/textures/mcl_blackstone.png b/mods/ITEMS/mcl_blackstone/textures/mcl_blackstone.png new file mode 100644 index 0000000000000000000000000000000000000000..a811c69404f315f347c27aeb9e3466322dc1ce34 GIT binary patch literal 1656 zcmV-;28a2HP) zaB^>EX>4U6ba`-PAZ2)IW&i+q+O1bxw&N%a{MRaG2?!w&%fVpInH}`depmxmyGUyq zuYRBNllJquAh_ATz4t@N6GtWxF5v#5X1TTJJefdbM?cPYh;v75ENeopWgj%Gjd zrJt4=dsXeQ{5DW&nYeLRYmr*_5nXa#nes4$Izs6!owzBL)R%cJLBFi+&`Z=J8e&$( zimJJ3$$$~9vR%<(!Gsm}UT4heqO-dVT3ee{gVrY$Y_yr01g;gVHc+GjB&ttV)kwST z@&&uy*zIK$wOmkVT2wI96}JMPI{!~uK()55i)dtVrGDAAr`3(7Tzl#)6$I<#lsmt@ zz{|cdFT#>4$em`<0F&7U#Kw5;E$TXx&ST@ijH7{}OaP@wZL>OqqzV|1#OTokYXhS4 zD5_6V&n-E-sRGDs3qn!A9IQS5Pgcy>LIAQS;L?lXzHj<_=jy?v65@SqBjV6Uo zx;p8Mls3E3<~H8^7B<=9ma=Z2>@sJcLzWzKDz;G3<6nFUP^83?cHDIT9S{V@*r7sp`9Gcv0@VYB*JEin%^7oT_Pe2nPhVbiz$DRm?h6#Y0m- zH?(b<8A0c4Q?6-dqSZseR#ii8;uLI(se*1t%N3V)r*dC)19pF;n|)Fansk3dIcU;N z@$NJaq zs!{vMy(uP_J|`;wr4KqiYX=gx8XABPeE}bscL$zoJ){#3Ch&$btQ#|HOx$hTa~1hM zSF`xCOm6gTnzQfDJ~H%yM4Y^UzY}uBI|-t4IC4XToAqbzkJ{BEgcn}mi4a>3uJUk| zt-Vv6!x20jV+U!A^gH&lkq%^AMyz^&!PS8!S{yh|UGoS%aEQmFC$Q|mv-ui?ws$3-E1C>O(ft~ zq($e7U?HwZwp&++gjekCY3F=idlIDlz)8?a#5WgjShI#ZvCFR+m#VSU-WT4LSV(c5 z>ZGmolYZMnxbPZhz8%;7N;=-6pHah?us@l&?Sj{Rl%K*FjnnEkqwtB_l1Bn+cjr@X zI?v?Di*U>0ubJqc?DjBP5ij(^$8A>dNDud{u$+9qSzx5P-*Lu%1eogu9@DygO7s4- zaR!R8xaRFKF|CAV(}kdO6F|Kt81qB@kei^7`4Lw-6ShwWBlP96mXjFxfthEfmOtax zh1Y8r2G8{$dq6X4M~1`tLUU2RAyjSS2Q+kN^Mx24YJ`L;(K) z{{a7>y{D4^000SaNLh0L04^f{04^f|c%?sf00007bV*G`2jv0+3^fSxobVaO%yAonx^T90!fnWift6c-^Wuh83FL#lMjHP#WA{_)W-v3BI3QLl0Ge+ z-t``ae;A);`aZRV>#d|>B14^K)ZN9XyZr2*1e`^aHvo-{iml68vaZ_M?6E9Mj-pEt z5!U#%wObRC)_O{F`<&n*dm0V_r=U7~B}wAF2Vg&n?M|AyRZ4B-%@`A2%qUW0qYP~r zQeUnXXP0=^>kWktm+HKKY1X;KdHKo>UAllW#O6Q3;n^d{FY@aE0000 zaB^>EX>4U6ba`-PAZ2)IW&i+q+O1bxw&W%Z{MRb71O$l3axj>4vV$x?1;${vef!Kz z(w^IappMURXJz~M_@U0h%}(=yhRNV= zj-PHH^Aqf{9K0R&?QSQZN1QMMosmaC(=uxe#=I~B8GYD!{H8eklD#Zv{MD@cW7&>J zpTDgK7)21zXwti3qwpPC7SsONq<(MTNZg)dY>hkY@7U2Ceto#6}wtOt^2XMWF3%lG!}I(rH?QXa9Y#d94?PP!PxgJ z;tE(|24e+mZn!dWWC&ALwp=)I<-OlCXOw95u08HrXK>JL!FU~YHjM(?F0R^}XbPDC zell1yFzZpTKtJ9F zXefyhOCsXLOOPnZ8E2h1=e%n@DtY6r7w^3H!AGBh2{uS@!G{oHNKr?F7ADa}Pcg(8 zQ$o^&&g5% zbJVCC%sqK~VXdToqL@xl+l38Nv_UksYI4#c0X~cN#TNf^G}eV?O#mzPQ9w`X1Eq>N z9HMsaa0rP2Zh!2s@@`WjnBo}QU9=8wo~oMyj+K5VM2M-L9yy#I;>SdtKNGC!mjpC3 z{KwJ=DMM){advr@?rB5bx<%U2eB9kuKG)VOptlm#@0HXmp13Z^Uqvm%nx=(aEHatm|lcF*}ZddSH)WT6F9nhTxPyV{IdPz zm=}2oXRyXa&a`=~)8dtl&oy{+K!jJ41=d1UbwRdd-{E!kYzkP^$g*&au??sLI{Sm4 z9KQITI(*?Kd746a(*c_Az(=Nb;^K3rg%W5;L2pxU(`WS!|4g@3bU;ZROZO|ypBsWGAb7~;k3-tq1Y?*#GZW=r3S__3|5;^syrZf}PNIj|gFF76W>{}jpW*N$KiKr z40FTB*JI7mv;ADwusZFtnSGo~beG^;|Gq?<>V2w~E~|d^xBxaA)m-^ygVO%B5nUR= zer_vo&3O)AltqvJbLki>_EbY~C+6$q8*d|v$aT1WJ5=M_+1Zcm_e12>^9zb}pNUsH z{Lh~L1+YxzmVl}d1cDpb}Y_?kfhi=cwKar0w8y`k7MkytLg)#gg$@io2fh`CCF-Csff66vE`pt*8 zcgsTzv+0z*N~K!oUf-O`vlv3-!>)b5zS1hsYHPnmCICn&S%YgDACfn=(QhIS-9EK@ zdbaFpUZ}s5FiF9Og)voCaZOTXrb%&LsKy78_>^UtR&j=_wl*JMa*gO?Nv8XL%Ccnc znn)9gGiraaw$8;Elh5A{XHzyla83Wds;W_1a9_Le;n3|-C_YYS#5@2DFQhCc69Dzg z%g4S`dB%T%|NJZ_6W$$D-nH+e>|&G*ER4}aPtSIFf18%Y{Tm-NfyWp=tX8$PH--R6 urNrqdmEt@b3^b8A9lNiiI2|=n4B-dL+rTYGzk6^10000 zaB^>EX>4U6ba`-PAZ2)IW&i+q+O1bxmg^`C{AU%j1SBCI%fVpIxjUHUPl2(WI8M@i z&%_;rK`*K#Ic?T||1|RtK1}S5(-3{~-s0nuOPn!@cKd82SvT(U!S0i%b#rVmmIR}0 zkA9u<8S8o~1UJ{0=XDdxv=gVH-SRXj-7{k{<>E9XysguGHfic*_i&u~ZH33SF5A}i z*#&@6750P;uR>yRkKK#(FG(I_zdHz#1k6bUcPHTl9!PmJ549g<%peFjoeVXPE8we`hjArb z5l1Xwtb)x2S22``fp#NDl`=J2$5^N!M8_)!jLZcb^tC8~6Bp?exPDRNAW5o`2!0A! z6D;!)3k|<%_$w6Qxe_FqV2q&ga+$luzqt-Wt@YF;vhlzQadFRSgwdJncSwN{Y7Rjw? z1RNvy$%veh_6rywRjyD#s7-Ebm=EOFQJ{W6N|6O+zu=w0J@NhI^rX7;U4%uD(|G_y0jJIJ1C zGx}TF-i+n}GngB>*PV@aEhO47`s+8*GqUEs>z|2!fUNs_((Xatg8k#B z^iI&cNWO+=kKY)3m^a~>-*|l$bh--~T|Y@4aXZ0Q7!6j5+OYXwwkC9b}ifyqtsasuD=j)p?n2DXj@%8X^IZIphL0HV6PS zFYT`GopbA^4L_}rh|4K4 zaB^>EX>4U6ba`-PAZ2)IW&i+q+O1dVvGXGeNtXIMn zkzxU26=*KF3UOjVwL4p`oVjyb$HE06T4@q6iWFclWKn}8DLNpqPqmd(WC_{A+@{=cF=qV58~*4t4{4V@=>ySDb8Ov=#v2)N24VNi)E*)`364MsO%& z_gHeyc^6!C$z`wJdgr|le)OmuG}z#R4mLXH}3bkWBUV@xq8Ns1Qcl23tBOey6I zrx~U*R%dAByvU-9UEJcAu*4-Txqv>!7FT=;C6-ijm8uonzxo=e#+qtw+(4yfn`^#> z7F%k$gKJ&8?XLSCdhDs^1GS0jCu)2`?mKEcQ5%TaRWH0ygE)lU1dn#&24+A^ECcZ{ z5CEZNU}hp)D+9TKnMs08;RL9$8{kwPhyg*{SX}1=yBBg_aU*B{2se2`js|r92XZu^ zo5)>pyFsny^+eGXps@=_O^tRmwyq^h%qXArsj_u!OOo!^8IFwKjdT`pnI>X3tNmy+ z^X4gu<0&)ek>=!xfJc2GgNhD;8)x7)9#+sLr_MeWr3Vj>sUiQlc&YD>=*=TPMPMGr z_sHm!hHHCBu|9@yczBDOe%5~ZEqbZwv5smvhhQ#cZ+0^U@i2=evk#Buvd^icJ-APBk2GUA6aJ=a$f1mwL#EB*yfp$*RC>Bq%&F6Y;L`1*hqlau3zjrdU2-Qbll&!DY|g)o4uQm z_DA&PnR#v+XU5lZZnZB;%WX%+7<7{e4&dF6X4={C4A=8%@QyW|fYt9qm!myF{2^!y$}v()9DmK_D}kmieOY`gx;qfh2~+>sj`08qw<3-AB{010qNS#tmYE+YT{E+YYWr9XB6000McNliruF7@g^1vu^<4)5DC-)k8vH4fV*ynSK2?RPqOcZa zT?0Uf6%k}SP?g_d7ytmyxrHbN`JcvBX-pE4AQX#C-d~@@cZ zYeSn~r+y(uBgo17%M+Y)A%IMrb7-paX6u{?fGb1*D69Q z_*8Wv$}ZCW`)31=Nt5@12SxbLZZml_o2|P=e+`oN8I>3i&v?CL>mnj@nL-TZ(6$?Z z1jnizuc{)A_nMm*bGWtIO;rYec5h|ZTlfC)iKZ$S;=5h;@RlS9)PK)s?DHJP7|in= pIvd9kFV9Z^0AmdLuERdh@ek1#&MBh5@QeTe002ovPDHLkV1h3#?fL)! literal 0 HcmV?d00001 diff --git a/mods/ITEMS/mcl_blackstone/textures/mcl_blackstone_basalt_top.png b/mods/ITEMS/mcl_blackstone/textures/mcl_blackstone_basalt_top.png new file mode 100644 index 0000000000000000000000000000000000000000..0793a4d673fe855a09cca240ab7af45545e11d3b GIT binary patch literal 1950 zcmV;P2VwY$P) zaB^>EX>4U6ba`-PAZ2)IW&i+q+O1bvlI$iB{O1%t0##5f$3ZL+zJZVLL@ZKEJ@45L zw_;kT1hr(=(xd8Me>U|8K1}446(3x5PUB;vjhwIudVI#6v^~G)gI71XbA^q7)0*>`!{zZOSo`ye zxB^1VV61@616NiQiGg+_ONA0Os^>jZhKrUfd)%2bIOwuqJV(x^Q(*f=jlGGcC=JsU&v4UURa~f`R=K42wfe>mF zQ#tWHFLlcseIwR@K{;U#2r%hms5peK+%hN62Kz)?rAKLyFH->^f^C5_$Y@L2kr8sF zJ+mhQjsg56c#c%(0}PM|7g7z}7~?=r;BFgdJe_-4c!<$jK!g})JgA8#fh=nU`QvRs z4ka;Sm54a;5+q7;##txMIq!OpO5S+u#XIkP@X@DWf(;T}@F9d4QsijR!X&!rRSYr4 zlwdSLb;9X{9Vs1rn8O}&xWgaeh)2pupKP;amwgU7=2WVorj36?ROuX=rRX9ukMtN7A?-#R^&Jvu51A84~7D5mn!XwwObg zkyzG=RhMd$T7SuCo9nF5DM4eMcLNvCJpl-tbC(Ty*{-U?fn_4@iIQOap< zOlCR9!xTF2M*x`pmY!~;98998kB)}=Y?lPC^@Y(pwCMsGOOydYVqMd~4$Wak75k=T zYK1({s(v_4&1m)y*y|NJ4}XHL)lCB&%7h>%wcM37LphM!iVvV5*gmON1LS=|*LP5J6*yXBId%$tjJCll_S5Z=jhp{hmVB4B$QWWu*4G`3{D$|O?U8LR4~{3EsXKM66E zdl9KFI`~;vpPRbGx}WXo6YMKFdt&W^W;+Pdx5U^09wVvHgJtA0llp81!@5Zef}^dB zd@FIa+`v~KX>?Jn7sbxY48-_ZdwALfS;}-=#lCaJhK457%o7Nb#pd9F{QH#6xS>#Yci`Z8WGf3JMhpAAr)rC9EBTb&g|znbdC zJ@~q|Z+ERx_J^i@&8*ng7+k{*X?N5|+NoPFyW#h0EZ0!oy_}BYR_y8HDiy3=N_+B8@K5&UO%c*suu00Ogk=-dQKI7R(!B$BI5 zLD&3H0;rWu%`BB0jrwx22;_#2DxBY$=6%)jLwP(Nzkc~_Su9DCYN=S^JkN^8Z0=P! z@AtX|T?0ThcX14$`|*QPiZLb}J2|AgIL-%B_Iuq{s|7$fwmMzNdU8ndcMwTI*8(Z^ zY)>G?|iF$|+*-Wi5*x%@%;75eY_f_@9f>knD)Wf1)HivaAmv6iN3yWLhw zegCm^A05YOEq?~*;{iZ&NcY<~iXtl8Y&N4P$_XK?Dkqm&H^<}gEiRd)aCKgP5RQ%i kM!(l(jIGz}>>;B64L(%%J78`eEdT%j07*qoM6N<$f^P<+Q~&?~ literal 0 HcmV?d00001 diff --git a/mods/ITEMS/mcl_blackstone/textures/mcl_blackstone_basalt_top_polished.png b/mods/ITEMS/mcl_blackstone/textures/mcl_blackstone_basalt_top_polished.png new file mode 100644 index 0000000000000000000000000000000000000000..d5b85bd9707a42828c0ee2b11d5d7e7530737028 GIT binary patch literal 1914 zcmV-=2Zi{FP) zaB^>EX>4U6ba`-PAZ2)IW&i+q+O1btvct9x{pTvO1OX&imP4`3WCvM(4y%fNZ{Ewq zvPFsoybabK_?Tb^!t1`R_8IU_5@={qt)Zl zmbpG+T&@ky%<=O%u3VaO{1mh#Pl38=W_0E{KLu$X<20XDnERr+xifz?ai5lROue6t z0~lE#PqX5pNgufTrbV|O>Db$LH&{g4q0idjPFjD*PVMdsyxn_Ycf>iapHQg7&IR^` z(HtlFj$KFS#oE&RnBaW4)&6D62vxUfUZoWMaF^V)IXq#FgMT~yiWptI5*d?c`@ zG0fW*>Uu-hm&ikNCagpU@F$65&j$f*Y+Z$no5CV~?Z0mW9VKN(+b(ZILP-3`LM-j39oT@ra=) zT8t7AD^9!wiB?-<#aioZt5MNuXPh|eobxWY=(RUqy!Fm|AAAfPG)kBR8=MM0gb*W? zMu?8s9kC+DlTUq`Q%-xj)1Tpt3E`7Wl4O%hK7|xBXPuG$*=DD*&mqS`1))?-kz$K0 zzJwAhVy)_Gs#IHD^)=MES(~grS)&(ozq3Y@wZ@p~>)gc}hMij?sFf3GoPjYm1jb!s z00GU7v%`}y+?Z>e9f6S)!eEW0k&~%01_n(bmP(tui@9HUQ)2!v-uNfxRHN>{U`{pa zCUc*>ePJ!fexm43P|L!G>7gqMTcsS?<9lcbXk86183sE@?t zwN|lj4dlnhHrrc*#iN%_H#UMEUW$zEy_1hrx-^B7yA)X8w~AqX+M&x>2j}{<-loN2 znn#gKQ*C0^1tZe7R>yOw*xB2f+;R%>6z8h7TJ3Gx&R(ty3pezMW)sSs^=rdxMBRjz ziS=Qfnf{@ZgsY+-8ywQFQsM6jgLqRE*mHOl+Mw^_(UnS_oJ~J>`X^!Gbb|~ z^xLj?tK$HhL*UJwEHSCdV(~I-FS9a@(y?}o?n2(JrTmPpcS|Akr3{R+UN&7yw#8=n zhSU8FQ}~YSE5cf2sgKZ#W11<u!54Sh4-feV-?Re8EbtFVkJMAg?C!w7H zHyLI2<=n_$OL-yo-c-u#$x@+tI6 zEHR^I<2c>LVi%WNZCT##8grcrzL*Ps^*?3BMcwfT=UX(Z7S8Oy2f=D{`l+5>`J`?I zesd<}^Y}VPJQ}i>c~=0(s;>NflC^8dx7u+}`?*cgJN@~~8U6h%D0k)Rk=7gBvNJh- zrr&2JIpR2J4=wfwoC}YcNE9YYK9v+d=upd#qx=JP9~3^fJPyb#kHhnMlJ7+mqhs`<=c=gqZ#OIId-mKHWv0=l6L&EeZgevIJ1oVgKp?0GQ8ai4fkoE_j)Lo%~pS z|GVApy)PCE?|u5=I={PHtyULrZvejB-u?qV4L*)Wqup+I`E5EGD)ss1Mx<#JMIueJ z!N9$|45ehBh=?eJ0O0!SDyr&`S*w)Vlx07Tk4@8$V*r019&l#N3?SmeS_@z{pLZF? zn9ldkS!=y>0HVn_*IKu28x98mkLz{Ugq=hP07@x-8F}Zz;c#pkE_Q61#d2wk(OMg0 zymN^V{WvBftu=sNRfpMpzF02LiM?|_fBgo~wQAdzA$yZ?Zj9ke$6eK7m?oUcg^5Th zbwZjJ1rhN~{WvzpOvd?nL+(RF)1ru2uXmcTzVDD&sAyA`nUr02A_U8l2*EI&osgFbvrpcu2)`^FF+CBsL55ai)YW&d(S^xk507*qoM6N<$f(xIj AGXMYp literal 0 HcmV?d00001 diff --git a/mods/ITEMS/mcl_blackstone/textures/mcl_blackstone_chain.png b/mods/ITEMS/mcl_blackstone/textures/mcl_blackstone_chain.png new file mode 100644 index 0000000000000000000000000000000000000000..79e9a85aa09972fa9cd8048d5a1cca55c73f8f46 GIT binary patch literal 1780 zcmV zaB^>EX>4U6ba`-PAZ2)IW&i+q+O1Y=(jzAf{Ld+J1SAlT<1jE(S_uIewmSR1RX_~4>*8ZR4ddT=_ihglTA5o(4_x%$Q8QFbx?Va+<$Yocoe}JI?&n%zasov2_1! zJ-{dedxjOChK$B{XkJYFkV$<^m<1?l6EGKy2~z(VJGG}b@b>J6olaA3u23lLrh>a+ zH030pvFixkSX-Vi3+31@p4inAYCXs4l664Jsd=b%lsikr-%KvQ#KhrL&KjGD5U`vd74r!9kM+<2iB$@MLUzsIoWF6a_}uWUyu+ z<{b-lzp?wv6yUiKG?`$Gu;cNlPs0E5Y(urS)FskkV}-c55Fy4H4{D-GAj?`o{&*XZLrIKS zB_d9|1c{QIan^}*&b!v5k~iLZ@y>f6eDo=pV1on~dGeY)cqgKsYcyo z?#bH+)=KI(is=NkDr}f)Q_aw?5J*HiWhiQoF6LV?6uBYHo^vSsC4} zpypj)0xPjwk&y4Z!%&H>6q}BI8&#iBs(rJeFqg=sxjP**Otb7I`4F$VxGW>Q6rA~X zrhIf2bnSi0?oy>h(X9j9as{c~$TOVtr*K+CFJH$vgXsJ%nl#L#q0xvOSy|>Ll?%;S zKOi{9Jn7{aAe#>~E`Qgy~I(_XmSA)n^K#jiNTOy$-+hec&JKqAxn_7ZPE2`@`@ zTOoAFp^_F|8}A2iZiOgA;95hakyGj| zso2~BkeNcvVH`8NXNP&!TDYg+JOuth-0^cOOL(XN(P8gUug39p`!;h zGkmQ$nVam&92N3}CvQWtQpX+3EpF@k;tpw0shZ60YI}o%7Zh?X*#>h*_GlyY2c2hj z_2W8GmoRoY?J`<`A(NwT000SaNLh0L04^f{04^f|c%?sf00007bV*G` z2jv112QnLI*Ju3z00EFmL_t(I%XO34a?~&oMUQM*mgVt~uml1WRXpVXzbX%bkb#LU zZ_=0td1vSPV@KP7VxMr$$|m^m87iSQ*fRY0w9hg z=kx0fJ{}7aEol3ZV3NMiRMiV8KNP4Wo$r;@q{%=u1sG#6#sFY#HMxiBi6eQnG#LPP zsrBOcpH12Q#nHKDA#fwe=p3a|4mmtMKZ+H0D2f6A=K_gsV)~{;e7^s>>FR#YX_9UB zV81W&P#6x`o1M%e>_Ny0K%&Li%(o#)(~|0xxiekg&dzJrH-S$bw*E*-jrX3H(@Pj# zSyPok=EwJ6#3)^?RdlYwn4Hcvi-HgD?l#Ql>crFYBgD)lD5>dOL*EQ!YE*Dd?zKHo zQWHm#Y*mAjdLgj3nt{gT|BzN?P2H9Fi{p4KmMN64cCIU|Z#9k%vH6|HM)uU3QU3*i WbI4cEmHhJn0000 zaB^>EX>4U6ba`-PAZ2)IW&i+q+O1bxw!@|l{bv*%0z!z#a4?v)I)e_so2L^yN$>4y zd=jt>dh9I;A9eoqXH|dTW3;o%iVrS2r}44TMw2iJdVI!6+V(048K`z$@Z>Ritmn)yAo-h?H%~K&a%LbFVE=)yihMeZTigRDGFX7B@&89z=V?4Uw zTMsabKpz`rPA1m)4b2L-FLCN)`xPuA4ww%)F@MHR?dc7?J-cD2)0Fc&6iU0fz}+yK za+1&3b%buLEz55YYTPEC*wqqhJx6rOIw0lL3~GhaXIKb0?Lfof^7snozF!enK!_QP z6|i~W%8DWxpk2vQp+uF=K4!{r(VEkEjK*YO-DH8ii6(QSz_yF3@f^7*Fk(1^HHO%1 zU#Q!S-Cm{u%Z0Gg5R?&iJTCP~_;0SQsMeOcL^^D&;FoDR4L2Hd?H8*+2-S(HbbR}z zUh+o25X)dtI?Mq9CVdPQhtQQ<+<9iK6K$0qr9r+-1%L>)1fT0#DJ8<0auSgaBe zCtiX?NsgU$;+*rY^{C|8TQA;u?}Lv%1r9byaKVQVVo1?MMhlbZqE|7*7*m4L1l0+< z6IP^jn1c^{$l(rugd-j)BYm>Xl3n&W0eVxBpgV_6}f?7L~#u*qhmcY1g3?QLR z<4gy#)->iCXF3`bg&43#(#R>)7z2a$BqNnJcNcR%c~fHlFW$^I=2WBZzhF)^>Lznf z-afEaQa@3+6V$4(VXC>Ju~mjM0saI>R`7>oLb?RaaE_)(e}+fzBgH!QfVDDrZ!Kx= zW;oSm=!YjjX>-RWZWX?7fLAC+ln67}HY+NaQThO^KPu!Z&O#@9-plUjlq7?-ZuV-lU$8aQAm&Pn_2JWK_3o&%( zRSW0vOHV3yQfMOjple_NfQP5*8T^bTS$p^4@>2X-gJNkyQ6ZOOlB^&6``%m0{u1i2G4 zmO(#UE+f!pQ67nBX5z73b%KLv8rY+{3zi4VF74`Zeg_(sSv0pMv;mnta;UxKozvd4 z%)-PNqE!M#zn8XpuWkLS@R^3cPS50lBS)OMtXBG6rLY_iI5X}UX(oAk7sG-JjqUVl zp_x|sR;v{fXYR`vftq*_UoAH;nduc$a(`qb*6$0{B9 z5NJBygVE1iP%jN<2c_%1jNNMw8;P)c#Ay0>t@-Z_6fnykLssk#xt3-d=m z47YO6dL~%x$A}tTZc(f4+|U}i%zVND&$D~rn7`N3>>Ud4g8#tM>;Q?vm&Ubw_J(w2 zroNoH>T?GD&7j&ud^jeK`#}`nk-U^8R*TKm40q6IVLOj@f0i%V+5XMCyYV<5u6}<* zEfAS9&m_EO-wS-hV@En8&*aOg{d#bznfhgIx?A7LqJMD)MbEPXFH#)k{=00009a7bBm001r{001r{0eGc9b^rhX2XskIMF-^q z1rZeulcUfr0004-NklHKbn^SxpB_Ld1wc_01l#T^rfC-a50CeJzxzR5*Sx;1 z$f6oQtPaGb9lb zYb@4SJ~Qj|z#voy=nkHnn=kRcSS$coE}vk2#I)WFBA!kl^bPRvct1Md-hQRoYXDkr zaHcdq;B=NSl`}3b7SWg7ef!xbNiy25 eQ@W?V&+IQ_W#u;K4z+6l0000 zaB^>EX>4U6ba`-PAZ2)IW&i+q+O1bb}p)fX{ z1@SFLXPo$R>{f){P`flgCJ@|YUq7$08!e5|w|6;2L@Ju&)aA-*VIjg9{Mr`r2)>NA ztVi)AxLAQ$gTjKR8d7qI_MkwGG7akMU8%yv;JOpMovVoZ97|rDx(WcuhxyQO0x+8K z3D{Ji<}vJUTWIOkrLR(g=0;fQ2*LZo zkAwscW%e8lGe;Iqtem5dA##jS;;d0wyaZv1B9cTUC!a#%6qBTsG-Y+_QNmcGiqWL1 zIYViN=#1SND{?Nb_!0`2Sfr$)C0Ed=hRQWosi|ts%{AYU{w+2!Ej4YqQwNoL=-gwM zp1Srtz_sB=7(C*Tk%o?ZqjpezqDF7X{TVens7=JeS|?wqVOZo6L9?9j#0-eJKtNn3 z0wA=TnAt=jxQX1v%qmL1X9v`XCpe8JVn8r-ay;n9?hCm;;$}Gf3ODx?a%MvJ|3J=6 z=nitT{=O1o3+ zh~ZbF%!i3Sc5AE(+-={zP)AHZ3NycSWU$>f_gqKi1Uz=%bhbd^n;TGmHb@#&f#&M> z?!x81kR~6PaG#0PO--{ouL6JbrqcE&UU;<_~Ggu8ko?MU8udTF7>EEBCyY= zmqMP2x_Ob*U&bs~uD#}6_20d*_n3xIRe{0{gBh8Qaewfn9SD(B@xYfIa_bBSQk?y5 zg2G+3H|m)-GL3blas$?R?D2}*K?$FLHV=eHxa0;DaY8!t?iQ$d-%jnC1&y51p0>6a z9Z0$ z@tBL6%*!Ez^X3D+p2+3m2Sx8r8Avqi=DqBhBEP27TS|5F%%yKu)N;(w;78OSSz46KZjHt7EFVceNU{zUI=0 z;%By6cZ3Bes7v8khI3`)sE<_8HjYz*wRn`*tO+R!&gGpXv-tLLIZL;DH6KMfk6VJf zTUCVC=$Bx_2!Uwb3-Pz$pPfE>kp$et<+@BlE;cw2-#dOj(I3*0%9%nZwqN78$xBfVg-h?QtBTM@42rpLo18?Q|Wl60=P zVC|V8@aCABwCfiJ2fzXf8m*T%795>_&(373z3xQlgfsCfwk1gUM0oR&@iAU-SDJ7a zxyWsC(5`mCUxZf&%)^79W5pXcHiLCJ$eYbj?@r!zmazj)uZfI*CK5 z@kbA?#oEP{o5c2HsyV6pC^}b83eL#j?qa4Vbz7Vve45rwy>cQ-)9VTryLZ<_T-D;1 z=FcUqHlR^;;O4F7e|{-$Jh^YfegFUf24YJ`L;(K){{a7>y{D4^000SaNLh0L04^f{ z04^f|c%?sf00007bV*G`2jv452qg>K2&Fp!00HYsL_t(I%cYVrXcJ)+$A4c4f({va zXDmTz&cRSZXrxU8QXEn`2|78Hq~^%vpx8x}4wX7cp^L>XU9@6KAq@zTA}9ujs>nGg z5~KlhLPcnL38j=+O5t-TcitsI1mE;M-uwRl_y4~q=KBKtPxt^@Nx%G;W@TKJT>(yf zI27%L)rDnGJ~|tb-N=0Iq?Pnbo26+OEM_O2S}+tNt>-*s{Wnfa;r2ioS7m%a;nU{^ zjTKA$P0r|SM83YWA$)GM_<%w%6!XYvm*SqtBcX2X6AZ;TdFl+CwH>E1rD0FY0~w4U>r+;Io?8js(*AbS!Cax*gkN9@)<+gmm2KficPb^yY<4nXwWWd?_P zorV!r1)!QKiI*?l@ch{~Pu=fcSA0)ld#mOdaow_<_x)oT(KC_Ym!|RP{atQ-e02mc zH#A1rG$Hm_6bl7*EB%Bcf7sV8i(;YR0F_O%Q$o`)JOy`@O_SY9g{gzQy!bRLn}*?- Z{2Q<6zv$(oy!rqD002ovPDHLkV1mr9G7A6z literal 0 HcmV?d00001 diff --git a/mods/ITEMS/mcl_blackstone/textures/mcl_blackstone_polished.png b/mods/ITEMS/mcl_blackstone/textures/mcl_blackstone_polished.png new file mode 100644 index 0000000000000000000000000000000000000000..4ef4edb510699b7b9e4bd447115e085cc0488145 GIT binary patch literal 1760 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 LNkvXXu0mjfUO8o5 literal 0 HcmV?d00001 diff --git a/mods/ITEMS/mcl_blackstone/textures/mcl_blackstone_soul_soil.png b/mods/ITEMS/mcl_blackstone/textures/mcl_blackstone_soul_soil.png new file mode 100644 index 0000000000000000000000000000000000000000..bb65a2e4b07e66f97bae649a49b607396ceb86f3 GIT binary patch literal 1748 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 Q@Bjb+07*qoM6N<$g6_!a?EnA( literal 0 HcmV?d00001 diff --git a/mods/ITEMS/mcl_blackstone/textures/soul_fire_basic_flame.png b/mods/ITEMS/mcl_blackstone/textures/soul_fire_basic_flame.png new file mode 100644 index 0000000000000000000000000000000000000000..74bd64d3220f9621c5e0c0cb0658b42039765d80 GIT binary patch literal 1563 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 Y8zk@Xb7T^8H2?qr07*qoM6N<$f>3{imH+?% literal 0 HcmV?d00001 diff --git a/mods/ITEMS/mcl_blackstone/textures/soul_mcl_burning_entity_flame_animated.png b/mods/ITEMS/mcl_blackstone/textures/soul_mcl_burning_entity_flame_animated.png new file mode 100644 index 0000000000000000000000000000000000000000..795d3e9a7a80f7b94e74595252e0cd5192cc2b03 GIT binary patch literal 7191 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 Ef>v80`v3p{ literal 0 HcmV?d00001 diff --git a/mods/ITEMS/mcl_blackstone/textures/soul_torch_on_floor_animated.png b/mods/ITEMS/mcl_blackstone/textures/soul_torch_on_floor_animated.png new file mode 100644 index 0000000000000000000000000000000000000000..b125743b0ea7c8395436eb5402f4203fed3dd2c9 GIT binary patch literal 1808 zcmV+r2k-caP) zaB^>EX>4U6ba`-PAZ2)IW&i+q+O1Ywk}D?+{bvPSb*+G_{1KnefJu^2q zskqDCm5_ z@b}-j0*on$$0?-6#1VJhtML93+j$yVib2GJHgi7r^gVV@jNZU|wBE3bcK7ou6d{&- zKzYOH?k9Qc=f^VXB_n#S{PKd=V~H==xleUp*X}GAAXUP>sgJFk76x`e$!A)@Rq++H z>$w^(#TEw`n_#o!8i5)mpzV}tl9AIo&p`tz=Co49Go=9zcAs)hEe+ljGE$ix1C?aT0Tgmm;aoI{=cw+Ja<=!9Xk! zHWi9BrAh=G75o@7Pn=T+10<3r1qV0G1?0dDSQ~RHov}&M)s4~uB7_T9P}A5zR?Y(b z)U42u2}=$lQlyGX6DwSDky1)6yGB{%nyb`OYt`DSDQi~IqE%I!T1$;l!lac}L(|rp z85T8!Hq17RFzcyv&s}=ywQFzP2IMpHkWoe*I@++ACQsOZmRZBp*`_U8kkZOaR#|oF zYRep2bN1}w#jC3~w+Cx<+xCSudSmX_tkKQdW-Om^^~oB#YyAj8yPU}842-2rV7zVy zAn3F?i%L1C&D`cJwggj10&66joJpH8Fqju5ae8p~WbT)|1^iFc&s; zH*;Tk`-Zh?=S1N{(01X*G_s?xVZc&LYWqz3=Vza_u2`2fpRJ?pOz+J(@EG3N;b$sL z>dbhx3@1oUbps}5qqIz8Nk`>U?0QXKiAooQp%ZRt@Rhw`J15jyV*%M7J!7Xy+Xg9t zPNA8Bog^s$;!3cwL_19!Ei3d2E%e^koMW+1K~*19Mgx(3MU^?dtX0W@85Z+WOq-7+ zlU>z#rISQx6;l-zE89R|twZ8$-cP0TJ*0@OYHdK3xz{TR#QK!YPA2@64NjY)z5%Sx zIv}D6WY^Y($5ylNt-C_r>;)6S+D<3NHM$HJoaQTyj7fzTj)!@+)6?A2T->8UQ9@Zr za=sey7;fRC@#7QF;~z_(x!>$UoL)f>pxGTa+2M`t3bxH8BAGH2l?1}+!xjD-?gd2v z_HpCQv{Vp3YVSzAg*AAlu51ZtuaO>9mkE$hW|EsdckvyWn>DbxvUQstajq_43xhkr z+KB@PM=@BS8)2Nd`sjA?X@XA)eqEQJ(TAfo<1b;ye=TmYqUL1+F9KHr9DLTiFGp(p2F&E;|6he=u}- zbGE|Sd4Uxyj<85^Z`$DHdb+gJRwq(k4ipI6I9!+TLiXCRV&C`~bZmRF>?)A}vU5kA zo%uk4DhQ4NP&f1uO>saXT(j1td;pw^U9|5%ezUkHLaCj-!*6aU$Jwl-jIXEV!;8y^ zKZBd$kF@$lhOZ`yxbc&}KHDq6U#t*fE4TXa_u;qmfuJUNYuIXlAh6Bt@s5myKkF}Z zsaOqj;i<#svekHqwvHDSRS>vcr6w3^{Z(uHyIS)bPnU&)20?;UoLl>(fL>96m_f@H zo#+SHo#&3{{J$; z!FUZ|!6&Icxs`$I)mw%qc+@cAGk}YOnV>828u0DMUj}v-7V-_?;$UX@`RC7YcL82m zK|VHyZ{OKRbJWlV2VTAUA8_>Of3g$Ogxj|nF3y`renJxOt!L1D^_JoOXn8PN9*lwk z28Un2{vUDtIQiwl)H`<=E^gjTenR5!u4Pbs^_JoKXn8PN9*lwk2K!#V{O@__5c&ND y&qIg)DMg^A(ehxpmj?g|dVo|;Dp^DT0000 Date: Tue, 26 Apr 2022 22:14:44 +0200 Subject: [PATCH 02/18] move depends.txt to mod.conf, add author field --- mods/ITEMS/mcl_blackstone/depends.txt | 7 ------- mods/ITEMS/mcl_blackstone/mod.conf | 2 ++ 2 files changed, 2 insertions(+), 7 deletions(-) delete mode 100644 mods/ITEMS/mcl_blackstone/depends.txt diff --git a/mods/ITEMS/mcl_blackstone/depends.txt b/mods/ITEMS/mcl_blackstone/depends.txt deleted file mode 100644 index c1ada2d4e..000000000 --- a/mods/ITEMS/mcl_blackstone/depends.txt +++ /dev/null @@ -1,7 +0,0 @@ -mcl_core -screwdriver -mcl_stairs -mclx_stairs -mcl_walls -mclx_fences -mcl_torches diff --git a/mods/ITEMS/mcl_blackstone/mod.conf b/mods/ITEMS/mcl_blackstone/mod.conf index 42c279a0c..907293462 100644 --- a/mods/ITEMS/mcl_blackstone/mod.conf +++ b/mods/ITEMS/mcl_blackstone/mod.conf @@ -1 +1,3 @@ name = mcl_blackstone +author = debian044 +depends = mcl_core, screwdriver, mcl_stairs, mclx_stairs, mcl_walls, mclx_fences, mcl_torches From 67e026cb124554d1bb9ea322a972b7db1b6a9149 Mon Sep 17 00:00:00 2001 From: cora Date: Mon, 25 Apr 2022 13:55:01 +0200 Subject: [PATCH 03/18] blackstone: remove soul lantern dupe(mcl_lanterns) --- mods/ITEMS/mcl_blackstone/init.lua | 44 ------------------------------ 1 file changed, 44 deletions(-) diff --git a/mods/ITEMS/mcl_blackstone/init.lua b/mods/ITEMS/mcl_blackstone/init.lua index da0646bf8..8f84a8912 100644 --- a/mods/ITEMS/mcl_blackstone/init.lua +++ b/mods/ITEMS/mcl_blackstone/init.lua @@ -840,47 +840,3 @@ minetest.register_lbm({ end end, }) - - -minetest.register_node("mcl_blackstone:soul_lantern", { - tiles = { - "lantern_top.png", - "lantern_bottom.png", - "lantern.png", - "lantern.png", - "lantern.png", - "lantern.png", - }, - groups = {pickaxey=3}, - inventory_image = "lantern.png", - light_source = 10, - description = S("Soul Lantern"), - drawtype = "nodebox", - paramtype = "light", - paramtype2 = "facedir", - _mcl_hardness = 1, - -- Node box by debiankaios - node_box = { - type = "fixed", - fixed = { - {-0.1875, -0.5000, -0.1875, 0.1875, -0.06250, 0.1875}, - {-0.1250, -0.06250, -0.1250, 0.1250, 0.06250, 0.1250}, - {-0.06250, 0.1250, -0.006250, 0.06250, 0.1875, 0.006250}, - {-0.06250, 0.06250, -0.006250, -0.03125, 0.1250, 0.006250}, - {0.03125, 0.06250, -0.006250, 0.06250, 0.1250, 0.006250}, - } - }, - stack_max = 64, -}) - - - -minetest.register_craft({ - type = "shaped", - output = "mcl_blackstone:soul_lantern", - recipe = { - {"mcl_core:iron_nugget", "mcl_core:iron_nugget","mcl_core:iron_nugget"}, - {"mcl_core:iron_nugget", "mcl_blackstone:soul_torch", "mcl_core:iron_nugget"}, - {"mcl_core:iron_nugget", "mcl_core:iron_nugget", "mcl_core:iron_nugget"} - } -}) From dd928db9eaeef6329f77611d50aeff2c57a23b5e Mon Sep 17 00:00:00 2001 From: cora Date: Mon, 25 Apr 2022 13:55:39 +0200 Subject: [PATCH 04/18] fix soul torch recipe --- mods/ITEMS/mcl_blackstone/init.lua | 1 + 1 file changed, 1 insertion(+) diff --git a/mods/ITEMS/mcl_blackstone/init.lua b/mods/ITEMS/mcl_blackstone/init.lua index 8f84a8912..95ddd0dc9 100644 --- a/mods/ITEMS/mcl_blackstone/init.lua +++ b/mods/ITEMS/mcl_blackstone/init.lua @@ -822,6 +822,7 @@ mcl_torches.register_torch("soul_torch", minetest.register_craft({ output = "mcl_blackstone:soul_torch 4", recipe = { + {"group:coal"}, { "mcl_nether:soul_sand" }, { "mcl_core:stick" }, } From 6b058d6f386958aed69a226b2201165a75531eae Mon Sep 17 00:00:00 2001 From: cora Date: Wed, 27 Apr 2022 00:26:48 +0200 Subject: [PATCH 05/18] remove changelog.md --- mods/ITEMS/mcl_blackstone/changelogs.md | 30 ------------------------- 1 file changed, 30 deletions(-) delete mode 100644 mods/ITEMS/mcl_blackstone/changelogs.md diff --git a/mods/ITEMS/mcl_blackstone/changelogs.md b/mods/ITEMS/mcl_blackstone/changelogs.md deleted file mode 100644 index fc7a4ce11..000000000 --- a/mods/ITEMS/mcl_blackstone/changelogs.md +++ /dev/null @@ -1,30 +0,0 @@ -# Changelogs - - - - - -## Blocks - -I added the new Polished Basalt Block and salbs and strairs for every kind of Blackstone. - -Also new is the Blackstone Wall. - -New Soul soil, Soul Fire and Soul Fire Torches/Lanterns. - -Added Smooth Basalt. - -## Generating - -Basalt and Blackstone now generate in the Nether naturaly. - -Nether Gold Ore is gernerating in the Nether. - - - - -## Bugfixes - -I fixed a lot of Bugs. - - From d9f2db5950b5791dce5777b8159d79ce92b81b43 Mon Sep 17 00:00:00 2001 From: cora Date: Wed, 27 Apr 2022 00:27:59 +0200 Subject: [PATCH 06/18] adapt readme to mcl2 --- mods/ITEMS/mcl_blackstone/README.md | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/mods/ITEMS/mcl_blackstone/README.md b/mods/ITEMS/mcl_blackstone/README.md index 11acb450e..d2e385f04 100644 --- a/mods/ITEMS/mcl_blackstone/README.md +++ b/mods/ITEMS/mcl_blackstone/README.md @@ -1,8 +1,6 @@ # Blackstone Mod -This mod is made for the Minetest Subgame Mineclone2. - -It adds new Blocks: Blackstone, Basalt, Soul Fire, Soul Torch etc. +This mod adds new Blocks: Blackstone, Basalt, Soul Fire, Soul Torch etc. ## Version: From c6312e7bdd47defe49e89c07ace7221f87055bb2 Mon Sep 17 00:00:00 2001 From: cora Date: Wed, 27 Apr 2022 00:31:14 +0200 Subject: [PATCH 07/18] use vector.new instead of normal tables --- mods/ITEMS/mcl_blackstone/init.lua | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/mods/ITEMS/mcl_blackstone/init.lua b/mods/ITEMS/mcl_blackstone/init.lua index 95ddd0dc9..bd0e5bf0f 100644 --- a/mods/ITEMS/mcl_blackstone/init.lua +++ b/mods/ITEMS/mcl_blackstone/init.lua @@ -37,10 +37,16 @@ local on_rotate if mod_screwdriver then on_rotate = screwdriver.rotate_3way end -local alldirs = {{x=0,y=0,z=1}, {x=1,y=0,z=0}, {x=0,y=0,z=-1}, {x=-1,y=0,z=0}, {x=0,y=-1,z=0}, {x=0,y=1,z=0}} +local alldirs = { + vector.new(1,0,0), + vector.new(0,1,0), + vector.new(0,0,1), + vector.new(-1,0,0), + vector.new(0,-1,0), + vector.new(0,0,-1) +} --Blocks - minetest.register_node("mcl_blackstone:blackstone", { description = S("Blackstone"), tiles = {"mcl_blackstone.png"}, From 430dc7fd8c585a0ae23141416052318617627387 Mon Sep 17 00:00:00 2001 From: cora Date: Wed, 27 Apr 2022 00:36:14 +0200 Subject: [PATCH 08/18] remove packed ice recipe --- mods/ITEMS/mcl_blackstone/init.lua | 11 ----------- 1 file changed, 11 deletions(-) diff --git a/mods/ITEMS/mcl_blackstone/init.lua b/mods/ITEMS/mcl_blackstone/init.lua index bd0e5bf0f..b093faf32 100644 --- a/mods/ITEMS/mcl_blackstone/init.lua +++ b/mods/ITEMS/mcl_blackstone/init.lua @@ -404,17 +404,6 @@ minetest.register_craft({ } }) - - - -minetest.register_craft({ - output = 'mcl_core:packed_ice', - recipe = { - {'mcl_core:ice','mcl_core:ice'}, - {'mcl_core:ice','mcl_core:ice'}, - } -}) - minetest.register_craft({ output = 'mcl_blackstone:quartz_brick 4', recipe = { From 181a7d3b116b0bd881db38d257be1b0ade710009 Mon Sep 17 00:00:00 2001 From: cora Date: Wed, 27 Apr 2022 00:42:01 +0200 Subject: [PATCH 09/18] make nether gold gen. respect mcl_generate_ores --- mods/ITEMS/mcl_blackstone/init.lua | 13 ++----------- 1 file changed, 2 insertions(+), 11 deletions(-) diff --git a/mods/ITEMS/mcl_blackstone/init.lua b/mods/ITEMS/mcl_blackstone/init.lua index b093faf32..82566e30f 100644 --- a/mods/ITEMS/mcl_blackstone/init.lua +++ b/mods/ITEMS/mcl_blackstone/init.lua @@ -435,8 +435,6 @@ minetest.register_craft({ }) --Generating - - local specialstones = { "mcl_blackstone:blackstone", "mcl_blackstone:basalt", "mcl_blackstone:soul_soil" } for s=1, #specialstones do local node = specialstones[s] @@ -462,6 +460,7 @@ for s=1, #specialstones do }) end +if minetest.settings:get_bool("mcl_generate_ores", true) then minetest.register_ore({ ore_type = "scatter", ore = "mcl_blackstone:blackstone_gilded", @@ -472,7 +471,6 @@ end y_min = mcl_vars.mg_nether_min, y_max = mcl_vars.mg_nether_max, }) - minetest.register_ore({ ore_type = "scatter", ore = "mcl_blackstone:nether_gold", @@ -493,14 +491,7 @@ end y_min = mcl_vars.mg_nether_min, y_max = mcl_vars.mg_nether_max, }) - - - - - - - - +end --torches (parts are copied from mineclone2) local spawn_flames_floor = function(pos) From a9be3f0f96184a5906bc96242b15b1133d89d408 Mon Sep 17 00:00:00 2001 From: cora Date: Wed, 27 Apr 2022 00:49:02 +0200 Subject: [PATCH 10/18] remove excessive newlines --- mods/ITEMS/mcl_blackstone/init.lua | 81 ------------------------------ 1 file changed, 81 deletions(-) diff --git a/mods/ITEMS/mcl_blackstone/init.lua b/mods/ITEMS/mcl_blackstone/init.lua index 82566e30f..7ecd19c4e 100644 --- a/mods/ITEMS/mcl_blackstone/init.lua +++ b/mods/ITEMS/mcl_blackstone/init.lua @@ -26,12 +26,6 @@ local fire_death_messages = { } --nodes - - - - - - local mod_screwdriver = minetest.get_modpath("screwdriver") ~= nil local on_rotate if mod_screwdriver then @@ -56,7 +50,6 @@ minetest.register_node("mcl_blackstone:blackstone", { _mcl_blast_resistance = 2, _mcl_hardness = 2, }) - minetest.register_node("mcl_blackstone:blackstone_gilded", { description = S("Gilded Blackstone"), tiles = {"mcl_blackstone.png^mcl_blackstone_gilded_side.png"}, @@ -78,7 +71,6 @@ minetest.register_node("mcl_blackstone:blackstone_gilded", { _mcl_silk_touch_drop = true, _mcl_fortune_drop = mcl_core.fortune_drop_ore, }) - minetest.register_node("mcl_blackstone:nether_gold", { description = S("Nether Gold Ore"), tiles = {"mcl_nether_netherrack.png^mcl_blackstone_gilded_side.png"}, @@ -100,7 +92,6 @@ minetest.register_node("mcl_blackstone:nether_gold", { _mcl_silk_touch_drop = true, _mcl_fortune_drop = mcl_core.fortune_drop_ore, }) - minetest.register_node("mcl_blackstone:basalt_polished", { description = S("Polished Basalt"), tiles = {"mcl_blackstone_basalt_top_polished.png", "mcl_blackstone_basalt_top_polished.png", "mcl_blackstone_basalt_side_polished.png"}, @@ -113,8 +104,6 @@ minetest.register_node("mcl_blackstone:basalt_polished", { _mcl_blast_resistance = 2, _mcl_hardness = 2, }) - - minetest.register_node("mcl_blackstone:basalt", { description = S("Basalt"), tiles = {"mcl_blackstone_basalt_top.png", "mcl_blackstone_basalt_top.png", "mcl_blackstone_basalt_side.png"}, @@ -127,9 +116,6 @@ minetest.register_node("mcl_blackstone:basalt", { _mcl_blast_resistance = 2, _mcl_hardness = 2, }) - - - minetest.register_node("mcl_blackstone:blackstone_polished", { description = S("Polished Blackstone"), tiles = {"mcl_blackstone_polished.png"}, @@ -139,8 +125,6 @@ minetest.register_node("mcl_blackstone:blackstone_polished", { _mcl_blast_resistance = 2, _mcl_hardness = 2, }) - - minetest.register_node("mcl_blackstone:blackstone_chiseled_polished", { description = S("Chiseled Polished Blackstone"), tiles = {"mcl_blackstone_chiseled_polished.png"}, @@ -150,8 +134,6 @@ minetest.register_node("mcl_blackstone:blackstone_chiseled_polished", { _mcl_blast_resistance = 2, _mcl_hardness = 2, }) - - minetest.register_node("mcl_blackstone:blackstone_brick_polished", { description = S("Polished Blackstone Bricks"), tiles = {"mcl_blackstone_polished_bricks.png"}, @@ -161,7 +143,6 @@ minetest.register_node("mcl_blackstone:blackstone_brick_polished", { _mcl_blast_resistance = 2, _mcl_hardness = 2, }) - minetest.register_node("mcl_blackstone:quartz_brick", { description = S("Quartz Bricks"), tiles = {"mcl_backstone_quartz_bricks.png"}, @@ -172,7 +153,6 @@ minetest.register_node("mcl_blackstone:quartz_brick", { _mcl_blast_resistance = 2, _mcl_hardness = 2, }) - minetest.register_node("mcl_blackstone:soul_soil", { description = S("Soul Soil"), tiles = {"mcl_blackstone_soul_soil.png"}, @@ -182,8 +162,6 @@ minetest.register_node("mcl_blackstone:soul_soil", { _mcl_blast_resistance = 0.5, _mcl_hardness = 0.5, }) - - minetest.register_node("mcl_blackstone:soul_fire", { description = S("Eternal Soul Fire"), _doc_items_longdesc = eternal_fire_help, @@ -216,29 +194,16 @@ minetest.register_node("mcl_blackstone:soul_fire", { end, }) - --slabs/stairs - mcl_stairs.register_stair_and_slab_simple("blackstone", "mcl_blackstone:blackstone", "Blackstone Stair", "Blackstone Slab", "Double Blackstone Slab") - - mcl_stairs.register_stair_and_slab_simple("blackstone_polished", "mcl_blackstone:blackstone_polished", "Polished Blackstone Stair", "Polished Blackstone Slab", "Polished Double Blackstone Slab") - - mcl_stairs.register_stair_and_slab_simple("blackstone_chiseled_polished", "mcl_blackstone:blackstone_chiseled_polished", "Polished Chiseled Blackstone Stair", "Chiseled Polished Blackstone Slab", "Double Polished Chiseled Blackstone Slab") - - mcl_stairs.register_stair_and_slab_simple("blackstone_brick_polished", "mcl_blackstone:blackstone_brick_polished", "Polished Blackstone Brick Stair", "Polished Blackstone Brick Slab", "Double Polished Blackstone Brick Slab") --Wall - mcl_walls.register_wall("mcl_blackstone:wall", S("Blackstone Wall"), "mcl_blackstone:blackstone") - - --lavacooling - - minetest.register_abm({ label = "Lava cooling (basalt)", nodenames = {"group:lava"}, @@ -247,9 +212,7 @@ minetest.register_abm({ chance = 1, action = function(pos, node, active_object_count, active_object_count_wider) local water = minetest.find_nodes_in_area({x=pos.x-1, y=pos.y-1, z=pos.z-1}, {x=pos.x+1, y=pos.y+1, z=pos.z+1}, "mcl_core:ice") - local lavatype = minetest.registered_nodes[node.name].liquidtype - for w=1, #water do local waternode = minetest.get_node(water[w]) local watertype = minetest.registered_nodes[waternode.name].liquidtype @@ -264,9 +227,6 @@ minetest.register_abm({ end, }) - - - minetest.register_abm({ label = "Lava cooling (blackstone)", nodenames = {"group:lava"}, @@ -275,9 +235,7 @@ minetest.register_abm({ chance = 1, action = function(pos, node, active_object_count, active_object_count_wider) local water = minetest.find_nodes_in_area({x=pos.x-1, y=pos.y-1, z=pos.z-1}, {x=pos.x+1, y=pos.y+1, z=pos.z+1}, "mcl_core:packed_ice") - local lavatype = minetest.registered_nodes[node.name].liquidtype - for w=1, #water do local waternode = minetest.get_node(water[w]) local watertype = minetest.registered_nodes[waternode.name].liquidtype @@ -293,9 +251,6 @@ minetest.register_abm({ }) --crafting - - - minetest.register_craft({ output = 'mcl_blackstone:blackstone_polished 4', recipe = { @@ -303,7 +258,6 @@ minetest.register_craft({ {'mcl_blackstone:blackstone','mcl_blackstone:blackstone'}, } }) - minetest.register_craft({ output = 'mcl_blackstone:basalt_polished 4', recipe = { @@ -311,7 +265,6 @@ minetest.register_craft({ {'mcl_blackstone:basalt','mcl_blackstone:basalt'}, } }) - minetest.register_craft({ output = 'mcl_blackstone:blackstone_chiseled_polished 2', recipe = { @@ -326,8 +279,6 @@ minetest.register_craft({ {'mcl_blackstone:blackstone_polished','mcl_blackstone:blackstone_polished'}, } }) - - minetest.register_craft({ output = 'mcl_tools:pick_stone', recipe = { @@ -336,8 +287,6 @@ minetest.register_craft({ {'', 'mcl_core:stick', ''}, } }) - - minetest.register_craft({ output = 'mcl_tools:axe_stone', recipe = { @@ -346,8 +295,6 @@ minetest.register_craft({ {'', 'mcl_core:stick'}, } }) - - minetest.register_craft({ output = 'mcl_tools:axe_stone', recipe = { @@ -356,8 +303,6 @@ minetest.register_craft({ {'', 'mcl_core:stick'}, } }) - - minetest.register_craft({ output = 'mcl_tools:shovel_stone', recipe = { @@ -366,8 +311,6 @@ minetest.register_craft({ {'mcl_core:stick'}, } }) - - minetest.register_craft({ output = 'mcl_tools:sword_stone', recipe = { @@ -376,8 +319,6 @@ minetest.register_craft({ {'mcl_core:stick'}, } }) - - minetest.register_craft({ output = "mcl_farming:hoe_stone", recipe = { @@ -394,7 +335,6 @@ minetest.register_craft({ {"mcl_core:stick", ""} } }) - minetest.register_craft({ output = "mcl_furnaces:furnace", recipe = { @@ -403,7 +343,6 @@ minetest.register_craft({ {"mcl_blackstone:blackstone", "mcl_blackstone:blackstone", "mcl_blackstone:blackstone"} } }) - minetest.register_craft({ output = 'mcl_blackstone:quartz_brick 4', recipe = { @@ -411,22 +350,18 @@ minetest.register_craft({ {'mcl_nether:quartz_block','mcl_nether:quartz_block'}, } }) - - minetest.register_craft({ type = "cooking", output = 'mcl_core:gold_ingot', recipe = 'mcl_blackstone:nether_gold', cooktime = 10, }) - minetest.register_craft({ type = "cooking", output = 'mcl_core:gold_ingot', recipe = 'mcl_blackstone:blackstone_gilded', cooktime = 10, }) - minetest.register_craft({ type = "cooking", output = 'mcl_nether:quartz_smooth', @@ -594,7 +529,6 @@ end -- -- 3d torch part -- - -- Check if placement at given node is allowed local function check_placement_allowed(node, wdir) -- Torch placement rules: Disallow placement on some nodes. General rule: Solid, opaque, full cube collision box nodes are allowed. @@ -642,13 +576,11 @@ mcl_torches.register_torch = function(substring, description, doc_items_longdesc if mesh_floor == nil then mesh_floor = "mcl_torches_torch_floor.obj" end if mesh_wall == nil then mesh_wall = "mcl_torches_torch_wall.obj" end if groups == nil then groups = {} end - groups.attached_node = 1 groups.torch = 1 groups.dig_by_water = 1 groups.destroy_by_lava_flow = 1 groups.dig_by_piston = 1 - local floordef = { description = description, _doc_items_longdesc = doc_items_longdesc, @@ -679,31 +611,25 @@ mcl_torches.register_torch = function(substring, description, doc_items_longdesc -- no interaction possible with entities, for now. return itemstack end - local under = pointed_thing.under local node = minetest.get_node(under) local def = minetest.registered_nodes[node.name] if not def then return itemstack end - -- Call on_rightclick if the pointed node defines it if placer and not placer:get_player_control().sneak then if minetest.registered_nodes[node.name] and minetest.registered_nodes[node.name].on_rightclick then return minetest.registered_nodes[node.name].on_rightclick(under, node, placer, itemstack) or itemstack end end - local above = pointed_thing.above local wdir = minetest.dir_to_wallmounted({x = under.x - above.x, y = under.y - above.y, z = under.z - above.z}) - if check_placement_allowed(node, wdir) == false then return itemstack end - local itemstring = itemstack:get_name() local fakestack = ItemStack(itemstack) local idef = fakestack:get_definition() local retval - if wdir == 1 then retval = fakestack:set_name(itemstring) else @@ -712,11 +638,9 @@ mcl_torches.register_torch = function(substring, description, doc_items_longdesc if not retval then return itemstack end - local success itemstack, success = minetest.item_place(fakestack, placer, pointed_thing, wdir) itemstack:set_name(itemstring) - if success and idef.sounds and idef.sounds.place then minetest.sound_play(idef.sounds.place, {pos=under, gain=1}, true) end @@ -735,10 +659,8 @@ mcl_torches.register_torch = function(substring, description, doc_items_longdesc end end minetest.register_node(itemstring, floordef) - local groups_wall = table.copy(groups) groups_wall.torch = 2 - local walldef = { drawtype = "mesh", mesh = mesh_wall, @@ -771,13 +693,10 @@ mcl_torches.register_torch = function(substring, description, doc_items_longdesc end end minetest.register_node(itemstring_wall, walldef) - - -- Add entry alias for the Help if minetest.get_modpath("doc") then doc.add_entry_alias("nodes", itemstring, "nodes", itemstring_wall) end - end mcl_torches.register_torch("soul_torch", From 2d81d31139ed581ec3d3be8be5b24a4a87ca46e1 Mon Sep 17 00:00:00 2001 From: cora Date: Wed, 27 Apr 2022 01:09:24 +0200 Subject: [PATCH 11/18] Fix soul torch to use the actual mcl_torches api --- mods/ITEMS/mcl_blackstone/init.lua | 319 ++--------------------------- 1 file changed, 13 insertions(+), 306 deletions(-) diff --git a/mods/ITEMS/mcl_blackstone/init.lua b/mods/ITEMS/mcl_blackstone/init.lua index 7ecd19c4e..b508b0647 100644 --- a/mods/ITEMS/mcl_blackstone/init.lua +++ b/mods/ITEMS/mcl_blackstone/init.lua @@ -428,301 +428,22 @@ if minetest.settings:get_bool("mcl_generate_ores", true) then }) end ---torches (parts are copied from mineclone2) -local spawn_flames_floor = function(pos) - -- Flames - mcl_particles.add_node_particlespawner(pos, { - amount = 8, - time = 0, - minpos = vector.add(pos, { x = -0.1, y = 0.05, z = -0.1 }), - maxpos = vector.add(pos, { x = 0.1, y = 0.15, z = 0.1 }), - minvel = { x = -0.01, y = 0, z = -0.01 }, - maxvel = { x = 0.01, y = 0.1, z = 0.01 }, - minexptime = 0.3, - maxexptime = 0.6, - minsize = 0.7, - maxsize = 2, - texture = "mcl_particles_flame.png", - glow = 10, - }, "low") - -- Smoke - mcl_particles.add_node_particlespawner(pos, { - amount = 0.5, - time = 0, - minpos = vector.add(pos, { x = -1/16, y = 0.04, z = -1/16 }), - maxpos = vector.add(pos, { x = -1/16, y = 0.06, z = -1/16 }), - minvel = { x = 0, y = 0.5, z = 0 }, - maxvel = { x = 0, y = 0.6, z = 0 }, - minexptime = 2.0, - maxexptime = 2.0, - minsize = 1.5, - maxsize = 1.5, - texture = "mcl_particles_smoke_anim.png", - animation = { - type = "vertical_frames", - aspect_w = 8, - aspect_h = 8, - length = 2.05, - }, - }, "medium") -end - -local spawn_flames_wall = function(pos, param2) - local minrelpos, maxrelpos - local dir = minetest.wallmounted_to_dir(param2) - if dir.x < 0 then - minrelpos = { x = -0.38, y = 0.04, z = -0.1 } - maxrelpos = { x = -0.2, y = 0.14, z = 0.1 } - elseif dir.x > 0 then - minrelpos = { x = 0.2, y = 0.04, z = -0.1 } - maxrelpos = { x = 0.38, y = 0.14, z = 0.1 } - elseif dir.z < 0 then - minrelpos = { x = -0.1, y = 0.04, z = -0.38 } - maxrelpos = { x = 0.1, y = 0.14, z = -0.2 } - elseif dir.z > 0 then - minrelpos = { x = -0.1, y = 0.04, z = 0.2 } - maxrelpos = { x = 0.1, y = 0.14, z = 0.38 } - else - return - end - -- Flames - mcl_particles.add_node_particlespawner(pos, { - amount = 8, - time = 0, - minpos = vector.add(pos, minrelpos), - maxpos = vector.add(pos, maxrelpos), - minvel = { x = -0.01, y = 0, z = -0.01 }, - maxvel = { x = 0.01, y = 0.1, z = 0.01 }, - minexptime = 0.3, - maxexptime = 0.6, - minsize = 0.7, - maxsize = 2, - texture = "mcl_particles_flame.png", - glow = 10, - }, "low") - -- Smoke - mcl_particles.add_node_particlespawner(pos, { - amount = 0.5, - time = 0, - minpos = vector.add(pos, minrelpos), - maxpos = vector.add(pos, maxrelpos), - minvel = { x = 0, y = 0.5, z = 0 }, - maxvel = { x = 0, y = 0.6, z = 0 }, - minexptime = 2.0, - maxexptime = 2.0, - minsize = 1.5, - maxsize = 1.5, - texture = "mcl_particles_smoke_anim.png", - animation = { - type = "vertical_frames", - aspect_w = 8, - aspect_h = 8, - length = 2.05, - }, - }, "medium") -end - -local remove_flames = function(pos) - mcl_particles.delete_node_particlespawners(pos) -end - --- --- 3d torch part --- --- Check if placement at given node is allowed -local function check_placement_allowed(node, wdir) - -- Torch placement rules: Disallow placement on some nodes. General rule: Solid, opaque, full cube collision box nodes are allowed. - -- Special allowed nodes: - -- * soul sand - -- * mob spawner - -- * chorus flower - -- * glass, barrier, ice - -- * Fence, wall, end portal frame with ender eye: Only on top - -- * Slab, stairs: Only on top if upside down - - -- Special forbidden nodes: - -- * Piston, sticky piston - local def = minetest.registered_nodes[node.name] - if not def then - return false - -- No ceiling torches - elseif wdir == 0 then - return false - elseif not def.buildable_to then - if node.name ~= "mcl_core:ice" and node.name ~= "mcl_nether:soul_sand" and node.name ~= "mcl_mobspawners:spawner" and node.name ~= "mcl_core:barrier" and node.name ~= "mcl_end:chorus_flower" and node.name ~= "mcl_end:chorus_flower_dead" and (not def.groups.glass) and - ((not def.groups.solid) or (not def.groups.opaque)) then - -- Only allow top placement on these nodes - if node.name == "mcl_end:dragon_egg" or node.name == "mcl_portals:end_portal_frame_eye" or def.groups.fence == 1 or def.groups.wall or def.groups.slab_top == 1 or def.groups.anvil or def.groups.pane or (def.groups.stair == 1 and minetest.facedir_to_dir(node.param2).y ~= 0) then - if wdir ~= 1 then - return false - end - else - return false - end - elseif minetest.get_item_group(node.name, "piston") >= 1 then - return false - end - end - return true -end - -mcl_torches = {} - -mcl_torches.register_torch = function(substring, description, doc_items_longdesc, doc_items_usagehelp, icon, mesh_floor, mesh_wall, tiles, light, groups, sounds, moredef, moredef_floor, moredef_wall) - local itemstring = minetest.get_current_modname()..":"..substring - local itemstring_wall = minetest.get_current_modname()..":"..substring.."_wall" - - if light == nil then light = minetest.LIGHT_MAX end - if mesh_floor == nil then mesh_floor = "mcl_torches_torch_floor.obj" end - if mesh_wall == nil then mesh_wall = "mcl_torches_torch_wall.obj" end - if groups == nil then groups = {} end - groups.attached_node = 1 - groups.torch = 1 - groups.dig_by_water = 1 - groups.destroy_by_lava_flow = 1 - groups.dig_by_piston = 1 - local floordef = { - description = description, - _doc_items_longdesc = doc_items_longdesc, - _doc_items_usagehelp = doc_items_usagehelp, - drawtype = "mesh", - mesh = mesh_floor, - inventory_image = icon, - wield_image = icon, - tiles = tiles, - paramtype = "light", - paramtype2 = "wallmounted", - sunlight_propagates = true, - is_ground_content = false, - walkable = false, - liquids_pointable = false, - light_source = light, - groups = groups, - drop = itemstring, - selection_box = { - type = "wallmounted", - wall_top = {-1/16, -1/16, -1/16, 1/16, 0.5, 1/16}, - wall_bottom = {-1/16, -0.5, -1/16, 1/16, 1/16, 1/16}, - }, - sounds = sounds, - node_placement_prediction = "", - on_place = function(itemstack, placer, pointed_thing) - if pointed_thing.type ~= "node" then - -- no interaction possible with entities, for now. - return itemstack - end - local under = pointed_thing.under - local node = minetest.get_node(under) - local def = minetest.registered_nodes[node.name] - if not def then return itemstack end - -- Call on_rightclick if the pointed node defines it - if placer and not placer:get_player_control().sneak then - if minetest.registered_nodes[node.name] and minetest.registered_nodes[node.name].on_rightclick then - return minetest.registered_nodes[node.name].on_rightclick(under, node, placer, itemstack) or itemstack - end - end - local above = pointed_thing.above - local wdir = minetest.dir_to_wallmounted({x = under.x - above.x, y = under.y - above.y, z = under.z - above.z}) - if check_placement_allowed(node, wdir) == false then - return itemstack - end - local itemstring = itemstack:get_name() - local fakestack = ItemStack(itemstack) - local idef = fakestack:get_definition() - local retval - if wdir == 1 then - retval = fakestack:set_name(itemstring) - else - retval = fakestack:set_name(itemstring_wall) - end - if not retval then - return itemstack - end - local success - itemstack, success = minetest.item_place(fakestack, placer, pointed_thing, wdir) - itemstack:set_name(itemstring) - if success and idef.sounds and idef.sounds.place then - minetest.sound_play(idef.sounds.place, {pos=under, gain=1}, true) - end - return itemstack - end, - on_rotate = false, - } - if moredef ~= nil then - for k,v in pairs(moredef) do - floordef[k] = v - end - end - if moredef_floor ~= nil then - for k,v in pairs(moredef_floor) do - floordef[k] = v - end - end - minetest.register_node(itemstring, floordef) - local groups_wall = table.copy(groups) - groups_wall.torch = 2 - local walldef = { - drawtype = "mesh", - mesh = mesh_wall, - tiles = tiles, - paramtype = "light", - paramtype2 = "wallmounted", - sunlight_propagates = true, - is_ground_content = false, - walkable = false, - light_source = light, - groups = groups_wall, - drop = itemstring, - selection_box = { - type = "wallmounted", - wall_top = {-0.1, -0.1, -0.1, 0.1, 0.5, 0.1}, - wall_bottom = {-0.1, -0.5, -0.1, 0.1, 0.1, 0.1}, - wall_side = {-0.5, -0.5, -0.1, -0.2, 0.1, 0.1}, - }, - sounds = sounds, - on_rotate = false, - } - if moredef ~= nil then - for k,v in pairs(moredef) do - walldef[k] = v - end - end - if moredef_wall ~= nil then - for k,v in pairs(moredef_wall) do - walldef[k] = v - end - end - minetest.register_node(itemstring_wall, walldef) - -- Add entry alias for the Help - if minetest.get_modpath("doc") then - doc.add_entry_alias("nodes", itemstring, "nodes", itemstring_wall) - end -end - -mcl_torches.register_torch("soul_torch", - S("Soul Torch"), - S("Torches are light sources which can be placed at the side or on the top of most blocks."), - nil, - "soul_torch_on_floor.png", - "mcl_torches_torch_floor.obj", "mcl_torches_torch_wall.obj", - {{ +--soul torch +mcl_torches.register_torch({ + name="soul_torch", + description=S("Soul Torch"), + doc_items_longdesc = S("Torches are light sources which can be placed at the side or on the top of most blocks."), + doc_items_hidden = false, + icon="soul_torch_on_floor.png", + tiles = {{ name = "soul_torch_on_floor_animated.png", animation = {type = "vertical_frames", aspect_w = 16, aspect_h = 16, length = 3.3} }}, - LIGHT_TORCH, - {dig_immediate=3, torch=1, deco_block=1}, - mcl_sounds.node_sound_wood_defaults(), - {_doc_items_hidden = false, - on_destruct = function(pos) - remove_flames(pos) - end}, - {on_construct = function(pos) - spawn_flames_floor(pos) - end}, - {on_construct = function(pos) - local node = minetest.get_node(pos) - spawn_flames_wall(pos, node.param2) - end}) + light = 12, --soul torches are a bit dimmer than normal torches + groups = {dig_immediate = 3, deco_block = 1}, + sounds = mcl_sounds.node_sound_wood_defaults(), + particles = true, +}) minetest.register_craft({ output = "mcl_blackstone:soul_torch 4", @@ -732,17 +453,3 @@ minetest.register_craft({ { "mcl_core:stick" }, } }) - -minetest.register_lbm({ - label = "Torch flame particles", - name = "mcl_blackstone:flames", - nodenames = {"mcl_blackstone:soul_torch", "mcl_blackstone:soul_torch_wall"}, - run_at_every_load = true, - action = function(pos, node) - if node.name == "mcl_blackstone:soul_torch" then - spawn_flames_floor(pos) - elseif node.name == "mcl_blackstone:soul_torch" then - spawn_flames_wall(pos, node.param2) - end - end, -}) From 29c16eaa751739d4eaf5c56c95b6c7a9b1b4253c Mon Sep 17 00:00:00 2001 From: cora Date: Wed, 27 Apr 2022 01:16:18 +0200 Subject: [PATCH 12/18] remove superfluous torch models --- .../models/mcl_torches_torch_floor.obj | 29 ------------------- .../models/mcl_torches_torch_wall.obj | 29 ------------------- 2 files changed, 58 deletions(-) delete mode 100644 mods/ITEMS/mcl_blackstone/models/mcl_torches_torch_floor.obj delete mode 100644 mods/ITEMS/mcl_blackstone/models/mcl_torches_torch_wall.obj diff --git a/mods/ITEMS/mcl_blackstone/models/mcl_torches_torch_floor.obj b/mods/ITEMS/mcl_blackstone/models/mcl_torches_torch_floor.obj deleted file mode 100644 index ac4234d3e..000000000 --- a/mods/ITEMS/mcl_blackstone/models/mcl_torches_torch_floor.obj +++ /dev/null @@ -1,29 +0,0 @@ -# Blender v2.76 (sub 0) OBJ File: 'torch_on_floor_node.blend' -# www.blender.org -o torch_Cube_Cube.001_Cube_Cube.001_Material.001 -v 0.062500 0.062500 0.062500 -v 0.062500 0.062500 -0.062500 -v -0.062500 0.062500 -0.062500 -v -0.062500 0.062500 0.062500 -v -0.062500 -0.500000 0.062500 -v 0.062500 -0.500000 0.062500 -v 0.062500 -0.500000 -0.062500 -v -0.062500 -0.500000 -0.062500 -vt 0.562500 0.500000 -vt 0.562500 0.625000 -vt 0.437500 0.625000 -vt 0.437500 0.500000 -vt 0.437500 0.000000 -vt 0.562500 0.000000 -vt 0.562500 0.125000 -vt 0.437500 0.125000 -vn 0.000000 1.000000 0.000000 -vn 0.000000 0.000000 -1.000000 -vn 1.000000 0.000000 0.000000 -s 1 -f 1/1/1 2/2/1 3/3/1 4/4/1 -f 5/5/1 6/6/1 7/7/1 8/8/1 -f 1/2/2 6/6/2 5/5/2 4/3/2 -f 2/3/3 1/2/3 6/6/3 7/5/3 -f 3/2/2 2/3/2 7/5/2 8/6/2 -f 4/3/3 5/5/3 8/6/3 3/2/3 diff --git a/mods/ITEMS/mcl_blackstone/models/mcl_torches_torch_wall.obj b/mods/ITEMS/mcl_blackstone/models/mcl_torches_torch_wall.obj deleted file mode 100644 index 824223e6d..000000000 --- a/mods/ITEMS/mcl_blackstone/models/mcl_torches_torch_wall.obj +++ /dev/null @@ -1,29 +0,0 @@ -# Blender v2.76 (sub 0) OBJ File: 'torch_on_wall_node.blend' -# www.blender.org -o torch_wall_Cube_Cube.001_Cube_Cube.001_Material.001 -v 0.062469 -0.303502 0.086070 -v 0.062469 -0.195248 0.023570 -v -0.062531 -0.195248 0.023570 -v -0.062531 -0.303502 0.086070 -v -0.062531 -0.584752 -0.401070 -v 0.062469 -0.584752 -0.401070 -v 0.062469 -0.476498 -0.463570 -v -0.062531 -0.476498 -0.463570 -vt 0.562500 0.500000 -vt 0.562500 0.625000 -vt 0.437500 0.625000 -vt 0.437500 0.500000 -vt 0.437500 0.000000 -vt 0.562500 0.000000 -vt 0.562500 0.125000 -vt 0.437500 0.125000 -vn 0.000000 0.500000 0.866000 -vn 0.000000 0.866000 -0.500000 -vn 1.000000 -0.000000 0.000000 -s 1 -f 1/1/1 2/2/1 3/3/1 4/4/1 -f 5/5/1 6/6/1 7/7/1 8/8/1 -f 1/2/2 6/6/2 5/5/2 4/3/2 -f 2/3/3 1/2/3 6/6/3 7/5/3 -f 3/2/2 2/3/2 7/5/2 8/6/2 -f 4/3/3 5/5/3 8/6/3 3/2/3 From 0d8436b343478236531a864717fd8ea2233b4c87 Mon Sep 17 00:00:00 2001 From: cora Date: Wed, 27 Apr 2022 11:48:59 +0200 Subject: [PATCH 13/18] fix soul fire --- mods/ITEMS/mcl_blackstone/init.lua | 40 +++++++++++++----------------- mods/ITEMS/mcl_blackstone/mod.conf | 2 +- 2 files changed, 18 insertions(+), 24 deletions(-) diff --git a/mods/ITEMS/mcl_blackstone/init.lua b/mods/ITEMS/mcl_blackstone/init.lua index b508b0647..fa25b8f59 100644 --- a/mods/ITEMS/mcl_blackstone/init.lua +++ b/mods/ITEMS/mcl_blackstone/init.lua @@ -4,27 +4,6 @@ local LIGHT_TORCH = 10 stairs = {} -local fire_help, eternal_fire_help -if fire_enabled then - fire_help = S("Fire is a damaging and destructive but short-lived kind of block. It will destroy and spread towards near flammable blocks, but fire will disappear when there is nothing to burn left. It will be extinguished by nearby water and rain. Fire can be destroyed safely by punching it, but it is hurtful if you stand directly in it. If a fire is started above netherrack or a magma block, it will immediately turn into an eternal fire.") -else - fire_help = S("Fire is a damaging but non-destructive short-lived kind of block. It will disappear when there is no flammable block around. Fire does not destroy blocks, at least not in this world. It will be extinguished by nearby water and rain. Fire can be destroyed safely by punching it, but it is hurtful if you stand directly in it. If a fire is started above netherrack or a magma block, it will immediately turn into an eternal fire.") -end - -if fire_enabled then - eternal_fire_help = S("Eternal fire is a damaging block that might create more fire. It will create fire around it when flammable blocks are nearby. Eternal fire can be extinguished by punches and nearby water blocks. Other than (normal) fire, eternal fire does not get extinguished on its own and also continues to burn under rain. Punching eternal fire is safe, but it hurts if you stand inside.") -else - eternal_fire_help = S("Eternal fire is a damaging block. Eternal fire can be extinguished by punches and nearby water blocks. Other than (normal) fire, eternal fire does not get extinguished on its own and also continues to burn under rain. Punching eternal fire is safe, but it hurts if you stand inside.") -end - - -local fire_death_messages = { - N("@1 has been cooked crisp."), - N("@1 felt the burn."), - N("@1 died in the flames."), - N("@1 died in a fire."), -} - --nodes local mod_screwdriver = minetest.get_modpath("screwdriver") ~= nil local on_rotate @@ -164,7 +143,7 @@ minetest.register_node("mcl_blackstone:soul_soil", { }) minetest.register_node("mcl_blackstone:soul_fire", { description = S("Eternal Soul Fire"), - _doc_items_longdesc = eternal_fire_help, + _doc_items_longdesc = minetest.registered_nodes["mcl_fire:eternal_fire"]._doc_items_longdesc , drawtype = "firelike", tiles = { { @@ -184,7 +163,7 @@ minetest.register_node("mcl_blackstone:soul_fire", { buildable_to = true, sunlight_propagates = true, damage_per_second = 2, - _mcl_node_death_message = fire_death_messages, + _mcl_node_death_message = minetest.registered_nodes["mcl_fire:fire"]._mcl_node_death_message, groups = {fire = 1, dig_immediate = 3, not_in_creative_inventory = 1, dig_by_piston = 1, destroys_items = 1, set_on_fire=8}, floodable = true, on_flood = function(pos, oldnode, newnode) @@ -192,8 +171,23 @@ minetest.register_node("mcl_blackstone:soul_fire", { minetest.sound_play("fire_extinguish_flame", {pos = pos, gain = 0.25, max_hear_distance = 16}, true) end end, + on_construct=function(pos) + local under = minetest.get_node(vector.offset(pos,0,-1,0)).name + if under ~= "mcl_nether:soul_sand" and under ~= "mcl_blackstone:soul_soil" then + minetest.swap_node(pos, {name = "air"}) + end + end }) +local old_onconstruct=minetest.registered_nodes["mcl_fire:fire"].on_construct +minetest.registered_nodes["mcl_fire:fire"].on_construct=function(pos) + local under = minetest.get_node(vector.offset(pos,0,-1,0)).name + if under == "mcl_nether:soul_sand" or under == "mcl_blackstone:soul_soil" then + minetest.swap_node(pos, {name = "mcl_blackstone:soul_fire"}) + end + old_onconstruct(pos) +end + --slabs/stairs mcl_stairs.register_stair_and_slab_simple("blackstone", "mcl_blackstone:blackstone", "Blackstone Stair", "Blackstone Slab", "Double Blackstone Slab") mcl_stairs.register_stair_and_slab_simple("blackstone_polished", "mcl_blackstone:blackstone_polished", "Polished Blackstone Stair", "Polished Blackstone Slab", "Polished Double Blackstone Slab") diff --git a/mods/ITEMS/mcl_blackstone/mod.conf b/mods/ITEMS/mcl_blackstone/mod.conf index 907293462..8728f5b01 100644 --- a/mods/ITEMS/mcl_blackstone/mod.conf +++ b/mods/ITEMS/mcl_blackstone/mod.conf @@ -1,3 +1,3 @@ name = mcl_blackstone author = debian044 -depends = mcl_core, screwdriver, mcl_stairs, mclx_stairs, mcl_walls, mclx_fences, mcl_torches +depends = mcl_core, screwdriver, mcl_stairs, mclx_stairs, mcl_walls, mclx_fences, mcl_torches, mcl_fire From 23e5a1c7d3124077d80659d7de508c4f9bc80615 Mon Sep 17 00:00:00 2001 From: cora Date: Thu, 28 Apr 2022 01:00:52 +0200 Subject: [PATCH 14/18] Comment out ore generation for now The discussion about how to handle this is still ongoing. Since this is about getting the new nodes disable ore registration for now. --- mods/ITEMS/mcl_blackstone/init.lua | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mods/ITEMS/mcl_blackstone/init.lua b/mods/ITEMS/mcl_blackstone/init.lua index fa25b8f59..31ebc14e6 100644 --- a/mods/ITEMS/mcl_blackstone/init.lua +++ b/mods/ITEMS/mcl_blackstone/init.lua @@ -362,7 +362,7 @@ minetest.register_craft({ recipe = 'mcl_nether:quartz_block', cooktime = 10, }) - +--[[ Commented out for now because there the discussion how to handle this is ongoing] --Generating local specialstones = { "mcl_blackstone:blackstone", "mcl_blackstone:basalt", "mcl_blackstone:soul_soil" } for s=1, #specialstones do @@ -421,7 +421,7 @@ if minetest.settings:get_bool("mcl_generate_ores", true) then y_max = mcl_vars.mg_nether_max, }) end - +--]] --soul torch mcl_torches.register_torch({ name="soul_torch", From b6a647e1192b39576be7c0235567fda6bf953720 Mon Sep 17 00:00:00 2001 From: cora Date: Tue, 3 May 2022 22:18:07 +0200 Subject: [PATCH 15/18] remove unused vars --- mods/ITEMS/mcl_blackstone/init.lua | 15 +-------------- 1 file changed, 1 insertion(+), 14 deletions(-) diff --git a/mods/ITEMS/mcl_blackstone/init.lua b/mods/ITEMS/mcl_blackstone/init.lua index 31ebc14e6..7ffbb40d5 100644 --- a/mods/ITEMS/mcl_blackstone/init.lua +++ b/mods/ITEMS/mcl_blackstone/init.lua @@ -1,23 +1,10 @@ local S = minetest.get_translator("mcl_blackstone") -local N = function(s) return s end -local LIGHT_TORCH = 10 -stairs = {} ---nodes -local mod_screwdriver = minetest.get_modpath("screwdriver") ~= nil local on_rotate -if mod_screwdriver then +if minetest.get_modpath("screwdriver") then on_rotate = screwdriver.rotate_3way end -local alldirs = { - vector.new(1,0,0), - vector.new(0,1,0), - vector.new(0,0,1), - vector.new(-1,0,0), - vector.new(0,-1,0), - vector.new(0,0,-1) -} --Blocks minetest.register_node("mcl_blackstone:blackstone", { From 0c65363a090f6ddc3f39d611fd0440a0d2ff6cdc Mon Sep 17 00:00:00 2001 From: cora Date: Tue, 3 May 2022 22:18:25 +0200 Subject: [PATCH 16/18] replace ' with " --- mods/ITEMS/mcl_blackstone/init.lua | 104 ++++++++++++++--------------- 1 file changed, 52 insertions(+), 52 deletions(-) diff --git a/mods/ITEMS/mcl_blackstone/init.lua b/mods/ITEMS/mcl_blackstone/init.lua index 7ffbb40d5..75b1a5e22 100644 --- a/mods/ITEMS/mcl_blackstone/init.lua +++ b/mods/ITEMS/mcl_blackstone/init.lua @@ -25,11 +25,11 @@ minetest.register_node("mcl_blackstone:blackstone_gilded", { drop = { max_items = 1, items = { - {items = {'mcl_core:gold_nugget 2'},rarity = 5}, - {items = {'mcl_core:gold_nugget 3'},rarity = 5}, - {items = {'mcl_core:gold_nugget 4'},rarity = 5}, - {items = {'mcl_core:gold_nugget 5'},rarity = 5}, - {items = {'mcl_blackstone:blackstone_gilded'}, rarity = 8}, + {items = {"mcl_core:gold_nugget 2"},rarity = 5}, + {items = {"mcl_core:gold_nugget 3"},rarity = 5}, + {items = {"mcl_core:gold_nugget 4"},rarity = 5}, + {items = {"mcl_core:gold_nugget 5"},rarity = 5}, + {items = {"mcl_blackstone:blackstone_gilded"}, rarity = 8}, } }, _mcl_blast_resistance = 2, @@ -46,11 +46,11 @@ minetest.register_node("mcl_blackstone:nether_gold", { drop = { max_items = 1, items = { - {items = {'mcl_core:gold_nugget 2'},rarity = 5}, - {items = {'mcl_core:gold_nugget 3'},rarity = 5}, - {items = {'mcl_core:gold_nugget 4'},rarity = 5}, - {items = {'mcl_core:gold_nugget 5'},rarity = 5}, - {items = {'mcl_blackstone:nether_gold'}, rarity = 8}, + {items = {"mcl_core:gold_nugget 2"},rarity = 5}, + {items = {"mcl_core:gold_nugget 3"},rarity = 5}, + {items = {"mcl_core:gold_nugget 4"},rarity = 5}, + {items = {"mcl_core:gold_nugget 5"},rarity = 5}, + {items = {"mcl_blackstone:nether_gold"}, rarity = 8}, } }, _mcl_blast_resistance = 2, @@ -233,71 +233,71 @@ minetest.register_abm({ --crafting minetest.register_craft({ - output = 'mcl_blackstone:blackstone_polished 4', + output = "mcl_blackstone:blackstone_polished 4", recipe = { - {'mcl_blackstone:blackstone','mcl_blackstone:blackstone'}, - {'mcl_blackstone:blackstone','mcl_blackstone:blackstone'}, + {"mcl_blackstone:blackstone","mcl_blackstone:blackstone"}, + {"mcl_blackstone:blackstone","mcl_blackstone:blackstone"}, } }) minetest.register_craft({ - output = 'mcl_blackstone:basalt_polished 4', + output = "mcl_blackstone:basalt_polished 4", recipe = { - {'mcl_blackstone:basalt','mcl_blackstone:basalt'}, - {'mcl_blackstone:basalt','mcl_blackstone:basalt'}, + {"mcl_blackstone:basalt","mcl_blackstone:basalt"}, + {"mcl_blackstone:basalt","mcl_blackstone:basalt"}, } }) minetest.register_craft({ - output = 'mcl_blackstone:blackstone_chiseled_polished 2', + output = "mcl_blackstone:blackstone_chiseled_polished 2", recipe = { - {'mcl_blackstone:blackstone_polished'}, - {'mcl_blackstone:blackstone_polished'}, + {"mcl_blackstone:blackstone_polished"}, + {"mcl_blackstone:blackstone_polished"}, } }) minetest.register_craft({ - output = 'mcl_blackstone:blackstone_brick_polished 4', + output = "mcl_blackstone:blackstone_brick_polished 4", recipe = { - {'mcl_blackstone:blackstone_polished','mcl_blackstone:blackstone_polished'}, - {'mcl_blackstone:blackstone_polished','mcl_blackstone:blackstone_polished'}, + {"mcl_blackstone:blackstone_polished","mcl_blackstone:blackstone_polished"}, + {"mcl_blackstone:blackstone_polished","mcl_blackstone:blackstone_polished"}, } }) minetest.register_craft({ - output = 'mcl_tools:pick_stone', + output = "mcl_tools:pick_stone", recipe = { - {'mcl_blackstone:blackstone', 'mcl_blackstone:blackstone', 'mcl_blackstone:blackstone'}, - {'', 'mcl_core:stick', ''}, - {'', 'mcl_core:stick', ''}, + {"mcl_blackstone:blackstone", "mcl_blackstone:blackstone", "mcl_blackstone:blackstone"}, + {"", "mcl_core:stick", ""}, + {"", "mcl_core:stick", ""}, } }) minetest.register_craft({ - output = 'mcl_tools:axe_stone', + output = "mcl_tools:axe_stone", recipe = { - {'mcl_blackstone:blackstone', 'mcl_blackstone:blackstone'}, - {'mcl_blackstone:blackstone', 'mcl_core:stick'}, - {'', 'mcl_core:stick'}, + {"mcl_blackstone:blackstone", "mcl_blackstone:blackstone"}, + {"mcl_blackstone:blackstone", "mcl_core:stick"}, + {"", "mcl_core:stick"}, } }) minetest.register_craft({ - output = 'mcl_tools:axe_stone', + output = "mcl_tools:axe_stone", recipe = { - {'mcl_blackstone:blackstone', 'mcl_blackstone:blackstone'}, - {'mcl_core:stick', 'mcl_blackstone:blackstone'}, - {'', 'mcl_core:stick'}, + {"mcl_blackstone:blackstone", "mcl_blackstone:blackstone"}, + {"mcl_core:stick", "mcl_blackstone:blackstone"}, + {"", "mcl_core:stick"}, } }) minetest.register_craft({ - output = 'mcl_tools:shovel_stone', + output = "mcl_tools:shovel_stone", recipe = { - {'mcl_blackstone:blackstone'}, - {'mcl_core:stick'}, - {'mcl_core:stick'}, + {"mcl_blackstone:blackstone"}, + {"mcl_core:stick"}, + {"mcl_core:stick"}, } }) minetest.register_craft({ - output = 'mcl_tools:sword_stone', + output = "mcl_tools:sword_stone", recipe = { - {'mcl_blackstone:blackstone'}, - {'mcl_blackstone:blackstone'}, - {'mcl_core:stick'}, + {"mcl_blackstone:blackstone"}, + {"mcl_blackstone:blackstone"}, + {"mcl_core:stick"}, } }) minetest.register_craft({ @@ -320,33 +320,33 @@ minetest.register_craft({ output = "mcl_furnaces:furnace", recipe = { {"mcl_blackstone:blackstone", "mcl_blackstone:blackstone", "mcl_blackstone:blackstone"}, - {"mcl_blackstone:blackstone", "", "mcl_blackstone:blackstone"}, + {"mcl_blackstone:blackstone", "", "mcl_blackstone:blackstone"}, {"mcl_blackstone:blackstone", "mcl_blackstone:blackstone", "mcl_blackstone:blackstone"} } }) minetest.register_craft({ - output = 'mcl_blackstone:quartz_brick 4', + output = "mcl_blackstone:quartz_brick 4", recipe = { - {'mcl_nether:quartz_block','mcl_nether:quartz_block'}, - {'mcl_nether:quartz_block','mcl_nether:quartz_block'}, + {"mcl_nether:quartz_block","mcl_nether:quartz_block"}, + {"mcl_nether:quartz_block","mcl_nether:quartz_block"}, } }) minetest.register_craft({ type = "cooking", - output = 'mcl_core:gold_ingot', - recipe = 'mcl_blackstone:nether_gold', + output = "mcl_core:gold_ingot", + recipe = "mcl_blackstone:nether_gold", cooktime = 10, }) minetest.register_craft({ type = "cooking", - output = 'mcl_core:gold_ingot', - recipe = 'mcl_blackstone:blackstone_gilded', + output = "mcl_core:gold_ingot", + recipe = "mcl_blackstone:blackstone_gilded", cooktime = 10, }) minetest.register_craft({ type = "cooking", - output = 'mcl_nether:quartz_smooth', - recipe = 'mcl_nether:quartz_block', + output = "mcl_nether:quartz_smooth", + recipe = "mcl_nether:quartz_block", cooktime = 10, }) --[[ Commented out for now because there the discussion how to handle this is ongoing] From 1931a85f247c1e040478eff6a6ea8dce8f8b4055 Mon Sep 17 00:00:00 2001 From: kabou Date: Wed, 4 May 2022 22:38:51 +0200 Subject: [PATCH 17/18] Add blackstone to cobble group. By adding blackstone to the group "cobble", it automatically inherits all crafting recipes and tool repair capabilities that apply to that group. * Add `cobble=1` to blackstone node definition groups. * Remove stone tools and furnace crafting recipes. --- mods/ITEMS/mcl_blackstone/init.lua | 66 +----------------------------- 1 file changed, 1 insertion(+), 65 deletions(-) diff --git a/mods/ITEMS/mcl_blackstone/init.lua b/mods/ITEMS/mcl_blackstone/init.lua index 75b1a5e22..bad755958 100644 --- a/mods/ITEMS/mcl_blackstone/init.lua +++ b/mods/ITEMS/mcl_blackstone/init.lua @@ -12,7 +12,7 @@ minetest.register_node("mcl_blackstone:blackstone", { tiles = {"mcl_blackstone.png"}, sounds = mcl_sounds.node_sound_stone_defaults(), is_ground_content = false, - groups = {cracky = 3, pickaxey=2, material_stone=1}, + groups = {cracky = 3, pickaxey=2, material_stone=1, cobble=1}, _mcl_blast_resistance = 2, _mcl_hardness = 2, }) @@ -260,70 +260,6 @@ minetest.register_craft({ {"mcl_blackstone:blackstone_polished","mcl_blackstone:blackstone_polished"}, } }) -minetest.register_craft({ - output = "mcl_tools:pick_stone", - recipe = { - {"mcl_blackstone:blackstone", "mcl_blackstone:blackstone", "mcl_blackstone:blackstone"}, - {"", "mcl_core:stick", ""}, - {"", "mcl_core:stick", ""}, - } -}) -minetest.register_craft({ - output = "mcl_tools:axe_stone", - recipe = { - {"mcl_blackstone:blackstone", "mcl_blackstone:blackstone"}, - {"mcl_blackstone:blackstone", "mcl_core:stick"}, - {"", "mcl_core:stick"}, - } -}) -minetest.register_craft({ - output = "mcl_tools:axe_stone", - recipe = { - {"mcl_blackstone:blackstone", "mcl_blackstone:blackstone"}, - {"mcl_core:stick", "mcl_blackstone:blackstone"}, - {"", "mcl_core:stick"}, - } -}) -minetest.register_craft({ - output = "mcl_tools:shovel_stone", - recipe = { - {"mcl_blackstone:blackstone"}, - {"mcl_core:stick"}, - {"mcl_core:stick"}, - } -}) -minetest.register_craft({ - output = "mcl_tools:sword_stone", - recipe = { - {"mcl_blackstone:blackstone"}, - {"mcl_blackstone:blackstone"}, - {"mcl_core:stick"}, - } -}) -minetest.register_craft({ - output = "mcl_farming:hoe_stone", - recipe = { - {"mcl_blackstone:blackstone", "mcl_blackstone:blackstone"}, - {"", "mcl_core:stick"}, - {"", "mcl_core:stick"} - } -}) -minetest.register_craft({ - output = "mcl_farming:hoe_stone", - recipe = { - {"mcl_blackstone:blackstone", "mcl_blackstone:blackstone"}, - {"mcl_core:stick", ""}, - {"mcl_core:stick", ""} - } -}) -minetest.register_craft({ - output = "mcl_furnaces:furnace", - recipe = { - {"mcl_blackstone:blackstone", "mcl_blackstone:blackstone", "mcl_blackstone:blackstone"}, - {"mcl_blackstone:blackstone", "", "mcl_blackstone:blackstone"}, - {"mcl_blackstone:blackstone", "mcl_blackstone:blackstone", "mcl_blackstone:blackstone"} - } -}) minetest.register_craft({ output = "mcl_blackstone:quartz_brick 4", recipe = { From 11e8e7d4cc82760a2c3731cd00760ebeec5cd359 Mon Sep 17 00:00:00 2001 From: cora Date: Tue, 24 May 2022 13:24:22 +0200 Subject: [PATCH 18/18] Add soul_group to s.soil&sand, torch fix recpipe --- GROUPS.md | 1 + mods/ITEMS/mcl_blackstone/init.lua | 10 +++++----- mods/ITEMS/mcl_nether/init.lua | 2 +- 3 files changed, 7 insertions(+), 6 deletions(-) diff --git a/GROUPS.md b/GROUPS.md index 60d452ecd..3c954111f 100644 --- a/GROUPS.md +++ b/GROUPS.md @@ -103,6 +103,7 @@ Please read to learn how digging times * `enchantability=X`: How good the enchantments are the item gets (1 equals book) * `enchanted=1`: The item is already enchanted, meaning that it can't be enchanted using an enchanting table * `cobble=1`: Cobblestone of any kind +* `soul_block`: Fire burning on these blocks turns to soul fire, can be used to craft soul torch ### Material groups diff --git a/mods/ITEMS/mcl_blackstone/init.lua b/mods/ITEMS/mcl_blackstone/init.lua index bad755958..0fa71ca81 100644 --- a/mods/ITEMS/mcl_blackstone/init.lua +++ b/mods/ITEMS/mcl_blackstone/init.lua @@ -124,7 +124,7 @@ minetest.register_node("mcl_blackstone:soul_soil", { tiles = {"mcl_blackstone_soul_soil.png"}, is_ground_content = false, sounds = mcl_sounds.node_sound_sand_defaults(), - groups = {cracky = 3, handy=1, shovely=1}, + groups = { cracky = 3, handy = 1, shovely = 1, soul_block = 1 }, _mcl_blast_resistance = 0.5, _mcl_hardness = 0.5, }) @@ -154,13 +154,13 @@ minetest.register_node("mcl_blackstone:soul_fire", { groups = {fire = 1, dig_immediate = 3, not_in_creative_inventory = 1, dig_by_piston = 1, destroys_items = 1, set_on_fire=8}, floodable = true, on_flood = function(pos, oldnode, newnode) - if minetest.get_item_group(newnode.name, "water") ~= 0 then + if minetest.get_item_group(newnode.name, "water") > 0 then minetest.sound_play("fire_extinguish_flame", {pos = pos, gain = 0.25, max_hear_distance = 16}, true) end end, on_construct=function(pos) local under = minetest.get_node(vector.offset(pos,0,-1,0)).name - if under ~= "mcl_nether:soul_sand" and under ~= "mcl_blackstone:soul_soil" then + if minetest.get_item_group(under,"soul_block") > 0 then minetest.swap_node(pos, {name = "air"}) end end @@ -169,7 +169,7 @@ minetest.register_node("mcl_blackstone:soul_fire", { local old_onconstruct=minetest.registered_nodes["mcl_fire:fire"].on_construct minetest.registered_nodes["mcl_fire:fire"].on_construct=function(pos) local under = minetest.get_node(vector.offset(pos,0,-1,0)).name - if under == "mcl_nether:soul_sand" or under == "mcl_blackstone:soul_soil" then + if minetest.get_item_group(under,"soul_block") > 0 then minetest.swap_node(pos, {name = "mcl_blackstone:soul_fire"}) end old_onconstruct(pos) @@ -366,7 +366,7 @@ minetest.register_craft({ output = "mcl_blackstone:soul_torch 4", recipe = { {"group:coal"}, - { "mcl_nether:soul_sand" }, { "mcl_core:stick" }, + { "group:soul_block" }, } }) diff --git a/mods/ITEMS/mcl_nether/init.lua b/mods/ITEMS/mcl_nether/init.lua index b474065a5..2d8def90d 100644 --- a/mods/ITEMS/mcl_nether/init.lua +++ b/mods/ITEMS/mcl_nether/init.lua @@ -130,7 +130,7 @@ minetest.register_node("mcl_nether:soul_sand", { stack_max = 64, tiles = {"mcl_nether_soul_sand.png"}, is_ground_content = true, - groups = {handy=1,shovely=1, building_block=1,soil_nether_wart=1, material_sand=1}, + groups = {handy = 1, shovely = 1, building_block = 1, soil_nether_wart = 1, material_sand = 1, soul_block = 1 }, collision_box = { type = "fixed", fixed = { -0.5, -0.5, -0.5, 0.5, 0.5 - 2/16, 0.5 },