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,86 @@
|
||||
--[[
|
||||
|
||||
TechAge
|
||||
=======
|
||||
|
||||
Copyright (C) 2019-2023 Joachim Stolberg
|
||||
|
||||
AGPL v3
|
||||
See LICENSE.txt for more information
|
||||
|
||||
Wind turbine helper function
|
||||
|
||||
]]--
|
||||
|
||||
local S = techage.S
|
||||
local P = minetest.string_to_pos
|
||||
local M = minetest.get_meta
|
||||
|
||||
local OCEAN = "ocean"
|
||||
|
||||
if minetest.global_exists("asuna") then
|
||||
OCEAN = "below"
|
||||
end
|
||||
|
||||
local function chat_message(player_name, msg)
|
||||
if player_name then
|
||||
minetest.chat_send_player(player_name, S("[TA4 Wind Turbine]").." "..msg)
|
||||
end
|
||||
return false, msg
|
||||
end
|
||||
|
||||
-- num_turbines is the mx number of valid wind turbines. In the case of a tool
|
||||
-- it should be 0, in case of the rotor: 1
|
||||
function techage.valid_place_for_windturbine(pos, player_name, num_turbines)
|
||||
local pos1, pos2, num
|
||||
|
||||
-- Check if occean (only for tool)
|
||||
if num_turbines == 0 and pos.y ~= 1 then
|
||||
return chat_message(player_name, S("This is not the surface of the ocean!"))
|
||||
end
|
||||
local node = minetest.get_node(pos)
|
||||
if num_turbines == 0 and node.name ~= "default:water_source" then
|
||||
return chat_message(player_name, S("This is no ocean water!"))
|
||||
end
|
||||
local data = minetest.get_biome_data({x=pos.x, y=-2, z=pos.z})
|
||||
if data then
|
||||
local name = minetest.get_biome_name(data.biome)
|
||||
if not string.find(name, OCEAN) then
|
||||
return chat_message(player_name, S("This is a").." "..name.." "..S("biome and no ocean!"))
|
||||
end
|
||||
end
|
||||
-- check the space over ocean
|
||||
pos1 = {x=pos.x-20, y=2, z=pos.z-20}
|
||||
pos2 = {x=pos.x+20, y=22, z=pos.z+20}
|
||||
num = #minetest.find_nodes_in_area(pos1, pos2, {"air", "ignore"})
|
||||
if num < (41 * 41 * 21 * 0.9) then
|
||||
techage.mark_region(player_name, pos1, pos2, "")
|
||||
return chat_message(player_name,
|
||||
S("Here is not enough wind\n(A free air space of 41x41x21 m is necessary)!"))
|
||||
end
|
||||
-- Check for water surface (occean)
|
||||
pos1 = {x=pos.x-20, y=1, z=pos.z-20}
|
||||
pos2 = {x=pos.x+20, y=1, z=pos.z+20}
|
||||
num = #minetest.find_nodes_in_area(pos1, pos2,
|
||||
{"default:water_source", "default:water_flowing", "ignore"})
|
||||
|
||||
if num < (41*41 * 0.8) then
|
||||
techage.mark_region(player_name, pos1, pos2, "")
|
||||
return chat_message(player_name, S("Here is not enough water (41x41 m)!"))
|
||||
end
|
||||
-- Check for next wind turbine
|
||||
pos1 = {x=pos.x-13, y=2, z=pos.z-13}
|
||||
pos2 = {x=pos.x+13, y=22, z=pos.z+13}
|
||||
|
||||
num = #minetest.find_nodes_in_area(pos1, pos2, {"techage:ta4_wind_turbine"})
|
||||
if num > num_turbines then
|
||||
techage.mark_region(player_name, pos1, pos2, "")
|
||||
return chat_message(player_name, S("The next wind turbines is too close!"))
|
||||
end
|
||||
|
||||
if num_turbines == 0 then
|
||||
chat_message(player_name, minetest.pos_to_string(pos).." "..
|
||||
S("is a suitable place for a wind turbine!"))
|
||||
end
|
||||
return true, "ok"
|
||||
end
|
||||
Reference in new issue
Block a user