static vertical size setting
This commit is contained in:
parent
82c7c9d694
commit
ea08c52b01
@ -9,9 +9,14 @@ local modpath = minetest.get_modpath(minetest.get_current_modname())
|
||||
towny = {
|
||||
modpath = modpath,
|
||||
regions = {
|
||||
size = tonumber(minetest.settings:get('towny_claim_size')) or 16,
|
||||
height = tonumber(minetest.settings:get('towny_claim_height')) or 64,
|
||||
distance = tonumber(minetest.settings:get('towny_distance')) or 80,
|
||||
size = tonumber(minetest.settings:get('towny_claim_size')) or 16,
|
||||
height = tonumber(minetest.settings:get('towny_claim_height')) or 64,
|
||||
distance = tonumber(minetest.settings:get('towny_distance')) or 80,
|
||||
vertical = {
|
||||
static = minetest.settings:get_bool('towny_static_height', false),
|
||||
miny = tonumber(minetest.settings:get('towny_static_miny')) or -32000,
|
||||
maxy = tonumber(minetest.settings:get('towny_static_maxy')) or 32000,
|
||||
},
|
||||
|
||||
-- Regions loaded into memory cache, see "Town regions data structure"
|
||||
memloaded = {},
|
||||
|
@ -102,6 +102,12 @@ function towny.regions.ensure_range(p)
|
||||
p1 = p[1]
|
||||
p2 = p[2]
|
||||
end
|
||||
|
||||
if towny.regions.vertical.static then
|
||||
p1.y = towny.regions.vertical.maxy
|
||||
p2.y = towny.regions.vertical.miny
|
||||
end
|
||||
|
||||
return p1,p2
|
||||
end
|
||||
|
||||
@ -140,6 +146,11 @@ function towny.regions.get_closest_town(pos,name)
|
||||
for _,tc in pairs(regions.blocks) do
|
||||
local p1,p2 = towny.regions.ensure_range(tc)
|
||||
local center = vector.subtract(p1, {x=tr/2,y=th/2,z=tr/2})
|
||||
|
||||
if towny.regions.vertical.static then
|
||||
center.y = pos.y - th/2
|
||||
end
|
||||
|
||||
local dist = vector.distance(pos, center)
|
||||
if dist < last_distance or last_distance == 0 then
|
||||
last_distance = dist
|
||||
@ -177,7 +188,7 @@ function towny.regions.align_new_claim_block(pos,name)
|
||||
new_pos = vector.add(p1, {x=-tr,y=0,z=0})
|
||||
end
|
||||
-- Y
|
||||
elseif (pos.x <= p1.x and pos.x >= p2.x) and (pos.z <= p1.z and pos.z >= p2.z) then
|
||||
elseif (pos.x <= p1.x and pos.x >= p2.x) and (pos.z <= p1.z and pos.z >= p2.z) and not towny.regions.vertical.static then
|
||||
if pos.y > p1.y then
|
||||
new_pos = vector.add(p1, {x=0,y=th,z=0})
|
||||
elseif pos.y < p2.y then
|
||||
@ -192,6 +203,10 @@ function towny.regions.align_new_claim_block(pos,name)
|
||||
end
|
||||
end
|
||||
|
||||
if towny.regions.vertical.static and new_pos then
|
||||
new_pos.y = towny.regions.vertical.maxy
|
||||
end
|
||||
|
||||
if new_pos == nil then return nil end -- Impossible position
|
||||
return new_pos,closest_town
|
||||
end
|
||||
@ -228,7 +243,7 @@ function towny.regions.visualize_town(town)
|
||||
if not towny.regions.memloaded[town] then return end
|
||||
for _,pos in pairs(towny.regions.memloaded[town].blocks) do
|
||||
local p1,p2 = towny.regions.ensure_range(pos)
|
||||
towny.regions.visualize_area(p1,p2)
|
||||
towny.regions.visualize_area(p1,p2,towny.towns[town].flags['origin'])
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -13,13 +13,17 @@ towny_storage_engine (Storage engine) enum modstorage modstorage,flatfile
|
||||
towny_claim_size (Claim size) int 16
|
||||
|
||||
# Towny claim height
|
||||
towny_claim_size (Claim height) int 64
|
||||
towny_claim_height (Claim height) int 64
|
||||
|
||||
# Use static height claim blocks
|
||||
towny_static_height (Use static height claims) bool false
|
||||
towny_static_miny (Static claim: minimum Y) int -32000
|
||||
towny_static_maxy (Static claim: maximum Y) int 32000
|
||||
|
||||
# Minimum distance between towns (in claim blocks)
|
||||
towny_distance (Max town claims) int 80
|
||||
|
||||
# Prevent protectors from being placed in a town
|
||||
# Towns provide their own protection
|
||||
# Prevent protectors from being placed in a town, as towns provide their own protection
|
||||
# Recommended to be kept as true, may cause issues with claims otherwise
|
||||
towny_prevent_protector (Prevent protectors from being placed in a town) bool true
|
||||
|
||||
@ -38,4 +42,4 @@ towny_tax (Allow taxation) bool true
|
||||
# Units depend on economy mod used in server
|
||||
towny_create_cost (Town creation cost) int 10000
|
||||
towny_claim_cost (Town claim block cost) int 1000
|
||||
towny_upkeep_cost (Town daily upkeep cost, multiplied by member count) int 10
|
||||
towny_upkeep_cost (Town daily upkeep cost, multiplied by member count) int 0
|
||||
|
@ -95,7 +95,7 @@ function towny.create_town(pos, player, name)
|
||||
end
|
||||
|
||||
local _,__,distance = towny.regions.get_closest_town(pos)
|
||||
if distance > towny.regions.distance * towny.regions.size and not towny_admin then
|
||||
if distance < towny.regions.distance * towny.regions.size and not towny_admin then
|
||||
return err_msg(player, "This location is too close to another town!")
|
||||
end
|
||||
|
||||
@ -109,6 +109,11 @@ function towny.create_town(pos, player, name)
|
||||
local p1 = vector.add(pos, {x=tr / 2,y=th - 1,z=tr / 2})
|
||||
local p2 = vector.subtract(pos, {x=tr / 2,y=1,z=tr / 2})
|
||||
|
||||
if towny.regions.vertical.static then
|
||||
p1.y = towny.regions.vertical.maxy
|
||||
p2.y = towny.regions.vertical.miny
|
||||
end
|
||||
|
||||
if towny.regions.protection_mod(p1,p2) then
|
||||
return err_msg(player, "This area is protected by another protection mod! Please ensure that this is not the case.")
|
||||
end
|
||||
@ -142,7 +147,7 @@ function towny.create_town(pos, player, name)
|
||||
minetest.chat_send_player(player, "Your town has successfully been founded!")
|
||||
minetest.chat_send_all(("%s has started a new town called '%s'!"):format(player,name))
|
||||
|
||||
towny.regions.visualize_area(p1,p2)
|
||||
towny.regions.visualize_area(p1,p2,pos)
|
||||
|
||||
return true
|
||||
end
|
||||
@ -188,7 +193,7 @@ function towny.extend_town(pos,player)
|
||||
minetest.chat_send_player(player, ("Successfully claimed this block! You have %d claim blocks left!"):format(towny.get_claims_available(town)))
|
||||
towny.mark_dirty(town, true)
|
||||
|
||||
towny.regions.visualize_area(p1,p2)
|
||||
towny.regions.visualize_area(p1,p2,pos)
|
||||
|
||||
return true
|
||||
end
|
||||
@ -419,7 +424,7 @@ function towny.create_plot(pos,player)
|
||||
towny.mark_dirty(t, true)
|
||||
|
||||
minetest.chat_send_player(player, "Successfully created a plot!")
|
||||
towny.regions.visualize_area(c[1], c[2])
|
||||
towny.regions.visualize_area(c[1], c[2], pos)
|
||||
return true
|
||||
end
|
||||
|
||||
@ -456,7 +461,7 @@ function towny.claim_plot(pos,player)
|
||||
towny.mark_dirty(t, false)
|
||||
|
||||
minetest.chat_send_player(player, "Successfully claimed the plot!")
|
||||
towny.regions.visualize_area(c[1], c[2])
|
||||
towny.regions.visualize_area(c[1], c[2], pos)
|
||||
|
||||
return true
|
||||
else
|
||||
|
@ -34,7 +34,12 @@ local function fl(x)
|
||||
return math.floor(x)
|
||||
end
|
||||
|
||||
function towny.regions.visualize_area(p1,p2)
|
||||
function towny.regions.visualize_area(p1,p2,pos)
|
||||
local center = {x=fl(p2.x + r1/2)+0.5,y=fl(p2.y + r2/2)+0.5,z=fl(p2.z + r1/2)+0.5}
|
||||
|
||||
if towny.regions.vertical.static then
|
||||
center.y = pos.y
|
||||
end
|
||||
|
||||
local e = minetest.add_entity(center, "towny:region_visual")
|
||||
end
|
||||
|
Loading…
Reference in New Issue
Block a user