Initial commit
commit
1eabf5d916
|
@ -0,0 +1,59 @@
|
||||||
|
License of source code
|
||||||
|
----------------------
|
||||||
|
|
||||||
|
The MIT License (MIT)
|
||||||
|
Copyright (C) 2019 Extex
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
||||||
|
For more details:
|
||||||
|
https://opensource.org/licenses/MIT
|
||||||
|
|
||||||
|
|
||||||
|
Licenses of media (texture)
|
||||||
|
--------------------------------------
|
||||||
|
|
||||||
|
Attribution-ShareAlike 3.0 Unported (CC BY-SA 3.0)
|
||||||
|
Copyright (C) 2019 Extex
|
||||||
|
|
||||||
|
You are free to:
|
||||||
|
Share — copy and redistribute the material in any medium or format.
|
||||||
|
Adapt — remix, transform, and build upon the material for any purpose, even commercially.
|
||||||
|
The licensor cannot revoke these freedoms as long as you follow the license terms.
|
||||||
|
|
||||||
|
Under the following terms:
|
||||||
|
|
||||||
|
Attribution — You must give appropriate credit, provide a link to the license, and
|
||||||
|
indicate if changes were made. You may do so in any reasonable manner, but not in any way
|
||||||
|
that suggests the licensor endorses you or your use.
|
||||||
|
|
||||||
|
ShareAlike — If you remix, transform, or build upon the material, you must distribute
|
||||||
|
your contributions under the same license as the original.
|
||||||
|
|
||||||
|
No additional restrictions — You may not apply legal terms or technological measures that
|
||||||
|
legally restrict others from doing anything the license permits.
|
||||||
|
|
||||||
|
Notices:
|
||||||
|
|
||||||
|
You do not have to comply with the license for elements of the material in the public
|
||||||
|
domain or where your use is permitted by an applicable exception or limitation.
|
||||||
|
No warranties are given. The license may not give you all of the permissions necessary
|
||||||
|
for your intended use. For example, other rights such as publicity, privacy, or moral
|
||||||
|
rights may limit how you use the material.
|
||||||
|
|
||||||
|
For more details:
|
||||||
|
http://creativecommons.org/licenses/by-sa/3.0/
|
|
@ -0,0 +1,14 @@
|
||||||
|
# Light Tool
|
||||||
|
This is a mod that adds a Torch/Flashlight to ![Minetest](https://www.minetest.net/) (![Github Repo](https://github.com/Minetest/minetest))
|
||||||
|
|
||||||
|
# Animated gif
|
||||||
|
Here's how it works
|
||||||
|
|
||||||
|
|
||||||
|
![GIF](https://github.com/Extex101/light_tool/blob/master/in%20use%20(animated).gif)
|
||||||
|
|
||||||
|
The beam is obstructed by blocks and go through glass and other nodes (with sunlight_propagates = true)
|
||||||
|
|
||||||
|
Minetest forumn topic ![here]()
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,41 @@
|
||||||
|
-- You can use light_tool.add_tool(<ItemStack>, range) to define your own torches
|
||||||
|
-- and you can use light_tool.light_beam(pos, dir, range) to define your own light beam
|
||||||
|
|
||||||
|
light_tool = {}
|
||||||
|
light_tool.tools = {}
|
||||||
|
light_tool.range = {}
|
||||||
|
light_tool.light_beam = function(pos, dir, range)
|
||||||
|
for i = 0, range do
|
||||||
|
local new_pos = {
|
||||||
|
x = pos.x + (dir.x * i),
|
||||||
|
y = pos.y + (dir.y * i),
|
||||||
|
z = pos.z + (dir.z * i),
|
||||||
|
}
|
||||||
|
local node = minetest.get_node(new_pos)
|
||||||
|
if minetest.get_node(new_pos).name == "air" or minetest.get_node(new_pos).name == "light_tool:light" then
|
||||||
|
minetest.set_node(new_pos, {name = "light_tool:light"})
|
||||||
|
elseif minetest.registered_nodes[node.name].sunlight_propagates == false then
|
||||||
|
break
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
light_tool.add_tool = function(toolname, range)
|
||||||
|
table.insert(light_tool.tools, toolname)
|
||||||
|
table.insert(light_tool.range, range)
|
||||||
|
end
|
||||||
|
|
||||||
|
light_tool.check = function(table, value)
|
||||||
|
for i,v in ipairs(table) do
|
||||||
|
if v == value then
|
||||||
|
return true
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
light_tool.check_index = function(table, value)
|
||||||
|
for i,v in ipairs(table) do
|
||||||
|
if v == value then
|
||||||
|
return i
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
|
@ -0,0 +1 @@
|
||||||
|
Extex
|
|
@ -0,0 +1 @@
|
||||||
|
default?
|
|
@ -0,0 +1,3 @@
|
||||||
|
When holding a Light Tool it adds an aimed beam of light that is obstructed by blocks and shine through glass
|
||||||
|
Great for night travel and mining situations
|
||||||
|
Light Tool also adds an api to make your own light tools and create beams of light for own mods
|
Binary file not shown.
After Width: | Height: | Size: 8.2 MiB |
|
@ -0,0 +1,60 @@
|
||||||
|
local path = minetest.get_modpath("light_tool")
|
||||||
|
|
||||||
|
dofile(path.."/api.lua")
|
||||||
|
|
||||||
|
minetest.register_tool("light_tool:light_tool", {
|
||||||
|
description = "Light Tool",
|
||||||
|
inventory_image = "light_tool_light_tool.png",
|
||||||
|
})
|
||||||
|
light_tool.add_tool("light_tool:light_tool", 20)
|
||||||
|
|
||||||
|
minetest.register_node("light_tool:light", {
|
||||||
|
drawtype = "glasslike",
|
||||||
|
tiles = {"blank.png"},
|
||||||
|
paramtype = "light",
|
||||||
|
walkable = false,
|
||||||
|
is_ground_content = true,
|
||||||
|
light_propagates = true,
|
||||||
|
sunlight_propagates = true,
|
||||||
|
light_source = 8,
|
||||||
|
pointable = false,
|
||||||
|
buildable_to = true,
|
||||||
|
on_construct = function(pos)
|
||||||
|
minetest.after(0.1, function()
|
||||||
|
minetest.set_node(pos, {name = "air"})
|
||||||
|
end)
|
||||||
|
end,
|
||||||
|
})
|
||||||
|
|
||||||
|
minetest.register_lbm({
|
||||||
|
name = "light_tool:remove_light",
|
||||||
|
nodenames = {"light_tool:light"},
|
||||||
|
run_at_every_load = true,
|
||||||
|
action = function(pos, node)
|
||||||
|
minetest.set_node(pos, {name = "air"})
|
||||||
|
end,
|
||||||
|
})
|
||||||
|
|
||||||
|
if minetest.get_modpath("default") then
|
||||||
|
minetest.register_craft({
|
||||||
|
output = "light_tool:light_tool",
|
||||||
|
recipe = {
|
||||||
|
{"","default:mese_crystal_fragment","default:mese_crystal"},
|
||||||
|
{"default:mese_crystal_fragment","default:steel_ingot","default:mese_crystal_fragment"},
|
||||||
|
{"default:steel_ingot", "default:mese_crystal_fragment",""},
|
||||||
|
},
|
||||||
|
})
|
||||||
|
end
|
||||||
|
|
||||||
|
minetest.register_globalstep(function()
|
||||||
|
for _, user in ipairs(minetest.get_connected_players()) do
|
||||||
|
local stack = ItemStack(user:get_wielded_item())
|
||||||
|
local wielded = stack:get_definition()
|
||||||
|
if light_tool.check(light_tool.tools, wielded.name) then
|
||||||
|
local index = light_tool.check_index(light_tool.tools, wielded.name)
|
||||||
|
local dir = user:get_look_dir()
|
||||||
|
local pos = user:get_pos()
|
||||||
|
light_tool.light_beam({x = pos.x, y = pos.y+1, z = pos.z}, dir, light_tool.range[index])
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end)
|
Binary file not shown.
After Width: | Height: | Size: 24 KiB |
Binary file not shown.
After Width: | Height: | Size: 241 B |
Loading…
Reference in New Issue