diff --git a/Bucket_Game-base/abriflame_fire_starter_graphic-vs-211114a/mods/coderbuild/abriflame/init.lua b/Bucket_Game-base/abriflame_fire_starter_graphic-vs-211114a/mods/coderbuild/abriflame/init.lua new file mode 100644 index 0000000..7600517 --- /dev/null +++ b/Bucket_Game-base/abriflame_fire_starter_graphic-vs-211114a/mods/coderbuild/abriflame/init.lua @@ -0,0 +1,155 @@ + +local function smoke(pos, node, clicker, enable) + local meta = minetest.get_meta(pos) + local handler = meta:get_int("sound") + local particle = meta:get_int("smoke") + + if particle ~= 0 or enable ~= true then + if handler then + minetest.sound_stop(handler) + end + minetest.delete_particlespawner(particle) + meta:set_int("smoke", 0) + meta:set_int("sound", 0) + return + end + + local node = minetest.get_node({x = pos.x, y = pos.y + 1, z = pos.z}).name + + if node ~= "air" or particle ~= 0 then + return + end + + particle = minetest.add_particlespawner({ + amount = 4, + time = 0, + collisiondetection = true, + minpos = {x = pos.x - 0.25, y = pos.y + 0.4, z = pos.z-0.25}, + maxpos = {x = pos.x + 0.25, y = pos.y + 5, z = pos.z + 0.25}, + minvel = {x = -0.2, y = 0.3, z = -0.2}, + maxvel = {x = 0.2, y = 1, z = 0.2}, + minacc = {x = 0, y = 0, z = 0}, + maxacc = {x = 0, y = 0.5, z = 0}, + minexptime = 1, + maxexptime = 3, + minsize = 4, + maxsize = 8, + texture = "smoke_particle.png", + }) + + handler = minetest.sound_play("fire_small", { + pos = pos, + max_hear_distance = 5, + loop = true + }) + + meta:set_int("smoke", particle) + meta:set_int("sound", handler) +end + + +-- flame types +local flame_types = { + "green", "yellow", "black", "orange", "cyan", + "magenta", "purple", "blue", "red", "frosted" +} + +for _, f in pairs(flame_types) do + minetest.register_node("abriflame:" .. f .. "_fire", { + inventory_image = f .. "_fire_inv.png", + wield_image = f .. "_fire_inv.png", + description = f .. " fire", + drawtype = "plantlike", + paramtype = "light", + groups = {dig_immediate = 3, not_in_creative_inventory = 1}, + sunlight_propagates = true, + buildable_to = true, + walkable = false, + light_source = 14, + waving = 1, + drop = "", + tiles = {{ + name = f .. "_fire_animated.png", + animation = { + type = "vertical_frames", + aspect_w = 16, + aspect_h = 16, + length = 1.5 + }, + }}, + + on_rightclick = function (pos, node, clicker) + smoke(pos, node, clicker, true) + end, + + on_destruct = function (pos) + smoke(pos, nil, nil, false) + minetest.sound_play("fire_extinguish_flame", { + pos = pos, + max_hear_distance = 5, + gain = 0.25 + }) + end, + }) +end + + +-- fire starter tool +minetest.register_tool("abriflame:flint", { + description = "Fire Starter", + inventory_image = "fire_flint_steel.png", + stack_max = 1, + liquids_pointable = false, + + on_use = function(itemstack, user, pointed_thing) + if pointed_thing.type ~= "node" then + return itemstack + end + + local pos = ({x = pointed_thing.under.x, + y = pointed_thing.under.y + 1, + z = pointed_thing.under.z}) + + if minetest.get_node(pos).name ~= "air" or + minetest.is_protected(pos, user:get_player_name()) or + minetest.is_protected(pointed_thing.above, user:get_player_name()) then + return itemstack + end + + local nod = minetest.get_node(pointed_thing.under).name + + if nod == "abriglass:stained_glass_green" then + minetest.set_node(pos, {name = "abriflame:green_fire"}) + elseif nod == "abriglass:stained_glass_yellow" then + minetest.set_node(pos, {name = "abriflame:yellow_fire"}) + elseif nod == "abriglass:stained_glass_black" then + minetest.set_node(pos, {name = "abriflame:black_fire"}) + elseif nod == "abriglass:stained_glass_orange" then + minetest.set_node(pos, {name = "abriflame:orange_fire"}) + elseif nod == "abriglass:stained_glass_cyan" then + minetest.set_node(pos, {name = "abriflame:cyan_fire"}) + elseif nod == "abriglass:stained_glass_magenta" then + minetest.set_node(pos, {name = "abriflame:magenta_fire"}) + elseif nod == "abriglass:stained_glass_purple" then + minetest.set_node(pos, {name = "abriflame:purple_fire"}) + elseif nod == "abriglass:stained_glass_blue" then + minetest.set_node(pos, {name = "abriflame:blue_fire"}) + elseif nod == "abriglass:stained_glass_red" then + minetest.set_node(pos, {name = "abriflame:red_fire"}) + elseif nod == "abriglass:stained_glass_frosted" then + minetest.set_node(pos, {name = "abriflame:frosted_fire"}) + end + + itemstack:add_wear(65535 / 65) + return itemstack + end, +}) + + +-- fire starter tool recipe +minetest.register_craft({ + output = "abriflame:flint", + recipe = { + {"default:mese_crystal_fragment", "default:steel_ingot"} + } +}) diff --git a/Bucket_Game-base/abriflame_fire_starter_graphic-vs-211114a/mods/coderbuild/abriflame/license.txt b/Bucket_Game-base/abriflame_fire_starter_graphic-vs-211114a/mods/coderbuild/abriflame/license.txt new file mode 100644 index 0000000..ab4036c --- /dev/null +++ b/Bucket_Game-base/abriflame_fire_starter_graphic-vs-211114a/mods/coderbuild/abriflame/license.txt @@ -0,0 +1,35 @@ + +Textures: +Original textures from Semmett9's fake_fire, now found in the homedecor modpack (https://github.com/minetest-mods/homedecor_modpack), +with adjustments and recolouring by Shara RedCat. +License: CC-BY-SA 3.0 or higher (https://creativecommons.org/licenses/by/3.0/). + +Code: +License: MIT (https://opensource.org/licenses/MIT) +By Shara RedCat and tenplus1 + + + +--- + +The MIT License (MIT) + +Copyright (c) 2017 Shara RedCat + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/Bucket_Game-branches/abriflame_fire_starter_graphic-vs-211114a/mods/coderbuild/abriflame/init.lua b/Bucket_Game-branches/abriflame_fire_starter_graphic-vs-211114a/mods/coderbuild/abriflame/init.lua new file mode 100644 index 0000000..6f32bb5 --- /dev/null +++ b/Bucket_Game-branches/abriflame_fire_starter_graphic-vs-211114a/mods/coderbuild/abriflame/init.lua @@ -0,0 +1,155 @@ + +local function smoke(pos, node, clicker, enable) + local meta = minetest.get_meta(pos) + local handler = meta:get_int("sound") + local particle = meta:get_int("smoke") + + if particle ~= 0 or enable ~= true then + if handler then + minetest.sound_stop(handler) + end + minetest.delete_particlespawner(particle) + meta:set_int("smoke", 0) + meta:set_int("sound", 0) + return + end + + local node = minetest.get_node({x = pos.x, y = pos.y + 1, z = pos.z}).name + + if node ~= "air" or particle ~= 0 then + return + end + + particle = minetest.add_particlespawner({ + amount = 4, + time = 0, + collisiondetection = true, + minpos = {x = pos.x - 0.25, y = pos.y + 0.4, z = pos.z-0.25}, + maxpos = {x = pos.x + 0.25, y = pos.y + 5, z = pos.z + 0.25}, + minvel = {x = -0.2, y = 0.3, z = -0.2}, + maxvel = {x = 0.2, y = 1, z = 0.2}, + minacc = {x = 0, y = 0, z = 0}, + maxacc = {x = 0, y = 0.5, z = 0}, + minexptime = 1, + maxexptime = 3, + minsize = 4, + maxsize = 8, + texture = "smoke_particle.png", + }) + + handler = minetest.sound_play("fire_small", { + pos = pos, + max_hear_distance = 5, + loop = true + }) + + meta:set_int("smoke", particle) + meta:set_int("sound", handler) +end + + +-- flame types +local flame_types = { + "green", "yellow", "black", "orange", "cyan", + "magenta", "purple", "blue", "red", "frosted" +} + +for _, f in pairs(flame_types) do + minetest.register_node("abriflame:" .. f .. "_fire", { + inventory_image = f .. "_fire_inv.png", + wield_image = f .. "_fire_inv.png", + description = f .. " fire", + drawtype = "plantlike", + paramtype = "light", + groups = {dig_immediate = 3, not_in_creative_inventory = 1}, + sunlight_propagates = true, + buildable_to = true, + walkable = false, + light_source = 14, + waving = 1, + drop = "", + tiles = {{ + name = f .. "_fire_animated.png", + animation = { + type = "vertical_frames", + aspect_w = 16, + aspect_h = 16, + length = 1.5 + }, + }}, + + on_rightclick = function (pos, node, clicker) + smoke(pos, node, clicker, true) + end, + + on_destruct = function (pos) + smoke(pos, nil, nil, false) + minetest.sound_play("fire_extinguish_flame", { + pos = pos, + max_hear_distance = 5, + gain = 0.25 + }) + end, + }) +end + + +-- fire starter tool +minetest.register_tool("abriflame:flint", { + description = "Fire Starter", + inventory_image = "abriflame_fire_starter.png", + stack_max = 1, + liquids_pointable = false, + + on_use = function(itemstack, user, pointed_thing) + if pointed_thing.type ~= "node" then + return itemstack + end + + local pos = ({x = pointed_thing.under.x, + y = pointed_thing.under.y + 1, + z = pointed_thing.under.z}) + + if minetest.get_node(pos).name ~= "air" or + minetest.is_protected(pos, user:get_player_name()) or + minetest.is_protected(pointed_thing.above, user:get_player_name()) then + return itemstack + end + + local nod = minetest.get_node(pointed_thing.under).name + + if nod == "abriglass:stained_glass_green" then + minetest.set_node(pos, {name = "abriflame:green_fire"}) + elseif nod == "abriglass:stained_glass_yellow" then + minetest.set_node(pos, {name = "abriflame:yellow_fire"}) + elseif nod == "abriglass:stained_glass_black" then + minetest.set_node(pos, {name = "abriflame:black_fire"}) + elseif nod == "abriglass:stained_glass_orange" then + minetest.set_node(pos, {name = "abriflame:orange_fire"}) + elseif nod == "abriglass:stained_glass_cyan" then + minetest.set_node(pos, {name = "abriflame:cyan_fire"}) + elseif nod == "abriglass:stained_glass_magenta" then + minetest.set_node(pos, {name = "abriflame:magenta_fire"}) + elseif nod == "abriglass:stained_glass_purple" then + minetest.set_node(pos, {name = "abriflame:purple_fire"}) + elseif nod == "abriglass:stained_glass_blue" then + minetest.set_node(pos, {name = "abriflame:blue_fire"}) + elseif nod == "abriglass:stained_glass_red" then + minetest.set_node(pos, {name = "abriflame:red_fire"}) + elseif nod == "abriglass:stained_glass_frosted" then + minetest.set_node(pos, {name = "abriflame:frosted_fire"}) + end + + itemstack:add_wear(65535 / 65) + return itemstack + end, +}) + + +-- fire starter tool recipe +minetest.register_craft({ + output = "abriflame:flint", + recipe = { + {"default:mese_crystal_fragment", "default:steel_ingot"} + } +}) diff --git a/Bucket_Game-branches/abriflame_fire_starter_graphic-vs-211114a/mods/coderbuild/abriflame/license.txt b/Bucket_Game-branches/abriflame_fire_starter_graphic-vs-211114a/mods/coderbuild/abriflame/license.txt new file mode 100644 index 0000000..936abd7 --- /dev/null +++ b/Bucket_Game-branches/abriflame_fire_starter_graphic-vs-211114a/mods/coderbuild/abriflame/license.txt @@ -0,0 +1,36 @@ + +Textures: +Original textures from Semmett9's fake_fire, now found in the homedecor modpack (https://github.com/minetest-mods/homedecor_modpack), +with adjustments and recolouring by Shara RedCat. +New fire starter graphic (abriflame_fire_starter.png) 2021 Poikilos +License: CC-BY-SA 3.0 or higher (https://creativecommons.org/licenses/by/3.0/). + +Code: +License: MIT (https://opensource.org/licenses/MIT) +By Shara RedCat, tenplus1, and Poikilos + + + +--- + +The MIT License (MIT) + +Copyright (c) 2017 Shara RedCat, 2021 Poikilos + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/Bucket_Game-branches/abriflame_fire_starter_graphic-vs-211114a/mods/coderbuild/abriflame/textures/abriflame_fire_starter.png b/Bucket_Game-branches/abriflame_fire_starter_graphic-vs-211114a/mods/coderbuild/abriflame/textures/abriflame_fire_starter.png new file mode 100644 index 0000000..21b1e59 Binary files /dev/null and b/Bucket_Game-branches/abriflame_fire_starter_graphic-vs-211114a/mods/coderbuild/abriflame/textures/abriflame_fire_starter.png differ