mods that hopefully work for a TechAge-based pack
This commit is contained in:
1 parent
4e6b08d194
commit
c27db2a537
6234 files changed
+375578
No files matched your search
@@ -0,0 +1,128 @@
|
||||
--[[
|
||||
|
||||
TechAge
|
||||
=======
|
||||
|
||||
Copyright (C) 2019 Joachim Stolberg
|
||||
|
||||
AGPL v3
|
||||
See LICENSE.txt for more information
|
||||
|
||||
mark.lua:
|
||||
|
||||
]]--
|
||||
|
||||
local marker_region = {}
|
||||
|
||||
function techage.unmark_position(name)
|
||||
if marker_region[name] ~= nil then --marker already exists
|
||||
--wip: make the area stay loaded somehow
|
||||
for _, entity in ipairs(marker_region[name]) do
|
||||
entity:remove()
|
||||
end
|
||||
marker_region[name] = nil
|
||||
end
|
||||
end
|
||||
|
||||
function techage.mark_position(name, pos, nametag, color, time)
|
||||
local marker = minetest.add_entity(pos, "techage:position_cube")
|
||||
if marker ~= nil then
|
||||
marker:set_nametag_attributes({color = color, text = nametag})
|
||||
marker:get_luaentity().player_name = name
|
||||
if not marker_region[name] then
|
||||
marker_region[name] = {}
|
||||
end
|
||||
marker_region[name][#marker_region[name] + 1] = marker
|
||||
end
|
||||
minetest.after(time or 30, techage.unmark_position, name)
|
||||
end
|
||||
|
||||
function techage.mark_cube(name, pos1, pos2, nametag, color, time)
|
||||
local new_x = pos1.x + ((pos2.x - pos1.x) / 2)
|
||||
local new_y = pos1.y + ((pos2.y - pos1.y) / 2)
|
||||
local new_z = pos1.z + ((pos2.z - pos1.z) / 2)
|
||||
local size_x = math.abs(pos1.x - pos2.x) + 1
|
||||
local size_y = math.abs(pos1.y - pos2.y) + 1
|
||||
local size_z = math.abs(pos1.z - pos2.z) + 1
|
||||
|
||||
local marker = minetest.add_entity(
|
||||
{x = new_x, y = new_y, z = new_z}, "techage:position_cube")
|
||||
if marker ~= nil then
|
||||
marker:set_nametag_attributes({color = color, text = nametag, visual_size = {x = size_x, y = size_y, z = size_z}})
|
||||
marker:get_luaentity().player_name = name
|
||||
marker:set_properties({visual_size = {x = size_x, y = size_y, z = size_z}})
|
||||
if not marker_region[name] then
|
||||
marker_region[name] = {}
|
||||
end
|
||||
marker_region[name][#marker_region[name] + 1] = marker
|
||||
end
|
||||
minetest.after(time or 30, techage.unmark_position, name)
|
||||
end
|
||||
|
||||
minetest.register_entity(":techage:position_cube", {
|
||||
initial_properties = {
|
||||
visual = "cube",
|
||||
textures = {
|
||||
"techage_cube_mark.png",
|
||||
"techage_cube_mark.png",
|
||||
"techage_cube_mark.png",
|
||||
"techage_cube_mark.png",
|
||||
"techage_cube_mark.png",
|
||||
"techage_cube_mark.png",
|
||||
},
|
||||
use_texture_alpha = true,
|
||||
physical = false,
|
||||
visual_size = {x = 1.1, y = 1.1},
|
||||
collisionbox = {-0.55,-0.55,-0.55, 0.55,0.55,0.55},
|
||||
glow = 8,
|
||||
},
|
||||
on_step = function(self, dtime)
|
||||
if marker_region[self.player_name] == nil then
|
||||
self.object:remove()
|
||||
return
|
||||
end
|
||||
end,
|
||||
on_punch = function(self, hitter)
|
||||
techage.unmark_position(self.player_name)
|
||||
end,
|
||||
})
|
||||
|
||||
function techage.mark_side(name, pos, dir, nametag, color, time)
|
||||
local v = vector.multiply(tubelib2.Dir6dToVector[dir or 0], 0.7)
|
||||
local pos2 = vector.add(pos, v)
|
||||
|
||||
local marker = minetest.add_entity(pos2, "techage:position_side")
|
||||
if marker ~= nil then
|
||||
marker:set_nametag_attributes({color = color, text = nametag})
|
||||
marker:get_luaentity().player_name = name
|
||||
if dir == 2 or dir == 4 then
|
||||
marker:setyaw(math.pi / 2)
|
||||
end
|
||||
|
||||
if not marker_region[name] then
|
||||
marker_region[name] = {}
|
||||
end
|
||||
marker_region[name][#marker_region[name] + 1] = marker
|
||||
end
|
||||
minetest.after(time or 30, techage.unmark_position, name)
|
||||
end
|
||||
|
||||
minetest.register_entity(":techage:position_side", {
|
||||
initial_properties = {
|
||||
visual = "upright_sprite",
|
||||
textures = {"techage_side_mark.png"},
|
||||
physical = false,
|
||||
visual_size = {x = 1.1, y = 1.1, z = 1.1},
|
||||
collisionbox = {-0.55,-0.55,-0.55, 0.55,0.55,0.55},
|
||||
glow = 12,
|
||||
},
|
||||
on_step = function(self, dtime)
|
||||
if marker_region[self.player_name] == nil then
|
||||
self.object:remove()
|
||||
return
|
||||
end
|
||||
end,
|
||||
on_punch = function(self, hitter)
|
||||
techage.unmark_position(self.player_name)
|
||||
end,
|
||||
})
|
||||
Reference in new issue
Block a user