initial commit
initial commit
This commit is contained in:
commit
2b26cd1f86
223
textures/init.lua
Normal file
223
textures/init.lua
Normal file
@ -0,0 +1,223 @@
|
||||
|
||||
--[[
|
||||
Moon Flower mod by MirceaKitsune
|
||||
https://github.com/MirceaKitsune/minetest_mods_moonflower
|
||||
|
||||
Additional features by TenPlus1
|
||||
]]--
|
||||
|
||||
-- global
|
||||
|
||||
moonflower = {
|
||||
interval = tonumber(minetest.settings:get("moonflower_interval") or 60 * 5),
|
||||
transform = minetest.settings:get_bool("moonflower_transform") ~= false
|
||||
}
|
||||
|
||||
-- translation and text colour
|
||||
|
||||
local S = minetest.get_translator("moonflower")
|
||||
local text_col = minetest.get_color_escape_sequence("#68d2ff")
|
||||
|
||||
-- closed moonflower
|
||||
|
||||
minetest.register_node("moonflower:moonflower_closed", {
|
||||
description = S("Moon flower"),
|
||||
drawtype = "plantlike",
|
||||
tiles = { "moonflower_closed.png" },
|
||||
inventory_image = "moonflower_closed.png",
|
||||
wield_image = "moonflower_closed.png",
|
||||
sunlight_propagates = true,
|
||||
paramtype = "light",
|
||||
walkable = false,
|
||||
light_source = 4,
|
||||
groups = {snappy = 3, dig_immediate = 1, flammable = 2, eatable = 2},
|
||||
sounds = default.node_sound_leaves_defaults(),
|
||||
selection_box = {
|
||||
type = "fixed", fixed = {-0.15, -0.5, -0.15, 0.15, 0.1, 0.15},
|
||||
},
|
||||
visual_scale = 0.6,
|
||||
|
||||
on_use = function(itemstack, player, pointed_thing)
|
||||
|
||||
player:override_day_night_ratio(1) -- see in darkness only on surface
|
||||
|
||||
minetest.chat_send_player(player:get_player_name(),
|
||||
text_col .. S(">>> You can suddenly see much clearer in the moonlight!"))
|
||||
|
||||
minetest.sound_play("default_place_node", {
|
||||
pitch = 1.4, pos = pos, gain = 1.0, max_hear_distance = 5}, true)
|
||||
|
||||
minetest.after(moonflower.interval, function(player)
|
||||
|
||||
if player and player:get_pos() then
|
||||
|
||||
player:override_day_night_ratio(nil) -- return to normal day/night vision
|
||||
|
||||
minetest.chat_send_player(player:get_player_name(),
|
||||
text_col .. S(">>> Your vision returns to normal!"))
|
||||
|
||||
minetest.sound_play("default_place_node", {
|
||||
pitch = 1.2, pos = pos, gain = 1.0, max_hear_distance = 5}, true)
|
||||
end
|
||||
end, player)
|
||||
|
||||
return minetest.do_item_eat(2, nil, itemstack, player, pointed_thing)
|
||||
end
|
||||
})
|
||||
|
||||
-- open moonflower
|
||||
|
||||
minetest.register_node("moonflower:moonflower_open", {
|
||||
description = S("Moon flower"),
|
||||
drawtype = "plantlike",
|
||||
tiles = { "moonflower_open.png" },
|
||||
inventory_image = "moonflower_open.png",
|
||||
wield_image = "moonflower_open.png",
|
||||
paramtype = "light",
|
||||
sunlight_propagates = true,
|
||||
paramtype = "light",
|
||||
walkable = false,
|
||||
light_source = 10,
|
||||
groups = {not_in_creative_inventory = 1, snappy = 3, dig_immediate = 1, flammable = 2},
|
||||
drop = "moonflower:moonflower_closed",
|
||||
sounds = default.node_sound_leaves_defaults(),
|
||||
selection_box = {
|
||||
type = "fixed", fixed = {-0.15, -0.5, -0.15, 0.15, 0.1, 0.15},
|
||||
},
|
||||
visual_scale = 0.6
|
||||
})
|
||||
|
||||
-- transform item list
|
||||
|
||||
local item_list = {
|
||||
{"default:gold_lump", "default:gold_ingot"},
|
||||
{"default:copper_lump", "default:copper_ingot"},
|
||||
{"default:iron_lump", "pigiron:iron_ingot"},
|
||||
{"pigiron:iron_charcoal_mix", "default:steel_ingot"},
|
||||
{"moreores:silver_lump", "moreores:silver_ingot"},
|
||||
{"moreores:mithril_lump", "moreores:mithril_ingot"},
|
||||
{"nether:nether_lump", "nether:nether_ingot"},
|
||||
{"default:tin_lump", "default:tin_ingot"},
|
||||
{"lapis:pyrite_lump", "lapis:pyrite_ingot"},
|
||||
{"bucket:bucket_water", "bucket:bucket_river_water"},
|
||||
{"farming:sugar", "xanadu:cinnamon_powder"},
|
||||
{"ethereal:charcoal_lump", "default:coal_lump"},
|
||||
{"default:clay_lump", "default:clay_brick"},
|
||||
{"ethereal:fire_dust 2", "ethereal:etherium_dust"}
|
||||
}
|
||||
|
||||
-- global functions to add to or clear list
|
||||
|
||||
function moonflower.transform_item(from_item, to_item)
|
||||
table.insert(item_list, {from_item, to_item})
|
||||
end
|
||||
|
||||
function moonflower.clear_items()
|
||||
item_list = {}
|
||||
end
|
||||
|
||||
-- particle effect helper
|
||||
|
||||
local function particle_effect(pos)
|
||||
|
||||
minetest.add_particlespawner({
|
||||
amount = 10,
|
||||
time = 0.15,
|
||||
minpos = {x = pos.x - 0.2, y = pos.y - 0, z = pos.z - 0.2},
|
||||
maxpos = {x = pos.x + 0.2, y = pos.y + 0.2, z = pos.z + 0.2},
|
||||
minvel = {x = -0.5, y = 0.5, z = -0.5},
|
||||
maxvel = {x = 0.5, y = 1.5, z = 0.5},
|
||||
minacc = {x = 0, y = 0.1, z = 0},
|
||||
maxacc = {x = 0, y = 0.2, z = 0},
|
||||
minexptime = 0.5,
|
||||
maxexptime = 1.3,
|
||||
minsize = .2,
|
||||
maxsize = .8,
|
||||
texture = "tnt_smoke.png",
|
||||
glow = 7
|
||||
})
|
||||
end
|
||||
|
||||
-- Abm to open/close moonflower and do transformations
|
||||
|
||||
minetest.register_abm({
|
||||
nodenames = {"moonflower:moonflower_closed", "moonflower:moonflower_open"},
|
||||
interval = 11,
|
||||
chance = 1,
|
||||
|
||||
action = function(pos, node)
|
||||
|
||||
local tod = minetest.get_timeofday()
|
||||
|
||||
-- choose the appropriate form of the moon flower
|
||||
if node.name == "moonflower:moonflower_open"
|
||||
and (tod > 0.2 and tod < 0.8) then
|
||||
|
||||
minetest.swap_node(pos, {name = "moonflower:moonflower_closed"})
|
||||
|
||||
elseif node.name == "xanadu:moonflower_closed"
|
||||
and (tod > 0.8 or tod < 0.2)
|
||||
and minetest.get_node_light(pos, 0.5) == 15 then
|
||||
|
||||
minetest.swap_node(pos, {name = "moonflower:moonflower_open"})
|
||||
end
|
||||
|
||||
-- transform ingots back into ores
|
||||
if moonflower.transform and node.name == "moonflower:moonflower_open" then
|
||||
|
||||
for _, ob in pairs(minetest.get_objects_inside_radius(pos, 0.5)) do
|
||||
|
||||
local ent = ob:get_luaentity()
|
||||
|
||||
if ent and ent.name == "__builtin:item" then
|
||||
|
||||
for n = 1, #item_list do
|
||||
|
||||
if ent.itemstring == item_list[n][1] then
|
||||
|
||||
local pos2 = ob:get_pos()
|
||||
|
||||
local obj2 = minetest.add_item(pos2, item_list[n][2])
|
||||
|
||||
if obj2 then
|
||||
|
||||
particle_effect(pos2)
|
||||
|
||||
obj2:set_velocity({
|
||||
x = math.random() - 0.5,
|
||||
y = 4,
|
||||
z = math.random() - 0.5
|
||||
})
|
||||
end
|
||||
|
||||
minetest.sound_play("default_place_node", {
|
||||
pitch = 1.6, pos = pos2,
|
||||
gain = 0.5, max_hear_distance = 5}, true)
|
||||
|
||||
ob:remove() ; return -- only do 1 item every turn
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
})
|
||||
|
||||
-- craft into blue dye
|
||||
|
||||
minetest.register_craft( {
|
||||
output = "dye:blue 4",
|
||||
recipe = {{"moonflower:moonflower_closed"}}
|
||||
})
|
||||
|
||||
-- add to mapgen
|
||||
|
||||
minetest.register_decoration({
|
||||
name = "moonflower:moonflower_closed",
|
||||
deco_type = "simple",
|
||||
place_on = {"group:soil", "default:dirt_with_snow"},
|
||||
sidelen = 80, fill_ratio = 0.0005,
|
||||
y_min = 1, y_max = 200,
|
||||
decoration = "moonflower:moonflower_closed",
|
||||
spawn_by = {"group:tree", "ethereal:bamboo"}, num_spawn_by = 1
|
||||
})
|
26
textures/license.txt
Normal file
26
textures/license.txt
Normal file
@ -0,0 +1,26 @@
|
||||
The MIT License (MIT)
|
||||
|
||||
Copyright (c) 2018 TenPlus1
|
||||
|
||||
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.
|
||||
|
||||
|
||||
Textures by MirceaKitsune (CC0)
|
||||
moonflower_closed.png
|
||||
moonflower_open.png
|
5
textures/mod.conf
Normal file
5
textures/mod.conf
Normal file
@ -0,0 +1,5 @@
|
||||
name = moonflower
|
||||
description = Moon Flower, when touched by the moon, it opens up a casting light.
|
||||
depends = default
|
||||
optional_depends = tnt, lucky_block
|
||||
min_minetest_version = 5.0
|
5
textures/settingtypes.txt
Normal file
5
textures/settingtypes.txt
Normal file
@ -0,0 +1,5 @@
|
||||
# interval in seconds moon vision lasts
|
||||
moonflower_interval (Moon-vision interval) int 300
|
||||
|
||||
# should open moonflowers transform dropped items
|
||||
moonflower_transform (Transform dropped items) bool true
|
Loading…
x
Reference in New Issue
Block a user